

#include "BUILTIN.h"

#include "Nat.h"
extern OBJ _ASeq_14(OBJ,OBJ);extern OBJ __ASeq_14;
extern OBJ _ASeq_26(OBJ,OBJ);extern OBJ __ASeq_26;
extern OBJ _AComChoice_2(OBJ,OBJ);OBJ __AComChoice_2; /* + */

extern OBJ _AComChoice_2(OBJ x1,OBJ x2) /* + */
{OBJ r;
 if(ISTGPRD(x1,1)){
  {OBJ x3=FLD(x1,1);FLAG x_x1=EXPRD(x1,1);
   if(x_x1){
   }else{
    COPY(x3,1);}
   if(ISTGPRD(x2,1)){
    {OBJ x4=FLD(x2,1);
     if(EXPRD(x2,1)){
      if(x_x1){
       DSPRDF(x1);
      }else{
       FRPRD(x1,1);}
      {
       RPRD(x2,r);
       FLD(r,1)=_ASeq_26(x3,x4);}
     }else{
      COPY(x4,1);
      if(x_x1){
       DSPRDF(x1);
      }else{
       FRPRD(x1,1);}
      {
       FRPRD(x2,1);PRD(1,1,r);
       FLD(r,1)=_ASeq_26(x3,x4);}}}
   }else{
    {OBJ x8;
     PRD1(2,x8);FLD1(x8,1)=x2;FLD1(x8,2)=x3;
     if(x_x1){
      RPRD(x1,r);FLD(r,1)=x8;
     }else{
      FRPRD(x1,1);PRD(1,1,r);FLD(r,1)=x8;}}}}
 }else{
  if(ISTGPRD(x2,1)){
   {OBJ x11=FLD(x2,1);
    if(EXPRD(x2,1)){
     {OBJ x12;
      PRD1(2,x12);FLD1(x12,1)=x1;FLD1(x12,2)=x11;
      RPRD(x2,r);FLD(r,1)=x12;}
    }else{
     COPY(x11,1);
     {OBJ x12;
      PRD1(2,x12);FLD1(x12,1)=x1;FLD1(x12,2)=x11;
      FRPRD(x2,1);PRD(1,1,r);FLD(r,1)=x12;}}}
  }else{
   {
    PRD(1,1,r);
    FLD(r,1)=_ASeq_14(x1,x2);}}}
 return r;}

init_AComChoice()
{
 static int visited=0; if(visited) return; visited=1;
 init_ACom();
 init_ANat();
 init_AVoid();
 init_ASeq();
 init_AOption();
 init_ASeqMap();
 CLS(2,_AComChoice_2,__AComChoice_2);}

