

#include "BUILTIN.h"
extern OBJ _ABSTree_46(OBJ,OBJ);extern OBJ __ABSTree_46;
extern OBJ _ABSTree_49(OBJ,OBJ);extern OBJ __ABSTree_49;

#include "Nat.h"
extern OBJ _APair_5(OBJ);extern OBJ __APair_5;
extern OBJ _ATreeMap_3(OBJ,OBJ);extern OBJ __ATreeMap_3;
extern OBJ _ABSTreeConv_11(OBJ,OBJ);extern OBJ __ABSTreeConv_11;

#include "Char.h"
extern OBJ _ABSTreeMap_5(OBJ,OBJ,OBJ,OBJ);OBJ __ABSTreeMap_5; /* * */
extern OBJ _ABSTreeMap_6(OBJ,OBJ);OBJ __ABSTreeMap_6; /* *'6 */

extern OBJ _ABSTreeMap_5(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* * */
{OBJ r;
 CPCLS(__ABSTreeMap_6,1);
 FRCLS(x1,1);
 CPCLS(x2,1);
 {OBJ x5;OBJ x6;OBJ x7;OBJ x8;
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__ABSTreeMap_6,1))(__ABSTreeMap_6,x3);
  x6=_ATreeMap_3(x5,x4);
  COPY(x6,1);
  x7=_ABSTree_46(x2,x6);
  if(ISTGPRM(x7,1)){
   CPCLS(x2,1);
   COPY(x6,1);
   x8=_ABSTree_49(x2,x6);
  }else{
   x8=__ABUILTIN_3;}
  if(ISTGPRM(x8,1)){
   r=x6;
   FRCLS(x2,1);
  }else{
   CPCLS(__APair_5,1);
   {OBJ x9;
    x9=_ATreeMap_3(__APair_5,x6);
    r=_ABSTreeConv_11(x2,x9);}}}
 return r;}

extern OBJ _ABSTreeMap_6(OBJ x1,OBJ x2) /* *'6 */
{OBJ r;
 {OBJ x10=FLD1(x2,1);OBJ x11;
  if(EXPRD(x2,1)){
   {OBJ x12;
    x12=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x10);
    RSOME(x2,r);FLD1(r,1)=x12;}
  }else{
   x11=FLD1(x2,2);COPY(x10,1);
   {OBJ x12;
    x12=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x10);
    FRPRD(x2,1);PRD1(2,r);FLD1(r,1)=x12;FLD1(r,2)=x11;}}}
 return r;}

init_ABSTreeMap()
{
 static int visited=0; if(visited) return; visited=1;
 init_ABSTree();
 init_ANat();
 init_AOption();
 init_ASeq();
 init_ATree();
 init_APair();
 init_ATreeMap();
 init_ABSTreeConv();
 init_AString();
 init_AChar();
 init_ARelCmp();
 CLS(2,_ABSTreeMap_6,__ABSTreeMap_6);
 CLS(4,_ABSTreeMap_5,__ABSTreeMap_5);}

