

#include "BUILTIN.h"

#include "Nat.h"

#include "Char.h"
extern OBJ __AOption_5;

#include "Denotation.h"

#include "Int.h"

#include "String.h"

#define __AString_S5_L73 __AString_73
#define _AString_S5_L73 _AString_73
#define AString_73 AString_S5_L73
extern OBJ __AString_S5_L73;
extern OBJ _AString_S5_L73(OBJ);

#define __AString_Sii_L74 __AString_74
#define _AString_Sii_L74 _AString_74
#define AString_74 AString_Sii_L74
extern OBJ __AString_Sii_L74;
extern OBJ _AString_Sii_L74(OBJ);

#define __AString_S5_O1_L75 __AString_75
#define _AString_S5_O1_L75 _AString_75
#define AString_75 AString_S5_O1_L75
extern OBJ __AString_S5_O1_L75;
extern OBJ _AString_S5_O1_L75(OBJ);

#define __AString_S5_O1_L76 __AString_76
#define _AString_S5_O1_L76 _AString_76
#define AString_76 AString_S5_O1_L76
extern OBJ __AString_S5_O1_L76;
extern OBJ _AString_S5_O1_L76(OBJ);

#define __AString_S5_O2_L77 __AString_77
#define _AString_S5_O2_L77 _AString_77
#define AString_77 AString_S5_O2_L77
extern OBJ __AString_S5_O2_L77;
extern OBJ _AString_S5_O2_L77(OBJ);

#define __AString_S5_O2_L78 __AString_78
#define _AString_S5_O2_L78 _AString_78
#define AString_78 AString_S5_O2_L78
extern OBJ __AString_S5_O2_L78;
extern OBJ _AString_S5_O2_L78(OBJ);

#define __AString_S5_O2_L79 __AString_79
#define _AString_S5_O2_L79 _AString_79
#define AString_79 AString_S5_O2_L79
extern OBJ __AString_S5_O2_L79;
extern OBJ _AString_S5_O2_L79(OBJ);

#define __AString_S5_O3_L80 __AString_80
#define _AString_S5_O3_L80 _AString_80
#define AString_80 AString_S5_O3_L80
extern OBJ __AString_S5_O3_L80;
extern OBJ _AString_S5_O3_L80(OBJ);

#define __AString_S5_O3_L81 __AString_81
#define _AString_S5_O3_L81 _AString_81
#define AString_81 AString_S5_O3_L81
extern OBJ __AString_S5_O3_L81;
extern OBJ _AString_S5_O3_L81(OBJ);

#define __AString_S5_O3_L82 __AString_82
#define _AString_S5_O3_L82 _AString_82
#define AString_82 AString_S5_O3_L82
extern OBJ __AString_S5_O3_L82;
extern OBJ _AString_S5_O3_L82(OBJ);

#define __AString_S5_O3_L83 __AString_83
#define _AString_S5_O3_L83 _AString_83
#define AString_83 AString_S5_O3_L83
extern OBJ __AString_S5_O3_L83;
extern OBJ _AString_S5_O3_L83(OBJ);

#define __AString_S5_O4_L84 __AString_84
#define _AString_S5_O4_L84 _AString_84
#define AString_84 AString_S5_O4_L84
extern OBJ __AString_S5_O4_L84;
extern OBJ _AString_S5_O4_L84(OBJ);

#define __AString_S5_O4_L85 __AString_85
#define _AString_S5_O4_L85 _AString_85
#define AString_85 AString_S5_O4_L85
extern OBJ __AString_S5_O4_L85;
extern OBJ _AString_S5_O4_L85(OBJ);

#define __AString_S5_O4_L86 __AString_86
#define _AString_S5_O4_L86 _AString_86
#define AString_86 AString_S5_O4_L86
extern OBJ __AString_S5_O4_L86;
extern OBJ _AString_S5_O4_L86(OBJ);

#define __AString_S5_O4_L87 __AString_87
#define _AString_S5_O4_L87 _AString_87
#define AString_87 AString_S5_O4_L87
extern OBJ __AString_S5_O4_L87;
extern OBJ _AString_S5_O4_L87(OBJ);

#define __AString_S5_O4_L88 __AString_88
#define _AString_S5_O4_L88 _AString_88
#define AString_88 AString_S5_O4_L88
extern OBJ __AString_S5_O4_L88;
extern OBJ _AString_S5_O4_L88(OBJ);

#define __AString_Sdd_L89 __AString_89
#define _AString_Sdd_L89 _AString_89
#define AString_89 AString_Sdd_L89
extern OBJ __AString_Sdd_L89;
extern OBJ _AString_Sdd_L89(OBJ,OBJ,OBJ);
extern OBJ _AString_Sii(OBJ,OBJ);OBJ __AString_Sii; /* :: */
extern OBJ _AString_Sii_(OBJ);OBJ __AString_Sii_; /* ::? */
extern OBJ _AString_Art(OBJ);OBJ __AString_Art; /* rt */
extern OBJ _AString_Aft(OBJ);OBJ __AString_Aft; /* ft */
OBJ __AString_Slg; /* <> */
extern OBJ _AString_Slg_(OBJ);OBJ __AString_Slg_; /* <>? */
OBJ __AString_Aempty; /* empty */
extern OBJ _AString_Acons(OBJ,OBJ);OBJ __AString_Acons; /* cons */
extern OBJ _AString_Aempty_(OBJ);OBJ __AString_Aempty_; /* empty? */
extern OBJ _AString_Acons_(OBJ);OBJ __AString_Acons_; /* cons? */
extern OBJ _AString_S5(OBJ);OBJ __AString_S5; /* % */
extern OBJ _AString_S5_O1(OBJ,OBJ);OBJ __AString_S5_O1; /* %,1 */
extern OBJ _AString_S5_O2(OBJ,OBJ,OBJ);OBJ __AString_S5_O2; /* %,2 */
extern OBJ _AString_S5_O3(OBJ,OBJ,OBJ,OBJ);OBJ __AString_S5_O3; /* %,3 */
extern OBJ _AString_S5_O4(OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AString_S5_O4; /* %,4 */
extern OBJ _AString_S5_O5(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AString_S5_O5; /* %,5 */
extern OBJ _AString_S5_O6(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AString_S5_O6; /* %,6 */
extern OBJ _AString_S5_O7(OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ,OBJ);OBJ __AString_S5_O7; /* %,7 */
extern OBJ _AString_Sp5(OBJ,OBJ);OBJ __AString_Sp5; /* +% */
extern OBJ _AString_Sdd(OBJ,OBJ,OBJ);OBJ __AString_Sdd; /* .. */
extern OBJ _AString_Aiter(OBJ,OBJ,OBJ);OBJ __AString_Aiter; /* iter */
extern OBJ _AString_Spp(OBJ,OBJ);OBJ __AString_Spp; /* ++ */
extern OBJ _AString_Spsp(OBJ,OBJ,OBJ);OBJ __AString_Spsp; /* +/+ */
extern OBJ _AString_Spsp_O1(OBJ,OBJ,OBJ);OBJ __AString_Spsp_O1; /* +/+,1 */
extern OBJ _AString_Spsp_O2(OBJ,OBJ,OBJ);OBJ __AString_Spsp_O2; /* +/+,2 */
extern OBJ _AString_Sp5p(OBJ,OBJ,OBJ);OBJ __AString_Sp5p; /* +%+ */
extern OBJ _AString_Sp5p_O1(OBJ,OBJ,OBJ);OBJ __AString_Sp5p_O1; /* +%+,1 */
extern OBJ _AString_Sp5p_O2(OBJ,OBJ,OBJ);OBJ __AString_Sp5p_O2; /* +%+,2 */
extern OBJ _AString_Atake(OBJ,OBJ);OBJ __AString_Atake; /* take */
extern OBJ _AString_Adrop(OBJ,OBJ);OBJ __AString_Adrop; /* drop */
extern TUP2 _AString_Asplit(OBJ,OBJ);OBJ __AString_Asplit; /* split */
extern OBJ _AString_Afront(OBJ);OBJ __AString_Afront; /* front */
extern OBJ _AString_Arevert(OBJ);OBJ __AString_Arevert; /* revert */
extern OBJ _AString_Alast(OBJ);OBJ __AString_Alast; /* last */
extern OBJ _AString_S3(OBJ);OBJ __AString_S3; /* # */
extern OBJ _AString_Aexist_(OBJ,OBJ);OBJ __AString_Aexist_; /* exist? */
extern OBJ _AString_Afind_(OBJ,OBJ);OBJ __AString_Afind_; /* find? */
extern OBJ _AString_Aforall_(OBJ,OBJ);OBJ __AString_Aforall_; /* forall? */
extern OBJ _AString_Sl(OBJ,OBJ);OBJ __AString_Sl; /* < */
extern OBJ _AString_Sle(OBJ,OBJ);OBJ __AString_Sle; /* <= */
extern OBJ _AString_Sge(OBJ,OBJ);OBJ __AString_Sge; /* >= */
extern OBJ _AString_Sg(OBJ,OBJ);OBJ __AString_Sg; /* > */
extern OBJ _AString_Se(OBJ,OBJ);OBJ __AString_Se; /* = */
extern OBJ _AString_SSe(OBJ,OBJ);OBJ __AString_SSe; /* |= */
extern OBJ _AString_S1(OBJ);OBJ __AString_S1; /* ! */
extern OBJ _AString_Ainit(OBJ,OBJ);OBJ __AString_Ainit; /* init */
extern OBJ _AString_Ainit_O1(OBJ,OBJ);OBJ __AString_Ainit_O1; /* init,1 */
extern OBJ _AString_Sie(OBJ,OBJ,OBJ);OBJ __AString_Sie; /* := */
extern OBJ _AString_Achunk(OBJ,OBJ,OBJ);OBJ __AString_Achunk; /* chunk */
extern OBJ _AString_Astart(OBJ);OBJ __AString_Astart; /* start */
extern OBJ _AString_Adata(OBJ);OBJ __AString_Adata; /* data */
extern OBJ _AString_Arest(OBJ);OBJ __AString_Arest; /* rest */
extern OBJ _AString_AasString(OBJ);OBJ __AString_AasString; /* asString */
extern OBJ _AString_Achunk_(OBJ);OBJ __AString_Achunk_; /* chunk? */
OBJ __AString_AgoodSmallSize; /* goodSmallSize */
extern OBJ _AString_Arevert_O1(OBJ,OBJ);OBJ __AString_Arevert_O1; /* revert,1 */
extern OBJ _AString_Arevert_O2(OBJ,OBJ,OBJ);OBJ __AString_Arevert_O2; /* revert,2 */
extern OBJ _AString_S3_O1(OBJ,OBJ);OBJ __AString_S3_O1; /* #,1 */
extern OBJ _AString_Aexist__O1(OBJ,OBJ,OBJ);OBJ __AString_Aexist__O1; /* exist?,1 */
extern OBJ _AString_Afind__O1(OBJ,OBJ,OBJ);OBJ __AString_Afind__O1; /* find?,1 */
extern OBJ _AString_Aforall__O1(OBJ,OBJ,OBJ);OBJ __AString_Aforall__O1; /* forall?,1 */
extern OBJ _AString_S33(OBJ);OBJ __AString_S33; /* ## */
extern OBJ _AString_S5_L73(OBJ);OBJ __AString_S5_L73; /* %'73 */
extern OBJ _AString_Sii_L74(OBJ);OBJ __AString_Sii_L74; /* ::'74 */
extern OBJ _AString_S5_O1_L75(OBJ);OBJ __AString_S5_O1_L75; /* %,1'75 */
extern OBJ _AString_S5_O1_L76(OBJ);OBJ __AString_S5_O1_L76; /* %,1'76 */
extern OBJ _AString_S5_O2_L77(OBJ);OBJ __AString_S5_O2_L77; /* %,2'77 */
extern OBJ _AString_S5_O2_L78(OBJ);OBJ __AString_S5_O2_L78; /* %,2'78 */
extern OBJ _AString_S5_O2_L79(OBJ);OBJ __AString_S5_O2_L79; /* %,2'79 */
extern OBJ _AString_S5_O3_L80(OBJ);OBJ __AString_S5_O3_L80; /* %,3'80 */
extern OBJ _AString_S5_O3_L81(OBJ);OBJ __AString_S5_O3_L81; /* %,3'81 */
extern OBJ _AString_S5_O3_L82(OBJ);OBJ __AString_S5_O3_L82; /* %,3'82 */
extern OBJ _AString_S5_O3_L83(OBJ);OBJ __AString_S5_O3_L83; /* %,3'83 */
extern OBJ _AString_S5_O4_L84(OBJ);OBJ __AString_S5_O4_L84; /* %,4'84 */
extern OBJ _AString_S5_O4_L85(OBJ);OBJ __AString_S5_O4_L85; /* %,4'85 */
extern OBJ _AString_S5_O4_L86(OBJ);OBJ __AString_S5_O4_L86; /* %,4'86 */
extern OBJ _AString_S5_O4_L87(OBJ);OBJ __AString_S5_O4_L87; /* %,4'87 */
extern OBJ _AString_S5_O4_L88(OBJ);OBJ __AString_S5_O4_L88; /* %,4'88 */
extern OBJ _AString_Sdd_L89(OBJ,OBJ,OBJ);OBJ __AString_Sdd_L89; /* ..'89 */

#include "String.hc.c"

extern OBJ _AString_Sii(OBJ x1,OBJ x2) /* :: */
{OBJ r;
 if(ISPRM(x2)){
  AString_S5(x1,r);
 }else{
  {OBJ x35=FLD1(x2,1);OBJ x36=FLD1(x2,2);OBJ x37=FLD1(x2,3);
   CPPRD(x36,1);COPY(x37,1);
   {OBJ x39;
    ANat_6(x35,x39);
    if(ISTGPRM(x39,1)){
     FRPRD(x36,1);
     FREE(x37,1);
     CPCLS(__AString_Sii_L74,1);
     {OBJ x40;OBJ x41;
      ADenotation_1(__AString_AgoodSmallSize,x1,x40);
      x41=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_Sii_L74,1))(__AString_Sii_L74,__ABUILTIN_20);
      PRD1(3,r);FLD1(r,1)=x41;FLD1(r,2)=x40;FLD1(r,3)=x2;}
    }else{
     if(EXPRD(x2,1)){
      DSPRD(x2);
     }else{
      DCPRD(x2,1);}
     {OBJ x42;
      ANat_4(x35,x42);
      PRD1(3,r);FLD1(r,1)=x42;FLD1(r,3)=x37;
      ADenotation_9(x36,x42,x1,FLD1(r,2));}}}}}
 return r;}

extern OBJ _AString_Sii_(OBJ x1) /* ::? */
{OBJ r;
 if(ISPRM(x1)){
  r=__ABUILTIN_3;
 }else{
  if(EXPRD(x1,1)){
   DSPRD(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;}
 return r;}

extern OBJ _AString_Art(OBJ x1) /* rt */
{OBJ r;
 if(ISPRM(x1)){
  HLT("rt\'String: applied to empty string");
 }else{
  {OBJ x32=FLD1(x1,1);OBJ x33=FLD1(x1,2);OBJ x34=FLD1(x1,3);FLAG x_x1=EXPRD(x1,1);
   if(x_x1){
    CPPRD(x33,1);
   }else{
    CPPRD(x33,2);COPY(x34,1);}
   {OBJ x36;OBJ x37;OBJ x38;
    ADenotation_15(x33,x36);
    ANat_2(x32,x37);
    ANat_76(x37,x36,x38);
    if(ISTGPRM(x38,1)){
     if(x_x1){
      DSPRDF(x1);
     }else{
      FRPRD(x1,1);}
     r=x34;
     FRPRD(x33,1);
    }else{
     if(x_x1){
      RSOME(x1,r);FLD1(r,1)=x37;
     }else{
      FRPRD(x1,1);PRD1(3,r);FLD1(r,1)=x37;FLD1(r,2)=x33;FLD1(r,3)=x34;}}}}}
 return r;}

extern OBJ _AString_Aft(OBJ x1) /* ft */
{OBJ r;
 if(ISPRM(x1)){
  HLT("ft\'String: applied to empty string");
 }else{
  {OBJ x27=FLD1(x1,1);OBJ x28=FLD1(x1,2);
   if(EXPRD(x1,1)){
    CPPRD(x28,1);
    FREE(FLD1(x1,3),1);DSPRDF(x1);
   }else{
    CPPRD(x28,2);
    FRPRD(x1,1);}
   {OBJ x31;OBJ x32;
    ADenotation_15(x28,x31);
    ANat_76(x31,x27,x32);
    if(ISTGPRM(x32,0)){
     ADenotation_14(x28,x27,r);
    }else{
     HLT("ft\'String: found empty chunk - this may not happen");}}}}
 return r;}

extern OBJ _AString_Slg_(OBJ x1) /* <>? */
{OBJ r;
 if(ISPRM(x1)){
  r=__ABUILTIN_5;
 }else{
  if(EXPRD(x1,1)){
   DSPRD(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AString_Acons(OBJ x1,OBJ x2) /* cons */
{OBJ r;
 AString_Sii(x1,x2,r);
 return r;}

extern OBJ _AString_Aempty_(OBJ x1) /* empty? */
{OBJ r;
 if(ISPRM(x1)){
  r=__ABUILTIN_5;
 }else{
  if(EXPRD(x1,1)){
   DSPRD(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_3;}
 return r;}

extern OBJ _AString_Acons_(OBJ x1) /* cons? */
{OBJ r;
 if(ISPRM(x1)){
  r=__ABUILTIN_3;
 }else{
  if(EXPRD(x1,1)){
   DSPRD(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;}
 return r;}

extern OBJ _AString_S5(OBJ x1) /* % */
{OBJ r;
 CPCLS(__AString_S5_L73,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_L73,1))(__AString_S5_L73,__ABUILTIN_20);
  PRD1(3,r);FLD1(r,1)=x2;FLD1(r,3)=__AString_Slg;
  ADenotation_1(__AString_AgoodSmallSize,x1,FLD1(r,2));}
 return r;}

extern OBJ _AString_S5_O1(OBJ x1,OBJ x2) /* %,1 */
{OBJ r;
 CPCLS(__AString_S5_O1_L76,1);
 {OBJ x4;OBJ x5;
  ADenotation_1(__AString_AgoodSmallSize,x2,x4);
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O1_L76,1))(__AString_S5_O1_L76,__ABUILTIN_20);
  PRD1(3,r);FLD1(r,1)=x5;FLD1(r,3)=__AString_Slg;
  ADenotation_9(x4,x5,x1,FLD1(r,2));}
 return r;}

extern OBJ _AString_S5_O2(OBJ x1,OBJ x2,OBJ x3) /* %,2 */
{OBJ r;
 CPCLS(__AString_S5_O2_L78,1);
 CPCLS(__AString_S5_O2_L79,1);
 {OBJ x5;OBJ x6;OBJ x7;OBJ x8;
  ADenotation_1(__AString_AgoodSmallSize,x3,x5);
  x6=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O2_L78,1))(__AString_S5_O2_L78,__ABUILTIN_20);
  x7=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O2_L79,1))(__AString_S5_O2_L79,__ABUILTIN_20);
  ADenotation_9(x5,x6,x2,x8);
  PRD1(3,r);FLD1(r,1)=x7;FLD1(r,3)=__AString_Slg;
  ADenotation_9(x8,x7,x1,FLD1(r,2));}
 return r;}

extern OBJ _AString_S5_O3(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* %,3 */
{OBJ r;
 CPCLS(__AString_S5_O3_L81,1);
 CPCLS(__AString_S5_O3_L82,1);
 CPCLS(__AString_S5_O3_L83,1);
 {OBJ x6;OBJ x7;OBJ x8;OBJ x9;OBJ x10;OBJ x11;
  ADenotation_1(__AString_AgoodSmallSize,x4,x6);
  x7=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O3_L81,1))(__AString_S5_O3_L81,__ABUILTIN_20);
  x8=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O3_L82,1))(__AString_S5_O3_L82,__ABUILTIN_20);
  ADenotation_9(x6,x7,x3,x9);
  x10=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O3_L83,1))(__AString_S5_O3_L83,__ABUILTIN_20);
  ADenotation_9(x9,x8,x2,x11);
  PRD1(3,r);FLD1(r,1)=x10;FLD1(r,3)=__AString_Slg;
  ADenotation_9(x11,x10,x1,FLD1(r,2));}
 return r;}

extern OBJ _AString_S5_O4(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5) /* %,4 */
{OBJ r;
 CPCLS(__AString_S5_O4_L85,1);
 CPCLS(__AString_S5_O4_L86,1);
 CPCLS(__AString_S5_O4_L87,1);
 CPCLS(__AString_S5_O4_L88,1);
 {OBJ x7;OBJ x8;OBJ x9;OBJ x10;OBJ x11;OBJ x12;OBJ x13;OBJ x14;
  ADenotation_1(__AString_AgoodSmallSize,x5,x7);
  x8=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O4_L85,1))(__AString_S5_O4_L85,__ABUILTIN_20);
  x9=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O4_L86,1))(__AString_S5_O4_L86,__ABUILTIN_20);
  ADenotation_9(x7,x8,x4,x10);
  x11=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O4_L87,1))(__AString_S5_O4_L87,__ABUILTIN_20);
  ADenotation_9(x10,x9,x3,x12);
  x13=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O4_L88,1))(__AString_S5_O4_L88,__ABUILTIN_20);
  ADenotation_9(x12,x11,x2,x14);
  PRD1(3,r);FLD1(r,1)=x13;FLD1(r,3)=__AString_Slg;
  ADenotation_9(x14,x13,x1,FLD1(r,2));}
 return r;}

extern OBJ _AString_S5_O5(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6) /* %,5 */
{OBJ r;
 {OBJ x7;
  AString_S5_O4(x2,x3,x4,x5,x6,x7);
  AString_Sii(x1,x7,r);}
 return r;}

extern OBJ _AString_S5_O6(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6,OBJ x7) /* %,6 */
{OBJ r;
 {OBJ x8;OBJ x9;
  AString_S5_O4(x3,x4,x5,x6,x7,x8);
  AString_Sii(x2,x8,x9);
  AString_Sii(x1,x9,r);}
 return r;}

extern OBJ _AString_S5_O7(OBJ x1,OBJ x2,OBJ x3,OBJ x4,OBJ x5,OBJ x6,OBJ x7,OBJ x8) /* %,7 */
{OBJ r;
 {OBJ x9;
  AString_S5_O6(x2,x3,x4,x5,x6,x7,x8,x9);
  AString_Sii(x1,x9,r);}
 return r;}

extern OBJ _AString_Sp5(register OBJ x1,register OBJ x2) /* +% */
{OBJ r;OBJ* p1=&r;
 for(;;){
  if(ISPRM(x1)){
   AString_S5(x2,*p1);
  }else{
   {OBJ x31;OBJ x32;OBJ x33=FLD1(x1,3);
    if(EXPRD(x1,1)){
     {
      RSOME(x1,*p1);
      x1=x33;p1=&FLD1(*p1,3);continue;}
    }else{
     x31=FLD1(x1,1);x32=FLD1(x1,2);CPPRD(x32,1);COPY(x33,1);
     {
      FRPRD(x1,1);PRD1(3,*p1);FLD1(*p1,1)=x31;FLD1(*p1,2)=x32;
      x1=x33;p1=&FLD1(*p1,3);continue;}}}}
  break;}
 return r;}

extern OBJ _AString_Sdd(OBJ x1,OBJ x2,OBJ x3) /* .. */
{OBJ r;
 {OBJ x4;
  ANat_81(x1,x2,x4);
  if(ISTGPRM(x4,1)){
   FRCLS(x3,1);
   r=__AString_Slg;
  }else{
   CPCLS(__AString_Sdd_L89,1);
   {OBJ x5;OBJ x6;OBJ x7;OBJ x8;
    ANat_62(x2,x1,x5);
    ANat_2(x5,x6);
    x7=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AString_Sdd_L89,2))(__AString_Sdd_L89,x1,x3);
    ADenotation_2(x6,x7,x8);
    AString_S1(x8,r);}}}
 return r;}

extern OBJ _AString_Aiter(OBJ x1,OBJ x2,OBJ x3) /* iter */
{OBJ r;
 CPCLS(x3,1);
 {OBJ x4;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(x3,1))(x3,x1);
  if(ISTGPRM(x4,1)){
   CPCLS(x2,1);
   {OBJ x8;OBJ x9;
    x8=(*(OBJ(*)(OBJ,OBJ))METHOD(x2,1))(x2,x1);
    AString_Aiter(x8,x2,x3,x9);
    AString_Sii(x1,x9,r);}
  }else{
   FRCLS(x2,1);
   FRCLS(x3,1);
   r=__AString_Slg;}}
 return r;}

extern OBJ _AString_Spp(register OBJ x1,register OBJ x2) /* ++ */
{OBJ r;OBJ* p1=&r;
 for(;;){
  if(ISPRM(x1)){
   *p1=x2;
  }else{
   {OBJ x31;OBJ x32;OBJ x33=FLD1(x1,3);
    if(EXPRD(x1,1)){
     {
      RSOME(x1,*p1);
      x1=x33;p1=&FLD1(*p1,3);continue;}
    }else{
     x31=FLD1(x1,1);x32=FLD1(x1,2);CPPRD(x32,1);COPY(x33,1);
     {
      FRPRD(x1,1);PRD1(3,*p1);FLD1(*p1,1)=x31;FLD1(*p1,2)=x32;
      x1=x33;p1=&FLD1(*p1,3);continue;}}}}
  break;}
 return r;}

extern OBJ _AString_Spsp(OBJ x1,OBJ x2,OBJ x3) /* +/+ */
{OBJ r;
 if(ISPRM(x2)){
  if(ISPRM(x3)){
   r=__AString_Slg;
  }else{
   r=x3;}
 }else{
  if(ISPRM(x3)){
   r=x2;
  }else{
   {OBJ x31;
    AString_Sii(x1,x3,x31);
    AString_Spp(x2,x31,r);}}}
 return r;}

extern OBJ _AString_Spsp_O1(OBJ x1,OBJ x2,OBJ x3) /* +/+,1 */
{OBJ r;
 if(ISPRM(x2)){
  FRPRD(x1,1);
  if(ISPRM(x3)){
   r=__AString_Slg;
  }else{
   r=x3;}
 }else{
  if(ISPRM(x3)){
   FRPRD(x1,1);
   r=x2;
  }else{
   {OBJ x33;OBJ x34;
    AString_S1(x1,x33);
    AString_Spp(x33,x3,x34);
    AString_Spp(x2,x34,r);}}}
 return r;}

extern OBJ _AString_Spsp_O2(OBJ x1,OBJ x2,OBJ x3) /* +/+,2 */
{OBJ r;
 if(ISPRM(x2)){
  FREE(x1,1);
  if(ISPRM(x3)){
   r=__AString_Slg;
  }else{
   r=x3;}
 }else{
  if(ISPRM(x3)){
   FREE(x1,1);
   r=x2;
  }else{
   {OBJ x31;
    AString_Spp(x1,x3,x31);
    AString_Spp(x2,x31,r);}}}
 return r;}

extern OBJ _AString_Sp5p(OBJ x1,OBJ x2,OBJ x3) /* +%+ */
{OBJ r;
 {OBJ x4;
  AString_Sii(x1,x3,x4);
  AString_Spp(x2,x4,r);}
 return r;}

extern OBJ _AString_Sp5p_O1(OBJ x1,OBJ x2,OBJ x3) /* +%+,1 */
{OBJ r;
 {OBJ x4;OBJ x5;
  AString_S1(x1,x4);
  AString_Spp(x4,x3,x5);
  AString_Spp(x2,x5,r);}
 return r;}

extern OBJ _AString_Sp5p_O2(OBJ x1,OBJ x2,OBJ x3) /* +%+,2 */
{OBJ r;
 {OBJ x4;
  AString_Spp(x1,x3,x4);
  AString_Spp(x2,x4,r);}
 return r;}

extern OBJ _AString_Atake(register OBJ x1,register OBJ x2) /* take */
{OBJ r;OBJ* p1=&r;
 for(;;){
  if(ISPRM(x2)){
   *p1=__AString_Slg;
  }else{
   {OBJ x37=FLD1(x2,1);OBJ x38=FLD1(x2,2);OBJ x39=FLD1(x2,3);
    CPPRD(x38,1);COPY(x39,1);
    {OBJ x40;OBJ x42;
     AString_S33(x2,x40);
     ANat_80(x40,x1,x42);
     if(ISTGPRM(x42,1)){
      {OBJ x43;
       ANat_62(x1,x40,x43);
       PRD1(3,*p1);FLD1(*p1,1)=x37;FLD1(*p1,2)=x38;
       x1=x43;x2=x39;p1=&FLD1(*p1,3);continue;}
     }else{
      FREE(x39,1);
      {OBJ x45;OBJ x46;OBJ x47;
       ANat_4(x1,x45);
       ANat_61(x37,x45,x46);
       ADenotation_11(x38,x37,x46,x47);
       AString_S1(x47,*p1);}}}}}
  break;}
 return r;}

extern OBJ _AString_Adrop(register OBJ x1,register OBJ x2) /* drop */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   r=x2;
  }else{
   {OBJ x30=FLD1(x2,1);OBJ x31=FLD1(x2,2);OBJ x32=FLD1(x2,3);
    CPPRD(x31,1);COPY(x32,1);
    {OBJ x33;OBJ x35;
     AString_S33(x2,x33);
     ANat_78(x33,x1,x35);
     if(ISTGPRM(x35,1)){
      FRPRD(x31,1);
      {OBJ x36;
       ANat_62(x1,x33,x36);
       x1=x36;x2=x32;continue;}
     }else{
      {
       PRD1(3,r);FLD1(r,2)=x31;FLD1(r,3)=x32;
       ANat_61(x30,x1,FLD1(r,1));}}}}}
  break;}
 return r;}

extern TUP2 _AString_Asplit(OBJ x1,OBJ x2) /* split */
{TUP2 r;
 {OBJ x3;
  ANat_3(x1,x3);
  if(ISTGPRM(x3,1)){
   COPY(x2,1);
   {OBJ x4;OBJ x5;OBJ x6;OBJ x8;
    ANat_4(x1,x4);
    AString_Art(x2,x5);
    AString_Aft(x2,x6);
    AString_Asplit(x4,x5,x8,r.c2);
    AString_Sii(x6,x8,r.c1);}
  }else{
   r.c1=__AString_Slg;r.c2=x2;}}
 return r;}
extern OBJ _AString_33_c(OBJ x1,OBJ x2) /* split */
{OBJ r;
 {TUP2 t=_AString_33(x1,x2);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

extern OBJ _AString_Afront(register OBJ x1) /* front */
{OBJ r;OBJ* p1=&r;
 for(;;){
  if(ISPRM(x1)){
   HLT("front\'String applied to empty string");
  }else{
   {OBJ x54=FLD1(x1,1);OBJ x55=FLD1(x1,2);OBJ x56=FLD1(x1,3);
    CPPRD(x55,1);COPY(x56,1);
    if(ISPRM(x56)){
     CPPRD(x55,1);
     {OBJ x58;OBJ x59;OBJ x60;
      ANat_2(x54,x58);
      ADenotation_15(x55,x59);
      ANat_76(x58,x59,x60);
      if(ISTGPRM(x60,1)){
       if(EXPRD(x1,1)){
	DSPRD(x1);
       }else{
	DCPRD(x1,1);}
       FRPRD(x55,1);
       *p1=__AString_Slg;
      }else{
       {OBJ x61;OBJ x62;OBJ x63;OBJ x64;OBJ x65;
	AString_S33(x1,x61);
	ANat_4(x61,x62);
	ANat_4(x62,x63);
	ANat_61(x54,x63,x64);
	ADenotation_11(x55,x54,x64,x65);
	AString_S1(x65,*p1);}}}
    }else{
     if(EXPRD(x1,1)){
      DSPRD(x1);
     }else{
      DCPRD(x1,1);}
     {
      PRD1(3,*p1);FLD1(*p1,1)=x54;FLD1(*p1,2)=x55;
      x1=x56;p1=&FLD1(*p1,3);continue;}}}}
  break;}
 return r;}

extern OBJ _AString_Arevert(OBJ x1) /* revert */
{OBJ r;
 AString_Arevert_O1(x1,__AString_Slg,r);
 return r;}

extern OBJ _AString_Alast(register OBJ x1) /* last */
{OBJ r;
 for(;;){
  if(ISPRM(x1)){
   HLT("last\'String applied to empty string");
  }else{
   {OBJ x34=FLD1(x1,2);OBJ x35=FLD1(x1,3);
    if(EXPRD(x1,1)){
     DSPRDF(x1);
    }else{
     CPPRD(x34,1);COPY(x35,1);
     FRPRD(x1,1);}
    if(ISPRM(x35)){
     CPPRD(x34,1);
     {OBJ x36;OBJ x37;
      ADenotation_15(x34,x36);
      ANat_4(x36,x37);
      ADenotation_14(x34,x37,r);}
    }else{
     FRPRD(x34,1);
     x1=x35;continue;}}}
  break;}
 return r;}

extern OBJ _AString_S3(OBJ x1) /* # */
{OBJ r;
 if(ISPRM(x1)){
  r=__ANat_5;
 }else{
  {OBJ x31=FLD1(x1,1);OBJ x32=FLD1(x1,2);OBJ x33=FLD1(x1,3);
   if(EXPRD(x1,1)){
    DSPRDF(x1);
   }else{
    CPPRD(x32,1);COPY(x33,1);
    FRPRD(x1,1);}
   {OBJ x35;OBJ x36;
    ADenotation_15(x32,x35);
    ANat_62(x35,x31,x36);
    AString_S3_O1(x36,x33,r);}}}
 return r;}

extern OBJ _AString_Aexist_(register OBJ x1,register OBJ x2) /* exist? */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   FRCLS(x1,1);
   r=__ABUILTIN_3;
  }else{
   {OBJ x31=FLD1(x2,1);OBJ x32=FLD1(x2,2);OBJ x33=FLD1(x2,3);
    if(EXPRD(x2,1)){
     DSPRDF(x2);
    }else{
     CPPRD(x32,1);COPY(x33,1);
     FRPRD(x2,1);}
    CPCLS(x1,1);
    {OBJ x35;
     AString_Aexist__O1(x1,x31,x32,x35);
     if(ISTGPRM(x35,1)){
      FRCLS(x1,1);
      FREE(x33,1);
      r=__ABUILTIN_5;
     }else{
      x2=x33;continue;}}}}
  break;}
 return r;}

extern OBJ _AString_Afind_(register OBJ x1,register OBJ x2) /* find? */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   FRCLS(x1,1);
   r=__AOption_5;
  }else{
   {OBJ x34=FLD1(x2,1);OBJ x35=FLD1(x2,2);OBJ x36=FLD1(x2,3);
    if(EXPRD(x2,1)){
     DSPRDF(x2);
    }else{
     CPPRD(x35,1);COPY(x36,1);
     FRPRD(x2,1);}
    CPCLS(x1,1);
    {OBJ x38;
     AString_Afind__O1(x1,x34,x35,x38);
     if(ISPRM(x38)){
      x2=x36;continue;
     }else{
      r=x38;
      FRCLS(x1,1);
      FREE(x36,1);}}}}
  break;}
 return r;}

extern OBJ _AString_Aforall_(register OBJ x1,register OBJ x2) /* forall? */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   FRCLS(x1,1);
   r=__ABUILTIN_5;
  }else{
   {OBJ x31=FLD1(x2,1);OBJ x32=FLD1(x2,2);OBJ x33=FLD1(x2,3);
    if(EXPRD(x2,1)){
     DSPRDF(x2);
    }else{
     CPPRD(x32,1);COPY(x33,1);
     FRPRD(x2,1);}
    CPCLS(x1,1);
    {OBJ x35;
     AString_Aforall__O1(x1,x31,x32,x35);
     if(ISTGPRM(x35,1)){
      x2=x33;continue;
     }else{
      FRCLS(x1,1);
      FREE(x33,1);
      r=__ABUILTIN_3;}}}}
  break;}
 return r;}

extern OBJ _AString_S1(OBJ x1) /* ! */
{OBJ r;
 CPPRD(x1,1);
 {OBJ x2;OBJ x3;
  ADenotation_15(x1,x2);
  ANat_6(x2,x3);
  if(ISTGPRM(x3,1)){
   FRPRD(x1,1);
   r=__AString_Slg;
  }else{
   PRD1(3,r);FLD1(r,1)=__ANat_5;FLD1(r,2)=x1;FLD1(r,3)=__AString_Slg;}}
 return r;}

extern OBJ _AString_Ainit(OBJ x1,OBJ x2) /* init */
{OBJ r;
 {OBJ x3;
  ADenotation_1(x1,x2,x3);
  AString_S1(x3,r);}
 return r;}

extern OBJ _AString_Ainit_O1(OBJ x1,OBJ x2) /* init,1 */
{OBJ r;
 {OBJ x3;
  ADenotation_2(x1,x2,x3);
  AString_S1(x3,r);}
 return r;}

extern OBJ _AString_Sie(register OBJ x1,register OBJ x2,register OBJ x3) /* := */
{OBJ r;OBJ* p1=&r;
 for(;;){
  if(ISPRM(x1)){
   HLT(":=\'String: index out of range");
  }else{
   {OBJ x38=FLD1(x1,1);OBJ x39=FLD1(x1,2);OBJ x40=FLD1(x1,3);FLAG x_x1=EXPRD(x1,1);
    if(x_x1){
     CPPRD(x39,1);
    }else{
     CPPRD(x39,2);COPY(x40,1);}
    {OBJ x42;OBJ x43;OBJ x44;
     ADenotation_15(x39,x42);
     ANat_61(x38,x2,x43);
     ANat_80(x43,x42,x44);
     if(ISTGPRM(x44,1)){
      {
       if(x_x1){
	RSOME(x1,*p1);
       }else{
	FRPRD(x1,1);PRD1(3,*p1);FLD1(*p1,1)=x38;FLD1(*p1,3)=x40;}
       ADenotation_9(x39,x43,x3,FLD1(*p1,2));}
     }else{
      {OBJ x46;OBJ x47;
       ANat_62(x42,x38,x46);
       ANat_62(x2,x46,x47);
       if(x_x1){
	RSOME(x1,*p1);
       }else{
	FRPRD(x1,1);PRD1(3,*p1);FLD1(*p1,1)=x38;FLD1(*p1,2)=x39;}
       x1=x40;x2=x47;p1=&FLD1(*p1,3);continue;}}}}}
  break;}
 return r;}

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

extern OBJ _AString_Astart(OBJ x1) /* start */
{OBJ r;
 if(ISPRM(x1)){
  HLT("String at <unknown> : undefined selection start\'String:string->nat");
 }else{
  {OBJ x2=FLD1(x1,1);
   if(EXPRD(x1,1)){
    r=x2;
    DSPRD(x1);
   }else{
    r=x2;
    FRPRD(x1,1);}}}
 return r;}

extern OBJ _AString_Adata(OBJ x1) /* data */
{OBJ r;
 if(ISPRM(x1)){
  HLT("String at <unknown> : undefined selection data\'String:string->denotation");
 }else{
  {OBJ x3=FLD1(x1,2);
   if(EXPRD(x1,1)){
    r=x3;
    FREE(FLD1(x1,3),1);DSPRDF(x1);
   }else{
    CPPRD(x3,1);
    r=x3;
    FRPRD(x1,1);}}}
 return r;}

extern OBJ _AString_Arest(OBJ x1) /* rest */
{OBJ r;
 if(ISPRM(x1)){
  HLT("String at <unknown> : undefined selection rest\'String:string->string");
 }else{
  {OBJ x4=FLD1(x1,3);
   if(EXPRD(x1,1)){
    r=x4;
    FRPRD(FLD1(x1,2),1);DSPRDF(x1);
   }else{
    COPY(x4,1);
    r=x4;
    FRPRD(x1,1);}}}
 return r;}

extern OBJ _AString_AasString(OBJ x1) /* asString */
{OBJ r;
 AString_S1(x1,r);
 return r;}

extern OBJ _AString_Achunk_(OBJ x1) /* chunk? */
{OBJ r;
 if(ISPRM(x1)){
  r=__ABUILTIN_3;
 }else{
  if(EXPRD(x1,1)){
   DSPRD(x1);
  }else{
   DCPRD(x1,1);}
  r=__ABUILTIN_5;}
 return r;}

extern OBJ _AString_Arevert_O1(register OBJ x1,register OBJ x2) /* revert,1 */
{OBJ r;
 for(;;){
  if(ISPRM(x1)){
   r=x2;
  }else{
   {OBJ x34=FLD1(x1,1);OBJ x35=FLD1(x1,2);OBJ x36=FLD1(x1,3);FLAG x_x1=EXPRD(x1,1);
    if(x_x1){
     CPPRD(x35,1);
    }else{
     CPPRD(x35,2);COPY(x36,1);}
    {OBJ x38;OBJ x39;OBJ x40;OBJ x41;
     ADenotation_15(x35,x38);
     ANat_4(x38,x39);
     AString_Arevert_O2(x34,x39,x35,x40);
     if(x_x1){
      RSOME(x1,x41);FLD1(x41,2)=x40;FLD1(x41,3)=x2;
     }else{
      FRPRD(x1,1);PRD1(3,x41);FLD1(x41,1)=x34;FLD1(x41,2)=x40;FLD1(x41,3)=x2;}
     x1=x36;x2=x41;continue;}}}
  break;}
 return r;}

extern OBJ _AString_Arevert_O2(register OBJ x1,register OBJ x2,register OBJ x3) /* revert,2 */
{OBJ r;
 for(;;){
  {OBJ x4;
   ANat_79(x1,x2,x4);
   if(ISTGPRM(x4,1)){
    r=x3;
   }else{
    CPPRD(x3,2);
    {OBJ x5;OBJ x6;OBJ x7;OBJ x8;OBJ x9;OBJ x10;
     ADenotation_14(x3,x2,x5);
     ADenotation_14(x3,x1,x6);
     ANat_2(x1,x7);
     ANat_4(x2,x8);
     ADenotation_9(x3,x2,x6,x9);
     ADenotation_9(x9,x1,x5,x10);
     x1=x7;x2=x8;x3=x10;continue;}}}
  break;}
 return r;}

extern OBJ _AString_S3_O1(register OBJ x1,register OBJ x2) /* #,1 */
{OBJ r;
 for(;;){
  if(ISPRM(x2)){
   r=x1;
  }else{
   {OBJ x33=FLD1(x2,1);OBJ x34=FLD1(x2,2);OBJ x35=FLD1(x2,3);
    if(EXPRD(x2,1)){
     DSPRDF(x2);
    }else{
     CPPRD(x34,1);COPY(x35,1);
     FRPRD(x2,1);}
    {OBJ x37;OBJ x38;OBJ x39;
     ADenotation_15(x34,x37);
     ANat_62(x37,x33,x38);
     ANat_61(x1,x38,x39);
     x1=x39;x2=x35;continue;}}}
  break;}
 return r;}

extern OBJ _AString_Aexist__O1(register OBJ x1,register OBJ x2,register OBJ x3) /* exist?,1 */
{OBJ r;
 for(;;){
  CPPRD(x3,1);
  {OBJ x4;OBJ x5;
   ADenotation_15(x3,x4);
   ANat_79(x2,x4,x5);
   if(ISTGPRM(x5,1)){
    FRCLS(x1,1);
    FRPRD(x3,1);
    r=__ABUILTIN_3;
   }else{
    CPCLS(x1,1);
    CPPRD(x3,1);
    {OBJ x6;OBJ x7;
     ADenotation_14(x3,x2,x6);
     x7=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x6);
     if(ISTGPRM(x7,1)){
      FRCLS(x1,1);
      FRPRD(x3,1);
      r=__ABUILTIN_5;
     }else{
      {OBJ x8;
       ANat_2(x2,x8);
       x2=x8;continue;}}}}}
  break;}
 return r;}

extern OBJ _AString_Afind__O1(register OBJ x1,register OBJ x2,register OBJ x3) /* find?,1 */
{OBJ r;
 for(;;){
  CPPRD(x3,1);
  {OBJ x4;OBJ x5;
   ADenotation_15(x3,x4);
   ANat_79(x2,x4,x5);
   if(ISTGPRM(x5,1)){
    FRCLS(x1,1);
    FRPRD(x3,1);
    r=__AOption_5;
   }else{
    CPCLS(x1,1);
    CPPRD(x3,1);
    {OBJ x6;OBJ x7;
     ADenotation_14(x3,x2,x6);
     x7=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x6);
     if(ISTGPRM(x7,1)){
      FRCLS(x1,1);
      FRPRD(x3,1);
      PRD1F(1,r);FLD1(r,1)=x6;
     }else{
      {OBJ x8;
       ANat_2(x2,x8);
       x2=x8;continue;}}}}}
  break;}
 return r;}

extern OBJ _AString_Aforall__O1(register OBJ x1,register OBJ x2,register OBJ x3) /* forall?,1 */
{OBJ r;
 for(;;){
  CPPRD(x3,1);
  {OBJ x4;OBJ x5;
   ADenotation_15(x3,x4);
   ANat_79(x2,x4,x5);
   if(ISTGPRM(x5,1)){
    FRCLS(x1,1);
    FRPRD(x3,1);
    r=__ABUILTIN_5;
   }else{
    CPCLS(x1,1);
    CPPRD(x3,1);
    {OBJ x6;OBJ x7;
     ADenotation_14(x3,x2,x6);
     x7=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x6);
     if(ISTGPRM(x7,1)){
      {OBJ x8;
       ANat_2(x2,x8);
       x2=x8;continue;}
     }else{
      FRCLS(x1,1);
      FRPRD(x3,1);
      r=__ABUILTIN_3;}}}}
  break;}
 return r;}

extern OBJ _AString_S33(OBJ x1) /* ## */
{OBJ r;
 if(ISPRM(x1)){
  HLT("##: not on empty string / This may not happen!");
 }else{
  {OBJ x26=FLD1(x1,1);OBJ x27=FLD1(x1,2);
   if(EXPRD(x1,1)){
    FREE(FLD1(x1,3),1);DSPRDF(x1);
   }else{
    CPPRD(x27,1);
    FRPRD(x1,1);}
   {OBJ x30;
    ADenotation_15(x27,x30);
    ANat_62(x30,x26,r);}}}
 return r;}

extern OBJ _AString_S5_L73(OBJ x1) /* %'73 */
{OBJ r;
 ANat_4(__AString_AgoodSmallSize,r);
 return r;}

extern OBJ _AString_Sii_L74(OBJ x1) /* ::'74 */
{OBJ r;
 ANat_4(__AString_AgoodSmallSize,r);
 return r;}

extern OBJ _AString_S5_O1_L75(OBJ x1) /* %,1'75 */
{OBJ r;
 ANat_4(__AString_AgoodSmallSize,r);
 return r;}

extern OBJ _AString_S5_O1_L76(OBJ x1) /* %,1'76 */
{OBJ r;
 CPCLS(__AString_S5_O1_L75,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O1_L75,1))(__AString_S5_O1_L75,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O2_L77(OBJ x1) /* %,2'77 */
{OBJ r;
 ANat_4(__AString_AgoodSmallSize,r);
 return r;}

extern OBJ _AString_S5_O2_L78(OBJ x1) /* %,2'78 */
{OBJ r;
 CPCLS(__AString_S5_O2_L77,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O2_L77,1))(__AString_S5_O2_L77,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O2_L79(OBJ x1) /* %,2'79 */
{OBJ r;
 CPCLS(__AString_S5_O2_L78,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O2_L78,1))(__AString_S5_O2_L78,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O3_L80(OBJ x1) /* %,3'80 */
{OBJ r;
 ANat_4(__AString_AgoodSmallSize,r);
 return r;}

extern OBJ _AString_S5_O3_L81(OBJ x1) /* %,3'81 */
{OBJ r;
 CPCLS(__AString_S5_O3_L80,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O3_L80,1))(__AString_S5_O3_L80,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O3_L82(OBJ x1) /* %,3'82 */
{OBJ r;
 CPCLS(__AString_S5_O3_L81,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O3_L81,1))(__AString_S5_O3_L81,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O3_L83(OBJ x1) /* %,3'83 */
{OBJ r;
 CPCLS(__AString_S5_O3_L82,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O3_L82,1))(__AString_S5_O3_L82,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O4_L84(OBJ x1) /* %,4'84 */
{OBJ r;
 ANat_4(__AString_AgoodSmallSize,r);
 return r;}

extern OBJ _AString_S5_O4_L85(OBJ x1) /* %,4'85 */
{OBJ r;
 CPCLS(__AString_S5_O4_L84,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O4_L84,1))(__AString_S5_O4_L84,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O4_L86(OBJ x1) /* %,4'86 */
{OBJ r;
 CPCLS(__AString_S5_O4_L85,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O4_L85,1))(__AString_S5_O4_L85,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O4_L87(OBJ x1) /* %,4'87 */
{OBJ r;
 CPCLS(__AString_S5_O4_L86,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O4_L86,1))(__AString_S5_O4_L86,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_S5_O4_L88(OBJ x1) /* %,4'88 */
{OBJ r;
 CPCLS(__AString_S5_O4_L87,1);
 {OBJ x2;
  x2=(*(OBJ(*)(OBJ,OBJ))METHOD(__AString_S5_O4_L87,1))(__AString_S5_O4_L87,__ABUILTIN_20);
  ANat_4(x2,r);}
 return r;}

extern OBJ _AString_Sdd_L89(OBJ x1,OBJ x2,OBJ x3) /* ..'89 */
{OBJ r;
 {OBJ x4;
  ANat_61(x3,x1,x4);
  r=(*(OBJ(*)(OBJ,OBJ))METHOD(x2,1))(x2,x4);}
 return r;}




init_AString()
{
 static int visited=0; if(visited) return; visited=1;
 init_ANat();
 init_AChar();
 init_ASeq();
 init_AOption();
 init_ADenotation();
 init_AInt();
 CLS(2,_AString_31,__AString_31);
 CLS(3,_AString_30,__AString_30);
 CLS(3,_AString_29,__AString_29);
 CLS(3,_AString_28,__AString_28);
 CLS(1,_AString_59,__AString_59);
 CLS(3,_AString_27,__AString_27);
 CLS(3,_AString_26,__AString_26);
 CLS(3,_AString_89,__AString_89);
 CLS(3,_AString_25,__AString_25);
 CLS(1,_AString_57,__AString_57);
 LCLS(1,_AString_88,__AString_88);
 CLS(2,_AString_24,__AString_24);
 CLS(1,_AString_56,__AString_56);
 LCLS(1,_AString_87,__AString_87);
 CLS(3,_AString_23,__AString_23);
 CLS(1,_AString_55,__AString_55);
 LCLS(1,_AString_86,__AString_86);
 CLS(3,_AString_22,__AString_22);
 CLS(1,_AString_54,__AString_54);
 LCLS(1,_AString_85,__AString_85);
 CLS(2,_AString_21,__AString_21);
 CLS(3,_AString_53,__AString_53);
 LCLS(1,_AString_84,__AString_84);
 CLS(3,_AString_52,__AString_52);
 LCLS(1,_AString_83,__AString_83);
 CLS(8,_AString_19,__AString_19);
 CLS(2,_AString_51,__AString_51);
 LCLS(1,_AString_82,__AString_82);
 CLS(7,_AString_18,__AString_18);
 CLS(2,_AString_50,__AString_50);
 LCLS(1,_AString_81,__AString_81);
 CLS(6,_AString_17,__AString_17);
 CLS(1,_AString_49,__AString_49);
 LCLS(1,_AString_80,__AString_80);
 CLS(5,_AString_16,__AString_16);
 CLS(2,_AString_48,__AString_48);
 LCLS(1,_AString_79,__AString_79);
 CLS(4,_AString_15,__AString_15);
 CLS(2,_AString_47,__AString_47);
 LCLS(1,_AString_78,__AString_78);
 CLS(3,_AString_14,__AString_14);
 CLS(2,_AString_46,__AString_46);
 LCLS(1,_AString_77,__AString_77);
 CLS(2,_AString_13,__AString_13);
 CLS(2,_AString_45,__AString_45);
 LCLS(1,_AString_76,__AString_76);
 CLS(1,_AString_12,__AString_12);
 CLS(2,_AString_44,__AString_44);
 LCLS(1,_AString_75,__AString_75);
 CLS(1,_AString_11,__AString_11);
 CLS(2,_AString_43,__AString_43);
 LCLS(1,_AString_74,__AString_74);
 CLS(1,_AString_10,__AString_10);
 CLS(2,_AString_42,__AString_42);
 LCLS(1,_AString_73,__AString_73);
 CLS(2,_AString_9,__AString_9);
 CLS(2,_AString_41,__AString_41);
 CLS(1,_AString_72,__AString_72);
 CLS(2,_AString_40,__AString_40);
 CLS(3,_AString_71,__AString_71);
 CLS(1,_AString_7,__AString_7);
 CLS(1,_AString_39,__AString_39);
 CLS(3,_AString_70,__AString_70);
 CLS(1,_AString_38,__AString_38);
 CLS(1,_AString_5,__AString_5);
 CLS(3,_AString_69,__AString_69);
 CLS(2,_AString_68,__AString_68);
 CLS(1,_AString_4,__AString_4);
 CLS(1,_AString_36,__AString_36);
 CLS(1,_AString_3,__AString_3);
 CLS(3,_AString_67,__AString_67);
 CLS(2,_AString_66,__AString_66);
 CLS(2,_AString_2,__AString_2);
 CLS(1,_AString_34,__AString_34);
 CLS(2,_AString_33_c,__AString_33);
 CLS(2,_AString_32,__AString_32);
 init_const_AString();
 /* __AString_Slg */
 PRM1(__AString_Slg);
 /* __AString_Aempty */
 __AString_Aempty=__AString_Slg;
 /* __AString_AgoodSmallSize */
 __AString_AgoodSmallSize=__ANat_15;}

