

#include "BUILTIN.h"

#include "Int.h"
extern OBJ _AImpl_10(OBJ);extern OBJ __AImpl_10;
extern OBJ __AInterOpal_57;
extern OBJ __AName_3;
extern OBJ __AName_4;

#include "Array.h"
extern OBJ __ASeq_6;

#include "Nat.h"
extern TUP2 _ANameGeneration_1(OBJ,OBJ,OBJ);extern OBJ __ANameGeneration_1;
extern OBJ __AOption_5;
extern TUP2 _AFctGeneration_2(OBJ,OBJ,OBJ);extern OBJ __AFctGeneration_2;
extern OBJ _ABaseGeneration_17(OBJ,OBJ);extern OBJ __ABaseGeneration_17;
extern OBJ _ABaseGeneration_19(OBJ);extern OBJ __ABaseGeneration_19;
extern TUP2 _ASeqMapEnv_4(OBJ,OBJ,OBJ);extern OBJ __ASeqMapEnv_4;
extern OBJ _ASeqReduce_4(OBJ,OBJ,OBJ);extern OBJ __ASeqReduce_4;

#include "Char.h"
extern OBJ _ARep_119(OBJ);extern OBJ __ARep_119;

#include "Bitset.h"
extern OBJ __AGlobSigImpl_29;

#include "Denotation.h"
extern TUP2 _AExprGeneration_1(OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_1; /* defEq2Eq */
extern TUP2 _AExprGeneration_2(OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_2; /* expr2Expr */
extern TUP2 _AExprGeneration_3(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_3; /* name2Var */
extern TUP2 _AExprGeneration_5(OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_5; /* letEq2Eq */
extern OBJ _AExprGeneration_6(OBJ,OBJ);OBJ __AExprGeneration_6; /* mktuple */
extern TUP2 _AExprGeneration_7(OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_7; /* seqPattDescr2Pattern */
extern OBJ _AExprGeneration_8(OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_8; /* mkapply */
extern TUP2 _AExprGeneration_9(OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_9; /* pattDescr2Pattern */
extern TUP2 _AExprGeneration_11(OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_11; /* expr2Pattern */
extern TUP2 _AExprGeneration_12(OBJ,OBJ,OBJ,OBJ);OBJ __AExprGeneration_12; /* guard2Guard */

extern TUP2 _AExprGeneration_1(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* defEq2Eq */
{TUP2 r;
 CPCLS(__AExprGeneration_9,1);
 COPY(x1,1);
 CPPRD(x2,1);
 {OBJ x11;
  x11=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AExprGeneration_9,2))(__AExprGeneration_9,x1,x2);
  {OBJ x65=FLD1(x4,1);OBJ x66=FLD1(x4,2);
   if(EXPRD(x4,1)){
    DSPRDF(x4);
   }else{
    CPPRD(x65,1);COPY(x66,1);
    FRPRD(x4,1);}
   {OBJ x67=FLD1(x65,1);OBJ x68=FLD1(x65,2);OBJ x69=FLD1(x65,3);
    if(EXPRD(x65,1)){
     DSPRDF(x65);
    }else{
     CPPRD(x67,1);CPPRD(x68,1);COPY(x69,1);
     FRPRD(x65,1);}
    COPY(x1,1);
    CPPRD(x2,1);
    {TUP2 x71;TUP2 x74;TUP2 x77;
     x71=_AExprGeneration_11(x1,x2,x3,x67);
     x74=_AExprGeneration_2(x1,x2,x71.c1,x68);
     x77=_ASeqMapEnv_4(x11,x74.c1,x66);
     {OBJ x79=FLD1(x77.c1,1);
      CPPRD(x79,1);
      {OBJ x81=FLD1(x79,1);
       r.c1=x77.c1;
       if(EXPRD(x79,1)){
	FREE(FLD1(x79,2),1);DSPRDF(x79);
       }else{
	DCPRD(x79,1);}
       {
	PRD1(4,r.c2);FLD1(r.c2,2)=x71.c2;FLD1(r.c2,3)=x77.c2;FLD1(r.c2,4)=x74.c2;
	FLD1(r.c2,1)=_ABaseGeneration_17(x69,x81);}}}}}}}
 return r;}
extern OBJ _AExprGeneration_1_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* defEq2Eq */
{OBJ r;
 {TUP2 t=_AExprGeneration_1(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AExprGeneration_2(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* expr2Expr */
{TUP2 r;OBJ* p1=&r.c1;OBJ* p2=&r.c2;
 for(;;){
  if(ISTGPRD(x4,5)){
   {OBJ x752=FLD(x4,1);OBJ x753=FLD(x4,2);
    COPY(x752,1);CPPRD(x753,1);
    COPY(x1,1);
    CPPRD(x2,1);
    CPCLS(__AExprGeneration_12,1);
    {OBJ x755;OBJ x756;
     x755=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AExprGeneration_12,2))(__AExprGeneration_12,x1,x2);
     x756=_AImpl_10(x4);
     {OBJ x757=FLD1(x3,1);
      CPPRD(x757,1);
      {OBJ x760=FLD1(x757,1);
       if(EXPRD(x757,1)){
	FREE(FLD1(x757,2),1);DSPRDF(x757);
       }else{
	DCPRD(x757,1);}
       {OBJ x763;OBJ x767;OBJ x764;OBJ x768;OBJ x769;OBJ x775;OBJ x776;OBJ x777;
	if(ISTGPRD(x753,0)){
	 x763=__ABUILTIN_5;
	}else{
	 x763=__ABUILTIN_3;}
	if(ISTGPRM(x763,1)){
	 x767=__ABUILTIN_5;
	}else{
	 if(ISTGPRD(x753,1)){
	  x767=__ABUILTIN_5;
	 }else{
	  x767=__ABUILTIN_3;}}
	x764=_ABaseGeneration_17(x756,x760);
	{TUP2 t=_ASeqMapEnv_4(x755,x3,x752);
	 x768=t.c1;
	 x769=t.c2;}
	if(ISTGPRM(x767,1)){
	 *p1=x768;
	 FREE(x1,1);
	 FRPRD(x2,1);
	 FRPRD(x753,1);
	 x776=__AOption_5;
	}else{
	 {TUP2 x772;
	  x772=_AExprGeneration_2(x1,x2,x768,x753);*p1=x772.c1;
	  PRD1(1,x776);FLD1(x776,1)=x772.c2;}}
	PRD(3,4,*p2);FLD(*p2,1)=x764;FLD(*p2,2)=x769;FLD(*p2,3)=x776;}}}}}
  }else{
   if(ISTGPRD(x4,7)){
    {OBJ x778=FLD(x4,1);
     COPY(x778,1);
     FRPRD(x2,1);
     {OBJ x780;
      x780=_AImpl_10(x4);
      {OBJ x781=FLD1(x3,1);
       CPPRD(x781,1);
       {OBJ x784=FLD1(x781,1);
	if(EXPRD(x781,1)){
	 FREE(FLD1(x781,2),1);DSPRDF(x781);
	}else{
	 DCPRD(x781,1);}
	{OBJ x786;
	 x786=_ABaseGeneration_17(x780,x784);
	 PRD(2,0,*p2);FLD(*p2,1)=x786;
	 {TUP2 t=_ANameGeneration_1(x1,x3,x778);
	  *p1=t.c1;
	  FLD(*p2,2)=t.c2;}}}}}}
   }else{
    if(ISTGPRD(x4,9)){
     {OBJ x790=FLD(x4,1);OBJ x791=FLD(x4,2);
      COPY(x790,1);CPPRD(x791,1);
      COPY(x1,1);
      CPPRD(x2,1);
      CPCLS(__AExprGeneration_5,1);
      {OBJ x793;OBJ x794;
       x793=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AExprGeneration_5,2))(__AExprGeneration_5,x1,x2);
       x794=_AImpl_10(x4);
       {OBJ x795=FLD1(x3,1);
	CPPRD(x795,1);
	{OBJ x798=FLD1(x795,1);
	 if(EXPRD(x795,1)){
	  FREE(FLD1(x795,2),1);DSPRDF(x795);
	 }else{
	  DCPRD(x795,1);}
	 {OBJ x800;TUP2 x801;
	  x800=_ABaseGeneration_17(x794,x798);
	  x801=_ASeqMapEnv_4(x793,x3,x790);
	  PRD(3,6,*p2);FLD(*p2,1)=x800;FLD(*p2,2)=x801.c2;
	  x3=x801.c1;x4=x791;p2=&FLD(*p2,3);continue;}}}}}
    }else{
     if(ISTGPRD(x4,10)){
      {OBJ x807=FLD(x4,1);
       if(EXPRD(x4,1)){
	FLD(x4,1)=NIL;DSPRD(x4);
       }else{
	CPPRD(x807,1);
	FRPRD(x4,1);}
       x4=x807;continue;}
     }else{
      if(ISTGPRD(x4,6)){
       {OBJ x810=FLD(x4,1);OBJ x811=FLD(x4,2);
	COPY(x810,1);CPPRD(x811,1);
	COPY(x1,1);
	CPPRD(x2,1);
	CPCLS(__AExprGeneration_3,1);
	{OBJ x813;OBJ x814;
	 x813=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AExprGeneration_3,3))(__AExprGeneration_3,x1,x2,__AInterOpal_57);
	 x814=_AImpl_10(x4);
	 {OBJ x815=FLD1(x3,1);
	  CPPRD(x815,1);
	  {OBJ x818=FLD1(x815,1);
	   if(EXPRD(x815,1)){
	    FREE(FLD1(x815,2),1);DSPRDF(x815);
	   }else{
	    DCPRD(x815,1);}
	   {OBJ x820;TUP2 x821;
	    x820=_ABaseGeneration_17(x814,x818);
	    x821=_ASeqMapEnv_4(x813,x3,x810);
	    PRD(3,5,*p2);FLD(*p2,1)=x820;FLD(*p2,2)=x821.c2;
	    x3=x821.c1;x4=x811;p2=&FLD(*p2,3);continue;}}}}}
      }else{
       if(ISTGPRD(x4,3)){
	{OBJ x827=FLD(x4,1);
	 COPY(x827,1);
	 CPCLS(__AExprGeneration_2,1);
	 {OBJ x829;OBJ x830;
	  x829=_AImpl_10(x4);
	  x830=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AExprGeneration_2,2))(__AExprGeneration_2,x1,x2);
	  {OBJ x831=FLD1(x3,1);
	   CPPRD(x831,1);
	   {OBJ x834=FLD1(x831,1);
	    if(EXPRD(x831,1)){
	     FREE(FLD1(x831,2),1);DSPRDF(x831);
	    }else{
	     DCPRD(x831,1);}
	    {OBJ x836;
	     x836=_ABaseGeneration_17(x829,x834);
	     PRD(2,2,*p2);FLD(*p2,1)=x836;
	     {TUP2 t=_ASeqMapEnv_4(x830,x3,x827);
	      *p1=t.c1;
	      FLD(*p2,2)=t.c2;}}}}}}
       }else{
	if(ISTGPRD(x4,4)){
	 {OBJ x840=FLD(x4,1);OBJ x841=FLD(x4,2);
	  CPPRD(x840,1);CPPRD(x841,1);
	  {OBJ x843;
	   x843=_AImpl_10(x4);
	   {OBJ x844=FLD1(x3,1);
	    CPPRD(x844,1);
	    {OBJ x847=FLD1(x844,1);
	     if(EXPRD(x844,1)){
	      FREE(FLD1(x844,2),1);DSPRDF(x844);
	     }else{
	      DCPRD(x844,1);}
	     COPY(x1,1);
	     CPPRD(x2,1);
	     {OBJ x849;TUP2 x850;
	      x849=_ABaseGeneration_17(x843,x847);
	      x850=_AExprGeneration_2(x1,x2,x3,x840);
	      PRD(3,3,*p2);FLD(*p2,1)=x849;FLD(*p2,2)=x850.c2;
	      x3=x850.c1;x4=x841;p2=&FLD(*p2,3);continue;}}}}}
	}else{
	 if(ISTGPRD(x4,2)){
	  {OBJ x856=FLD(x4,1);
	   CPPRD(x856,1);
	   FREE(x1,1);
	   FRPRD(x2,1);
	   {OBJ x858;
	    x858=_AImpl_10(x4);
	    {OBJ x859=FLD1(x3,1);
	     CPPRD(x859,1);
	     {OBJ x861;
	      x861=_ARep_119(x856);
	      {OBJ x862=FLD1(x859,1);
	       if(EXPRD(x859,1)){
		FREE(FLD1(x859,2),1);DSPRDF(x859);
	       }else{
		DCPRD(x859,1);}
	       {OBJ x864;
		x864=_ABaseGeneration_17(x858,x862);
		PRD(2,1,*p2);FLD(*p2,1)=x864;FLD(*p2,2)=x861;
		*p1=x3;}}}}}}
	 }else{
	  HLT("ExprGeneration at <unknown> : missing else in expr2Expr\'ExprGeneration:globSig**locSig->envIO**expr->envIO**expr");}}}}}}}}
  break;}
 return r;}
extern OBJ _AExprGeneration_2_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* expr2Expr */
{OBJ r;
 {TUP2 t=_AExprGeneration_2(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AExprGeneration_3(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* name2Var */
{TUP2 r;
 CPCLS(__AName_4,1);
 CPCLS(__AGlobSigImpl_29,1);
 {OBJ x6;OBJ x8;OBJ x9;OBJ x11;
  x6=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_4,1))(__AName_4,x5);
  {OBJ t=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AGlobSigImpl_29,2))(__AGlobSigImpl_29,x2,x6);
   x8=FLD1(t,1);
   x9=FLD1(t,2);
   DSPRDF(t);}
  x11=_ARep_119(x8);
  PRD1(4,r.c2);FLD1(r.c2,1)=x3;FLD1(r.c2,2)=x6;FLD1(r.c2,3)=x11;
  {TUP2 t=_AFctGeneration_2(x1,x4,x9);
   r.c1=t.c1;
   FLD1(r.c2,4)=t.c2;}}
 return r;}
extern OBJ _AExprGeneration_3_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* name2Var */
{OBJ r;
 {TUP2 t=_AExprGeneration_3(x1,x2,x3,x4,x5);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AExprGeneration_5(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* letEq2Eq */
{TUP2 r;
 {OBJ x5;
  PRD1(2,x5);FLD1(x5,1)=x4;FLD1(x5,2)=__ASeq_6;
  r=_AExprGeneration_1(x1,x2,x3,x5);}
 return r;}
extern OBJ _AExprGeneration_5_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* letEq2Eq */
{OBJ r;
 {TUP2 t=_AExprGeneration_5(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AExprGeneration_6(OBJ x1,OBJ x2) /* mktuple */
{OBJ r;
 if(ISPRM(x2)){
  PRD(2,5,r);FLD(r,1)=x1;FLD(r,2)=__ASeq_6;
 }else{
  {OBJ x21=FLD1(x2,1);OBJ x22=FLD1(x2,2);
   CPPRD(x21,1);COPY(x22,1);
   if(ISPRM(x22)){
    r=x21;
    FREE(x1,1);
    if(EXPRD(x2,1)){
     DSPRD(x2);
    }else{
     DCPRD(x2,1);}
   }else{
    if(EXPRD(x22,1)){
     DSPRD(x22);
    }else{
     DCPRD(x22,1);}
    FRPRD(x21,1);
    PRD(2,5,r);FLD(r,1)=x1;FLD(r,2)=x2;}}}
 return r;}

extern TUP2 _AExprGeneration_7(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* seqPattDescr2Pattern */
{TUP2 r;
 CPCLS(__AExprGeneration_9,1);
 {OBJ x8;
  x8=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AExprGeneration_9,2))(__AExprGeneration_9,x1,x2);
  {OBJ x5=FLD1(x3,1);
   CPPRD(x5,1);
   {OBJ x7;OBJ x9;TUP2 x12;
    x7=x5;
    x9=_ABaseGeneration_19(x7);
    x12=_ASeqMapEnv_4(x8,x3,x4);r.c1=x12.c1;
    r.c2=_AExprGeneration_6(x9,x12.c2);}}}
 return r;}
extern OBJ _AExprGeneration_7_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* seqPattDescr2Pattern */
{OBJ r;
 {TUP2 t=_AExprGeneration_7(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AExprGeneration_8(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* mkapply */
{OBJ r;
 {OBJ x19=FLD1(x4,1);OBJ x20=FLD1(x4,2);FLAG x_x4=EXPRD(x4,1);
  if(x_x4){
  }else{
   CPPRD(x19,1);CPPRD(x20,1);}
  {OBJ x22=FLD1(x19,1);
   CPPRD(x22,1);
   {OBJ x24;TUP2 x25;OBJ x27;
    x24=_ABaseGeneration_19(x22);
    x25=_AExprGeneration_7(x1,x2,x19,x3);
    PRD(3,4,x27);FLD(x27,1)=x24;FLD(x27,2)=x20;FLD(x27,3)=x25.c2;
    if(x_x4){
     RSOME(x4,r);FLD1(r,1)=x25.c1;FLD1(r,2)=x27;
    }else{
     FRPRD(x4,1);PRD1(2,r);FLD1(r,1)=x25.c1;FLD1(r,2)=x27;}}}}
 return r;}

extern TUP2 _AExprGeneration_9(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* pattDescr2Pattern */
{TUP2 r;
 if(ISPRM(x4)){
  FREE(x1,1);
  FRPRD(x2,1);
  {OBJ x157=FLD1(x3,1);
   CPPRD(x157,1);
   {OBJ x159;
    x159=_ABaseGeneration_19(x157);
    PRD(1,0,r.c2);FLD(r.c2,1)=x159;
    r.c1=x3;}}
 }else{
  if(ISTGPRD(x4,1)){
   {OBJ x142=FLD(x4,1);OBJ x143=FLD(x4,2);FLAG x_x4=EXPRD(x4,1);
    if(x_x4){
    }else{
     COPY(x142,1);COPY(x143,1);}
    {OBJ x144=FLD1(x3,1);
     CPPRD(x144,1);
     COPY(x1,1);
     CPCLS(__AExprGeneration_9,1);
     {OBJ x146;TUP2 x148;OBJ x150;OBJ x152;TUP2 x154;OBJ x155;
      x146=_ABaseGeneration_19(x144);
      COPY(x146,2);
      x148=_ANameGeneration_1(x1,x3,x142);
      x150=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AExprGeneration_9,2))(__AExprGeneration_9,x1,x2);
      if(x_x4){
       RPRD(x4,x152);FLD(x152,1)=x146;FLD(x152,2)=x148.c2;
      }else{
       FRPRD(x4,1);PRD(2,1,x152);FLD(x152,1)=x146;FLD(x152,2)=x148.c2;}
      x154=_ASeqMapEnv_4(x150,x148.c1,x143);r.c1=x154.c1;
      PRD(2,5,x155);FLD(x155,1)=x146;FLD(x155,2)=x154.c2;
      PRD(3,4,r.c2);FLD(r.c2,1)=x146;FLD(r.c2,2)=x152;FLD(r.c2,3)=x155;}}}
  }else{
   {OBJ x161=FLD(x4,1);OBJ x162=FLD(x4,2);FLAG x_x4=EXPRD(x4,1);
    if(x_x4){
    }else{
     COPY(x161,1);COPY(x162,1);}
    COPY(x1,1);
    CPCLS(__AExprGeneration_8,1);
    {OBJ x163;
     x163=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AExprGeneration_8,2))(__AExprGeneration_8,x1,x2);
     {OBJ x164=FLD1(x3,1);
      CPPRD(x164,1);
      {OBJ x167;TUP2 x168;OBJ x170;OBJ x171;OBJ x172;
       x167=_ABaseGeneration_19(x164);
       x168=_ANameGeneration_1(x1,x3,x161);
       if(x_x4){
	RPRD(x4,x170);CHGTG(x170,1);FLD(x170,1)=x167;FLD(x170,2)=x168.c2;
       }else{
	FRPRD(x4,1);PRD(2,1,x170);FLD(x170,1)=x167;FLD(x170,2)=x168.c2;}
       PRD1(2,x171);FLD1(x171,1)=x168.c1;FLD1(x171,2)=x170;
       x172=_ASeqReduce_4(x163,x171,x162);
       {OBJ x173=FLD1(x172,1);OBJ x174=FLD1(x172,2);
	if(EXPRD(x172,1)){
	 r.c1=x173;r.c2=x174;
	 DSPRDF(x172);
	}else{
	 CPPRD(x173,1);CPPRD(x174,1);
	 r.c1=x173;r.c2=x174;
	 FRPRD(x172,1);}}}}}}}}
 return r;}
extern OBJ _AExprGeneration_9_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* pattDescr2Pattern */
{OBJ r;
 {TUP2 t=_AExprGeneration_9(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AExprGeneration_11(register OBJ x1,register OBJ x2,register OBJ x3,register OBJ x4) /* expr2Pattern */
{TUP2 r;OBJ* p1=&r.c1;OBJ* p2=&r.c2;
 for(;;){
  if(ISTGPRD(x4,4)){
   {OBJ x285=FLD(x4,1);OBJ x286=FLD(x4,2);
    CPPRD(x285,1);CPPRD(x286,1);
    {OBJ x288;
     x288=_AImpl_10(x4);
     {OBJ x289=FLD1(x3,1);
      CPPRD(x289,1);
      {OBJ x292=FLD1(x289,1);
       if(EXPRD(x289,1)){
	FREE(FLD1(x289,2),1);DSPRDF(x289);
       }else{
	DCPRD(x289,1);}
       COPY(x1,1);
       CPPRD(x2,1);
       {OBJ x294;TUP2 x295;
	x294=_ABaseGeneration_17(x288,x292);
	x295=_AExprGeneration_11(x1,x2,x3,x285);
	PRD(3,4,*p2);FLD(*p2,1)=x294;FLD(*p2,2)=x295.c2;
	x3=x295.c1;x4=x286;p2=&FLD(*p2,3);continue;}}}}}
  }else{
   if(ISTGPRD(x4,7)){
    {OBJ x301=FLD(x4,1);
     COPY(x301,1);
     {OBJ x303;
      x303=_AImpl_10(x4);
      {OBJ x304=FLD1(x3,1);
       CPPRD(x304,1);
       COPY(x301,1);
       CPCLS(__AName_3,1);
       {OBJ x306;
	x306=(*(OBJ(*)(OBJ,OBJ))METHOD(__AName_3,1))(__AName_3,x301);
	{OBJ x307=FLD1(x304,1);
	 if(EXPRD(x304,1)){
	  FREE(FLD1(x304,2),1);DSPRDF(x304);
	 }else{
	  DCPRD(x304,1);}
	 {OBJ x309;
	  x309=_ABaseGeneration_17(x303,x307);
	  if(ISTGPRM(x306,1)){
	   COPY(x309,1);
	   {
	    PRD(2,2,*p2);FLD(*p2,1)=x309;
	    {TUP2 t=_AExprGeneration_3(x1,x2,x309,x3,x301);
	     *p1=t.c1;
	     FLD(*p2,2)=t.c2;}}
	  }else{
	   FRPRD(x2,1);
	   {
	    PRD(2,1,*p2);FLD(*p2,1)=x309;
	    {TUP2 t=_ANameGeneration_1(x1,x3,x301);
	     *p1=t.c1;
	     FLD(*p2,2)=t.c2;}}}}}}}}}
   }else{
    if(ISTGPRD(x4,8)){
     {OBJ x318=FLD(x4,1);OBJ x319=FLD(x4,2);
      COPY(x318,1);CPPRD(x319,1);
      {OBJ x321;
       x321=_AImpl_10(x4);
       {OBJ x322=FLD1(x3,1);
	CPPRD(x322,1);
	{OBJ x324=FLD1(x322,1);
	 if(EXPRD(x322,1)){
	  FREE(FLD1(x322,2),1);DSPRDF(x322);
	 }else{
	  DCPRD(x322,1);}
	 COPY(x1,1);
	 CPPRD(x2,1);
	 {OBJ x326;TUP2 x328;
	  x326=_ABaseGeneration_17(x321,x324);
	  COPY(x326,1);
	  x328=_AExprGeneration_3(x1,x2,x326,x3,x318);
	  PRD(3,3,*p2);FLD(*p2,1)=x326;FLD(*p2,2)=x328.c2;
	  x3=x328.c1;x4=x319;p2=&FLD(*p2,3);continue;}}}}}
    }else{
     if(ISTGPRD(x4,3)){
      {OBJ x334=FLD(x4,1);
       COPY(x334,1);
       CPCLS(__AExprGeneration_11,1);
       {OBJ x336;OBJ x337;
	x336=_AImpl_10(x4);
	x337=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AExprGeneration_11,2))(__AExprGeneration_11,x1,x2);
	{OBJ x338=FLD1(x3,1);
	 CPPRD(x338,1);
	 {OBJ x341=FLD1(x338,1);
	  if(EXPRD(x338,1)){
	   FREE(FLD1(x338,2),1);DSPRDF(x338);
	  }else{
	   DCPRD(x338,1);}
	  {OBJ x343;
	   x343=_ABaseGeneration_17(x336,x341);
	   PRD(2,5,*p2);FLD(*p2,1)=x343;
	   {TUP2 t=_ASeqMapEnv_4(x337,x3,x334);
	    *p1=t.c1;
	    FLD(*p2,2)=t.c2;}}}}}}
     }else{
      HLT("ExprGeneration at <153,5-16> : missing else in expr2Pattern\'ExprGeneration:globSig**locSig->envIO**expr->envIO**pattern");}}}}
  break;}
 return r;}
extern OBJ _AExprGeneration_11_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* expr2Pattern */
{OBJ r;
 {TUP2 t=_AExprGeneration_11(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern TUP2 _AExprGeneration_12(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* guard2Guard */
{TUP2 r;
 {OBJ x31=FLD1(x4,1);OBJ x32=FLD1(x4,2);OBJ x33=FLD1(x4,3);FLAG x_x4=EXPRD(x4,1);
  if(x_x4){
  }else{
   CPPRD(x31,1);CPPRD(x32,1);COPY(x33,1);}
  {OBJ x47=FLD1(x3,1);
   CPPRD(x47,1);
   {OBJ x50=FLD1(x47,1);
    if(EXPRD(x47,1)){
     FREE(FLD1(x47,2),1);DSPRDF(x47);
    }else{
     DCPRD(x47,1);}
    COPY(x1,1);
    CPPRD(x2,1);
    {OBJ x52;TUP2 x53;
     x52=_ABaseGeneration_17(x33,x50);
     x53=_AExprGeneration_2(x1,x2,x3,x31);
     if(x_x4){
      RSOME(x4,r.c2);FLD1(r.c2,1)=x52;FLD1(r.c2,2)=x53.c2;
     }else{
      FRPRD(x4,1);PRD1(3,r.c2);FLD1(r.c2,1)=x52;FLD1(r.c2,2)=x53.c2;}
     {TUP2 t=_AExprGeneration_2(x1,x2,x53.c1,x32);
      r.c1=t.c1;
      FLD1(r.c2,3)=t.c2;}}}}}
 return r;}
extern OBJ _AExprGeneration_12_c(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* guard2Guard */
{OBJ r;
 {TUP2 t=_AExprGeneration_12(x1,x2,x3,x4);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 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_AExprGeneration()
{
 static int visited=0; if(visited) return; visited=1;
 init_AInt();
 init_ATable();
 init_AUniqueTable();
 init_ADeclEntry();
 init_AAnalyzedGlobSig();
 init_APartNameEntry();
 init_AEnvIO();
 init_AImpExpEntry();
 init_AImpl();
 init_APragma();
 init_AInterOpal();
 init_AAttributes();
 init_AName();
 init_ADArray();
 init_APair();
 init_ANatMap();
 init_APatterns();
 init_AArray();
 init_ASeq();
 init_APartName();
 init_ANat();
 init_ANameGeneration();
 init_AOption();
 init_AFctGeneration();
 init_AObjects();
 init_ABaseGeneration();
 init_AFct();
 init_ASeqMapEnv();
 init_AOcPos();
 init_ASeqReduce();
 init_AChar();
 init_ATree();
 init_AMap();
 init_AAbsyFun3();
 init_ADyn();
 init_AAnalyzedGlobSigH();
 init_ASet();
 init_AGlobSigToText();
 init_ARep();
 init_AImpDecl4SigAna();
 init_ABitset();
 init_AMySeqFun1();
 init_AGlobSig();
 init_AName4SigAna();
 init_AGlobPragma();
 init_ASetByBST();
 init_AGlobSigImpl();
 init_ABSTree();
 init_AOcError();
 init_ADenotation();
 init_ACom();
 init_ALexem();
 init_AVoid();
 init_AString();
 init_AOcOptions();
 init_AStream();
 init_AFile();
 CLS(4,_AExprGeneration_12_c,__AExprGeneration_12);
 CLS(4,_AExprGeneration_11_c,__AExprGeneration_11);
 CLS(4,_AExprGeneration_9_c,__AExprGeneration_9);
 CLS(4,_AExprGeneration_8,__AExprGeneration_8);
 CLS(4,_AExprGeneration_7_c,__AExprGeneration_7);
 CLS(2,_AExprGeneration_6,__AExprGeneration_6);
 CLS(4,_AExprGeneration_5_c,__AExprGeneration_5);
 CLS(5,_AExprGeneration_3_c,__AExprGeneration_3);
 CLS(4,_AExprGeneration_2_c,__AExprGeneration_2);
 CLS(4,_AExprGeneration_1_c,__AExprGeneration_1);
 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);}

