

#include "BUILTIN.h"

#include "Denotation.h"

#include "NatConv.h"
extern OBJ _ASeqMap_3(OBJ,OBJ);extern OBJ __ASeqMap_3;
extern OBJ __AAc_10;
extern OBJ __AAc_12;
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;
extern OBJ _ASeqReduce_3(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_3;
extern OBJ __ASeq_6;
extern OBJ _ASeq_26(OBJ,OBJ);extern OBJ __ASeq_26;
extern TUP2 _ASeq_33(OBJ,OBJ);extern OBJ __ASeq_33;
extern OBJ _ASeq_40(OBJ,OBJ);extern OBJ __ASeq_40;
extern OBJ _ASeq_52(OBJ,OBJ);extern OBJ __ASeq_52;
extern TUP2 _ASeqMapEnv_4(OBJ,OBJ,OBJ);extern OBJ __ASeqMapEnv_4;
extern OBJ _APreparedOptions_11(OBJ);extern OBJ __APreparedOptions_11;
extern OBJ _APreparedOptions_12(OBJ);extern OBJ __APreparedOptions_12;
extern OBJ _APreparedOptions_13(OBJ);extern OBJ __APreparedOptions_13;
extern OBJ __AIdeSet_2;
extern OBJ __AOcError_15;
extern OBJ _ATypeAnFun_1(OBJ,OBJ);extern OBJ __ATypeAnFun_1;
extern OBJ _ATypeAnFun_4(OBJ);extern OBJ __ATypeAnFun_4;
extern OBJ _ATypeAnFun_5(OBJ,OBJ,OBJ);extern OBJ __ATypeAnFun_5;
extern OBJ _ATypeAnFun_8(OBJ,OBJ);extern OBJ __ATypeAnFun_8;
extern OBJ _AOptimAnFun_1(OBJ,OBJ);extern OBJ __AOptimAnFun_1;
extern OBJ _AAcFun_1(OBJ,OBJ);extern OBJ __AAcFun_1;
extern OBJ _AAcFun_2(OBJ);extern OBJ __AAcFun_2;
extern OBJ _AAcFun_6(OBJ);extern OBJ __AAcFun_6;
extern OBJ _AAcFun_7(OBJ);extern OBJ __AAcFun_7;
extern OBJ _AAcFun_10(OBJ,OBJ);extern OBJ __AAcFun_10;
extern OBJ _AAcFun_11(OBJ,OBJ,OBJ);extern OBJ __AAcFun_11;
extern OBJ _AAcFun_13(OBJ);extern OBJ __AAcFun_13;
extern OBJ _AAcFun_14(OBJ,OBJ);extern OBJ __AAcFun_14;
extern OBJ _AAcFun_15(OBJ,OBJ);extern OBJ __AAcFun_15;
extern OBJ _ASourceAnFun_1(OBJ,OBJ);extern OBJ __ASourceAnFun_1;
extern OBJ __ABuiltin_16;
extern OBJ _ABuiltin_17(OBJ);extern OBJ __ABuiltin_17;
extern OBJ _ABuiltin_18(OBJ);extern OBJ __ABuiltin_18;
extern OBJ _ABuiltin_19(OBJ);extern OBJ __ABuiltin_19;

#include "Nat.h"

#include "Real.h"

#include "Array.h"
extern OBJ __AOption_5;
extern OBJ _AMap_10(OBJ,OBJ,OBJ,OBJ);extern OBJ __AMap_10;
extern OBJ _AMap_16(OBJ,OBJ,OBJ);extern OBJ __AMap_16;
extern OBJ _AMap_20(OBJ,OBJ,OBJ);extern OBJ __AMap_20;
extern OBJ _AMap_31(OBJ,OBJ,OBJ,OBJ);extern OBJ __AMap_31;
extern OBJ _AMap_33(OBJ,OBJ,OBJ);extern OBJ __AMap_33;

#include "Char.h"
extern OBJ _ASetByBST_41(OBJ,OBJ,OBJ);extern OBJ __ASetByBST_41;
extern OBJ _ASetByBST_43(OBJ,OBJ,OBJ);extern OBJ __ASetByBST_43;
extern OBJ _ABSTree_57(OBJ,OBJ,OBJ);extern OBJ __ABSTree_57;

#include "Int.h"

#include "Bitset.h"
extern OBJ _AIde_13(OBJ,OBJ);extern OBJ __AIde_13;
extern OBJ _AIde_14(OBJ,OBJ);extern OBJ __AIde_14;
extern OBJ _ASetByBSTConv_7(OBJ,OBJ);extern OBJ __ASetByBSTConv_7;
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 _ABSTreeConv_7(OBJ,OBJ);extern OBJ __ABSTreeConv_7;
extern OBJ __ATypeAn_40;
extern OBJ __ATypeAn_52;
extern OBJ __ASourceAn_28;
extern OBJ _AOptimAn_6(OBJ);extern OBJ __AOptimAn_6;
extern OBJ __AIdeMap_3;
extern TUP3 _AOptimLift_1(OBJ,OBJ,OBJ);OBJ __AOptimLift_1; /* optimLift */
OBJ __AOptimLift_3; /* strict */
extern OBJ _AOptimLift_4(OBJ);OBJ __AOptimLift_4; /* strict? */
OBJ __AOptimLift_5; /* lazy */
extern OBJ _AOptimLift_6(OBJ);OBJ __AOptimLift_6; /* lazy? */
OBJ __AOptimLift_7; /* none */
extern OBJ _AOptimLift_8(OBJ);OBJ __AOptimLift_8; /* none? */
extern OBJ _AOptimLift_10(OBJ,OBJ,OBJ);OBJ __AOptimLift_10; /* thr */
extern OBJ _AOptimLift_11(OBJ);OBJ __AOptimLift_11; /* thr? */
extern OBJ _AOptimLift_12(OBJ);OBJ __AOptimLift_12; /* free */
extern OBJ _AOptimLift_13(OBJ);OBJ __AOptimLift_13; /* new */
extern OBJ _AOptimLift_14(OBJ);OBJ __AOptimLift_14; /* unit */
extern OBJ _AOptimLift_16(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimLift_16; /* inh */
extern OBJ _AOptimLift_17(OBJ);OBJ __AOptimLift_17; /* inh? */
extern OBJ _AOptimLift_18(OBJ);OBJ __AOptimLift_18; /* liftConst? */
extern OBJ _AOptimLift_19(OBJ);OBJ __AOptimLift_19; /* types */
extern OBJ _AOptimLift_20(OBJ);OBJ __AOptimLift_20; /* const */
extern OBJ _AOptimLift_21(OBJ);OBJ __AOptimLift_21; /* this */
extern OBJ _AOptimLift_22(OBJ);OBJ __AOptimLift_22; /* popts */
extern TUP3 _AOptimLift_24(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimLift_24; /* optimLiftFun */
extern TUP3 _AOptimLift_25(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimLift_25; /* optimLiftCon */
extern TUP2 _AOptimLift_26(OBJ,OBJ,OBJ);OBJ __AOptimLift_26; /* lift */
extern OBJ _AOptimLift_27(OBJ,OBJ);OBJ __AOptimLift_27; /* consLike? */
extern OBJ _AOptimLift_28(OBJ,OBJ);OBJ __AOptimLift_28; /* constKind */
extern OBJ _AOptimLift_29(OBJ,OBJ);OBJ __AOptimLift_29; /* meet */
extern OBJ _AOptimLift_30(OBJ,OBJ);OBJ __AOptimLift_30; /* typedVar */
extern TUP3 _AOptimLift_31(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimLift_31; /* liftBinds */
extern TUP2 _AOptimLift_32(OBJ,OBJ,OBJ);OBJ __AOptimLift_32; /* liftMatch */
extern TUP2 _AOptimLift_33(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimLift_33; /* newCombinator */
extern TUP2 _AOptimLift_34(OBJ,OBJ,OBJ);OBJ __AOptimLift_34; /* newStrictCombinator */
extern TUP2 _AOptimLift_35(OBJ,OBJ,OBJ);OBJ __AOptimLift_35; /* newLazyCombinator */
extern OBJ _AOptimLift_36(OBJ,OBJ);OBJ __AOptimLift_36; /* flattenFct */
extern OBJ _AOptimLift_37(OBJ,OBJ,OBJ);OBJ __AOptimLift_37; /* searchCombinator */
extern OBJ _AOptimLift_38(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimLift_38; /* searchLazy */
extern OBJ _AOptimLift_39(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimLift_39; /* searchStrict */
extern OBJ _AOptimLift_40(OBJ);OBJ __AOptimLift_40; /* lazyBinding? */
extern OBJ _AOptimLift_41(OBJ);OBJ __AOptimLift_41; /* strictBinding? */
extern TUP2 _AOptimLift_42(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimLift_42; /* flattenConstExp */
extern TUP2 _AOptimLift_43(OBJ,OBJ);OBJ __AOptimLift_43; /* extractBinds */
extern OBJ _AOptimLift_44(OBJ,OBJ,OBJ);OBJ __AOptimLift_44; /* valTyping */
extern OBJ _AOptimLift_45(OBJ,OBJ);OBJ __AOptimLift_45; /* typeTyping */
extern OBJ _AOptimLift_46(OBJ);OBJ __AOptimLift_46; /* rank */
extern OBJ _AOptimLift_47(OBJ);OBJ __AOptimLift_47; /* constKind'47 */
OBJ __AOptimLift_48; /* newCombinator'48 */
extern OBJ _AOptimLift_49(OBJ);OBJ __AOptimLift_49; /* lazyBinding?'49 */
OBJ __AOptimLift_50; /* extractBinds'50 */
OBJ __AOptimLift_51; /* flattenConstExp'51 */
extern OBJ _AOptimLift_52(OBJ,OBJ);OBJ __AOptimLift_52; /* flattenConstExp'52 */
extern OBJ _AOptimLift_53(OBJ);OBJ __AOptimLift_53; /* newLazyCombinator'53 */
extern OBJ _AOptimLift_54(OBJ);OBJ __AOptimLift_54; /* newLazyCombinator'54 */

extern TUP3 _AOptimLift_1(OBJ x1,OBJ x2,OBJ x3) /* optimLift */
{TUP3 r;
 CPPRD(x3,3);
 {OBJ x9;OBJ x10;OBJ x11;
  x9=_AAc_21(x3);
  x10=_AAc_22(x3);
  x11=_AAc_20(x3);
  if(ISTGPRD(x3,2)){
   {OBJ x25=FLD(x3,4);FLAG x_x3=EXPRD(x3,1);
    if(x_x3){
    }else{
     CPPRD(x25,1);}
    {OBJ x29;OBJ x31;OBJ x32;OBJ x33;OBJ x34;OBJ x35;
     if(ISTGPRD(x25,4)){
      x29=__ABUILTIN_5;
     }else{
      x29=__ABUILTIN_3;}
     if(ISTGPRM(x29,1)){
      CPPRD(x9,2);
      CPPRD(__AOcError_15,1);
      {TUP3 t=_AOptimLift_24(x1,x2,x9,x25);
       x31=t.c1;
       r.c2=t.c2;
       x33=t.c3;}
     }else{
      CPPRD(x9,2);
      CPPRD(__AOcError_15,1);
      {TUP3 t=_AOptimLift_25(x1,x2,x9,x25);
       x31=t.c1;
       r.c2=t.c2;
       x33=t.c3;}}
     if(x_x3){
      RPRD(x3,x34);FREE(FLD(x34,1),1);FLD(x34,1)=x10;FRPRD(FLD(x34,2),1);FLD(x34,2)=x9;FLD(x34,3)=x11;FLD(x34,4)=x33;
     }else{
      FRPRD(x3,1);PRD(4,2,x34);FLD(x34,1)=x10;FLD(x34,2)=x9;FLD(x34,3)=x11;FLD(x34,4)=x33;}
     r.c1=_AAcFun_11(x31,x9,x34);
     r.c3=__AOcError_15;}}
  }else{
   HLT("Ac at <unknown> : undefined selection def\'Ac:dec->exp");}}
 return r;}
extern OBJ _AOptimLift_1_c(OBJ x1,OBJ x2,OBJ x3) /* optimLift */
{OBJ r;
 {TUP3 t=_AOptimLift_1(x1,x2,x3);
  PRD1(3,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;
  FLD1(r,3)=t.c3;}
 return r;}

extern OBJ _AOptimLift_4(OBJ x1) /* strict? */
{OBJ r;
 if(ISTGPRM(x1,2)){
  r=__ABUILTIN_5;
 }else{
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AOptimLift_6(OBJ x1) /* lazy? */
{OBJ r;
 if(ISTGPRM(x1,1)){
  r=__ABUILTIN_5;
 }else{
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AOptimLift_8(OBJ x1) /* none? */
{OBJ r;
 if(ISTGPRM(x1,0)){
  r=__ABUILTIN_5;
 }else{
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AOptimLift_10(OBJ x1,OBJ x2,OBJ x3) /* thr */
{OBJ r;
 PRD1(3,r);FLD1(r,1)=x1;FLD1(r,2)=x2;FLD1(r,3)=x3;
 return r;}

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

extern OBJ _AOptimLift_12(OBJ x1) /* free */
{OBJ r;
 {OBJ x4=FLD1(x1,3);
  if(EXPRD(x1,1)){
   r=x4;
   FLD1(x1,3)=NIL;DSPRD(x1);
  }else{
   COPY(x4,1);
   r=x4;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimLift_13(OBJ x1) /* new */
{OBJ r;
 {OBJ x3=FLD1(x1,2);
  if(EXPRD(x1,1)){
   r=x3;
   FLD1(x1,2)=NIL;DSPRD(x1);
  }else{
   COPY(x3,1);
   r=x3;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimLift_14(OBJ x1) /* unit */
{OBJ r;
 {OBJ x2=FLD1(x1,1);
  if(EXPRD(x1,1)){
   r=x2;
   FLD1(x1,1)=NIL;DSPRD(x1);
  }else{
   CPPRD(x2,1);
   r=x2;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimLift_16(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* inh */
{OBJ r;
 PRD1(5,r);FLD1(r,1)=x1;FLD1(r,2)=x2;FLD1(r,3)=x3;FLD1(r,4)=x4;FLD1(r,5)=x5;
 return r;}

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

extern OBJ _AOptimLift_18(OBJ x1) /* liftConst? */
{OBJ r;
 {OBJ x6=FLD1(x1,5);
  if(EXPRD(x1,1)){
   r=x6;
   DSPRD(x1);
  }else{
   r=x6;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimLift_19(OBJ x1) /* types */
{OBJ r;
 {OBJ x5=FLD1(x1,4);
  if(EXPRD(x1,1)){
   r=x5;
   FLD1(x1,4)=NIL;DSPRD(x1);
  }else{
   COPY(x5,1);
   r=x5;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimLift_20(OBJ x1) /* const */
{OBJ r;
 {OBJ x4=FLD1(x1,3);
  if(EXPRD(x1,1)){
   r=x4;
   FLD1(x1,3)=NIL;DSPRD(x1);
  }else{
   COPY(x4,1);
   r=x4;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimLift_21(OBJ x1) /* this */
{OBJ r;
 {OBJ x3=FLD1(x1,2);
  if(EXPRD(x1,1)){
   r=x3;
   FLD1(x1,2)=NIL;DSPRD(x1);
  }else{
   CPPRD(x3,1);
   r=x3;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimLift_22(OBJ x1) /* popts */
{OBJ r;
 {OBJ x2=FLD1(x1,1);
  if(EXPRD(x1,1)){
   r=x2;
   FLD1(x1,1)=NIL;DSPRD(x1);
  }else{
   CPPRD(x2,1);
   r=x2;
   FRPRD(x1,1);}}
 return r;}

extern TUP3 _AOptimLift_24(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* optimLiftFun */
{TUP3 r;
 COPY(__AIdeSet_2,1);
 CPPRD(x1,1);
 CPPRD(x4,1);
 {OBJ x16;OBJ x17;OBJ x18;
  x16=_AAc_50(x4);
  PRD1(3,x17);FLD1(x17,1)=x2;FLD1(x17,2)=__ASeq_6;FLD1(x17,3)=__AIdeSet_2;
  x18=_APreparedOptions_11(x1);
  if(ISTGPRD(x4,4)){
   {OBJ x40=FLD(x4,2);OBJ x41=FLD(x4,3);FLAG x_x4=EXPRD(x4,1);
    if(x_x4){
     COPY(x40,2);
    }else{
     COPY(x40,3);CPPRD(x41,1);}
    CPCLS(__AAc_21,1);
    CPCLS(__AIde_14,1);
    COPY(__AIdeMap_3,2);
    CPCLS(__ATypeAnFun_4,1);
    {OBJ x42;OBJ x43;OBJ x44;OBJ x45;TUP2 x47;
     x42=_ASeqMap_3(__ATypeAnFun_4,x40);
     x43=_ASeqMap_3(__AAc_21,x40);
     x44=_AMap_10(__AIde_14,__AIdeMap_3,x43,x42);
     PRD1(5,x45);FLD1(x45,1)=x1;FLD1(x45,2)=x3;FLD1(x45,3)=__AIdeMap_3;FLD1(x45,4)=x44;FLD1(x45,5)=x18;
     x47=_AOptimLift_26(x45,x17,x41);
     {OBJ x49=FLD1(x47.c1,1);OBJ x50=FLD1(x47.c1,2);
      if(EXPRD(x47.c1,1)){
       r.c1=x49;r.c2=x50;
       FREE(FLD1(x47.c1,3),1);DSPRDF(x47.c1);
      }else{
       CPPRD(x49,1);COPY(x50,1);
       r.c1=x49;r.c2=x50;
       FRPRD(x47.c1,1);}
      if(x_x4){
       RPRD(x4,r.c3);FREE(FLD(r.c3,1),1);FLD(r.c3,1)=x16;FLD(r.c3,3)=x47.c2;
      }else{
       FRPRD(x4,1);PRD(3,4,r.c3);FLD(r.c3,1)=x16;FLD(r.c3,2)=x40;FLD(r.c3,3)=x47.c2;}}}}
  }else{
   HLT("Ac at <unknown> : undefined selection vars\'Ac:exp->seq");}}
 return r;}
extern OBJ _AOptimLift_24_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* optimLiftFun */
{OBJ r;
 {TUP3 t=_AOptimLift_24(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 _AOptimLift_25(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* optimLiftCon */
{TUP3 r;
 if(ISTGPRD(x4,1)){
  FRPRD(x1,1);
  FRPRD(x3,1);
  r.c1=x2;r.c2=__ASeq_6;r.c3=x4;
 }else{
  COPY(__AIdeMap_3,2);
  COPY(__AIdeSet_2,1);
  {OBJ x26;OBJ x27;TUP2 x29;
   PRD1(5,x26);FLD1(x26,1)=x1;FLD1(x26,2)=x3;FLD1(x26,3)=__AIdeMap_3;FLD1(x26,4)=__AIdeMap_3;FLD1(x26,5)=__ABUILTIN_3;
   PRD1(3,x27);FLD1(x27,1)=x2;FLD1(x27,2)=__ASeq_6;FLD1(x27,3)=__AIdeSet_2;
   x29=_AOptimLift_26(x26,x27,x4);
   {OBJ x31=FLD1(x29.c1,1);OBJ x32=FLD1(x29.c1,2);
    if(EXPRD(x29.c1,1)){
     r.c3=x29.c2;r.c1=x31;r.c2=x32;
     FREE(FLD1(x29.c1,3),1);DSPRDF(x29.c1);
    }else{
     CPPRD(x31,1);COPY(x32,1);
     r.c3=x29.c2;r.c1=x31;r.c2=x32;
     FRPRD(x29.c1,1);}}}}
 return r;}
extern OBJ _AOptimLift_25_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* optimLiftCon */
{OBJ r;
 {TUP3 t=_AOptimLift_25(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 TUP2 _AOptimLift_26(OBJ x1,OBJ x2,OBJ x3) /* lift */
{TUP2 r;
 switch(TGPRD(x3)){
  case 5:
   {OBJ x974=FLD(x3,2);OBJ x975=FLD(x3,3);
    COPY(x974,1);CPPRD(x975,1);
    CPPRD(x1,1);
    {OBJ x976;TUP3 x978;OBJ x984;OBJ x981;OBJ x985;OBJ x987;OBJ x988;
     x976=_AAc_50(x3);
     x978=_AOptimLift_31(x1,x1,x2,x974);
     if(ISPRM(x978.c3)){
      CPCLS(__AAc_21,1);
      CPCLS(__AIde_14,1);
      x984=__ABUILTIN_5;
     }else{
      CPPRD(x978.c3,1);
      CPCLS(__AAc_21,1);
      CPCLS(__AIde_14,1);
      x984=__ABUILTIN_3;}
     x981=_ASeqMap_3(__AAc_21,x978.c3);
     x985=_ASetByBSTConv_7(__AIde_14,x981);
     {TUP2 t=_AOptimLift_26(x978.c1,x978.c2,x975);
      x987=t.c1;
      x988=t.c2;}
     {OBJ x989;OBJ x990;OBJ x991=FLD1(x987,3);FLAG x_x987=EXPRD(x987,1);
      if(x_x987){
      }else{
       x989=FLD1(x987,1);x990=FLD1(x987,2);CPPRD(x989,1);COPY(x990,1);COPY(x991,1);}
      CPCLS(__AIde_14,1);
      {OBJ x992;OBJ x993;
       x992=_ASetByBST_43(__AIde_14,x991,x985);
       if(x_x987){
	RSOME(x987,x993);FLD1(x993,3)=x992;
       }else{
	FRPRD(x987,1);PRD1(3,x993);FLD1(x993,1)=x989;FLD1(x993,2)=x990;FLD1(x993,3)=x992;}
       if(ISTGPRM(x984,1)){
	r.c2=x988;r.c1=x993;
	FREE(x976,1);
	FREE(x978.c3,1);
       }else{
	r.c1=x993;
	PRD(3,5,r.c2);FLD(r.c2,1)=x976;FLD(r.c2,2)=x978.c3;FLD(r.c2,3)=x988;}}}}}break;
  case 6:
   {OBJ x996=FLD(x3,2);OBJ x997=FLD(x3,3);OBJ x998=FLD(x3,4);
    CPPRD(x996,1);COPY(x997,1);CPPRD(x998,1);
    CPPRD(x1,2);
    CPCLS(__AOptimLift_32,1);
    {OBJ x999;OBJ x1000;TUP2 x1002;TUP2 x1005;
     x999=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_32,1))(__AOptimLift_32,x1);
     x1000=_AAc_50(x3);
     x1002=_AOptimLift_26(x1,x2,x996);
     x1005=_AOptimLift_26(x1,x1002.c1,x998);
     PRD(4,6,r.c2);FLD(r.c2,1)=x1000;FLD(r.c2,2)=x1002.c2;FLD(r.c2,4)=x1005.c2;
     {TUP2 t=_ASeqMapEnv_4(x999,x1005.c1,x997);
      r.c1=t.c1;
      FLD(r.c2,3)=t.c2;}}}break;
  case 4:
   {OBJ x1012=FLD(x3,2);OBJ x1013=FLD(x3,3);
    COPY(x1012,1);CPPRD(x1013,1);
    CPPRD(x1,1);
    CPCLS(__AOptimLift_30,1);
    {OBJ x1014;OBJ x1015;
     x1014=_AAc_50(x3);
     x1015=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_30,1))(__AOptimLift_30,x1);
     {OBJ x1016;OBJ x1017;OBJ x1018=FLD1(x2,3);FLAG x_x2=EXPRD(x2,1);
      if(x_x2){
      }else{
       x1016=FLD1(x2,1);x1017=FLD1(x2,2);CPPRD(x1016,1);COPY(x1017,1);COPY(x1018,1);}
      CPPRD(x1,1);
      COPY(x1012,1);
      CPCLS(__AAc_21,1);
      CPCLS(__AIde_14,1);
      COPY(__AIdeSet_2,1);
      {OBJ x1019;OBJ x1020;OBJ x1021;OBJ x1023;TUP2 x1024;
       x1019=_AAn_3(x1014,__ATypeAn_52);
       if(x_x2){
	RSOME(x2,x1020);FLD1(x1020,3)=__AIdeSet_2;
       }else{
	FRPRD(x2,1);PRD1(3,x1020);FLD1(x1020,1)=x1016;FLD1(x1020,2)=x1017;FLD1(x1020,3)=__AIdeSet_2;}
       x1021=_ASeqMap_3(__AAc_21,x1012);
       x1023=_ASetByBSTConv_7(__AIde_14,x1021);
       x1024=_AOptimLift_26(x1,x1020,x1013);
       {OBJ x1026=FLD1(x1024.c1,1);OBJ x1027=FLD1(x1024.c1,2);OBJ x1028=FLD1(x1024.c1,3);FLAG x_x1024_c1=EXPRD(x1024.c1,1);
	if(x_x1024_c1){
	}else{
	 CPPRD(x1026,1);COPY(x1027,1);COPY(x1028,1);}
	CPCLS(__AIde_14,1);
	{OBJ x1029;OBJ x1035;OBJ x1030;OBJ x1031;OBJ x1036;OBJ x1037;OBJ x1038;OBJ x1039;OBJ x1040;OBJ x1042;OBJ x1043;
	 x1029=_ASetByBST_43(__AIde_14,x1028,x1023);
	 if(ISPRM(x1029)){
	  CPCLS(__AIde_14,2);
	  x1035=__ABUILTIN_5;
	 }else{
	  CPPRD(x1029,1);
	  CPCLS(__AIde_14,2);
	  x1035=__ABUILTIN_3;}
	 x1030=_ASetByBST_41(__AIde_14,x1029,x1018);
	 x1031=_ABSTreeConv_7(__AIde_14,x1029);
	 COPY(x1031,2);
	 x1036=_ASeq_52(x1031,__ANat_5);
	 if(x_x1024_c1){
	  RSOME(x1024.c1,x1037);FLD1(x1037,3)=x1030;
	 }else{
	  FRPRD(x1024.c1,1);PRD1(3,x1037);FLD1(x1037,1)=x1026;FLD1(x1037,2)=x1027;FLD1(x1037,3)=x1030;}
	 x1038=_ASeqMap_3(x1015,x1031);
	 x1039=_ASeq_26(x1038,x1012);
	 PRD(3,4,x1040);FLD(x1040,1)=x1019;FLD(x1040,2)=x1039;FLD(x1040,3)=x1024.c2;
	 {TUP2 t=_AOptimLift_33(x1,x1037,x1040,x1036);
	  x1042=t.c1;
	  x1043=t.c2;}
	 if(ISTGPRM(x1035,1)){
	  r.c1=x1042;r.c2=x1043;
	  FREE(x1031,1);
	 }else{
	  r.c1=x1042;
	  CPCLS(__AAcFun_7,1);
	  {
	   PRD(3,3,r.c2);FLD(r.c2,1)=__AAn_2;FLD(r.c2,2)=x1043;
	   FLD(r.c2,3)=_ASeqMap_3(__AAcFun_7,x1031);}}}}}}}}break;
  case 1:
   r=_AOptimLift_34(x1,x2,x3);break;
  case 2:
   {OBJ x1049=FLD(x3,2);
    CPPRD(x1049,1);
    if(ISTGPRD(x1049,1)){
     {OBJ x1053=FLD1(x1,3);
      if(EXPRD(x1,1)){
       FLD1(x1,3)=NIL;DSPRD(x1);
      }else{
       COPY(x1053,1);
       FRPRD(x1,1);}
      CPPRD(x1049,1);
      CPCLS(__AIde_14,1);
      {OBJ x1056;OBJ x1058;OBJ x1061;
       x1056=_AMap_33(__AIde_14,x1053,x1049);
       if(ISPRM(x1056)){
	x1058=__ABUILTIN_3;
       }else{
	x1058=__ABUILTIN_5;}
       if(ISTGPRM(x1058,1)){
	{OBJ x1060;
	 if(ISPRM(x1056)){
	  HLT("Option at <unknown> : undefined selection cont\'Option:option->data");
	 }else{
	  {OBJ x1059=FLD1(x1056,1);
	   CPPRD(x1059,1);
	   x1060=x1059;}}
	 x1061=_AAcFun_2(x1060);}
       }else{
	x1061=__ABUILTIN_3;}
       if(ISTGPRM(x1061,1)){
	if(EXPRD(x3,1)){
	 DSPRD(x3);
	}else{
	 DCPRD(x3,1);}
	if(EXPRD(x1049,1)){
	 DSPRDF(x1049);
	}else{
	 DCPRD(x1049,1);}
	{OBJ x1063;
	 if(ISPRM(x1056)){
	  HLT("Option at <unknown> : undefined selection cont\'Option:option->data");
	 }else{
	  {OBJ x1062=FLD1(x1056,1);
	   if(EXPRD(x1056,1)){
	    r.c2=x1062;
	    DSPRDF(x1056);
	   }else{
	    CPPRD(x1062,1);
	    r.c2=x1062;
	    FRPRD(x1056,1);}}}
	 r.c1=x2;}
       }else{
	FREE(x1056,1);
	{OBJ x1064;OBJ x1065;OBJ x1066=FLD1(x2,3);FLAG x_x2=EXPRD(x2,1);
	 if(x_x2){
	 }else{
	  x1064=FLD1(x2,1);x1065=FLD1(x2,2);CPPRD(x1064,1);COPY(x1065,1);COPY(x1066,1);}
	 CPCLS(__AIde_14,1);
	 {OBJ x1067;
	  x1067=_ABSTree_57(__AIde_14,x1049,x1066);
	  if(x_x2){
	   RSOME(x2,r.c1);FLD1(r.c1,3)=x1067;
	  }else{
	   FRPRD(x2,1);PRD1(3,r.c1);FLD1(r.c1,1)=x1064;FLD1(r.c1,2)=x1065;FLD1(r.c1,3)=x1067;}
	  r.c2=x3;}}}}}
    }else{
     if(EXPRD(x1049,1)){
      DSPRDF(x1049);
     }else{
      DCPRD(x1049,1);}
     FRPRD(x1,1);
     r.c1=x2;r.c2=x3;}}break;
  case 0:
   FRPRD(x1,1);
   r.c1=x2;r.c2=x3;break;
  default: 
   {OBJ x907=FLD(x3,2);OBJ x908=FLD(x3,3);
    CPPRD(x907,1);COPY(x908,1);
    {OBJ x909;OBJ x912;OBJ x915;
     x909=_AAc_50(x3);
     if(ISTGPRD(x907,2)){
      x912=__ABUILTIN_5;
     }else{
      x912=__ABUILTIN_3;}
     if(ISTGPRM(x912,1)){
      if(ISTGPRD(x907,2)){
       {OBJ x914=FLD(x907,2);
	CPPRD(x914,1);
	CPPRD(__ABuiltin_16,1);
	x915=_AIde_13(x914,__ABuiltin_16);}
      }else{
       HLT("Ac at <unknown> : undefined selection ide\'Ac:exp->ide");}
     }else{
      x915=__ABUILTIN_3;}
     if(ISTGPRM(x915,1)){
      {OBJ x918;OBJ x921;OBJ x924;OBJ x927;OBJ x941;OBJ x942;OBJ x943;
       if(ISPRM(x908)){
	HLT("Seq at <unknown> : undefined selection rt\'Seq:seq->seq");
       }else{
	{OBJ x917=FLD1(x908,2);
	 COPY(x917,1);
	 x918=x917;}}
       if(ISPRM(x918)){
	HLT("Seq at <unknown> : undefined selection rt\'Seq:seq->seq");
       }else{
	{OBJ x920=FLD1(x918,2);
	 COPY(x920,1);
	 x921=x920;}}
       if(ISPRM(x921)){
	HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
       }else{
	{OBJ x922=FLD1(x921,1);
	 if(EXPRD(x921,1)){
	  x924=x922;
	  FREE(FLD1(x921,2),1);DSPRDF(x921);
	 }else{
	  CPPRD(x922,1);
	  x924=x922;
	  FRPRD(x921,1);}}}
       if(ISTGPRD(x924,1)){
	x927=__ABUILTIN_5;
       }else{
	x927=__ABUILTIN_3;}
       if(ISTGPRM(x927,1)){
	x942=x908;
	FRPRD(x1,1);
	FREE(x918,1);
	FRPRD(x924,1);
	r.c1=x2;
       }else{
	{OBJ x930;OBJ x933;OBJ x935;OBJ x936;OBJ x937;OBJ x938;OBJ x939;
	 if(ISPRM(x908)){
	  HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
	 }else{
	  {OBJ x928=FLD1(x908,1);
	   if(EXPRD(x908,1)){
	    x930=x928;
	    FREE(FLD1(x908,2),1);DSPRDF(x908);
	   }else{
	    CPPRD(x928,1);
	    x930=x928;
	    FRPRD(x908,1);}}}
	 if(ISPRM(x918)){
	  HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
	 }else{
	  {OBJ x931=FLD1(x918,1);
	   if(EXPRD(x918,1)){
	    x933=x931;
	    FREE(FLD1(x918,2),1);DSPRDF(x918);
	   }else{
	    CPPRD(x931,1);
	    x933=x931;
	    FRPRD(x918,1);}}}
	 {TUP2 t=_AOptimLift_26(x1,x2,x924);
	  r.c1=t.c1;
	  x936=t.c2;}
	 PRD1(2,x937);FLD1(x937,1)=x936;FLD1(x937,2)=__ASeq_6;
	 PRD1(2,x938);FLD1(x938,1)=x933;FLD1(x938,2)=x937;
	 PRD1(2,x942);FLD1(x942,1)=x930;FLD1(x942,2)=x938;}}
       PRD(3,3,r.c2);FLD(r.c2,1)=x909;FLD(r.c2,2)=x907;FLD(r.c2,3)=x942;}
     }else{
      {OBJ x948=FLD1(x1,5);
       CPPRD(x1,2);
       CPPRD(x2,1);
       CPCLS(__AOptimLift_26,1);
       {TUP2 x950;OBJ x952;TUP2 x954;OBJ x956;
	x950=_AOptimLift_26(x1,x2,x907);
	CPPRD(x950.c2,1);
	x952=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_26,1))(__AOptimLift_26,x1);
	x954=_ASeqMapEnv_4(x952,x950.c1,x908);
	COPY(x954.c2,1);
	PRD(3,3,x956);FLD(x956,1)=x909;FLD(x956,2)=x950.c2;FLD(x956,3)=x954.c2;
	if(ISTGPRM(x948,1)){
	 CPPRD(x950.c2,1);
	 {OBJ x957;OBJ x960;
	  x957=_AAcFun_6(x950.c2);
	  if(ISTGPRM(x957,1)){
	   if(ISTGPRD(x950.c2,2)){
	    {OBJ x959=FLD(x950.c2,2);
	     CPPRD(x959,1);
	     x960=_ABuiltin_19(x959);}
	   }else{
	    HLT("Ac at <unknown> : undefined selection ide\'Ac:exp->ide");}
	  }else{
	   x960=__ABUILTIN_3;}
	  if(ISTGPRM(x960,1)){
	   r.c1=x954.c1;r.c2=x956;
	   if(EXPRD(x1,1)){
	    DSPRD(x1);
	   }else{
	    DCPRD(x1,1);}
	   FRPRD(x2,1);
	   FRPRD(x950.c2,1);
	   FREE(x954.c2,1);
	  }else{
	   CPPRD(x1,2);
	   CPPRD(x950.c2,1);
	   CPCLS(__AOptimLift_28,1);
	   CPCLS(__AOptimLift_29,1);
	   {OBJ x961;OBJ x962;OBJ x963;OBJ x964;
	    x961=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_28,1))(__AOptimLift_28,x1);
	    x962=_AOptimLift_28(x1,x950.c2);
	    x963=_ASeqMap_3(x961,x954.c2);
	    x964=_ASeqReduce_3(__AOptimLift_29,x962,x963);
	    switch(TGPRM(x964)){
	     case 1:
	      {OBJ x969=FLD1(x2,1);
	       if(EXPRD(x2,1)){
		FLD1(x2,1)=NIL;DSPRD(x2);
	       }else{
		CPPRD(x969,1);
		FRPRD(x2,1);}
	       {OBJ x972;
		x972=_AOptimLift_27(x969,x950.c2);
		if(ISTGPRM(x972,1)){
		 r.c1=x954.c1;r.c2=x956;
		 if(EXPRD(x1,1)){
		  DSPRD(x1);
		 }else{
		  DCPRD(x1,1);}
		}else{
		 r=_AOptimLift_35(x1,x954.c1,x956);}}}break;
	     case 0:
	      r.c1=x954.c1;r.c2=x956;
	      if(EXPRD(x1,1)){
	       DSPRD(x1);
	      }else{
	       DCPRD(x1,1);}
	      FRPRD(x2,1);
	      FRPRD(x950.c2,1);break;
	     default: 
	      {OBJ x965=FLD1(x2,1);
	       if(EXPRD(x2,1)){
		FLD1(x2,1)=NIL;DSPRD(x2);
	       }else{
		CPPRD(x965,1);
		FRPRD(x2,1);}
	       {OBJ x968;
		x968=_AOptimLift_27(x965,x950.c2);
		if(ISTGPRM(x968,1)){
		 r=_AOptimLift_34(x1,x954.c1,x956);
		}else{
		 r=_AOptimLift_35(x1,x954.c1,x956);}}}}}}}
	}else{
	 r.c1=x954.c1;r.c2=x956;
	 if(EXPRD(x1,1)){
	  DSPRD(x1);
	 }else{
	  DCPRD(x1,1);}
	 FRPRD(x2,1);
	 FRPRD(x950.c2,1);
	 FREE(x954.c2,1);}}}}}}}
 return r;}
extern OBJ _AOptimLift_26_c(OBJ x1,OBJ x2,OBJ x3) /* lift */
{OBJ r;
 {TUP2 t=_AOptimLift_26(x1,x2,x3);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AOptimLift_27(OBJ x1,OBJ x2) /* consLike? */
{OBJ r;
 if(ISTGPRD(x2,2)){
  {OBJ x46=FLD(x2,2);
   if(EXPRD(x2,1)){
    FREE(FLD(x2,1),1);DSPRDF(x2);
   }else{
    CPPRD(x46,1);
    FRPRD(x2,1);}
   if(ISTGPRD(x46,0)){
    CPPRD(x1,1);
    CPPRD(x46,1);
    {OBJ x49;
     x49=_AAcFun_10(x1,x46);
     if(ISTGPRD(x49,3)){
      if(EXPRD(x49,1)){
       DSPRD(x49);
      }else{
       DCPRD(x49,1);}
      FRPRD(x1,1);
      if(EXPRD(x46,1)){
       DSPRDF(x46);
      }else{
       DCPRD(x46,1);}
      r=__ABUILTIN_5;
     }else{
      FRPRD(x49,1);
      CPCLS(__AOptimAn_6,1);
      {OBJ x54;
       x54=_AOptimAnFun_1(x1,x46);
       r=_ASeq_40(__AOptimAn_6,x54);}}}
   }else{
    if(EXPRD(x46,1)){
     DSPRDF(x46);
    }else{
     DCPRD(x46,1);}
    FRPRD(x1,1);
    r=__ABUILTIN_3;}}
 }else{
  FRPRD(x1,1);
  FRPRD(x2,1);
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AOptimLift_28(register OBJ x1,register OBJ x2) /* constKind */
{OBJ r;
 for(;;){
  if(ISTGPRD(x2,2)){
   {OBJ x201=FLD(x2,2);
    if(EXPRD(x2,1)){
     FREE(FLD(x2,1),1);DSPRDF(x2);
    }else{
     CPPRD(x201,1);
     FRPRD(x2,1);}
    if(ISTGPRD(x201,0)){
     if(EXPRD(x201,1)){
      DSPRDF(x201);
     }else{
      DCPRD(x201,1);}
     FRPRD(x1,1);
     r=__AOptimLift_3;
    }else{
     {OBJ x207=FLD1(x1,3);
      COPY(x207,1);
      CPCLS(__AIde_14,1);
      {OBJ x210;
       x210=_AMap_33(__AIde_14,x207,x201);
       if(ISPRM(x210)){
	if(EXPRD(x1,1)){
	 DSPRD(x1);
	}else{
	 DCPRD(x1,1);}
	r=__AOptimLift_7;
       }else{
	{OBJ x211=FLD1(x210,1);
	 if(EXPRD(x210,1)){
	  DSPRDF(x210);
	 }else{
	  CPPRD(x211,1);
	  FRPRD(x210,1);}
	 x2=x211;continue;}}}}}}
  }else{
   if(ISTGPRD(x2,3)){
    {OBJ x213=FLD(x2,2);OBJ x214=FLD(x2,3);
     if(EXPRD(x2,1)){
      FREE(FLD(x2,1),1);DSPRDF(x2);
     }else{
      CPPRD(x213,1);COPY(x214,1);
      FRPRD(x2,1);}
     FRPRD(x1,1);
     if(ISTGPRD(x213,2)){
      {OBJ x216=FLD(x213,2);
       if(EXPRD(x213,1)){
	FREE(FLD(x213,1),1);DSPRDF(x213);
       }else{
	CPPRD(x216,1);
	FRPRD(x213,1);}
       if(ISPRM(x214)){
	FRPRD(x216,1);
	r=__AOptimLift_7;
       }else{
	{OBJ x217=FLD1(x214,1);OBJ x218=FLD1(x214,2);
	 if(EXPRD(x214,1)){
	  DSPRDF(x214);
	 }else{
	  CPPRD(x217,1);COPY(x218,1);
	  FRPRD(x214,1);}
	 if(ISTGPRD(x217,2)){
	  {OBJ x220=FLD(x217,2);
	   if(EXPRD(x217,1)){
	    FREE(FLD(x217,1),1);DSPRDF(x217);
	   }else{
	    CPPRD(x220,1);
	    FRPRD(x217,1);}
	   if(ISPRM(x218)){
	    {OBJ x224;OBJ x226;
	     if(ISTGPRD(x216,0)){
	      if(EXPRD(x216,1)){
	       DSPRDF(x216);
	      }else{
	       DCPRD(x216,1);}
	      x224=__ABUILTIN_5;
	     }else{
	      if(EXPRD(x216,1)){
	       DSPRDF(x216);
	      }else{
	       DCPRD(x216,1);}
	      x224=__ABUILTIN_3;}
	     if(ISTGPRM(x224,1)){
	      CPCLS(__AOptimLift_47,1);
	      {OBJ x225;
	       x225=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_47,1))(__AOptimLift_47,__ABUILTIN_20);
	       x226=_AIde_13(x220,x225);}
	     }else{
	      FRPRD(x220,1);
	      x226=__ABUILTIN_3;}
	     if(ISTGPRM(x226,1)){
	      r=__AOptimLift_5;
	     }else{
	      r=__AOptimLift_7;}}
	   }else{
	    if(EXPRD(x218,1)){
	     DSPRD(x218);
	    }else{
	     DCPRD(x218,1);}
	    FRPRD(x216,1);
	    FRPRD(x220,1);
	    r=__AOptimLift_7;}}
	 }else{
	  FRPRD(x216,1);
	  FRPRD(x217,1);
	  FREE(x218,1);
	  r=__AOptimLift_7;}}}}
     }else{
      FRPRD(x213,1);
      FREE(x214,1);
      r=__AOptimLift_7;}}
   }else{
    FRPRD(x1,1);
    FRPRD(x2,1);
    r=__AOptimLift_7;}}
  break;}
 return r;}

extern OBJ _AOptimLift_29(OBJ x1,OBJ x2) /* meet */
{OBJ r;
 switch(TGPRM(x1)){
  case 2:
   switch(TGPRM(x2)){
    case 2:
     r=__AOptimLift_3;break;
    case 0:
     r=__AOptimLift_7;break;
    default: 
     r=__AOptimLift_5;}break;
  case 0:
   if(ISTGPRM(x2,0)){
    r=__AOptimLift_7;
   }else{
    r=__AOptimLift_7;}break;
  default: 
   switch(TGPRM(x2)){
    case 0:
     r=__AOptimLift_7;break;
    default: 
     r=__AOptimLift_5;}}
 return r;}

extern OBJ _AOptimLift_30(OBJ x1,OBJ x2) /* typedVar */
{OBJ r;
 {OBJ x6=FLD1(x1,4);
  if(EXPRD(x1,1)){
   FLD1(x1,4)=NIL;DSPRD(x1);
  }else{
   COPY(x6,1);
   FRPRD(x1,1);}
  CPPRD(x2,1);
  CPCLS(__AIde_14,1);
  {OBJ x8;OBJ x9;OBJ x12;
   x8=x6;
   COPY(x8,1);
   x9=_AMap_20(__AIde_14,x2,x8);
   if(ISTGPRM(x9,1)){
    CPPRD(x2,1);
    CPCLS(__AIde_14,1);
    {OBJ x10;OBJ x11;
     x10=_AMap_16(__AIde_14,x8,x2);
     PRD(1,1,x11);FLD(x11,1)=x10;
     x12=_AAn_3(__AAn_2,x11);}
   }else{
    FREE(x8,1);
    x12=__AAn_2;}
   PRD(2,0,r);FLD(r,1)=x12;FLD(r,2)=x2;}}
 return r;}

extern TUP3 _AOptimLift_31(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* liftBinds */
{TUP3 r;OBJ* p1=&r.c1;OBJ* p2=&r.c2;OBJ* p3=&r.c3;
 for(;;){
  if(ISPRM(x4)){
   FRPRD(x1,1);
   *p1=x2;*p2=x3;*p3=__ASeq_6;
  }else{
   {OBJ x162=FLD1(x4,1);OBJ x163=FLD1(x4,2);FLAG x_x4=EXPRD(x4,1);
    if(x_x4){
    }else{
     CPPRD(x162,1);COPY(x163,1);}
    if(ISTGPRD(x162,2)){
     {OBJ x167=FLD(x162,4);
      CPPRD(x167,1);
      {OBJ x168=FLD1(x2,1);OBJ x169=FLD1(x2,2);OBJ x170=FLD1(x2,3);OBJ x171=FLD1(x2,4);OBJ x172=FLD1(x2,5);FLAG x_x2=EXPRD(x2,1);
       if(x_x2){
	CPPRD(x168,1);CPPRD(x169,1);COPY(x170,1);
       }else{
	CPPRD(x168,2);CPPRD(x169,2);COPY(x170,2);COPY(x171,1);}
       CPPRD(x1,2);
       CPPRD(x162,3);
       CPCLS(__AIde_14,1);
       {OBJ x173;OBJ x174;OBJ x175;OBJ x176;OBJ x178;OBJ x179;TUP2 x180;OBJ x182;OBJ x183;OBJ x184;
	x173=_ATypeAnFun_4(x162);
	x174=_AAc_20(x162);
	x175=_AAc_21(x162);
	CPPRD(x175,1);
	x176=_AAc_22(x162);
	x178=_AMap_31(__AIde_14,x175,x173,x171);
	COPY(x178,1);
	if(x_x2){
	 RSOME(x2,x179);FLD1(x179,4)=x178;
	}else{
	 FRPRD(x2,1);PRD1(5,x179);FLD1(x179,1)=x168;FLD1(x179,2)=x169;FLD1(x179,3)=x170;FLD1(x179,4)=x178;FLD1(x179,5)=x172;}
	x180=_AOptimLift_26(x1,x3,x167);
	CPPRD(x180.c2,1);
	x182=_AOptimLift_28(x1,x180.c2);
	if(ISTGPRM(x182,2)){
	 x183=__ABUILTIN_5;
	}else{
	 x183=__ABUILTIN_3;}
	if(ISTGPRM(x183,1)){
	 x184=__ABUILTIN_5;
	}else{
	 if(ISTGPRM(x182,1)){
	  x184=__ABUILTIN_5;
	 }else{
	  x184=__ABUILTIN_3;}}
	if(ISTGPRM(x184,1)){
	 FRPRD(x179,1);
	 CPPRD(x175,1);
	 CPPRD(x180.c2,2);
	 CPCLS(__AIde_14,1);
	 {OBJ x185;OBJ x186;OBJ x187;
	  x185=_AAcFun_2(x180.c2);
	  x186=_AMap_31(__AIde_14,x175,x180.c2,x170);
	  PRD1(5,x187);FLD1(x187,1)=x168;FLD1(x187,2)=x169;FLD1(x187,3)=x186;FLD1(x187,4)=x178;FLD1(x187,5)=x172;
	  if(ISTGPRM(x185,1)){
	   if(x_x4){
	    DSPRDF(x4);
	   }else{
	    FRPRD(x4,1);}
	   FRPRD(x175,1);
	   FREE(x176,1);
	   FRPRD(x180.c2,1);
	   x2=x187;x3=x180.c1;x4=x163;continue;
	  }else{
	   {OBJ x188;
	    PRD(4,2,x188);FLD(x188,1)=x176;FLD(x188,2)=x175;FLD(x188,3)=x174;FLD(x188,4)=x180.c2;
	    if(x_x4){
	     RSOME(x4,*p3);FLD1(*p3,1)=x188;
	    }else{
	     FRPRD(x4,1);PRD1(2,*p3);FLD1(*p3,1)=x188;}
	    x2=x187;x3=x180.c1;x4=x163;p3=&FLD1(*p3,2);continue;}}}
	}else{
	 FRPRD(x168,1);
	 FRPRD(x169,1);
	 FREE(x170,1);
	 FREE(x178,1);
	 {OBJ x194;
	  PRD(4,2,x194);FLD(x194,1)=x176;FLD(x194,2)=x175;FLD(x194,3)=x174;FLD(x194,4)=x180.c2;
	  if(x_x4){
	   RSOME(x4,*p3);FLD1(*p3,1)=x194;
	  }else{
	   FRPRD(x4,1);PRD1(2,*p3);FLD1(*p3,1)=x194;}
	  x2=x179;x3=x180.c1;x4=x163;p3=&FLD1(*p3,2);continue;}}}}}
    }else{
     HLT("OptimLift at <275,7-15> : missing else in liftBinds\'OptimLift:inh**inh**thr**seq->inh**thr**seq");}}}
  break;}
 return r;}
extern OBJ _AOptimLift_31_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* liftBinds */
{OBJ r;
 {TUP3 t=_AOptimLift_31(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 TUP2 _AOptimLift_32(OBJ x1,OBJ x2,OBJ x3) /* liftMatch */
{TUP2 r;
 {OBJ x75=FLD1(x3,1);OBJ x76=FLD1(x3,2);OBJ x77=FLD1(x3,3);FLAG x_x3=EXPRD(x3,1);
  if(x_x3){
  }else{
   CPPRD(x75,1);COPY(x76,1);CPPRD(x77,1);}
  {OBJ x122;OBJ x123;OBJ x124;OBJ x125=FLD1(x1,4);OBJ x126;FLAG x_x1=EXPRD(x1,1);
   if(x_x1){
   }else{
    x122=FLD1(x1,1);x123=FLD1(x1,2);x124=FLD1(x1,3);x126=FLD1(x1,5);CPPRD(x122,1);CPPRD(x123,1);COPY(x124,1);COPY(x125,1);}
   COPY(x76,2);
   CPCLS(__AAc_21,1);
   CPCLS(__AIde_14,2);
   CPCLS(__ATypeAnFun_4,1);
   {OBJ x127;OBJ x128;OBJ x129;OBJ x130;OBJ x131;TUP2 x133;
    x127=_ASeqMap_3(__AAc_21,x76);
    COPY(x127,1);
    x128=_ASeqMap_3(__ATypeAnFun_4,x76);
    x129=_AMap_10(__AIde_14,x125,x127,x128);
    x130=_ASetByBSTConv_7(__AIde_14,x127);
    if(x_x1){
     RSOME(x1,x131);FLD1(x131,4)=x129;
    }else{
     FRPRD(x1,1);PRD1(5,x131);FLD1(x131,1)=x122;FLD1(x131,2)=x123;FLD1(x131,3)=x124;FLD1(x131,4)=x129;FLD1(x131,5)=x126;}
    x133=_AOptimLift_26(x131,x2,x77);
    {OBJ x135;OBJ x136;OBJ x137=FLD1(x133.c1,3);
     if(EXPRD(x133.c1,1)){
      CPCLS(__AIde_14,1);
      {
       if(x_x3){
	RSOME(x3,r.c2);FLD1(r.c2,3)=x133.c2;
       }else{
	FRPRD(x3,1);PRD1(3,r.c2);FLD1(r.c2,1)=x75;FLD1(r.c2,2)=x76;FLD1(r.c2,3)=x133.c2;}
       RSOME(x133.c1,r.c1);
       FLD1(r.c1,3)=_ASetByBST_43(__AIde_14,x137,x130);}
     }else{
      x135=FLD1(x133.c1,1);x136=FLD1(x133.c1,2);CPPRD(x135,1);COPY(x136,1);COPY(x137,1);
      CPCLS(__AIde_14,1);
      {
       if(x_x3){
	RSOME(x3,r.c2);FLD1(r.c2,3)=x133.c2;
       }else{
	FRPRD(x3,1);PRD1(3,r.c2);FLD1(r.c2,1)=x75;FLD1(r.c2,2)=x76;FLD1(r.c2,3)=x133.c2;}
       FRPRD(x133.c1,1);PRD1(3,r.c1);FLD1(r.c1,1)=x135;FLD1(r.c1,2)=x136;
       FLD1(r.c1,3)=_ASetByBST_43(__AIde_14,x137,x130);}}}}}}
 return r;}
extern OBJ _AOptimLift_32_c(OBJ x1,OBJ x2,OBJ x3) /* liftMatch */
{OBJ r;
 {TUP2 t=_AOptimLift_32(x1,x2,x3);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AOptimLift_33(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* newCombinator */
{TUP2 r;
 {OBJ x138=FLD1(x2,1);OBJ x139=FLD1(x2,2);OBJ x140=FLD1(x2,3);
  CPPRD(x138,1);COPY(x139,1);COPY(x140,1);
  {OBJ x144;OBJ x145;OBJ x146;OBJ x147;OBJ x150;OBJ x168;OBJ x169;
   if(ISTGPRD(x3,4)){
    CPPRD(x1,1);
    CPPRD(x3,1);
    CPPRD(x138,2);
    CPCLS(__AOptimLift_44,1);
    CPCLS(__AOptimLift_45,1);
    x144=__ABUILTIN_5;
   }else{
    CPPRD(x1,1);
    CPPRD(x3,1);
    CPPRD(x138,2);
    CPCLS(__AOptimLift_44,1);
    CPCLS(__AOptimLift_45,1);
    x144=__ABUILTIN_3;}
   x145=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_45,1))(__AOptimLift_45,x138);
   CPCLS(x145,1);
   x146=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimLift_44,2))(__AOptimLift_44,x138,x1);
   x147=_ATypeAnFun_5(x146,x145,x3);
   if(ISTGPRM(x144,1)){
    if(ISPRD(x147)&&(ISTGPRD(x147,3))){
     x150=__ABUILTIN_5;
    }else{
     x150=__ABUILTIN_3;}
   }else{
    x150=__ABUILTIN_3;}
   if(ISTGPRM(x150,1)){
    if(ISTGPRD(x3,4)){
     {OBJ x152=FLD(x3,2);
      COPY(x152,1);
      {OBJ x154;
       x154=_ASeq_52(x152,__ANat_5);
       if(ISPRD(x147)&&(ISTGPRD(x147,3))){
	{OBJ x155=FLD(x147,1);
	 COPY(x155,1);
	 {OBJ x157;OBJ x158;OBJ x159;
	  x157=_ASeq_52(x155,__ANat_5);
	  ANat_62(x154,x157,x158);
	  x159=_AOptimLift_36(x147,x158);
	  if(ISPRD(x159)&&(ISTGPRD(x159,3))){
	   {OBJ x160=FLD(x159,1);OBJ x161;FLAG x_x159=EXPRD(x159,1);
	    if(x_x159){
	    }else{
	     x161=FLD(x159,2);COPY(x160,1);COPY(x161,1);}
	    {TUP2 x163;OBJ x165;OBJ x166;OBJ x167;
	     x163=_ASeq_33(x4,x160);
	     COPY(x163.c1,1);
	     x165=_ASeq_52(x163.c1,__ANat_5);
	     ANat_81(x165,__ANat_5,x166);
	     if(x_x159){
	      RPRD(x159,x167);FLD(x167,1)=x163.c2;
	     }else{
	      FRPRD(x159,1);PRD(2,3,x167);FLD(x167,1)=x163.c2;FLD(x167,2)=x161;}
	     if(ISTGPRM(x166,1)){
	      PRD(2,3,x168);FLD(x168,1)=x163.c1;FLD(x168,2)=x167;
	     }else{
	      x168=x167;
	      FREE(x163.c1,1);}}}
	  }else{
	   HLT("TypeAn at <unknown> : undefined selection args\'TypeAn:type->seq");}}}
       }else{
	HLT("TypeAn at <unknown> : undefined selection args\'TypeAn:type->seq");}}}
    }else{
     HLT("Ac at <unknown> : undefined selection vars\'Ac:exp->seq");}
   }else{
    x168=x147;}
   COPY(x168,1);
   x169=_ATypeAnFun_8(x145,x168);
   if(ISPRD(x169)&&(ISTGPRD(x169,2))){
    if(EXPRD(x169,1)){
     FREE(FLD(x169,1),1);DSPRDF(x169);
    }else{
     DCPRD(x169,1);}
    FRPRD(x1,1);
    FRPRD(x138,1);
    FREE(x139,1);
    FREE(x140,1);
    FREE(x168,1);
    r.c1=x2;r.c2=x3;
   }else{
    if(EXPRD(x2,1)){
     DSPRD(x2);
    }else{
     DCPRD(x2,1);}
    FREE(x169,1);
    {OBJ x172=FLD1(x1,2);
     if(EXPRD(x1,1)){
      FLD1(x1,2)=NIL;DSPRD(x1);
     }else{
      CPPRD(x172,1);
      FRPRD(x1,1);}
     {OBJ x181;OBJ x176;OBJ x177;OBJ x188;OBJ x182;OBJ x183;OBJ x184;OBJ x195;OBJ x189;OBJ x196;OBJ x197;OBJ x198;OBJ x199;OBJ x200;OBJ x201;OBJ x202;OBJ x203;OBJ x204;OBJ x205;OBJ x206;OBJ x207;
      if(ISTGPRD(x3,4)){
       {OBJ x179=FLD(x3,2);
	COPY(x179,1);
	CPPRD(x138,2);
	CPPRD(x172,1);
	x181=_ASeq_52(x179,__ANat_5);}
      }else{
       CPPRD(x138,2);
       CPPRD(x172,1);
       x181=__ANat_5;}
      x176=_AAcFun_13(x138);
      x177=_AAcFun_10(x138,x172);
      {OBJ x185=FLD(x176,1);
       x188=x185;
       CPPRD(x176,1);}
      PRDF(3,1,x182);FLD(x182,1)=__ANat_59;FLD(x182,2)=x181;FLD(x182,3)=__ANat_5;
      x183=_AAc_22(x177);
      PRD(2,2,x184);FLD(x184,1)=__AAn_2;FLD(x184,2)=x176;
      if(ISPRM(x183)){
       r.c2=x184;
       CPPRD(x176,1);
       CPPRD(__AOptimLift_48,1);
       x195=__ASourceAn_28;
      }else{
       {OBJ x191=FLD1(x183,2);
	if(EXPRD(x183,1)){
	 r.c2=x184;x195=x191;
	 FLD1(x183,2)=NIL;DSPRD(x183);
	}else{
	 COPY(x191,1);
	 r.c2=x184;x195=x191;
	 FRPRD(x183,1);}
	CPPRD(x176,1);
	CPPRD(__AOptimLift_48,1);}}
      ANatConv_1(x188,x189);
      x196=_ASourceAnFun_1(x195,x172);
      ADenotation_4(__AOptimLift_48,x189,x197);
      ADenotation_4(x196,x197,x198);
      PRD(1,3,x199);FLD(x199,1)=x198;
      x200=_AAn_5(__AAn_2,x199);
      x201=_AAn_7(x200,x182);
      PRD(1,1,x202);FLD(x202,1)=x168;
      x203=_AAn_3(x201,x202);
      PRD(4,2,x204);FLD(x204,1)=x203;FLD(x204,2)=x176;FLD(x204,3)=__AAc_12;FLD(x204,4)=x3;
      CPPRD(x204,1);
      x205=_AAcFun_11(x138,x176,x204);
      PRD1(2,x206);FLD1(x206,1)=x204;FLD1(x206,2)=x139;
      PRD1(3,r.c1);FLD1(r.c1,1)=x205;FLD1(r.c1,2)=x206;FLD1(r.c1,3)=x140;}}}}}
 return r;}
extern OBJ _AOptimLift_33_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* newCombinator */
{OBJ r;
 {TUP2 t=_AOptimLift_33(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AOptimLift_34(OBJ x1,OBJ x2,OBJ x3) /* newStrictCombinator */
{TUP2 r;
 CPPRD(x1,2);
 CPPRD(x2,2);
 {TUP2 x5;OBJ x7;
  x5=_AOptimLift_42(x1,x2,__ANat_5,x3);
  CPPRD(x5.c2,1);
  x7=_AOptimLift_37(x1,x2,x5.c2);
  if(ISPRM(x7)){
   r=_AOptimLift_33(x1,x2,x5.c2,__ANat_5);
  }else{
   {OBJ x13=FLD1(x7,1);
    if(EXPRD(x7,1)){
     DSPRDF(x7);
    }else{
     CPPRD(x13,1);
     FRPRD(x7,1);}
    FRPRD(x1,1);
    FRPRD(x5.c2,1);
    PRD(2,2,r.c2);FLD(r.c2,1)=__AAn_2;FLD(r.c2,2)=x13;
    r.c1=x2;}}}
 return r;}
extern OBJ _AOptimLift_34_c(OBJ x1,OBJ x2,OBJ x3) /* newStrictCombinator */
{OBJ r;
 {TUP2 t=_AOptimLift_34(x1,x2,x3);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AOptimLift_35(OBJ x1,OBJ x2,OBJ x3) /* newLazyCombinator */
{TUP2 r;
 CPCLS(__AOptimLift_53,1);
 CPCLS(__AOptimLift_54,1);
 CPPRD(x1,2);
 CPPRD(x2,2);
 {OBJ x5;OBJ x6;OBJ x7;OBJ x8;OBJ x9;OBJ x10;OBJ x11;TUP2 x12;OBJ x14;OBJ x15;OBJ x16;OBJ x17;OBJ x18;OBJ x20;OBJ x25;OBJ x26;OBJ x27;
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_53,1))(__AOptimLift_53,__ABUILTIN_20);
  x6=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_54,1))(__AOptimLift_54,__ABUILTIN_20);
  PRD(1,1,x7);FLD(x7,1)=x5;
  PRD(2,2,x8);FLD(x8,1)=__AAn_2;FLD(x8,2)=x6;
  PRD(1,1,x9);FLD(x9,1)=x7;
  PRD1(2,x10);FLD1(x10,1)=x8;FLD1(x10,2)=__ASeq_6;
  x11=_AAn_3(__AAn_2,x9);
  x12=_AOptimLift_42(x1,x2,__ANat_5,x3);
  PRDF(1,1,x14);FLD(x14,1)=x12.c1;
  PRD(2,0,x15);FLD(x15,1)=x11;FLD(x15,2)=x14;
  PRD1(2,x16);FLD1(x16,1)=x15;FLD1(x16,2)=__ASeq_6;
  PRD(3,4,x17);FLD(x17,1)=__AAn_2;FLD(x17,2)=x16;FLD(x17,3)=x12.c2;
  CPPRD(x17,1);
  x18=_AOptimLift_37(x1,x2,x17);
  if(ISPRM(x18)){
   x20=__ABUILTIN_3;
  }else{
   x20=__ABUILTIN_5;}
  if(ISTGPRM(x20,1)){
   FRPRD(x1,1);
   FRPRD(x17,1);
   {OBJ x22;OBJ x23;
    if(ISPRM(x18)){
     HLT("Option at <unknown> : undefined selection cont\'Option:option->data");
    }else{
     {OBJ x21=FLD1(x18,1);
      if(EXPRD(x18,1)){
       x22=x21;
       DSPRDF(x18);
      }else{
       CPPRD(x21,1);
       x22=x21;
       FRPRD(x18,1);}}}
    PRD(2,2,x26);FLD(x26,1)=__AAn_2;FLD(x26,2)=x22;
    r.c1=x2;}
  }else{
   FREE(x18,1);
   {TUP2 t=_AOptimLift_33(x1,x2,x17,__ANat_5);
    r.c1=t.c1;
    x26=t.c2;}}
  PRD(3,3,r.c2);FLD(r.c2,1)=__AAn_2;FLD(r.c2,2)=x26;FLD(r.c2,3)=x10;}
 return r;}
extern OBJ _AOptimLift_35_c(OBJ x1,OBJ x2,OBJ x3) /* newLazyCombinator */
{OBJ r;
 {TUP2 t=_AOptimLift_35(x1,x2,x3);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AOptimLift_36(register OBJ x1,register OBJ x2) /* flattenFct */
{OBJ r;
 for(;;){
  if(ISPRD(x1)&&(ISTGPRD(x1,3))){
   {OBJ x49=FLD(x1,1);OBJ x50=FLD(x1,2);
    COPY(x49,1);COPY(x50,1);
    if(ISPRD(x50)&&(ISTGPRD(x50,3))){
     {OBJ x51=FLD(x50,1);OBJ x52=FLD(x50,2);
      COPY(x51,2);COPY(x52,1);
      {OBJ x53;OBJ x54;
       x53=_ASeq_52(x51,__ANat_5);
       ANat_79(x2,x53,x54);
       if(ISTGPRM(x54,1)){
	if(EXPRD(x1,1)){
	 DSPRD(x1);
	}else{
	 DCPRD(x1,1);}
	{OBJ x55;OBJ x56;OBJ x57;
	 x55=_ASeq_26(x49,x51);
	 if(EXPRD(x50,1)){
	  RPRD(x50,x56);FREE(FLD(x56,1),1);FLD(x56,1)=x55;FREE(FLD(x56,2),1);
	 }else{
	  DCPRD(x50,1);PRD(2,3,x56);FLD(x56,1)=x55;FLD(x56,2)=x52;}
	 ANat_62(x2,x53,x57);
	 x1=x56;x2=x57;continue;}
       }else{
	if(EXPRD(x50,1)){
	 DSPRD(x50);
	}else{
	 DCPRD(x50,1);}
	FREE(x49,1);
	FREE(x51,1);
	FREE(x52,1);
	r=x1;}}}
    }else{
     FREE(x49,1);
     FREE(x50,1);
     r=x1;}}
  }else{
   r=x1;}
  break;}
 return r;}

extern OBJ _AOptimLift_37(OBJ x1,OBJ x2,OBJ x3) /* searchCombinator */
{OBJ r;
 {OBJ x4=FLD1(x1,1);
  CPPRD(x4,1);
  {OBJ x9;OBJ x10;OBJ x11;
   x9=x4;
   CPPRD(x9,1);
   x10=_APreparedOptions_12(x9);
   if(ISTGPRM(x10,1)){
    x11=__ABUILTIN_5;
   }else{
    CPPRD(x9,1);
    x11=_APreparedOptions_13(x9);}
   if(ISTGPRM(x11,1)){
    {OBJ x34=FLD1(x2,1);
     CPPRD(x34,1);
     {OBJ x40;OBJ x41;
      if(ISTGPRD(x3,4)){
       x40=__ABUILTIN_5;
      }else{
       x40=__ABUILTIN_3;}
      x41=_APreparedOptions_13(x9);
      if(ISTGPRM(x40,1)){
       {OBJ x48;OBJ x49;OBJ x51;
	if(ISTGPRD(x3,5)||ISTGPRD(x3,4)){
	 {OBJ x44=FLD(x3,3);
	  if(EXPRD(x3,1)){
	   x48=x44;
	   FLD(x3,3)=NIL;DSPRD(x3);
	  }else{
	   CPPRD(x44,1);
	   x48=x44;
	   FRPRD(x3,1);}
	  CPPRD(x34,1);
	  CPCLS(__AOptimLift_40,1);}
	}else{
	 HLT("Ac at <unknown> : undefined selection scope\'Ac:exp->exp");}
	x49=_AAcFun_14(__AOptimLift_40,x34);
	if(ISTGPRM(x41,1)){
	 CPCLS(__AOptimLift_40,1);
	 {OBJ x50;
	  x50=_AAcFun_15(__AOptimLift_40,x34);
	  x51=_ASeq_26(x49,x50);}
	}else{
	 x51=x49;
	 FRPRD(x34,1);}
	r=_AOptimLift_38(x1,x2,x48,x51);}
      }else{
       CPPRD(x34,1);
       CPCLS(__AOptimLift_41,1);
       {OBJ x52;OBJ x54;
	x52=_AAcFun_14(__AOptimLift_41,x34);
	if(ISTGPRM(x41,1)){
	 CPCLS(__AOptimLift_41,1);
	 {OBJ x53;
	  x53=_AAcFun_15(__AOptimLift_41,x34);
	  x54=_ASeq_26(x52,x53);}
	}else{
	 x54=x52;
	 FRPRD(x34,1);}
	r=_AOptimLift_39(x1,x2,x3,x54);}}}}
   }else{
    if(EXPRD(x1,1)){
     DSPRD(x1);
    }else{
     DCPRD(x1,1);}
    FRPRD(x2,1);
    FRPRD(x3,1);
    FRPRD(x9,1);
    r=__AOption_5;}}}
 return r;}

extern OBJ _AOptimLift_38(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* searchLazy */
{OBJ r;
 for(;;){
  if(ISPRM(x4)){
   FRPRD(x1,1);
   FRPRD(x2,1);
   FRPRD(x3,1);
   r=__AOption_5;
  }else{
   {OBJ x49=FLD1(x4,1);OBJ x50=FLD1(x4,2);
    if(EXPRD(x4,1)){
     DSPRDF(x4);
    }else{
     CPPRD(x49,1);COPY(x50,1);
     FRPRD(x4,1);}
    if(ISTGPRD(x49,2)){
     {OBJ x55=FLD(x49,4);
      CPPRD(x55,1);
      {OBJ x62;OBJ x63;
       if(ISTGPRD(x55,5)||ISTGPRD(x55,4)){
	{OBJ x58=FLD(x55,3);
	 CPPRD(x58,1);
	 x62=x58;
	 if(EXPRD(x55,1)){
	  DSPRD(x55);
	 }else{
	  DCPRD(x55,1);}
	 CPPRD(x3,1);}
       }else{
	HLT("Ac at <unknown> : undefined selection scope\'Ac:exp->exp");}
       x63=_AAcFun_1(x3,x62);
       if(ISTGPRM(x63,1)){
	FRPRD(x1,1);
	FRPRD(x2,1);
	FRPRD(x3,1);
	FREE(x50,1);
	{
	 PRD1(1,r);
	 FLD1(r,1)=_AAc_21(x49);}
       }else{
	if(EXPRD(x49,1)){
	 DSPRD(x49);
	}else{
	 DCPRD(x49,1);}
	x4=x50;continue;}}}
    }else{
     HLT("Ac at <unknown> : undefined selection def\'Ac:dec->exp");}}}
  break;}
 return r;}

extern OBJ _AOptimLift_39(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* searchStrict */
{OBJ r;
 for(;;){
  if(ISPRM(x4)){
   FRPRD(x1,1);
   FRPRD(x2,1);
   FRPRD(x3,1);
   r=__AOption_5;
  }else{
   {OBJ x29=FLD1(x4,1);OBJ x30=FLD1(x4,2);
    if(EXPRD(x4,1)){
     DSPRDF(x4);
    }else{
     CPPRD(x29,1);COPY(x30,1);
     FRPRD(x4,1);}
    if(ISTGPRD(x29,2)){
     {OBJ x35=FLD(x29,4);
      CPPRD(x35,1);
      CPPRD(x3,1);
      {OBJ x36;
       x36=_AAcFun_1(x3,x35);
       if(ISTGPRM(x36,1)){
	FRPRD(x1,1);
	FRPRD(x2,1);
	FRPRD(x3,1);
	FREE(x30,1);
	{
	 PRD1(1,r);
	 FLD1(r,1)=_AAc_21(x29);}
       }else{
	if(EXPRD(x29,1)){
	 DSPRD(x29);
	}else{
	 DCPRD(x29,1);}
	x4=x30;continue;}}}
    }else{
     HLT("Ac at <unknown> : undefined selection def\'Ac:dec->exp");}}}
  break;}
 return r;}

extern OBJ _AOptimLift_40(OBJ x1) /* lazyBinding? */
{OBJ r;
 if(ISTGPRD(x1,2)){
  {OBJ x80=FLD(x1,4);
   if(EXPRD(x1,1)){
    FLD(x1,4)=NIL;DSPRD(x1);
   }else{
    CPPRD(x80,1);
    FRPRD(x1,1);}
   if(ISTGPRD(x80,4)){
    {OBJ x82=FLD(x80,2);
     if(EXPRD(x80,1)){
      COPY(x82,1);
      FLD(x80,2)=NIL;DSPRD(x80);
     }else{
      COPY(x82,2);
      FRPRD(x80,1);}
     {OBJ x84;OBJ x85;
      x84=_ASeq_52(x82,__ANat_5);
      ANat_76(x84,__ANat_8,x85);
      if(ISTGPRM(x85,1)){
       {OBJ x88;OBJ x89;
	if(ISPRM(x82)){
	 HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
	}else{
	 {OBJ x86=FLD1(x82,1);
	  if(EXPRD(x82,1)){
	   x88=x86;
	   FREE(FLD1(x82,2),1);DSPRDF(x82);
	  }else{
	   CPPRD(x86,1);
	   x88=x86;
	   FRPRD(x82,1);}}}
	x89=_ATypeAnFun_4(x88);
	if(ISPRD(x89)&&(ISTGPRD(x89,1))){
	 {OBJ x90=FLD(x89,1);
	  if(EXPRD(x89,1)){
	   DSPRDF(x89);
	  }else{
	   CPPRD(x90,1);
	   FRPRD(x89,1);}
	  CPCLS(__AOptimLift_49,1);
	  {OBJ x91;
	   x91=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_49,1))(__AOptimLift_49,__ABUILTIN_20);
	   r=_AIde_13(x90,x91);}}
	}else{
	 FREE(x89,1);
	 r=__ABUILTIN_3;}}
      }else{
       FREE(x82,1);
       r=__ABUILTIN_3;}}}
   }else{
    FRPRD(x80,1);
    r=__ABUILTIN_3;}}
 }else{
  FRPRD(x1,1);
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AOptimLift_41(OBJ x1) /* strictBinding? */
{OBJ r;
 if(ISTGPRD(x1,2)){
  {OBJ x29=FLD(x1,4);
   if(EXPRD(x1,1)){
    FLD(x1,4)=NIL;DSPRD(x1);
   }else{
    CPPRD(x29,1);
    FRPRD(x1,1);}
   if(ISTGPRD(x29,4)){
    if(EXPRD(x29,1)){
     DSPRD(x29);
    }else{
     DCPRD(x29,1);}
    r=__ABUILTIN_3;
   }else{
    FRPRD(x29,1);
    r=__ABUILTIN_5;}}
 }else{
  FRPRD(x1,1);
  r=__ABUILTIN_3;}
 return r;}

extern TUP2 _AOptimLift_42(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* flattenConstExp */
{TUP2 r;
 for(;;){
  if(ISTGPRD(x4,2)){
   {OBJ x166=FLD(x4,2);
    CPPRD(x166,1);
    if(ISTGPRD(x166,0)){
     if(EXPRD(x166,1)){
      DSPRDF(x166);
     }else{
      DCPRD(x166,1);}
     FRPRD(x1,1);
     FRPRD(x2,1);
     r.c1=x3;r.c2=x4;
    }else{
     if(EXPRD(x4,1)){
      DSPRD(x4);
     }else{
      DCPRD(x4,1);}
     {OBJ x172=FLD1(x1,3);
      COPY(x172,1);
      CPCLS(__AIde_14,1);
      {OBJ x175;
       x175=_AMap_16(__AIde_14,x172,x166);
       x4=x175;continue;}}}}
  }else{
   if(ISTGPRD(x4,3)){
    {OBJ x177=FLD(x4,2);OBJ x178=FLD(x4,3);
     CPPRD(x177,1);COPY(x178,1);
     {OBJ x179;
      x179=_AAc_50(x4);
      {OBJ x180=FLD1(x2,1);
       CPPRD(x180,2);
       CPPRD(x1,2);
       CPPRD(x2,1);
       COPY(x179,1);
       CPCLS(__AOptimLift_42,1);
       CPCLS(__AOptimLift_43,1);
       CPCLS(__AOptimLift_44,1);
       CPCLS(__AOptimLift_45,1);
       COPY(__AOptimLift_51,1);
       CPCLS(__AOptimLift_52,1);
       {OBJ x183;OBJ x184;TUP2 x186;TUP2 x189;OBJ x191;TUP2 x193;OBJ x197;OBJ x198;OBJ x199;OBJ x200;OBJ x201;OBJ x202;TUP2 x203;OBJ x205;OBJ x206;OBJ x207;OBJ x208;
	x183=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimLift_45,1))(__AOptimLift_45,x180);
	x184=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimLift_44,2))(__AOptimLift_44,x180,x1);
	x186=_AOptimLift_42(x1,x2,x3,x177);
	CPPRD(x186.c2,1);
	x189=_AOptimLift_43(__AOptimLift_51,x186.c2);
	x191=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AOptimLift_42,2))(__AOptimLift_42,x1,x2);
	x193=_ASeqMapEnv_4(x191,x186.c1,x178);
	COPY(x193.c2,1);
	ANat_2(x193.c1,r.c1);
	PRDF(1,1,x197);FLD(x197,1)=x193.c1;
	CPPRD(x197,1);
	PRD(2,2,x198);FLD(x198,1)=__AAn_2;FLD(x198,2)=x197;
	PRD(3,3,x199);FLD(x199,1)=x179;FLD(x199,2)=x186.c2;FLD(x199,3)=x193.c2;
	x200=_ATypeAnFun_5(x184,x183,x199);
	PRD(1,1,x201);FLD(x201,1)=x200;
	x202=_AAn_3(__AAn_2,x201);
	x203=_ASeqMapEnv_4(__AOptimLift_43,x189.c1,x193.c2);
	PRD(3,3,x205);FLD(x205,1)=x179;FLD(x205,2)=x189.c2;FLD(x205,3)=x203.c2;
	PRD(4,2,x206);FLD(x206,1)=x202;FLD(x206,2)=x197;FLD(x206,3)=__AAc_10;FLD(x206,4)=x205;
	PRD1(2,x207);FLD1(x207,1)=x206;FLD1(x207,2)=__ASeq_6;
	PRD(3,5,x208);FLD(x208,1)=__AAn_2;FLD(x208,2)=x207;FLD(x208,3)=x198;
	r.c2=_ASeqReduce_3(__AOptimLift_52,x208,x203.c1);}}}}
   }else{
    if(ISTGPRD(x4,1)){
     FRPRD(x1,1);
     FRPRD(x2,1);
     r.c1=x3;r.c2=x4;
    }else{
     HLT("flattenConstExp\'OptimLift: unexpected expression");}}}
  break;}
 return r;}
extern OBJ _AOptimLift_42_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* flattenConstExp */
{OBJ r;
 {TUP2 t=_AOptimLift_42(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AOptimLift_43(OBJ x1,OBJ x2) /* extractBinds */
{TUP2 r;
 if(ISTGPRD(x2,5)){
  {OBJ x55=FLD(x2,2);OBJ x56=FLD(x2,3);
   if(EXPRD(x2,1)){
    FREE(FLD(x2,1),1);DSPRDF(x2);
   }else{
    COPY(x55,1);CPPRD(x56,1);
    FRPRD(x2,1);}
   if(ISPRM(x1)){
    HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
   }else{
    {OBJ x70=FLD1(x1,1);OBJ x71=FLD1(x1,2);
     if(EXPRD(x1,1)){
      {OBJ x76;OBJ x73;OBJ x78;OBJ x79;OBJ x80;
       if(ISPRM(x71)){
	x76=__ABUILTIN_5;
       }else{
	x76=__ABUILTIN_3;}
       x73=_ASeq_26(x70,x55);
       if(ISTGPRM(x76,1)){
	FREE(x71,1);
	COPY(__AOptimLift_50,1);
	{TUP2 t=_AOptimLift_43(__AOptimLift_50,x56);
	 x78=t.c1;
	 r.c2=t.c2;}
       }else{
	{TUP2 t=_AOptimLift_43(x71,x56);
	 x78=t.c1;
	 r.c2=t.c2;}}
       RSOME(x1,r.c1);FLD1(r.c1,1)=x73;FLD1(r.c1,2)=x78;}
     }else{
      COPY(x70,1);COPY(x71,1);
      {OBJ x76;OBJ x73;OBJ x78;OBJ x79;OBJ x80;
       if(ISPRM(x71)){
	x76=__ABUILTIN_5;
       }else{
	x76=__ABUILTIN_3;}
       x73=_ASeq_26(x70,x55);
       if(ISTGPRM(x76,1)){
	FREE(x71,1);
	COPY(__AOptimLift_50,1);
	{TUP2 t=_AOptimLift_43(__AOptimLift_50,x56);
	 x78=t.c1;
	 r.c2=t.c2;}
       }else{
	{TUP2 t=_AOptimLift_43(x71,x56);
	 x78=t.c1;
	 r.c2=t.c2;}}
       FRPRD(x1,1);PRD1(2,r.c1);FLD1(r.c1,1)=x73;FLD1(r.c1,2)=x78;}}}}}
 }else{
  r.c1=x1;r.c2=x2;}
 return r;}
extern OBJ _AOptimLift_43_c(OBJ x1,OBJ x2) /* extractBinds */
{OBJ r;
 {TUP2 t=_AOptimLift_43(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AOptimLift_44(OBJ x1,OBJ x2,OBJ x3) /* valTyping */
{OBJ r;
 if(ISTGPRD(x3,0)){
  FRPRD(x2,1);
  {OBJ x33;OBJ x34;OBJ x40;
   x33=_AAcFun_10(x1,x3);
   x34=_AAc_22(x33);
   if(ISPRM(x34)){
    x40=__ATypeAn_52;
   }else{
    {OBJ x35=FLD1(x34,1);
     if(EXPRD(x34,1)){
      x40=x35;
      FLD1(x34,1)=NIL;DSPRD(x34);
     }else{
      COPY(x35,1);
      x40=x35;
      FRPRD(x34,1);}}}
   if(ISPRD(x40)&&(ISTGPRD(x40,1))){
    {OBJ x41=FLD(x40,1);
     if(EXPRD(x40,1)){
      r=x41;
      DSPRDF(x40);
     }else{
      COPY(x41,1);
      r=x41;
      FRPRD(x40,1);}}
   }else{
    FREE(x40,1);
    r=__ATypeAn_40;}}
 }else{
  FRPRD(x1,1);
  {OBJ x46=FLD1(x2,4);
   if(EXPRD(x2,1)){
    COPY(x46,1);
    FLD1(x2,4)=NIL;DSPRD(x2);
   }else{
    COPY(x46,2);
    FRPRD(x2,1);}
   CPPRD(x3,1);
   CPCLS(__AIde_14,1);
   {OBJ x48;
    x48=_AMap_20(__AIde_14,x3,x46);
    if(ISTGPRM(x48,1)){
     CPCLS(__AIde_14,1);
     r=_AMap_16(__AIde_14,x46,x3);
    }else{
     if(EXPRD(x3,1)){
      DSPRDF(x3);
     }else{
      DCPRD(x3,1);}
     FREE(x46,1);
     r=__ATypeAn_40;}}}}
 return r;}

extern OBJ _AOptimLift_45(OBJ x1,OBJ x2) /* typeTyping */
{OBJ r;
 r=_ATypeAnFun_1(x1,x2);
 return r;}

extern OBJ _AOptimLift_46(OBJ x1) /* rank */
{OBJ r;
 if(ISTGPRD(x1,4)){
  {OBJ x11=FLD(x1,2);
   if(EXPRD(x1,1)){
    FLD(x1,2)=NIL;DSPRD(x1);
   }else{
    COPY(x11,1);
    FRPRD(x1,1);}
   r=_ASeq_52(x11,__ANat_5);}
 }else{
  FRPRD(x1,1);
  r=__ANat_5;}
 return r;}

extern OBJ _AOptimLift_47(OBJ x1) /* constKind'47 */
{OBJ r;
 r=_ABuiltin_18(__ANat_5);
 return r;}

extern OBJ _AOptimLift_49(OBJ x1) /* lazyBinding?'49 */
{OBJ r;
 r=_ABuiltin_17(__ANat_5);
 return r;}

extern OBJ _AOptimLift_52(OBJ x1,OBJ x2) /* flattenConstExp'52 */
{OBJ r;
 if(ISPRM(x1)){
  r=x2;
 }else{
  PRD(3,5,r);FLD(r,1)=__AAn_2;FLD(r,2)=x1;FLD(r,3)=x2;}
 return r;}

extern OBJ _AOptimLift_53(OBJ x1) /* newLazyCombinator'53 */
{OBJ r;
 r=_ABuiltin_17(__ANat_5);
 return r;}

extern OBJ _AOptimLift_54(OBJ x1) /* newLazyCombinator'54 */
{OBJ r;
 r=_ABuiltin_18(__ANat_5);
 return r;}






init_AOptimLift()
{
 static int visited=0; if(visited) return; visited=1;
 init_ADenotation();
 init_ANatConv();
 init_ASeqMap();
 init_AAc();
 init_ASeqReduce();
 init_ASeq();
 init_ASeqMapEnv();
 init_APreparedOptions();
 init_AIdeSet();
 init_AOcError();
 init_ATypeAnFun();
 init_AOcPos();
 init_AOptimAnFun();
 init_AString();
 init_AAcFun();
 init_AOcOptions();
 init_ASourceAnFun();
 init_ACom();
 init_ABuiltin();
 init_ANat();
 init_AReal();
 init_AVoid();
 init_AArray();
 init_AOption();
 init_AMap();
 init_AChar();
 init_ASetByBST();
 init_AStream();
 init_ABSTree();
 init_AFile();
 init_ATree();
 init_AInt();
 init_ABitset();
 init_ANatMap();
 init_ASetByBSTFilter();
 init_AIde();
 init_ASetByBSTConv();
 init_AAn();
 init_ABSTreeConv();
 init_ATypeAn();
 init_AMapConv();
 init_ASourceAn();
 init_AOptimAn();
 init_ATransAn();
 init_APragmaAn();
 init_AStore();
 init_AFormat();
 init_AFmt();
 init_ASet();
 init_APair();
 init_AIdeMap();
 CLS(4,_AOptimLift_31_c,__AOptimLift_31);
 CLS(2,_AOptimLift_30,__AOptimLift_30);
 CLS(2,_AOptimLift_29,__AOptimLift_29);
 CLS(2,_AOptimLift_28,__AOptimLift_28);
 CLS(2,_AOptimLift_27,__AOptimLift_27);
 CLS(3,_AOptimLift_26_c,__AOptimLift_26);
 CLS(4,_AOptimLift_25_c,__AOptimLift_25);
 CLS(4,_AOptimLift_24_c,__AOptimLift_24);
 LCLS(1,_AOptimLift_54,__AOptimLift_54);
 CLS(1,_AOptimLift_22,__AOptimLift_22);
 LCLS(1,_AOptimLift_53,__AOptimLift_53);
 CLS(1,_AOptimLift_21,__AOptimLift_21);
 CLS(2,_AOptimLift_52,__AOptimLift_52);
 CLS(1,_AOptimLift_20,__AOptimLift_20);
 CLS(1,_AOptimLift_19,__AOptimLift_19);
 CLS(1,_AOptimLift_18,__AOptimLift_18);
 LCLS(1,_AOptimLift_49,__AOptimLift_49);
 CLS(1,_AOptimLift_17,__AOptimLift_17);
 DEN("\'",__AOptimLift_48);
 CLS(5,_AOptimLift_16,__AOptimLift_16);
 LCLS(1,_AOptimLift_47,__AOptimLift_47);
 CLS(1,_AOptimLift_14,__AOptimLift_14);
 CLS(1,_AOptimLift_46,__AOptimLift_46);
 CLS(1,_AOptimLift_13,__AOptimLift_13);
 CLS(2,_AOptimLift_45,__AOptimLift_45);
 CLS(1,_AOptimLift_12,__AOptimLift_12);
 CLS(3,_AOptimLift_44,__AOptimLift_44);
 CLS(1,_AOptimLift_11,__AOptimLift_11);
 CLS(2,_AOptimLift_43_c,__AOptimLift_43);
 CLS(3,_AOptimLift_10,__AOptimLift_10);
 CLS(4,_AOptimLift_42_c,__AOptimLift_42);
 CLS(1,_AOptimLift_41,__AOptimLift_41);
 CLS(1,_AOptimLift_8,__AOptimLift_8);
 CLS(1,_AOptimLift_40,__AOptimLift_40);
 CLS(4,_AOptimLift_39,__AOptimLift_39);
 CLS(1,_AOptimLift_6,__AOptimLift_6);
 CLS(4,_AOptimLift_38,__AOptimLift_38);
 CLS(3,_AOptimLift_37,__AOptimLift_37);
 CLS(1,_AOptimLift_4,__AOptimLift_4);
 CLS(2,_AOptimLift_36,__AOptimLift_36);
 CLS(3,_AOptimLift_35_c,__AOptimLift_35);
 CLS(3,_AOptimLift_34_c,__AOptimLift_34);
 CLS(3,_AOptimLift_1_c,__AOptimLift_1);
 CLS(4,_AOptimLift_33_c,__AOptimLift_33);
 CLS(3,_AOptimLift_32_c,__AOptimLift_32);
 PRM(2,__AOptimLift_3);
 PRM(1,__AOptimLift_5);
 PRM(0,__AOptimLift_7);
 PRD1F(2,__AOptimLift_50);FLD1(__AOptimLift_50,1)=__ASeq_6;FLD1(__AOptimLift_50,2)=__ASeq_6;
 PRD1F(2,__AOptimLift_51);FLD1(__AOptimLift_51,1)=__ASeq_6;FLD1(__AOptimLift_51,2)=__ASeq_6;}

