/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 21, 1992 5:10:15 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: ListImpl, module: ListImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1364247912,3431180257] ListImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
#define SOURCE(p, l) /* source p, l */
#define INEG(x)  ( (word) ( - ((int) (word) (x)) ) )
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static void NoName←Q2676();
static void ListImpl←P0();
static word EqLists←P120();
static word Memb←P180();
static word Append←P240();
static word Reverse←P300();
static word Remove←P360();
static word Union←P420();
static word Intersection←P480();
static word ListDifference←P540();
static word LDiff←P600();
static word Nconc←P660();
static word Nconc1←P720();
static word DReverse←P780();
static word DRemove←P840();
static word DSubst←P900();
static word NthTail←P960();
static word NthElement←P1020();
static word DotCons←P1080();
static word Assoc←P1140();
static word PutAssoc←P1200();
static word Length←P1260();
static void Map←P1320();
static word Subst←P1380();
static void Kill←P1440();
static word Sort←P1500();
static void innerSort←P2028();
static word Merge←P1560();
static word UniqueSort←P1620();
static word Compare←P1680();
static struct {unsigned f; char r[20];} string1 = {1179668, "\260\006\005\146\151\162\163\164\217\005\004\162\145\163\164\214\217\261\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\055\153\222\376\300\327\164\352\142\100\200\000\000"};
static struct {unsigned f; char r[48];} string4 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\055\153\222\376\300\327\164\352\142\100\200\005\004\162\145\163\164\214\216\257\300\055\153\222\376\300\327\164\352\142\100\200\261\000\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\104\304\000\000"};
static struct {unsigned f; char r[24];} string6 = {1376277, "\007\000\001\002\007\020\001\002\000\007\036\002\004\003\002\004\014\016\015\003\001\000\000"};
static struct {unsigned f; char r[4];} string7 = {65540, "\242\000\000"};
static struct {unsigned f; char r[4];} string8 = {65540, "\251\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\121\120\305\150\300\314\203\247\341\100\164\000\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\055\153\222\376\300\327\164\352\142\100\150\000\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\144\364\322\150\300\206\136\277\046\100\150\000\000"};
static struct {
   word f0[12]; word f12; word f13; word f14; 
   word f15; word f16; word f17; word f18; 
   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; 
   word f59; word f60; word f61; word f62; 
   word f63; word f64; word f65; word f66; 
   word f67[4]; 
   } globalframe = {
   {0}, (word) Compare←P1680, 0, (word) UniqueSort←P1620, 
   0, (word) Merge←P1560, 0, (word) Sort←P1500, 
   0, (word) Kill←P1440, 0, (word) Subst←P1380, 
   0, (word) Map←P1320, 0, (word) Length←P1260, 
   0, (word) PutAssoc←P1200, 0, (word) Assoc←P1140, 
   0, (word) DotCons←P1080, 0, (word) NthElement←P1020, 
   0, (word) NthTail←P960, 0, (word) DSubst←P900, 
   0, (word) DRemove←P840, 0, (word) DReverse←P780, 
   0, (word) Nconc1←P720, 0, (word) Nconc←P660, 
   0, (word) LDiff←P600, 0, (word) ListDifference←P540, 
   0, (word) Intersection←P480, 0, (word) Union←P420, 
   0, (word) Remove←P360, 0, (word) Reverse←P300, 
   0, (word) Append←P240, 0, (word) Memb←P180, 
   0, (word) EqLists←P120, 0, (word) ListImpl←P0, 
   {0}
   };

static void NoName←Q2676()
   {
   register ptr gf←c0206 =  (ptr) &globalframe;
   word var←c16496;
   (* (( (ptr) gf←c0206)+4) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0206)+5) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string2);
   (* (( (ptr) gf←c0206)+6) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string2);
   (* (( (ptr) gf←c0206)+7) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (* (( (ptr) gf←c0206)+9) ) = (word) XR←GetTypeIndexS((word) (&string7));
   (* (( (ptr) gf←c0206)+10) ) = (word) XR←GetTypeIndexS((word) (&string8));
   (void) XR←DeclareGlobalFrame((word) "ListImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string9)), (word) (( (bPt) gf←c0206)+264)
      /* var←c14928 */ );
   var←c16496 = (word) XR←ImportInterface((word) "Atom", (word) XR←GetTypeIndexS((word) (&string10)), 16);
   (* (( (ptr) gf←c0206)+69)/* var←c16240 */  ) = var←c16496;
   (void) XR←ImportProcS(var←c16496, 67372289);
   var←c16496 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string11)), 43);
   (* (( (ptr) gf←c0206)+68)/* var←c16080 */  ) = var←c16496;
   (void) XR←ImportProcS(var←c16496, 67896067);
   var←c16496 = (word) XR←ExportInterface((word) "List", (word) XR←GetTypeIndexS((word) (&string12)), 28);
   (* (( (ptr) gf←c0206)+70)/* var←c16528 */  ) = var←c16496;
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+256)/* var←c14896 */ , 67633154);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+248)/* var←c14864 */ , 67633410);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+240)/* var←c14832 */ , 67633666);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+224)/* var←c14768 */ , 67633922);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+232)/* var←c14800 */ , 67372033);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+216)/* var←c14736 */ , 67634434);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+208)/* var←c14704 */ , 67634690);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+200)/* var←c14672 */ , 67634946);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+192)/* var←c14640 */ , 67635202);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+184)/* var←c14608 */ , 67635458);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+176)/* var←c14576 */ , 67635714);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+160)/* var←c14512 */ , 67635970);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+168)/* var←c14544 */ , 67374081);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+152)/* var←c14480 */ , 67898627);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+144)/* var←c14448 */ , 67636738);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+136)/* var←c14416 */ , 67636994);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+120)/* var←c14352 */ , 67637250);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+128)/* var←c14384 */ , 67637506);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+112)/* var←c14320 */ , 67899907);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+104)/* var←c14288 */ , 67375873);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+96)/* var←c14256 */ , 529410);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+88)/* var←c14224 */ , 67900675);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+80)/* var←c14192 */ , 267777);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+72)/* var←c14160 */ , 67639042);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+56)/* var←c14096 */ , 67639298);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+64)/* var←c14128 */ , 67901699);
   (void) XR←ExportProcS(var←c16496, (word) (( (bPt) gf←c0206)+48)/* var←c14064 */ , 67639810);
   (void) XR←ExportVar(var←c16496, 27, (word) (( (bPt) gf←c0206)+44)/* var←c14032 */ );
   }

static void ListImpl←P0(formal←c036, formal←c035)
   word formal←c036;
   word formal←c035;
   {
   /* ListImpl: */ 
   }

static word EqLists←P120(l1←v3724, l2←v3752)
   word l1←v3724;
   word l2←v3752;
   {
   word var←c3796;
   /* EqLists: */ 
SOURCE(400, 289)
SOURCE(455, 28)
   if ((l1←v3724 == l2←v3752)) {
SOURCE(471, 12)
      return(1);
      };
SOURCE(485, 42)
   if ((l1←v3724 == 0) || (l2←v3752 == 0)) {
SOURCE(514, 13)
      return(0);
      };
SOURCE(529, 133)
   lab←L100002: ;
   if ((l1←v3724 != 0)) {
      }
   else {
      goto lab←L100000;
      };
   {
      word var←c14960;
      word x←v13880;
      word y←v13908;
SOURCE(548, 30)
      if ((l2←v3752 == 0)) {
SOURCE(565, 13)
         return(0);
         };
SOURCE(580, 54)
      x←v13880 = (*  (ptr) l1←v3724 );
      y←v13908 = (*  (ptr) l2←v3752 );
SOURCE(383, 13)
      var←c14960 = (x←v13880 == y←v13908);
      if (((0 != var←c14960)
      )) {
         }
      else {
SOURCE(621, 13)
         return(0);
         };
SOURCE(636, 12)
      l1←v3724 = (* (( (ptr) l1←v3724)+1) );
SOURCE(650, 12)
      l2←v3752 = (* (( (ptr) l2←v3752)+1) );
      };
   goto lab←L100002;
   lab←L100000: ;
SOURCE(673, 16)
   return((l2←v3752 == 0));
   }

static word Memb←P180(ref←v3856, list←v3884)
   word ref←v3856;
   word list←v3884;
   {
   word var←c3940;
   /* Memb: */ 
SOURCE(695, 163)
SOURCE(759, 75)
   lab←L100006: ;
   if ((list←v3884 != 0)) {
      }
   else {
      goto lab←L100004;
      };
SOURCE(779, 37)
   if (((*  (ptr) list←v3884 ) == ref←v3856)) {
SOURCE(804, 12)
      return(1);
      };
SOURCE(818, 16)
   list←v3884 = (* (( (ptr) list←v3884)+1) );
   goto lab←L100006;
   lab←L100004: ;
SOURCE(845, 13)
   return(0);
   }

static word Append←P240(l1←v4000, l2←v4028)
   word l1←v4000;
   word l2←v4028;
   {
   register ptr gf←c16560 =  (ptr) &globalframe;
   word val←v4072;
   word z←v7280 = 0;
   /* Append: */ 
SOURCE(865, 256)
SOURCE(865, 256)
   val←v4072 = 0;
SOURCE(950, 8)
   val←v4072 = l2←v4028;
SOURCE(960, 28)
   if ((l1←v4000 == 0)) {
SOURCE(977, 11)
      return(val←v4072);
      };
SOURCE(990, 25)
   {
      word var←c14992;
      var←c14992 = XR←NewObject(8, (* (( (ptr) gf←c16560)+4) ));
      (*  (ptr) var←c14992 ) = (*  (ptr) l1←v4000 );
      (* (( (ptr) var←c14992)+1) ) = val←v4072;
      val←v4072 = var←c14992;
      };
SOURCE(1017, 7)
   z←v7280 = val←v4072;
SOURCE(1026, 73)
   lab←L100009: ;
   l1←v4000 = (* (( (ptr) l1←v4000)+1) );
   if ((l1←v4000 != 0)) {
      }
   else {
      goto lab←L100007;
      };
SOURCE(1056, 31)
   {
      word var←c15024;
      var←c15024 = XR←NewObject(8, (* (( (ptr) gf←c16560)+4) ));
      (*  (ptr) var←c15024 ) = (*  (ptr) l1←v4000 );
      (* (( (ptr) var←c15024)+1) ) = (* (( (ptr) z←v7280)+1) );
      (* (( (ptr) z←v7280)+1) ) = var←c15024;
      };
SOURCE(1089, 10)
   z←v7280 = (* (( (ptr) z←v7280)+1) );
   goto lab←L100009;
   lab←L100007: ;
SOURCE(1110, 11)
   return(val←v4072);
   }

static word Reverse←P300(list←v4132)
   word list←v4132;
   {
   register ptr gf←c16592 =  (ptr) &globalframe;
   word val←v4176;
   /* Reverse: */ 
SOURCE(1140, 155)
SOURCE(1140, 155)
   val←v4176 = 0;
SOURCE(1197, 9)
   val←v4176 = 0;
SOURCE(1208, 65)
   lab←L100012: ;
   if ((list←v4132 != 0)) {
      }
   else {
      goto lab←L100010;
      };
SOURCE(1228, 27)
   {
      word var←c15056;
      var←c15056 = XR←NewObject(8, (* (( (ptr) gf←c16592)+4) ));
      (*  (ptr) var←c15056 ) = (*  (ptr) list←v4132 );
      (* (( (ptr) var←c15056)+1) ) = val←v4176;
      val←v4176 = var←c15056;
      };
SOURCE(1257, 16)
   list←v4132 = (* (( (ptr) list←v4132)+1) );
   goto lab←L100012;
   lab←L100010: ;
SOURCE(1284, 11)
   return(val←v4176);
   }

static word Remove←P360(ref←v4236, list←v4264)
   word ref←v4236;
   word list←v4264;
   {
   register ptr gf←c16624 =  (ptr) &globalframe;
   word val←v4320;
   word z←v7324 = 0;
   /* Remove: */ 
SOURCE(1315, 275)
SOURCE(1315, 275)
   val←v4320 = 0;
SOURCE(1401, 9)
   val←v4320 = 0;
SOURCE(1412, 178)
   lab←L100015: ;
   if ((list←v4264 != 0)) {
      }
   else {
      goto lab←L100013;
      };
   {
      word var←c15088;
      word x←v13804;
      word y←v13832;
SOURCE(1432, 138)
      x←v13804 = (*  (ptr) list←v4264 );
      y←v13832 = ref←v4236;
SOURCE(383, 13)
      var←c15088 = (x←v13804 == y←v13832);
      if (((0 == var←c15088)
      )) {
SOURCE(1462, 108)
         if ((val←v4320 == 0)) {
SOURCE(1481, 27)
            {
               word var←c15120;
               var←c15120 = XR←NewObject(8, (* (( (ptr) gf←c16624)+4) ));
               (*  (ptr) var←c15120 ) = (*  (ptr) list←v4264 );
               val←v4320 = var←c15120;
               };
SOURCE(1510, 7)
            z←v7324 = val←v4320;
            }
         else {
SOURCE(1525, 33)
            {
               word var←c15152;
               var←c15152 = XR←NewObject(8, (* (( (ptr) gf←c16624)+4) ));
               (*  (ptr) var←c15152 ) = (*  (ptr) list←v4264 );
               (* (( (ptr) var←c15152)+1) ) = (* (( (ptr) z←v7324)+1) );
               (* (( (ptr) z←v7324)+1) ) = var←c15152;
               };
SOURCE(1560, 10)
            z←v7324 = (* (( (ptr) z←v7324)+1) );
            };
         };
SOURCE(1574, 16)
      list←v4264 = (* (( (ptr) list←v4264)+1) );
      };
   goto lab←L100015;
   lab←L100013: ;
SOURCE(1315, 275)
   return(val←v4320);
   }

static word Union←P420(l1←v4380, l2←v4408)
   word l1←v4380;
   word l2←v4408;
   {
   register ptr gf←c16656 =  (ptr) &globalframe;
   word var←c4452;
   word l←v7368;
   /* Union: */ 
SOURCE(1622, 166)
SOURCE(1674, 12)
   l←v7368 = l2←v4408;
SOURCE(1688, 80)
   lab←L100019: ;
   if ((l1←v4380 != 0)) {
      }
   else {
      goto lab←L100017;
      };
SOURCE(1706, 48)
   if ((0 == (word) Memb←P180((*  (ptr) l1←v4380 ), l←v7368))) {
SOURCE(1733, 21)
      {
         word var←c15184;
         var←c15184 = XR←NewObject(8, (* (( (ptr) gf←c16656)+4) ));
         (*  (ptr) var←c15184 ) = (*  (ptr) l1←v4380 );
         (* (( (ptr) var←c15184)+1) ) = l←v7368;
         l←v7368 = var←c15184;
         };
      };
SOURCE(1756, 12)
   l1←v4380 = (* (( (ptr) l1←v4380)+1) );
   goto lab←L100019;
   lab←L100017: ;
SOURCE(1779, 9)
   return(l←v7368);
   }

static word Intersection←P480(l1←v4512, l2←v4540)
   word l1←v4512;
   word l2←v4540;
   {
   register ptr gf←c16688 =  (ptr) &globalframe;
   word var←c4584;
   word l←v7412 = 0;
   /* Intersection: */ 
SOURCE(1806, 174)
SOURCE(1880, 80)
   lab←L100022: ;
   if ((l1←v4512 != 0)) {
      }
   else {
      goto lab←L100020;
      };
SOURCE(1898, 48)
   if ((0 != (word) Memb←P180((*  (ptr) l1←v4512 ), l2←v4540))) {
SOURCE(1925, 21)
      {
         word var←c15216;
         var←c15216 = XR←NewObject(8, (* (( (ptr) gf←c16688)+4) ));
         (*  (ptr) var←c15216 ) = (*  (ptr) l1←v4512 );
         (* (( (ptr) var←c15216)+1) ) = l←v7412;
         l←v7412 = var←c15216;
         };
      };
SOURCE(1948, 12)
   l1←v4512 = (* (( (ptr) l1←v4512)+1) );
   goto lab←L100022;
   lab←L100020: ;
SOURCE(1971, 9)
   return(l←v7412);
   }

static word ListDifference←P540(l1←v4644, l2←v4672)
   word l1←v4644;
   word l2←v4672;
   {
   word var←c4716;
   word l←v7456 = 0;
   /* ListDifference: */ 
SOURCE(2005, 208)
SOURCE(2081, 27)
   if ((l2←v4672 == 0)) {
SOURCE(2098, 10)
      return(l1←v4644);
      };
SOURCE(2110, 83)
   lab←L100025: ;
   if ((l1←v4644 != 0)) {
      }
   else {
      goto lab←L100023;
      };
SOURCE(2128, 51)
   if ((0 == (word) Memb←P180((*  (ptr) l1←v4644 ), l2←v4672))) {
SOURCE(2156, 23)
      l←v7456 = (word) Nconc1←P720(l←v7456, (*  (ptr) l1←v4644 ));
      };
SOURCE(2181, 12)
   l1←v4644 = (* (( (ptr) l1←v4644)+1) );
   goto lab←L100025;
   lab←L100023: ;
SOURCE(2204, 9)
   return(l←v7456);
   }

static word LDiff←P600(list←v4776, tailOfList←v4804)
   word list←v4776;
   word tailOfList←v4804;
   {
   register ptr gf←c16720 =  (ptr) &globalframe;
   word var←c4848;
   word endOfL←v7500 = 0;
   word l←v7528 = 0;
   /* LDiff: */ 
SOURCE(2240, 376)
SOURCE(2325, 37)
   if ((tailOfList←v4804 == 0)) {
SOURCE(2350, 12)
      return(list←v4776);
      };
SOURCE(2364, 200)
   lab←L100028: ;
   if ((list←v4776 != 0)) {
      }
   else {
      goto lab←L100026;
      };
SOURCE(2384, 35)
   if ((list←v4776 == tailOfList←v4804)) {
SOURCE(2410, 9)
      return(l←v7528);
      };
SOURCE(2421, 124)
   if ((endOfL←v7500 == 0)) {
SOURCE(2443, 25)
      {
         word var←c15248;
         var←c15248 = XR←NewObject(8, (* (( (ptr) gf←c16720)+4) ));
         (*  (ptr) var←c15248 ) = (*  (ptr) list←v4776 );
         l←v7528 = var←c15248;
         };
SOURCE(2470, 10)
      endOfL←v7500 = l←v7528;
      }
   else {
SOURCE(2488, 35)
      {
         word var←c15280;
         var←c15280 = XR←NewObject(8, (* (( (ptr) gf←c16720)+4) ));
         (*  (ptr) var←c15280 ) = (*  (ptr) list←v4776 );
         (* (( (ptr) endOfL←v7500)+1) ) = var←c15280;
         };
SOURCE(2525, 20)
      endOfL←v7500 = (* (( (ptr) endOfL←v7500)+1) );
      };
SOURCE(2548, 16)
   list←v4776 = (* (( (ptr) list←v4776)+1) );
   goto lab←L100028;
   lab←L100026: ;
SOURCE(2575, 41)
   {
      W2 var←c085;
      (*  (ptr) (word) &var←c085 ) = list←v4776;
      (* (( (ptr) (word) &var←c085) + 1) ) = tailOfList←v4804;
      {
         word var←c086;
         (void) (XR←RaiseSignal((word) (( (bPt) gf←c16720)+44)/* var←c14032 */ , (word) &var←c086, (word) &var←c085));
         return(var←c086);
         };
      };
   }

static word Nconc←P660(l1←v4908, l2←v4936)
   word l1←v4908;
   word l2←v4936;
   {
   word var←c4980;
   word z←v7572;
   /* Nconc: */ 
SOURCE(2623, 160)
SOURCE(2675, 12)
   z←v7572 = l1←v4908;
SOURCE(2689, 26)
   if ((z←v7572 == 0)) {
SOURCE(2705, 10)
      return(l2←v4936);
      };
SOURCE(2717, 32)
   lab←L100031: ;
   if (((* (( (ptr) z←v7572)+1) ) != 0)) {
      }
   else {
      goto lab←L100029;
      };
SOURCE(2739, 10)
   z←v7572 = (* (( (ptr) z←v7572)+1) );
   goto lab←L100031;
   lab←L100029: ;
SOURCE(2760, 11)
   (* (( (ptr) z←v7572)+1) ) = l2←v4936;
SOURCE(2773, 10)
   return(l1←v4908);
   }

static word Nconc1←P720(list←v5040, ref←v5068)
   word list←v5040;
   word ref←v5068;
   {
   register ptr gf←c16752 =  (ptr) &globalframe;
   word var←c5124;
   word z←v7616;
   word new←v7644;
   /* Nconc1: */ 
SOURCE(2789, 202)
SOURCE(2854, 14)
   z←v7616 = list←v5040;
SOURCE(2870, 21)
   {
      word var←c15376;
      new←v7644 = XR←NewObject(8, (* (( (ptr) gf←c16752)+4) ));
      var←c15376 = new←v7644;
      (*  (ptr) var←c15376 ) = ref←v5068;
      };
SOURCE(2893, 27)
   if ((z←v7616 == 0)) {
SOURCE(2909, 11)
      return(new←v7644);
      };
SOURCE(2922, 32)
   lab←L100034: ;
   if (((* (( (ptr) z←v7616)+1) ) != 0)) {
      }
   else {
      goto lab←L100032;
      };
SOURCE(2944, 10)
   z←v7616 = (* (( (ptr) z←v7616)+1) );
   goto lab←L100034;
   lab←L100032: ;
SOURCE(2965, 12)
   (* (( (ptr) z←v7616)+1) ) = new←v7644;
SOURCE(2979, 12)
   return(list←v5040);
   }

static word DReverse←P780(list←v5184)
   word list←v5184;
   {
   word var←c5228;
   word l1←v7688 = 0;
   word l2←v7716 = 0;
   word l3←v7744 = 0;
   /* DReverse: */ 
SOURCE(2997, 202)
SOURCE(3075, 30)
   if ((list←v5184 == 0)) {
SOURCE(3094, 11)
      return(0);
      };
SOURCE(3107, 9)
   l3←v7744 = list←v5184;
SOURCE(3118, 60)
   lab←L100037: ;
   l1←v7688 = l3←v7744;
   if ((l3←v7744 != 0)) {
      }
   else {
      goto lab←L100035;
      };
SOURCE(3143, 12)
   l3←v7744 = (* (( (ptr) l3←v7744)+1) );
SOURCE(3157, 12)
   (* (( (ptr) l1←v7688)+1) ) = l2←v7716;
SOURCE(3171, 7)
   l2←v7716 = l1←v7688;
   goto lab←L100037;
   lab←L100035: ;
SOURCE(3189, 10)
   return(l2←v7716);
   }

static word DRemove←P840(ref←v5288, list←v5316)
   word ref←v5288;
   word list←v5316;
   {
   word var←c5372;
   word l←v7788 = 0;
   word l1←v7816 = 0;
   /* DRemove: */ 
SOURCE(3220, 282)
SOURCE(3306, 8)
   l←v7788 = list←v5316;
SOURCE(3316, 162)
   lab←L100040: ;
   if ((l←v7788 != 0)) {
      }
   else {
      goto lab←L100038;
      };
   {
      word var←c15408;
      word x←v13728;
      word y←v13756;
SOURCE(3333, 122)
      x←v13728 = (*  (ptr) l←v7788 );
      y←v13756 = ref←v5288;
SOURCE(383, 13)
      var←c15408 = (x←v13728 == y←v13756);
      if (((0 != var←c15408)
      )) {
SOURCE(3360, 31)
         if ((l1←v7816 == 0)) {
SOURCE(3377, 14)
            return((* (( (ptr) l←v7788)+1) ));
            };
SOURCE(3425, 16)
         (* (( (ptr) l1←v7816)+1) ) = (* (( (ptr) l←v7788)+1) );
SOURCE(3443, 12)
         return(list←v5316);
         };
SOURCE(3460, 6)
      l1←v7816 = l←v7788;
SOURCE(3468, 10)
      l←v7788 = (* (( (ptr) l←v7788)+1) );
      };
   goto lab←L100040;
   lab←L100038: ;
SOURCE(3489, 13)
   return(list←v5316);
   }

static word DSubst←P900(new←v5432, old←v5460, expr←v5488)
   word new←v5432;
   word old←v5460;
   word expr←v5488;
   {
   register ptr gf←c16784 =  (ptr) &globalframe;
   word var←c5544;
   /* DSubst: */ 
SOURCE(3523, 282)
SOURCE(3593, 30)
   if ((expr←v5488 == 0)) {
SOURCE(3612, 11)
      return(0);
      };
SOURCE(3625, 148)
   {
      register word l←v7860;
      l←v7860 = expr←v5488;
      lab←L100045: ;
      if ((l←v7860 != 0)) {
         }
      else {
         goto lab←L100042;
         };
      {
         word var←c15440;
         word x←v13652;
         word y←v13680;
SOURCE(3669, 39)
         x←v13652 = (*  (ptr) l←v7860 );
         y←v13680 = old←v5460;
SOURCE(383, 13)
         var←c15440 = (x←v13652 == y←v13680);
         if (((0 != var←c15440)
         )) {
SOURCE(3695, 13)
            (*  (ptr) l←v7860 ) = new←v5432;
            };
SOURCE(3710, 63)
         {
            word var←c15472;
            var←c15472 = (*  (ptr) l←v7860 );
            if ((var←c15472 == 0)) {
               goto lab←L100047;
               };
            if (((* (( (ptr) gf←c16784)+4) ) == XR←GetReferentType(var←c15472))) {
               {
                  word z←v7904;
                  z←v7904 = var←c15472;
SOURCE(3746, 27)
                  (*  (ptr) l←v7860 ) = (word) DSubst←P900(new←v5432, old←v5460, z←v7904);
                  };
               }
            else {
               lab←L100047: ;
               };
            };
         };
      l←v7860 = (* (( (ptr) l←v7860)+1) );
      goto lab←L100045;
      lab←L100042: ;
      };
SOURCE(3793, 12)
   return(expr←v5488);
   }

static word NthTail←P960(list←v5604, n←v5632)
   word list←v5604;
   word n←v5632;
   {
   word var←c5676;
   /* NthTail: */ 
SOURCE(3823, 357)
SOURCE(3882, 24)
   if (( (int)n←v5632 ==  (int)0)) {
SOURCE(3894, 12)
      return(list←v5604);
      };
SOURCE(3908, 30)
   if ((list←v5604 == 0)) {
SOURCE(3927, 11)
      return(0);
      };
SOURCE(3940, 240)
   if (( (int)n←v5632 >  (int)0)) {
SOURCE(3954, 100)
      {
         register word noName←c15504 = 0;
         register word noName←c15536;
         noName←c15536 = n←v5632;
         if (( (int)noName←c15504 >=  (int)noName←c15536)) {
            goto lab←L100048;
            };
         lab←L100051: ;
SOURCE(3973, 16)
         list←v5604 = (* (( (ptr) list←v5604)+1) );
SOURCE(3991, 30)
         if ((list←v5604 == 0)) {
SOURCE(4010, 11)
            return(0);
            };
         noName←c15504 = (noName←c15504 + 1);
         if (( (int)noName←c15504 <  (int)noName←c15536)) {
            goto lab←L100051;
            };
         lab←L100048: ;
SOURCE(4042, 12)
         return(list←v5604);
         };
      }
   else {
SOURCE(4070, 112)
      {
         word lead←v7948;
SOURCE(4071, 30)
         lead←v7948 = (word) NthTail←P960(list←v5604, INEG(n←v5632));
SOURCE(4103, 54)
         lab←L100054: ;
         if ((lead←v7948 != 0)) {
            }
         else {
            goto lab←L100052;
            };
SOURCE(4123, 16)
         lead←v7948 = (* (( (ptr) lead←v7948)+1) );
SOURCE(4141, 16)
         list←v5604 = (* (( (ptr) list←v5604)+1) );
         goto lab←L100054;
         lab←L100052: ;
SOURCE(4168, 12)
         return(list←v5604);
         };
      };
   }

static word NthElement←P1020(list←v5736, n←v5764)
   word list←v5736;
   word n←v5764;
   {
   word var←c5808;
   word tail←v7992 = 0;
   /* NthElement: */ 
SOURCE(4203, 261)
SOURCE(4281, 12)
   if (( (int)n←v5764 ==  (int)0)) {
SOURCE(4293, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(4300, 118)
   if (( (int)n←v5764 >  (int)0)) {
SOURCE(4315, 25)
      tail←v7992 = (word) NthTail←P960(list←v5736, (n←v5764 - 1));
SOURCE(4342, 19)
      if ((tail←v7992 == 0)) {
SOURCE(4361, 5)
         (void) XR←RaiseUnnamedError();
         };
SOURCE(4368, 18)
      return((*  (ptr) tail←v7992 ));
      }
   else {
SOURCE(4395, 23)
      tail←v7992 = (word) NthTail←P960(list←v5736, n←v5764);
      };
SOURCE(4420, 19)
   if ((tail←v7992 == 0)) {
SOURCE(4439, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(4446, 18)
   return((*  (ptr) tail←v7992 ));
   }

static word DotCons←P1080(key←v5880, val←v5908)
   word key←v5880;
   word val←v5908;
   {
   register ptr gf←c16816 =  (ptr) &globalframe;
   word var←c5964;
   /* DotCons: */ 
SOURCE(4488, 106)
SOURCE(4554, 40)
   {
      word var←c15600;
      var←c15600 = XR←NewObject(8, (* (( (ptr) gf←c16816)+5) ));
      (*  (ptr) var←c15600 ) = key←v5880;
      (* (( (ptr) var←c15600)+1) ) = val←v5908;
      return(var←c15600);
      };
   }

static word Assoc←P1140(key←v6024, aList←v6052)
   word key←v6024;
   word aList←v6052;
   {
   word var←c6108;
   /* Assoc: */ 
SOURCE(4600, 169)
SOURCE(4600, 169)
   var←c6108 = 0;
SOURCE(4675, 94)
   lab←L100057: ;
   if ((aList←v6052 != 0)) {
      }
   else {
      goto lab←L100055;
      };
SOURCE(4696, 53)
   if (((*  (ptr) (*  (ptr) aList←v6052 ) ) == key←v6024)) {
SOURCE(4726, 23)
      return((* (( (ptr) (*  (ptr) aList←v6052 ))+1) ));
      };
SOURCE(4751, 18)
   aList←v6052 = (* (( (ptr) aList←v6052)+1) );
   goto lab←L100057;
   lab←L100055: ;
SOURCE(4600, 169)
   return(var←c6108);
   }

static word PutAssoc←P1200(key←v6180, val←v6208, aList←v6236)
   word key←v6180;
   word val←v6208;
   word aList←v6236;
   {
   register ptr gf←c16848 =  (ptr) &globalframe;
   word var←c6304;
   word lag←v8036 = 0;
   word new←v8064 = 0;
   /* PutAssoc: */ 
SOURCE(4784, 361)
SOURCE(4904, 134)
   {
      register word each←v8108;
      each←v8108 = aList←v6236;
      lab←L100061: ;
      if ((each←v8108 != 0)) {
         }
      else {
         goto lab←L100058;
         };
SOURCE(4959, 66)
      if (((*  (ptr) (*  (ptr) each←v8108 ) ) == key←v6180)) {
SOURCE(4989, 20)
         (* (( (ptr) (*  (ptr) each←v8108 ))+1) ) = val←v6208;
SOURCE(5011, 14)
         return(aList←v6236);
         };
SOURCE(5028, 10)
      lag←v8036 = each←v8108;
      each←v8108 = (* (( (ptr) each←v8108)+1) );
      goto lab←L100061;
      lab←L100058: ;
      };
SOURCE(5049, 29)
   {
      word var←c15632;
      word var←c15664;
      var←c15632 = XR←NewObject(8, (* (( (ptr) gf←c16848)+6) ));
      var←c15664 = var←c15632;
      (*  (ptr) var←c15664 ) = (word) DotCons←P1080(key←v6180, val←v6208);
      new←v8064 = var←c15632;
      };
SOURCE(5080, 49)
   if ((lag←v8036 == 0)) {
SOURCE(5098, 17)
      aList←v6236 = new←v8064;
      }
   else {
SOURCE(5115, 14)
      (* (( (ptr) lag←v8036)+1) ) = new←v8064;
      };
SOURCE(5131, 14)
   return(aList←v6236);
   }

static word Length←P1260(list←v6364)
   word list←v6364;
   {
   word n←v6408;
   /* Length: */ 
SOURCE(5152, 102)
SOURCE(5152, 102)
   n←v6408 = 0;
SOURCE(5209, 45)
   lab←L100064: ;
   if ((list←v6364 != 0)) {
      }
   else {
      goto lab←L100062;
      };
SOURCE(5229, 7)
   n←v6408 = (n←v6408 + 1);
SOURCE(5238, 16)
   list←v6364 = (* (( (ptr) list←v6364)+1) );
   goto lab←L100064;
   lab←L100062: ;
SOURCE(5152, 102)
   return(n←v6408);
   }

static void Map←P1320(list←v6468, proc←v6496)
   word list←v6468;
   word proc←v6496;
   {
   /* Map: */ 
SOURCE(5269, 122)
SOURCE(5331, 60)
   lab←L100067: ;
   if ((list←v6468 != 0)) {
      }
   else {
      goto lab←L100065;
      };
SOURCE(5351, 22)
   (void) ( *( (fPt) ((*  (ptr) proc←v6496 ))))((*  (ptr) list←v6468 ), list←v6468, proc←v6496);
SOURCE(5375, 16)
   list←v6468 = (* (( (ptr) list←v6468)+1) );
   goto lab←L100067;
   lab←L100065: ;
   }

static word Subst←P1380(new←v6656, old←v6684, expr←v6712)
   word new←v6656;
   word old←v6684;
   word expr←v6712;
   {
   register ptr gf←c16880 =  (ptr) &globalframe;
   word head←v6768;
   word tail←v8152 = 0;
   /* Subst: */ 
SOURCE(5406, 280)
SOURCE(5406, 280)
   head←v6768 = 0;
SOURCE(5505, 181)
   lab←L100070: ;
   if ((expr←v6712 != 0)) {
      }
   else {
      goto lab←L100068;
      };
   {
      word first←v8196;
      word cons←v8224;
SOURCE(5525, 23)
      first←v8196 = (*  (ptr) expr←v6712 );
SOURCE(5550, 51)
      cons←v8224 = XR←NewObject(8, (* (( (ptr) gf←c16880)+4) ));
      {
         word var←c15760;
         var←c15760 = cons←v8224;
         if ((first←v8196 == old←v6684)) {
            (*  (ptr) var←c15760 ) = new←v6656;
            }
         else {
            (*  (ptr) var←c15760 ) = old←v6684;
            };
         };
SOURCE(5603, 52)
      if ((tail←v8152 == 0)) {
SOURCE(5622, 17)
         head←v6768 = cons←v8224;
         }
      else {
SOURCE(5639, 16)
         (* (( (ptr) tail←v8152)+1) ) = cons←v8224;
         };
SOURCE(5657, 11)
      tail←v8152 = cons←v8224;
SOURCE(5670, 16)
      expr←v6712 = (* (( (ptr) expr←v6712)+1) );
      };
   goto lab←L100070;
   lab←L100068: ;
SOURCE(5406, 280)
   return(head←v6768);
   }

static void Kill←P1440(list←v6828)
   word list←v6828;
   {
   /* Kill: */ 
SOURCE(5701, 125)
SOURCE(5736, 90)
   lab←L100073: ;
   if ((list←v6828 != 0)) {
      }
   else {
      goto lab←L100071;
      };
   {
      word next←v8280;
SOURCE(5756, 22)
      next←v8280 = (* (( (ptr) list←v6828)+1) );
SOURCE(5780, 15)
      (* (( (ptr) list←v6828)+1) ) = 0;
SOURCE(5797, 16)
      (*  (ptr) list←v6828 ) = 0;
SOURCE(5815, 11)
      list←v6828 = next←v8280;
      };
   goto lab←L100073;
   lab←L100071: ;
   }

static word Sort←P1500(list←v6888, formal←c0223)
   word list←v6888;
   word formal←c0223;
   {
   W7 var←c16912;
   /* declaration of compareProc←v6916 skipped */ 
   word var←c6960;
   /* declaration of var←c15792 skipped */ 
   var←c16912.f4/* compareProc←v6916 */  = formal←c0223;
   /* Sort: */ 
SOURCE(5842, 858)
   {
      word tmpAddr13;
      tmpAddr13 = (word) (( (ptr) &var←c16912)+5)/* var←c15792 */ ;
      (*  (ptr) tmpAddr13 ) = ( ((word)  (fPt) innerSort←P2028) );
      (* (( (ptr) tmpAddr13) + 1) ) = 1;
      };
SOURCE(6615, 51)
   if ((list←v6888 == 0) || ((* (( (ptr) list←v6888)+1) ) == 0)) {
SOURCE(6653, 13)
      return(list←v6888);
      };
SOURCE(6668, 32)
   {
      word var←c0220;
      W2 var←c0164;
      (void) innerSort←P2028((word) &var←c0164, list←v6888, 32, (word) (( (bPt) &var←c16912)+20)/* var←c15792 */ );
      var←c0220 = var←c0164.f0;
      return(var←c0220);
      };
   }

static void innerSort←P2028(formal←c0175, head←v8400, max←v8428, formal←c16944)
   word formal←c0175;
   word head←v8400;
   word max←v8428;
   word formal←c16944;
   {
   word new←v8472;
   word next←v8500;
   word mid←v8528;
   formal←c16944 = (formal←c16944 - 20);
   /* innerSort: */ 
SOURCE(5919, 682)
SOURCE(5919, 682)
   new←v8472 = 0;
SOURCE(5919, 682)
   next←v8500 = 0;
SOURCE(5989, 29)
   new←v8472 = head←v8400;
   mid←v8528 = (* (( (ptr) head←v8400)+1) );
SOURCE(6020, 24)
   if ((mid←v8528 == 0)) {
SOURCE(6038, 6)
      goto lab←L100074;
      };
SOURCE(6046, 15)
   next←v8500 = (* (( (ptr) mid←v8528)+1) );
SOURCE(6063, 91)
   {
      word pd14;
      pd14 = (* (( (ptr) formal←c16944)+4) );
      if (((word) ( *( (fPt) ((*  (ptr) pd14 ))))((*  (ptr) new←v8472 ), (*  (ptr) mid←v8528 ), pd14) == 2)) {
SOURCE(6117, 14)
         (* (( (ptr) mid←v8528)+1) ) = new←v8472;
SOURCE(6133, 9)
         new←v8472 = mid←v8528;
SOURCE(6144, 10)
         mid←v8528 = head←v8400;
         };
      };
SOURCE(6159, 14)
   (* (( (ptr) mid←v8528)+1) ) = 0;
SOURCE(6175, 25)
   if ((next←v8500 == 0)) {
SOURCE(6194, 6)
      goto lab←L100074;
      };
SOURCE(6203, 24)
   mid←v8528 = next←v8500;
   next←v8500 = (* (( (ptr) next←v8500)+1) );
SOURCE(6229, 173)
   if ((next←v8500 != 0)) {
SOURCE(6248, 156)
      {
         word temp←v8572;
SOURCE(6250, 17)
         temp←v8572 = next←v8500;
SOURCE(6269, 16)
         next←v8500 = (* (( (ptr) temp←v8572)+1) );
SOURCE(6287, 15)
         (* (( (ptr) temp←v8572)+1) ) = 0;
SOURCE(6304, 98)
         {
            word pd15;
            pd15 = (* (( (ptr) formal←c16944)+4) );
            if (((word) ( *( (fPt) ((*  (ptr) pd15 ))))((*  (ptr) mid←v8528 ), (*  (ptr) temp←v8572 ), pd15) == 2)) {
SOURCE(6359, 14)
               (* (( (ptr) mid←v8528)+1) ) = 0;
SOURCE(6375, 15)
               (* (( (ptr) temp←v8572)+1) ) = mid←v8528;
SOURCE(6392, 10)
               mid←v8528 = temp←v8572;
               };
            };
         };
      };
SOURCE(6408, 34)
   new←v8472 = (word) Merge←P1560(new←v8472, mid←v8528, (* (( (ptr) formal←c16944)+4) ));
SOURCE(6444, 25)
   if ((next←v8500 == 0)) {
SOURCE(6463, 6)
      goto lab←L100074;
      };
SOURCE(6472, 129)
   {
      register word depth←v8616 = 2;
      register word noName←c15856;
      noName←c15856 = max←v8428;
      if ((depth←v8616 >= noName←c15856)) {
         goto lab←L100075;
         };
      lab←L100078: ;
SOURCE(6502, 36)
      {
         W2 var←c15888;
         (void) innerSort←P2028((word) &var←c15888, next←v8500, depth←v8616, (word) (( (bPt) formal←c16944)+20));
         next←v8500 = var←c15888.f1;
         mid←v8528 = var←c15888.f0;
         };
SOURCE(6540, 34)
      new←v8472 = (word) Merge←P1560(new←v8472, mid←v8528, (* (( (ptr) formal←c16944)+4) ));
SOURCE(6576, 25)
      if ((next←v8500 == 0)) {
SOURCE(6595, 6)
         goto lab←L100074;
         };
      depth←v8616 = (depth←v8616 + 1);
      if ((depth←v8616 < noName←c15856)) {
         goto lab←L100078;
         };
      lab←L100075: ;
      };
   /* removed tail goto */ 
   lab←L100074: ;
   (*  (ptr) formal←c0175 ) = new←v8472;
   (* (( (ptr) formal←c0175)+1) ) = next←v8500;
   return;
   }

static word Merge←P1560(x←v7020, y←v7048, compareProc←v7076)
   word x←v7020;
   word y←v7048;
   word compareProc←v7076;
   {
   word new←v7120;
   word tail←v8660 = 0;
   /* Merge: */ 
SOURCE(6706, 533)
SOURCE(6706, 533)
   new←v7120 = 0;
SOURCE(6806, 26)
   if ((x←v7020 == 0)) {
SOURCE(6822, 10)
      return(y←v7048);
      };
SOURCE(6834, 26)
   if ((y←v7048 == 0)) {
SOURCE(6850, 10)
      return(x←v7020);
      };
SOURCE(6863, 7)
   new←v7120 = x←v7020;
SOURCE(6872, 74)
   if (((word) ( *( (fPt) ((*  (ptr) compareProc←v7076 ))))((*  (ptr) x←v7020 ), (*  (ptr) y←v7048 ), compareProc←v7076) == 2)) {
SOURCE(6921, 7)
      new←v7120 = y←v7048;
SOURCE(6931, 5)
      y←v7048 = x←v7020;
SOURCE(6939, 7)
      x←v7020 = new←v7120;
      };
SOURCE(6950, 289)
   lab←L100081: ;
SOURCE(6953, 115)
   lab←L100084: ;
SOURCE(6956, 8)
   tail←v8660 = x←v7020;
SOURCE(6967, 10)
   x←v7020 = (* (( (ptr) x←v7020)+1) );
SOURCE(6979, 38)
   if ((x←v7020 == 0)) {
SOURCE(6996, 13)
      (* (( (ptr) tail←v8660)+1) ) = y←v7048;
SOURCE(7011, 6)
      return(new←v7120);
      };
SOURCE(7020, 48)
   if (((word) ( *( (fPt) ((*  (ptr) compareProc←v7076 ))))((*  (ptr) x←v7020 ), (*  (ptr) y←v7048 ), compareProc←v7076) == 2)) {
SOURCE(7068, 4)
      goto lab←L100083;
      };
   goto lab←L100084;
   lab←L100083: ;
SOURCE(7083, 13)
   (* (( (ptr) tail←v8660)+1) ) = y←v7048;
SOURCE(7099, 112)
   lab←L100087: ;
SOURCE(7102, 8)
   tail←v8660 = y←v7048;
SOURCE(7113, 10)
   y←v7048 = (* (( (ptr) y←v7048)+1) );
SOURCE(7125, 38)
   if ((y←v7048 == 0)) {
SOURCE(7142, 13)
      (* (( (ptr) tail←v8660)+1) ) = x←v7020;
SOURCE(7157, 6)
      return(new←v7120);
      };
SOURCE(7166, 45)
   if (((word) ( *( (fPt) ((*  (ptr) compareProc←v7076 ))))((*  (ptr) x←v7020 ), (*  (ptr) y←v7048 ), compareProc←v7076) == 0)) {
SOURCE(7211, 4)
      goto lab←L100086;
      };
   goto lab←L100087;
   lab←L100086: ;
SOURCE(7226, 13)
   (* (( (ptr) tail←v8660)+1) ) = x←v7020;
   goto lab←L100081;
   }

static word UniqueSort←P1620(list←v7180, compareProc←v7208)
   word list←v7180;
   word compareProc←v7208;
   {
   word var←c7252;
   word lag←v8704;
   /* UniqueSort: */ 
SOURCE(7254, 302)
SOURCE(7335, 42)
   list←v7180 = (word) Sort←P1500(list←v7180, compareProc←v7208);
   lag←v8704 = list←v7180;
SOURCE(7379, 154)
   lab←L100090: ;
   if ((lag←v8704 != 0)) {
      }
   else {
      goto lab←L100088;
      };
   {
      word rest←v8748;
SOURCE(7398, 21)
      rest←v8748 = (* (( (ptr) lag←v8704)+1) );
SOURCE(7421, 19)
      if ((rest←v8748 == 0)) {
SOURCE(7440, 4)
         goto lab←L100089;
         };
SOURCE(7446, 87)
      if (((word) ( *( (fPt) ((*  (ptr) compareProc←v7208 ))))((*  (ptr) lag←v8704 ), (*  (ptr) rest←v8748 ), compareProc←v7208)
       == 1)) {
SOURCE(7497, 26)
         (* (( (ptr) lag←v8704)+1) ) = (* (( (ptr) rest←v8748)+1) );
         }
      else {
SOURCE(7523, 10)
         lag←v8704 = rest←v8748;
         };
      };
   goto lab←L100090;
   lab←L100088: ;
   lab←L100089: ;
SOURCE(7544, 12)
   return(list←v7180);
   }

static word Compare←P1680(ref1←v10916, ref2←v10944)
   word ref1←v10916;
   word ref2←v10944;
   {
   register ptr gf←c16976 =  (ptr) &globalframe;
   word var←c10988;
   /* Compare: */ 
SOURCE(7562, 413)
SOURCE(7594, 381)
   {
      word var←c15920;
      word var←c15952;
      var←c15920 = ref1←v10916;
      if ((var←c15920 == 0)) {
         goto lab←L100091;
         };
      var←c15952 = XR←GetReferentType(var←c15920);
      {
         word tc17;
         if (((* (( (ptr) gf←c16976)+7) ) == var←c15952)) {
            tc17 =  (word) ((*(int*)var←c15920<0) == 0);
            }
         else {
            tc17 =  (word) 0;
            };
         if (tc17) {
            {
               word rope←v8792;
               rope←v8792 = var←c15920;
SOURCE(7630, 60)
               {
                  word var←c16048;
                  word var←c16016;
                  var←c16048 = XR←Narrow(ref2←v10944, (* (( (ptr) gf←c16976)+7) ));
                  if ((var←c16048 == 0)) {
                     goto lab←L100092;
                     };
                  if (((*(int*)var←c16048<0) == 0)) {
                     goto lab←L100092;
                     };
                  (void) XR←RaiseError(XR←NarrowFault, 0);
                  lab←L100092: ;
                  var←c16016 =  (word) var←c16048;
                  {
                     word pd18;
                     pd18 = (* (( (ptr) (* (( (ptr) gf←c16976)+68)/* var←c16080 */  ))+7) );
                     return((word) ( *( (fPt) ((*  (ptr) pd18 ))))(rope←v8792, var←c16016, 1, pd18));
                     };
                  };
               };
            };
         if (((* (( (ptr) gf←c16976)+9) ) == var←c15952)) {
            {
               word rli←v8836;
               rli←v8836 = var←c15920;
SOURCE(7708, 55)
               {
                  word var←c16144;
                  word a←v13956;
                  word b←v13984;
                  a←v13956 = (*  (ptr) rli←v8836 );
                  b←v13984 = (*  (ptr) XR←Narrow(ref2←v10944, (* (( (ptr) gf←c16976)+9) )) );
                  {
                     word idx19;
                     var←c16144 = (
                        idx19 = (word)  ( ( (int)a←v13956 ==  (int)b←v13984) ? 1 :  ( ( (int)a←v13956 >  (int)b←v13984) ? 2 : 0 )  ) ,
                        BCK(idx19, 3)
                        );
                     };
                  return(var←c16144);
                  };
               };
            };
         if (((* (( (ptr) gf←c16976)+10) ) == var←c15952)) {
            {
               word atom←v8904;
               atom←v8904 = var←c15920;
SOURCE(7779, 90)
               {
                  word var←c16208;
                  word var←c16272;
                  word var←c16304;
                  {
                     word pd20;
                     pd20 = (* (( (ptr) (* (( (ptr) gf←c16976)+69)/* var←c16240 */  ))+9) );
                     var←c16208 = (word) ( *( (fPt) ((*  (ptr) pd20 ))))(atom←v8904, pd20);
                     };
                  {
                     word pd21;
                     var←c16304 = XR←Narrow(ref2←v10944, (* (( (ptr) gf←c16976)+10) ));
                     pd21 = (* (( (ptr) (* (( (ptr) gf←c16976)+69)/* var←c16240 */  ))+9) );
                     var←c16272 = (word) ( *( (fPt) ((*  (ptr) pd21 ))))(var←c16304, pd21);
                     };
                  {
                     word pd22;
                     pd22 = (* (( (ptr) (* (( (ptr) gf←c16976)+68)/* var←c16080 */  ))+7) );
                     return((word) ( *( (fPt) ((*  (ptr) pd22 ))))(var←c16208, var←c16272, 1, pd22));
                     };
                  };
               };
            };
         lab←L100091: ;
SOURCE(7882, 93)
         if ((ref1←v10916 == 0)) {
SOURCE(7901, 74)
            {
               word var←c16400;
               word var←c16368;
               word var←c16432;
               word var←c16464;
               var←c16400 = XR←Narrow(ref1←v10916, (* (( (ptr) gf←c16976)+7) ));
               if ((var←c16400 == 0)) {
                  goto lab←L100094;
                  };
               if (((*(int*)var←c16400<0) == 0)) {
                  goto lab←L100094;
                  };
               (void) XR←RaiseError(XR←NarrowFault, 0);
               lab←L100094: ;
               var←c16368 =  (word) var←c16400;
               var←c16464 = XR←Narrow(ref2←v10944, (* (( (ptr) gf←c16976)+7) ));
               if ((var←c16464 == 0)) {
                  goto lab←L100095;
                  };
               if (((*(int*)var←c16464<0) == 0)) {
                  goto lab←L100095;
                  };
               (void) XR←RaiseError(XR←NarrowFault, 0);
               lab←L100095: ;
               var←c16432 =  (word) var←c16464;
               {
                  word pd23;
                  pd23 = (* (( (ptr) (* (( (ptr) gf←c16976)+68)/* var←c16080 */  ))+7) );
                  return((word) ( *( (fPt) ((*  (ptr) pd23 ))))(var←c16368, var←c16432, 1, pd23));
                  };
               };
            }
         else {
SOURCE(7975, 5)
            (void) XR←RaiseUnnamedError();
            };
         goto endif016;
         endif016: ;
         };
      };
   }

/* file: ListImpl, module: ListImpl, compiled at: February 21, 1992 5:10:14 pm PST */ 
extern void XR←install←ListImpl() {
   NoName←Q2676();
   }
extern void XR←run←ListImpl() { XR←Start(&globalframe); }