

#include "BUILTIN.h"

#include "Denotation.h"
extern OBJ _AComCompose_5(OBJ,OBJ);extern OBJ __AComCompose_5;
extern OBJ _AComSeqReduce_4(OBJ,OBJ,OBJ);extern OBJ __AComSeqReduce_4;
extern OBJ _AAc_21(OBJ);extern OBJ __AAc_21;
extern OBJ _AAc_22(OBJ);extern OBJ __AAc_22;
extern OBJ _AAc_24(OBJ);extern OBJ __AAc_24;
extern OBJ __AOcVerbose_1;
extern OBJ __AOcVerbose_2;
extern OBJ __AOcVerbose_3;
extern OBJ _AOcVerbose_4(OBJ,OBJ,OBJ);extern OBJ __AOcVerbose_4;
extern OBJ _AOcVerbose_5(OBJ,OBJ,OBJ);extern OBJ __AOcVerbose_5;
extern OBJ _AOcVerbose_6(OBJ,OBJ,OBJ);extern OBJ __AOcVerbose_6;
extern OBJ _AOcVerbose_7(OBJ,OBJ,OBJ);extern OBJ __AOcVerbose_7;
extern OBJ _APreparedOptions_8(OBJ);extern OBJ __APreparedOptions_8;
extern OBJ _AFormatDebug_3(OBJ,OBJ,OBJ,OBJ);extern OBJ __AFormatDebug_3;
extern OBJ __AOcError_15;
extern OBJ _AOcError_21(OBJ,OBJ);extern OBJ __AOcError_21;
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;
extern OBJ _AAcDump_1(OBJ,OBJ);extern OBJ __AAcDump_1;
extern OBJ _ACom_47(OBJ,OBJ);extern OBJ __ACom_47;
extern OBJ _AAnFun_3(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);extern OBJ __AAnFun_3;

#include "Nat.h"
extern OBJ _ADumpToFile_3(OBJ,OBJ,OBJ,OBJ);extern OBJ __ADumpToFile_3;
extern OBJ _AEqnSys_12(OBJ,OBJ,OBJ);extern OBJ __AEqnSys_12;
extern OBJ __ASeq_6;
extern OBJ _AOptimPrepare_1(OBJ,OBJ);extern OBJ __AOptimPrepare_1;
extern OBJ _AOptimExport_1(OBJ,OBJ);extern OBJ __AOptimExport_1;
extern TUP2 _AOptimUnfold_1(OBJ,OBJ);extern OBJ __AOptimUnfold_1;
extern TUP3 _AOptimLift_1(OBJ,OBJ,OBJ);extern OBJ __AOptimLift_1;
extern OBJ _AOcOptions_14(OBJ,OBJ);extern OBJ __AOcOptions_14;
extern OBJ __AOcOptions_151;
extern TUP3 _AOptimCse_1(OBJ,OBJ,OBJ);extern OBJ __AOptimCse_1;

#include "Char.h"
extern TUP2 _AOptimPath_1(OBJ,OBJ,OBJ,OBJ,OBJ);extern OBJ __AOptimPath_1;
extern TUP2 _AOptimEval_1(OBJ,OBJ,OBJ);extern OBJ __AOptimEval_1;
extern OBJ _AOptimPragmaEval_1(OBJ,OBJ);extern OBJ __AOptimPragmaEval_1;

#include "Int.h"

#include "Array.h"
extern OBJ _AIde_18(OBJ);extern OBJ __AIde_18;
extern OBJ __ASourceAn_28;

#include "Bitset.h"

#include "Real.h"
extern OBJ _AFormat_10(OBJ,OBJ);extern OBJ __AFormat_10;
extern OBJ _AOptimize_1(OBJ,OBJ);OBJ __AOptimize_1; /* optimize */
extern OBJ _AOptimize_2(OBJ,OBJ);OBJ __AOptimize_2; /* prepare */
extern OBJ _AOptimize_3(OBJ,OBJ);OBJ __AOptimize_3; /* export */
extern OBJ _AOptimize_4(OBJ,OBJ);OBJ __AOptimize_4; /* unfold */
extern OBJ _AOptimize_5(OBJ,OBJ);OBJ __AOptimize_5; /* cseLiftEval */
extern OBJ _AOptimize_6(OBJ,OBJ,OBJ);OBJ __AOptimize_6; /* cseLiftEvalDec */
extern TUP2 _AOptimize_7(OBJ,OBJ,OBJ);OBJ __AOptimize_7; /* optimEvalDecs */
extern OBJ _AOptimize_8(OBJ);OBJ __AOptimize_8; /* decBanner */
OBJ __AOptimize_9; /* prepare'9 */
extern OBJ _AOptimize_10(OBJ,OBJ,OBJ);OBJ __AOptimize_10; /* prepare'10 */
OBJ __AOptimize_11; /* prepare'11 */
extern OBJ _AOptimize_12(OBJ,OBJ);OBJ __AOptimize_12; /* prepare'12 */
extern OBJ _AOptimize_13(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_13; /* prepare'13 */
extern OBJ _AOptimize_14(OBJ,OBJ,OBJ);OBJ __AOptimize_14; /* prepare'14 */
extern OBJ _AOptimize_15(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_15; /* prepare'15 */
OBJ __AOptimize_16; /* export'16 */
extern OBJ _AOptimize_17(OBJ,OBJ,OBJ);OBJ __AOptimize_17; /* export'17 */
OBJ __AOptimize_18; /* unfold'18 */
extern OBJ _AOptimize_19(OBJ,OBJ,OBJ);OBJ __AOptimize_19; /* unfold'19 */
OBJ __AOptimize_20; /* cseLiftEvalDec'20 */
OBJ __AOptimize_21; /* cseLiftEvalDec'21 */
extern OBJ _AOptimize_22(OBJ);OBJ __AOptimize_22; /* cseLiftEvalDec'22 */
extern OBJ _AOptimize_23(OBJ);OBJ __AOptimize_23; /* cseLiftEvalDec'23 */
OBJ __AOptimize_24; /* cseLiftEvalDec'24 */
extern OBJ _AOptimize_25(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_25; /* cseLiftEvalDec'25 */
extern OBJ _AOptimize_26(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_26; /* cseLiftEvalDec'26 */
extern OBJ _AOptimize_27(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_27; /* cseLiftEvalDec'27 */
extern OBJ _AOptimize_28(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_28; /* cseLiftEvalDec'28 */
extern OBJ _AOptimize_29(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_29; /* cseLiftEvalDec'29 */
extern OBJ _AOptimize_30(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_30; /* cseLiftEvalDec'30 */
OBJ __AOptimize_31; /* cseLiftEval'31 */
extern OBJ _AOptimize_32(OBJ,OBJ,OBJ);OBJ __AOptimize_32; /* cseLiftEval'32 */
OBJ __AOptimize_33; /* cseLiftEval'33 */
extern OBJ _AOptimize_34(OBJ,OBJ,OBJ);OBJ __AOptimize_34; /* cseLiftEval'34 */
extern OBJ _AOptimize_35(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_35; /* cseLiftEval'35 */
OBJ __AOptimize_36; /* optimize'36 */
extern OBJ _AOptimize_37(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_37; /* optimize'37 */
extern OBJ _AOptimize_38(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimize_38; /* optimize'38 */
extern OBJ _AOptimize_39(OBJ,OBJ,OBJ);OBJ __AOptimize_39; /* optimize'39 */
extern OBJ _AOptimize_40(OBJ);OBJ __AOptimize_40; /* optimize'40 */
extern OBJ _AOptimize_41(OBJ,OBJ,OBJ);OBJ __AOptimize_41; /* optimize'41 */

extern OBJ _AOptimize_1(OBJ x1,OBJ x2) /* optimize */
{OBJ r;
 {OBJ x3=FLD1(x1,1);
  CPPRD(x3,1);
  CPPRD(__AOptimize_36,1);
  CPCLS(__AOptimize_41,1);
  {OBJ x6;OBJ x7;OBJ x8;
   x6=x3;
   x7=_AOcVerbose_4(x6,__AOcVerbose_1,__AOptimize_36);
   x8=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimize_41,2))(__AOptimize_41,x1,x2);
   r=_AComCompose_5(x7,x8);}}
 return r;}

extern OBJ _AOptimize_2(OBJ x1,OBJ x2) /* prepare */
{OBJ r;
 {OBJ x3=FLD1(x1,1);
  CPPRD(x3,1);
  CPPRD(__AOptimize_9,1);
  CPCLS(__AOptimize_15,1);
  {OBJ x6;OBJ x7;OBJ x8;
   x6=x3;
   CPPRD(x6,1);
   x7=_AOcVerbose_4(x6,__AOcVerbose_2,__AOptimize_9);
   x8=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_15,3))(__AOptimize_15,x1,x2,x6);
   r=_AComCompose_5(x7,x8);}}
 return r;}

extern OBJ _AOptimize_3(OBJ x1,OBJ x2) /* export */
{OBJ r;
 {OBJ x3=FLD1(x1,1);
  CPPRD(x3,1);
  CPPRD(__AOptimize_16,1);
  CPCLS(__AOptimize_17,1);
  {OBJ x6;OBJ x7;OBJ x8;
   x6=x3;
   x7=_AOcVerbose_4(x6,__AOcVerbose_2,__AOptimize_16);
   x8=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimize_17,2))(__AOptimize_17,x1,x2);
   r=_AComCompose_5(x7,x8);}}
 return r;}

extern OBJ _AOptimize_4(OBJ x1,OBJ x2) /* unfold */
{OBJ r;
 CPPRD(x1,1);
 {OBJ x3;
  x3=_APreparedOptions_8(x1);
  if(ISTGPRM(x3,1)){
   {OBJ x4=FLD1(x1,1);
    CPPRD(x4,1);
    CPPRD(__AOptimize_18,1);
    CPCLS(__AOptimize_19,1);
    {OBJ x7;OBJ x8;OBJ x9;
     x7=x4;
     x8=_AOcVerbose_4(x7,__AOcVerbose_2,__AOptimize_18);
     x9=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimize_19,2))(__AOptimize_19,x1,x2);
     r=_AComCompose_5(x8,x9);}}
  }else{
   FRPRD(x1,1);
   CPPRD(x2,1);
   CPCLS(__AAc_24,1);
   CPPRD(__AOcError_15,1);
   CPCLS(__ACom_47,1);
   {OBJ x10;OBJ x11;OBJ x12;OBJ x13;OBJ x14;
    x10=_AAcFun_14(__AAc_24,x2);
    PRD1(2,x11);FLD1(x11,1)=x2;FLD1(x11,2)=x10;
    PRD1(2,x12);FLD1(x12,1)=x11;FLD1(x12,2)=__AOcError_15;
    PRD(1,0,x13);FLD(x13,1)=x12;
    x14=(*(OBJ(*)(OBJ,OBJ))METHOD(__ACom_47,1))(__ACom_47,x13);
    PRD(2,0,r);FLD(r,1)=x14;FLD(r,2)=__ASeq_6;}}}
 return r;}

extern OBJ _AOptimize_5(OBJ x1,OBJ x2) /* cseLiftEval */
{OBJ r;
 {OBJ x15=FLD1(x2,1);OBJ x16=FLD1(x2,2);
  if(EXPRD(x2,1)){
   DSPRDF(x2);
  }else{
   CPPRD(x15,1);COPY(x16,1);
   FRPRD(x2,1);}
  {OBJ x17=FLD1(x1,1);
   CPPRD(x17,1);
   CPPRD(__AOptimize_31,1);
   CPCLS(__AOptimize_35,1);
   {OBJ x20;OBJ x21;OBJ x22;
    x20=x17;
    CPPRD(x20,1);
    x21=_AOcVerbose_4(x20,__AOcVerbose_2,__AOptimize_31);
    x22=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_35,4))(__AOptimize_35,x1,x15,x16,x20);
    r=_AComCompose_5(x21,x22);}}}
 return r;}

extern OBJ _AOptimize_6(OBJ x1,OBJ x2,OBJ x3) /* cseLiftEvalDec */
{OBJ r;
 CPPRD(x2,1);
 {OBJ x14;
  x14=_AOptimize_8(x2);
  {OBJ x18=FLD1(x3,1);
   if(EXPRD(x3,1)){
    FRPRD(FLD1(x3,2),1);DSPRDF(x3);
   }else{
    CPPRD(x18,1);
    FRPRD(x3,1);}
   {OBJ x20=FLD1(x1,1);
    CPPRD(x20,1);
    CPPRD(__AOptimize_20,1);
    CPCLS(__AOptimize_30,1);
    {OBJ x23;OBJ x24;OBJ x25;OBJ x26;
     x23=x20;
     CPPRD(x23,2);
     x24=_AOcVerbose_5(x23,__AOcVerbose_3,x14);
     x25=_AOcOptions_14(__AOptimize_20,x23);
     x26=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_30,5))(__AOptimize_30,x1,x2,x18,x23,x25);
     r=_AComCompose_5(x24,x26);}}}}
 return r;}

extern TUP2 _AOptimize_7(OBJ x1,OBJ x2,OBJ x3) /* optimEvalDecs */
{TUP2 r;
 if(ISPRM(x3)){
  FRPRD(x1,1);
  CPPRD(__AOcError_15,1);
  r.c1=x2;r.c2=__AOcError_15;
 }else{
  {OBJ x30=FLD1(x3,1);OBJ x31=FLD1(x3,2);
   if(EXPRD(x3,1)){
    DSPRDF(x3);
   }else{
    CPPRD(x30,1);COPY(x31,1);
    FRPRD(x3,1);}
   CPPRD(x1,1);
   {TUP2 x34;TUP2 x37;OBJ x40;
    x34=_AOptimize_7(x1,x2,x31);
    CPPRD(x34.c1,1);
    x37=_AOptimEval_1(x1,x34.c1,x30);
    CPPRD(x37.c1,1);
    r.c2=_AOcError_21(x37.c2,x34.c2);
    x40=_AAc_21(x37.c1);
    r.c1=_AAcFun_11(x34.c1,x40,x37.c1);}}}
 return r;}
extern OBJ _AOptimize_7_c(OBJ x1,OBJ x2,OBJ x3) /* optimEvalDecs */
{OBJ r;
 {TUP2 t=_AOptimize_7(x1,x2,x3);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AOptimize_8(OBJ x1) /* decBanner */
{OBJ r;
 CPPRD(x1,1);
 {OBJ x2;OBJ x8;
  x2=_AAc_22(x1);
  if(ISPRM(x2)){
   x8=__ASourceAn_28;
  }else{
   {OBJ x4=FLD1(x2,2);
    if(EXPRD(x2,1)){
     x8=x4;
     FLD1(x2,2)=NIL;DSPRD(x2);
    }else{
     COPY(x4,1);
     x8=x4;
     FRPRD(x2,1);}}}
  if(ISPRD(x8)&&(ISTGPRD(x8,3))){
   {OBJ x14=FLD(x8,1);
    if(EXPRD(x8,1)){
     r=x14;
     DSPRDF(x8);
    }else{
     CPPRD(x14,1);
     r=x14;
     FRPRD(x8,1);}
    FRPRD(x1,1);}
  }else{
   FREE(x8,1);
   {OBJ x15;OBJ x16;
    x15=_AAc_21(x1);
    x16=_AIde_18(x15);
    r=_AFormat_10(x16,__ANat_59);}}}
 return r;}

extern OBJ _AOptimize_10(OBJ x1,OBJ x2,OBJ x3) /* prepare'10 */
{OBJ r;
 FRPRD(x3,1);
 {OBJ x4=FLD1(x2,1);
  if(EXPRD(x2,1)){
   FLD1(x2,1)=NIL;DSPRD(x2);
  }else{
   CPPRD(x4,1);
   FRPRD(x2,1);}
  {OBJ x7;
   x7=x4;
   r=_AAcDump_1(x1,x7);}}
 return r;}

extern OBJ _AOptimize_12(OBJ x1,OBJ x2) /* prepare'12 */
{OBJ r;
 {OBJ x19;OBJ x20;OBJ x21=FLD1(x2,3);FLAG x_x2=EXPRD(x2,1);
  if(x_x2){
  }else{
   x19=FLD1(x2,1);x20=FLD1(x2,2);CPPRD(x19,1);CPPRD(x20,1);CPPRD(x21,1);}
  CPCLS(__ACom_47,1);
  {OBJ x22;OBJ x23;OBJ x24;OBJ x25;
   x22=_AOcError_21(x21,x1);
   if(x_x2){
    RSOME(x2,x23);FLD1(x23,3)=x22;
   }else{
    FRPRD(x2,1);PRD1(3,x23);FLD1(x23,1)=x19;FLD1(x23,2)=x20;FLD1(x23,3)=x22;}
   PRD(1,0,x24);FLD(x24,1)=x23;
   x25=(*(OBJ(*)(OBJ,OBJ))METHOD(__ACom_47,1))(__ACom_47,x24);
   PRD(2,0,r);FLD(r,1)=x25;FLD(r,2)=__ASeq_6;}}
 return r;}

extern OBJ _AOptimize_13(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* prepare'13 */
{OBJ r;
 CPCLS(__AOptimize_10,1);
 CPPRD(__AOptimize_11,1);
 CPCLS(__AOptimize_12,1);
 CPPRD(x4,1);
 {OBJ x5;OBJ x6;OBJ x7;
  x5=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimize_10,2))(__AOptimize_10,x2,x4);
  x6=_ADumpToFile_3(x1,__AOptimize_11,x5,x4);
  x7=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimize_12,1))(__AOptimize_12,x3);
  r=_AComCompose_5(x6,x7);}
 return r;}

extern OBJ _AOptimize_14(OBJ x1,OBJ x2,OBJ x3) /* prepare'14 */
{OBJ r;
 {OBJ x12=FLD1(x3,1);OBJ x13=FLD1(x3,2);
  if(EXPRD(x3,1)){
   DSPRDF(x3);
  }else{
   CPPRD(x12,1);CPPRD(x13,1);
   FRPRD(x3,1);}
  CPPRD(x1,1);
  CPCLS(__AOptimize_13,1);
  {OBJ x14;OBJ x15;
   x14=_AOptimPragmaEval_1(x1,x12);
   x15=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_13,3))(__AOptimize_13,x1,x2,x13);
   r=_AComCompose_5(x14,x15);}}
 return r;}

extern OBJ _AOptimize_15(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* prepare'15 */
{OBJ r;
 CPCLS(__AOptimize_14,1);
 CPPRD(x1,1);
 {OBJ x5;OBJ x6;
  x5=_AOptimPrepare_1(x1,x2);
  x6=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimize_14,2))(__AOptimize_14,x1,x3);
  r=_AComCompose_5(x5,x6);}
 return r;}

extern OBJ _AOptimize_17(OBJ x1,OBJ x2,OBJ x3) /* export'17 */
{OBJ r;
 r=_AOptimExport_1(x1,x2);
 return r;}

extern OBJ _AOptimize_19(OBJ x1,OBJ x2,OBJ x3) /* unfold'19 */
{OBJ r;
 CPPRD(__AOcError_15,1);
 CPCLS(__ACom_47,1);
 {TUP2 x5;OBJ x7;OBJ x8;OBJ x9;OBJ x10;
  x5=_AOptimUnfold_1(x1,x2);
  PRD1(2,x7);FLD1(x7,1)=x5.c1;FLD1(x7,2)=x5.c2;
  PRD1(2,x8);FLD1(x8,1)=x7;FLD1(x8,2)=__AOcError_15;
  PRD(1,0,x9);FLD(x9,1)=x8;
  x10=(*(OBJ(*)(OBJ,OBJ))METHOD(__ACom_47,1))(__ACom_47,x9);
  PRD(2,0,r);FLD(r,1)=x10;FLD(r,2)=__ASeq_6;}
 return r;}

extern OBJ _AOptimize_22(OBJ x1) /* cseLiftEvalDec'22 */
{OBJ r;
 CPCLS(__AAnFun_3,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__AAnFun_3,5))(__AAnFun_3,__ABUILTIN_3,__ABUILTIN_3,__ABUILTIN_3,__ABUILTIN_3,__ABUILTIN_3);
 return r;}

extern OBJ _AOptimize_23(OBJ x1) /* cseLiftEvalDec'23 */
{OBJ r;
 CPCLS(__AOptimize_22,1);
 CPCLS(__AIde_18,1);
 CPCLS(__AEqnSys_12,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimize_22,1))(__AOptimize_22,__ABUILTIN_20);
  r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AEqnSys_12,2))(__AEqnSys_12,__AIde_18,x2);}
 return r;}

extern OBJ _AOptimize_25(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* cseLiftEvalDec'25 */
{OBJ r;
 CPCLS(__ACom_47,1);
 {OBJ x7;OBJ x8;OBJ x9;OBJ x10;OBJ x11;OBJ x12;
  x7=_AOcError_21(x3,x5);
  x8=_AOcError_21(x2,x7);
  x9=_AOcError_21(x1,x8);
  PRD1(2,x10);FLD1(x10,1)=x4;FLD1(x10,2)=x9;
  PRD(1,0,x11);FLD(x11,1)=x10;
  x12=(*(OBJ(*)(OBJ,OBJ))METHOD(__ACom_47,1))(__ACom_47,x11);
  PRD(2,0,r);FLD(r,1)=x12;FLD(r,2)=__ASeq_6;}
 return r;}

extern OBJ _AOptimize_26(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6,OBJ x7,OBJ x8) /* cseLiftEvalDec'26 */
{OBJ r;
 CPCLS(__AOptimize_25,1);
 CPPRD(__AOcOptions_151,1);
 {OBJ x9;TUP2 x11;OBJ x13;
  x9=_AOcVerbose_7(x2,__AOcVerbose_3,__AOcOptions_151);
  x11=_AOptimize_7(x1,x5,x7);
  x13=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_25,5))(__AOptimize_25,x3,x4,x6,x11.c1,x11.c2);
  r=_AComCompose_5(x9,x13);}
 return r;}

extern OBJ _AOptimize_27(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6,OBJ x7,OBJ x8) /* cseLiftEvalDec'27 */
{OBJ r;
 CPCLS(__AOptimize_26,1);
 CPPRD(x1,1);
 CPPRD(x6,1);
 {OBJ x9;TUP3 x11;OBJ x14;OBJ x15;OBJ x16;
  x9=_AAc_21(x6);
  x11=_AOptimLift_1(x1,x2,x6);
  CPPRD(x11.c1,1);
  x14=_AAcFun_10(x11.c1,x9);
  PRD1(2,x15);FLD1(x15,1)=x14;FLD1(x15,2)=x11.c2;
  x16=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_26,7))(__AOptimize_26,x1,x3,x4,x7,x11.c1,x11.c3,x15);
  r=_AComCompose_5(x5,x16);}
 return r;}

extern OBJ _AOptimize_28(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6,OBJ x7,OBJ x8,OBJ x9) /* cseLiftEvalDec'28 */
{OBJ r;
 CPCLS(__AOptimize_27,1);
 CPPRD(x1,1);
 CPPRD(x3,1);
 CPPRD(x8,1);
 {TUP2 x11;OBJ x13;
  x11=_AOptimPath_1(x1,x3,x2,x7,x5);
  x13=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_27,7))(__AOptimize_27,x1,x3,x4,x6,x8,x11.c1,x11.c2);
  r=_AComCompose_5(x8,x13);}
 return r;}

extern OBJ _AOptimize_29(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* cseLiftEvalDec'29 */
{OBJ r;
 CPCLS(__AOptimize_23,1);
 CPPRD(__AOptimize_24,1);
 CPCLS(__AOptimize_28,1);
 CPPRD(x1,1);
 CPPRD(x2,1);
 CPPRD(x3,1);
 CPPRD(x4,1);
 {OBJ x9;OBJ x10;TUP3 x11;OBJ x14;OBJ x15;
  x9=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimize_23,1))(__AOptimize_23,__ABUILTIN_20);
  x10=_AOcVerbose_6(x4,__AOcVerbose_3,__AOptimize_24);
  CPPRD(x10,1);
  x11=_AOptimCse_1(x1,x3,x2);
  CPPRD(x11.c1,1);
  x14=_AFormatDebug_3(x5,x9,x11.c1,x11.c1);
  x15=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_28,8))(__AOptimize_28,x1,x2,x3,x4,x11.c2,x11.c3,x14,x10);
  r=_AComCompose_5(x10,x15);}
 return r;}

extern OBJ _AOptimize_30(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* cseLiftEvalDec'30 */
{OBJ r;
 CPPRD(__AOptimize_21,1);
 CPCLS(__AOptimize_29,1);
 CPPRD(x4,1);
 {OBJ x7;OBJ x8;
  x7=_AOcVerbose_6(x4,__AOcVerbose_3,__AOptimize_21);
  x8=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_29,5))(__AOptimize_29,x1,x2,x3,x4,x5);
  r=_AComCompose_5(x7,x8);}
 return r;}

extern OBJ _AOptimize_32(OBJ x1,OBJ x2,OBJ x3) /* cseLiftEval'32 */
{OBJ r;
 FRPRD(x3,1);
 {OBJ x4=FLD1(x2,1);
  if(EXPRD(x2,1)){
   FRPRD(FLD1(x2,2),1);DSPRDF(x2);
  }else{
   CPPRD(x4,1);
   FRPRD(x2,1);}
  {OBJ x6;
   x6=x4;
   r=_AAcDump_1(x1,x6);}}
 return r;}

extern OBJ _AOptimize_34(OBJ x1,OBJ x2,OBJ x3) /* cseLiftEval'34 */
{OBJ r;
 CPCLS(__AOptimize_32,1);
 CPPRD(__AOptimize_33,1);
 CPPRD(x3,1);
 {OBJ x4;
  x4=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimize_32,2))(__AOptimize_32,x2,x3);
  r=_ADumpToFile_3(x1,__AOptimize_33,x4,x3);}
 return r;}

extern OBJ _AOptimize_35(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* cseLiftEval'35 */
{OBJ r;
 CPCLS(__AOptimize_6,1);
 CPCLS(__AOptimize_34,1);
 CPPRD(__AOcError_15,1);
 CPPRD(x1,1);
 {OBJ x6;OBJ x7;OBJ x8;OBJ x9;
  x6=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimize_6,1))(__AOptimize_6,x1);
  PRD1(2,x7);FLD1(x7,1)=x2;FLD1(x7,2)=__AOcError_15;
  x8=_AComSeqReduce_4(x6,x7,x3);
  x9=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimize_34,2))(__AOptimize_34,x1,x4);
  r=_AComCompose_5(x8,x9);}
 return r;}

extern OBJ _AOptimize_37(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* optimize'37 */
{OBJ r;
 {OBJ x17;OBJ x18=FLD1(x4,2);FLAG x_x4=EXPRD(x4,1);
  if(x_x4){
  }else{
   x17=FLD1(x4,1);CPPRD(x17,1);CPPRD(x18,1);}
  CPCLS(__ACom_47,1);
  {OBJ x19;OBJ x20;OBJ x21;OBJ x22;OBJ x23;OBJ x24;
   x19=_AOcError_21(x3,x18);
   x20=_AOcError_21(x2,x19);
   x21=_AOcError_21(x1,x20);
   if(x_x4){
    RSOME(x4,x22);FLD1(x22,2)=x21;
   }else{
    FRPRD(x4,1);PRD1(2,x22);FLD1(x22,1)=x17;FLD1(x22,2)=x21;}
   PRD(1,0,x23);FLD(x23,1)=x22;
   x24=(*(OBJ(*)(OBJ,OBJ))METHOD(__ACom_47,1))(__ACom_47,x23);
   PRD(2,0,r);FLD(r,1)=x24;FLD(r,2)=__ASeq_6;}}
 return r;}

extern OBJ _AOptimize_38(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* optimize'38 */
{OBJ r;
 {OBJ x13=FLD1(x4,1);OBJ x14=FLD1(x4,2);
  if(EXPRD(x4,1)){
   DSPRDF(x4);
  }else{
   CPPRD(x13,1);CPPRD(x14,1);
   FRPRD(x4,1);}
  CPCLS(__AOptimize_37,1);
  {OBJ x15;OBJ x16;
   x15=_AOptimize_3(x1,x13);
   x16=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_37,3))(__AOptimize_37,x2,x3,x14);
   r=_AComCompose_5(x15,x16);}}
 return r;}

extern OBJ _AOptimize_39(OBJ x1,OBJ x2,OBJ x3) /* optimize'39 */
{OBJ r;
 {OBJ x12=FLD1(x3,1);OBJ x13=FLD1(x3,2);
  if(EXPRD(x3,1)){
   DSPRDF(x3);
  }else{
   CPPRD(x12,1);CPPRD(x13,1);
   FRPRD(x3,1);}
  CPPRD(x1,1);
  CPCLS(__AOptimize_38,1);
  {OBJ x14;OBJ x15;
   x14=_AOptimize_5(x1,x12);
   x15=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimize_38,3))(__AOptimize_38,x1,x2,x13);
   r=_AComCompose_5(x14,x15);}}
 return r;}

extern OBJ _AOptimize_40(OBJ x1) /* optimize'40 */
{OBJ r;
 {OBJ x16=FLD1(x1,1);OBJ x17=FLD1(x1,2);OBJ x18=FLD1(x1,3);
  if(EXPRD(x1,1)){
   CPPRD(x17,1);
   DSPRDF(x1);
  }else{
   CPPRD(x16,1);CPPRD(x17,2);CPPRD(x18,1);
   FRPRD(x1,1);}
  CPCLS(__AOptimize_39,1);
  {OBJ x19;OBJ x20;
   x19=_AOptimize_4(x17,x16);
   x20=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimize_39,2))(__AOptimize_39,x17,x18);
   r=_AComCompose_5(x19,x20);}}
 return r;}

extern OBJ _AOptimize_41(OBJ x1,OBJ x2,OBJ x3) /* optimize'41 */
{OBJ r;
 CPCLS(__AOptimize_40,1);
 {OBJ x4;
  x4=_AOptimize_2(x1,x2);
  r=_AComCompose_5(x4,__AOptimize_40);}
 return r;}

static OBJ _mt_8_0_7(OBJ t,OBJ t1,OBJ t2,OBJ t3,OBJ t4,OBJ t5,OBJ t6,OBJ t7) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,7);
 FLDCLS(r,1)=t1;
 FLDCLS(r,2)=t2;
 FLDCLS(r,3)=t3;
 FLDCLS(r,4)=t4;
 FLDCLS(r,5)=t5;
 FLDCLS(r,6)=t6;
 FLDCLS(r,7)=t7;
 return r;}

static OBJ _mt_8_7_1(OBJ t,OBJ t1) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  COPY(FLDCLS(t,2),1);
  COPY(FLDCLS(t,3),1);
  COPY(FLDCLS(t,4),1);
  COPY(FLDCLS(t,5),1);
  COPY(FLDCLS(t,6),1);
  COPY(FLDCLS(t,7),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),FLDCLS(t,4),FLDCLS(t,5),FLDCLS(t,6),FLDCLS(t,7),t1);
 return r;}
static OBJ _mt_8_7_1_l(OBJ t,OBJ t1) 
{OBJ r;
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),FLDCLS(t,4),FLDCLS(t,5),FLDCLS(t,6),FLDCLS(t,7),t1);
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  DCCLS(t,1);
  FLDCLS(t,1)=NIL;FLDCLS(t,2)=NIL;FLDCLS(t,3)=NIL;FLDCLS(t,4)=NIL;FLDCLS(t,5)=NIL;FLDCLS(t,6)=NIL;FLDCLS(t,7)=NIL;
  COPY(r,1);LZYCLS(t,r);}
 return r;}

static OBJ _mt_9_0_8(OBJ t,OBJ t1,OBJ t2,OBJ t3,OBJ t4,OBJ t5,OBJ t6,OBJ t7,OBJ t8) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,8);
 FLDCLS(r,1)=t1;
 FLDCLS(r,2)=t2;
 FLDCLS(r,3)=t3;
 FLDCLS(r,4)=t4;
 FLDCLS(r,5)=t5;
 FLDCLS(r,6)=t6;
 FLDCLS(r,7)=t7;
 FLDCLS(r,8)=t8;
 return r;}

static OBJ _mt_9_0_9(OBJ t,OBJ t1,OBJ t2,OBJ t3,OBJ t4,OBJ t5,OBJ t6,OBJ t7,OBJ t8,OBJ t9) 
{OBJ r;
 DCCLS(t,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(t1,t2,t3,t4,t5,t6,t7,t8,t9);
 return r;}

static OBJ _mt_9_8_1(OBJ t,OBJ t1) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  COPY(FLDCLS(t,2),1);
  COPY(FLDCLS(t,3),1);
  COPY(FLDCLS(t,4),1);
  COPY(FLDCLS(t,5),1);
  COPY(FLDCLS(t,6),1);
  COPY(FLDCLS(t,7),1);
  COPY(FLDCLS(t,8),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),FLDCLS(t,4),FLDCLS(t,5),FLDCLS(t,6),FLDCLS(t,7),FLDCLS(t,8),t1);
 return r;}
static OBJ _mt_9_8_1_l(OBJ t,OBJ t1) 
{OBJ r;
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),FLDCLS(t,4),FLDCLS(t,5),FLDCLS(t,6),FLDCLS(t,7),FLDCLS(t,8),t1);
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  DCCLS(t,1);
  FLDCLS(t,1)=NIL;FLDCLS(t,2)=NIL;FLDCLS(t,3)=NIL;FLDCLS(t,4)=NIL;FLDCLS(t,5)=NIL;FLDCLS(t,6)=NIL;FLDCLS(t,7)=NIL;FLDCLS(t,8)=NIL;
  COPY(r,1);LZYCLS(t,r);}
 return r;}

init_AOptimize()
{
 static int visited=0; if(visited) return; visited=1;
 init_AIdeBag();
 init_ADenotation();
 init_ABag();
 init_AComCompose();
 init_AComSeqReduce();
 init_ATriple();
 init_AAc();
 init_AOcVerbose();
 init_APreparedOptions();
 init_AFormatDebug();
 init_AOcError();
 init_AAcFun();
 init_APair();
 init_AAcDump();
 init_ACom();
 init_AAnFun();
 init_ANat();
 init_ADumpToFile();
 init_AVoid();
 init_AEqnSys();
 init_ASeq();
 init_AOptimPrepare();
 init_AOption();
 init_AOptimExport();
 init_AOcPos();
 init_AOptimUnfold();
 init_AString();
 init_AOptimLift();
 init_AOcOptions();
 init_AOptimCse();
 init_AChar();
 init_AOptimPath();
 init_AStream();
 init_AOptimEval();
 init_AFile();
 init_AOptimPragmaEval();
 init_AInt();
 init_AIdeSet();
 init_ANatMap();
 init_AArray();
 init_AIde();
 init_AMap();
 init_AAn();
 init_ASetByBST();
 init_ATypeAn();
 init_ABSTree();
 init_ASourceAn();
 init_ATree();
 init_AOptimAn();
 init_ABitset();
 init_ATransAn();
 init_AReal();
 init_APragmaAn();
 init_ASeqMap();
 init_AStore();
 init_AMapReduce();
 init_AFormat();
 init_ASeqReduce();
 init_AFmt();
 init_ATypeAnFun();
 init_ASet();
 init_AIdeOrd();
 init_AIdeMap();
 DEN("transformation ...",__AOptimize_31);
 CLS(6,_AOptimize_30,__AOptimize_30);
 CLS(6,_AOptimize_29,__AOptimize_29);
 CLS(9,_AOptimize_28,__AOptimize_28);
 CLS(8,_AOptimize_27,__AOptimize_27);
 CLS(8,_AOptimize_26,__AOptimize_26);
 CLS(6,_AOptimize_25,__AOptimize_25);
 DEN(".",__AOptimize_24);
 LCLS(1,_AOptimize_23,__AOptimize_23);
 LCLS(1,_AOptimize_22,__AOptimize_22);
 DEN(" .",__AOptimize_21);
 DEN("dumpEqnSys",__AOptimize_20);
 CLS(3,_AOptimize_19,__AOptimize_19);
 DEN("global unfold analysis ...",__AOptimize_18);
 CLS(3,_AOptimize_17,__AOptimize_17);
 DEN("export generation ...",__AOptimize_16);
 CLS(4,_AOptimize_15,__AOptimize_15);
 CLS(3,_AOptimize_14,__AOptimize_14);
 CLS(4,_AOptimize_13,__AOptimize_13);
 CLS(2,_AOptimize_12,__AOptimize_12);
 DEN("OptimPrepare",__AOptimize_11);
 CLS(3,_AOptimize_10,__AOptimize_10);
 CLS(3,_AOptimize_41,__AOptimize_41);
 DEN("import analysis ...",__AOptimize_9);
 CLS(1,_AOptimize_40,__AOptimize_40);
 CLS(1,_AOptimize_8,__AOptimize_8);
 CLS(3,_AOptimize_39,__AOptimize_39);
 CLS(3,_AOptimize_7_c,__AOptimize_7);
 CLS(4,_AOptimize_38,__AOptimize_38);
 CLS(3,_AOptimize_6,__AOptimize_6);
 CLS(4,_AOptimize_37,__AOptimize_37);
 CLS(2,_AOptimize_5,__AOptimize_5);
 DEN("transforming applicative code ...",__AOptimize_36);
 CLS(2,_AOptimize_4,__AOptimize_4);
 CLS(5,_AOptimize_35,__AOptimize_35);
 CLS(2,_AOptimize_3,__AOptimize_3);
 CLS(3,_AOptimize_34,__AOptimize_34);
 CLS(2,_AOptimize_2,__AOptimize_2);
 DEN("OptimEval",__AOptimize_33);
 CLS(2,_AOptimize_1,__AOptimize_1);
 CLS(3,_AOptimize_32,__AOptimize_32);
 MTH(8,0,7,_mt_8_0_7);LZYMTH(8,0,7,_mt_8_0_7);
 MTH(8,7,1,_mt_8_7_1);LZYMTH(8,7,1,_mt_8_7_1_l);
 MTH(9,0,8,_mt_9_0_8);LZYMTH(9,0,8,_mt_9_0_8);
 MTH(9,0,9,_mt_9_0_9);LZYMTH(9,0,9,_mt_9_0_9);
 MTH(9,8,1,_mt_9_8_1);LZYMTH(9,8,1,_mt_9_8_1_l);}

