

#include "BUILTIN.h"

#include "Bitset.h"
extern OBJ _AMap_8(OBJ,OBJ,OBJ);extern OBJ __AMap_8;
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;
extern OBJ _APreparedOptions_21(OBJ);extern OBJ __APreparedOptions_21;
extern OBJ _APreparedOptions_23(OBJ);extern OBJ __APreparedOptions_23;
extern OBJ _ABSTree_61(OBJ,OBJ,OBJ);extern OBJ __ABSTree_61;
extern OBJ _AIc_27(OBJ);extern OBJ __AIc_27;
extern OBJ _AIc_28(OBJ);extern OBJ __AIc_28;
extern OBJ _AIc_29(OBJ);extern OBJ __AIc_29;
extern OBJ _AIc_30(OBJ);extern OBJ __AIc_30;
extern OBJ _AIc_59(OBJ);extern OBJ __AIc_59;
extern OBJ _AIc_60(OBJ);extern OBJ __AIc_60;
extern OBJ _AIc_61(OBJ);extern OBJ __AIc_61;
extern OBJ _AIc_62(OBJ);extern OBJ __AIc_62;
extern OBJ _AIc_89(OBJ);extern OBJ __AIc_89;
extern OBJ _AIc_90(OBJ);extern OBJ __AIc_90;
extern OBJ _AIc_97(OBJ);extern OBJ __AIc_97;
extern OBJ _AIc_98(OBJ);extern OBJ __AIc_98;
extern OBJ _AIc_129(OBJ);extern OBJ __AIc_129;

#include "Array.h"

#include "Nat.h"
extern OBJ __ASeq_6;
extern OBJ _ASeq_40(OBJ,OBJ);extern OBJ __ASeq_40;
extern OBJ _ASeq_52(OBJ,OBJ);extern OBJ __ASeq_52;
extern OBJ _AMapConv_4(OBJ,OBJ);extern OBJ __AMapConv_4;
extern OBJ _AIde_13(OBJ,OBJ);extern OBJ __AIde_13;
extern OBJ _AIde_14(OBJ,OBJ);extern OBJ __AIde_14;
extern OBJ _AStore_4(OBJ);extern OBJ __AStore_4;
extern OBJ __AOption_5;

#include "Char.h"

#include "Int.h"
extern TUP2 _APair_8(OBJ);extern OBJ __APair_8;
extern OBJ _ASeqFilter_2(OBJ,OBJ);extern OBJ __ASeqFilter_2;
extern OBJ _ASeqMap_3(OBJ,OBJ);extern OBJ __ASeqMap_3;
extern OBJ _ASeqReduce_3(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_3;
extern OBJ _ASeqZip_4(OBJ,OBJ,OBJ);extern OBJ __ASeqZip_4;
extern TUP2 _ASeqZip_5(OBJ,OBJ);extern OBJ __ASeqZip_5;
extern OBJ _ACompose_4(OBJ,OBJ,OBJ);extern OBJ __ACompose_4;
extern TUP2 _ASeqMapEnv_4(OBJ,OBJ,OBJ);extern OBJ __ASeqMapEnv_4;
extern OBJ __AIdeSet_2;
extern OBJ _AIdeSet_4(OBJ,OBJ);extern OBJ __AIdeSet_4;
extern OBJ __AIdeMap_3;
extern OBJ _AOptimReuse_1(OBJ,OBJ,OBJ);OBJ __AOptimReuse_1; /* optimReuse */
extern OBJ _AOptimReuse_3(OBJ,OBJ,OBJ);OBJ __AOptimReuse_3; /* candidate */
extern OBJ _AOptimReuse_4(OBJ);OBJ __AOptimReuse_4; /* candidate? */
extern OBJ _AOptimReuse_5(OBJ);OBJ __AOptimReuse_5; /* sels */
extern OBJ _AOptimReuse_6(OBJ);OBJ __AOptimReuse_6; /* store */
extern OBJ _AOptimReuse_7(OBJ);OBJ __AOptimReuse_7; /* ide */
extern OBJ _AOptimReuse_9(OBJ,OBJ);OBJ __AOptimReuse_9; /* syn */
extern OBJ _AOptimReuse_10(OBJ);OBJ __AOptimReuse_10; /* syn? */
extern OBJ _AOptimReuse_11(OBJ);OBJ __AOptimReuse_11; /* alias */
extern OBJ _AOptimReuse_12(OBJ);OBJ __AOptimReuse_12; /* reused */
extern OBJ _AOptimReuse_14(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimReuse_14; /* inh */
extern OBJ _AOptimReuse_15(OBJ);OBJ __AOptimReuse_15; /* inh? */
extern OBJ _AOptimReuse_16(OBJ);OBJ __AOptimReuse_16; /* cands */
extern OBJ _AOptimReuse_17(OBJ);OBJ __AOptimReuse_17; /* ins */
extern OBJ _AOptimReuse_18(OBJ);OBJ __AOptimReuse_18; /* this */
extern OBJ _AOptimReuse_19(OBJ);OBJ __AOptimReuse_19; /* mod */
extern OBJ _AOptimReuse_20(OBJ);OBJ __AOptimReuse_20; /* popts */
extern OBJ _AOptimReuse_21(OBJ,OBJ);OBJ __AOptimReuse_21; /* updCands */
extern OBJ _AOptimReuse_22(OBJ,OBJ);OBJ __AOptimReuse_22; /* updReused */
extern OBJ _AOptimReuse_23(OBJ,OBJ);OBJ __AOptimReuse_23; /* updAlias */
extern TUP2 _AOptimReuse_24(OBJ,OBJ);OBJ __AOptimReuse_24; /* renameOut */
extern OBJ _AOptimReuse_25(OBJ,OBJ);OBJ __AOptimReuse_25; /* renameIn */
extern OBJ _AOptimReuse_26(OBJ,OBJ);OBJ __AOptimReuse_26; /* notRenamed? */
extern TUP2 _AOptimReuse_27(OBJ,OBJ,OBJ);OBJ __AOptimReuse_27; /* opt */
extern TUP3 _AOptimReuse_28(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimReuse_28; /* partitionAssign */
extern OBJ _AOptimReuse_29(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimReuse_29; /* findBestCand */
extern TUP2 _AOptimReuse_30(OBJ,OBJ);OBJ __AOptimReuse_30; /* genReuseSels */
extern OBJ _AOptimReuse_31(OBJ,OBJ);OBJ __AOptimReuse_31; /* reusable */
extern TUP3 _AOptimReuse_32(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AOptimReuse_32; /* optPathes */
extern TUP2 _AOptimReuse_33(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimReuse_33; /* optMatch */
extern TUP2 _AOptimReuse_34(OBJ,OBJ);OBJ __AOptimReuse_34; /* findFollowingFree */
extern OBJ _AOptimReuse_35(OBJ,OBJ);OBJ __AOptimReuse_35; /* meet */
extern OBJ _AOptimReuse_36(OBJ,OBJ);OBJ __AOptimReuse_36; /* meetReuse */
extern OBJ _AOptimReuse_37(OBJ,OBJ);OBJ __AOptimReuse_37; /* meetSel */
extern OBJ _AOptimReuse_38(OBJ);OBJ __AOptimReuse_38; /* killReuse */
extern OBJ _AOptimReuse_39(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimReuse_39; /* balance */
extern OBJ _AOptimReuse_40(OBJ,OBJ,OBJ,OBJ);OBJ __AOptimReuse_40; /* balance,1 */
extern OBJ _AOptimReuse_41(OBJ);OBJ __AOptimReuse_41; /* aliasAssign */
extern OBJ _AOptimReuse_42(OBJ,OBJ);OBJ __AOptimReuse_42; /* renameSrc */
extern OBJ _AOptimReuse_43(OBJ,OBJ,OBJ);OBJ __AOptimReuse_43; /* balanceReuse */
extern OBJ _AOptimReuse_44(OBJ,OBJ);OBJ __AOptimReuse_44; /* && */
extern OBJ _AOptimReuse_45(OBJ,OBJ);OBJ __AOptimReuse_45; /* &&& */
extern OBJ _AOptimReuse_46(OBJ,OBJ);OBJ __AOptimReuse_46; /* opt'46 */
extern OBJ _AOptimReuse_47(OBJ,OBJ,OBJ);OBJ __AOptimReuse_47; /* opt'47 */
OBJ __AOptimReuse_48; /* opt'48 */
OBJ __AOptimReuse_49; /* optimReuse'49 */

extern OBJ _AOptimReuse_1(OBJ x1,OBJ x2,OBJ x3) /* optimReuse */
{OBJ r;
 if(ISTGPRD(x3,2)){
  {OBJ x73=FLD(x3,5);OBJ x74=FLD(x3,6);OBJ x75=FLD(x3,7);
   COPY(x73,2);COPY(x74,1);COPY(x75,1);
   CPPRD(x3,3);
   CPPRD(__AOptimReuse_49,1);
   COPY(__AIdeSet_2,1);
   CPCLS(__AIdeSet_4,1);
   COPY(__AIdeMap_3,1);
   {OBJ x76;OBJ x77;OBJ x78;OBJ x79;OBJ x80;OBJ x81;OBJ x82;TUP2 x84;OBJ x86;OBJ x87;OBJ x90;
    x76=_AIc_27(x3);
    x77=_AIc_28(x3);
    x78=_AIc_29(x3);
    x79=_AIc_30(x3);
    CPPRD(x79,1);
    x80=_ASeqReduce_3(__AIdeSet_4,__AIdeSet_2,x73);
    PRD1(2,x81);FLD1(x81,1)=x75;FLD1(x81,2)=__ASeq_6;
    PRD1(5,x82);FLD1(x82,1)=x1;FLD1(x82,2)=x2;FLD1(x82,3)=x79;FLD1(x82,4)=x80;FLD1(x82,5)=__AIdeMap_3;
    x84=_AOptimReuse_27(x82,__AOptimReuse_49,x81);
    FRPRD(x84.c1,1);
    COPY(x84.c2,1);
    x86=_ASeq_52(x84.c2,__ANat_5);
    ANat_76(x86,__ANat_8,x87);
    if(ISTGPRM(x87,1)){
     if(ISPRM(x84.c2)){
      HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
     }else{
      {OBJ x88=FLD1(x84.c2,1);
       if(EXPRD(x84.c2,1)){
	x90=x88;
	FREE(FLD1(x84.c2,2),1);DSPRDF(x84.c2);
       }else{
	COPY(x88,1);
	x90=x88;
	FRPRD(x84.c2,1);}}}
    }else{
     PRD(2,13,x90);FLD(x90,1)=__ASeq_6;FLD(x90,2)=x84.c2;}
    PRD(7,2,r);FLD(r,1)=x79;FLD(r,2)=x78;FLD(r,3)=x77;FLD(r,4)=x76;FLD(r,5)=x73;FLD(r,6)=x74;FLD(r,7)=x90;}}
 }else{
  FRPRD(x1,1);
  FRPRD(x2,1);
  r=x3;}
 return r;}

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

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

extern OBJ _AOptimReuse_5(OBJ x1) /* sels */
{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 _AOptimReuse_6(OBJ x1) /* store */
{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 _AOptimReuse_7(OBJ x1) /* ide */
{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 _AOptimReuse_9(OBJ x1,OBJ x2) /* syn */
{OBJ r;
 PRD1(2,r);FLD1(r,1)=x1;FLD1(r,2)=x2;
 return r;}

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

extern OBJ _AOptimReuse_11(OBJ x1) /* alias */
{OBJ r;
 {OBJ x3=FLD1(x1,2);
  if(EXPRD(x1,1)){
   r=x3;
   FREE(FLD1(x1,1),1);DSPRDF(x1);
  }else{
   COPY(x3,1);
   r=x3;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimReuse_12(OBJ x1) /* reused */
{OBJ r;
 {OBJ x2=FLD1(x1,1);
  if(EXPRD(x1,1)){
   r=x2;
   FREE(FLD1(x1,2),1);DSPRDF(x1);
  }else{
   COPY(x2,1);
   r=x2;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimReuse_14(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 _AOptimReuse_15(OBJ x1) /* inh? */
{OBJ r;
 FRPRD(x1,1);
 r=__ABUILTIN_5;
 return r;}

extern OBJ _AOptimReuse_16(OBJ x1) /* cands */
{OBJ r;
 {OBJ x6=FLD1(x1,5);
  if(EXPRD(x1,1)){
   r=x6;
   FLD1(x1,5)=NIL;DSPRD(x1);
  }else{
   COPY(x6,1);
   r=x6;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimReuse_17(OBJ x1) /* ins */
{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 _AOptimReuse_18(OBJ x1) /* this */
{OBJ r;
 {OBJ x4=FLD1(x1,3);
  if(EXPRD(x1,1)){
   r=x4;
   FLD1(x1,3)=NIL;DSPRD(x1);
  }else{
   CPPRD(x4,1);
   r=x4;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _AOptimReuse_19(OBJ x1) /* mod */
{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 _AOptimReuse_20(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 OBJ _AOptimReuse_21(OBJ x1,OBJ x2) /* updCands */
{OBJ r;
 {OBJ x27;OBJ x28;OBJ x29;OBJ x30;
  if(EXPRD(x1,1)){
   RSOME(x1,r);FREE(FLD1(r,5),1);FLD1(r,5)=x2;
  }else{
   x27=FLD1(x1,1);x28=FLD1(x1,2);x29=FLD1(x1,3);x30=FLD1(x1,4);CPPRD(x27,1);CPPRD(x28,1);CPPRD(x29,1);COPY(x30,1);
   FRPRD(x1,1);PRD1(5,r);FLD1(r,1)=x27;FLD1(r,2)=x28;FLD1(r,3)=x29;FLD1(r,4)=x30;FLD1(r,5)=x2;}}
 return r;}

extern OBJ _AOptimReuse_22(OBJ x1,OBJ x2) /* updReused */
{OBJ r;
 {OBJ x4=FLD1(x1,2);
  if(EXPRD(x1,1)){
   {OBJ x5;
    x5=x4;
    RSOME(x1,r);FREE(FLD1(r,1),1);FLD1(r,1)=x2;FLD1(r,2)=x5;}
  }else{
   COPY(x4,1);
   {OBJ x5;
    x5=x4;
    FRPRD(x1,1);PRD1(2,r);FLD1(r,1)=x2;FLD1(r,2)=x5;}}}
 return r;}

extern OBJ _AOptimReuse_23(OBJ x1,OBJ x2) /* updAlias */
{OBJ r;
 {OBJ x3=FLD1(x1,1);
  if(EXPRD(x1,1)){
   {OBJ x5;
    x5=x3;
    RSOME(x1,r);FLD1(r,1)=x5;FREE(FLD1(r,2),1);FLD1(r,2)=x2;}
  }else{
   COPY(x3,1);
   {OBJ x5;
    x5=x3;
    FRPRD(x1,1);PRD1(2,r);FLD1(r,1)=x5;FLD1(r,2)=x2;}}}
 return r;}

extern TUP2 _AOptimReuse_24(OBJ x1,OBJ x2) /* renameOut */
{TUP2 r;
 if(ISTGPRD(x2,1)){
  {OBJ x25=FLD1(x1,1);OBJ x26=FLD1(x1,2);
   COPY(x25,1);COPY(x26,2);
   CPPRD(x2,1);
   CPCLS(__AIde_14,1);
   {OBJ x27;
    x27=_AMap_33(__AIde_14,x26,x2);
    if(ISPRM(x27)){
     FREE(x25,1);
     FREE(x26,1);
     r.c1=x1;r.c2=x2;
    }else{
     {OBJ x28=FLD1(x27,1);
      if(EXPRD(x27,1)){
       r.c2=x28;
       DSPRDF(x27);
      }else{
       CPPRD(x28,1);
       r.c2=x28;
       FRPRD(x27,1);}
      if(EXPRD(x1,1)){
       DSPRD(x1);
      }else{
       DCPRD(x1,1);}
      CPCLS(__AIde_14,1);
      {
       PRD1(2,r.c1);FLD1(r.c1,1)=x25;
       FLD1(r.c1,2)=_AMap_8(__AIde_14,x2,x26);}}}}}
 }else{
  r.c1=x1;r.c2=x2;}
 return r;}
extern OBJ _AOptimReuse_24_c(OBJ x1,OBJ x2) /* renameOut */
{OBJ r;
 {TUP2 t=_AOptimReuse_24(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AOptimReuse_25(OBJ x1,OBJ x2) /* renameIn */
{OBJ r;
 if(ISTGPRD(x2,1)){
  {OBJ x17=FLD1(x1,2);
   if(EXPRD(x1,1)){
    FREE(FLD1(x1,1),1);DSPRDF(x1);
   }else{
    COPY(x17,1);
    FRPRD(x1,1);}
   CPPRD(x2,1);
   CPCLS(__AIde_14,1);
   {OBJ x18;
    x18=_AMap_33(__AIde_14,x17,x2);
    if(ISPRM(x18)){
     r=x2;
    }else{
     {OBJ x19=FLD1(x18,1);
      if(EXPRD(x18,1)){
       r=x19;
       DSPRDF(x18);
      }else{
       CPPRD(x19,1);
       r=x19;
       FRPRD(x18,1);}
      if(EXPRD(x2,1)){
       DSPRDF(x2);
      }else{
       DCPRD(x2,1);}}}}}
 }else{
  FRPRD(x1,1);
  r=x2;}
 return r;}

extern OBJ _AOptimReuse_26(OBJ x1,OBJ x2) /* notRenamed? */
{OBJ r;
 {OBJ x4=FLD1(x1,2);
  if(EXPRD(x1,1)){
   FREE(FLD1(x1,1),1);DSPRDF(x1);
  }else{
   COPY(x4,1);
   FRPRD(x1,1);}
  CPCLS(__AIde_14,1);
  {OBJ x5;OBJ x6;
   x5=x4;
   x6=_AMap_20(__AIde_14,x2,x5);
   if(ISTGPRM(x6,1)){
    r=__ABUILTIN_3;
   }else{
    r=__ABUILTIN_5;}}}
 return r;}

extern TUP2 _AOptimReuse_27(register OBJ x1,register OBJ x2,register OBJ x3) /* opt */
{TUP2 r;
 for(;;){
  if(ISPRM(x3)){
   FRPRD(x1,1);
   r.c1=x2;r.c2=__ASeq_6;
  }else{
   {OBJ x2473=FLD1(x3,1);OBJ x2474=FLD1(x3,2);FLAG x_x3=EXPRD(x3,1);
    if(x_x3){
    }else{
     COPY(x2473,1);COPY(x2474,1);}
    if(ISPRM(x2473)){
     if(x_x3){
      DSPRDF(x3);
     }else{
      FRPRD(x3,1);}
     x3=x2474;continue;
    }else{
     switch(TGPRD(x2473)){
      case 7:
       {OBJ x2478=FLD(x2473,1);OBJ x2479=FLD(x2473,2);
	CPPRD(x2478,1);CPPRD(x2479,1);
	if(x_x3){
	 DSPRDF(x3);
	}else{
	 FRPRD(x3,1);}
	{OBJ x2482;TUP2 x2483;TUP2 x2487;OBJ x2488;
	 x2482=_AIc_97(x2473);
	 x2483=_AOptimReuse_27(x1,x2,x2474);
	 x2487=_AOptimReuse_24(x2483.c1,x2482);r.c1=x2487.c1;
	 PRD(3,7,x2488);FLD(x2488,1)=x2478;FLD(x2488,2)=x2479;FLD(x2488,3)=x2487.c2;
	 r.c2=_AOptimReuse_44(x2488,x2483.c2);}}break;
      case 9:
       {OBJ x2492=FLD(x2473,3);
	if(x_x3){
	 DSPRDF(x3);
	}else{
	 FRPRD(x3,1);}
	CPPRD(x2473,1);
	{OBJ x2494;OBJ x2495;TUP2 x2497;OBJ x2498;OBJ x2499;
	 x2494=_AIc_90(x2473);
	 x2495=_AIc_89(x2473);
	 x2497=_AOptimReuse_27(x1,x2,x2474);r.c1=x2497.c1;
	 CPPRD(r.c1,1);
	 x2498=_AOptimReuse_25(r.c1,x2494);
	 PRD(3,9,x2499);FLD(x2499,1)=x2498;FLD(x2499,2)=x2495;FLD(x2499,3)=x2492;
	 r.c2=_AOptimReuse_44(x2499,x2497.c2);}}break;
      case 11:
       if(x_x3){
	DSPRDF(x3);
       }else{
	FRPRD(x3,1);}
       {OBJ x2504=FLD1(x2,1);
	COPY(x2504,1);
	{OBJ x2506=FLD1(x1,1);OBJ x2507=FLD1(x1,2);OBJ x2508=FLD1(x1,3);OBJ x2509=FLD1(x1,4);OBJ x2510=FLD1(x1,5);
	 CPPRD(x2506,1);CPPRD(x2507,1);CPPRD(x2508,1);COPY(x2509,1);COPY(x2510,2);
	 CPPRD(x2473,2);
	 CPCLS(__AOptimReuse_29,1);
	 CPCLS(__AIde_14,1);
	 {OBJ x2511;OBJ x2512;OBJ x2513;OBJ x2514;OBJ x2515;OBJ x2516;
	  x2511=_AMapConv_4(__AIde_14,x2510);
	  x2512=_AIc_98(x2473);
	  COPY(x2512,1);
	  x2513=_AIc_89(x2473);
	  COPY(x2513,1);
	  x2514=_AIc_97(x2473);
	  x2515=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AOptimReuse_29,3))(__AOptimReuse_29,x2504,x2513,x2512);
	  x2516=_ASeqReduce_3(x2515,__AOption_5,x2511);
	  if(ISPRM(x2516)){
	   FRPRD(x2506,1);
	   FRPRD(x2507,1);
	   FRPRD(x2508,1);
	   FREE(x2509,1);
	   FREE(x2510,1);
	   CPCLS(__AOptimReuse_25,1);
	   {TUP2 x2538;OBJ x2540;OBJ x2542;TUP2 x2544;OBJ x2545;
	    x2538=_AOptimReuse_27(x1,x2,x2474);
	    CPPRD(x2538.c1,1);
	    x2540=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_25,1))(__AOptimReuse_25,x2538.c1);
	    x2542=_ASeqMap_3(x2540,x2512);
	    x2544=_AOptimReuse_24(x2538.c1,x2514);r.c1=x2544.c1;
	    PRD(3,11,x2545);FLD(x2545,1)=x2513;FLD(x2545,2)=x2542;FLD(x2545,3)=x2544.c2;
	    r.c2=_AOptimReuse_44(x2545,x2538.c2);}
	  }else{
	   {OBJ x2517=FLD1(x2516,1);
	    if(EXPRD(x2516,1)){
	     DSPRDF(x2516);
	    }else{
	     CPPRD(x2517,1);
	     FRPRD(x2516,1);}
	    if(EXPRD(x1,1)){
	     DSPRD(x1);
	    }else{
	     DCPRD(x1,1);}
	    {OBJ x2518=FLD1(x2517,1);OBJ x2519=FLD1(x2517,2);
	     CPPRD(x2518,2);COPY(x2519,1);
	     CPCLS(__AOptimReuse_25,1);
	     CPCLS(__AIde_14,1);
	     {OBJ x2521;OBJ x2522;TUP2 x2524;OBJ x2526;OBJ x2527;TUP2 x2529;
	      x2521=_AMap_8(__AIde_14,x2518,x2510);
	      PRD1(5,x2522);FLD1(x2522,1)=x2506;FLD1(x2522,2)=x2507;FLD1(x2522,3)=x2508;FLD1(x2522,4)=x2509;FLD1(x2522,5)=x2521;
	      x2524=_AOptimReuse_27(x2522,x2,x2474);
	      CPPRD(x2524.c1,1);
	      x2526=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_25,1))(__AOptimReuse_25,x2524.c1);
	      x2527=_ASeqMap_3(x2526,x2512);
	      x2529=_AOptimReuse_24(x2524.c1,x2514);
	      {OBJ x2531=FLD1(x2529.c1,1);OBJ x2532;
	       if(EXPRD(x2529.c1,1)){
		CPPRD(x2518,1);
		CPCLS(__AIde_14,1);
		{OBJ x2533;OBJ x2534;
		 x2533=_AMap_31(__AIde_14,x2518,x2517,x2531);
		 PRD(5,12,x2534);FLD(x2534,1)=x2513;FLD(x2534,2)=x2518;FLD(x2534,3)=x2519;FLD(x2534,4)=x2527;FLD(x2534,5)=x2529.c2;
		 RSOME(x2529.c1,r.c1);FLD1(r.c1,1)=x2533;
		 r.c2=_AOptimReuse_44(x2534,x2524.c2);}
	       }else{
		x2532=FLD1(x2529.c1,2);COPY(x2531,1);COPY(x2532,1);
		CPPRD(x2518,1);
		CPCLS(__AIde_14,1);
		{OBJ x2533;OBJ x2534;
		 x2533=_AMap_31(__AIde_14,x2518,x2517,x2531);
		 PRD(5,12,x2534);FLD(x2534,1)=x2513;FLD(x2534,2)=x2518;FLD(x2534,3)=x2519;FLD(x2534,4)=x2527;FLD(x2534,5)=x2529.c2;
		 FRPRD(x2529.c1,1);PRD1(2,r.c1);FLD1(r.c1,1)=x2533;FLD1(r.c1,2)=x2532;
		 r.c2=_AOptimReuse_44(x2534,x2524.c2);}}}}}}}}}}break;
      case 13:
       {OBJ x2547=FLD(x2473,1);OBJ x2548=FLD(x2473,2);FLAG x_x2473=EXPRD(x2473,1);
	if(x_x2473){
	 COPY(x2547,1);
	}else{
	 COPY(x2547,2);COPY(x2548,1);}
	if(x_x3){
	 DSPRDF(x3);
	}else{
	 FRPRD(x3,1);}
	CPPRD(x1,1);
	CPCLS(__AOptimReuse_47,1);
	{OBJ x2550;TUP2 x2551;TUP2 x2554;
	 x2550=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_47,1))(__AOptimReuse_47,x2547);
	 x2551=_AOptimReuse_27(x1,x2,x2474);
	 x2554=_AOptimReuse_27(x1,x2551.c1,x2548);
	 {OBJ x2556=FLD1(x2554.c1,1);OBJ x2557=FLD1(x2554.c1,2);FLAG x_x2554_c1=EXPRD(x2554.c1,1);
	  if(x_x2554_c1){
	   COPY(x2557,1);
	  }else{
	   COPY(x2556,1);COPY(x2557,2);}
	  CPCLS(__AIde_14,1);
	  {OBJ x2558;OBJ x2559;OBJ x2560;
	   if(x_x2554_c1){
	    RSOME(x2554.c1,x2558);FLD1(x2558,1)=__ASeq_6;
	   }else{
	    FRPRD(x2554.c1,1);PRD1(2,x2558);FLD1(x2558,1)=__ASeq_6;FLD1(x2558,2)=x2557;}
	   x2559=_AMapConv_4(__AIde_14,x2557);
	   x2560=_ASeqReduce_3(x2550,x2558,x2559);
	   {OBJ x2561=FLD1(x2560,1);OBJ x2562=FLD1(x2560,2);FLAG x_x2560=EXPRD(x2560,1);
	    if(x_x2560){
	    }else{
	     COPY(x2561,1);COPY(x2562,1);}
	    {OBJ x2565;OBJ x2566;OBJ x2569;OBJ x2567;OBJ x2570;OBJ x2571;OBJ x2574;OBJ x2576;
	     if(ISPRM(x2561)){
	      x2565=__ABUILTIN_3;
	     }else{
	      x2565=__ABUILTIN_5;}
	     if(x_x2560){
	      RSOME(x2560,x2566);FLD1(x2566,1)=x2556;
	     }else{
	      FRPRD(x2560,1);PRD1(2,x2566);FLD1(x2566,1)=x2556;FLD1(x2566,2)=x2562;}
	     if(ISTGPRM(x2565,1)){
	      COPY(x2554.c2,1);
	      CPPRD(x2566,1);
	      CPCLS(__AOptimReuse_26,1);
	      CPCLS(__AIc_30,1);
	      CPCLS(__ACompose_4,1);
	      {OBJ x2568;
	       x2568=_AOptimReuse_41(x2561);
	       x2569=_AOptimReuse_44(x2568,x2554.c2);}
	     }else{
	      x2569=x2554.c2;
	      FREE(x2561,1);
	      COPY(x2569,1);
	      CPPRD(x2566,1);
	      CPCLS(__AOptimReuse_26,1);
	      CPCLS(__AIc_30,1);
	      CPCLS(__ACompose_4,1);}
	     x2567=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_26,1))(__AOptimReuse_26,x2566);
	     x2570=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__ACompose_4,2))(__ACompose_4,x2567,__AIc_30);
	     x2571=_ASeqFilter_2(x2570,x2547);
	     if(ISPRM(x2571)){
	      x2574=__ABUILTIN_5;
	     }else{
	      x2574=__ABUILTIN_3;}
	     if(ISTGPRM(x2574,1)){
	      COPY(x2569,1);
	      {OBJ x2575;
	       x2575=_ASeq_52(x2569,__ANat_5);
	       ANat_76(x2575,__ANat_8,x2576);}
	     }else{
	      x2576=__ABUILTIN_3;}
	     if(ISTGPRM(x2576,1)){
	      if(x_x2473){
	       DSPRDF(x2473);
	      }else{
	       FRPRD(x2473,1);}
	      FREE(x2569,1);
	      FREE(x2571,1);
	      {OBJ x2579;OBJ x2580;
	       if(ISPRM(x2554.c2)){
		HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
	       }else{
		{OBJ x2577=FLD1(x2554.c2,1);
		 if(EXPRD(x2554.c2,1)){
		  r.c1=x2566;x2579=x2577;
		  FREE(FLD1(x2554.c2,2),1);DSPRDF(x2554.c2);
		 }else{
		  COPY(x2577,1);
		  r.c1=x2566;x2579=x2577;
		  FRPRD(x2554.c2,1);}}}
	       r.c2=_AOptimReuse_44(x2579,x2551.c2);}
	     }else{
	      r.c1=x2566;
	      FREE(x2554.c2,1);
	      {OBJ x2581;
	       if(x_x2473){
		RPRD(x2473,x2581);FLD(x2581,1)=x2571;FLD(x2581,2)=x2569;
	       }else{
		FRPRD(x2473,1);PRD(2,13,x2581);FLD(x2581,1)=x2571;FLD(x2581,2)=x2569;}
	       r.c2=_AOptimReuse_44(x2581,x2551.c2);}}}}}}}}break;
      case 14:
       {OBJ x2585=FLD(x2473,3);OBJ x2586=FLD(x2473,4);
	COPY(x2585,1);COPY(x2586,1);
	if(x_x3){
	 DSPRDF(x3);
	}else{
	 FRPRD(x3,1);}
	CPPRD(x1,1);
	CPPRD(x2473,1);
	CPPRD(__AOptimReuse_48,1);
	{OBJ x2587;OBJ x2588;TUP2 x2590;OBJ x2592;TUP3 x2595;OBJ x2597;
	 x2587=_AIc_89(x2473);
	 x2588=_AIc_90(x2473);
	 CPPRD(x2588,1);
	 x2590=_AOptimReuse_27(x1,x2,x2474);
	 CPPRD(x2590.c1,1);
	 x2592=_AOptimReuse_25(x2590.c1,x2588);
	 x2595=_AOptimReuse_32(x1,x2590.c1,__AOptimReuse_48,x2592,x2585,x2586);r.c1=x2595.c1;
	 PRD(4,14,x2597);FLD(x2597,1)=x2588;FLD(x2597,2)=x2587;FLD(x2597,3)=x2595.c2;FLD(x2597,4)=x2595.c3;
	 r.c2=_AOptimReuse_44(x2597,x2590.c2);}}break;
      case 10:
       {OBJ x2601=FLD(x2473,3);
	if(x_x3){
	 DSPRDF(x3);
	}else{
	 FRPRD(x3,1);}
	CPPRD(x2473,1);
	{OBJ x2603;OBJ x2604;TUP2 x2606;OBJ x2607;OBJ x2608;
	 x2603=_AIc_90(x2473);
	 x2604=_AIc_89(x2473);
	 x2606=_AOptimReuse_27(x1,x2,x2474);r.c1=x2606.c1;
	 CPPRD(r.c1,1);
	 x2607=_AOptimReuse_25(r.c1,x2603);
	 PRD(3,10,x2608);FLD(x2608,1)=x2607;FLD(x2608,2)=x2604;FLD(x2608,3)=x2601;
	 r.c2=_AOptimReuse_44(x2608,x2606.c2);}}break;
      case 8:
       {OBJ x2610=FLD(x2473,1);OBJ x2611=FLD(x2473,2);
	CPPRD(x2610,1);CPPRD(x2611,1);
	if(x_x3){
	 DSPRDF(x3);
	}else{
	 FRPRD(x3,1);}
	{OBJ x2614;TUP2 x2615;OBJ x2618;TUP2 x2620;OBJ x2621;
	 x2614=_AIc_97(x2473);
	 x2615=_AOptimReuse_27(x1,x2,x2474);
	 CPPRD(x2615.c1,1);
	 x2618=_AOptimReuse_25(x2615.c1,x2611);
	 x2620=_AOptimReuse_24(x2615.c1,x2614);r.c1=x2620.c1;
	 PRD(3,8,x2621);FLD(x2621,1)=x2610;FLD(x2621,2)=x2618;FLD(x2621,3)=x2620.c2;
	 r.c2=_AOptimReuse_44(x2621,x2615.c2);}}break;
      case 5:
       if(x_x3){
	DSPRDF(x3);
       }else{
	FRPRD(x3,1);}
       CPPRD(x2473,2);
       CPCLS(__AOptimReuse_24,1);
       CPCLS(__AOptimReuse_25,1);
       {OBJ x2627;OBJ x2628;OBJ x2629;TUP2 x2630;OBJ x2632;OBJ x2634;TUP2 x2636;OBJ x2637;
	x2627=_AIc_90(x2473);
	x2628=_AIc_98(x2473);
	x2629=_AIc_129(x2473);
	x2630=_AOptimReuse_27(x1,x2,x2474);
	CPPRD(x2630.c1,1);
	x2632=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_25,1))(__AOptimReuse_25,x2630.c1);
	x2634=_ASeqMap_3(x2632,x2628);
	x2636=_ASeqMapEnv_4(__AOptimReuse_24,x2630.c1,x2629);r.c1=x2636.c1;
	PRD(3,5,x2637);FLD(x2637,1)=x2627;FLD(x2637,2)=x2634;FLD(x2637,3)=x2636.c2;
	r.c2=_AOptimReuse_44(x2637,x2630.c2);}break;
      case 6:
       if(x_x3){
	DSPRDF(x3);
       }else{
	FRPRD(x3,1);}
       CPPRD(x2473,2);
       CPCLS(__AOptimReuse_24,1);
       CPCLS(__AOptimReuse_25,1);
       {OBJ x2642;OBJ x2643;OBJ x2644;TUP2 x2646;OBJ x2648;OBJ x2649;TUP2 x2652;OBJ x2653;
	x2642=_AIc_129(x2473);
	x2643=_AIc_98(x2473);
	x2644=_AIc_90(x2473);
	x2646=_AOptimReuse_27(x1,x2,x2474);
	CPPRD(x2646.c1,1);
	x2648=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_25,1))(__AOptimReuse_25,x2646.c1);
	x2649=_ASeqMap_3(x2648,x2643);
	x2652=_ASeqMapEnv_4(__AOptimReuse_24,x2646.c1,x2642);r.c1=x2652.c1;
	PRD(3,6,x2653);FLD(x2653,1)=x2644;FLD(x2653,2)=x2649;FLD(x2653,3)=x2652.c2;
	r.c2=_AOptimReuse_44(x2653,x2646.c2);}break;
      case 4:
       if(x_x3){
	DSPRDF(x3);
       }else{
	FRPRD(x3,1);}
       {OBJ x2657=FLD1(x1,1);
	CPPRD(x2657,1);
	CPPRD(x2473,2);
	{OBJ x2662;OBJ x2663;OBJ x2664;
	 x2662=_APreparedOptions_23(x2657);
	 x2663=_AIc_129(x2473);
	 x2664=_AIc_98(x2473);
	 if(ISTGPRM(x2662,1)){
	  if(EXPRD(x2473,1)){
	   DSPRD(x2473);
	  }else{
	   DCPRD(x2473,1);}
	  CPPRD(x1,1);
	  CPCLS(__AOptimReuse_24,1);
	  CPCLS(__AOptimReuse_25,1);
	  {TUP2 x2666;OBJ x2668;OBJ x2669;TUP2 x2671;
	   x2666=_AOptimReuse_27(x1,x2,x2474);
	   CPPRD(x2666.c1,1);
	   x2668=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_25,1))(__AOptimReuse_25,x2666.c1);
	   x2669=_ASeqMap_3(x2668,x2664);
	   x2671=_ASeqMapEnv_4(__AOptimReuse_24,x2666.c1,x2663);
	   {OBJ x2673=FLD1(x2671.c1,1);OBJ x2674=FLD1(x2671.c1,2);FLAG x_x2671_c1=EXPRD(x2671.c1,1);
	    if(x_x2671_c1){
	    }else{
	     COPY(x2673,1);COPY(x2674,1);}
	    {TUP3 x2676;OBJ x2681;OBJ x2682;
	     x2676=_AOptimReuse_28(x1,x2674,x2669,x2671.c2);
	     if(ISPRM(x2676.c3)){
	      x2681=__ABUILTIN_5;
	     }else{
	      x2681=__ABUILTIN_3;}
	     if(x_x2671_c1){
	      RSOME(x2671.c1,x2682);FLD1(x2682,2)=x2676.c1;
	     }else{
	      FRPRD(x2671.c1,1);PRD1(2,x2682);FLD1(x2682,1)=x2673;FLD1(x2682,2)=x2676.c1;}
	     if(ISTGPRM(x2681,1)){
	      r.c2=x2666.c2;r.c1=x2682;
	      FREE(x2676.c2,1);
	      FREE(x2676.c3,1);
	     }else{
	      r.c1=x2682;
	      {OBJ x2683;
	       PRD(2,4,x2683);FLD(x2683,1)=x2676.c2;FLD(x2683,2)=x2676.c3;
	       r.c2=_AOptimReuse_44(x2683,x2666.c2);}}}}}
	 }else{
	  FREE(x2663,1);
	  FREE(x2664,1);
	  {TUP2 x2687;
	   x2687=_AOptimReuse_27(x1,x2,x2474);r.c1=x2687.c1;
	   r.c2=_AOptimReuse_44(x2473,x2687.c2);}}}}break;
      case 1:
       if(x_x3){
	DSPRDF(x3);
       }else{
	FRPRD(x3,1);}
       {TUP2 x2692;
	x2692=_AOptimReuse_27(x1,x2,x2474);r.c1=x2692.c1;
	r.c2=_AOptimReuse_44(x2473,x2692.c2);}break;
      case 2:
       FRPRD(x1,1);
       FREE(x2474,1);
       if(x_x3){
	RSOME(x3,r.c2);FLD1(r.c2,2)=__ASeq_6;
       }else{
	FRPRD(x3,1);PRD1(2,r.c2);FLD1(r.c2,1)=x2473;FLD1(r.c2,2)=__ASeq_6;}
       r.c1=x2;break;
      case 12:
       HLT("OptimReuse at <123,5-7> : missing else in opt\'OptimReuse:inh**syn**seq->syn**seq");break;
      default: 
       FRPRD(x1,1);
       FREE(x2474,1);
       if(x_x3){
	RSOME(x3,r.c2);FLD1(r.c2,2)=__ASeq_6;
       }else{
	FRPRD(x3,1);PRD1(2,r.c2);FLD1(r.c2,1)=x2473;FLD1(r.c2,2)=__ASeq_6;}
       r.c1=x2;}}}}
  break;}
 return r;}
extern OBJ _AOptimReuse_27_c(OBJ x1,OBJ x2,OBJ x3) /* opt */
{OBJ r;
 {TUP2 t=_AOptimReuse_27(x1,x2,x3);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP3 _AOptimReuse_28(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* partitionAssign */
{TUP3 r;
 if(ISPRM(x3)){
  FRPRD(x1,1);
  if(ISPRM(x4)){
   r.c1=x2;r.c2=__ASeq_6;r.c3=__ASeq_6;
  }else{
   HLT("OptimReuse at <164,7-21> : missing else in partitionAssign\'OptimReuse:inh**ideMap**seq**seq->ideMap**seq**seq");}
 }else{
  {OBJ x128=FLD1(x3,1);OBJ x129=FLD1(x3,2);FLAG x_x3=EXPRD(x3,1);
   if(x_x3){
   }else{
    CPPRD(x128,1);COPY(x129,1);}
   if(ISPRM(x4)){
    HLT("OptimReuse at <164,7-21> : missing else in partitionAssign\'OptimReuse:inh**ideMap**seq**seq->ideMap**seq**seq");
   }else{
    {OBJ x130=FLD1(x4,1);OBJ x131=FLD1(x4,2);FLAG x_x4=EXPRD(x4,1);
     if(x_x4){
     }else{
      CPPRD(x130,1);COPY(x131,1);}
     {OBJ x138;OBJ x144;OBJ x145;OBJ x146;OBJ x147;
      if(ISTGPRD(x128,0)){
       x138=__ABUILTIN_5;
      }else{
       x138=__ABUILTIN_3;}
      if(ISTGPRM(x138,1)){
       x144=__ABUILTIN_5;
      }else{
       {OBJ x142=FLD1(x1,4);
	COPY(x142,1);
	CPPRD(x128,1);
	CPCLS(__AIde_14,1);
	x144=_ABSTree_61(__AIde_14,x128,x142);}}
      {TUP3 t=_AOptimReuse_28(x1,x2,x129,x131);
       x145=t.c1;
       x146=t.c2;
       x147=t.c3;}
      if(ISTGPRM(x144,1)){
       r.c1=x145;
       if(x_x4){
	RSOME(x4,r.c3);FLD1(r.c3,2)=x147;
       }else{
	FRPRD(x4,1);PRD1(2,r.c3);FLD1(r.c3,1)=x130;FLD1(r.c3,2)=x147;}
       if(x_x3){
	RSOME(x3,r.c2);FLD1(r.c2,2)=x146;
       }else{
	FRPRD(x3,1);PRD1(2,r.c2);FLD1(r.c2,1)=x128;FLD1(r.c2,2)=x146;}
      }else{
       CPPRD(x128,1);
       COPY(x145,1);
       CPCLS(__AIde_14,1);
       {OBJ x150;
	x150=_AMap_20(__AIde_14,x128,x145);
	if(ISTGPRM(x150,1)){
	 r.c1=x145;
	 COPY(r.c1,1);
	 CPCLS(__AIde_14,1);
	 {OBJ x151;
	  x151=_AMap_16(__AIde_14,r.c1,x128);
	  if(x_x4){
	   RSOME(x4,r.c3);FLD1(r.c3,2)=x147;
	  }else{
	   FRPRD(x4,1);PRD1(2,r.c3);FLD1(r.c3,1)=x130;FLD1(r.c3,2)=x147;}
	  if(x_x3){
	   RSOME(x3,r.c2);FLD1(r.c2,1)=x151;FLD1(r.c2,2)=x146;
	  }else{
	   FRPRD(x3,1);PRD1(2,r.c2);FLD1(r.c2,1)=x151;FLD1(r.c2,2)=x146;}}
	}else{
	 if(x_x3){
	  DSPRDF(x3);
	 }else{
	  FRPRD(x3,1);}
	 if(x_x4){
	  DSPRDF(x4);
	 }else{
	  FRPRD(x4,1);}
	 r.c2=x146;r.c3=x147;
	 CPCLS(__AIde_14,1);
	 r.c1=_AMap_31(__AIde_14,x128,x130,x145);}}}}}}}}
 return r;}
extern OBJ _AOptimReuse_28_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* partitionAssign */
{OBJ r;
 {TUP3 t=_AOptimReuse_28(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 _AOptimReuse_29(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* findBestCand */
{OBJ r;
 {OBJ x79=FLD1(x4,2);
  if(EXPRD(x4,1)){
   FRPRD(FLD1(x4,1),1);DSPRDF(x4);
  }else{
   CPPRD(x79,1);
   FRPRD(x4,1);}
  {OBJ x80=FLD1(x79,1);OBJ x81=FLD1(x79,2);OBJ x82=FLD1(x79,3);FLAG x_x79=EXPRD(x79,1);
   if(x_x79){
    CPPRD(x80,1);
   }else{
    CPPRD(x80,2);COPY(x81,1);COPY(x82,1);}
   CPCLS(__AIde_14,1);
   {OBJ x83;
    x83=_AMap_20(__AIde_14,x80,x1);
    if(ISTGPRM(x83,1)){
     if(x_x79){
      DSPRDF(x79);
     }else{
      FRPRD(x79,1);}
     FREE(x2,1);
     FREE(x3,1);
     FRPRD(x80,1);
     FREE(x81,1);
     FREE(x82,1);
     r=x5;
    }else{
     COPY(x81,1);
     {OBJ x84;
      x84=_AOptimReuse_31(x2,x81);
      if(ISTGPRM(x84,1)){
       {OBJ x86;OBJ x88;OBJ x89;
	if(ISPRM(x5)){
	 x86=__ABUILTIN_3;
	}else{
	 x86=__ABUILTIN_5;}
	{TUP2 t=_AOptimReuse_30(x82,x3);
	 x88=t.c1;
	 x89=t.c2;}
	if(ISTGPRM(x86,1)){
	 {OBJ x91;
	  if(ISPRM(x5)){
	   HLT("Option at <unknown> : undefined selection cont\'Option:option->data");
	  }else{
	   {OBJ x90=FLD1(x5,1);
	    CPPRD(x90,1);
	    x91=x90;}}
	  {OBJ x94=FLD1(x91,3);
	   if(EXPRD(x91,1)){
	    FLD1(x91,3)=NIL;DSPRD(x91);
	   }else{
	    COPY(x94,1);
	    FRPRD(x91,1);}
	   CPCLS(__AIc_59,1);
	   {OBJ x95;OBJ x96;OBJ x97;
	    x95=_ASeqFilter_2(__AIc_59,x94);
	    x96=_ASeq_52(x95,__ANat_5);
	    ANat_81(x89,x96,x97);
	    if(ISTGPRM(x97,1)){
	     FREE(x5,1);
	     {OBJ x98;
	      if(x_x79){
	       RSOME(x79,x98);FLD1(x98,3)=x88;
	      }else{
	       FRPRD(x79,1);PRD1(3,x98);FLD1(x98,1)=x80;FLD1(x98,2)=x81;FLD1(x98,3)=x88;}
	      PRD1(1,r);FLD1(r,1)=x98;}
	    }else{
	     if(x_x79){
	      DSPRDF(x79);
	     }else{
	      FRPRD(x79,1);}
	     FRPRD(x80,1);
	     FREE(x81,1);
	     FREE(x88,1);
	     r=x5;}}}}
	}else{
	 FREE(x5,1);
	 {OBJ x99;
	  if(x_x79){
	   RSOME(x79,x99);FLD1(x99,3)=x88;
	  }else{
	   FRPRD(x79,1);PRD1(3,x99);FLD1(x99,1)=x80;FLD1(x99,2)=x81;FLD1(x99,3)=x88;}
	  PRD1(1,r);FLD1(r,1)=x99;}}}
      }else{
       if(x_x79){
	DSPRDF(x79);
       }else{
	FRPRD(x79,1);}
       FREE(x3,1);
       FRPRD(x80,1);
       FREE(x81,1);
       FREE(x82,1);
       r=x5;}}}}}}
 return r;}

extern TUP2 _AOptimReuse_30(OBJ x1,OBJ x2) /* genReuseSels */
{TUP2 r;
 if(ISPRM(x1)){
  FREE(x2,1);
  r.c1=__ASeq_6;r.c2=__ANat_5;
 }else{
  {OBJ x39=FLD1(x1,1);OBJ x40=FLD1(x1,2);FLAG x_x1=EXPRD(x1,1);
   if(x_x1){
   }else{
    CPPRD(x39,1);COPY(x40,1);}
   {OBJ x43;OBJ x49;OBJ x54;OBJ x55;OBJ x56;
    if(ISPRM(x2)){
     HLT("Seq at <unknown> : undefined selection rt\'Seq:seq->seq");
    }else{
     {OBJ x42=FLD1(x2,2);
      COPY(x42,1);
      x43=x42;}}
    if(ISTGPRD(x39,2)){
     x49=__ABUILTIN_5;
    }else{
     x49=__ABUILTIN_3;}
    if(ISTGPRM(x49,1)){
     {OBJ x52;OBJ x53;
      if(ISPRM(x2)){
       HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
      }else{
       {OBJ x50=FLD1(x2,1);
	if(EXPRD(x2,1)){
	 x52=x50;
	 FREE(FLD1(x2,2),1);DSPRDF(x2);
	}else{
	 CPPRD(x50,1);
	 x52=x50;
	 FRPRD(x2,1);}
	CPPRD(x39,1);}}
      x53=_AIc_62(x39);
      x54=_AIde_13(x53,x52);}
    }else{
     FREE(x2,1);
     x54=__ABUILTIN_3;}
    {TUP2 t=_AOptimReuse_30(x40,x43);
     x55=t.c1;
     x56=t.c2;}
    if(ISTGPRM(x54,1)){
     CPPRD(x39,2);
     {OBJ x58;OBJ x59;OBJ x60;OBJ x61;
      ANat_2(x56,r.c2);
      x58=_AIc_60(x39);
      x59=_AIc_61(x39);
      x60=_AIc_62(x39);
      PRD(3,3,x61);FLD(x61,1)=x60;FLD(x61,2)=x59;FLD(x61,3)=x58;
      if(x_x1){
       RSOME(x1,r.c1);FLD1(r.c1,1)=x61;FLD1(r.c1,2)=x55;
      }else{
       FRPRD(x1,1);PRD1(2,r.c1);FLD1(r.c1,1)=x61;FLD1(r.c1,2)=x55;}}
    }else{
     r.c2=x56;
     if(x_x1){
      RSOME(x1,r.c1);FLD1(r.c1,2)=x55;
     }else{
      FRPRD(x1,1);PRD1(2,r.c1);FLD1(r.c1,1)=x39;FLD1(r.c1,2)=x55;}}}}}
 return r;}
extern OBJ _AOptimReuse_30_c(OBJ x1,OBJ x2) /* genReuseSels */
{OBJ r;
 {TUP2 t=_AOptimReuse_30(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AOptimReuse_31(OBJ x1,OBJ x2) /* reusable */
{OBJ r;
 {OBJ x5;OBJ x8;OBJ x18;
  if(ISPRD(x1)&&(ISTGPRD(x1,6))){
   x5=__ABUILTIN_5;
  }else{
   x5=__ABUILTIN_3;}
  if(ISTGPRM(x5,1)){
   if(ISPRD(x2)&&(ISTGPRD(x2,6))){
    x8=__ABUILTIN_5;
   }else{
    x8=__ABUILTIN_3;}
  }else{
   x8=__ABUILTIN_3;}
  if(ISTGPRM(x8,1)){
   x18=__ABUILTIN_5;
  }else{
   if(ISPRD(x1)&&(ISTGPRD(x1,5))){
    if(ISPRD(x2)&&(ISTGPRD(x2,5))){
     x18=__ABUILTIN_5;
    }else{
     x18=__ABUILTIN_3;}
   }else{
    x18=__ABUILTIN_3;}}
  if(ISTGPRM(x18,1)){
   {OBJ x19;OBJ x20;OBJ x21;OBJ x22;
    x19=_AStore_4(x1);
    x20=_AStore_4(x2);
    x21=_ASeq_52(x19,__ANat_5);
    x22=_ASeq_52(x20,__ANat_5);
    ANat_76(x21,x22,r);}
  }else{
   FREE(x1,1);
   FREE(x2,1);
   r=__ABUILTIN_3;}}
 return r;}

extern TUP3 _AOptimReuse_32(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* optPathes */
{TUP3 r;
 if(ISPRM(x5)){
  FRPRD(x4,1);
  CPPRD(x1,1);
  {OBJ x42;TUP2 x44;OBJ x46;OBJ x47;OBJ x48;OBJ x49;OBJ x52;
   PRD1(2,x42);FLD1(x42,1)=x6;FLD1(x42,2)=__ASeq_6;
   x44=_AOptimReuse_27(x1,x2,x42);
   CPPRD(x44.c1,1);
   x46=_AOptimReuse_35(x3,x44.c1);
   CPPRD(x46,1);
   x47=_AOptimReuse_40(x1,x46,x44.c1,x44.c2);
   COPY(x47,1);
   x48=_ASeq_52(x47,__ANat_5);
   ANat_76(x48,__ANat_8,x49);
   if(ISTGPRM(x49,1)){
    if(ISPRM(x47)){
     HLT("Seq at <unknown> : undefined selection ft\'Seq:seq->data");
    }else{
     {OBJ x50=FLD1(x47,1);
      if(EXPRD(x47,1)){
       r.c1=x46;r.c3=x50;
       FREE(FLD1(x47,2),1);DSPRDF(x47);
      }else{
       COPY(x50,1);
       r.c1=x46;r.c3=x50;
       FRPRD(x47,1);}}}
   }else{
    r.c1=x46;
    PRD(2,13,r.c3);FLD(r.c3,1)=__ASeq_6;FLD(r.c3,2)=x47;}
   r.c2=__ASeq_6;}
 }else{
  {OBJ x53=FLD1(x5,1);OBJ x54=FLD1(x5,2);
   if(EXPRD(x5,1)){
    CPPRD(x1,2);
    CPPRD(x2,1);
    CPPRD(x4,1);
    {TUP2 x57;OBJ x59;TUP3 x62;
     x57=_AOptimReuse_33(x1,x2,x4,x53);
     CPPRD(x57.c1,1);
     x59=_AOptimReuse_35(x3,x57.c1);
     x62=_AOptimReuse_32(x1,x2,x59,x4,x54,x6);r.c1=x62.c1;r.c3=x62.c3;
     CPPRD(r.c1,1);
     RSOME(x5,r.c2);FLD1(r.c2,2)=x62.c2;
     FLD1(r.c2,1)=_AOptimReuse_39(x1,r.c1,x57.c1,x57.c2);}
   }else{
    CPPRD(x53,1);COPY(x54,1);
    CPPRD(x1,2);
    CPPRD(x2,1);
    CPPRD(x4,1);
    {TUP2 x57;OBJ x59;TUP3 x62;
     x57=_AOptimReuse_33(x1,x2,x4,x53);
     CPPRD(x57.c1,1);
     x59=_AOptimReuse_35(x3,x57.c1);
     x62=_AOptimReuse_32(x1,x2,x59,x4,x54,x6);r.c1=x62.c1;r.c3=x62.c3;
     CPPRD(r.c1,1);
     FRPRD(x5,1);PRD1(2,r.c2);FLD1(r.c2,2)=x62.c2;
     FLD1(r.c2,1)=_AOptimReuse_39(x1,r.c1,x57.c1,x57.c2);}}}}
 return r;}
extern OBJ _AOptimReuse_32_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* optPathes */
{OBJ r;
 {TUP3 t=_AOptimReuse_32(x1,x2,x3,x4,x5,x6);
  PRD1(3,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;
  FLD1(r,3)=t.c3;}
 return r;}

extern TUP2 _AOptimReuse_33(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* optMatch */
{TUP2 r;
 {OBJ x150=FLD1(x4,1);OBJ x151=FLD1(x4,2);OBJ x152=FLD1(x4,3);OBJ x153=FLD1(x4,4);FLAG x_x4=EXPRD(x4,1);
  if(x_x4){
  }else{
   COPY(x150,1);COPY(x151,1);COPY(x152,1);COPY(x153,1);}
  {OBJ x157;OBJ x163;OBJ x165;OBJ x166;
   if(ISTGPRD(x3,1)){
    x157=__ABUILTIN_5;
   }else{
    x157=__ABUILTIN_3;}
   if(ISTGPRM(x157,1)){
    {OBJ x158=FLD1(x1,1);
     CPPRD(x158,1);
     x163=_APreparedOptions_21(x158);}
   }else{
    x163=__ABUILTIN_3;}
   if(ISTGPRM(x163,1)){
    CPPRD(x3,1);
    {TUP2 t=_AOptimReuse_34(x3,x153);
     x165=t.c1;
     x166=t.c2;}
   }else{
    x166=x153;
    x165=__AOption_5;}
   if(ISPRM(x165)){
    FRPRD(x3,1);
    {
     if(x_x4){
      RSOME(x4,r.c2);
     }else{
      FRPRD(x4,1);PRD1(4,r.c2);FLD1(r.c2,1)=x150;FLD1(r.c2,2)=x151;FLD1(r.c2,3)=x152;}
     {TUP2 t=_AOptimReuse_27(x1,x2,x166);
      r.c1=t.c1;
      FLD1(r.c2,4)=t.c2;}}
   }else{
    {OBJ x167=FLD1(x165,1);
     if(EXPRD(x165,1)){
      DSPRDF(x165);
     }else{
      COPY(x167,1);
      FRPRD(x165,1);}
     {OBJ x168;OBJ x169;OBJ x170;OBJ x171;OBJ x172=FLD1(x1,5);FLAG x_x1=EXPRD(x1,1);
      if(x_x1){
      }else{
       x168=FLD1(x1,1);x169=FLD1(x1,2);x170=FLD1(x1,3);x171=FLD1(x1,4);CPPRD(x168,1);CPPRD(x169,1);CPPRD(x170,1);COPY(x171,1);COPY(x172,1);}
      CPPRD(x3,2);
      COPY(x151,1);
      COPY(x152,1);
      CPCLS(__AIde_14,1);
      {OBJ x173;OBJ x174;OBJ x175;TUP2 x177;
       PRD1(3,x173);FLD1(x173,1)=x3;FLD1(x173,2)=x151;FLD1(x173,3)=x152;
       x174=_AMap_31(__AIde_14,x3,x173,x172);
       if(x_x1){
	RSOME(x1,x175);FLD1(x175,5)=x174;
       }else{
	FRPRD(x1,1);PRD1(5,x175);FLD1(x175,1)=x168;FLD1(x175,2)=x169;FLD1(x175,3)=x170;FLD1(x175,4)=x171;FLD1(x175,5)=x174;}
       x177=_AOptimReuse_27(x175,x2,x166);
       {OBJ x179=FLD1(x177.c1,1);OBJ x180=FLD1(x177.c1,2);
	COPY(x179,2);COPY(x180,1);
	CPPRD(x3,1);
	CPCLS(__AIde_14,1);
	{OBJ x181;
	 x181=_AMap_20(__AIde_14,x3,x179);
	 if(ISTGPRM(x181,1)){
	  FREE(x152,1);
	  FREE(x167,1);
	  if(EXPRD(x177.c1,1)){
	   DSPRD(x177.c1);
	  }else{
	   DCPRD(x177.c1,1);}
	  CPPRD(x3,1);
	  COPY(x179,1);
	  CPCLS(__AIde_14,2);
	  {OBJ x182;OBJ x183;
	   x182=_AMap_16(__AIde_14,x179,x3);
	   x183=_AMap_8(__AIde_14,x3,x179);
	   {OBJ x186=FLD1(x182,3);
	    if(EXPRD(x182,1)){
	     FLD1(x182,3)=NIL;DSPRD(x182);
	    }else{
	     COPY(x186,1);
	     FRPRD(x182,1);}
	    if(x_x4){
	     RSOME(x4,r.c2);FLD1(r.c2,3)=x186;FLD1(r.c2,4)=x177.c2;
	    }else{
	     FRPRD(x4,1);PRD1(4,r.c2);FLD1(r.c2,1)=x150;FLD1(r.c2,2)=x151;FLD1(r.c2,3)=x186;FLD1(r.c2,4)=x177.c2;}
	    PRD1(2,r.c1);FLD1(r.c1,1)=x183;FLD1(r.c1,2)=x180;}}
	 }else{
	  r.c1=x177.c1;
	  FRPRD(x3,1);
	  FREE(x179,1);
	  FREE(x180,1);
	  {
	   if(x_x4){
	    RSOME(x4,r.c2);
	   }else{
	    FRPRD(x4,1);PRD1(4,r.c2);FLD1(r.c2,1)=x150;FLD1(r.c2,2)=x151;FLD1(r.c2,3)=x152;}
	   FLD1(r.c2,4)=_AOptimReuse_44(x167,x177.c2);}}}}}}}}}}
 return r;}
extern OBJ _AOptimReuse_33_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* optMatch */
{OBJ r;
 {TUP2 t=_AOptimReuse_33(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AOptimReuse_34(register OBJ x1,register OBJ x2) /* findFollowingFree */
{TUP2 r;OBJ* p1=&r.c1;OBJ* p2=&r.c2;
 for(;;){
  if(ISPRM(x2)){
   FRPRD(x1,1);
   *p1=__AOption_5;*p2=__ASeq_6;
  }else{
   {OBJ x36=FLD1(x2,1);OBJ x37=FLD1(x2,2);FLAG x_x2=EXPRD(x2,1);
    if(x_x2){
    }else{
     COPY(x36,1);COPY(x37,1);}
    {OBJ x42;OBJ x52;
     if(ISPRD(x36)&&(ISTGPRD(x36,10))){
      x42=__ABUILTIN_5;
     }else{
      x42=__ABUILTIN_3;}
     if(ISTGPRM(x42,1)){
      CPPRD(x1,1);
      COPY(x36,1);
      {OBJ x43;OBJ x44;
       x43=_AIc_90(x36);
       x44=_AIde_13(x43,x1);
       if(ISTGPRM(x44,1)){
	{OBJ x51;
	 if(ISPRD(x36)&&(ISTGPRD(x36,10)||ISTGPRD(x36,9))){
	  {OBJ x47=FLD(x36,3);
	   x51=x47;}
	 }else{
	  HLT("Ic at <unknown> : undefined selection times\'Ic:stm->nat");}
	 ANat_76(x51,__ANat_8,x52);}
       }else{
	x52=__ABUILTIN_3;}}
     }else{
      x52=__ABUILTIN_3;}
     if(ISTGPRM(x52,1)){
      if(x_x2){
       DSPRDF(x2);
      }else{
       FRPRD(x2,1);}
      *p2=x37;
      FRPRD(x1,1);
      PRD1(1,*p1);FLD1(*p1,1)=x36;
     }else{
      {
       if(x_x2){
	RSOME(x2,*p2);
       }else{
	FRPRD(x2,1);PRD1(2,*p2);FLD1(*p2,1)=x36;}
       x2=x37;p2=&FLD1(*p2,2);continue;}}}}}
  break;}
 return r;}
extern OBJ _AOptimReuse_34_c(OBJ x1,OBJ x2) /* findFollowingFree */
{OBJ r;
 {TUP2 t=_AOptimReuse_34(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AOptimReuse_35(OBJ x1,OBJ x2) /* meet */
{OBJ r;
 {OBJ x11=FLD1(x1,1);
  if(EXPRD(x1,1)){
   FREE(FLD1(x1,2),1);DSPRDF(x1);
  }else{
   COPY(x11,1);
   FRPRD(x1,1);}
  {OBJ x13=FLD1(x2,1);
   if(EXPRD(x2,1)){
    CPCLS(__AOptimReuse_36,1);
    CPCLS(__AIde_14,1);
    COPY(__AIdeMap_3,1);
    {OBJ x15;OBJ x16;
     x15=x13;
     x16=_AMapConv_4(__AIde_14,x15);
     RSOME(x2,r);FREE(FLD1(r,2),1);FLD1(r,2)=__AIdeMap_3;
     FLD1(r,1)=_ASeqReduce_3(__AOptimReuse_36,x11,x16);}
   }else{
    COPY(x13,1);
    CPCLS(__AOptimReuse_36,1);
    CPCLS(__AIde_14,1);
    COPY(__AIdeMap_3,1);
    {OBJ x15;OBJ x16;
     x15=x13;
     x16=_AMapConv_4(__AIde_14,x15);
     FRPRD(x2,1);PRD1(2,r);FLD1(r,2)=__AIdeMap_3;
     FLD1(r,1)=_ASeqReduce_3(__AOptimReuse_36,x11,x16);}}}}
 return r;}

extern OBJ _AOptimReuse_36(OBJ x1,OBJ x2) /* meetReuse */
{OBJ r;
 {OBJ x49=FLD1(x1,2);
  if(EXPRD(x1,1)){
   FRPRD(FLD1(x1,1),1);DSPRDF(x1);
  }else{
   CPPRD(x49,1);
   FRPRD(x1,1);}
  {OBJ x50=FLD1(x49,1);OBJ x51=FLD1(x49,2);OBJ x52=FLD1(x49,3);FLAG x_x49=EXPRD(x49,1);
   if(x_x49){
    CPPRD(x50,1);
   }else{
    CPPRD(x50,2);COPY(x51,1);COPY(x52,1);}
   COPY(x2,1);
   CPCLS(__AIde_14,1);
   {OBJ x53;OBJ x60;
    x53=_AMap_20(__AIde_14,x50,x2);
    if(ISTGPRM(x53,1)){
     COPY(x2,1);
     CPPRD(x50,1);
     CPCLS(__AIde_14,1);
     {OBJ x54;
      x54=_AMap_16(__AIde_14,x2,x50);
      {OBJ x57=FLD1(x54,3);
       if(EXPRD(x54,1)){
	FLD1(x54,3)=NIL;DSPRD(x54);
       }else{
	COPY(x57,1);
	FRPRD(x54,1);}
       CPCLS(__AOptimReuse_37,1);
       {OBJ x58;
	x58=_ASeqZip_4(__AOptimReuse_37,x52,x57);
	if(x_x49){
	 RSOME(x49,x60);FLD1(x60,3)=x58;
	}else{
	 FRPRD(x49,1);PRD1(3,x60);FLD1(x60,1)=x50;FLD1(x60,2)=x51;FLD1(x60,3)=x58;}}}}
    }else{
     CPCLS(__AOptimReuse_38,1);
     {OBJ x59;
      x59=_ASeqMap_3(__AOptimReuse_38,x52);
      if(x_x49){
       RSOME(x49,x60);FLD1(x60,3)=x59;
      }else{
       FRPRD(x49,1);PRD1(3,x60);FLD1(x60,1)=x50;FLD1(x60,2)=x51;FLD1(x60,3)=x59;}}}
    {OBJ x61=FLD1(x60,1);
     CPPRD(x61,1);
     CPCLS(__AIde_14,1);
     r=_AMap_31(__AIde_14,x61,x60,x2);}}}}
 return r;}

extern OBJ _AOptimReuse_37(OBJ x1,OBJ x2) /* meetSel */
{OBJ r;
 {OBJ x6;OBJ x10;
  if(ISTGPRD(x1,3)){
   x6=__ABUILTIN_5;
  }else{
   x6=__ABUILTIN_3;}
  if(ISTGPRM(x6,1)){
   if(ISTGPRD(x2,3)){
    x10=__ABUILTIN_5;
   }else{
    x10=__ABUILTIN_3;}
  }else{
   x10=__ABUILTIN_3;}
  if(ISTGPRM(x10,1)){
   FRPRD(x2,1);
   r=x1;
  }else{
   if(ISTGPRM(x6,1)){
    FRPRD(x1,1);
    r=x2;
   }else{
    if(ISTGPRD(x2,3)){
     if(EXPRD(x2,1)){
      DSPRD(x2);
     }else{
      DCPRD(x2,1);}
     r=x1;
    }else{
     FRPRD(x2,1);
     r=x1;}}}}
 return r;}

extern OBJ _AOptimReuse_38(OBJ x1) /* killReuse */
{OBJ r;
 if(ISTGPRD(x1,3)){
  CPPRD(x1,2);
  {OBJ x12;OBJ x13;
   x12=_AIc_60(x1);
   x13=_AIc_61(x1);
   PRD(3,2,r);FLD(r,2)=x13;FLD(r,3)=x12;
   FLD(r,1)=_AIc_62(x1);}
 }else{
  r=x1;}
 return r;}

extern OBJ _AOptimReuse_39(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* balance */
{OBJ r;
 {OBJ x26;OBJ x27;OBJ x28;OBJ x29=FLD1(x4,4);
  if(EXPRD(x4,1)){
   {
    RSOME(x4,r);
    FLD1(r,4)=_AOptimReuse_40(x1,x2,x3,x29);}
  }else{
   x26=FLD1(x4,1);x27=FLD1(x4,2);x28=FLD1(x4,3);COPY(x26,1);COPY(x27,1);COPY(x28,1);COPY(x29,1);
   {
    FRPRD(x4,1);PRD1(4,r);FLD1(r,1)=x26;FLD1(r,2)=x27;FLD1(r,3)=x28;
    FLD1(r,4)=_AOptimReuse_40(x1,x2,x3,x29);}}}
 return r;}

extern OBJ _AOptimReuse_40(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* balance,1 */
{OBJ r;
 FRPRD(x1,1);
 {OBJ x27=FLD1(x3,1);OBJ x28=FLD1(x3,2);
  if(EXPRD(x3,1)){
   DSPRDF(x3);
  }else{
   COPY(x27,1);COPY(x28,1);
   FRPRD(x3,1);}
  {OBJ x29=FLD1(x2,1);
   if(EXPRD(x2,1)){
    FREE(FLD1(x2,2),1);DSPRDF(x2);
   }else{
    COPY(x29,1);
    FRPRD(x2,1);}
   CPCLS(__AOptimReuse_43,1);
   CPCLS(__AIde_14,2);
   {OBJ x31;OBJ x32;OBJ x33;OBJ x34;OBJ x35;
    x31=x29;
    x32=_AMapConv_4(__AIde_14,x31);
    x33=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_43,1))(__AOptimReuse_43,x27);
    x34=_AMapConv_4(__AIde_14,x28);
    x35=_ASeqReduce_3(x33,__ASeq_6,x32);
    if(ISPRM(x34)){
     r=_AOptimReuse_45(x35,x4);
    }else{
     {OBJ x38;OBJ x39;
      x38=_AOptimReuse_41(x34);
      x39=_AOptimReuse_44(x38,x4);
      r=_AOptimReuse_45(x35,x39);}}}}}
 return r;}

extern OBJ _AOptimReuse_41(OBJ x1) /* aliasAssign */
{OBJ r;
 CPCLS(__AOptimReuse_42,1);
 CPCLS(__AIde_14,1);
 CPCLS(__APair_8,1);
 COPY(__AIdeMap_3,1);
 {TUP2 x3;OBJ x5;OBJ x6;
  x3=_ASeqZip_5(__APair_8,x1);
  COPY(x3.c1,1);
  COPY(x3.c2,1);
  x5=_AMap_10(__AIde_14,__AIdeMap_3,x3.c2,x3.c1);
  x6=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_42,1))(__AOptimReuse_42,x5);
  PRD(2,4,r);FLD(r,2)=x3.c2;
  FLD(r,1)=_ASeqMap_3(x6,x3.c1);}
 return r;}

extern OBJ _AOptimReuse_42(register OBJ x1,register OBJ x2) /* renameSrc */
{OBJ r;
 for(;;){
  CPCLS(__AIde_14,1);
  COPY(x1,1);
  CPPRD(x2,1);
  {OBJ x3;
   x3=_AMap_33(__AIde_14,x1,x2);
   if(ISPRM(x3)){
    FREE(x1,1);
    r=x2;
   }else{
    {OBJ x8=FLD1(x3,1);
     if(EXPRD(x3,1)){
      DSPRDF(x3);
     }else{
      CPPRD(x8,1);
      FRPRD(x3,1);}
     FRPRD(x2,1);
     x2=x8;continue;}}}
  break;}
 return r;}

extern OBJ _AOptimReuse_43(OBJ x1,OBJ x2,OBJ x3) /* balanceReuse */
{OBJ r;
 {OBJ x28=FLD1(x2,2);
  if(EXPRD(x2,1)){
   FRPRD(FLD1(x2,1),1);DSPRDF(x2);
  }else{
   CPPRD(x28,1);
   FRPRD(x2,1);}
  {OBJ x29=FLD1(x28,1);OBJ x30=FLD1(x28,2);
   if(EXPRD(x28,1)){
    CPPRD(x29,1);
    FREE(FLD1(x28,3),1);DSPRDF(x28);
   }else{
    CPPRD(x29,2);COPY(x30,1);
    FRPRD(x28,1);}
   CPCLS(__AIde_14,1);
   {OBJ x32;
    x32=_AMap_20(__AIde_14,x29,x1);
    if(ISTGPRM(x32,1)){
     FRPRD(x29,1);
     FREE(x30,1);
     r=x3;
    }else{
     {OBJ x33;
      PRD(3,10,x33);FLD(x33,1)=x29;FLD(x33,2)=x30;FLD(x33,3)=__ANat_8;
      r=_AOptimReuse_44(x33,x3);}}}}}
 return r;}

extern OBJ _AOptimReuse_44(OBJ x1,OBJ x2) /* && */
{OBJ r;
 if(ISPRM(x2)){
  {OBJ x27;
   if(ISPRD(x1)&&(ISTGPRD(x1,1))){
    x27=__ABUILTIN_5;
   }else{
    x27=__ABUILTIN_3;}
   if(ISTGPRM(x27,1)){
    FREE(x1,1);
    r=__ASeq_6;
   }else{
    PRD1(2,r);FLD1(r,1)=x1;FLD1(r,2)=__ASeq_6;}}
 }else{
  {OBJ x29=FLD1(x2,1);
   COPY(x29,1);
   {OBJ x33;OBJ x35;
    if(ISPRD(x29)&&(ISTGPRD(x29,2))){
     x33=__ABUILTIN_5;
    }else{
     x33=__ABUILTIN_3;}
    if(ISTGPRM(x33,1)){
     if(ISPRD(x1)&&(ISTGPRD(x1,1))){
      x35=__ABUILTIN_3;
     }else{
      x35=__ABUILTIN_5;}
    }else{
     x35=__ABUILTIN_3;}
    if(ISTGPRM(x35,1)){
     FREE(x1,1);
     FREE(x29,1);
     r=x2;
    }else{
     {OBJ x38;OBJ x40;
      if(ISPRD(x29)&&(ISTGPRD(x29,3))){
       if(EXPRD(x29,1)){
	FRPRD(FLD(x29,1),1);DSPRDF(x29);
       }else{
	DCPRD(x29,1);}
       x38=__ABUILTIN_5;
      }else{
       FREE(x29,1);
       x38=__ABUILTIN_3;}
      if(ISTGPRM(x38,1)){
       if(ISPRD(x1)&&(ISTGPRD(x1,1))){
	x40=__ABUILTIN_3;
       }else{
	x40=__ABUILTIN_5;}
      }else{
       x40=__ABUILTIN_3;}
      if(ISTGPRM(x40,1)){
       FREE(x1,1);
       r=x2;
      }else{
       PRD1(2,r);FLD1(r,1)=x1;FLD1(r,2)=x2;}}}}}}
 return r;}

extern OBJ _AOptimReuse_45(OBJ x1,OBJ x2) /* &&& */
{OBJ r;
 if(ISPRM(x1)){
  r=x2;
 }else{
  {OBJ x18=FLD1(x1,1);OBJ x19=FLD1(x1,2);
   if(EXPRD(x1,1)){
    DSPRDF(x1);
   }else{
    COPY(x18,1);COPY(x19,1);
    FRPRD(x1,1);}
   {OBJ x21;
    x21=_AOptimReuse_45(x19,x2);
    r=_AOptimReuse_44(x18,x21);}}}
 return r;}

extern OBJ _AOptimReuse_46(OBJ x1,OBJ x2) /* opt'46 */
{OBJ r;
 {OBJ x3;
  x3=_AIc_30(x2);
  {OBJ x11=FLD1(x1,2);
   if(EXPRD(x1,1)){
    FRPRD(FLD1(x1,1),1);DSPRDF(x1);
   }else{
    CPPRD(x11,1);
    FRPRD(x1,1);}
   r=_AIde_13(x3,x11);}}
 return r;}

extern OBJ _AOptimReuse_47(OBJ x1,OBJ x2,OBJ x3) /* opt'47 */
{OBJ r;
 CPCLS(__AOptimReuse_46,1);
 CPPRD(x2,1);
 {OBJ x4;OBJ x5;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AOptimReuse_46,1))(__AOptimReuse_46,x2);
  x5=_ASeq_40(x4,x1);
  if(ISTGPRM(x5,1)){
   {OBJ x20=FLD1(x2,1);
    CPPRD(x20,1);
    {OBJ x30=FLD1(x3,1);OBJ x31=FLD1(x3,2);FLAG x_x3=EXPRD(x3,1);
     if(x_x3){
     }else{
      COPY(x30,1);COPY(x31,1);}
     CPCLS(__AIde_14,1);
     {OBJ x32;
      if(x_x3){
       RSOME(x3,x32);FLD1(x32,1)=x2;FLD1(x32,2)=x30;
      }else{
       FRPRD(x3,1);PRD1(2,x32);FLD1(x32,1)=x2;FLD1(x32,2)=x30;}
      PRD1(2,r);FLD1(r,1)=x32;
      FLD1(r,2)=_AMap_8(__AIde_14,x20,x31);}}}
  }else{
   FRPRD(x2,1);
   r=x3;}}
 return r;}



static OBJ _mt_5_0_3(OBJ t,OBJ t1,OBJ t2,OBJ t3) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,3);
 FLDCLS(r,1)=t1;
 FLDCLS(r,2)=t2;
 FLDCLS(r,3)=t3;
 return r;}

static OBJ _mt_5_3_2(OBJ t,OBJ t1,OBJ t2) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  COPY(FLDCLS(t,2),1);
  COPY(FLDCLS(t,3),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),t1,t2);
 return r;}

init_AOptimReuse()
{
 static int visited=0; if(visited) return; visited=1;
 init_ATree();
 init_ABitset();
 init_AMap();
 init_ASetByBST();
 init_APreparedOptions();
 init_ABSTree();
 init_AIc();
 init_AArray();
 init_ANat();
 init_ASetByBSTFilter();
 init_ASeq();
 init_ASetByBSTConv();
 init_ASet();
 init_ABSTreeConv();
 init_ANatMap();
 init_AMapConv();
 init_AIde();
 init_AStore();
 init_ASourceAn();
 init_AOption();
 init_AFormat();
 init_AString();
 init_ACom();
 init_AStream();
 init_AVoid();
 init_AFmt();
 init_AChar();
 init_AFile();
 init_AInt();
 init_APair();
 init_AOcOptions();
 init_ASeqFilter();
 init_ASeqMap();
 init_ASeqReduce();
 init_ASeqZip();
 init_ACompose();
 init_ASeqMapEnv();
 init_AIdeSet();
 init_AIdeMap();
 CLS(2,_AOptimReuse_31,__AOptimReuse_31);
 CLS(2,_AOptimReuse_30_c,__AOptimReuse_30);
 CLS(5,_AOptimReuse_29,__AOptimReuse_29);
 CLS(4,_AOptimReuse_28_c,__AOptimReuse_28);
 CLS(3,_AOptimReuse_27_c,__AOptimReuse_27);
 CLS(2,_AOptimReuse_26,__AOptimReuse_26);
 CLS(2,_AOptimReuse_25,__AOptimReuse_25);
 CLS(2,_AOptimReuse_24_c,__AOptimReuse_24);
 CLS(2,_AOptimReuse_23,__AOptimReuse_23);
 CLS(2,_AOptimReuse_22,__AOptimReuse_22);
 CLS(2,_AOptimReuse_21,__AOptimReuse_21);
 CLS(1,_AOptimReuse_20,__AOptimReuse_20);
 CLS(1,_AOptimReuse_19,__AOptimReuse_19);
 CLS(1,_AOptimReuse_18,__AOptimReuse_18);
 CLS(1,_AOptimReuse_17,__AOptimReuse_17);
 CLS(1,_AOptimReuse_16,__AOptimReuse_16);
 CLS(3,_AOptimReuse_47,__AOptimReuse_47);
 CLS(1,_AOptimReuse_15,__AOptimReuse_15);
 CLS(2,_AOptimReuse_46,__AOptimReuse_46);
 CLS(5,_AOptimReuse_14,__AOptimReuse_14);
 CLS(2,_AOptimReuse_45,__AOptimReuse_45);
 CLS(1,_AOptimReuse_12,__AOptimReuse_12);
 CLS(2,_AOptimReuse_44,__AOptimReuse_44);
 CLS(1,_AOptimReuse_11,__AOptimReuse_11);
 CLS(3,_AOptimReuse_43,__AOptimReuse_43);
 CLS(1,_AOptimReuse_10,__AOptimReuse_10);
 CLS(2,_AOptimReuse_42,__AOptimReuse_42);
 CLS(2,_AOptimReuse_9,__AOptimReuse_9);
 CLS(1,_AOptimReuse_41,__AOptimReuse_41);
 CLS(4,_AOptimReuse_40,__AOptimReuse_40);
 CLS(1,_AOptimReuse_7,__AOptimReuse_7);
 CLS(4,_AOptimReuse_39,__AOptimReuse_39);
 CLS(1,_AOptimReuse_6,__AOptimReuse_6);
 CLS(1,_AOptimReuse_38,__AOptimReuse_38);
 CLS(1,_AOptimReuse_5,__AOptimReuse_5);
 CLS(2,_AOptimReuse_37,__AOptimReuse_37);
 CLS(1,_AOptimReuse_4,__AOptimReuse_4);
 CLS(2,_AOptimReuse_36,__AOptimReuse_36);
 CLS(3,_AOptimReuse_3,__AOptimReuse_3);
 CLS(2,_AOptimReuse_35,__AOptimReuse_35);
 CLS(2,_AOptimReuse_34_c,__AOptimReuse_34);
 CLS(3,_AOptimReuse_1,__AOptimReuse_1);
 CLS(4,_AOptimReuse_33_c,__AOptimReuse_33);
 CLS(6,_AOptimReuse_32_c,__AOptimReuse_32);
 MTH(5,0,3,_mt_5_0_3);LZYMTH(5,0,3,_mt_5_0_3);
 MTH(5,3,2,_mt_5_3_2);LZYMTH(5,3,2,_mt_5_3_2);
 COPY(__AIdeMap_3,2);
 PRD1(2,__AOptimReuse_48);FLD1(__AOptimReuse_48,1)=__AIdeMap_3;FLD1(__AOptimReuse_48,2)=__AIdeMap_3;
 COPY(__AIdeMap_3,2);
 PRD1(2,__AOptimReuse_49);FLD1(__AOptimReuse_49,1)=__AIdeMap_3;FLD1(__AOptimReuse_49,2)=__AIdeMap_3;}

