/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: October 19, 1993 1:03:48 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: TJaMArrayImpl, module: TJaMArrayImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2193439576,2020879833] TJaMArrayImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static void NoName←Q1884();
static void TJaMArrayImpl←P0();
static word NewArray←P60();
static word ACopy←P120();
static void AStore←P180();
static void ALoad←P240();
static void APut←P300();
static word AGet←P360();
static word ASub←P420();
static word AFind←P480();
static void ABind←P540();
static word ArrayForAll←P600();
static void ApplyArray←P660();
static void ApplyAPut←P720();
static void ApplyAGet←P780();
static void ApplySubArray←P840();
static void ApplyAFind←P900();
static void ApplyAStore←P960();
static void ApplyALoad←P1020();
static void ApplyABind←P1080();
static void ApplyArrayForAll←P1140();
static word proc←P1824();
static word NoName←Q1944();
static void NoName←Q2004();
static struct {unsigned f; char r[16];} string1 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[4];} string3 = {65540, "\251\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\243\004\305\073\300\011\303\367\103\101\020\000\000"};
static struct {unsigned f; char r[12];} string5 = {524296, "\011\000\004\000\040\000\004\001\000\000\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\243\004\305\073\300\011\303\367\103\101\004\000\000"};
static struct {unsigned f; char r[16];} string7 = {786448, ".arrayforall\000\000\000"};
static struct {unsigned f; char r[8];} string8 = {458760, ".astore"};
static struct {unsigned f; char r[8];} string9 = {393224, ".aload\000"};
static struct {unsigned f; char r[8];} string10 = {393224, ".abind\000"};
static struct {unsigned f; char r[8];} string11 = {393224, ".afind\000"};
static struct {unsigned f; char r[12];} string12 = {589836, ".subarray\000\000"};
static struct {unsigned f; char r[8];} string13 = {327688, ".aput\000\000"};
static struct {unsigned f; char r[8];} string14 = {327688, ".aget\000\000"};
static struct {unsigned f; char r[8];} string15 = {393224, ".array\000"};
static struct {unsigned f; char r[16];} string16 = {851984, "\257\300\202\275\073\130\300\170\164\055\331\100\164\000\000"};
static struct {unsigned f; char r[8];} string17 = {393222, "\006\001(\004A\377\000"};
static struct {unsigned f; char r[4];} string18 = {1414160717, "\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\243\004\305\073\300\011\303\367\103\100\150\000\000"};
static struct {
   word f0[19]; word f19; word f20; word f21; 
   word f22; word f23; word f24; word f25; 
   word f26; word f27; word f28; word f29; 
   word f30; word f31; word f32; word f33; 
   word f34; word f35; word f36; word f37; 
   word f38; word f39; word f40; word f41; 
   word f42; word f43; word f44; word f45; 
   word f46; word f47; word f48; word f49; 
   word f50; word f51; word f52; word f53; 
   word f54; word f55; word f56; word f57; 
   word f58[3]; 
   } globalframe = {
   {0}, (word) ApplyArrayForAll←P1140, 0, (word) ApplyABind←P1080, 
   0, (word) ApplyALoad←P1020, 0, (word) ApplyAStore←P960, 
   0, (word) ApplyAFind←P900, 0, (word) ApplySubArray←P840, 
   0, (word) ApplyAGet←P780, 0, (word) ApplyAPut←P720, 
   0, (word) ApplyArray←P660, 0, (word) ArrayForAll←P600, 
   0, (word) ABind←P540, 0, (word) AFind←P480, 
   0, (word) ASub←P420, 0, (word) AGet←P360, 
   0, (word) APut←P300, 0, (word) ALoad←P240, 
   0, (word) AStore←P180, 0, (word) ACopy←P120, 
   0, (word) NewArray←P60, 0, (word) TJaMArrayImpl←P0, 
   {0}
   };

static void NoName←Q1884()
   {
   register ptr gf←c0147 =  (ptr) &globalframe;
   word var←c13904;
   (* (( (ptr) gf←c0147)+5) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0147)+7) ) = (word) XR←GetTypeIndexS((word) (&string3));
   (* (( (ptr) gf←c0147)+8) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5);
   (* (( (ptr) gf←c0147)+9) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string2);
   (*  (ptr) (( (bPt) gf←c0147)+40) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string7);
   (*  (ptr) (( (bPt) gf←c0147)+44) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string8);
   (*  (ptr) (( (bPt) gf←c0147)+48) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string9);
   (*  (ptr) (( (bPt) gf←c0147)+52) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string10);
   (*  (ptr) (( (bPt) gf←c0147)+56) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string11);
   (*  (ptr) (( (bPt) gf←c0147)+60) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string12);
   (*  (ptr) (( (bPt) gf←c0147)+64) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string13);
   (*  (ptr) (( (bPt) gf←c0147)+68) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string14);
   (*  (ptr) (( (bPt) gf←c0147)+72) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0147)+5) ), (word) &string15);
   (void) XR←DeclareGlobalFrame((word) "TJaMArrayImpl", &globalframe, (word) XR←GetTypeIndex((word) &string16, 0, (word) &string17)
      , (word) (( (bPt) gf←c0147)+228)/* var←c12816 */ );
   var←c13904 = (word) XR←ImportInterface((word) &string18, (word) XR←GetTypeIndexS((word) (&string19)), 101);
   (* (( (ptr) gf←c0147)+59)/* var←c12848 */  ) = var←c13904;
   (void) XR←ImportProcS(var←c13904, 548610);
   (void) XR←ImportProcS(var←c13904, 67382017);
   (void) XR←ImportProcS(var←c13904, 529922);
   (void) XR←ImportProcS(var←c13904, 530178);
   (void) XR←ImportProcS(var←c13904, 67381761);
   (void) XR←ImportProcS(var←c13904, 531970);
   (void) XR←ImportProcS(var←c13904, 67379969);
   (void) XR←ImportProcS(var←c13904, 134759682);
   (void) XR←ImportProcS(var←c13904, 67633410);
   (void) XR←ImportProcS(var←c13904, 529666);
   (void) XR←ImportProcS(var←c13904, 67379457);
   (void) XR←ImportProcS(var←c13904, 285441);
   (void) XR←ImportProcS(var←c13904, 812035);
   var←c13904 = (word) XR←ExportInterface((word) &string18, (word) XR←GetTypeIndexS((word) (&string19)), 101);
   (* (( (ptr) gf←c0147)+60)/* var←c13936 */  ) = var←c13904;
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+220)/* var←c12784 */ , 67385601, (word) "NewArray");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+212)/* var←c12752 */ , 67648002, (word) "ACopy");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+172)/* var←c12592 */ , 67910403, (word) "ASub");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+188)/* var←c12656 */ , 801795, (word) "APut");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+180)/* var←c12624 */ , 67648770, (word) "AGet");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+164)/* var←c12560 */ , 67649026, (word) "AFind");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+156)/* var←c12528 */ , 540418, (word) "ABind");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+148)/* var←c12496 */ , 67649538, (word) "ArrayForAll");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+204)/* var←c12720 */ , 540930, (word) "AStore");
   (void) XR←ExportProcS(var←c13904, (word) (( (bPt) gf←c0147)+196)/* var←c12688 */ , 541186, (word) "ALoad");
   }

static void TJaMArrayImpl←P0(formal←c029, formal←c028)
   word formal←c029;
   word formal←c028;
   {
   register ptr gf←c13968 =  (ptr) &globalframe;
   /* TJaMArrayImpl: */ 
SOURCE(18, 3895)
SOURCE(3530, 39)
   {
      word pd20;
      pd20 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd20 ))))((* (( (ptr) gf←c13968)+18) ), (word) (( (bPt) gf←c13968)+140)/* var←c12464 */ , 0, pd20)
      ;
      };
SOURCE(3571, 37)
   {
      word pd21;
      pd21 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd21 ))))((* (( (ptr) gf←c13968)+17) ), (word) (( (bPt) gf←c13968)+124)/* var←c12400 */ , 0, pd21)
      ;
      };
SOURCE(3610, 37)
   {
      word pd22;
      pd22 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd22 ))))((* (( (ptr) gf←c13968)+16) ), (word) (( (bPt) gf←c13968)+132)/* var←c12432 */ , 0, pd22)
      ;
      };
SOURCE(3649, 45)
   {
      word pd23;
      pd23 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd23 ))))((* (( (ptr) gf←c13968)+15) ), (word) (( (bPt) gf←c13968)+116)/* var←c12368 */ , 0, pd23)
      ;
      };
SOURCE(3696, 51)
   {
      word pd24;
      pd24 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd24 ))))((* (( (ptr) gf←c13968)+10) ), (word) (( (bPt) gf←c13968)+76)/* var←c12208 */ , 0, pd24)
      ;
      };
SOURCE(3749, 41)
   {
      word pd25;
      pd25 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd25 ))))((* (( (ptr) gf←c13968)+11) ), (word) (( (bPt) gf←c13968)+100)/* var←c12304 */ , 0, pd25)
      ;
      };
SOURCE(3792, 39)
   {
      word pd26;
      pd26 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd26 ))))((* (( (ptr) gf←c13968)+12) ), (word) (( (bPt) gf←c13968)+92)/* var←c12272 */ , 0, pd26)
      ;
      };
SOURCE(3833, 39)
   {
      word pd27;
      pd27 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd27 ))))((* (( (ptr) gf←c13968)+13) ), (word) (( (bPt) gf←c13968)+84)/* var←c12240 */ , 0, pd27)
      ;
      };
SOURCE(3874, 39)
   {
      word pd28;
      pd28 = (* (( (ptr) (* (( (ptr) gf←c13968)+59)/* var←c12848 */  ))+104) );
      (void) ( *( (fPt) ((*  (ptr) pd28 ))))((* (( (ptr) gf←c13968)+14) ), (word) (( (bPt) gf←c13968)+108)/* var←c12336 */ , 0, pd28)
      ;
      };
   }

static word NewArray←P60(len←v3052)
   word len←v3052;
   {
   register ptr gf←c14000 =  (ptr) &globalframe;
   word var←c3096;
   /* NewArray: */ 
SOURCE(161, 189)
SOURCE(212, 63)
   if (( (int)len←v3052 <  (int)0) || ( (int)len←v3052 >=  (int)536870910)) {
SOURCE(250, 25)
      {
         word pd29;
         pd29 = (* (( (ptr) (* (( (ptr) gf←c14000)+59)/* var←c12848 */  ))+95) );
         (void) ( *( (fPt) ((*  (ptr) pd29 ))))(3, pd29);
         };
      };
SOURCE(277, 73)
   {
      word var←c12944;
      word var←c12976;
      word var←c13008;
      word var←c12912;
      word var←c13040;
      var←c12944 = BCK(len←v3052, 67108863);
      var←c12976 = ((word) var←c12944 << 2);
      var←c13008 = XR←NewObject((4 + var←c12976), (* (( (ptr) gf←c14000)+8) ));
      (*  (ptr) var←c13008 ) = var←c12944;
      var←c12912 = var←c13008;
      var←c13040 = XR←NewObject(12, (* (( (ptr) gf←c14000)+9) ));
      (*  (ptr) var←c13040 ) = var←c12912;
      (* (( (ptr) var←c13040)+2) ) = SGNCK(len←v3052);
      return(var←c13040);
      };
   }

static word ACopy←P120(array←v3156, expand←v3184)
   word array←v3156;
   word expand←v3184;
   {
   register ptr gf←c14032 =  (ptr) &globalframe;
   word new←v3228;
   word rem←v4192;
   /* ACopy: */ 
SOURCE(356, 269)
SOURCE(356, 269)
   new←v3228 = 0;
SOURCE(430, 35)
   rem←v4192 = (536870910 - (* (( (ptr) array←v3156)+2) ));
SOURCE(467, 55)
   if (( (int)expand←v3184 <  (int)0) || ( (int)expand←v3184 >=  (int)rem←v4192)) {
SOURCE(497, 25)
      {
         word pd30;
         pd30 = (* (( (ptr) (* (( (ptr) gf←c14032)+59)/* var←c12848 */  ))+95) );
         (void) ( *( (fPt) ((*  (ptr) pd30 ))))(3, pd30);
         };
      };
SOURCE(524, 32)
   new←v3228 = (word) NewArray←P60(((* (( (ptr) array←v3156)+2) ) + expand←v3184));
SOURCE(558, 67)
   {
      register word i←v4236 = 0;
      register word noName←c13072;
      noName←c13072 = (* (( (ptr) array←v3156)+2) );
      if ((i←v4236 >= noName←c13072)) {
         goto lab←L100000;
         };
      lab←L100003: ;
SOURCE(589, 36)
      {
         word var←c13104;
         var←c13104 = (word) AGet←P360(array←v3156, i←v4236);
         (void) APut←P300(new←v3228, i←v4236, var←c13104);
         };
      i←v4236 = (i←v4236 + 1);
      if ((i←v4236 < noName←c13072)) {
         goto lab←L100003;
         };
      lab←L100000: ;
      };
SOURCE(356, 269)
   return(new←v3228);
   }

static void AStore←P180(frame←v3288, array←v3316)
   word frame←v3288;
   word array←v3316;
   {
   register ptr gf←c14064 =  (ptr) &globalframe;
   /* AStore: */ 
SOURCE(631, 120)
SOURCE(683, 68)
   {
      register word i←v4280;
      i←v4280 = (* (( (ptr) array←v3316)+2) );
      if ((0 >= i←v4280)) {
         goto lab←L100004;
         };
      i←v4280 = (i←v4280 - 1);
      lab←L100007: ;
SOURCE(725, 26)
      {
         word var←c13136;
         {
            word pd31;
            pd31 = (* (( (ptr) (* (( (ptr) gf←c14064)+59)/* var←c12848 */  ))+37) );
            var←c13136 = (word) ( *( (fPt) ((*  (ptr) pd31 ))))(frame←v3288, pd31);
            };
         (void) APut←P300(array←v3316, i←v4280, var←c13136);
         };
      if ((0 >= i←v4280)) {
         goto lab←L100004;
         };
      i←v4280 = (i←v4280 - 1);
      goto lab←L100007;
      lab←L100004: ;
      };
   }

static void ALoad←P240(frame←v3376, array←v3404)
   word frame←v3376;
   word array←v3404;
   {
   register ptr gf←c14096 =  (ptr) &globalframe;
   /* ALoad: */ 
SOURCE(766, 109)
SOURCE(817, 58)
   {
      register word i←v4324 = 0;
      register word noName←c13168;
      noName←c13168 = (* (( (ptr) array←v3404)+2) );
      if ((i←v4324 >= noName←c13168)) {
         goto lab←L100008;
         };
      lab←L100011: ;
SOURCE(848, 27)
      {
         word var←c13200;
         var←c13200 = (word) AGet←P360(array←v3404, i←v4324);
         {
            word pd32;
            pd32 = (* (( (ptr) (* (( (ptr) gf←c14096)+59)/* var←c12848 */  ))+25) );
            (void) ( *( (fPt) ((*  (ptr) pd32 ))))(frame←v3376, var←c13200, pd32);
            };
         };
      i←v4324 = (i←v4324 + 1);
      if ((i←v4324 < noName←c13168)) {
         goto lab←L100011;
         };
      lab←L100008: ;
      };
   }

static void APut←P300(array←v3464, i←v3492, val←v3520)
   word array←v3464;
   word i←v3492;
   word val←v3520;
   {
   register ptr gf←c14128 =  (ptr) &globalframe;
   /* APut: */ 
SOURCE(890, 143)
SOURCE(944, 56)
   if (( (int)i←v3492 <  (int)0) || ( (int)i←v3492 >=  (int)(* (( (ptr) array←v3464)+2) ))) {
SOURCE(975, 25)
      {
         word pd33;
         pd33 = (* (( (ptr) (* (( (ptr) gf←c14128)+59)/* var←c12848 */  ))+95) );
         (void) ( *( (fPt) ((*  (ptr) pd33 ))))(3, pd33);
         };
      };
SOURCE(1002, 31)
   {
      word var←c13232;
      word var←c13264;
      var←c13232 = ((* (( (ptr) array←v3464)+1) ) + i←v3492);
      var←c13264 = (*  (ptr) array←v3464 );
      {
         word limit34;
         (* ((( (ptr) var←c13264)+1)+(
               limit34 = (*  (ptr) var←c13264 ),
               BCK(var←c13232, limit34)
               )) ) = val←v3520;
         };
      };
   }

static word AGet←P360(array←v3580, i←v3608)
   word array←v3580;
   word i←v3608;
   {
   register ptr gf←c14160 =  (ptr) &globalframe;
   word var←c3652;
   /* AGet: */ 
SOURCE(1039, 148)
SOURCE(1096, 56)
   if (( (int)i←v3608 <  (int)0) || ( (int)i←v3608 >=  (int)(* (( (ptr) array←v3580)+2) ))) {
SOURCE(1127, 25)
      {
         word pd35;
         pd35 = (* (( (ptr) (* (( (ptr) gf←c14160)+59)/* var←c12848 */  ))+95) );
         (void) ( *( (fPt) ((*  (ptr) pd35 ))))(3, pd35);
         };
      };
SOURCE(1154, 33)
   {
      word var←c13296;
      word var←c13328;
      var←c13296 = ((* (( (ptr) array←v3580)+1) ) + i←v3608);
      var←c13328 = (*  (ptr) array←v3580 );
      {
         word limit36;
         return((* ((( (ptr) var←c13328)+1)+(
               limit36 = (*  (ptr) var←c13328 ),
               BCK(var←c13296, limit36)
               )) ));
         };
      };
   }

static word ASub←P420(array←v3712, start←v3740, len←v3768)
   word array←v3712;
   word start←v3740;
   word len←v3768;
   {
   register ptr gf←c14192 =  (ptr) &globalframe;
   word var←c3812;
   /* ASub: */ 
SOURCE(1193, 242)
SOURCE(1261, 94)
   if ((( (int)start←v3740 <  (int)0) || ( (int)start←v3740 >  (int)(* (( (ptr) array←v3712)+2) ))) ||  ( ( (int)len←v3768 <  (int)0) ? 1 : ( (int)len←v3768 >  (int)((* (
      ( (ptr) array←v3712)+2) ) - start←v3740)) ) ) {
SOURCE(1330, 25)
      {
         word pd37;
         pd37 = (* (( (ptr) (* (( (ptr) gf←c14192)+59)/* var←c12848 */  ))+95) );
         (void) ( *( (fPt) ((*  (ptr) pd37 ))))(3, pd37);
         };
      };
SOURCE(1357, 78)
   {
      word var←c13392;
      var←c13392 = XR←NewObject(12, (* (( (ptr) gf←c14192)+9) ));
      (*  (ptr) var←c13392 ) = (*  (ptr) array←v3712 );
      {
         word idx38;
         (* (( (ptr) var←c13392)+1) ) = (
            idx38 = (word) ((* (( (ptr) array←v3712)+1) ) + start←v3740),
            SGNCK(idx38)
            );
         };
      (* (( (ptr) var←c13392)+2) ) = SGNCK(len←v3768);
      return(var←c13392);
      };
   }

static word AFind←P480(array←v3872, val←v3900)
   word array←v3872;
   word val←v3900;
   {
   register ptr gf←c14224 =  (ptr) &globalframe;
   word var←c3944;
   /* AFind: */ 
SOURCE(1441, 168)
SOURCE(1501, 87)
   {
      register word i←v4368 = 0;
      register word noName←c13424;
      noName←c13424 = (* (( (ptr) array←v3872)+2) );
      if (( (int)i←v4368 >=  (int)noName←c13424)) {
         goto lab←L100012;
         };
      lab←L100015: ;
      {
         word x←v4412;
SOURCE(1532, 23)
         x←v4412 = (word) AGet←P360(array←v3872, i←v4368);
SOURCE(1557, 31)
         {
            word pd39;
            pd39 = (* (( (ptr) (* (( (ptr) gf←c14224)+59)/* var←c12848 */  ))+5) );
            if ((0 != (word) ( *( (fPt) ((*  (ptr) pd39 ))))(x←v4412, val←v3900, pd39))) {
SOURCE(1579, 9)
               return(i←v4368);
               };
            };
         };
      i←v4368 = (i←v4368 + 1);
      if (( (int)i←v4368 <  (int)noName←c13424)) {
         goto lab←L100015;
         };
      lab←L100012: ;
      };
SOURCE(1599, 10)
   return( (word) -1);
   }

static void ABind←P540(array←v4004, dict←v4032)
   word array←v4004;
   word dict←v4032;
   {
   register ptr gf←c14256 =  (ptr) &globalframe;
   /* ABind: */ 
SOURCE(1639, 264)
SOURCE(1688, 215)
   {
      register word i←v4456 = 0;
      register word noName←c13456;
      noName←c13456 = (* (( (ptr) array←v4004)+2) );
      if (( (int)i←v4456 >=  (int)noName←c13456)) {
         goto lab←L100016;
         };
      lab←L100019: ;
      {
         word x←v4500;
SOURCE(1719, 23)
         x←v4500 = (word) AGet←P360(array←v4004, i←v4456);
SOURCE(1744, 159)
         {
            word var←c13488;
            word var←c13520;
            var←c13488 = x←v4500;
            if ((var←c13488 == 0)) {
               goto lab←L100020;
               };
            var←c13520 = XR←GetReferentType(var←c13488);
            if (((* (( (ptr) gf←c14256)+7) ) == var←c13520)) {
               {
                  word x←v4544;
                  x←v4544 = var←c13488;
SOURCE(1774, 100)
                  {
                     word known←v4588;
                     word value←v4616 = 0;
SOURCE(1801, 34)
                     {
                        W2 var←c13552;
                        {
                           word pd40;
                           pd40 = (* (( (ptr) (* (( (ptr) gf←c14256)+59)/* var←c12848 */  ))+73) );
                           (void) ( *( (fPt) ((*  (ptr) pd40 ))))((word) &var←c13552, dict←v4032, x←v4544, pd40);
                           };
                        value←v4616 = var←c13552.f1;
                        known←v4588 = var←c13552.f0;
                        };
SOURCE(1837, 35)
                     if ((0 != known←v4588)) {
SOURCE(1851, 21)
                        (void) APut←P300(array←v4004, i←v4456, value←v4616);
                        };
                     };
                  };
               }
            else {
               if (((* (( (ptr) gf←c14256)+9) ) == var←c13520)) {
                  {
                     word x←v4660;
                     x←v4660 = var←c13488;
SOURCE(1889, 14)
                     (void) ABind←P540(x←v4660, dict←v4032);
                     };
                  }
               else {
                  lab←L100020: ;
                  };
               };
            };
         };
      i←v4456 = (i←v4456 + 1);
      if (( (int)i←v4456 <  (int)noName←c13456)) {
         goto lab←L100019;
         };
      lab←L100016: ;
      };
   }

static word ArrayForAll←P600(array←v4092, action←v4120)
   word array←v4092;
   word action←v4120;
   {
   word var←c4164;
   /* ArrayForAll: */ 
SOURCE(1968, 174)
SOURCE(2044, 74)
   {
      register word i←v4704 = 0;
      register word noName←c13584;
      word var←c13616;
      noName←c13584 = (* (( (ptr) array←v4092)+2) );
      if (( (int)i←v4704 >=  (int)noName←c13584)) {
         goto lab←L100021;
         };
      lab←L100024: ;
SOURCE(2075, 43)
      var←c13616 = (word) AGet←P360(array←v4092, i←v4704);
      if ((0 != (word) ( *( (fPt) ((*  (ptr) action←v4120 ))))(var←c13616, action←v4120))) {
SOURCE(2106, 12)
         return(1);
         };
      i←v4704 = (i←v4704 + 1);
      if (( (int)i←v4704 <  (int)noName←c13584)) {
         goto lab←L100024;
         };
      lab←L100021: ;
      };
SOURCE(2129, 13)
   return(0);
   }

static void ApplyArray←P660(frame←v6528, cmd←v6556)
   word frame←v6528;
   word cmd←v6556;
   {
   register ptr gf←c14288 =  (ptr) &globalframe;
   word n←v4748;
   /* ApplyArray: */ 
SOURCE(2149, 81)
SOURCE(2177, 22)
   {
      word pd41;
      pd41 = (* (( (ptr) (* (( (ptr) gf←c14288)+59)/* var←c12848 */  ))+39) );
      n←v4748 = (word) ( *( (fPt) ((*  (ptr) pd41 ))))(frame←v6528, pd41);
      };
SOURCE(2201, 29)
   {
      word var←c13648;
      var←c13648 = (word) NewArray←P60(n←v4748);
      {
         word pd42;
         pd42 = (* (( (ptr) (* (( (ptr) gf←c14288)+59)/* var←c12848 */  ))+34) );
         (void) ( *( (fPt) ((*  (ptr) pd42 ))))(frame←v6528, var←c13648, pd42);
         };
      };
   }

static void ApplyAPut←P720(frame←v6616, cmd←v6644)
   word frame←v6616;
   word cmd←v6644;
   {
   register ptr gf←c14320 =  (ptr) &globalframe;
   word x←v4792;
   word i←v4820;
   word array←v4848;
   /* ApplyAPut: */ 
SOURCE(2236, 121)
SOURCE(2263, 19)
   {
      word pd43;
      pd43 = (* (( (ptr) (* (( (ptr) gf←c14320)+59)/* var←c12848 */  ))+37) );
      x←v4792 = (word) ( *( (fPt) ((*  (ptr) pd43 ))))(frame←v6616, pd43);
      };
SOURCE(2284, 22)
   {
      word pd44;
      pd44 = (* (( (ptr) (* (( (ptr) gf←c14320)+59)/* var←c12848 */  ))+39) );
      i←v4820 = (word) ( *( (fPt) ((*  (ptr) pd44 ))))(frame←v6616, pd44);
      };
SOURCE(2308, 30)
   {
      word pd45;
      pd45 = (* (( (ptr) (* (( (ptr) gf←c14320)+59)/* var←c12848 */  ))+46) );
      array←v4848 = (word) ( *( (fPt) ((*  (ptr) pd45 ))))(frame←v6616, pd45);
      };
SOURCE(2340, 17)
   (void) APut←P300(array←v4848, i←v4820, x←v4792);
   }

static void ApplyAGet←P780(frame←v6704, cmd←v6732)
   word frame←v6704;
   word cmd←v6732;
   {
   register ptr gf←c14352 =  (ptr) &globalframe;
   word i←v4892;
   word array←v4920;
   /* ApplyAGet: */ 
SOURCE(2363, 110)
SOURCE(2390, 22)
   {
      word pd46;
      pd46 = (* (( (ptr) (* (( (ptr) gf←c14352)+59)/* var←c12848 */  ))+39) );
      i←v4892 = (word) ( *( (fPt) ((*  (ptr) pd46 ))))(frame←v6704, pd46);
      };
SOURCE(2414, 30)
   {
      word pd47;
      pd47 = (* (( (ptr) (* (( (ptr) gf←c14352)+59)/* var←c12848 */  ))+46) );
      array←v4920 = (word) ( *( (fPt) ((*  (ptr) pd47 ))))(frame←v6704, pd47);
      };
SOURCE(2446, 27)
   {
      word var←c13680;
      var←c13680 = (word) AGet←P360(array←v4920, i←v4892);
      {
         word pd48;
         pd48 = (* (( (ptr) (* (( (ptr) gf←c14352)+59)/* var←c12848 */  ))+25) );
         (void) ( *( (fPt) ((*  (ptr) pd48 ))))(frame←v6704, var←c13680, pd48);
         };
      };
   }

static void ApplySubArray←P840(frame←v6792, cmd←v6820)
   word frame←v6792;
   word cmd←v6820;
   {
   register ptr gf←c14384 =  (ptr) &globalframe;
   word len←v4964;
   word start←v4992;
   word array←v5020;
   /* ApplySubArray: */ 
SOURCE(2479, 158)
SOURCE(2510, 24)
   {
      word pd49;
      pd49 = (* (( (ptr) (* (( (ptr) gf←c14384)+59)/* var←c12848 */  ))+39) );
      len←v4964 = (word) ( *( (fPt) ((*  (ptr) pd49 ))))(frame←v6792, pd49);
      };
SOURCE(2536, 26)
   {
      word pd50;
      pd50 = (* (( (ptr) (* (( (ptr) gf←c14384)+59)/* var←c12848 */  ))+39) );
      start←v4992 = (word) ( *( (fPt) ((*  (ptr) pd50 ))))(frame←v6792, pd50);
      };
SOURCE(2564, 30)
   {
      word pd51;
      pd51 = (* (( (ptr) (* (( (ptr) gf←c14384)+59)/* var←c12848 */  ))+46) );
      array←v5020 = (word) ( *( (fPt) ((*  (ptr) pd51 ))))(frame←v6792, pd51);
      };
SOURCE(2596, 41)
   {
      word var←c13712;
      var←c13712 = (word) ASub←P420(array←v5020, start←v4992, len←v4964);
      {
         word pd52;
         pd52 = (* (( (ptr) (* (( (ptr) gf←c14384)+59)/* var←c12848 */  ))+34) );
         (void) ( *( (fPt) ((*  (ptr) pd52 ))))(frame←v6792, var←c13712, pd52);
         };
      };
   }

static void ApplyAFind←P900(frame←v6880, cmd←v6908)
   word frame←v6880;
   word cmd←v6908;
   {
   register ptr gf←c14416 =  (ptr) &globalframe;
   word x←v5064;
   word array←v5092;
   word i←v5120;
   word found←v5148;
   /* ApplyAFind: */ 
SOURCE(2643, 182)
SOURCE(2671, 19)
   {
      word pd53;
      pd53 = (* (( (ptr) (* (( (ptr) gf←c14416)+59)/* var←c12848 */  ))+37) );
      x←v5064 = (word) ( *( (fPt) ((*  (ptr) pd53 ))))(frame←v6880, pd53);
      };
SOURCE(2692, 30)
   {
      word pd54;
      pd54 = (* (( (ptr) (* (( (ptr) gf←c14416)+59)/* var←c12848 */  ))+46) );
      array←v5092 = (word) ( *( (fPt) ((*  (ptr) pd54 ))))(frame←v6880, pd54);
      };
SOURCE(2724, 24)
   i←v5120 = (word) AFind←P480(array←v5092, x←v5064);
SOURCE(2750, 18)
   found←v5148 =  (unsigned) ( (int)i←v5120 >=  (int)0);
SOURCE(2770, 31)
   if ((0 != found←v5148)) {
SOURCE(2784, 17)
      {
         word pd55;
         pd55 = (* (( (ptr) (* (( (ptr) gf←c14416)+59)/* var←c12848 */  ))+27) );
         (void) ( *( (fPt) ((*  (ptr) pd55 ))))(frame←v6880, i←v5120, pd55);
         };
      };
SOURCE(2803, 22)
   {
      word pd56;
      pd56 = (* (( (ptr) (* (( (ptr) gf←c14416)+59)/* var←c12848 */  ))+26) );
      (void) ( *( (fPt) ((*  (ptr) pd56 ))))(frame←v6880, found←v5148, pd56);
      };
   }

static void ApplyAStore←P960(frame←v6968, cmd←v6996)
   word frame←v6968;
   word cmd←v6996;
   {
   register ptr gf←c14448 =  (ptr) &globalframe;
   word array←v5192;
   /* ApplyAStore: */ 
SOURCE(2831, 162)
SOURCE(2860, 30)
   {
      word pd57;
      pd57 = (* (( (ptr) (* (( (ptr) gf←c14448)+59)/* var←c12848 */  ))+46) );
      array←v5192 = (word) ( *( (fPt) ((*  (ptr) pd57 ))))(frame←v6968, pd57);
      };
SOURCE(2892, 76)
   {
      register word i←v5236;
      i←v5236 = (* (( (ptr) array←v5192)+2) );
      if (( (int)0 >=  (int)i←v5236)) {
         goto lab←L100025;
         };
      i←v5236 = (i←v5236 - 1);
      lab←L100028: ;
SOURCE(2934, 34)
      {
         word var←c13744;
         {
            word pd58;
            pd58 = (* (( (ptr) (* (( (ptr) gf←c14448)+59)/* var←c12848 */  ))+37) );
            var←c13744 = (word) ( *( (fPt) ((*  (ptr) pd58 ))))(frame←v6968, pd58);
            };
         (void) APut←P300(array←v5192, i←v5236, var←c13744);
         };
      if (( (int)0 >=  (int)i←v5236)) {
         goto lab←L100025;
         };
      i←v5236 = (i←v5236 - 1);
      goto lab←L100028;
      lab←L100025: ;
      };
SOURCE(2970, 23)
   {
      word pd59;
      pd59 = (* (( (ptr) (* (( (ptr) gf←c14448)+59)/* var←c12848 */  ))+34) );
      (void) ( *( (fPt) ((*  (ptr) pd59 ))))(frame←v6968, array←v5192, pd59);
      };
   }

static void ApplyALoad←P1020(frame←v7056, cmd←v7084)
   word frame←v7056;
   word cmd←v7084;
   {
   register ptr gf←c14480 =  (ptr) &globalframe;
   word array←v5280;
   /* ApplyALoad: */ 
SOURCE(2999, 151)
SOURCE(3027, 30)
   {
      word pd60;
      pd60 = (* (( (ptr) (* (( (ptr) gf←c14480)+59)/* var←c12848 */  ))+46) );
      array←v5280 = (word) ( *( (fPt) ((*  (ptr) pd60 ))))(frame←v7056, pd60);
      };
SOURCE(3059, 66)
   {
      register word i←v5324 = 0;
      register word noName←c13776;
      noName←c13776 = (* (( (ptr) array←v5280)+2) );
      if (( (int)i←v5324 >=  (int)noName←c13776)) {
         goto lab←L100029;
         };
      lab←L100032: ;
SOURCE(3090, 35)
      {
         word var←c13808;
         var←c13808 = (word) AGet←P360(array←v5280, i←v5324);
         {
            word pd61;
            pd61 = (* (( (ptr) (* (( (ptr) gf←c14480)+59)/* var←c12848 */  ))+25) );
            (void) ( *( (fPt) ((*  (ptr) pd61 ))))(frame←v7056, var←c13808, pd61);
            };
         };
      i←v5324 = (i←v5324 + 1);
      if (( (int)i←v5324 <  (int)noName←c13776)) {
         goto lab←L100032;
         };
      lab←L100029: ;
      };
SOURCE(3127, 23)
   {
      word pd62;
      pd62 = (* (( (ptr) (* (( (ptr) gf←c14480)+59)/* var←c12848 */  ))+34) );
      (void) ( *( (fPt) ((*  (ptr) pd62 ))))(frame←v7056, array←v5280, pd62);
      };
   }

static void ApplyABind←P1080(frame←v7144, cmd←v7172)
   word frame←v7144;
   word cmd←v7172;
   {
   register ptr gf←c14512 =  (ptr) &globalframe;
   word dict←v5368;
   word array←v5396;
   /* ApplyABind: */ 
SOURCE(3156, 107)
SOURCE(3184, 27)
   {
      word pd63;
      pd63 = (* (( (ptr) (* (( (ptr) gf←c14512)+59)/* var←c12848 */  ))+47) );
      dict←v5368 = (word) ( *( (fPt) ((*  (ptr) pd63 ))))(frame←v7144, pd63);
      };
SOURCE(3213, 30)
   {
      word pd64;
      pd64 = (* (( (ptr) (* (( (ptr) gf←c14512)+59)/* var←c12848 */  ))+46) );
      array←v5396 = (word) ( *( (fPt) ((*  (ptr) pd64 ))))(frame←v7144, pd64);
      };
SOURCE(3245, 18)
   (void) ABind←P540(array←v5396, dict←v5368);
   }

static void ApplyArrayForAll←P1140(formal←c0176, cmd←v7260)
   word formal←c0176;
   word cmd←v7260;
   {
   W8 var←c14544;
   /* declaration of frame←v7232 skipped */ 
   register ptr gf←c14576 =  (ptr) &globalframe;
   /* declaration of var←c13840 skipped */ 
   /* declaration of action←v5440 skipped */ 
   word array←v5468;
   var←c14544.f4/* frame←v7232 */  = formal←c0176;
   /* ApplyArrayForAll: */ 
SOURCE(3269, 255)
   {
      word tmpAddr65;
      tmpAddr65 = (word) (( (ptr) &var←c14544)+5)/* var←c13840 */ ;
      (*  (ptr) tmpAddr65 ) = ( ((word)  (fPt) proc←P1824) );
      (* (( (ptr) tmpAddr65) + 1) ) = 1;
      };
SOURCE(3303, 24)
   {
      word pd66;
      pd66 = (* (( (ptr) (* (( (ptr) gf←c14576)+59)/* var←c12848 */  ))+37) );
      var←c14544.f7/* action←v5440 */  = (word) ( *( (fPt) ((*  (ptr) pd66 ))))(var←c14544.f4/* frame←v7232 */ , pd66);
      };
SOURCE(3329, 30)
   {
      word pd67;
      pd67 = (* (( (ptr) (* (( (ptr) gf←c14576)+59)/* var←c12848 */  ))+46) );
      array←v5468 = (word) ( *( (fPt) ((*  (ptr) pd67 ))))(var←c14544.f4/* frame←v7232 */ , pd67);
      };
SOURCE(3495, 29)
   {
      word var←c13872;
      var←c13872 = (word) ArrayForAll←P600(array←v5468, (word) (( (bPt) &var←c14544)+20)/* var←c13840 */ );
      };
   }

static word proc←P1824(val←v5572, formal←c14672)
   word val←v5572;
   word formal←c14672;
   {
   W6 var←c14608;
   register ptr gf←c14640 =  (ptr) &globalframe;
   /* declaration of quit←v5616 skipped */ 
   formal←c14672 = (formal←c14672 - 20);
   var←c14608.f0 = formal←c14672;
   /* proc: */ 
SOURCE(3361, 116)
SOURCE(3361, 116)
   var←c14608.f4/* quit←v5616 */  = 0;
SOURCE(3414, 16)
   {
      word pd68;
      pd68 = (* (( (ptr) (* (( (ptr) gf←c14640)+59)/* var←c12848 */  ))+25) );
      (void) ( *( (fPt) ((*  (ptr) pd68 ))))((* (( (ptr) formal←c14672)+4) ), val←v5572, pd68);
      };
SOURCE(3432, 45)
SOURCE(3432, 45)
   {
      /* declaration of var←c01 skipped */ 
      var←c14608.f5/* var←c01 */  = (* (( (ptr) (* (( (ptr) gf←c14640)+59)/* var←c12848 */  ))+99) );
      {
         word var←c02;
         {
            word var←c0171;
            var←c0171 = (word) &var←c14608;
            var←c02 = (word) XR←Enable(( ((word)  (fPt) NoName←Q1944) ), ( ((word)  (fPt) NoName←Q2004) ), var←c0171);
            };
         /* removed trivial cond node */ 
         };
      };
SOURCE(3361, 116)
   return(var←c14608.f4/* quit←v5616 */ );
   }

static word NoName←Q1944(formal←c0169)
   word formal←c0169;
   {
SOURCE(3432, 45)
   {
      word pd69;
      pd69 = (* (( (ptr) formal←c0169)+5) );
      (void) ( *( (fPt) ((*  (ptr) pd69 ))))((* (( (ptr) (*  (ptr) formal←c0169 ))+4) ), (* (( (ptr) (*  (ptr) formal←c0169 ))+7)
          ), pd69);
      };
   return(0);
   }

static void NoName←Q2004(formal←c0146, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
   word formal←c0146;
   word formal←c200000;
   word formal←c200001;
   word formal←c200002;
   word formal←c200003;
   {
   register ptr gf←c0170 =  (ptr) &globalframe;
   if ((formal←c200001 == (* (( (ptr) (* (( (ptr) gf←c0170)+59)/* var←c12848 */  ))+93) ))) {
SOURCE(3466, 11)
      (* (( (ptr) formal←c200000)+4) ) = 1;
SOURCE(3479, 9)
      (*  (ptr) formal←c0146 ) = 2;
      (* (( (ptr) formal←c0146)+1) ) = 2;
      return;
      };
   (*  (ptr) formal←c0146 ) = 0;
   (* (( (ptr) formal←c0146)+1) ) = 0;
   return;
   }

/* file: TJaMArrayImpl, module: TJaMArrayImpl, compiled at: October 19, 1993 1:03:48 pm PDT */ 
extern void XR←install←TJaMArrayImpl() {
   NoName←Q1884();
   }
extern void XR←run←TJaMArrayImpl() { XR←Start(&globalframe); }