

#include "BUILTIN.h"

#include "Nat.h"
extern OBJ __ASeq_6;
extern OBJ _ASeq_52(OBJ,OBJ);extern OBJ __ASeq_52;
extern OBJ _AISeq_10(OBJ,OBJ);extern OBJ __AISeq_10;
extern OBJ _AISeq_16(OBJ,OBJ);extern OBJ __AISeq_16;
extern OBJ _AISeq_17(OBJ,OBJ);extern OBJ __AISeq_17;
extern OBJ _AISeq_26(OBJ);extern OBJ __AISeq_26;
extern OBJ _AISeq_27(OBJ);extern OBJ __AISeq_27;
extern OBJ _AISeqIndex_2(OBJ,OBJ);OBJ __AISeqIndex_2; /* ! */
extern OBJ _AISeqIndex_3(OBJ,OBJ);OBJ __AISeqIndex_3; /* pos */
extern OBJ _AISeqIndex_4(OBJ,OBJ);OBJ __AISeqIndex_4; /* pos,1 */
extern OBJ _AISeqIndex_5(OBJ,OBJ,OBJ);OBJ __AISeqIndex_5; /* slice */
extern OBJ _AISeqIndex_6(OBJ,OBJ,OBJ);OBJ __AISeqIndex_6; /* upd */
extern OBJ _AISeqIndex_7(OBJ,OBJ,OBJ);OBJ __AISeqIndex_7; /* upd,1 */
extern OBJ _AISeqIndex_8(OBJ,OBJ,OBJ);OBJ __AISeqIndex_8; /* swap */
extern OBJ _AISeqIndex_9(OBJ,OBJ,OBJ);OBJ __AISeqIndex_9; /* repl */
extern OBJ _AISeqIndex_10(OBJ,OBJ,OBJ);OBJ __AISeqIndex_10; /* insert */
extern OBJ _AISeqIndex_11(OBJ,OBJ,OBJ);OBJ __AISeqIndex_11; /* delete */
extern OBJ _AISeqIndex_12(OBJ,OBJ);OBJ __AISeqIndex_12; /* upd'12 */
extern OBJ _AISeqIndex_13(OBJ,OBJ);OBJ __AISeqIndex_13; /* upd'13 */
extern OBJ _AISeqIndex_14(OBJ,OBJ);OBJ __AISeqIndex_14; /* upd'14 */
extern OBJ _AISeqIndex_15(OBJ,OBJ,OBJ,OBJ);OBJ __AISeqIndex_15; /* upd'15 */
extern OBJ _AISeqIndex_16(OBJ,OBJ);OBJ __AISeqIndex_16; /* upd,1'16 */
extern OBJ _AISeqIndex_17(OBJ,OBJ,OBJ);OBJ __AISeqIndex_17; /* upd,1'17 */
extern OBJ _AISeqIndex_18(OBJ,OBJ);OBJ __AISeqIndex_18; /* upd,1'18 */
extern OBJ _AISeqIndex_19(OBJ,OBJ,OBJ,OBJ);OBJ __AISeqIndex_19; /* upd,1'19 */
extern OBJ _AISeqIndex_20(OBJ,OBJ,OBJ);OBJ __AISeqIndex_20; /* swap'20 */
extern OBJ _AISeqIndex_21(OBJ,OBJ,OBJ);OBJ __AISeqIndex_21; /* swap'21 */
extern OBJ _AISeqIndex_22(OBJ,OBJ);OBJ __AISeqIndex_22; /* swap'22 */
extern OBJ _AISeqIndex_23(OBJ,OBJ,OBJ,OBJ);OBJ __AISeqIndex_23; /* swap'23 */

extern OBJ _AISeqIndex_2(OBJ x1,OBJ x2) /* ! */
{OBJ r;
 CPCLS(__AISeq_27,1);
 {OBJ x3;
  x3=_AISeq_17(x2,x1);
  r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_27,2))(__AISeq_27,x3,__ABUILTIN_20);}
 return r;}

extern OBJ _AISeqIndex_3(OBJ x1,OBJ x2) /* pos */
{OBJ r;
 CPCLS(__AISeq_27,1);
 CPCLS(x1,1);
 CPPRD(x2,1);
 {OBJ x3;OBJ x4;
  x3=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_27,2))(__AISeq_27,x2,__ABUILTIN_20);
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x3);
  if(ISTGPRM(x4,1)){
   FRCLS(x1,1);
   FRPRD(x2,1);
   r=__ANat_5;
  }else{
   CPCLS(__AISeq_26,1);
   {OBJ x5;OBJ x6;
    x5=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_26,2))(__AISeq_26,x2,__ABUILTIN_20);
    x6=_AISeqIndex_3(x1,x5);
    ANat_2(x6,r);}}}
 return r;}

extern OBJ _AISeqIndex_4(OBJ x1,OBJ x2) /* pos,1 */
{OBJ r;
 {
  PRD1F(1,r);
  FLD1(r,1)=_AISeqIndex_3(x1,x2);}
 return r;}

extern OBJ _AISeqIndex_5(OBJ x1,OBJ x2,OBJ x3) /* slice */
{OBJ r;
 {OBJ x4;
  ANat_78(x3,x2,x4);
  if(ISTGPRM(x4,1)){
   FRPRD(x1,1);
   r=__ASeq_6;
  }else{
   {OBJ x5;OBJ x6;OBJ x7;
    ANat_62(x3,x2,x5);
    x6=_AISeq_17(x2,x1);
    ANat_2(x5,x7);
    r=_AISeq_16(x7,x6);}}}
 return r;}

extern OBJ _AISeqIndex_6(OBJ x1,OBJ x2,OBJ x3) /* upd */
{OBJ r;
 {OBJ x4;
  ANat_6(x1,x4);
  if(ISTGPRM(x4,1)){
   CPCLS(__AISeqIndex_12,1);
   CPCLS(__AISeqIndex_13,1);
   {OBJ x5;OBJ x6;
    x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AISeqIndex_12,1))(__AISeqIndex_12,x2);
    x6=(*(OBJ(*)(OBJ,OBJ))METHOD(__AISeqIndex_13,1))(__AISeqIndex_13,x3);
    PRD1(2,r);FLD1(r,1)=x5;FLD1(r,2)=x6;}
  }else{
   CPPRD(x3,1);
   CPCLS(__AISeqIndex_14,1);
   CPCLS(__AISeqIndex_15,1);
   {OBJ x7;OBJ x8;
    x7=(*(OBJ(*)(OBJ,OBJ))METHOD(__AISeqIndex_14,1))(__AISeqIndex_14,x3);
    x8=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AISeqIndex_15,3))(__AISeqIndex_15,x1,x2,x3);
    PRD1(2,r);FLD1(r,1)=x7;FLD1(r,2)=x8;}}}
 return r;}

extern OBJ _AISeqIndex_7(OBJ x1,OBJ x2,OBJ x3) /* upd,1 */
{OBJ r;
 {OBJ x4;
  ANat_6(x1,x4);
  if(ISTGPRM(x4,1)){
   CPPRD(x3,1);
   CPCLS(__AISeqIndex_16,1);
   CPCLS(__AISeqIndex_17,1);
   {OBJ x5;OBJ x6;
    x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__AISeqIndex_16,1))(__AISeqIndex_16,x3);
    x6=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeqIndex_17,2))(__AISeqIndex_17,x2,x3);
    PRD1(2,r);FLD1(r,1)=x6;FLD1(r,2)=x5;}
  }else{
   CPPRD(x3,1);
   CPCLS(__AISeqIndex_18,1);
   CPCLS(__AISeqIndex_19,1);
   {OBJ x7;OBJ x8;
    x7=(*(OBJ(*)(OBJ,OBJ))METHOD(__AISeqIndex_18,1))(__AISeqIndex_18,x3);
    x8=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AISeqIndex_19,3))(__AISeqIndex_19,x1,x2,x3);
    PRD1(2,r);FLD1(r,1)=x7;FLD1(r,2)=x8;}}}
 return r;}

extern OBJ _AISeqIndex_8(register OBJ x1,register OBJ x2,register OBJ x3) /* swap */
{OBJ r;
 for(;;){
  {OBJ x4;
   ANat_81(x1,x2,x4);
   if(ISTGPRM(x4,1)){
    {OBJ t1;
     t1=x1;
     x1=x2;
     x2=t1;}continue;
   }else{
    {OBJ x5;
     ANat_76(x1,x2,x5);
     if(ISTGPRM(x5,1)){
      r=x3;
     }else{
      {OBJ x6;
       ANat_80(x1,x2,x6);
       if(ISTGPRM(x6,1)){
	{OBJ x7;
	 ANat_6(x1,x7);
	 if(ISTGPRM(x7,1)){
	  CPPRD(x3,1);
	  CPCLS(__AISeqIndex_20,1);
	  CPCLS(__AISeqIndex_21,1);
	  {OBJ x8;OBJ x9;
	   x8=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeqIndex_20,2))(__AISeqIndex_20,x2,x3);
	   x9=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeqIndex_21,2))(__AISeqIndex_21,x2,x3);
	   PRD1(2,r);FLD1(r,1)=x8;FLD1(r,2)=x9;}
	 }else{
	  CPPRD(x3,1);
	  CPCLS(__AISeqIndex_22,1);
	  CPCLS(__AISeqIndex_23,1);
	  {OBJ x10;OBJ x11;
	   x10=(*(OBJ(*)(OBJ,OBJ))METHOD(__AISeqIndex_22,1))(__AISeqIndex_22,x3);
	   x11=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__AISeqIndex_23,3))(__AISeqIndex_23,x1,x2,x3);
	   PRD1(2,r);FLD1(r,1)=x10;FLD1(r,2)=x11;}}}
       }else{
	HLT("ISeqIndex at <29,24-36,45> : missing else in swap\'ISeqIndex:nat**nat**iseq->iseq");}}}}}}
  break;}
 return r;}

extern OBJ _AISeqIndex_9(OBJ x1,OBJ x2,OBJ x3) /* repl */
{OBJ r;
 CPPRD(x1,1);
 COPY(x3,1);
 {OBJ x4;OBJ x5;OBJ x6;OBJ x7;OBJ x8;
  x4=_AISeq_16(x2,x1);
  x5=_ASeq_52(x3,__ANat_5);
  ANat_61(x2,x5,x6);
  x7=_AISeq_17(x6,x1);
  x8=_AISeq_10(x3,x7);
  r=_AISeq_10(x4,x8);}
 return r;}

extern OBJ _AISeqIndex_10(OBJ x1,OBJ x2,OBJ x3) /* insert */
{OBJ r;
 CPPRD(x1,1);
 {OBJ x4;OBJ x5;OBJ x6;
  x4=_AISeq_16(x2,x1);
  x5=_AISeq_17(x2,x1);
  x6=_AISeq_10(x3,x5);
  r=_AISeq_10(x4,x6);}
 return r;}

extern OBJ _AISeqIndex_11(OBJ x1,OBJ x2,OBJ x3) /* delete */
{OBJ r;
 {OBJ x4;
  ANat_78(x3,x2,x4);
  if(ISTGPRM(x4,1)){
   r=x1;
  }else{
   CPPRD(x1,1);
   {OBJ x5;OBJ x6;OBJ x7;
    x5=_AISeq_16(x2,x1);
    ANat_2(x3,x6);
    x7=_AISeq_17(x6,x1);
    r=_AISeq_10(x5,x7);}}}
 return r;}

extern OBJ _AISeqIndex_12(OBJ x1,OBJ x2) /* upd'12 */
{OBJ r;
 r=x1;
 return r;}

extern OBJ _AISeqIndex_13(OBJ x1,OBJ x2) /* upd'13 */
{OBJ r;
 CPCLS(__AISeq_26,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_26,2))(__AISeq_26,x1,__ABUILTIN_20);
 return r;}

extern OBJ _AISeqIndex_14(OBJ x1,OBJ x2) /* upd'14 */
{OBJ r;
 CPCLS(__AISeq_27,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_27,2))(__AISeq_27,x1,__ABUILTIN_20);
 return r;}

extern OBJ _AISeqIndex_15(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* upd'15 */
{OBJ r;
 CPCLS(__AISeq_26,1);
 {OBJ x5;OBJ x6;
  x5=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_26,2))(__AISeq_26,x3,__ABUILTIN_20);
  ANat_4(x1,x6);
  r=_AISeqIndex_6(x6,x2,x5);}
 return r;}

extern OBJ _AISeqIndex_16(OBJ x1,OBJ x2) /* upd,1'16 */
{OBJ r;
 CPCLS(__AISeq_26,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_26,2))(__AISeq_26,x1,__ABUILTIN_20);
 return r;}

extern OBJ _AISeqIndex_17(OBJ x1,OBJ x2,OBJ x3) /* upd,1'17 */
{OBJ r;
 CPCLS(__AISeq_27,1);
 {OBJ x4;
  x4=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_27,2))(__AISeq_27,x2,__ABUILTIN_20);
  r=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x4);}
 return r;}

extern OBJ _AISeqIndex_18(OBJ x1,OBJ x2) /* upd,1'18 */
{OBJ r;
 CPCLS(__AISeq_27,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_27,2))(__AISeq_27,x1,__ABUILTIN_20);
 return r;}

extern OBJ _AISeqIndex_19(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* upd,1'19 */
{OBJ r;
 CPCLS(__AISeq_26,1);
 {OBJ x5;OBJ x6;
  x5=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_26,2))(__AISeq_26,x3,__ABUILTIN_20);
  ANat_4(x1,x6);
  r=_AISeqIndex_7(x6,x2,x5);}
 return r;}

extern OBJ _AISeqIndex_20(OBJ x1,OBJ x2,OBJ x3) /* swap'20 */
{OBJ r;
 CPCLS(__AISeq_27,1);
 {OBJ x4;
  x4=_AISeq_17(x1,x2);
  r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_27,2))(__AISeq_27,x4,__ABUILTIN_20);}
 return r;}

extern OBJ _AISeqIndex_21(OBJ x1,OBJ x2,OBJ x3) /* swap'21 */
{OBJ r;
 CPCLS(__AISeq_26,1);
 CPCLS(__AISeq_27,1);
 CPPRD(x2,1);
 {OBJ x4;OBJ x5;OBJ x6;
  ANat_4(x1,x4);
  x5=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_27,2))(__AISeq_27,x2,__ABUILTIN_20);
  x6=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_26,2))(__AISeq_26,x2,__ABUILTIN_20);
  r=_AISeqIndex_6(x4,x5,x6);}
 return r;}

extern OBJ _AISeqIndex_22(OBJ x1,OBJ x2) /* swap'22 */
{OBJ r;
 CPCLS(__AISeq_27,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_27,2))(__AISeq_27,x1,__ABUILTIN_20);
 return r;}

extern OBJ _AISeqIndex_23(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* swap'23 */
{OBJ r;
 CPCLS(__AISeq_26,1);
 {OBJ x5;OBJ x6;OBJ x7;
  ANat_4(x2,x5);
  x6=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(__AISeq_26,2))(__AISeq_26,x3,__ABUILTIN_20);
  ANat_4(x1,x7);
  r=_AISeqIndex_8(x7,x5,x6);}
 return r;}

static OBJ _mt_4_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_4_3_1(OBJ t,OBJ t1) 
{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))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),t1);
 return r;}
static OBJ _mt_4_3_1_l(OBJ t,OBJ t1) 
{OBJ r;
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),t1);
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  DCCLS(t,1);
  FLDCLS(t,1)=NIL;FLDCLS(t,2)=NIL;FLDCLS(t,3)=NIL;
  COPY(r,1);LZYCLS(t,r);}
 return r;}

init_AISeqIndex()
{
 static int visited=0; if(visited) return; visited=1;
 init_ANat();
 init_ASeq();
 init_AISeq();
 init_AOption();
 LCLS(4,_AISeqIndex_23,__AISeqIndex_23);
 LCLS(2,_AISeqIndex_22,__AISeqIndex_22);
 LCLS(3,_AISeqIndex_21,__AISeqIndex_21);
 LCLS(3,_AISeqIndex_20,__AISeqIndex_20);
 LCLS(4,_AISeqIndex_19,__AISeqIndex_19);
 LCLS(2,_AISeqIndex_18,__AISeqIndex_18);
 LCLS(3,_AISeqIndex_17,__AISeqIndex_17);
 LCLS(2,_AISeqIndex_16,__AISeqIndex_16);
 LCLS(4,_AISeqIndex_15,__AISeqIndex_15);
 LCLS(2,_AISeqIndex_14,__AISeqIndex_14);
 LCLS(2,_AISeqIndex_13,__AISeqIndex_13);
 LCLS(2,_AISeqIndex_12,__AISeqIndex_12);
 CLS(3,_AISeqIndex_11,__AISeqIndex_11);
 CLS(3,_AISeqIndex_10,__AISeqIndex_10);
 CLS(3,_AISeqIndex_9,__AISeqIndex_9);
 CLS(3,_AISeqIndex_8,__AISeqIndex_8);
 CLS(3,_AISeqIndex_7,__AISeqIndex_7);
 CLS(3,_AISeqIndex_6,__AISeqIndex_6);
 CLS(3,_AISeqIndex_5,__AISeqIndex_5);
 CLS(2,_AISeqIndex_4,__AISeqIndex_4);
 CLS(2,_AISeqIndex_3,__AISeqIndex_3);
 CLS(2,_AISeqIndex_2,__AISeqIndex_2);
 MTH(4,0,3,_mt_4_0_3);LZYMTH(4,0,3,_mt_4_0_3);
 MTH(4,3,1,_mt_4_3_1);LZYMTH(4,3,1,_mt_4_3_1_l);}

