

#include "BUILTIN.h"
extern OBJ _ASeqZip_4(OBJ,OBJ,OBJ);extern OBJ __ASeqZip_4;
extern OBJ _ASeqSort_2(OBJ,OBJ);extern OBJ __ASeqSort_2;
extern OBJ _ASeqMap_3(OBJ,OBJ);extern OBJ __ASeqMap_3;
extern OBJ _ASeqReduce_3(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_3;
extern OBJ _AAc_7(OBJ);extern OBJ __AAc_7;
extern OBJ _AAc_20(OBJ);extern OBJ __AAc_20;
extern OBJ _AAc_21(OBJ);extern OBJ __AAc_21;
extern OBJ _AAc_22(OBJ);extern OBJ __AAc_22;
extern OBJ _AAc_50(OBJ);extern OBJ __AAc_50;

#include "Denotation.h"
extern OBJ _APreparedOptions_4(OBJ,OBJ);extern OBJ __APreparedOptions_4;

#include "NatConv.h"
extern OBJ __AOcError_10;
extern OBJ __AOcError_15;
extern OBJ _AOcError_18(OBJ,OBJ,OBJ,OBJ);extern OBJ __AOcError_18;
extern OBJ _AOcError_21(OBJ,OBJ);extern OBJ __AOcError_21;
extern OBJ _ACompose_4(OBJ,OBJ,OBJ);extern OBJ __ACompose_4;
extern OBJ _AComCompose_5(OBJ,OBJ);extern OBJ __AComCompose_5;
extern OBJ _ACom_47(OBJ,OBJ);extern OBJ __ACom_47;
extern OBJ _AComSeqReduce_4(OBJ,OBJ,OBJ);extern OBJ __AComSeqReduce_4;

#include "Nat.h"
extern OBJ _ANatMapReduce_3(OBJ,OBJ,OBJ);extern OBJ __ANatMapReduce_3;
extern OBJ __ASeq_2;
extern OBJ __ASeq_6;
extern OBJ _ASeq_24(OBJ,OBJ,OBJ);extern OBJ __ASeq_24;
extern OBJ _ASeq_26(OBJ,OBJ);extern OBJ __ASeq_26;
extern OBJ _ASeq_41(OBJ,OBJ);extern OBJ __ASeq_41;
extern OBJ _ASeq_52(OBJ,OBJ);extern OBJ __ASeq_52;
extern OBJ __AOption_5;
extern OBJ __AAcIO_3;
extern OBJ __AOcPos_9;
extern OBJ _ATypeAnFun_4(OBJ);extern OBJ __ATypeAnFun_4;
extern OBJ _AString_49(OBJ);extern OBJ __AString_49;
extern OBJ _ASourceAnFun_1(OBJ,OBJ);extern OBJ __ASourceAnFun_1;
extern OBJ _AOcOptions_28(OBJ,OBJ);extern OBJ __AOcOptions_28;
extern OBJ _ABuiltin_21(OBJ);extern OBJ __ABuiltin_21;

#include "Char.h"
extern OBJ _AAcFun_6(OBJ);extern OBJ __AAcFun_6;
extern OBJ _AAcFun_10(OBJ,OBJ);extern OBJ __AAcFun_10;
extern OBJ _AAcFun_11(OBJ,OBJ,OBJ);extern OBJ __AAcFun_11;
extern OBJ _AAcFun_14(OBJ,OBJ);extern OBJ __AAcFun_14;

#include "Real.h"

#include "Array.h"

#include "Int.h"
extern OBJ _AMap_31(OBJ,OBJ,OBJ,OBJ);extern OBJ __AMap_31;
extern OBJ _AMap_33(OBJ,OBJ,OBJ);extern OBJ __AMap_33;
extern OBJ __ANatMap_3;
extern OBJ _ANatMap_4(OBJ,OBJ,OBJ);extern OBJ __ANatMap_4;
extern OBJ _ANatMap_14(OBJ,OBJ);extern OBJ __ANatMap_14;
extern OBJ _ANatMap_15(OBJ,OBJ);extern OBJ __ANatMap_15;
extern OBJ _ANatMap_20(OBJ);extern OBJ __ANatMap_20;
extern OBJ _AIde_14(OBJ,OBJ);extern OBJ __AIde_14;
extern OBJ __AAn_2;
extern OBJ _AAn_3(OBJ,OBJ);extern OBJ __AAn_3;
extern OBJ _AAn_5(OBJ,OBJ);extern OBJ __AAn_5;
extern OBJ _AAn_7(OBJ,OBJ);extern OBJ __AAn_7;
extern OBJ _ATypeAn_6(OBJ);extern OBJ __ATypeAn_6;
extern OBJ __ATypeAn_52;

#include "Bitset.h"
extern OBJ __ASourceAn_28;
extern OBJ _AOcBinStream_4(OBJ,OBJ,OBJ);extern OBJ __AOcBinStream_4;
extern OBJ _AMapConv_4(OBJ,OBJ);extern OBJ __AMapConv_4;
extern OBJ __AIdeMap_3;
extern OBJ _AOptimPrepare_1(OBJ,OBJ);OBJ __AOptimPrepare_1; /* optimPrepare */
extern OBJ _AOptimPrepare_3(OBJ);OBJ __AOptimPrepare_3; /* anyDec? */
extern OBJ _AOptimPrepare_4(OBJ,OBJ);OBJ __AOptimPrepare_4; /* symOrder */
extern OBJ _AOptimPrepare_5(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimPrepare_5; /* annotateDecs */
extern OBJ _AOptimPrepare_6(OBJ,OBJ,OBJ);OBJ __AOptimPrepare_6; /* approxComp */
extern TUP3 _AOptimPrepare_7(OBJ,OBJ);OBJ __AOptimPrepare_7; /* norm */
extern OBJ _AOptimPrepare_8(OBJ,OBJ);OBJ __AOptimPrepare_8; /* mkVar */
extern TUP2 _AOptimPrepare_9(OBJ);OBJ __AOptimPrepare_9; /* normExp */
extern OBJ _AOptimPrepare_10(OBJ);OBJ __AOptimPrepare_10; /* flatType */
extern OBJ _AOptimPrepare_11(OBJ,OBJ,OBJ);OBJ __AOptimPrepare_11; /* importOptimFile */
extern OBJ _AOptimPrepare_12(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimPrepare_12; /* processOptim */
extern TUP3 _AOptimPrepare_13(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimPrepare_13; /* extendUses */
extern TUP3 _AOptimPrepare_14(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimPrepare_14; /* extendUse */
extern OBJ _AOptimPrepare_15(OBJ,OBJ,OBJ);OBJ __AOptimPrepare_15; /* mergeUnit */
extern OBJ _AOptimPrepare_16(OBJ);OBJ __AOptimPrepare_16; /* decsOrNew */
extern OBJ _AOptimPrepare_17(OBJ);OBJ __AOptimPrepare_17; /* propsOrNew */
extern OBJ _AOptimPrepare_18(OBJ,OBJ,OBJ);OBJ __AOptimPrepare_18; /* mergeDec */
extern OBJ _AOptimPrepare_19(OBJ,OBJ,OBJ);OBJ __AOptimPrepare_19; /* mergeProp */
extern OBJ _AOptimPrepare_20(OBJ,OBJ,OBJ);OBJ __AOptimPrepare_20; /* mergeTypeDec */
extern OBJ _AOptimPrepare_21(OBJ);OBJ __AOptimPrepare_21; /* actHidden? */
extern OBJ _AOptimPrepare_22(OBJ,OBJ);OBJ __AOptimPrepare_22; /* remap */
extern OBJ _AOptimPrepare_23(OBJ,OBJ);OBJ __AOptimPrepare_23; /* remap,1 */
extern OBJ _AOptimPrepare_24(OBJ,OBJ);OBJ __AOptimPrepare_24; /* remap,2 */
extern OBJ _AOptimPrepare_25(OBJ,OBJ);OBJ __AOptimPrepare_25; /* remap,3 */
extern OBJ _AOptimPrepare_26(OBJ,OBJ);OBJ __AOptimPrepare_26; /* remap,4 */
extern OBJ _AOptimPrepare_27(OBJ,OBJ);OBJ __AOptimPrepare_27; /* remap,5 */
extern OBJ _AOptimPrepare_28(OBJ,OBJ);OBJ __AOptimPrepare_28; /* remap,6 */
extern OBJ _AOptimPrepare_29(OBJ,OBJ);OBJ __AOptimPrepare_29; /* remap,7 */
extern OBJ _AOptimPrepare_30(OBJ);OBJ __AOptimPrepare_30; /* enrichBuiltin */
extern OBJ _AOptimPrepare_31(OBJ,OBJ,OBJ);OBJ __AOptimPrepare_31; /* approxComp'31 */
extern OBJ _AOptimPrepare_32(OBJ,OBJ,OBJ);OBJ __AOptimPrepare_32; /* approxComp'32 */
extern OBJ _AOptimPrepare_33(OBJ);OBJ __AOptimPrepare_33; /* norm'33 */
OBJ __AOptimPrepare_34; /* annotateDecs'34 */
extern OBJ _AOptimPrepare_35(OBJ,OBJ);OBJ __AOptimPrepare_35; /* extendUse'35 */
OBJ __AOptimPrepare_36; /* extendUse'36 */
extern OBJ _AOptimPrepare_37(OBJ);OBJ __AOptimPrepare_37; /* enrichBuiltin'37 */
extern OBJ _AOptimPrepare_38(OBJ,OBJ);OBJ __AOptimPrepare_38; /* optimPrepare'38 */

extern OBJ _AOptimPrepare_1(OBJ x1,OBJ x2) /* optimPrepare */
{OBJ r;
 CPCLS(__AOptimPrepare_3,1);
 CPCLS(__AOptimPrepare_4,1);
 CPCLS(__AOptimPrepare_11,1);
 CPPRD(__AOcError_15,1);
 CPPRD(x1,1);
 {OBJ x3;OBJ x4;OBJ x5;OBJ x6;OBJ x7;OBJ x14;
  x3=_AOptimPrepare_30(x2);
  CPPRD(x3,1);
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_11,1))(__AOptimPrepare_11,x1);
  x5=_AAcFun_14(__AOptimPrepare_3,x3);
  x6=_ASeqSort_2(__AOptimPrepare_4,x5);
  x7=_AOptimPrepare_5(x1,x3,x6,__ANat_5);
  CPPRD(x7,1);
  PRD1(2,x14);FLD1(x14,1)=x7;FLD1(x14,2)=__AOcError_15;
  {OBJ x11=FLD1(x7,4);
   if(EXPRD(x7,1)){
    FLD1(x7,4)=NIL;DSPRD(x7);
   }else{
    CPPRD(x11,1);
    FRPRD(x7,1);}
   CPCLS(__AOptimPrepare_38,1);
   {OBJ x13;OBJ x15;
    x13=x11;
    x15=_ANatMapReduce_3(__AOptimPrepare_38,__ASeq_6,x13);
    r=_AComSeqReduce_4(x4,x14,x15);}}}
 return r;}

extern OBJ _AOptimPrepare_3(OBJ x1) /* anyDec? */
{OBJ r;
 FRPRD(x1,1);
 r=__ABUILTIN_5;
 return r;}

extern OBJ _AOptimPrepare_4(OBJ x1,OBJ x2) /* symOrder */
{OBJ r;
 CPPRD(x1,1);
 CPPRD(x2,1);
 {OBJ x3;OBJ x4;OBJ x5;OBJ x6;OBJ x18;OBJ x12;OBJ x19;OBJ x20;OBJ x21;
  x3=_AAc_22(x1);
  x4=_AAc_21(x1);
  x5=_AAc_22(x2);
  x6=_AAc_21(x2);
  if(ISPRM(x5)){
   x18=__ASourceAn_28;
  }else{
   {OBJ x14=FLD1(x5,2);
    if(EXPRD(x5,1)){
     x18=x14;
     FLD1(x5,2)=NIL;DSPRD(x5);
    }else{
     COPY(x14,1);
     x18=x14;
     FRPRD(x5,1);}}}
  if(ISPRM(x3)){
   CPPRD(x4,1);
   CPPRD(x6,1);
   x12=__ASourceAn_28;
  }else{
   {OBJ x8=FLD1(x3,2);
    if(EXPRD(x3,1)){
     x12=x8;
     FLD1(x3,2)=NIL;DSPRD(x3);
    }else{
     COPY(x8,1);
     x12=x8;
     FRPRD(x3,1);}
    CPPRD(x4,1);
    CPPRD(x6,1);}}
  x19=_ASourceAnFun_1(x12,x4);
  CPPRD(x19,1);
  x20=_ASourceAnFun_1(x18,x6);
  CPPRD(x20,1);
  ADenotation_17(x19,x20,x21);
  if(ISTGPRM(x21,1)){
   FRPRD(x4,1);
   FRPRD(x6,1);
   FRPRD(x19,1);
   FRPRD(x20,1);
   r=__ABUILTIN_5;
  }else{
   {OBJ x22;
    ADenotation_20(x19,x20,x22);
    if(ISTGPRM(x22,1)){
     FRPRD(x4,1);
     FRPRD(x6,1);
     r=__ABUILTIN_3;
    }else{
     r=_AIde_14(x4,x6);}}}}
 return r;}

extern OBJ _AOptimPrepare_5(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* annotateDecs */
{OBJ r;
 for(;;){
  if(ISPRM(x3)){
   FRPRD(x1,1);
   r=x2;
  }else{
   {OBJ x203=FLD1(x3,1);OBJ x204=FLD1(x3,2);
    if(EXPRD(x3,1)){
     CPPRD(x203,2);
     DSPRDF(x3);
    }else{
     CPPRD(x203,3);COPY(x204,1);
     FRPRD(x3,1);}
    {OBJ x205;OBJ x207;OBJ x208;
     ANat_81(x4,__ANat_5,x205);
     x207=_AAc_21(x203);
     x208=_AAc_22(x203);
     if(ISTGPRD(x203,2)){
      {OBJ x212=FLD(x203,4);
       CPPRD(x212,1);
       {OBJ x215;OBJ x221;OBJ x222;OBJ x225;OBJ x239;OBJ x240;OBJ x241;OBJ x244;OBJ x245;OBJ x246;OBJ x247;OBJ x248;OBJ x249;OBJ x250;OBJ x251;OBJ x252;OBJ x253;OBJ x254;OBJ x255;OBJ x256;
	if(ISPRM(x204)){
	 x215=__ABUILTIN_3;
	}else{
	 x215=__ABUILTIN_5;}
	if(ISPRM(x208)){
	 CPPRD(x207,1);
	 x221=__ASourceAn_28;
	}else{
	 {OBJ x217=FLD1(x208,2);
	  COPY(x217,1);
	  x221=x217;
	  CPPRD(x207,1);}}
	x222=_ASourceAnFun_1(x221,x207);
	if(ISTGPRM(x205,1)){
	 CPPRD(x222,1);
	 CPPRD(__AOptimPrepare_34,1);
	 {OBJ x223;OBJ x224;
	  ANatConv_1(x4,x223);
	  ADenotation_4(__AOptimPrepare_34,x223,x224);
	  ADenotation_4(x222,x224,x225);}
	}else{
	 x225=x222;
	 CPPRD(x225,1);}
	if(ISTGPRM(x215,1)){
	 {OBJ x228;OBJ x229;OBJ x230;OBJ x236;OBJ x237;OBJ x238;
	  if(ISPRM(x204)){
	   HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
	  }else{
	   {OBJ x226=FLD1(x204,1);
	    CPPRD(x226,1);
	    x228=x226;}}
	  CPPRD(x228,1);
	  x229=_AAc_22(x228);
	  x230=_AAc_21(x228);
	  if(ISPRM(x229)){
	   x236=__ASourceAn_28;
	  }else{
	   {OBJ x232=FLD1(x229,2);
	    if(EXPRD(x229,1)){
	     x236=x232;
	     FLD1(x229,2)=NIL;DSPRD(x229);
	    }else{
	     COPY(x232,1);
	     x236=x232;
	     FRPRD(x229,1);}}}
	  x237=_ASourceAnFun_1(x236,x230);
	  ADenotation_21(x237,x222,x238);
	  if(ISTGPRM(x238,1)){
	   CPPRD(x203,1);
	   ANat_2(x4,x239);
	  }else{
	   CPPRD(x203,1);
	   x239=__ANat_5;}}
	}else{
	 FRPRD(x222,1);
	 CPPRD(x203,1);
	 x239=__ANat_5;}
	x240=_ATypeAnFun_4(x203);
	x241=_AAc_20(x203);
	if(ISTGPRD(x212,0)){
	 x244=__ABUILTIN_5;
	}else{
	 x244=__ABUILTIN_3;}
	if(ISTGPRM(x244,1)){
	 CPPRD(x207,1);
	 x245=__ANat_59;
	}else{
	 CPPRD(x2,1);
	 CPPRD(x207,1);
	 CPPRD(x212,1);
	 x245=_AOptimPrepare_6(x2,x212,__ANat_5);}
	PRD(1,3,x246);FLD(x246,1)=x225;
	x247=_AAn_5(x208,x246);
	{TUP3 t=_AOptimPrepare_7(x212,x240);
	 x248=t.c1;
	 x249=t.c2;
	 x250=t.c3;}
	PRD(1,1,x251);FLD(x251,1)=x250;
	PRDF(3,1,x252);FLD(x252,1)=x245;FLD(x252,2)=x248;FLD(x252,3)=__ANat_5;
	x253=_AAn_3(x247,x251);
	x254=_AAn_7(x253,x252);
	PRD(4,2,x255);FLD(x255,1)=x254;FLD(x255,2)=x207;FLD(x255,3)=x241;FLD(x255,4)=x249;
	x256=_AAcFun_11(x2,x207,x255);
	x2=x256;x3=x204;x4=x239;continue;}}
     }else{
      {OBJ x259;OBJ x265;OBJ x266;OBJ x269;OBJ x283;
       if(ISPRM(x204)){
	x259=__ABUILTIN_3;
       }else{
	x259=__ABUILTIN_5;}
       if(ISPRM(x208)){
	CPPRD(x207,1);
	x265=__ASourceAn_28;
       }else{
	{OBJ x261=FLD1(x208,2);
	 COPY(x261,1);
	 x265=x261;
	 CPPRD(x207,1);}}
       x266=_ASourceAnFun_1(x265,x207);
       if(ISTGPRM(x205,1)){
	CPPRD(x266,1);
	CPPRD(__AOptimPrepare_34,1);
	{OBJ x267;OBJ x268;
	 ANatConv_1(x4,x267);
	 ADenotation_4(__AOptimPrepare_34,x267,x268);
	 ADenotation_4(x266,x268,x269);}
       }else{
	x269=x266;
	CPPRD(x269,1);}
       if(ISTGPRM(x259,1)){
	{OBJ x272;OBJ x273;OBJ x274;OBJ x280;OBJ x281;OBJ x282;
	 if(ISPRM(x204)){
	  HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
	 }else{
	  {OBJ x270=FLD1(x204,1);
	   CPPRD(x270,1);
	   x272=x270;}}
	 CPPRD(x272,1);
	 x273=_AAc_22(x272);
	 x274=_AAc_21(x272);
	 if(ISPRM(x273)){
	  x280=__ASourceAn_28;
	 }else{
	  {OBJ x276=FLD1(x273,2);
	   if(EXPRD(x273,1)){
	    x280=x276;
	    FLD1(x273,2)=NIL;DSPRD(x273);
	   }else{
	    COPY(x276,1);
	    x280=x276;
	    FRPRD(x273,1);}}}
	 x281=_ASourceAnFun_1(x280,x274);
	 ADenotation_21(x281,x266,x282);
	 if(ISTGPRM(x282,1)){
	  ANat_2(x4,x283);
	 }else{
	  x283=__ANat_5;}}
       }else{
	FRPRD(x266,1);
	x283=__ANat_5;}
       if(ISTGPRD(x203,3)){
	{OBJ x287=FLD(x203,4);
	 CPPRD(x207,1);
	 {OBJ x288;OBJ x289;OBJ x290;OBJ x291;OBJ x292;
	  x288=_AAc_20(x203);
	  PRD(1,3,x289);FLD(x289,1)=x269;
	  x290=_AAn_5(x208,x289);
	  PRD(4,3,x291);FLD(x291,1)=x290;FLD(x291,2)=x207;FLD(x291,3)=x288;FLD(x291,4)=x287;
	  x292=_AAcFun_11(x2,x207,x291);
	  x2=x292;x3=x204;x4=x283;continue;}}
       }else{
	HLT("OptimPrepare at <101,12-118,45> : missing else in annotateDecs\'OptimPrepare:popts**unit**seq**nat->unit");}}}}}}
  break;}
 return r;}

extern OBJ _AOptimPrepare_6(register OBJ x1,register OBJ x2,register OBJ x3) /* approxComp */
{OBJ r;
 for(;;){
  {OBJ x4;
   ANat_76(x3,__ANat_59,x4);
   if(ISTGPRM(x4,1)){
    FRPRD(x1,1);
    FRPRD(x2,1);
    r=x3;
   }else{
    if(ISTGPRD(x2,3)){
     {OBJ x156=FLD(x2,2);OBJ x157=FLD(x2,3);
      if(EXPRD(x2,1)){
       CPPRD(x156,1);
       FREE(FLD(x2,1),1);DSPRDF(x2);
      }else{
       CPPRD(x156,2);COPY(x157,1);
       FRPRD(x2,1);}
      CPPRD(x1,2);
      CPCLS(__AOptimPrepare_6,1);
      {OBJ x158;OBJ x159;OBJ x160;OBJ x161;
       x158=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_6,1))(__AOptimPrepare_6,x1);
       x159=_AOptimPrepare_6(x1,x156,x3);
       x160=_ASeqReduce_3(x158,x159,x157);
       ANat_76(x160,__ANat_59,x161);
       if(ISTGPRM(x161,1)){
	r=x160;
	FRPRD(x1,1);
	FRPRD(x156,1);
       }else{
	CPPRD(x156,1);
	{OBJ x162;
	 x162=_AAcFun_6(x156);
	 if(ISTGPRM(x162,1)){
	  if(ISTGPRD(x156,2)){
	   {OBJ x164=FLD(x156,2);
	    if(EXPRD(x156,1)){
	     FREE(FLD(x156,1),1);DSPRDF(x156);
	    }else{
	     CPPRD(x164,1);
	     FRPRD(x156,1);}
	    {OBJ x165;
	     x165=_AAcFun_10(x1,x164);
	     if(ISTGPRD(x165,3)){
	      if(EXPRD(x165,1)){
	       DSPRD(x165);
	      }else{
	       DCPRD(x165,1);}
	      ANat_73(x160,__ANat_8,r);
	     }else{
	      FRPRD(x165,1);
	      r=__ANat_59;}}}
	  }else{
	   HLT("Ac at <unknown> : undefined selection ide\'Ac:exp->ide");}
	 }else{
	  FRPRD(x1,1);
	  FRPRD(x156,1);
	  r=__ANat_59;}}}}}
    }else{
     if(ISTGPRD(x2,4)){
      {OBJ x172=FLD(x2,3);
       if(EXPRD(x2,1)){
	FLD(x2,3)=NIL;DSPRD(x2);
       }else{
	CPPRD(x172,1);
	FRPRD(x2,1);}
       x2=x172;continue;}
     }else{
      if(ISTGPRD(x2,5)){
       {OBJ x174=FLD(x2,2);OBJ x175=FLD(x2,3);
	if(EXPRD(x2,1)){
	 FREE(FLD(x2,1),1);DSPRDF(x2);
	}else{
	 COPY(x174,1);CPPRD(x175,1);
	 FRPRD(x2,1);}
	CPPRD(x1,1);
	CPCLS(__AOptimPrepare_31,1);
	{OBJ x176;OBJ x177;OBJ x178;
	 x176=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_31,1))(__AOptimPrepare_31,x1);
	 x177=_ASeqReduce_3(x176,x3,x174);
	 ANat_76(x177,__ANat_59,x178);
	 if(ISTGPRM(x178,1)){
	  r=x177;
	  FRPRD(x1,1);
	  FRPRD(x175,1);
	 }else{
	  x2=x175;x3=x177;continue;}}}
      }else{
       if(ISTGPRD(x2,6)){
	{OBJ x180=FLD(x2,2);OBJ x181=FLD(x2,3);OBJ x182=FLD(x2,4);
	 if(EXPRD(x2,1)){
	  FREE(FLD(x2,1),1);DSPRDF(x2);
	 }else{
	  CPPRD(x180,1);COPY(x181,1);CPPRD(x182,1);
	  FRPRD(x2,1);}
	 CPPRD(x1,1);
	 CPCLS(__AOptimPrepare_32,1);
	 {OBJ x183;OBJ x184;OBJ x185;
	  x183=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_32,1))(__AOptimPrepare_32,x1);
	  x184=_ASeqReduce_3(x183,x3,x181);
	  ANat_76(x184,__ANat_59,x185);
	  if(ISTGPRM(x185,1)){
	   r=x184;
	   FRPRD(x1,1);
	   FRPRD(x180,1);
	   FRPRD(x182,1);
	  }else{
	   CPPRD(x1,1);
	   {OBJ x186;
	    x186=_AOptimPrepare_6(x1,x182,x184);
	    x2=x180;x3=x186;continue;}}}}
       }else{
	FRPRD(x1,1);
	FRPRD(x2,1);
	r=x3;}}}}}}
  break;}
 return r;}

extern TUP3 _AOptimPrepare_7(OBJ x1,OBJ x2) /* norm */
{TUP3 r;
 COPY(x2,1);
 {OBJ x3;OBJ x7;OBJ x10;OBJ x11;OBJ x12;OBJ x14;OBJ x17;
  x3=_AOptimPrepare_10(x2);
  if(ISPRD(x3)&&(ISTGPRD(x3,7))){
   x7=__ABUILTIN_5;
  }else{
   x7=__ABUILTIN_3;}
  if(ISTGPRM(x7,1)){
   if(ISPRD(x3)&&(ISTGPRD(x3,7))){
    {OBJ x9=FLD(x3,2);
     if(EXPRD(x3,1)){
      x10=x9;
      FREE(FLD(x3,1),1);DSPRDF(x3);
     }else{
      COPY(x9,1);
      x10=x9;
      FRPRD(x3,1);}}
   }else{
    HLT("TypeAn at <unknown> : undefined selection scope\'TypeAn:type->type");}
  }else{
   x10=x3;}
  {TUP2 t=_AOptimPrepare_9(x1);
   x11=t.c1;
   x12=t.c2;}
  if(ISTGPRD(x12,0)){
   x14=__ABUILTIN_5;
  }else{
   x14=__ABUILTIN_3;}
  if(ISTGPRM(x14,1)){
   if(ISPRD(x10)&&(ISTGPRD(x10,3))){
    x17=__ABUILTIN_5;
   }else{
    x17=__ABUILTIN_3;}
  }else{
   x17=__ABUILTIN_3;}
  if(ISTGPRM(x17,1)){
   {OBJ x18;
    x18=_AAc_50(x12);
    if(ISPRD(x10)&&(ISTGPRD(x10,3))){
     {OBJ x32=FLD(x10,1);OBJ x33=FLD(x10,2);
      if(EXPRD(x10,1)){
       COPY(x32,1);
       DSPRDF(x10);
      }else{
       COPY(x32,2);COPY(x33,1);
       FRPRD(x10,1);}
      CPCLS(__AOptimPrepare_8,1);
      CPCLS(__AOptimPrepare_33,1);
      {OBJ x34;OBJ x36;OBJ x37;OBJ x38;OBJ x39;
       PRD(1,1,x34);FLD(x34,1)=x33;
       r.c1=_ASeq_52(x32,__ANat_5);
       x36=_AAn_3(x18,x34);
       x37=_ASeq_24(__ANat_8,r.c1,__AOptimPrepare_33);
       PRD(1,0,x38);FLD(x38,1)=x36;
       x39=_ASeqZip_4(__AOptimPrepare_8,x32,x37);
       PRD(3,4,r.c2);FLD(r.c2,1)=__AAn_2;FLD(r.c2,2)=x39;FLD(r.c2,3)=x38;
       r.c3=x2;}}
    }else{
     HLT("TypeAn at <unknown> : undefined selection args\'TypeAn:type->seq");}}
  }else{
   r.c1=x11;r.c2=x12;
   FREE(x10,1);
   r.c3=x2;}}
 return r;}
extern OBJ _AOptimPrepare_7_c(OBJ x1,OBJ x2) /* norm */
{OBJ r;
 {TUP3 t=_AOptimPrepare_7(x1,x2);
  PRD1(3,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;
  FLD1(r,3)=t.c3;}
 return r;}

extern OBJ _AOptimPrepare_8(OBJ x1,OBJ x2) /* mkVar */
{OBJ r;
 {OBJ x3;OBJ x4;
  PRD(1,1,x3);FLD(x3,1)=x1;
  PRDF(1,1,x4);FLD(x4,1)=x2;
  PRD(2,0,r);FLD(r,2)=x4;
  FLD(r,1)=_AAn_3(__AAn_2,x3);}
 return r;}

extern TUP2 _AOptimPrepare_9(OBJ x1) /* normExp */
{TUP2 r;
 if(ISTGPRD(x1,4)){
  {OBJ x77=FLD(x1,2);OBJ x78=FLD(x1,3);
   COPY(x77,2);CPPRD(x78,1);
   {OBJ x79;
    x79=_ASeq_52(x77,__ANat_5);
    if(ISTGPRD(x78,4)){
     {OBJ x83;TUP2 x85;
      x83=_AAc_50(x1);
      x85=_AOptimPrepare_9(x78);
      if(ISTGPRD(x85.c2,4)){
       {OBJ x88=FLD(x85.c2,2);OBJ x89;
	if(EXPRD(x85.c2,1)){
	 {OBJ x90;
	  x90=_ASeq_26(x77,x88);
	  RPRD(x85.c2,r.c2);FREE(FLD(r.c2,1),1);FLD(r.c2,1)=x83;FLD(r.c2,2)=x90;
	  ANat_61(x79,x85.c1,r.c1);}
	}else{
	 x89=FLD(x85.c2,3);COPY(x88,1);CPPRD(x89,1);
	 {OBJ x90;
	  x90=_ASeq_26(x77,x88);
	  FRPRD(x85.c2,1);PRD(3,4,r.c2);FLD(r.c2,1)=x83;FLD(r.c2,2)=x90;FLD(r.c2,3)=x89;
	  ANat_61(x79,x85.c1,r.c1);}}}
      }else{
       HLT("Ac at <unknown> : undefined selection vars\'Ac:exp->seq");}}
    }else{
     r.c1=x79;
     FREE(x77,1);
     FRPRD(x78,1);
     r.c2=x1;}}}
 }else{
  r.c1=__ANat_5;r.c2=x1;}
 return r;}
extern OBJ _AOptimPrepare_9_c(OBJ x1) /* normExp */
{OBJ r;
 {TUP2 t=_AOptimPrepare_9(x1);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AOptimPrepare_10(register OBJ x1) /* flatType */
{OBJ r;OBJ* p1=&r;
 for(;;){
  if(ISPRD(x1)&&(ISTGPRD(x1,7))){
   {OBJ x60;OBJ x61=FLD(x1,2);
    if(EXPRD(x1,1)){
     {
      RPRD(x1,*p1);
      x1=x61;p1=&FLD(*p1,2);continue;}
    }else{
     x60=FLD(x1,1);COPY(x60,1);COPY(x61,1);
     {
      FRPRD(x1,1);PRD(2,7,*p1);FLD(*p1,1)=x60;
      x1=x61;p1=&FLD(*p1,2);continue;}}}
  }else{
   if(ISPRD(x1)&&(ISTGPRD(x1,3))){
    {OBJ x63=FLD(x1,1);OBJ x64=FLD(x1,2);
     COPY(x63,1);COPY(x64,1);
     if(ISPRD(x64)&&(ISTGPRD(x64,3))){
      if(EXPRD(x1,1)){
       DSPRD(x1);
      }else{
       DCPRD(x1,1);}
      {OBJ x67;
       x67=_AOptimPrepare_10(x64);
       if(ISPRD(x67)&&(ISTGPRD(x67,3))){
	{OBJ x68=FLD(x67,1);OBJ x69;
	 if(EXPRD(x67,1)){
	  {
	   RPRD(x67,*p1);
	   FLD(*p1,1)=_ASeq_26(x63,x68);}
	 }else{
	  x69=FLD(x67,2);COPY(x68,1);COPY(x69,1);
	  {
	   FRPRD(x67,1);PRD(2,3,*p1);FLD(*p1,2)=x69;
	   FLD(*p1,1)=_ASeq_26(x63,x68);}}}
       }else{
	HLT("TypeAn at <unknown> : undefined selection args\'TypeAn:type->seq");}}
     }else{
      FREE(x63,1);
      FREE(x64,1);
      *p1=x1;}}
   }else{
    *p1=x1;}}
  break;}
 return r;}

extern OBJ _AOptimPrepare_11(OBJ x1,OBJ x2,OBJ x3) /* importOptimFile */
{OBJ r;
 CPPRD(x1,1);
 CPPRD(x2,1);
 {OBJ x10;
  x10=_APreparedOptions_4(x1,x2);
  {OBJ x21=FLD1(x3,1);OBJ x22=FLD1(x3,2);FLAG x_x3=EXPRD(x3,1);
   if(x_x3){
   }else{
    CPPRD(x21,1);CPPRD(x22,1);}
   if(ISTGPRM(x10,1)){
    if(x_x3){
     DSPRDF(x3);
    }else{
     FRPRD(x3,1);}
    {OBJ x23=FLD1(x1,1);
     CPPRD(x23,2);
     CPCLS(__AOptimPrepare_12,1);
     CPPRD(__AAcIO_3,1);
     {OBJ x26;OBJ x27;OBJ x28;
      x26=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimPrepare_12,3))(__AOptimPrepare_12,x1,x21,x22);
      x27=_AOcOptions_28(x2,x23);
      x28=_AOcBinStream_4(x23,x27,__AAcIO_3);
      r=_AComCompose_5(x28,x26);}}
   }else{
    FRPRD(x1,1);
    FRPRD(x2,1);
    CPCLS(__ACom_47,1);
    {OBJ x29;OBJ x30;OBJ x31;
     if(x_x3){
      RSOME(x3,x29);
     }else{
      FRPRD(x3,1);PRD1(2,x29);FLD1(x29,1)=x21;FLD1(x29,2)=x22;}
     PRD(1,0,x30);FLD(x30,1)=x29;
     x31=(*(OBJ(*)(OBJ,OBJ))METHOD(__ACom_47,1))(__ACom_47,x30);
     PRD(2,0,r);FLD(r,1)=x31;FLD(r,2)=__ASeq_6;}}}}
 return r;}

extern OBJ _AOptimPrepare_12(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* processOptim */
{OBJ r;
 FRPRD(x1,1);
 if(ISPRM(x4)){
  CPCLS(__ACom_47,1);
  {OBJ x48;OBJ x49;OBJ x50;
   PRD1(2,x48);FLD1(x48,1)=x2;FLD1(x48,2)=x3;
   PRD(1,0,x49);FLD(x49,1)=x48;
   x50=(*(OBJ(*)(OBJ,OBJ))METHOD(__ACom_47,1))(__ACom_47,x49);
   PRD(2,0,r);FLD(r,1)=x50;FLD(r,2)=__ASeq_6;}
 }else{
  {OBJ x30=FLD1(x4,1);
   if(EXPRD(x4,1)){
    DSPRDF(x4);
   }else{
    CPPRD(x30,1);
    FRPRD(x4,1);}
   {OBJ x34=FLD1(x30,4);
    CPPRD(x34,1);
    CPCLS(__AOptimPrepare_15,1);
    CPPRD(__AOcError_15,1);
    CPCLS(__ACom_47,1);
    CPPRD(__ASeq_2,1);
    CPPRD(__ANatMap_3,1);
    {OBJ x36;OBJ x37;TUP3 x39;OBJ x42;OBJ x43;OBJ x44;OBJ x45;OBJ x46;OBJ x47;
     x36=_ANatMapReduce_3(__ASeq_2,__ASeq_6,x34);
     PRD1(2,x37);FLD1(x37,1)=x30;FLD1(x37,2)=x36;
     COPY(x37,1);
     x39=_AOptimPrepare_13(x37,x2,__ANatMap_3,__AOcError_15);
     x42=_AOcError_21(x3,x39.c3);
     x43=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_15,1))(__AOptimPrepare_15,x39.c2);
     x44=_ASeqReduce_3(x43,x39.c1,x37);
     PRD1(2,x45);FLD1(x45,1)=x44;FLD1(x45,2)=x42;
     PRD(1,0,x46);FLD(x46,1)=x45;
     x47=(*(OBJ(*)(OBJ,OBJ))METHOD(__ACom_47,1))(__ACom_47,x46);
     PRD(2,0,r);FLD(r,1)=x47;FLD(r,2)=__ASeq_6;}}}}
 return r;}

extern TUP3 _AOptimPrepare_13(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* extendUses */
{TUP3 r;
 for(;;){
  if(ISPRM(x1)){
   r.c1=x2;r.c2=x3;r.c3=x4;
  }else{
   {OBJ x32=FLD1(x1,1);OBJ x33=FLD1(x1,2);
    if(EXPRD(x1,1)){
     DSPRDF(x1);
    }else{
     CPPRD(x32,1);COPY(x33,1);
     FRPRD(x1,1);}
    {TUP3 x36;
     x36=_AOptimPrepare_14(x32,x2,x3,x4);
     x1=x33;x2=x36.c1;x3=x36.c2;x4=x36.c3;continue;}}}
  break;}
 return r;}
extern OBJ _AOptimPrepare_13_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* extendUses */
{OBJ r;
 {TUP3 t=_AOptimPrepare_13(x1,x2,x3,x4);
  PRD1(3,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;
  FLD1(r,3)=t.c3;}
 return r;}

extern TUP3 _AOptimPrepare_14(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* extendUse */
{TUP3 r;
 {OBJ x252=FLD1(x1,1);OBJ x253=FLD1(x1,2);OBJ x254=FLD1(x1,3);FLAG x_x1=EXPRD(x1,1);
  if(x_x1){
  }else{
   COPY(x252,1);CPPRD(x253,1);}
  {OBJ x339=FLD1(x2,1);OBJ x340=FLD1(x2,2);OBJ x341=FLD1(x2,3);OBJ x342=FLD1(x2,4);OBJ x343=FLD1(x2,5);
   COPY(x339,1);CPPRD(x340,1);CPPRD(x342,1);CPPRD(x343,1);
   {OBJ x350;OBJ x344;OBJ x353;OBJ x351;OBJ x354;OBJ x357;OBJ x355;
    if(ISPRM(x252)){
     CPPRD(x342,1);
     CPPRD(__ASeq_2,1);
     x350=__ASourceAn_28;
    }else{
     {OBJ x346=FLD1(x252,2);
      if(EXPRD(x252,1)){
       x350=x346;
       FLD1(x252,2)=NIL;DSPRD(x252);
      }else{
       COPY(x346,1);
       x350=x346;
       FRPRD(x252,1);}
      CPPRD(x342,1);
      CPPRD(__ASeq_2,1);}}
    x344=_ANatMapReduce_3(__ASeq_2,__ASeq_6,x342);
    if(ISPRD(x350)&&(ISTGPRD(x350,4))){
     CPPRD(x253,1);
     CPCLS(__AOptimPrepare_35,1);
     CPCLS(__AAc_7,1);
     CPCLS(__ACompose_4,1);
     x353=__ABUILTIN_5;
    }else{
     CPPRD(x253,1);
     CPCLS(__AOptimPrepare_35,1);
     CPCLS(__AAc_7,1);
     CPCLS(__ACompose_4,1);
     x353=__ABUILTIN_3;}
    x351=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_35,1))(__AOptimPrepare_35,x253);
    x354=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__ACompose_4,2))(__ACompose_4,x351,__AAc_7);
    if(ISTGPRM(x353,1)){
     if(ISPRD(x350)&&(ISTGPRD(x350,4))){
      {OBJ x356=FLD(x350,1);
       if(EXPRD(x350,1)){
	DSPRDF(x350);
       }else{
	CPPRD(x356,1);
	FRPRD(x350,1);}
       PRD1(1,x357);FLD1(x357,1)=x356;}
     }else{
      HLT("SourceAn at <unknown> : undefined selection version\'SourceAn:sourceAn->denotation");}
    }else{
     FREE(x350,1);
     x357=__AOption_5;}
    x355=_ASeq_41(x354,x344);
    if(ISPRM(x355)){
     if(EXPRD(x2,1)){
      DSPRD(x2);
     }else{
      DCPRD(x2,1);}
     CPPRD(x342,1);
     {OBJ x383;OBJ x384;
      x383=_ANatMap_20(x342);
      x384=_ANatMap_4(x254,x383,x3);
      if(ISPRM(x357)){
       r.c2=x384;
       CPPRD(__ANatMap_3,2);
       {OBJ x393;OBJ x394;
	if(x_x1){
	 RSOME(x1,x393);FLD1(x393,1)=__AAn_2;FLD1(x393,3)=x383;FRPRD(FLD1(x393,4),1);FLD1(x393,4)=__ANatMap_3;FRPRD(FLD1(x393,5),1);FLD1(x393,5)=__ANatMap_3;
	}else{
	 FRPRD(x1,1);PRD1(5,x393);FLD1(x393,1)=__AAn_2;FLD1(x393,2)=x253;FLD1(x393,3)=x383;FLD1(x393,4)=__ANatMap_3;FLD1(x393,5)=__ANatMap_3;}
	x394=_ANatMap_4(x383,x393,x342);
	PRD1(5,r.c1);FLD1(r.c1,1)=x339;FLD1(r.c1,2)=x340;FLD1(r.c1,3)=x341;FLD1(r.c1,4)=x394;FLD1(r.c1,5)=x343;
	r.c3=x4;}
      }else{
       {OBJ x385=FLD1(x357,1);
	if(EXPRD(x357,1)){
	 r.c2=x384;
	 DSPRDF(x357);
	}else{
	 CPPRD(x385,1);
	 r.c2=x384;
	 FRPRD(x357,1);}
	CPPRD(__ANatMap_3,2);
	{OBJ x387;OBJ x388;OBJ x389;OBJ x390;
	 PRD(1,4,x387);FLD(x387,1)=x385;
	 x388=_AAn_5(__AAn_2,x387);
	 if(x_x1){
	  RSOME(x1,x389);FLD1(x389,1)=x388;FLD1(x389,3)=x383;FRPRD(FLD1(x389,4),1);FLD1(x389,4)=__ANatMap_3;FRPRD(FLD1(x389,5),1);FLD1(x389,5)=__ANatMap_3;
	 }else{
	  FRPRD(x1,1);PRD1(5,x389);FLD1(x389,1)=x388;FLD1(x389,2)=x253;FLD1(x389,3)=x383;FLD1(x389,4)=__ANatMap_3;FLD1(x389,5)=__ANatMap_3;}
	 x390=_ANatMap_4(x383,x389,x342);
	 PRD1(5,r.c1);FLD1(r.c1,1)=x339;FLD1(r.c1,2)=x340;FLD1(r.c1,3)=x341;FLD1(r.c1,4)=x390;FLD1(r.c1,5)=x343;
	 r.c3=x4;}}}}
    }else{
     {OBJ x358=FLD1(x355,1);
      if(EXPRD(x355,1)){
       DSPRDF(x355);
      }else{
       CPPRD(x358,1);
       FRPRD(x355,1);}
      {OBJ x359=FLD1(x358,1);OBJ x360=FLD1(x358,2);OBJ x361=FLD1(x358,3);OBJ x362=FLD1(x358,4);OBJ x363=FLD1(x358,5);FLAG x_x358=EXPRD(x358,1);
       if(x_x358){
       }else{
	COPY(x359,1);CPPRD(x360,1);CPPRD(x362,1);CPPRD(x363,1);}
       {OBJ x370;OBJ x364;
	if(ISPRM(x359)){
	 x370=__ASourceAn_28;
	}else{
	 {OBJ x366=FLD1(x359,2);
	  COPY(x366,1);
	  x370=x366;}}
	x364=_ANatMap_4(x254,x361,x3);
	if(ISPRD(x370)&&(ISTGPRD(x370,4))){
	 {OBJ x371=FLD(x370,1);
	  if(EXPRD(x370,1)){
	   if(x_x1){
	    FLD1(x1,1)=NIL;FLD1(x1,2)=NIL;DSPRD(x1);
	   }else{
	    FRPRD(x1,1);}
	   if(x_x358){
	    DSPRDF(x358);
	   }else{
	    FRPRD(x358,1);}
	   DSPRDF(x370);
	  }else{
	   CPPRD(x371,1);
	   if(x_x1){
	    FLD1(x1,1)=NIL;FLD1(x1,2)=NIL;DSPRD(x1);
	   }else{
	    FRPRD(x1,1);}
	   if(x_x358){
	    DSPRDF(x358);
	   }else{
	    FRPRD(x358,1);}
	   FRPRD(x370,1);}
	  FREE(x339,1);
	  FRPRD(x340,1);
	  FRPRD(x342,1);
	  FRPRD(x343,1);
	  FREE(x359,1);
	  FRPRD(x360,1);
	  FRPRD(x362,1);
	  FRPRD(x363,1);
	  if(ISPRM(x357)){
	   r.c2=x364;
	   FRPRD(x253,1);
	   FRPRD(x371,1);
	   r.c1=x2;r.c3=x4;
	  }else{
	   {OBJ x372=FLD1(x357,1);
	    if(EXPRD(x357,1)){
	     DSPRDF(x357);
	    }else{
	     CPPRD(x372,1);
	     FRPRD(x357,1);}
	    {OBJ x373;
	     ADenotation_21(x371,x372,x373);
	     if(ISTGPRM(x373,1)){
	      r.c2=x364;
	      FRPRD(x253,1);
	      r.c1=x2;r.c3=x4;
	     }else{
	      r.c2=x364;
	      CPPRD(__AOptimPrepare_36,1);
	      {OBJ x374;OBJ x375;
	       x374=_AString_49(x253);
	       x375=_AOcError_18(__AOcError_10,__AOptimPrepare_36,x374,__AOcPos_9);
	       r.c3=_AOcError_21(x4,x375);
	       r.c1=x2;}}}}}}
	}else{
	 FRPRD(x253,1);
	 FREE(x370,1);
	 if(ISPRM(x357)){
	  if(x_x1){
	   FLD1(x1,1)=NIL;FLD1(x1,2)=NIL;DSPRD(x1);
	  }else{
	   FRPRD(x1,1);}
	  if(x_x358){
	   DSPRDF(x358);
	  }else{
	   FRPRD(x358,1);}
	  r.c2=x364;
	  FREE(x339,1);
	  FRPRD(x340,1);
	  FRPRD(x342,1);
	  FRPRD(x343,1);
	  FREE(x359,1);
	  FRPRD(x360,1);
	  FRPRD(x362,1);
	  FRPRD(x363,1);
	  r.c1=x2;r.c3=x4;
	 }else{
	  {OBJ x377=FLD1(x357,1);
	   if(EXPRD(x357,1)){
	    r.c2=x364;
	    DSPRDF(x357);
	   }else{
	    CPPRD(x377,1);
	    r.c2=x364;
	    FRPRD(x357,1);}
	   if(EXPRD(x2,1)){
	    DSPRD(x2);
	   }else{
	    DCPRD(x2,1);}
	   {OBJ x378;OBJ x379;OBJ x380;OBJ x381;
	    PRD(1,4,x378);FLD(x378,1)=x377;
	    x379=_AAn_5(x359,x378);
	    if(x_x358){
	     RSOME(x358,x380);FLD1(x380,1)=x379;
	    }else{
	     FRPRD(x358,1);PRD1(5,x380);FLD1(x380,1)=x379;FLD1(x380,2)=x360;FLD1(x380,3)=x361;FLD1(x380,4)=x362;FLD1(x380,5)=x363;}
	    x381=_ANatMap_4(x361,x380,x342);
	    if(x_x1){
	     RSOME(x1,r.c1);FLD1(r.c1,1)=x339;FLD1(r.c1,2)=x340;FLD1(r.c1,3)=x341;FRPRD(FLD1(r.c1,4),1);FLD1(r.c1,4)=x381;FRPRD(FLD1(r.c1,5),1);FLD1(r.c1,5)=x343;
	    }else{
	     FRPRD(x1,1);PRD1(5,r.c1);FLD1(r.c1,1)=x339;FLD1(r.c1,2)=x340;FLD1(r.c1,3)=x341;FLD1(r.c1,4)=x381;FLD1(r.c1,5)=x343;}
	    r.c3=x4;}}}}}}}}}}}
 return r;}
extern OBJ _AOptimPrepare_14_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* extendUse */
{OBJ r;
 {TUP3 t=_AOptimPrepare_14(x1,x2,x3,x4);
  PRD1(3,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;
  FLD1(r,3)=t.c3;}
 return r;}

extern OBJ _AOptimPrepare_15(OBJ x1,OBJ x2,OBJ x3) /* mergeUnit */
{OBJ r;
 CPCLS(__AOptimPrepare_18,1);
 CPCLS(__AOptimPrepare_19,1);
 CPCLS(__AOptimPrepare_20,1);
 CPPRD(x1,3);
 {OBJ x16;OBJ x23;OBJ x24;
  x16=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_19,1))(__AOptimPrepare_19,x1);
  x23=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_20,1))(__AOptimPrepare_20,x1);
  x24=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_18,1))(__AOptimPrepare_18,x1);
  {OBJ x204=FLD1(x2,1);OBJ x206=FLD1(x2,3);OBJ x208=FLD1(x2,5);
   if(EXPRD(x2,1)){
    FLD1(x2,1)=NIL;FLD1(x2,5)=NIL;DSPRD(x2);
   }else{
    COPY(x204,1);CPPRD(x208,1);
    FRPRD(x2,1);}
   {OBJ x368=FLD1(x3,1);OBJ x369=FLD1(x3,2);OBJ x370=FLD1(x3,3);OBJ x371=FLD1(x3,4);OBJ x372=FLD1(x3,5);FLAG x_x3=EXPRD(x3,1);
    if(x_x3){
    }else{
     COPY(x368,1);CPPRD(x369,1);CPPRD(x371,1);CPPRD(x372,1);}
    {OBJ x373;
     x373=_ANatMap_14(x1,x206);
     if(ISPRM(x204)){
      CPPRD(x371,1);
      CPCLS(__AIde_14,1);
      COPY(__AIdeMap_3,1);
      {OBJ x375;OBJ x376;
       x375=_ANatMap_14(x371,x373);
       x376=_AMapConv_4(__AIde_14,__AIdeMap_3);
       {OBJ x377=FLD1(x375,1);OBJ x378=FLD1(x375,2);OBJ x379=FLD1(x375,3);OBJ x380=FLD1(x375,4);OBJ x381=FLD1(x375,5);FLAG x_x375=EXPRD(x375,1);
	if(x_x375){
	}else{
	 COPY(x377,1);CPPRD(x378,1);CPPRD(x380,1);CPPRD(x381,1);}
	{OBJ x382;
	 x382=_ANatMapReduce_3(x24,x381,x208);
	 if(ISPRM(x377)){
	  CPPRD(__ANatMap_3,2);
	  COPY(__AIdeMap_3,1);
	  {OBJ x384;OBJ x385;OBJ x386;OBJ x387;OBJ x388;OBJ x389;OBJ x390;
	   x384=_ANatMapReduce_3(x23,__ANatMap_3,__ANatMap_3);
	   x385=_ASeqReduce_3(x16,__AIdeMap_3,x376);
	   PRD(1,3,x386);FLD(x386,1)=x385;
	   PRD(1,3,x387);FLD(x387,1)=x384;
	   x388=_AAn_3(x377,x387);
	   x389=_AAn_7(x388,x386);
	   if(x_x375){
	    RSOME(x375,x390);FLD1(x390,1)=x389;FLD1(x390,5)=x382;
	   }else{
	    FRPRD(x375,1);PRD1(5,x390);FLD1(x390,1)=x389;FLD1(x390,2)=x378;FLD1(x390,3)=x379;FLD1(x390,4)=x380;FLD1(x390,5)=x382;}
	   if(x_x3){
	    RSOME(x3,r);
	   }else{
	    FRPRD(x3,1);PRD1(5,r);FLD1(r,1)=x368;FLD1(r,2)=x369;FLD1(r,3)=x370;FLD1(r,5)=x372;}
	   FLD1(r,4)=_ANatMap_4(x373,x390,x371);}
	 }else{
	  {OBJ x392=FLD1(x377,1);OBJ x394=FLD1(x377,3);
	   COPY(x392,1);COPY(x394,1);
	   {OBJ x401;OBJ x399;OBJ x402;OBJ x403;OBJ x404;OBJ x405;OBJ x406;OBJ x407;OBJ x408;
	    if(ISPRD(x394)&&(ISTGPRD(x394,3))){
	     {OBJ x400=FLD(x394,1);
	      COPY(x400,1);
	      x401=x400;
	      if(EXPRD(x394,1)){
	       FREE(FLD(x394,1),1);DSPRDF(x394);
	      }else{
	       DCPRD(x394,1);}}
	    }else{
	     FREE(x394,1);
	     COPY(__AIdeMap_3,1);
	     x401=__AIdeMap_3;}
	    if(ISPRD(x392)&&(ISTGPRD(x392,3))){
	     {OBJ x398=FLD(x392,1);
	      CPPRD(x398,1);
	      x399=x398;
	      if(EXPRD(x392,1)){
	       FRPRD(FLD(x392,1),1);DSPRDF(x392);
	      }else{
	       DCPRD(x392,1);}
	      CPPRD(__ANatMap_3,1);}
	    }else{
	     FREE(x392,1);
	     CPPRD(__ANatMap_3,2);
	     x399=__ANatMap_3;}
	    x402=_ANatMapReduce_3(x23,x399,__ANatMap_3);
	    x403=_ASeqReduce_3(x16,x401,x376);
	    PRD(1,3,x404);FLD(x404,1)=x403;
	    PRD(1,3,x405);FLD(x405,1)=x402;
	    x406=_AAn_3(x377,x405);
	    x407=_AAn_7(x406,x404);
	    if(x_x375){
	     RSOME(x375,x408);FLD1(x408,1)=x407;FLD1(x408,5)=x382;
	    }else{
	     FRPRD(x375,1);PRD1(5,x408);FLD1(x408,1)=x407;FLD1(x408,2)=x378;FLD1(x408,3)=x379;FLD1(x408,4)=x380;FLD1(x408,5)=x382;}
	    if(x_x3){
	     RSOME(x3,r);
	    }else{
	     FRPRD(x3,1);PRD1(5,r);FLD1(r,1)=x368;FLD1(r,2)=x369;FLD1(r,3)=x370;FLD1(r,5)=x372;}
	    FLD1(r,4)=_ANatMap_4(x373,x408,x371);}}}}}}
     }else{
      {OBJ x410=FLD1(x204,1);OBJ x412=FLD1(x204,3);
       if(EXPRD(x204,1)){
	FLD1(x204,1)=NIL;FLD1(x204,3)=NIL;DSPRD(x204);
       }else{
	COPY(x410,1);COPY(x412,1);
	FRPRD(x204,1);}
       {OBJ x420;OBJ x418;OBJ x416;OBJ x421;
	if(ISPRD(x412)&&(ISTGPRD(x412,3))){
	 {OBJ x419=FLD(x412,1);
	  if(EXPRD(x412,1)){
	   x420=x419;
	   DSPRDF(x412);
	  }else{
	   COPY(x419,1);
	   x420=x419;
	   FRPRD(x412,1);}}
	}else{
	 FREE(x412,1);
	 COPY(__AIdeMap_3,1);
	 x420=__AIdeMap_3;}
	if(ISPRD(x410)&&(ISTGPRD(x410,3))){
	 {OBJ x417=FLD(x410,1);
	  if(EXPRD(x410,1)){
	   x418=x417;
	   DSPRDF(x410);
	  }else{
	   CPPRD(x417,1);
	   x418=x417;
	   FRPRD(x410,1);}
	  CPPRD(x371,1);
	  CPCLS(__AIde_14,1);}
	}else{
	 FREE(x410,1);
	 CPPRD(x371,1);
	 CPPRD(__ANatMap_3,1);
	 CPCLS(__AIde_14,1);
	 x418=__ANatMap_3;}
	x416=_ANatMap_14(x371,x373);
	x421=_AMapConv_4(__AIde_14,x420);
	{OBJ x422=FLD1(x416,1);OBJ x423=FLD1(x416,2);OBJ x424=FLD1(x416,3);OBJ x425=FLD1(x416,4);OBJ x426=FLD1(x416,5);FLAG x_x416=EXPRD(x416,1);
	 if(x_x416){
	 }else{
	  COPY(x422,1);CPPRD(x423,1);CPPRD(x425,1);CPPRD(x426,1);}
	 {OBJ x427;
	  x427=_ANatMapReduce_3(x24,x426,x208);
	  if(ISPRM(x422)){
	   CPPRD(__ANatMap_3,1);
	   COPY(__AIdeMap_3,1);
	   {OBJ x429;OBJ x430;OBJ x431;OBJ x432;OBJ x433;OBJ x434;OBJ x435;
	    x429=_ANatMapReduce_3(x23,__ANatMap_3,x418);
	    x430=_ASeqReduce_3(x16,__AIdeMap_3,x421);
	    PRD(1,3,x431);FLD(x431,1)=x430;
	    PRD(1,3,x432);FLD(x432,1)=x429;
	    x433=_AAn_3(x422,x432);
	    x434=_AAn_7(x433,x431);
	    if(x_x416){
	     RSOME(x416,x435);FLD1(x435,1)=x434;FLD1(x435,5)=x427;
	    }else{
	     FRPRD(x416,1);PRD1(5,x435);FLD1(x435,1)=x434;FLD1(x435,2)=x423;FLD1(x435,3)=x424;FLD1(x435,4)=x425;FLD1(x435,5)=x427;}
	    if(x_x3){
	     RSOME(x3,r);
	    }else{
	     FRPRD(x3,1);PRD1(5,r);FLD1(r,1)=x368;FLD1(r,2)=x369;FLD1(r,3)=x370;FLD1(r,5)=x372;}
	    FLD1(r,4)=_ANatMap_4(x373,x435,x371);}
	  }else{
	   {OBJ x437=FLD1(x422,1);OBJ x439=FLD1(x422,3);
	    COPY(x437,1);COPY(x439,1);
	    {OBJ x446;OBJ x444;OBJ x447;OBJ x448;OBJ x449;OBJ x450;OBJ x451;OBJ x452;OBJ x453;
	     if(ISPRD(x439)&&(ISTGPRD(x439,3))){
	      {OBJ x445=FLD(x439,1);
	       COPY(x445,1);
	       x446=x445;
	       if(EXPRD(x439,1)){
		FREE(FLD(x439,1),1);DSPRDF(x439);
	       }else{
		DCPRD(x439,1);}}
	     }else{
	      FREE(x439,1);
	      COPY(__AIdeMap_3,1);
	      x446=__AIdeMap_3;}
	     if(ISPRD(x437)&&(ISTGPRD(x437,3))){
	      {OBJ x443=FLD(x437,1);
	       CPPRD(x443,1);
	       x444=x443;
	       if(EXPRD(x437,1)){
		FRPRD(FLD(x437,1),1);DSPRDF(x437);
	       }else{
		DCPRD(x437,1);}}
	     }else{
	      FREE(x437,1);
	      CPPRD(__ANatMap_3,1);
	      x444=__ANatMap_3;}
	     x447=_ANatMapReduce_3(x23,x444,x418);
	     x448=_ASeqReduce_3(x16,x446,x421);
	     PRD(1,3,x449);FLD(x449,1)=x448;
	     PRD(1,3,x450);FLD(x450,1)=x447;
	     x451=_AAn_3(x422,x450);
	     x452=_AAn_7(x451,x449);
	     if(x_x416){
	      RSOME(x416,x453);FLD1(x453,1)=x452;FLD1(x453,5)=x427;
	     }else{
	      FRPRD(x416,1);PRD1(5,x453);FLD1(x453,1)=x452;FLD1(x453,2)=x423;FLD1(x453,3)=x424;FLD1(x453,4)=x425;FLD1(x453,5)=x427;}
	     if(x_x3){
	      RSOME(x3,r);
	     }else{
	      FRPRD(x3,1);PRD1(5,r);FLD1(r,1)=x368;FLD1(r,2)=x369;FLD1(r,3)=x370;FLD1(r,5)=x372;}
	     FLD1(r,4)=_ANatMap_4(x373,x453,x371);}}}}}}}}}}}}
 return r;}

extern OBJ _AOptimPrepare_16(OBJ x1) /* decsOrNew */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,3))){
  {OBJ x5=FLD(x1,1);
   if(EXPRD(x1,1)){
    r=x5;
    DSPRDF(x1);
   }else{
    CPPRD(x5,1);
    r=x5;
    FRPRD(x1,1);}}
 }else{
  FREE(x1,1);
  CPPRD(__ANatMap_3,1);
  r=__ANatMap_3;}
 return r;}

extern OBJ _AOptimPrepare_17(OBJ x1) /* propsOrNew */
{OBJ r;
 if(ISPRD(x1)&&(ISTGPRD(x1,3))){
  {OBJ x5=FLD(x1,1);
   if(EXPRD(x1,1)){
    r=x5;
    DSPRDF(x1);
   }else{
    COPY(x5,1);
    r=x5;
    FRPRD(x1,1);}}
 }else{
  FREE(x1,1);
  COPY(__AIdeMap_3,1);
  r=__AIdeMap_3;}
 return r;}

extern OBJ _AOptimPrepare_18(OBJ x1,OBJ x2,OBJ x3) /* mergeDec */
{OBJ r;
 CPPRD(x2,1);
 {OBJ x4;OBJ x8;OBJ x9;OBJ x11;OBJ x17;
  x4=_AAc_21(x2);
  {OBJ x5=FLD(x4,1);
   if(EXPRD(x4,1)){
    x8=x5;
    DSPRD(x4);
   }else{
    x8=x5;
    FRPRD(x4,1);}
   CPPRD(x3,1);}
  x9=_ANatMap_15(x3,x8);
  if(ISPRM(x9)){
   x11=__ABUILTIN_3;
  }else{
   x11=__ABUILTIN_5;}
  if(ISTGPRM(x11,1)){
   {OBJ x13;
    if(ISPRM(x9)){
     HLT("Option at <unknown> : undefined selection cont\'Option:option->data");
    }else{
     {OBJ x12=FLD1(x9,1);
      if(EXPRD(x9,1)){
       x13=x12;
       DSPRDF(x9);
      }else{
       CPPRD(x12,1);
       x13=x12;
       FRPRD(x9,1);}}}
    if(ISTGPRD(x13,1)){
     if(EXPRD(x13,1)){
      DSPRD(x13);
     }else{
      DCPRD(x13,1);}
     x17=__ABUILTIN_5;
    }else{
     FRPRD(x13,1);
     x17=__ABUILTIN_3;}}
  }else{
   FREE(x9,1);
   x17=__ABUILTIN_5;}
  if(ISTGPRM(x17,1)){
   {OBJ x18;
    x18=_AOptimPrepare_22(x1,x2);
    r=_ANatMap_4(x8,x18,x3);}
  }else{
   FRPRD(x1,1);
   FRPRD(x2,1);
   r=x3;}}
 return r;}

extern OBJ _AOptimPrepare_19(OBJ x1,OBJ x2,OBJ x3) /* mergeProp */
{OBJ r;
 {OBJ x19=FLD1(x2,1);OBJ x20=FLD1(x2,2);
  if(EXPRD(x2,1)){
   DSPRDF(x2);
  }else{
   CPPRD(x19,1);COPY(x20,1);
   FRPRD(x2,1);}
  CPPRD(x1,1);
  COPY(x3,1);
  CPCLS(__AIde_14,1);
  {OBJ x21;OBJ x22;
   x21=_AOptimPrepare_28(x1,x19);
   CPPRD(x21,1);
   x22=_AMap_33(__AIde_14,x3,x21);
   if(ISPRM(x22)){
    CPCLS(__AOptimPrepare_29,1);
    CPCLS(__AIde_14,1);
    {OBJ x24;OBJ x25;
     x24=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_29,1))(__AOptimPrepare_29,x1);
     x25=_ASeqMap_3(x24,x20);
     r=_AMap_31(__AIde_14,x21,x25,x3);}
   }else{
    if(EXPRD(x22,1)){
     FREE(FLD1(x22,1),1);DSPRDF(x22);
    }else{
     DCPRD(x22,1);}
    FRPRD(x1,1);
    FREE(x20,1);
    FRPRD(x21,1);
    r=x3;}}}
 return r;}

extern OBJ _AOptimPrepare_20(OBJ x1,OBJ x2,OBJ x3) /* mergeTypeDec */
{OBJ r;
 CPPRD(x2,1);
 {OBJ x4;OBJ x8;OBJ x9;OBJ x11;OBJ x14;
  x4=_ATypeAn_6(x2);
  {OBJ x5=FLD(x4,1);
   if(EXPRD(x4,1)){
    x8=x5;
    DSPRD(x4);
   }else{
    x8=x5;
    FRPRD(x4,1);}
   CPPRD(x3,1);}
  x9=_ANatMap_15(x3,x8);
  if(ISPRM(x9)){
   x11=__ABUILTIN_3;
  }else{
   x11=__ABUILTIN_5;}
  if(ISTGPRM(x11,1)){
   {OBJ x13;
    if(ISPRM(x9)){
     HLT("Option at <unknown> : undefined selection cont\'Option:option->data");
    }else{
     {OBJ x12=FLD1(x9,1);
      if(EXPRD(x9,1)){
       x13=x12;
       DSPRDF(x9);
      }else{
       CPPRD(x12,1);
       x13=x12;
       FRPRD(x9,1);}}}
    x14=_AOptimPrepare_21(x13);}
  }else{
   FREE(x9,1);
   x14=__ABUILTIN_5;}
  if(ISTGPRM(x14,1)){
   {OBJ x15;
    x15=_AOptimPrepare_23(x1,x2);
    r=_ANatMap_4(x8,x15,x3);}
  }else{
   FRPRD(x1,1);
   FRPRD(x2,1);
   r=x3;}}
 return r;}

extern OBJ _AOptimPrepare_21(OBJ x1) /* actHidden? */
{OBJ r;
 switch(TGPRD(x1)){
  case 1:
   {OBJ x33=FLD(x1,2);
    if(EXPRD(x1,1)){
     FRPRD(FLD(x1,1),1);DSPRDF(x1);
    }else{
     COPY(x33,1);
     FRPRD(x1,1);}
    if(ISPRM(x33)){
     r=__ABUILTIN_5;
    }else{
     if(ISPRD(x33)&&(ISTGPRD(x33,7))){
      {OBJ x35=FLD(x33,2);
       if(EXPRD(x33,1)){
	FREE(FLD(x33,1),1);DSPRDF(x33);
       }else{
	COPY(x35,1);
	FRPRD(x33,1);}
       if(ISPRM(x35)){
	r=__ABUILTIN_5;
       }else{
	FREE(x35,1);
	r=__ABUILTIN_3;}}
     }else{
      FREE(x33,1);
      r=__ABUILTIN_3;}}}break;
  case 2:
   if(EXPRD(x1,1)){
    DSPRD(x1);
   }else{
    DCPRD(x1,1);}
   r=__ABUILTIN_3;break;
  default: 
   if(EXPRD(x1,1)){
    FRPRD(FLD(x1,1),1);DSPRDF(x1);
   }else{
    DCPRD(x1,1);}
   r=__ABUILTIN_5;}
 return r;}

extern OBJ _AOptimPrepare_22(OBJ x1,OBJ x2) /* remap */
{OBJ r;
 switch(TGPRD(x2)){
  case 1:
   CPPRD(x1,1);
   CPPRD(x2,2);
   {OBJ x111;OBJ x112;OBJ x113;OBJ x114;
    x111=_AAc_22(x2);
    x112=_AAc_21(x2);
    x113=_AAc_20(x2);
    x114=_AOptimPrepare_24(x1,x111);
    PRD(3,1,r);FLD(r,1)=x114;FLD(r,3)=x113;
    FLD(r,2)=_AOptimPrepare_28(x1,x112);}break;
  case 3:
   {OBJ x119=FLD(x2,4);
    CPPRD(x1,1);
    CPPRD(x2,2);
    {OBJ x120;OBJ x121;OBJ x122;OBJ x123;
     x120=_AAc_20(x2);
     x121=_AAc_21(x2);
     x122=_AAc_22(x2);
     x123=_AOptimPrepare_28(x1,x121);
     PRD(4,3,r);FLD(r,2)=x123;FLD(r,3)=x120;FLD(r,4)=x119;
     FLD(r,1)=_AOptimPrepare_24(x1,x122);}}break;
  case 0:
   CPPRD(x2,1);
   {OBJ x127;OBJ x128;
    x127=_AAc_22(x2);
    x128=_AAc_21(x2);
    PRD(2,0,r);FLD(r,2)=x128;
    FLD(r,1)=_AOptimPrepare_24(x1,x127);}break;
  default: 
   {OBJ x101=FLD(x2,4);
    CPPRD(x101,1);
    CPPRD(x1,2);
    CPPRD(x2,2);
    {OBJ x102;OBJ x103;OBJ x104;OBJ x105;OBJ x106;
     x102=_AAc_20(x2);
     x103=_AAc_21(x2);
     x104=_AAc_22(x2);
     x105=_AOptimPrepare_26(x1,x101);
     x106=_AOptimPrepare_28(x1,x103);
     PRD(4,2,r);FLD(r,2)=x106;FLD(r,3)=x102;FLD(r,4)=x105;
     FLD(r,1)=_AOptimPrepare_24(x1,x104);}}}
 return r;}

extern OBJ _AOptimPrepare_23(OBJ x1,OBJ x2) /* remap,1 */
{OBJ r;
 switch(TGPRD(x2)){
  case 1:
   {OBJ x55=FLD(x2,2);
    COPY(x55,1);
    CPPRD(x1,1);
    {OBJ x56;OBJ x57;
     x56=_ATypeAn_6(x2);
     x57=_AOptimPrepare_28(x1,x56);
     PRD(2,1,r);FLD(r,1)=x57;
     FLD(r,2)=_AOptimPrepare_25(x1,x55);}}break;
  case 2:
   {OBJ x60=FLD(x2,2);OBJ x61=FLD(x2,3);
    COPY(x61,1);
    {OBJ x62;
     x62=_ATypeAn_6(x2);
     PRD(3,2,r);FLD(r,2)=x60;FLD(r,3)=x61;
     FLD(r,1)=_AOptimPrepare_28(x1,x62);}}break;
  default: 
   {OBJ x52;
    x52=_ATypeAn_6(x2);
    PRD(1,0,r);
    FLD(r,1)=_AOptimPrepare_28(x1,x52);}}
 return r;}

extern OBJ _AOptimPrepare_24(OBJ x1,OBJ x2) /* remap,2 */
{OBJ r;
 {OBJ x8;
  if(ISPRM(x2)){
   x8=__ATypeAn_52;
  }else{
   {OBJ x3=FLD1(x2,1);
    COPY(x3,1);
    x8=x3;}}
  if(ISPRD(x8)&&(ISTGPRD(x8,1))){
   {OBJ x26=FLD(x8,1);FLAG x_x8=EXPRD(x8,1);
    if(x_x8){
    }else{
     COPY(x26,1);}
    {OBJ x27;OBJ x28;
     x27=_AOptimPrepare_25(x1,x26);
     if(x_x8){
      RPRD(x8,x28);FLD(x28,1)=x27;
     }else{
      FRPRD(x8,1);PRD(1,1,x28);FLD(x28,1)=x27;}
     r=_AAn_3(x2,x28);}}
  }else{
   if(ISPRD(x8)&&(ISTGPRD(x8,2))){
    {OBJ x29=FLD(x8,1);FLAG x_x8=EXPRD(x8,1);
     if(x_x8){
     }else{
      COPY(x29,1);}
     CPCLS(__AOptimPrepare_25,1);
     {OBJ x30;OBJ x31;OBJ x32;
      x30=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
      x31=_ASeqMap_3(x30,x29);
      if(x_x8){
       RPRD(x8,x32);FLD(x32,1)=x31;
      }else{
       FRPRD(x8,1);PRD(1,2,x32);FLD(x32,1)=x31;}
      r=_AAn_3(x2,x32);}}
   }else{
    FRPRD(x1,1);
    FREE(x8,1);
    r=x2;}}}
 return r;}

extern OBJ _AOptimPrepare_25(OBJ x1,OBJ x2) /* remap,3 */
{OBJ r;
 if(ISPRM(x2)){
  FRPRD(x1,1);
  r=x2;
 }else{
  switch(TGPRD(x2)){
   case 3:
    {OBJ x174=FLD(x2,1);OBJ x175=FLD(x2,2);
     if(EXPRD(x2,1)){
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x176;OBJ x177;
       x176=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       CPCLS(x176,1);
       x177=(*(OBJ(*)(OBJ,OBJ))METHOD(x176,1))(x176,x175);
       RPRD(x2,r);FLD(r,2)=x177;
       FLD(r,1)=_ASeqMap_3(x176,x174);}
     }else{
      COPY(x174,1);COPY(x175,1);
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x176;OBJ x177;
       x176=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       CPCLS(x176,1);
       x177=(*(OBJ(*)(OBJ,OBJ))METHOD(x176,1))(x176,x175);
       FRPRD(x2,1);PRD(2,3,r);FLD(r,2)=x177;
       FLD(r,1)=_ASeqMap_3(x176,x174);}}}break;
   case 2:
    {OBJ x179=FLD(x2,1);
     if(EXPRD(x2,1)){
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x180;
       x180=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       RPRD(x2,r);
       FLD(r,1)=_ASeqMap_3(x180,x179);}
     }else{
      COPY(x179,1);
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x180;
       x180=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       FRPRD(x2,1);PRD(1,2,r);
       FLD(r,1)=_ASeqMap_3(x180,x179);}}}break;
   case 4:
    {OBJ x182=FLD(x2,1);OBJ x183=FLD(x2,2);
     if(EXPRD(x2,1)){
      CPPRD(x1,1);
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x184;OBJ x185;
       x184=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       x185=_AOptimPrepare_28(x1,x182);
       RPRD(x2,r);FLD(r,1)=x185;
       FLD(r,2)=_ASeqMap_3(x184,x183);}
     }else{
      CPPRD(x182,1);COPY(x183,1);
      CPPRD(x1,1);
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x184;OBJ x185;
       x184=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       x185=_AOptimPrepare_28(x1,x182);
       FRPRD(x2,1);PRD(2,4,r);FLD(r,1)=x185;
       FLD(r,2)=_ASeqMap_3(x184,x183);}}}break;
   case 5:
    {OBJ x187=FLD(x2,1);
     if(EXPRD(x2,1)){
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x188;
       x188=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       RPRD(x2,r);
       FLD(r,1)=_ASeqMap_3(x188,x187);}
     }else{
      COPY(x187,1);
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x188;
       x188=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       FRPRD(x2,1);PRD(1,5,r);
       FLD(r,1)=_ASeqMap_3(x188,x187);}}}break;
   case 6:
    {OBJ x190=FLD(x2,1);OBJ x191=FLD(x2,2);
     if(EXPRD(x2,1)){
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x192;OBJ x193;OBJ x194;
       x192=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       CPCLS(x192,1);
       x193=_ASeqMap_3(x192,x191);
       x194=(*(OBJ(*)(OBJ,OBJ))METHOD(x192,1))(x192,x190);
       RPRD(x2,r);FLD(r,1)=x194;FLD(r,2)=x193;}
     }else{
      COPY(x190,1);COPY(x191,1);
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x192;OBJ x193;OBJ x194;
       x192=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       CPCLS(x192,1);
       x193=_ASeqMap_3(x192,x191);
       x194=(*(OBJ(*)(OBJ,OBJ))METHOD(x192,1))(x192,x190);
       FRPRD(x2,1);PRD(2,6,r);FLD(r,1)=x194;FLD(r,2)=x193;}}}break;
   case 7:
    {OBJ x195;OBJ x196=FLD(x2,2);
     if(EXPRD(x2,1)){
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x197;OBJ x198;
       x197=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       x198=(*(OBJ(*)(OBJ,OBJ))METHOD(x197,1))(x197,x196);
       RPRD(x2,r);FLD(r,2)=x198;}
     }else{
      x195=FLD(x2,1);COPY(x195,1);COPY(x196,1);
      CPCLS(__AOptimPrepare_25,1);
      {OBJ x197;OBJ x198;
       x197=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_25,1))(__AOptimPrepare_25,x1);
       x198=(*(OBJ(*)(OBJ,OBJ))METHOD(x197,1))(x197,x196);
       FRPRD(x2,1);PRD(2,7,r);FLD(r,1)=x195;FLD(r,2)=x198;}}}break;
   default: 
    {OBJ x172=FLD(x2,1);
     if(EXPRD(x2,1)){
      {
       RPRD(x2,r);
       FLD(r,1)=_AOptimPrepare_28(x1,x172);}
     }else{
      CPPRD(x172,1);
      {
       FRPRD(x2,1);PRD(1,1,r);
       FLD(r,1)=_AOptimPrepare_28(x1,x172);}}}}}
 return r;}

extern OBJ _AOptimPrepare_26(OBJ x1,OBJ x2) /* remap,4 */
{OBJ r;
 CPCLS(__AOptimPrepare_22,1);
 CPCLS(__AOptimPrepare_24,1);
 CPPRD(x1,2);
 {OBJ x3;OBJ x4;
  x3=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_22,1))(__AOptimPrepare_22,x1);
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_24,1))(__AOptimPrepare_24,x1);
  switch(TGPRD(x2)){
   case 2:
    {OBJ x295=FLD(x2,2);
     CPPRD(x295,1);
     FRCLS(x3,1);
     {OBJ x296;OBJ x297;
      x296=_AAc_50(x2);
      x297=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x296);
      PRD(2,2,r);FLD(r,1)=x297;
      FLD(r,2)=_AOptimPrepare_28(x1,x295);}}break;
   case 3:
    {OBJ x300=FLD(x2,2);OBJ x301=FLD(x2,3);
     CPPRD(x300,1);COPY(x301,1);
     FRCLS(x3,1);
     CPCLS(__AOptimPrepare_26,1);
     {OBJ x302;OBJ x303;OBJ x304;OBJ x305;
      x302=_AAc_50(x2);
      x303=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_26,1))(__AOptimPrepare_26,x1);
      CPCLS(x303,1);
      x304=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x302);
      x305=(*(OBJ(*)(OBJ,OBJ))METHOD(x303,1))(x303,x300);
      PRD(3,3,r);FLD(r,1)=x304;FLD(r,2)=x305;
      FLD(r,3)=_ASeqMap_3(x303,x301);}}break;
   case 4:
    {OBJ x308=FLD(x2,2);OBJ x309=FLD(x2,3);
     COPY(x308,1);CPPRD(x309,1);
     CPCLS(__AOptimPrepare_26,1);
     {OBJ x311;OBJ x310;OBJ x312;OBJ x313;OBJ x314;
      x311=_AAc_50(x2);
      x310=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_26,1))(__AOptimPrepare_26,x1);
      x312=(*(OBJ(*)(OBJ,OBJ))METHOD(x310,1))(x310,x309);
      x313=_ASeqMap_3(x3,x308);
      x314=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x311);
      PRD(3,4,r);FLD(r,1)=x314;FLD(r,2)=x313;FLD(r,3)=x312;}}break;
   case 5:
    {OBJ x316=FLD(x2,2);OBJ x317=FLD(x2,3);
     COPY(x316,1);CPPRD(x317,1);
     CPCLS(__AOptimPrepare_26,1);
     {OBJ x318;OBJ x319;OBJ x320;OBJ x321;
      x318=_AAc_50(x2);
      x319=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_26,1))(__AOptimPrepare_26,x1);
      x320=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x318);
      x321=(*(OBJ(*)(OBJ,OBJ))METHOD(x319,1))(x319,x317);
      PRD(3,5,r);FLD(r,1)=x320;FLD(r,3)=x321;
      FLD(r,2)=_ASeqMap_3(x3,x316);}}break;
   case 6:
    {OBJ x324=FLD(x2,2);OBJ x325=FLD(x2,3);OBJ x326=FLD(x2,4);
     CPPRD(x324,1);COPY(x325,1);CPPRD(x326,1);
     FRCLS(x3,1);
     CPPRD(x1,1);
     CPCLS(__AOptimPrepare_26,1);
     CPCLS(__AOptimPrepare_27,1);
     {OBJ x328;OBJ x329;OBJ x327;OBJ x330;OBJ x331;OBJ x332;OBJ x333;
      x328=_AAc_50(x2);
      x329=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_27,1))(__AOptimPrepare_27,x1);
      x327=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_26,1))(__AOptimPrepare_26,x1);
      CPCLS(x327,1);
      x330=(*(OBJ(*)(OBJ,OBJ))METHOD(x327,1))(x327,x326);
      x331=_ASeqMap_3(x329,x325);
      x332=(*(OBJ(*)(OBJ,OBJ))METHOD(x327,1))(x327,x324);
      x333=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x328);
      PRD(4,6,r);FLD(r,1)=x333;FLD(r,2)=x332;FLD(r,3)=x331;FLD(r,4)=x330;}}break;
   case 0:
    FRPRD(x1,1);
    FRCLS(x3,1);
    {OBJ x335;OBJ x336;
     x335=_AAc_50(x2);
     x336=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x335);
     PRD(1,0,r);FLD(r,1)=x336;}break;
   default: 
    {OBJ x291=FLD(x2,2);
     CPPRD(x291,1);
     FRPRD(x1,1);
     FRCLS(x3,1);
     {OBJ x292;OBJ x293;
      x292=_AAc_50(x2);
      x293=(*(OBJ(*)(OBJ,OBJ))METHOD(x4,1))(x4,x292);
      PRD(2,1,r);FLD(r,1)=x293;FLD(r,2)=x291;}}}}
 return r;}

extern OBJ _AOptimPrepare_27(OBJ x1,OBJ x2) /* remap,5 */
{OBJ r;
 CPCLS(__AOptimPrepare_22,1);
 CPPRD(x1,1);
 {OBJ x7;
  x7=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_22,1))(__AOptimPrepare_22,x1);
  {OBJ x19=FLD1(x2,1);OBJ x20=FLD1(x2,2);OBJ x21=FLD1(x2,3);
   if(EXPRD(x2,1)){
    CPPRD(x1,1);
    {OBJ x22;OBJ x23;
     x22=_AOptimPrepare_26(x1,x21);
     x23=_ASeqMap_3(x7,x20);
     RSOME(x2,r);FLD1(r,2)=x23;FLD1(r,3)=x22;
     FLD1(r,1)=_AOptimPrepare_28(x1,x19);}
   }else{
    CPPRD(x19,1);COPY(x20,1);CPPRD(x21,1);
    CPPRD(x1,1);
    {OBJ x22;OBJ x23;
     x22=_AOptimPrepare_26(x1,x21);
     x23=_ASeqMap_3(x7,x20);
     FRPRD(x2,1);PRD1(3,r);FLD1(r,2)=x23;FLD1(r,3)=x22;
     FLD1(r,1)=_AOptimPrepare_28(x1,x19);}}}}
 return r;}

extern OBJ _AOptimPrepare_28(OBJ x1,OBJ x2) /* remap,6 */
{OBJ r;
 if(ISTGPRD(x2,0)){
  {OBJ x22=FLD(x2,1);OBJ x23=FLD(x2,2);
   {OBJ x24;
    x24=_ANatMap_15(x1,x23);
    if(ISPRM(x24)){
     r=x2;
    }else{
     {OBJ x25=FLD1(x24,1);
      if(EXPRD(x24,1)){
       DSPRDF(x24);
      }else{
       FRPRD(x24,1);}
      if(EXPRD(x2,1)){
       DSPRDF(x2);
      }else{
       DCPRD(x2,1);}
      PRDF(2,0,r);FLD(r,1)=x22;FLD(r,2)=x25;}}}}
 }else{
  FRPRD(x1,1);
  r=x2;}
 return r;}

extern OBJ _AOptimPrepare_29(OBJ x1,OBJ x2) /* remap,7 */
{OBJ r;
 if(ISPRD(x2)&&(ISTGPRD(x2,0))){
  {OBJ x8=FLD(x2,1);
   if(EXPRD(x2,1)){
    {
     RPRD(x2,r);
     FLD(r,1)=_AOptimPrepare_28(x1,x8);}
   }else{
    CPPRD(x8,1);
    {
     FRPRD(x2,1);PRD(1,0,r);
     FLD(r,1)=_AOptimPrepare_28(x1,x8);}}}
 }else{
  FRPRD(x1,1);
  r=x2;}
 return r;}

extern OBJ _AOptimPrepare_30(OBJ x1) /* enrichBuiltin */
{OBJ r;
 CPCLS(__AOptimPrepare_37,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimPrepare_37,1))(__AOptimPrepare_37,__ABUILTIN_20);
  {OBJ x40=FLD1(x1,1);OBJ x41=FLD1(x1,2);OBJ x42=FLD1(x1,3);OBJ x43=FLD1(x1,4);OBJ x44=FLD1(x1,5);FLAG x_x1=EXPRD(x1,1);
   if(x_x1){
   }else{
    COPY(x40,1);CPPRD(x41,1);CPPRD(x43,1);CPPRD(x44,1);}
   {OBJ x47=FLD1(x2,3);
    {
     if(x_x1){
      RSOME(x1,r);
     }else{
      FRPRD(x1,1);PRD1(5,r);FLD1(r,1)=x40;FLD1(r,2)=x41;FLD1(r,3)=x42;FLD1(r,5)=x44;}
     FLD1(r,4)=_ANatMap_4(x47,x2,x43);}}}}
 return r;}

extern OBJ _AOptimPrepare_31(OBJ x1,OBJ x2,OBJ x3) /* approxComp'31 */
{OBJ r;
 if(ISTGPRD(x2,2)){
  {OBJ x7=FLD(x2,4);
   if(EXPRD(x2,1)){
    FLD(x2,4)=NIL;DSPRD(x2);
   }else{
    CPPRD(x7,1);
    FRPRD(x2,1);}
   {OBJ x8;
    x8=x7;
    r=_AOptimPrepare_6(x1,x8,x3);}}
 }else{
  HLT("Ac at <unknown> : undefined selection def\'Ac:dec->exp");}
 return r;}

extern OBJ _AOptimPrepare_32(OBJ x1,OBJ x2,OBJ x3) /* approxComp'32 */
{OBJ r;
 {OBJ x6=FLD1(x2,3);
  if(EXPRD(x2,1)){
   FLD1(x2,3)=NIL;DSPRD(x2);
  }else{
   CPPRD(x6,1);
   FRPRD(x2,1);}
  {OBJ x7;
   x7=x6;
   r=_AOptimPrepare_6(x1,x7,x3);}}
 return r;}

extern OBJ _AOptimPrepare_33(OBJ x1) /* norm'33 */
{OBJ r;
 r=x1;
 return r;}

extern OBJ _AOptimPrepare_35(OBJ x1,OBJ x2) /* extendUse'35 */
{OBJ r;
 ADenotation_21(x2,x1,r);
 return r;}

extern OBJ _AOptimPrepare_37(OBJ x1) /* enrichBuiltin'37 */
{OBJ r;
 CPCLS(__ABuiltin_21,1);
 r=(*(OBJ(*)(OBJ,OBJ))METHOD(__ABuiltin_21,1))(__ABuiltin_21,__ABUILTIN_20);
 return r;}

extern OBJ _AOptimPrepare_38(OBJ x1,OBJ x2) /* optimPrepare'38 */
{OBJ r;
 {OBJ x4=FLD1(x1,2);
  if(EXPRD(x1,1)){
   FLD1(x1,2)=NIL;DSPRD(x1);
  }else{
   CPPRD(x4,1);
   FRPRD(x1,1);}
  {OBJ x8;
   x8=x4;
   PRD1(2,r);FLD1(r,1)=x8;FLD1(r,2)=x2;}}
 return r;}

init_AOptimPrepare()
{
 static int visited=0; if(visited) return; visited=1;
 init_ASeqZip();
 init_ASeqSort();
 init_ASeqMap();
 init_ASeqReduce();
 init_AAc();
 init_ADenotation();
 init_APreparedOptions();
 init_ANatConv();
 init_AOcError();
 init_ACompose();
 init_APair();
 init_AComCompose();
 init_ACom();
 init_AComSeqReduce();
 init_ANat();
 init_ANatMapReduce();
 init_AVoid();
 init_AOcVerbose();
 init_ASeq();
 init_AIdeSet();
 init_AOption();
 init_AAcIO();
 init_AOcPos();
 init_ATypeAnFun();
 init_AString();
 init_ASourceAnFun();
 init_AOcOptions();
 init_ABuiltin();
 init_AChar();
 init_AAcFun();
 init_AStream();
 init_AReal();
 init_AFile();
 init_AArray();
 init_AInt();
 init_AMap();
 init_ANatMap();
 init_ASetByBST();
 init_AIde();
 init_ABSTree();
 init_AAn();
 init_ATree();
 init_ATypeAn();
 init_ABitset();
 init_ASourceAn();
 init_ASetByBSTFilter();
 init_AOptimAn();
 init_ASetByBSTConv();
 init_ATransAn();
 init_ABSTreeConv();
 init_APragmaAn();
 init_AOcBinStream();
 init_AStore();
 init_AMapReduce();
 init_AFormat();
 init_AMapConv();
 init_AFmt();
 init_ASet();
 init_AIdeMap();
 CLS(3,_AOptimPrepare_31,__AOptimPrepare_31);
 CLS(1,_AOptimPrepare_30,__AOptimPrepare_30);
 CLS(2,_AOptimPrepare_29,__AOptimPrepare_29);
 CLS(2,_AOptimPrepare_28,__AOptimPrepare_28);
 CLS(2,_AOptimPrepare_27,__AOptimPrepare_27);
 CLS(2,_AOptimPrepare_26,__AOptimPrepare_26);
 CLS(2,_AOptimPrepare_25,__AOptimPrepare_25);
 CLS(2,_AOptimPrepare_24,__AOptimPrepare_24);
 CLS(2,_AOptimPrepare_23,__AOptimPrepare_23);
 CLS(2,_AOptimPrepare_22,__AOptimPrepare_22);
 CLS(1,_AOptimPrepare_21,__AOptimPrepare_21);
 CLS(3,_AOptimPrepare_20,__AOptimPrepare_20);
 CLS(3,_AOptimPrepare_19,__AOptimPrepare_19);
 CLS(3,_AOptimPrepare_18,__AOptimPrepare_18);
 CLS(1,_AOptimPrepare_17,__AOptimPrepare_17);
 CLS(1,_AOptimPrepare_16,__AOptimPrepare_16);
 CLS(3,_AOptimPrepare_15,__AOptimPrepare_15);
 CLS(4,_AOptimPrepare_14_c,__AOptimPrepare_14);
 CLS(4,_AOptimPrepare_13_c,__AOptimPrepare_13);
 CLS(4,_AOptimPrepare_12,__AOptimPrepare_12);
 CLS(3,_AOptimPrepare_11,__AOptimPrepare_11);
 CLS(1,_AOptimPrepare_10,__AOptimPrepare_10);
 CLS(1,_AOptimPrepare_9_c,__AOptimPrepare_9);
 CLS(2,_AOptimPrepare_8,__AOptimPrepare_8);
 CLS(2,_AOptimPrepare_7_c,__AOptimPrepare_7);
 CLS(2,_AOptimPrepare_38,__AOptimPrepare_38);
 CLS(3,_AOptimPrepare_6,__AOptimPrepare_6);
 LCLS(1,_AOptimPrepare_37,__AOptimPrepare_37);
 CLS(4,_AOptimPrepare_5,__AOptimPrepare_5);
 DEN("conflicting versions of optimization export of %s",__AOptimPrepare_36);
 CLS(2,_AOptimPrepare_4,__AOptimPrepare_4);
 CLS(2,_AOptimPrepare_35,__AOptimPrepare_35);
 CLS(1,_AOptimPrepare_3,__AOptimPrepare_3);
 DEN(",",__AOptimPrepare_34);
 CLS(1,_AOptimPrepare_33,__AOptimPrepare_33);
 CLS(2,_AOptimPrepare_1,__AOptimPrepare_1);
 CLS(3,_AOptimPrepare_32,__AOptimPrepare_32);}

