/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: February 5, 1993 1:53:39 pm PST */
/* C2C version: October 7, 1992 (native) */
/* ref-counting: off */
/* file: GGUtilityImplB, module: GGUtilityImplB */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [4218354260,1734199943] GGUtilityImplB";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef W2 *W2Pt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2, f3;} W4;
typedef struct {W8 f; W4 r;} W12;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
#define SOURCE(p, l) /* source p, l */
static float fc22 = 360.0;
static float fc24 = 0.0;
static void NoName←Q2052();
static void GGUtilityImplB←P0();
static word SlopeOfSegment←P60();
static word SlopeOfPoints←P120();
static word CounterClockwiseBetweenSegments←P180();
static word SmallestAngleOfPoints←P240();
static word LengthOfSegment←P300();
static word DistanceBetweenPoints←P360();
static word DistanceFromPointToSegment←P420();
static word DistanceFromPointToLine←P480();
static word Identity←P540();
static void Transform←P600();
static word RotateAboutPoint←P660();
static word ScaleAboutPoint←P720();
static word ScaleUnevenAboutPoint←P780();
static word SixPoints←P840();
static word FourPoints←P900();
static void StartSliceList←P960();
static void AddSlice←P1020();
static word AppendSliceList←P1080();
static word DeleteSliceFromList←P1140();
static void FindSliceAndNeighbors←P1200();
static word CopySliceList←P1260();
static word SortSliceList←P1320();
static void InnerSort←P1728();
static word SortSliceListByPriority←P1380();
static word CompareProc←P1884();
static word LengthSliceList←P1440();
static word SliceListMerge←P1500();
static void StartTrajList←P1560();
static void AddTraj←P1620();
static struct {unsigned f; char r[48];} string1 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\247\365\203\234\300\047\265\225\046\100\324\005\004\162\145\163\164\214\216\257\300\247\365\203\234\300\047\265\225\046\100\324\261\000\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\373\156\372\124\300\147\135\312\207\100\164\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\121\216\014\136\300\111\163\224\167\100\150\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\103\306\166\071\300\047\126\012\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\057\254\335\010\300\373\153\244\175\100\150\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\104\154\010\164\300\126\073\363\036\100\150\000\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {
   word f0[5]; word f5; word f6; word f7; 
   word f8; word f9; word f10; word f11; 
   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[6]; 
   } globalframe = {
   {0}, (word) AddTraj←P1620, 0, (word) StartTrajList←P1560, 
   0, (word) SliceListMerge←P1500, 0, (word) LengthSliceList←P1440, 
   0, (word) SortSliceListByPriority←P1380, 0, (word) SortSliceList←P1320, 
   0, (word) CopySliceList←P1260, 0, (word) FindSliceAndNeighbors←P1200, 
   0, (word) DeleteSliceFromList←P1140, 0, (word) AppendSliceList←P1080, 
   0, (word) AddSlice←P1020, 0, (word) StartSliceList←P960, 
   0, (word) FourPoints←P900, 0, (word) SixPoints←P840, 
   0, (word) ScaleUnevenAboutPoint←P780, 0, (word) ScaleAboutPoint←P720, 
   0, (word) RotateAboutPoint←P660, 0, (word) Transform←P600, 
   0, (word) Identity←P540, 0, (word) DistanceFromPointToLine←P480, 
   0, (word) DistanceFromPointToSegment←P420, 0, (word) DistanceBetweenPoints←P360, 
   0, (word) LengthOfSegment←P300, 0, (word) SmallestAngleOfPoints←P240, 
   0, (word) CounterClockwiseBetweenSegments←P180, 0, (word) SlopeOfPoints←P120, 
   0, (word) SlopeOfSegment←P60, 0, (word) GGUtilityImplB←P0, 
   {0}
   };

static void NoName←Q2052()
   {
   register ptr gf←c0220 =  (ptr) &globalframe;
   word var←c19368;
   (* (( (ptr) gf←c0220)+4) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (void) XR←DeclareGlobalFrame((word) "GGUtilityImplB", &globalframe, (word) XR←GetTypeIndexS((word) (&string3)), (word) (( (bPt) gf←c0220)+236)
      /* var←c18024 */ );
   var←c19368 = (word) XR←ImportInterface((word) "Angles2d", (word) XR←GetTypeIndexS((word) (&string4)), 11);
   (* (( (ptr) gf←c0220)+62)/* var←c18120 */  ) = var←c19368;
   (void) XR←ImportProcS(var←c19368, 67371009);
   (void) XR←ImportProcS(var←c19368, 67371265);
   var←c19368 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string5)), 55);
   (* (( (ptr) gf←c0220)+64)/* var←c18280 */  ) = var←c19368;
   (void) XR←ImportProcS(var←c19368, 67898882);
   (void) XR←ImportProcS(var←c19368, 68681734);
   (void) XR←ImportProcS(var←c19368, 67899394);
   (void) XR←ImportProcS(var←c19368, 67636994);
   (void) XR←ImportProcS(var←c19368, 67899906);
   (void) XR←ImportProcS(var←c19368, 67637506);
   (void) XR←ImportProcS(var←c19368, 135013122);
   (void) XR←ImportProcS(var←c19368, 67634689);
   var←c19368 = (word) XR←ImportInterface((word) "Lines2d", (word) XR←GetTypeIndexS((word) (&string6)), 50);
   (* (( (ptr) gf←c0220)+63)/* var←c18216 */  ) = var←c19368;
   (void) XR←ImportProcS(var←c19368, 67904258);
   (void) XR←ImportProcS(var←c19368, 68158466);
   var←c19368 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string7)), 21);
   (* (( (ptr) gf←c0220)+61)/* var←c18056 */  ) = var←c19368;
   (void) XR←ImportProcS(var←c19368, 68161282);
   (void) XR←ImportProcS(var←c19368, 68158722);
   (void) XR←ImportProcS(var←c19368, 68158210);
   (void) XR←ImportProcS(var←c19368, 67633665);
   (void) XR←ImportProcS(var←c19368, 135270914);
   var←c19368 = (word) XR←ExportInterface((word) "GGMeasure", (word) XR←GetTypeIndexS((word) (&string8)), 8);
   (* (( (ptr) gf←c0220)+65)/* var←c19400 */  ) = var←c19368;
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+228)/* var←c17992 */ , 67371009);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+220)/* var←c17960 */ , 68157698);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+212)/* var←c17928 */ , 67633666);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+204)/* var←c17896 */ , 68682499);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+196)/* var←c17864 */ , 67372033);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+188)/* var←c17832 */ , 68158722);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+180)/* var←c17800 */ , 67896834);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+172)/* var←c17768 */ , 68683523);
   var←c19368 = (word) XR←ExportInterface((word) "GGTransform", (word) XR←GetTypeIndexS((word) (&string9)), 7);
   (* (( (ptr) gf←c0220)+65)/* var←c19400 */  ) = var←c19368;
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+164)/* var←c17736 */ , 67108864);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+156)/* var←c17704 */ , 135004418);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+148)/* var←c17672 */ , 67895810);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+140)/* var←c17640 */ , 67896066);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+132)/* var←c17608 */ , 68158467);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+124)/* var←c17576 */ , 70255873);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+116)/* var←c17544 */ , 69207553);
   var←c19368 = (word) XR←ExportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string10)), 42);
   (* (( (ptr) gf←c0220)+65)/* var←c19400 */  ) = var←c19368;
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+108)/* var←c17512 */ , 134221824);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+100)/* var←c17480 */ , 135008515);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+92)/* var←c17448 */ , 67637762);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+84)/* var←c17416 */ , 67638018);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+76)/* var←c17384 */ , 268964866);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+68)/* var←c17352 */ , 67376385);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+60)/* var←c17320 */ , 67638786);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+52)/* var←c17288 */ , 67376897);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+28)/* var←c17192 */ , 134224896);
   (void) XR←ExportProcS(var←c19368, (word) (( (bPt) gf←c0220)+20)/* var←c17160 */ , 135011587);
   }

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

static word SlopeOfSegment←P60(seg←v3976)
   word seg←v3976;
   {
   register ptr gf←c19432 =  (ptr) &globalframe;
   word degrees←v4020;
   W2 direction←v9296;
   /* SlopeOfSegment: */ 
SOURCE(581, 210)
SOURCE(671, 54)
   {
      word pd11;
      pd11 = (* (( (ptr) (* (( (ptr) gf←c19432)+61)/* var←c18056 */  ))+22) );
      (void) ( *( (fPt) ((*  (ptr) pd11 ))))((word) &direction←v9296, (*  (W2Pt) (( (ptr) seg←v3976)+9) ), (*  (W2Pt) (( (ptr) seg←v3976)+11)
          ), pd11);
      };
SOURCE(727, 64)
   {
      word var←c18088;
      {
         word pd12;
         pd12 = (* (( (ptr) (* (( (ptr) gf←c19432)+61)/* var←c18056 */  ))+6) );
         var←c18088 = (word) ( *( (fPt) ((*  (ptr) pd12 ))))(direction←v9296, pd12);
         };
      {
         word pd13;
         pd13 = (* (( (ptr) (* (( (ptr) gf←c19432)+62)/* var←c18120 */  ))+5) );
         degrees←v4020 = (word) ( *( (fPt) ((*  (ptr) pd13 ))))(var←c18088, pd13);
         };
      };
SOURCE(581, 210)
   return(degrees←v4020);
   }

static word SlopeOfPoints←P120(p0←v4080, p1←v4108)
   W2 p0←v4080;
   W2 p1←v4108;
   {
   register ptr gf←c19464 =  (ptr) &globalframe;
   word degrees←v4152;
   W2 direction←v9340;
   /* SlopeOfPoints: */ 
SOURCE(797, 202)
SOURCE(887, 46)
   {
      word pd14;
      pd14 = (* (( (ptr) (* (( (ptr) gf←c19464)+61)/* var←c18056 */  ))+22) );
      (void) ( *( (fPt) ((*  (ptr) pd14 ))))((word) &direction←v9340, p0←v4080, p1←v4108, pd14);
      };
SOURCE(935, 64)
   {
      word var←c18152;
      {
         word pd15;
         pd15 = (* (( (ptr) (* (( (ptr) gf←c19464)+61)/* var←c18056 */  ))+6) );
         var←c18152 = (word) ( *( (fPt) ((*  (ptr) pd15 ))))(direction←v9340, pd15);
         };
      {
         word pd16;
         pd16 = (* (( (ptr) (* (( (ptr) gf←c19464)+62)/* var←c18120 */  ))+5) );
         degrees←v4152 = (word) ( *( (fPt) ((*  (ptr) pd16 ))))(var←c18152, pd16);
         };
      };
SOURCE(797, 202)
   return(degrees←v4152);
   }

static word CounterClockwiseBetweenSegments←P180(seg1←v4212, seg2←v4240)
   word seg1←v4212;
   word seg2←v4240;
   {
   register ptr gf←c19496 =  (ptr) &globalframe;
   word degreesSeg1ToSeg2←v4284;
   W2 v1←v9384;
   W2 v2←v9412;
   /* CounterClockwiseBetweenSegments: */ 
SOURCE(1005, 360)
SOURCE(1126, 49)
   {
      word pd17;
      pd17 = (* (( (ptr) (* (( (ptr) gf←c19496)+61)/* var←c18056 */  ))+22) );
      (void) ( *( (fPt) ((*  (ptr) pd17 ))))((word) &v1←v9384, (*  (W2Pt) (( (ptr) seg1←v4212)+9) ), (*  (W2Pt) (( (ptr) seg1←v4212)+11)
          ), pd17);
      };
SOURCE(1177, 49)
   {
      word pd18;
      pd18 = (* (( (ptr) (* (( (ptr) gf←c19496)+61)/* var←c18056 */  ))+22) );
      (void) ( *( (fPt) ((*  (ptr) pd18 ))))((word) &v2←v9412, (*  (W2Pt) (( (ptr) seg2←v4240)+9) ), (*  (W2Pt) (( (ptr) seg2←v4240)+11)
          ), pd18);
      };
SOURCE(1228, 80)
   {
      word var←c18184;
      {
         word pd19;
         pd19 = (* (( (ptr) (* (( (ptr) gf←c19496)+61)/* var←c18056 */  ))+7) );
         var←c18184 = (word) ( *( (fPt) ((*  (ptr) pd19 ))))(v1←v9384, v2←v9412, pd19);
         };
      {
         word pd20;
         pd20 = (* (( (ptr) (* (( (ptr) gf←c19496)+62)/* var←c18120 */  ))+4) );
         degreesSeg1ToSeg2←v4284 = (word) ( *( (fPt) ((*  (ptr) pd20 ))))(var←c18184, pd20);
         };
      };
SOURCE(1310, 55)
   {
      word x21;
      word x23;
      if (((
         x21 = degreesSeg1ToSeg2←v4284,  *(float*)&x21
         ) == (
         x23 = (*  (ptr) &fc22 ),  *(float*)&x23
         ))) {
SOURCE(1342, 23)
         degreesSeg1ToSeg2←v4284 = (*  (ptr) &fc24 );
         };
      };
SOURCE(1005, 360)
   return(degreesSeg1ToSeg2←v4284);
   }

static word SmallestAngleOfPoints←P240(a←v4344, b←v4372, c←v4400)
   W2 a←v4344;
   W2 b←v4372;
   W2 c←v4400;
   {
   register ptr gf←c19528 =  (ptr) &globalframe;
   word degreesAngleABC←v4444;
   W2 v0←v9456;
   W2 v1←v9484;
   /* SmallestAngleOfPoints: */ 
SOURCE(1371, 258)
SOURCE(1488, 37)
   {
      word pd25;
      pd25 = (* (( (ptr) (* (( (ptr) gf←c19528)+61)/* var←c18056 */  ))+22) );
      (void) ( *( (fPt) ((*  (ptr) pd25 ))))((word) &v0←v9456, b←v4372, a←v4344, pd25);
      };
SOURCE(1527, 37)
   {
      word pd26;
      pd26 = (* (( (ptr) (* (( (ptr) gf←c19528)+61)/* var←c18056 */  ))+22) );
      (void) ( *( (fPt) ((*  (ptr) pd26 ))))((word) &v1←v9484, b←v4372, c←v4400, pd26);
      };
SOURCE(1566, 63)
   {
      word pd27;
      pd27 = (* (( (ptr) (* (( (ptr) gf←c19528)+61)/* var←c18056 */  ))+9) );
      degreesAngleABC←v4444 = (word) ( *( (fPt) ((*  (ptr) pd27 ))))(v0←v9456, v1←v9484, pd27);
      };
SOURCE(1371, 258)
   return(degreesAngleABC←v4444);
   }

static word LengthOfSegment←P300(seg←v4504)
   word seg←v4504;
   {
   register ptr gf←c19560 =  (ptr) &globalframe;
   word lengthInPoints←v4548;
   /* LengthOfSegment: */ 
SOURCE(1635, 130)
SOURCE(1714, 51)
   {
      word pd28;
      pd28 = (* (( (ptr) (* (( (ptr) gf←c19560)+61)/* var←c18056 */  ))+19) );
      lengthInPoints←v4548 = (word) ( *( (fPt) ((*  (ptr) pd28 ))))((*  (W2Pt) (( (ptr) seg←v4504)+9) ), (*  (W2Pt) (( (ptr) seg←v4504)+11)
          ), pd28);
      };
SOURCE(1635, 130)
   return(lengthInPoints←v4548);
   }

static word DistanceBetweenPoints←P360(p0←v4608, p1←v4636)
   W2 p0←v4608;
   W2 p1←v4636;
   {
   register ptr gf←c19592 =  (ptr) &globalframe;
   word lengthInPoints←v4680;
   /* DistanceBetweenPoints: */ 
SOURCE(1771, 129)
SOURCE(1857, 43)
   {
      word pd29;
      pd29 = (* (( (ptr) (* (( (ptr) gf←c19592)+61)/* var←c18056 */  ))+19) );
      lengthInPoints←v4680 = (word) ( *( (fPt) ((*  (ptr) pd29 ))))(p0←v4608, p1←v4636, pd29);
      };
SOURCE(1771, 129)
   return(lengthInPoints←v4680);
   }

static word DistanceFromPointToSegment←P420(p←v4740, seg←v4768)
   W2 p←v4740;
   word seg←v4768;
   {
   word distanceInPoints←v4812;
   /* DistanceFromPointToSegment: */ 
SOURCE(1906, 124)
SOURCE(2008, 22)
   distanceInPoints←v4812 = (*  (ptr) &fc24 );
SOURCE(1906, 124)
   return(distanceInPoints←v4812);
   }

static word DistanceFromPointToLine←P480(p←v4872, p1←v4900, p2←v4928)
   W2 p←v4872;
   W2 p1←v4900;
   W2 p2←v4928;
   {
   register ptr gf←c19624 =  (ptr) &globalframe;
   word distance←v4972;
   word line←v9528 = 0;
   /* DistanceFromPointToLine: */ 
SOURCE(2036, 183)
SOURCE(2140, 37)
   {
      word pd30;
      pd30 = (* (( (ptr) (* (( (ptr) gf←c19624)+63)/* var←c18216 */  ))+8) );
      line←v9528 = (word) ( *( (fPt) ((*  (ptr) pd30 ))))(p1←v4900, p2←v4928, pd30);
      };
SOURCE(2179, 40)
   {
      word pd31;
      pd31 = (* (( (ptr) (* (( (ptr) gf←c19624)+63)/* var←c18216 */  ))+39) );
      distance←v4972 = (word) ( *( (fPt) ((*  (ptr) pd31 ))))(p←v4872, line←v9528, pd31);
      };
SOURCE(2036, 183)
   return(distance←v4972);
   }

static word Identity←P540()
   {
   register ptr gf←c19656 =  (ptr) &globalframe;
   word id←v5032;
   /* Identity: */ 
SOURCE(2225, 119)
SOURCE(2225, 119)
   id←v5032 = 0;
SOURCE(2301, 43)
   {
      W2 var←c18248;
      var←c18248.f0 = (*  (ptr) &fc24 );
      var←c18248.f1 = (*  (ptr) &fc24 );
      {
         word pd32;
         pd32 = (* (( (ptr) (* (( (ptr) gf←c19656)+64)/* var←c18280 */  ))+10) );
         id←v5032 = (word) ( *( (fPt) ((*  (ptr) pd32 ))))(var←c18248, pd32);
         };
      };
SOURCE(2225, 119)
   return(id←v5032);
   }

static void Transform←P600(formal←c085, m←v5092, p←v5120)
   word formal←c085;
   word m←v5092;
   W2 p←v5120;
   {
   register ptr gf←c19688 =  (ptr) &globalframe;
   W2 var←c5164;
   /* Transform: */ 
SOURCE(2350, 139)
SOURCE(2445, 44)
   {
      W2 var←c18344;
      {
         word pd33;
         pd33 = (* (( (ptr) (* (( (ptr) gf←c19688)+64)/* var←c18280 */  ))+39) );
         (void) ( *( (fPt) ((*  (ptr) pd33 ))))((word) &var←c18344, m←v5092, p←v5120, pd33);
         };
      var←c5164 = var←c18344;
      /* removed tail goto */ 
      };
   (*  (W2Pt) formal←c085 ) = var←c5164;
   return;
   }

static word RotateAboutPoint←P660(origin←v5224, degrees←v5252)
   W2 origin←v5224;
   word degrees←v5252;
   {
   register ptr gf←c19720 =  (ptr) &globalframe;
   word m←v5296;
   /* RotateAboutPoint: */ 
SOURCE(2495, 288)
SOURCE(2495, 288)
   m←v5296 = 0;
SOURCE(2609, 60)
   {
      W2 var←c18376;
      {
         word x34;
         *(float*)&var←c18376.f0 =  - (
            x34 = origin←v5224.f0,  *(float*)&x34
            );
         };
      {
         word x35;
         *(float*)&var←c18376.f1 =  - (
            x35 = origin←v5224.f1,  *(float*)&x35
            );
         };
      {
         word pd36;
         pd36 = (* (( (ptr) (* (( (ptr) gf←c19720)+64)/* var←c18280 */  ))+10) );
         m←v5296 = (word) ( *( (fPt) ((*  (ptr) pd36 ))))(var←c18376, pd36);
         };
      };
SOURCE(2671, 47)
   {
      word pd37;
      pd37 = (* (( (ptr) (* (( (ptr) gf←c19720)+64)/* var←c18280 */  ))+21) );
      m←v5296 = (word) ( *( (fPt) ((*  (ptr) pd37 ))))(m←v5296, degrees←v5252, pd37);
      };
SOURCE(2720, 63)
   {
      W2 var←c18408;
      var←c18408.f0 = origin←v5224.f0;
      var←c18408.f1 = origin←v5224.f1;
      {
         word pd38;
         pd38 = (* (( (ptr) (* (( (ptr) gf←c19720)+64)/* var←c18280 */  ))+22) );
         m←v5296 = (word) ( *( (fPt) ((*  (ptr) pd38 ))))(m←v5296, var←c18408, pd38);
         };
      };
SOURCE(2495, 288)
   return(m←v5296);
   }

static word ScaleAboutPoint←P720(origin←v5356, scalar←v5384)
   W2 origin←v5356;
   word scalar←v5384;
   {
   register ptr gf←c19752 =  (ptr) &globalframe;
   word m←v5428;
   /* ScaleAboutPoint: */ 
SOURCE(2789, 284)
SOURCE(2789, 284)
   m←v5428 = 0;
SOURCE(2901, 60)
   {
      W2 var←c18440;
      {
         word x39;
         *(float*)&var←c18440.f0 =  - (
            x39 = origin←v5356.f0,  *(float*)&x39
            );
         };
      {
         word x40;
         *(float*)&var←c18440.f1 =  - (
            x40 = origin←v5356.f1,  *(float*)&x40
            );
         };
      {
         word pd41;
         pd41 = (* (( (ptr) (* (( (ptr) gf←c19752)+64)/* var←c18280 */  ))+10) );
         m←v5428 = (word) ( *( (fPt) ((*  (ptr) pd41 ))))(var←c18440, pd41);
         };
      };
SOURCE(2963, 45)
   {
      word pd42;
      pd42 = (* (( (ptr) (* (( (ptr) gf←c19752)+64)/* var←c18280 */  ))+19) );
      m←v5428 = (word) ( *( (fPt) ((*  (ptr) pd42 ))))(m←v5428, scalar←v5384, pd42);
      };
SOURCE(3010, 63)
   {
      W2 var←c18472;
      var←c18472.f0 = origin←v5356.f0;
      var←c18472.f1 = origin←v5356.f1;
      {
         word pd43;
         pd43 = (* (( (ptr) (* (( (ptr) gf←c19752)+64)/* var←c18280 */  ))+22) );
         m←v5428 = (word) ( *( (fPt) ((*  (ptr) pd43 ))))(m←v5428, var←c18472, pd43);
         };
      };
SOURCE(2789, 284)
   return(m←v5428);
   }

static word ScaleUnevenAboutPoint←P780(origin←v5488, scalarX←v5516, scalarY←v5544)
   W2 origin←v5488;
   word scalarX←v5516;
   word scalarY←v5544;
   {
   register ptr gf←c19784 =  (ptr) &globalframe;
   word m←v5588;
   /* ScaleUnevenAboutPoint: */ 
SOURCE(3079, 319)
SOURCE(3079, 319)
   m←v5588 = 0;
SOURCE(3213, 60)
   {
      W2 var←c18504;
      {
         word x44;
         *(float*)&var←c18504.f0 =  - (
            x44 = origin←v5488.f0,  *(float*)&x44
            );
         };
      {
         word x45;
         *(float*)&var←c18504.f1 =  - (
            x45 = origin←v5488.f1,  *(float*)&x45
            );
         };
      {
         word pd46;
         pd46 = (* (( (ptr) (* (( (ptr) gf←c19784)+64)/* var←c18280 */  ))+10) );
         m←v5588 = (word) ( *( (fPt) ((*  (ptr) pd46 ))))(var←c18504, pd46);
         };
      };
SOURCE(3275, 58)
   {
      W2 var←c18536;
      var←c18536.f0 = scalarX←v5516;
      var←c18536.f1 = scalarY←v5544;
      {
         word pd47;
         pd47 = (* (( (ptr) (* (( (ptr) gf←c19784)+64)/* var←c18280 */  ))+20) );
         m←v5588 = (word) ( *( (fPt) ((*  (ptr) pd47 ))))(m←v5588, var←c18536, pd47);
         };
      };
SOURCE(3335, 63)
   {
      W2 var←c18568;
      var←c18568.f0 = origin←v5488.f0;
      var←c18568.f1 = origin←v5488.f1;
      {
         word pd48;
         pd48 = (* (( (ptr) (* (( (ptr) gf←c19784)+64)/* var←c18280 */  ))+22) );
         m←v5588 = (word) ( *( (fPt) ((*  (ptr) pd48 ))))(m←v5588, var←c18568, pd48);
         };
      };
SOURCE(3079, 319)
   return(m←v5588);
   }

static word SixPoints←P840(pts←v5648)
   W12 pts←v5648;
   {
   register ptr gf←c19816 =  (ptr) &globalframe;
   word transform←v5728;
   W8 dpts←v9572;
   word a←v9600;
   word b←v9628;
   word d←v9656;
   word e←v9684;
   word del←v9712;
   word xform←v9740 = 0;
   /* SixPoints: */ 
SOURCE(3403, 976)
SOURCE(3403, 976)
   transform←v5728 = 0;
SOURCE(3613, 29)
   {
      word x49;
      word x50;
      *(float*)&dpts←v9572.f0 = (
         x49 = (* (( (ptr) &pts←v5648)+2) ),  *(float*)&x49
         ) - (
         x50 = (*  (ptr) &pts←v5648 ),  *(float*)&x50
         );
      };
SOURCE(3644, 29)
   {
      word x51;
      word x52;
      *(float*)&dpts←v9572.f1 = (
         x51 = (* (( (ptr) &pts←v5648)+3) ),  *(float*)&x51
         ) - (
         x52 = (* (( (ptr) &pts←v5648)+1) ),  *(float*)&x52
         );
      };
SOURCE(3675, 29)
   {
      word x53;
      word x54;
      *(float*)&dpts←v9572.f2 = (
         x53 = (* (( (ptr) &pts←v5648)+4) ),  *(float*)&x53
         ) - (
         x54 = (*  (ptr) &pts←v5648 ),  *(float*)&x54
         );
      };
SOURCE(3706, 29)
   {
      word x55;
      word x56;
      *(float*)&dpts←v9572.f3 = (
         x55 = (* (( (ptr) &pts←v5648)+5) ),  *(float*)&x55
         ) - (
         x56 = (* (( (ptr) &pts←v5648)+1) ),  *(float*)&x56
         );
      };
SOURCE(3738, 29)
   {
      word x57;
      word x58;
      *(float*)&dpts←v9572.f4 = (
         x57 = (* (( (ptr) &pts←v5648)+8) ),  *(float*)&x57
         ) - (
         x58 = (* (( (ptr) &pts←v5648)+6) ),  *(float*)&x58
         );
      };
SOURCE(3769, 29)
   {
      word x59;
      word x60;
      *(float*)&dpts←v9572.f5 = (
         x59 = (* (( (ptr) &pts←v5648)+9) ),  *(float*)&x59
         ) - (
         x60 = (* (( (ptr) &pts←v5648)+7) ),  *(float*)&x60
         );
      };
SOURCE(3800, 29)
   {
      word x61;
      word x62;
      *(float*)&dpts←v9572.f6 = (
         x61 = (* (( (ptr) &pts←v5648)+10) ),  *(float*)&x61
         ) - (
         x62 = (* (( (ptr) &pts←v5648)+6) ),  *(float*)&x62
         );
      };
SOURCE(3831, 29)
   {
      word x63;
      word x64;
      *(float*)&dpts←v9572.f7 = (
         x63 = (* (( (ptr) &pts←v5648)+11) ),  *(float*)&x63
         ) - (
         x64 = (* (( (ptr) &pts←v5648)+7) ),  *(float*)&x64
         );
      };
SOURCE(3862, 45)
   {
      word x65;
      word x66;
      word x67;
      word x68;
      *(float*)&del←v9712 = ((
         x65 = dpts←v9572.f0,  *(float*)&x65
         ) * (
         x66 = dpts←v9572.f3,  *(float*)&x66
         )) - ((
         x67 = dpts←v9572.f2,  *(float*)&x67
         ) * (
         x68 = dpts←v9572.f1,  *(float*)&x68
         ));
      };
SOURCE(3909, 14)
   {
      word x69;
      word x70;
      if (((
         x69 = del←v9712,  *(float*)&x69
         ) == (
         x70 = (*  (ptr) &fc24 ),  *(float*)&x70
         ))) {
SOURCE(3923, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(3930, 49)
   {
      word x71;
      word x72;
      word x73;
      word x74;
      word x75;
      *(float*)&a←v9600 = (((
         x71 = dpts←v9572.f4,  *(float*)&x71
         ) * (
         x72 = dpts←v9572.f3,  *(float*)&x72
         )) - ((
         x73 = dpts←v9572.f6,  *(float*)&x73
         ) * (
         x74 = dpts←v9572.f1,  *(float*)&x74
         ))) / (
         x75 = del←v9712,  *(float*)&x75
         );
      };
SOURCE(3981, 49)
   {
      word x76;
      word x77;
      word x78;
      word x79;
      word x80;
      *(float*)&b←v9628 = (((
         x76 = dpts←v9572.f0,  *(float*)&x76
         ) * (
         x77 = dpts←v9572.f6,  *(float*)&x77
         )) - ((
         x78 = dpts←v9572.f2,  *(float*)&x78
         ) * (
         x79 = dpts←v9572.f4,  *(float*)&x79
         ))) / (
         x80 = del←v9712,  *(float*)&x80
         );
      };
SOURCE(4032, 49)
   {
      word x81;
      word x82;
      word x83;
      word x84;
      word x85;
      *(float*)&d←v9656 = (((
         x81 = dpts←v9572.f5,  *(float*)&x81
         ) * (
         x82 = dpts←v9572.f3,  *(float*)&x82
         )) - ((
         x83 = dpts←v9572.f7,  *(float*)&x83
         ) * (
         x84 = dpts←v9572.f1,  *(float*)&x84
         ))) / (
         x85 = del←v9712,  *(float*)&x85
         );
      };
SOURCE(4083, 49)
   {
      word x86;
      word x87;
      word x88;
      word x89;
      word x90;
      *(float*)&e←v9684 = (((
         x86 = dpts←v9572.f0,  *(float*)&x86
         ) * (
         x87 = dpts←v9572.f7,  *(float*)&x87
         )) - ((
         x88 = dpts←v9572.f2,  *(float*)&x88
         ) * (
         x89 = dpts←v9572.f5,  *(float*)&x89
         ))) / (
         x90 = del←v9712,  *(float*)&x90
         );
      };
SOURCE(4134, 71)
   {
      word pd91;
      pd91 = (* (( (ptr) (* (( (ptr) gf←c19816)+64)/* var←c18280 */  ))+4) );
      xform←v9740 = (word) ( *( (fPt) ((*  (ptr) pd91 ))))(a←v9600, b←v9628, (*  (ptr) &fc24 ), d←v9656, e←v9684, (*  (ptr) &fc24 ), pd91)
      ;
      };
SOURCE(4207, 77)
   {
      W2 var←c18600;
      var←c18600.f0 = (* (( (ptr) &pts←v5648)+6) );
      var←c18600.f1 = (* (( (ptr) &pts←v5648)+7) );
      {
         word pd92;
         pd92 = (* (( (ptr) (* (( (ptr) gf←c19816)+64)/* var←c18280 */  ))+22) );
         xform←v9740 = (word) ( *( (fPt) ((*  (ptr) pd92 ))))(xform←v9740, var←c18600, pd92);
         };
      };
SOURCE(4286, 78)
   {
      W2 var←c18632;
      {
         word x93;
         *(float*)&var←c18632.f0 =  - (
            x93 = (*  (ptr) &pts←v5648 ),  *(float*)&x93
            );
         };
      {
         word x94;
         *(float*)&var←c18632.f1 =  - (
            x94 = (* (( (ptr) &pts←v5648)+1) ),  *(float*)&x94
            );
         };
      {
         word pd95;
         pd95 = (* (( (ptr) (* (( (ptr) gf←c19816)+64)/* var←c18280 */  ))+18) );
         xform←v9740 = (word) ( *( (fPt) ((*  (ptr) pd95 ))))(xform←v9740, var←c18632, pd95);
         };
      };
SOURCE(4366, 13)
   return(xform←v9740);
   }

static word FourPoints←P900(pts←v5788)
   W8 pts←v5788;
   {
   register ptr gf←c19848 =  (ptr) &globalframe;
   word transform←v5868;
   word xform←v9820 = 0;
   word a←v9848;
   word b←v9876;
   word d←v9904;
   word e←v9932;
   word x1←v9960;
   word x2←v9988;
   word y1←v10016;
   word y2←v10044;
   word del←v10072;
   /* FourPoints: */ 
SOURCE(4385, 645)
SOURCE(4385, 645)
   transform←v5868 = 0;
SOURCE(4556, 28)
   {
      word x96;
      word x97;
      *(float*)&x1←v9960 = (
         x96 = pts←v5788.f2,  *(float*)&x96
         ) - (
         x97 = pts←v5788.f0,  *(float*)&x97
         );
      };
SOURCE(4586, 28)
   {
      word x98;
      word x99;
      *(float*)&x2←v9988 = (
         x98 = pts←v5788.f6,  *(float*)&x98
         ) - (
         x99 = pts←v5788.f4,  *(float*)&x99
         );
      };
SOURCE(4616, 28)
   {
      word x100;
      word x101;
      *(float*)&y1←v10016 = (
         x100 = pts←v5788.f3,  *(float*)&x100
         ) - (
         x101 = pts←v5788.f1,  *(float*)&x101
         );
      };
SOURCE(4646, 28)
   {
      word x102;
      word x103;
      *(float*)&y2←v10044 = (
         x102 = pts←v5788.f7,  *(float*)&x102
         ) - (
         x103 = pts←v5788.f5,  *(float*)&x103
         );
      };
SOURCE(4676, 23)
   {
      word x104;
      word x105;
      word x106;
      word x107;
      *(float*)&del←v10072 = ((
         x104 = x1←v9960,  *(float*)&x104
         ) * (
         x105 = x1←v9960,  *(float*)&x105
         )) + ((
         x106 = y1←v10016,  *(float*)&x106
         ) * (
         x107 = y1←v10016,  *(float*)&x107
         ));
      };
SOURCE(4701, 14)
   {
      word x108;
      word x109;
      if (((
         x108 = del←v10072,  *(float*)&x108
         ) == (
         x109 = (*  (ptr) &fc24 ),  *(float*)&x109
         ))) {
SOURCE(4715, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(4722, 21)
   {
      word x110;
      word x111;
      word x112;
      word x113;
      word x114;
      *(float*)&a←v9848 = (((
         x110 = x1←v9960,  *(float*)&x110
         ) * (
         x111 = x2←v9988,  *(float*)&x111
         )) + ((
         x112 = y1←v10016,  *(float*)&x112
         ) * (
         x113 = y2←v10044,  *(float*)&x113
         ))) / (
         x114 = del←v10072,  *(float*)&x114
         );
      };
SOURCE(4745, 5)
   e←v9932 = a←v9848;
SOURCE(4752, 21)
   {
      word x115;
      word x116;
      word x117;
      word x118;
      word x119;
      *(float*)&d←v9904 = (((
         x115 = x1←v9960,  *(float*)&x115
         ) * (
         x116 = y2←v10044,  *(float*)&x116
         )) - ((
         x117 = y1←v10016,  *(float*)&x117
         ) * (
         x118 = x2←v9988,  *(float*)&x118
         ))) / (
         x119 = del←v10072,  *(float*)&x119
         );
      };
SOURCE(4775, 7)
   {
      word x120;
      *(float*)&b←v9876 =  - (
         x120 = d←v9904,  *(float*)&x120
         );
      };
SOURCE(4784, 71)
   {
      word pd121;
      pd121 = (* (( (ptr) (* (( (ptr) gf←c19848)+64)/* var←c18280 */  ))+4) );
      xform←v9820 = (word) ( *( (fPt) ((*  (ptr) pd121 ))))(a←v9848, b←v9876, (*  (ptr) &fc24 ), d←v9904, e←v9932, (*  (ptr) &fc24 ), pd121)
      ;
      };
SOURCE(4857, 77)
   {
      W2 var←c18664;
      var←c18664.f0 = pts←v5788.f4;
      var←c18664.f1 = pts←v5788.f5;
      {
         word pd122;
         pd122 = (* (( (ptr) (* (( (ptr) gf←c19848)+64)/* var←c18280 */  ))+22) );
         xform←v9820 = (word) ( *( (fPt) ((*  (ptr) pd122 ))))(xform←v9820, var←c18664, pd122);
         };
      };
SOURCE(4936, 78)
   {
      W2 var←c18696;
      {
         word x123;
         *(float*)&var←c18696.f0 =  - (
            x123 = pts←v5788.f0,  *(float*)&x123
            );
         };
      {
         word x124;
         *(float*)&var←c18696.f1 =  - (
            x124 = pts←v5788.f1,  *(float*)&x124
            );
         };
      {
         word pd125;
         pd125 = (* (( (ptr) (* (( (ptr) gf←c19848)+64)/* var←c18280 */  ))+18) );
         xform←v9820 = (word) ( *( (fPt) ((*  (ptr) pd125 ))))(xform←v9820, var←c18696, pd125);
         };
      };
SOURCE(5016, 14)
   return(xform←v9820);
   }

static void StartSliceList←P960(formal←c0130)
   word formal←c0130;
   {
   word entityList←v5928;
   word ptr←v5956;
   /* StartSliceList: */ 
SOURCE(5033, 98)
SOURCE(5033, 98)
   entityList←v5928 = 0;
SOURCE(5033, 98)
   ptr←v5956 = 0;
SOURCE(5109, 22)
   entityList←v5928 = 0;
   ptr←v5956 = 0;
   /* removed tail goto */ 
   (*  (ptr) formal←c0130 ) = entityList←v5928;
   (* (( (ptr) formal←c0130)+1) ) = ptr←v5956;
   return;
   }

static void AddSlice←P1020(formal←c0139, entity←v6100, entityList←v6128, ptr←v6156)
   word formal←c0139;
   word entity←v6100;
   word entityList←v6128;
   word ptr←v6156;
   {
   register ptr gf←c19880 =  (ptr) &globalframe;
   word newList←v6284;
   word newPtr←v6312;
   /* AddSlice: */ 
SOURCE(5137, 295)
SOURCE(5137, 295)
   newList←v6284 = 0;
SOURCE(5137, 295)
   newPtr←v6312 = 0;
SOURCE(5252, 180)
   if ((ptr←v6156 == 0)) {
SOURCE(5272, 29)
      if ((entityList←v6128 != 0)) {
SOURCE(5301, 5)
         (void) XR←RaiseUnnamedError();
         };
SOURCE(5308, 36)
      {
         word var←c18728;
         {
            word var←c18760;
            var←c18760 = XR←NewObject(8, (* (( (ptr) gf←c19880)+4) ));
            (*  (ptr) var←c18760 ) = entity←v6100;
            var←c18728 = var←c18760;
            };
         newList←v6284 = var←c18728;
         newPtr←v6312 = var←c18728;
         };
SOURCE(5346, 6)
      goto lab←L100002;
      }
   else {
SOURCE(5363, 20)
      newList←v6284 = entityList←v6128;
SOURCE(5385, 28)
      {
         word var←c18792;
         var←c18792 = XR←NewObject(8, (* (( (ptr) gf←c19880)+4) ));
         (*  (ptr) var←c18792 ) = entity←v6100;
         (* (( (ptr) ptr←v6156)+1) ) = var←c18792;
         };
SOURCE(5415, 17)
      newPtr←v6312 = (* (( (ptr) ptr←v6156)+1) );
      };
   /* removed tail goto */ 
   lab←L100002: ;
   (*  (ptr) formal←c0139 ) = newList←v6284;
   (* (( (ptr) formal←c0139)+1) ) = newPtr←v6312;
   return;
   }

static word AppendSliceList←P1080(list1←v6456, list2←v6484)
   word list1←v6456;
   word list2←v6484;
   {
   register ptr gf←c19912 =  (ptr) &globalframe;
   word result←v6612;
   word pos←v10116 = 0;
   word newCell←v10144 = 0;
   /* AppendSliceList: */ 
SOURCE(5441, 371)
SOURCE(5441, 371)
   result←v6612 = 0;
SOURCE(5580, 33)
   if ((list1←v6456 == 0)) {
SOURCE(5600, 13)
      return(list2←v6484);
      };
SOURCE(5615, 31)
   {
      word var←c18824;
      var←c18824 = XR←NewObject(8, (* (( (ptr) gf←c19912)+4) ));
      (*  (ptr) var←c18824 ) = (*  (ptr) list1←v6456 );
      result←v6612 = var←c18824;
      };
SOURCE(5648, 12)
   pos←v10116 = result←v6612;
SOURCE(5662, 122)
   {
      register word l←v10356;
      l←v10356 = (* (( (ptr) list1←v6456)+1) );
      lab←L100006: ;
      if ((l←v10356 != 0)) {
         }
      else {
         goto lab←L100003;
         };
SOURCE(5721, 28)
      {
         word var←c18856;
         var←c18856 = XR←NewObject(8, (* (( (ptr) gf←c19912)+4) ));
         (*  (ptr) var←c18856 ) = (*  (ptr) l←v10356 );
         newCell←v10144 = var←c18856;
         };
SOURCE(5751, 18)
      (* (( (ptr) pos←v10116)+1) ) = newCell←v10144;
SOURCE(5771, 13)
      pos←v10116 = newCell←v10144;
      l←v10356 = (* (( (ptr) l←v10356)+1) );
      goto lab←L100006;
      lab←L100003: ;
      };
SOURCE(5795, 17)
   (* (( (ptr) pos←v10116)+1) ) = list2←v6484;
SOURCE(5441, 371)
   return(result←v6612);
   }

static word DeleteSliceFromList←P1140(slice←v6756, sliceList←v6784)
   word slice←v6756;
   word sliceList←v6784;
   {
   word smallerList←v6912;
   word beforeEnt←v10484 = 0;
   word ent←v10512 = 0;
   word afterEnt←v10540 = 0;
   word found←v10568 = 0;
   /* DeleteSliceFromList: */ 
SOURCE(5818, 395)
SOURCE(5818, 395)
   smallerList←v6912 = 0;
SOURCE(5995, 75)
   {
      W4 var←c18888;
      (void) FindSliceAndNeighbors←P1200((word) &var←c18888, slice←v6756, sliceList←v6784);
      found←v10568 = var←c18888.f3;
      afterEnt←v10540 = var←c18888.f2;
      ent←v10512 = var←c18888.f1;
      beforeEnt←v10484 = var←c18888.f0;
      };
SOURCE(6072, 35)
   if ((0 == found←v10568)) {
SOURCE(6090, 17)
      return(sliceList←v6784);
      };
SOURCE(6109, 104)
   if ((beforeEnt←v10484 == 0)) {
SOURCE(6133, 28)
      smallerList←v6912 = afterEnt←v10540;
      }
   else {
SOURCE(6163, 25)
      (* (( (ptr) beforeEnt←v10484)+1) ) = afterEnt←v10540;
SOURCE(6190, 23)
      smallerList←v6912 = sliceList←v6784;
      };
SOURCE(5818, 395)
   return(smallerList←v6912);
   }

static void FindSliceAndNeighbors←P1200(formal←c0165, slice←v7056, sliceList←v7084)
   word formal←c0165;
   word slice←v7056;
   word sliceList←v7084;
   {
   word beforeEnt←v7212;
   word ent←v7240;
   word afterEnt←v7268;
   word found←v7296;
   word lastE←v10696 = 0;
   word eList←v10724;
   /* FindSliceAndNeighbors: */ 
SOURCE(6222, 427)
SOURCE(6222, 427)
   beforeEnt←v7212 = 0;
SOURCE(6222, 427)
   ent←v7240 = 0;
SOURCE(6222, 427)
   afterEnt←v7268 = 0;
SOURCE(6222, 427)
   found←v7296 = 0;
SOURCE(6401, 7)
   eList←v10724 = sliceList←v7084;
SOURCE(6435, 48)
   if ((eList←v10724 == 0)) {
SOURCE(6455, 28)
      beforeEnt←v7212 = 0;
      ent←v7240 = 0;
      afterEnt←v7268 = 0;
      found←v7296 = 0;
      goto lab←L100007;
      };
SOURCE(6485, 164)
   lab←L100010: ;
   if ((eList←v10724 != 0)) {
      }
   else {
      goto lab←L100008;
      };
SOURCE(6506, 105)
   if (((*  (ptr) eList←v10724 ) == slice←v7056)) {
SOURCE(6536, 17)
      beforeEnt←v7212 = lastE←v10696;
SOURCE(6555, 11)
      ent←v7240 = eList←v10724;
SOURCE(6568, 21)
      afterEnt←v7268 = (* (( (ptr) eList←v10724)+1) );
SOURCE(6591, 12)
      found←v7296 = 1;
SOURCE(6605, 6)
      goto lab←L100007;
      };
SOURCE(6616, 13)
   lastE←v10696 = eList←v10724;
SOURCE(6631, 18)
   eList←v10724 = (* (( (ptr) eList←v10724)+1) );
   goto lab←L100010;
   lab←L100008: ;
   /* removed tail goto */ 
   lab←L100007: ;
   (*  (ptr) formal←c0165 ) = beforeEnt←v7212;
   (* (( (ptr) formal←c0165)+1) ) = ent←v7240;
   (* (( (ptr) formal←c0165)+2) ) = afterEnt←v7268;
   (* (( (ptr) formal←c0165)+3) ) = found←v7296;
   return;
   }

static word CopySliceList←P1260(sliceList←v7440)
   word sliceList←v7440;
   {
   register ptr gf←c19944 =  (ptr) &globalframe;
   word copyList←v7568;
   word z←v10936 = 0;
   /* CopySliceList: */ 
SOURCE(6664, 297)
SOURCE(6664, 297)
   copyList←v7568 = 0;
SOURCE(6780, 35)
   if ((sliceList←v7440 == 0)) {
SOURCE(6804, 11)
      return(0);
      };
SOURCE(6817, 37)
   {
      word var←c18920;
      var←c18920 = XR←NewObject(8, (* (( (ptr) gf←c19944)+4) ));
      (*  (ptr) var←c18920 ) = (*  (ptr) sliceList←v7440 );
      copyList←v7568 = var←c18920;
      };
SOURCE(6856, 12)
   z←v10936 = copyList←v7568;
SOURCE(6870, 91)
   lab←L100013: ;
   sliceList←v7440 = (* (( (ptr) sliceList←v7440)+1) );
   if ((sliceList←v7440 != 0)) {
      }
   else {
      goto lab←L100011;
      };
SOURCE(6914, 35)
   {
      word var←c18952;
      var←c18952 = XR←NewObject(8, (* (( (ptr) gf←c19944)+4) ));
      (*  (ptr) var←c18952 ) = (*  (ptr) sliceList←v7440 );
      (* (( (ptr) z←v10936)+1) ) = var←c18952;
      };
SOURCE(6951, 10)
   z←v10936 = (* (( (ptr) z←v10936)+1) );
   goto lab←L100013;
   lab←L100011: ;
SOURCE(6664, 297)
   return(copyList←v7568);
   }

static word SortSliceList←P1320(list←v7712, formal←c0246)
   word list←v7712;
   word formal←c0246;
   {
   W7 var←c19976;
   /* declaration of compareProc←v7740 skipped */ 
   word var←c7868;
   /* declaration of var←c18984 skipped */ 
   var←c19976.f4/* compareProc←v7740 */  = formal←c0246;
   /* SortSliceList: */ 
SOURCE(7067, 956)
   {
      word tmpAddr126;
      tmpAddr126 = (word) (( (ptr) &var←c19976)+5)/* var←c18984 */ ;
      (*  (ptr) tmpAddr126 ) = ( ((word)  (fPt) InnerSort←P1728) );
      (* (( (ptr) tmpAddr126) + 1) ) = 1;
      };
SOURCE(7938, 51)
   if ((list←v7712 == 0) || ((* (( (ptr) list←v7712)+1) ) == 0)) {
SOURCE(7976, 13)
      return(list←v7712);
      };
SOURCE(7991, 32)
   {
      word var←c0241;
      W2 var←c0175;
      (void) InnerSort←P1728((word) &var←c0175, list←v7712, 32, (word) (( (bPt) &var←c19976)+20)/* var←c18984 */ );
      var←c0241 = var←c0175.f0;
      return(var←c0241);
      };
   }

static void InnerSort←P1728(formal←c0186, head←v11140, max←v11168, formal←c20008)
   word formal←c0186;
   word head←v11140;
   word max←v11168;
   word formal←c20008;
   {
   word new←v11296;
   word next←v11324;
   word mid←v11436 = 0;
   formal←c20008 = (formal←c20008 - 20);
   /* InnerSort: */ 
SOURCE(7176, 748)
SOURCE(7176, 748)
   new←v11296 = 0;
SOURCE(7176, 748)
   next←v11324 = 0;
SOURCE(7283, 10)
   new←v11296 = head←v11140;
SOURCE(7295, 15)
   mid←v11436 = (* (( (ptr) head←v11140)+1) );
SOURCE(7312, 24)
   if ((mid←v11436 == 0)) {
SOURCE(7330, 6)
      goto lab←L100014;
      };
SOURCE(7338, 15)
   next←v11324 = (* (( (ptr) mid←v11436)+1) );
SOURCE(7355, 91)
   {
      word pd127;
      pd127 = (* (( (ptr) formal←c20008)+4) );
      if (((word) ( *( (fPt) ((*  (ptr) pd127 ))))((*  (ptr) new←v11296 ), (*  (ptr) mid←v11436 ), pd127) == 2)) {
SOURCE(7409, 14)
         (* (( (ptr) mid←v11436)+1) ) = new←v11296;
SOURCE(7425, 9)
         new←v11296 = mid←v11436;
SOURCE(7436, 10)
         mid←v11436 = head←v11140;
         };
      };
SOURCE(7451, 14)
   (* (( (ptr) mid←v11436)+1) ) = 0;
SOURCE(7467, 25)
   if ((next←v11324 == 0)) {
SOURCE(7486, 6)
      goto lab←L100014;
      };
SOURCE(7495, 10)
   mid←v11436 = next←v11324;
SOURCE(7507, 16)
   next←v11324 = (* (( (ptr) next←v11324)+1) );
SOURCE(7525, 182)
   if ((next←v11324 != 0)) {
SOURCE(7544, 165)
      {
         word temp←v11564;
SOURCE(7546, 6)
         temp←v11564 = next←v11324;
SOURCE(7574, 16)
         next←v11324 = (* (( (ptr) temp←v11564)+1) );
SOURCE(7592, 15)
         (* (( (ptr) temp←v11564)+1) ) = 0;
SOURCE(7609, 98)
         {
            word pd128;
            pd128 = (* (( (ptr) formal←c20008)+4) );
            if (((word) ( *( (fPt) ((*  (ptr) pd128 ))))((*  (ptr) mid←v11436 ), (*  (ptr) temp←v11564 ), pd128) == 2)) {
SOURCE(7664, 14)
               (* (( (ptr) mid←v11436)+1) ) = 0;
SOURCE(7680, 15)
               (* (( (ptr) temp←v11564)+1) ) = mid←v11436;
SOURCE(7697, 10)
               mid←v11436 = temp←v11564;
               };
            };
         };
      };
SOURCE(7713, 43)
   new←v11296 = (word) SliceListMerge←P1500(new←v11296, mid←v11436, (* (( (ptr) formal←c20008)+4) ));
SOURCE(7758, 25)
   if ((next←v11324 == 0)) {
SOURCE(7777, 6)
      goto lab←L100014;
      };
SOURCE(7786, 138)
   {
      register word depth←v11692 = 2;
      register word noName←c19048;
      noName←c19048 = max←v11168;
      if ((depth←v11692 >= noName←c19048)) {
         goto lab←L100015;
         };
      lab←L100018: ;
SOURCE(7816, 36)
      {
         W2 var←c19080;
         (void) InnerSort←P1728((word) &var←c19080, next←v11324, depth←v11692, (word) (( (bPt) formal←c20008)+20));
         next←v11324 = var←c19080.f1;
         mid←v11436 = var←c19080.f0;
         };
SOURCE(7854, 43)
      new←v11296 = (word) SliceListMerge←P1500(new←v11296, mid←v11436, (* (( (ptr) formal←c20008)+4) ));
SOURCE(7899, 25)
      if ((next←v11324 == 0)) {
SOURCE(7918, 6)
         goto lab←L100014;
         };
      depth←v11692 = (depth←v11692 + 1);
      if ((depth←v11692 < noName←c19048)) {
         goto lab←L100018;
         };
      lab←L100015: ;
      };
   /* removed tail goto */ 
   lab←L100014: ;
   (*  (ptr) formal←c0186 ) = new←v11296;
   (* (( (ptr) formal←c0186)+1) ) = next←v11324;
   return;
   }

static word SortSliceListByPriority←P1380(list←v8012)
   word list←v8012;
   {
   W6 var←c20040;
   word var←c8140;
   /* declaration of var←c19112 skipped */ 
   /* SortSliceListByPriority: */ 
SOURCE(8029, 304)
   {
      word tmpAddr129;
      tmpAddr129 = (word) (( (ptr) &var←c20040)+4)/* var←c19112 */ ;
      (*  (ptr) tmpAddr129 ) = ( ((word)  (fPt) CompareProc←P1884) );
      (* (( (ptr) tmpAddr129) + 1) ) = 1;
      };
SOURCE(8293, 40)
   return((word) SortSliceList←P1320(list←v8012, (word) (( (bPt) &var←c20040)+16)/* var←c19112 */ ));
   }

static word CompareProc←P1884(ref1←v16584, ref2←v16612, formal←c20072)
   word ref1←v16584;
   word ref2←v16612;
   word formal←c20072;
   {
   word var←c16656;
   word priority1←v11780;
   word priority2←v11808;
   formal←c20072 = (formal←c20072 - 16);
   /* CompareProc: */ 
SOURCE(8116, 172)
SOURCE(8187, 25)
   priority1←v11780 = (* (( (ptr) ref1←v16584)+19) );
SOURCE(8214, 25)
   priority2←v11808 = (* (( (ptr) ref2←v16612)+19) );
SOURCE(8241, 47)
   if (( (int)priority1←v11780 ==  (int)priority2←v11808)) {
      return(1);
      }
   else {
      if (( (int)priority1←v11780 >  (int)priority2←v11808)) {
         return(2);
         }
      else {
         return(0);
         };
      };
   }

static word LengthSliceList←P1440(sliceList←v8284)
   word sliceList←v8284;
   {
   word count←v8412;
   /* LengthSliceList: */ 
SOURCE(8339, 169)
SOURCE(8413, 9)
   count←v8412 = 0;
SOURCE(8424, 84)
   {
      register word list←v11852;
      list←v11852 = sliceList←v8284;
      lab←L100022: ;
      if ((list←v11852 != 0)) {
         }
      else {
         goto lab←L100019;
         };
SOURCE(8491, 17)
      count←v8412 = (count←v8412 + 1);
      list←v11852 = (* (( (ptr) list←v11852)+1) );
      goto lab←L100022;
      lab←L100019: ;
      };
SOURCE(8339, 169)
   return(count←v8412);
   }

static word SliceListMerge←P1500(a←v8472, b←v8500, compare←v8528)
   word a←v8472;
   word b←v8500;
   word compare←v8528;
   {
   word c←v8656;
   word aPtr←v11980 = 0;
   word bPtr←v12008 = 0;
   word cPtr←v12036 = 0;
   /* SliceListMerge: */ 
SOURCE(8523, 584)
SOURCE(8523, 584)
   c←v8656 = 0;
SOURCE(8673, 8)
   aPtr←v11980 = a←v8472;
SOURCE(8683, 8)
   bPtr←v12008 = b←v8500;
SOURCE(8693, 414)
   lab←L100025: ;
SOURCE(8696, 84)
   if ((aPtr←v11980 == 0)) {
SOURCE(8717, 55)
      if ((c←v8656 == 0)) {
SOURCE(8734, 15)
         c←v8656 = bPtr←v12008;
         cPtr←v12036 = bPtr←v12008;
         }
      else {
SOURCE(8756, 16)
         (* (( (ptr) cPtr←v12036)+1) ) = bPtr←v12008;
         };
SOURCE(8774, 6)
      return(c←v8656);
      };
SOURCE(8785, 84)
   if ((bPtr←v12008 == 0)) {
SOURCE(8806, 55)
      if ((c←v8656 == 0)) {
SOURCE(8823, 15)
         c←v8656 = aPtr←v11980;
         cPtr←v12036 = aPtr←v11980;
         }
      else {
SOURCE(8845, 16)
         (* (( (ptr) cPtr←v12036)+1) ) = aPtr←v11980;
         };
SOURCE(8863, 6)
      return(c←v8656);
      };
SOURCE(8874, 233)
   {
      word var←c19240;
      var←c19240 = (word) ( *( (fPt) ((*  (ptr) compare←v8528 ))))((*  (ptr) aPtr←v11980 ), (*  (ptr) bPtr←v12008 ), compare←v8528)
      ;
      switch (var←c19240) {
         case 0: case 1: 
SOURCE(8935, 46)
            if ((c←v8656 == 0)) {
SOURCE(8951, 14)
               c←v8656 = aPtr←v11980;
               }
            else {
SOURCE(8965, 16)
               (* (( (ptr) cPtr←v12036)+1) ) = aPtr←v11980;
               };
SOURCE(8983, 11)
            cPtr←v12036 = aPtr←v11980;
SOURCE(8996, 16)
            aPtr←v11980 = (* (( (ptr) aPtr←v11980)+1) );
            break;
         case 2: 
SOURCE(9030, 46)
            if ((c←v8656 == 0)) {
SOURCE(9046, 14)
               c←v8656 = bPtr←v12008;
               }
            else {
SOURCE(9060, 16)
               (* (( (ptr) cPtr←v12036)+1) ) = bPtr←v12008;
               };
SOURCE(9078, 11)
            cPtr←v12036 = bPtr←v12008;
SOURCE(9091, 16)
            bPtr←v12008 = (* (( (ptr) bPtr←v12008)+1) );
            break;
         default: 
SOURCE(9124, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   goto lab←L100025;
   }

static void StartTrajList←P1560(formal←c0210)
   word formal←c0210;
   {
   word entityList←v8800;
   word ptr←v8828;
   /* StartTrajList: */ 
SOURCE(9144, 96)
SOURCE(9144, 96)
   entityList←v8800 = 0;
SOURCE(9144, 96)
   ptr←v8828 = 0;
SOURCE(9218, 22)
   entityList←v8800 = 0;
   ptr←v8828 = 0;
   /* removed tail goto */ 
   (*  (ptr) formal←c0210 ) = entityList←v8800;
   (* (( (ptr) formal←c0210)+1) ) = ptr←v8828;
   return;
   }

static void AddTraj←P1620(formal←c0219, entity←v8972, entityList←v9000, ptr←v9028)
   word formal←c0219;
   word entity←v8972;
   word entityList←v9000;
   word ptr←v9028;
   {
   register ptr gf←c20104 =  (ptr) &globalframe;
   word newList←v9156;
   word newPtr←v9184;
   /* AddTraj: */ 
SOURCE(9246, 291)
SOURCE(9246, 291)
   newList←v9156 = 0;
SOURCE(9246, 291)
   newPtr←v9184 = 0;
SOURCE(9357, 180)
   if ((ptr←v9028 == 0)) {
SOURCE(9377, 29)
      if ((entityList←v9000 != 0)) {
SOURCE(9406, 5)
         (void) XR←RaiseUnnamedError();
         };
SOURCE(9413, 36)
      {
         word var←c19272;
         {
            word var←c19304;
            var←c19304 = XR←NewObject(8, (* (( (ptr) gf←c20104)+4) ));
            (*  (ptr) var←c19304 ) = entity←v8972;
            var←c19272 = var←c19304;
            };
         newList←v9156 = var←c19272;
         newPtr←v9184 = var←c19272;
         };
SOURCE(9451, 6)
      goto lab←L100027;
      }
   else {
SOURCE(9468, 20)
      newList←v9156 = entityList←v9000;
SOURCE(9490, 28)
      {
         word var←c19336;
         var←c19336 = XR←NewObject(8, (* (( (ptr) gf←c20104)+4) ));
         (*  (ptr) var←c19336 ) = entity←v8972;
         (* (( (ptr) ptr←v9028)+1) ) = var←c19336;
         };
SOURCE(9520, 17)
      newPtr←v9184 = (* (( (ptr) ptr←v9028)+1) );
      };
   /* removed tail goto */ 
   lab←L100027: ;
   (*  (ptr) formal←c0219 ) = newList←v9156;
   (* (( (ptr) formal←c0219)+1) ) = newPtr←v9184;
   return;
   }

/* file: GGUtilityImplB, module: GGUtilityImplB, compiled at: February 5, 1993 1:53:39 pm PST */ 
extern void XR←install←GGUtilityImplB() {
   NoName←Q2052();
   }
extern void XR←run←GGUtilityImplB() { XR←Start(&globalframe); }