/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 11, 1993 8:16:29 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGSequenceImpl, module: GGSequenceImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2857756349,3865378101] GGSequenceImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef struct {word f0, f1, f2;} W3;
typedef W3 *W3Pt;
#define SOURCE(p, l) /* source p, l */
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define IOP2(op, x, y)  ( (word) ((x) op (y)) )
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc520 = 0.0;
static void NoName←Q10440();
static void GGSequenceImpl←P0();
static word CreateFromSegments←P60();
static word CreateJointToJoint←P120();
static word CreateEmpty←P180();
static word CreateComplete←P240();
static word CreateFromJoint←P300();
static word CreateFromSegment←P360();
static word CreateSimpleFromSegment←P420();
static word CreateFromControlPoint←P480();
static word Copy←P540();
static word CreateEmptySeq←P600();
static void CopyInto←P660();
static void FillInJoints←P720();
static void FillInControlPoints←P780();
static void TrimSelectedParts←P840();
static void TrimSelectedJointSegments←P900();
static word SomeSelectedJoint←P6480();
static void TrimSelectedControlPointSegments←P960();
static word SomeSelectedCP←P6588();
static void AddNonSelectedJointSegments←P1020();
static word SomeSelectedJoint←P6744();
static void AddNonSelectedControlPointSegments←P1080();
static word SomeSelectedCP←P6852();
static void AddConstrained←P1140();
static word SomeSelectedConstrainer←P7008();
static void AddNewBezier←P1200();
static void DDifference←P1260();
static void DDifferenceSeq←P1320();
static word FindPartsInList←P1380();
static word NewBitMatrixFromSeq←P1440();
static word NewBitMatrix←P1500();
static word NewBitVector←P1560();
static void SetAllBits←P1620();
static word SomeSegCPInSeq←P1680();
static word Union←P1740();
static word Difference←P1800();
static word Intersection←P1860();
static void TrajMovingParts←P1920();
static word FindRubberFromSelected←P1980();
static word Augment←P2040();
static word AugmentClosed←P2100();
static word IsObsolete←P2160();
static word IsEmpty←P2220();
static word IsComplete←P2280();
static word IsConstrained←P2340();
static word Overlap←P2400();
static word CountSegments←P2460();
static word CountJoints←P2520();
static word CountControlPoints←P2580();
static word ContainsSegment←P2640();
static word ContainsSomeSegment←P2700();
static word ContainsSegmentParts←P2760();
static word FirstSegment←P2820();
static word FirstSegNum←P2880();
static word LastSegNum←P2940();
static word ContainsJoint←P3000();
static word FirstJointNum←P3060();
static word LastJointNum←P3120();
static word LastSegAndJoint←P3180();
static word FollowingJoint←P3240();
static void UnpackOnePointSequence←P3300();
static word UnpackOneSegmentSequence←P3360();
static void UnpackSimpleSequence←P3420();
static void RunsInSequence←P3480();
static void RunsInSequenceOpen←P3540();
static void RunsInSequenceClosed←P3600();
static word ControlPointsOnly←P3660();
static word NextSequence←P3720();
static word FirstRun←P3780();
static word FirstTransitionInRun←P3840();
static word AppendToList←P3900();
static void ConsiderJoint←P3960();
static void ConsiderSegment←P4020();
static void ControlPointsTrue←P4080();
static word NATsInInterval←P4140();
static word NextNAT←P4200();
static word SegmentsInTraj←P4260();
static word WalkSegmentsInTraj←P4320();
static word WalkSegmentsInSequence←P4380();
static word CountSegmentsInSequence←P4440();
static word AddEmUp←P9852();
static void NextSegmentAndIndex←P4500();
static word SegmentsInSequence←P4560();
static word OrderedSegmentsInSequence←P4620();
static word NextSegment←P4680();
static word ControlPointsInSequence←P4740();
static void WalkControlPointsInSequence←P4800();
static void NextControlPoint←P4860();
static void NextSegNumAndCPNum←P4920();
static word JointsInSequence←P4980();
static void WalkJointPositionsInSequence←P5040();
static void WalkJointsInSequence←P5100();
static word JointsInTraj←P5160();
static word NextJoint←P5220();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\050\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\007\000"};
static struct {unsigned f; char r[4];} string3 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string4 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\160\000\000"};
static struct {unsigned f; char r[4];} string6 = {131074, "\004\011\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\174\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\012\121\313\233\300\012\365\115\261\100\230\000\000"};
static struct {unsigned f; char r[12];} string10 = {524296, "\011\000\004\000\040\000\004\001\000\000\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\012\121\313\233\300\012\365\115\261\100\214\000\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\106\354\000\000"};
static struct {unsigned f; char r[8];} string13 = {262148, "\004\200@\034\000\000\000"};
static struct {unsigned f; char r[16];} string14 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\144\000\000"};
static struct {unsigned f; char r[4];} string16 = {196611, "\004@\321"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\252\125\346\275\300\346\144\375\065\106\274\000\000"};
static struct {unsigned f; char r[48];} string18 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\247\365\203\234\300\047\265\225\046\107\050\005\004\162\145\163\164\214\216\257\300\247\365\203\234\300\047\265\225\046\107\050\261\000\000\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\261\002\056\176\300\055\321\222\125\100\200\000\000"};
static struct {unsigned f; char r[20];} string20 = {1114132, "Broken invariant.\000\000"};
static struct {unsigned f; char r[36];} string21 = {2228260, "there is no break in the sequence.\000"};
static struct {unsigned f; char r[40];} string22 = {2359336, "the first run begins with a segment.\000\000\000"};
static struct {unsigned f; char r[20];} string23 = {1048596, "Broken invariant\000\000\000"};
static struct {unsigned f; char r[8];} string24 = {458760, "Outline"};
static struct {unsigned f; char r[8];} string25 = {262152, "Traj\000\000\000"};
static struct {unsigned f; char r[8];} string26 = {393224, "Bezier\000"};
static struct {unsigned f; char r[16];} string27 = {851984, "\257\300\252\125\346\275\300\346\144\375\065\100\164\000\000"};
static struct {unsigned f; char r[8];} string28 = {458759, "\006\001@P\004@\177"};
static struct {unsigned f; char r[16];} string29 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string30 = {851984, "\257\300\301\241\007\150\300\032\111\265\237\100\150\000\000"};
static struct {unsigned f; char r[8];} string31 = {1195856741, "quence"};
static struct {unsigned f; char r[16];} string32 = {851984, "\257\300\261\002\056\176\300\055\321\222\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string33 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"};
static struct {unsigned f; char r[16];} string34 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string35 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\150\000\000"};
static struct {unsigned f; char r[16];} string36 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {
   word f0[27]; 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; word f68; word f69; 
   word f70; word f71; word f72; word f73; 
   word f74; word f75; word f76; word f77; 
   word f78; word f79; word f80; word f81; 
   word f82; word f83; word f84; word f85; 
   word f86; word f87; word f88; word f89; 
   word f90; word f91; word f92; word f93; 
   word f94; word f95; word f96; word f97; 
   word f98; word f99; word f100; word f101; 
   word f102; word f103; word f104; word f105; 
   word f106; word f107; word f108; word f109; 
   word f110; word f111; word f112; word f113; 
   word f114; word f115; word f116; word f117; 
   word f118; word f119; word f120; word f121; 
   word f122; word f123; word f124; word f125; 
   word f126; word f127; word f128; word f129; 
   word f130; word f131; word f132; word f133; 
   word f134; word f135; word f136; word f137; 
   word f138; word f139; word f140; word f141; 
   word f142; word f143; word f144; word f145; 
   word f146; word f147; word f148; word f149; 
   word f150; word f151; word f152; word f153; 
   word f154; word f155; word f156; word f157; 
   word f158; word f159; word f160; word f161; 
   word f162; word f163; word f164; word f165; 
   word f166; word f167; word f168; word f169; 
   word f170; word f171; word f172; word f173; 
   word f174; word f175; word f176; word f177; 
   word f178; word f179; word f180; word f181; 
   word f182; word f183; word f184; word f185; 
   word f186; word f187; word f188; word f189; 
   word f190; word f191; word f192; word f193; 
   word f194; word f195; word f196; word f197; 
   word f198; word f199; word f200; word f201; 
   word f202[9]; 
   } globalframe = {
   {0}, (word) NextJoint←P5220, 0, (word) JointsInTraj←P5160, 
   0, (word) WalkJointsInSequence←P5100, 0, (word) WalkJointPositionsInSequence←P5040, 
   0, (word) JointsInSequence←P4980, 0, (word) NextSegNumAndCPNum←P4920, 
   0, (word) NextControlPoint←P4860, 0, (word) WalkControlPointsInSequence←P4800, 
   0, (word) ControlPointsInSequence←P4740, 0, (word) NextSegment←P4680, 
   0, (word) OrderedSegmentsInSequence←P4620, 0, (word) SegmentsInSequence←P4560, 
   0, (word) NextSegmentAndIndex←P4500, 0, (word) CountSegmentsInSequence←P4440, 
   0, (word) WalkSegmentsInSequence←P4380, 0, (word) WalkSegmentsInTraj←P4320, 
   0, (word) SegmentsInTraj←P4260, 0, (word) NextNAT←P4200, 
   0, (word) NATsInInterval←P4140, 0, (word) ControlPointsTrue←P4080, 
   0, (word) ConsiderSegment←P4020, 0, (word) ConsiderJoint←P3960, 
   0, (word) AppendToList←P3900, 0, (word) FirstTransitionInRun←P3840, 
   0, (word) FirstRun←P3780, 0, (word) NextSequence←P3720, 
   0, (word) ControlPointsOnly←P3660, 0, (word) RunsInSequenceClosed←P3600, 
   0, (word) RunsInSequenceOpen←P3540, 0, (word) RunsInSequence←P3480, 
   0, (word) UnpackSimpleSequence←P3420, 0, (word) UnpackOneSegmentSequence←P3360, 
   0, (word) UnpackOnePointSequence←P3300, 0, (word) FollowingJoint←P3240, 
   0, (word) LastSegAndJoint←P3180, 0, (word) LastJointNum←P3120, 
   0, (word) FirstJointNum←P3060, 0, (word) ContainsJoint←P3000, 
   0, (word) LastSegNum←P2940, 0, (word) FirstSegNum←P2880, 
   0, (word) FirstSegment←P2820, 0, (word) ContainsSegmentParts←P2760, 
   0, (word) ContainsSomeSegment←P2700, 0, (word) ContainsSegment←P2640, 
   0, (word) CountControlPoints←P2580, 0, (word) CountJoints←P2520, 
   0, (word) CountSegments←P2460, 0, (word) Overlap←P2400, 
   0, (word) IsConstrained←P2340, 0, (word) IsComplete←P2280, 
   0, (word) IsEmpty←P2220, 0, (word) IsObsolete←P2160, 
   0, (word) AugmentClosed←P2100, 0, (word) Augment←P2040, 
   0, (word) FindRubberFromSelected←P1980, 0, (word) TrajMovingParts←P1920, 
   0, (word) Intersection←P1860, 0, (word) Difference←P1800, 
   0, (word) Union←P1740, 0, (word) SomeSegCPInSeq←P1680, 
   0, (word) SetAllBits←P1620, 0, (word) NewBitVector←P1560, 
   0, (word) NewBitMatrix←P1500, 0, (word) NewBitMatrixFromSeq←P1440, 
   0, (word) FindPartsInList←P1380, 0, (word) DDifferenceSeq←P1320, 
   0, (word) DDifference←P1260, 0, (word) AddNewBezier←P1200, 
   0, (word) AddConstrained←P1140, 0, (word) AddNonSelectedControlPointSegments←P1080, 
   0, (word) AddNonSelectedJointSegments←P1020, 0, (word) TrimSelectedControlPointSegments←P960, 
   0, (word) TrimSelectedJointSegments←P900, 0, (word) TrimSelectedParts←P840, 
   0, (word) FillInControlPoints←P780, 0, (word) FillInJoints←P720, 
   0, (word) CopyInto←P660, 0, (word) CreateEmptySeq←P600, 
   0, (word) Copy←P540, 0, (word) CreateFromControlPoint←P480, 
   0, (word) CreateSimpleFromSegment←P420, 0, (word) CreateFromSegment←P360, 
   0, (word) CreateFromJoint←P300, 0, (word) CreateComplete←P240, 
   0, (word) CreateEmpty←P180, 0, (word) CreateJointToJoint←P120, 
   0, (word) CreateFromSegments←P60, 0, (word) GGSequenceImpl←P0, 
   {0}
   };

static void NoName←Q10440()
   {
   register ptr gf←c01103 =  (ptr) &globalframe;
   word var←c59052;
   (* (( (ptr) gf←c01103)+5) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c01103)+6) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c01103)+9) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (* (( (ptr) gf←c01103)+10) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
   (* (( (ptr) gf←c01103)+11) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c01103)+12) ) = (word) XR←GetTypeIndexS((word) (&string11));
   (* (( (ptr) gf←c01103)+13) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string13);
   (* (( (ptr) gf←c01103)+15) ) = (word) XR←GetTypeIndex((word) &string14, 0, (word) &string4);
   (* (( (ptr) gf←c01103)+16) ) = (word) XR←GetTypeIndex((word) &string15, 0, (word) &string16);
   (* (( (ptr) gf←c01103)+17) ) = (word) XR←GetTypeIndexS((word) (&string17));
   (* (( (ptr) gf←c01103)+18) ) = (word) XR←GetTypeIndex((word) &string18, 0, (word) &string8);
   (* (( (ptr) gf←c01103)+19) ) = (word) XR←GetTypeIndex((word) &string19, 0, (word) &string4);
   (*  (ptr) (( (bPt) gf←c01103)+80) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01103)+15) ), (word) &string20);
   (*  (ptr) (( (bPt) gf←c01103)+84) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01103)+15) ), (word) &string21);
   (*  (ptr) (( (bPt) gf←c01103)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01103)+15) ), (word) &string22);
   (*  (ptr) (( (bPt) gf←c01103)+92) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01103)+15) ), (word) &string23);
   (*  (ptr) (( (bPt) gf←c01103)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01103)+6) ), (word) &string24);
   (*  (ptr) (( (bPt) gf←c01103)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01103)+6) ), (word) &string25);
   (*  (ptr) (( (bPt) gf←c01103)+104) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01103)+6) ), (word) &string26);
   (void) XR←DeclareGlobalFrame((word) "GGSequenceImpl", &globalframe, (word) XR←GetTypeIndex((word) &string27, 0, (word) &string28)
      , (word) (( (bPt) gf←c01103)+804)/* var←c43340 */ );
   var←c59052 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string29)), 25);
   (* (( (ptr) gf←c01103)+203)/* var←c43372 */  ) = var←c59052;
   var←c59052 = (word) XR←ImportInterface((word) "GGParent", (word) XR←GetTypeIndexS((word) (&string30)), 83);
   (* (( (ptr) gf←c01103)+206)/* var←c49388 */  ) = var←c59052;
   (void) XR←ImportProcS(var←c59052, 67653890);
   var←c59052 = (word) XR←ImportInterface((word) &string31, (word) XR←GetTypeIndexS((word) (&string32)), 58);
   (* (( (ptr) gf←c01103)+207)/* var←c49644 */  ) = var←c59052;
   (void) XR←ImportProcS(var←c59052, 67376641);
   (void) XR←ImportProcS(var←c59052, 67381761);
   (void) XR←ImportProcS(var←c59052, 67380225);
   var←c59052 = (word) XR←ImportInterface((word) "GGSlice", (word) XR←GetTypeIndexS((word) (&string33)), 128);
   (* (( (ptr) gf←c01103)+208)/* var←c50668 */  ) = var←c59052;
   (void) XR←ImportProcS(var←c59052, 67634178);
   var←c59052 = (word) XR←ImportInterface((word) "GGSliceOps", (word) XR←GetTypeIndexS((word) (&string34)), 73);
   (* (( (ptr) gf←c01103)+205)/* var←c49356 */  ) = var←c59052;
   (void) XR←ImportProcS(var←c59052, 67371521);
   var←c59052 = (word) XR←ImportInterface((word) "GGTraj", (word) XR←GetTypeIndexS((word) (&string35)), 55);
   (* (( (ptr) gf←c01103)+204)/* var←c43500 */  ) = var←c59052;
   (void) XR←ImportProcS(var←c59052, 134749442);
   (void) XR←ImportProcS(var←c59052, 67639810);
   (void) XR←ImportProcS(var←c59052, 67640066);
   (void) XR←ImportProcS(var←c59052, 67643138);
   (void) XR←ImportProcS(var←c59052, 67642882);
   (void) XR←ImportProcS(var←c59052, 67639554);
   (void) XR←ImportProcS(var←c59052, 67643394);
   (void) XR←ImportProcS(var←c59052, 67379713);
   (void) XR←ImportProcS(var←c59052, 67380225);
   var←c59052 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string36)), 42);
   (* (( (ptr) gf←c01103)+209)/* var←c54860 */  ) = var←c59052;
   (void) XR←ImportProcS(var←c59052, 67378689);
   var←c59052 = (word) XR←ExportInterface((word) &string31, (word) XR←GetTypeIndexS((word) (&string32)), 58);
   (* (( (ptr) gf←c01103)+210)/* var←c59084 */  ) = var←c59052;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+796)/* var←c43308 */ , 67895299, (word) "CreateFromSegments")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+788)/* var←c43276 */ , 67895555, (word) "CreateJointToJoint")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+780)/* var←c43244 */ , 67371521, (word) "CreateEmpty");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+772)/* var←c43212 */ , 67371777, (word) "CreateComplete");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+764)/* var←c43180 */ , 67634178, (word) "CreateFromJoint");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+756)/* var←c43148 */ , 67634434, (word) "CreateFromSegment")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+748)/* var←c43116 */ , 67634690, (word) "CreateSimpleFromSegment")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+740)/* var←c43084 */ , 67897091, (word) "CreateFromControlPoint")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+732)/* var←c43052 */ , 67373057, (word) "Copy");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+716)/* var←c42988 */ , 526594, (word) "CopyInto");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+708)/* var←c42956 */ , 264705, (word) "FillInJoints");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+700)/* var←c42924 */ , 264961, (word) "FillInControlPoints")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+692)/* var←c42892 */ , 527362, (word) "TrimSelectedParts");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+684)/* var←c42860 */ , 527618, (word) "TrimSelectedJointSegments")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+676)/* var←c42828 */ , 527874, (word) "TrimSelectedControlPointSegments")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+636)/* var←c42668 */ , 528130, (word) "DDifference");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+572)/* var←c42412 */ , 67637250, (word) "Union");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+564)/* var←c42380 */ , 67637506, (word) "Difference");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+556)/* var←c42348 */ , 67637762, (word) "Intersection");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+548)/* var←c42316 */ , 270537476, (word) "TrajMovingParts");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+532)/* var←c42252 */ , 67900419, (word) "Augment");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+508)/* var←c42156 */ , 67376385, (word) "IsEmpty");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+500)/* var←c42124 */ , 67376641, (word) "IsComplete");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+492)/* var←c42092 */ , 68163332, (word) "IsConstrained");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+484)/* var←c42060 */ , 67639298, (word) "Overlap");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+404)/* var←c41740 */ , 67639554, (word) "ContainsJoint");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+452)/* var←c41932 */ , 67639810, (word) "ContainsSegment");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+444)/* var←c41900 */ , 67377921, (word) "ContainsSomeSegment")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+436)/* var←c41868 */ , 67640322, (word) "ContainsSegmentParts")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+380)/* var←c41644 */ , 67640578, (word) "LastSegAndJoint");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+364)/* var←c41580 */ , 268705281, (word) "UnpackOnePointSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+356)/* var←c41548 */ , 67378945, (word) "UnpackOneSegmentSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+348)/* var←c41516 */ , 671621122, (word) "UnpackSimpleSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+340)/* var←c41484 */ , 134488321, (word) "RunsInSequence");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+308)/* var←c41356 */ , 67379713, (word) "NextSequence");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+300)/* var←c41324 */ , 67379969, (word) "FirstRun");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+236)/* var←c41068 */ , 67380225, (word) "SegmentsInTraj");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+228)/* var←c41036 */ , 67642626, (word) "WalkSegmentsInTraj")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+196)/* var←c40908 */ , 67642882, (word) "SegmentsInSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+220)/* var←c41004 */ , 67905283, (word) "WalkSegmentsInSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+212)/* var←c40972 */ , 67643394, (word) "CountSegmentsInSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+188)/* var←c40876 */ , 67643650, (word) "OrderedSegmentsInSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+180)/* var←c40844 */ , 67381761, (word) "NextSegment");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+204)/* var←c40940 */ , 134490881, (word) "NextSegmentAndIndex")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+172)/* var←c40812 */ , 67644418, (word) "ControlPointsInSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+164)/* var←c40780 */ , 797955, (word) "WalkControlPointsInSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+156)/* var←c40748 */ , 201600513, (word) "NextControlPoint")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+148)/* var←c40716 */ , 201600769, (word) "NextSegNumAndCPNum")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+140)/* var←c40684 */ , 67383553, (word) "JointsInSequence");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+124)/* var←c40620 */ , 799235, (word) "WalkJointsInSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+132)/* var←c40652 */ , 799491, (word) "WalkJointPositionsInSequence")
   ;
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+116)/* var←c40588 */ , 67384321, (word) "JointsInTraj");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+396)/* var←c41708 */ , 67384577, (word) "FirstJointNum");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+388)/* var←c41676 */ , 67646978, (word) "LastJointNum");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+420)/* var←c41804 */ , 67385089, (word) "FirstSegNum");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+412)/* var←c41772 */ , 67647490, (word) "LastSegNum");
   (void) XR←ExportProcS(var←c59052, (word) (( (bPt) gf←c01103)+108)/* var←c40556 */ , 67385601, (word) "NextJoint");
   }

static void GGSequenceImpl←P0(formal←c0102, formal←c0101)
   word formal←c0102;
   word formal←c0101;
   {
   register ptr gf←c59116 =  (ptr) &globalframe;
   /* GGSequenceImpl: */ 
SOURCE(172, 45725)
SOURCE(1987, 24)
   (* (( (ptr) gf←c59116)+4)/* Problem←v3952 */  ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c59116)+203)/* var←c43372 */  ))+28)
    ) );
   }

static word CreateFromSegments←P60(traj←v6584, startSeg←v6612, endSeg←v6640)
   word traj←v6584;
   word startSeg←v6612;
   word endSeg←v6640;
   {
   register ptr gf←c59148 =  (ptr) &globalframe;
   word seq←v6684;
   word segCount←v18576;
   word temp←v18604;
   /* CreateFromSegments: */ 
SOURCE(2049, 1201)
SOURCE(2049, 1201)
   seq←v6684 = 0;
SOURCE(2171, 61)
   if ((startSeg←v6612 >= (* (( (ptr) traj←v6584)+1) )) || (endSeg←v6640 >= (* (( (ptr) traj←v6584)+1) ))) {
SOURCE(2232, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(2239, 74)
   if ((startSeg←v6612 == endSeg←v6640)) {
SOURCE(2266, 39)
      seq←v6684 = (word) CreateFromSegment←P360(traj←v6584, startSeg←v6612);
SOURCE(2307, 6)
      return(seq←v6684);
      };
SOURCE(2316, 307)
   if (((*  (ptr) traj←v6584 ) == 2)) {
SOURCE(2343, 76)
      if ((startSeg←v6612 > endSeg←v6640)) {
SOURCE(2370, 15)
         temp←v18604 = startSeg←v6612;
SOURCE(2387, 17)
         startSeg←v6612 = endSeg←v6640;
SOURCE(2406, 13)
         endSeg←v6640 = temp←v18604;
         };
SOURCE(2422, 32)
      {
         word idx37;
         segCount←v18576 = (
            idx37 = (word) ((endSeg←v6640 - startSeg←v6612) + 1),
            SGNCK(idx37)
            );
         };
      }
   else {
SOURCE(2465, 85)
      if ((startSeg←v6612 == ((endSeg←v6640 + 1) % (* (( (ptr) traj←v6584)+1) )))) {
SOURCE(2516, 26)
         seq←v6684 = (word) CreateComplete←P240(traj←v6584);
SOURCE(2544, 6)
         return(seq←v6684);
         };
SOURCE(2553, 70)
      {
         word idx38;
         segCount←v18576 = (
            idx38 = (word) (IOP2( % ,  (int)((endSeg←v6640 - startSeg←v6612) + (* (( (ptr) traj←v6584)+1) )),  (int)(* (( (ptr) traj←v6584)+1)
                )) + 1),
            SGNCK(idx38)
            );
         };
      };
SOURCE(2628, 288)
   {
      word var←c43404;
      word var←c43436;
      word var←c43532;
      word var←c43564;
      var←c43404 = (word) NewBitVector←P1560((* ((( (ptr) traj←v6584)+1)) ));
      {
         word var←c43468;
         {
            word pd39;
            pd39 = (* (( (ptr) (* (( (ptr) gf←c59148)+204)/* var←c43500 */  ))+40) );
            var←c43468 = ((word) ( *( (fPt) ((*  (ptr) pd39 ))))(traj←v6584, pd39) + 1);
            };
         var←c43436 = (word) NewBitVector←P1560(var←c43468);
         };
      var←c43532 = (word) NewBitMatrix←P1500(traj←v6584);
      var←c43564 = XR←NewObject(24, (* (( (ptr) gf←c59148)+5) ));
      (*  (ptr) var←c43564 ) = var←c43404;
      (* (( (ptr) var←c43564)+1) ) = var←c43436;
      (* (( (ptr) var←c43564)+2) ) = var←c43532;
      (* (( (ptr) var←c43564)+3) ) = segCount←v18576;
      seq←v6684 = var←c43564;
      };
SOURCE(2918, 332)
   if ((startSeg←v6612 < endSeg←v6640)) {
SOURCE(2946, 58)
      {
         register word i←v18648;
         register word noName←c43596;
         i←v18648 = startSeg←v6612;
         noName←c43596 = endSeg←v6640;
         if ((i←v18648 > noName←c43596)) {
            goto lab←L100000;
            };
         lab←L100003: ;
SOURCE(2982, 22)
         {
            word var←c43628;
            var←c43628 = (*  (ptr) seq←v6684 );
            {
               word limit40;
               word xs41;
               xs41 = (word) (
                  limit40 = (*  (ptr) var←c43628 ),
                  BCK(i←v18648, limit40)
                  );
               (*  (bPt) ((( (bPt) var←c43628)+4) + ((word) xs41 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs41 & 7)+1));
               };
            };
         if ((i←v18648 >= noName←c43596)) {
            goto lab←L100000;
            };
         i←v18648 = (i←v18648 + 1);
         goto lab←L100003;
         lab←L100000: ;
         };
SOURCE(3015, 17)
      (void) FillInJoints←P720(seq←v6684);
SOURCE(3034, 24)
      (void) FillInControlPoints←P780(seq←v6684);
      }
   else {
SOURCE(3069, 65)
      {
         register word i←v18692;
         register word noName←c43660;
         i←v18692 = startSeg←v6612;
         noName←c43660 = (* (( (ptr) traj←v6584)+1) );
         if ((i←v18692 >= noName←c43660)) {
            goto lab←L100004;
            };
         lab←L100007: ;
SOURCE(3112, 22)
         {
            word var←c43692;
            var←c43692 = (*  (ptr) seq←v6684 );
            {
               word limit42;
               word xs43;
               xs43 = (word) (
                  limit42 = (*  (ptr) var←c43692 ),
                  BCK(i←v18692, limit42)
                  );
               (*  (bPt) ((( (bPt) var←c43692)+4) + ((word) xs43 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs43 & 7)+1));
               };
            };
         i←v18692 = (i←v18692 + 1);
         if ((i←v18692 < noName←c43660)) {
            goto lab←L100007;
            };
         lab←L100004: ;
         };
SOURCE(3145, 51)
      {
         register word i←v18736 = 0;
         register word noName←c43724;
         noName←c43724 = endSeg←v6640;
         if ((i←v18736 > noName←c43724)) {
            goto lab←L100008;
            };
         lab←L100011: ;
SOURCE(3174, 22)
         {
            word var←c43756;
            var←c43756 = (*  (ptr) seq←v6684 );
            {
               word limit44;
               word xs45;
               xs45 = (word) (
                  limit44 = (*  (ptr) var←c43756 ),
                  BCK(i←v18736, limit44)
                  );
               (*  (bPt) ((( (bPt) var←c43756)+4) + ((word) xs45 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs45 & 7)+1));
               };
            };
         if ((i←v18736 >= noName←c43724)) {
            goto lab←L100008;
            };
         i←v18736 = (i←v18736 + 1);
         goto lab←L100011;
         lab←L100008: ;
         };
SOURCE(3207, 17)
      (void) FillInJoints←P720(seq←v6684);
SOURCE(3226, 24)
      (void) FillInControlPoints←P780(seq←v6684);
      };
SOURCE(2049, 1201)
   return(seq←v6684);
   }

static word CreateJointToJoint←P120(traj←v6744, startJoint←v6772, endJoint←v6800)
   word traj←v6744;
   word startJoint←v6772;
   word endJoint←v6800;
   {
   register ptr gf←c59180 =  (ptr) &globalframe;
   word seq←v6844;
   word temp←v18780;
   word hiJoint←v18808;
   /* CreateJointToJoint: */ 
SOURCE(3259, 1450)
SOURCE(3259, 1450)
   seq←v6844 = 0;
SOURCE(3384, 34)
   {
      word pd46;
      pd46 = (* (( (ptr) (* (( (ptr) gf←c59180)+204)/* var←c43500 */  ))+40) );
      hiJoint←v18808 = (word) ( *( (fPt) ((*  (ptr) pd46 ))))(traj←v6744, pd46);
      };
SOURCE(3420, 103)
   if ( (  ( ((*  (ptr) traj←v6744 ) == 2) ? (startJoint←v6772 == 0) : 0 )  ? (endJoint←v6800 == hiJoint←v18808) : 0 ) ) {
SOURCE(3489, 26)
      seq←v6844 = (word) CreateComplete←P240(traj←v6744);
SOURCE(3517, 6)
      return(seq←v6844);
      };
SOURCE(3526, 1154)
   if (((*  (ptr) traj←v6744 ) == 2) || (startJoint←v6772 < endJoint←v6800)) {
SOURCE(3578, 88)
      if ((startJoint←v6772 > endJoint←v6800)) {
SOURCE(3609, 17)
         temp←v18780 = startJoint←v6772;
SOURCE(3628, 21)
         startJoint←v6772 = endJoint←v6800;
SOURCE(3651, 15)
         endJoint←v6800 = temp←v18780;
         };
SOURCE(3669, 45)
      if ((endJoint←v6800 > hiJoint←v18808)) {
SOURCE(3714, 5)
         (void) XR←RaiseUnnamedError();
         };
SOURCE(3721, 267)
      {
         word var←c43788;
         word var←c43820;
         word var←c43852;
         word var←c43884;
         var←c43788 = (word) NewBitVector←P1560((* ((( (ptr) traj←v6744)+1)) ));
         var←c43820 = (word) NewBitVector←P1560((hiJoint←v18808 + 1));
         var←c43852 = (word) NewBitMatrix←P1500(traj←v6744);
         var←c43884 = XR←NewObject(24, (* (( (ptr) gf←c59180)+5) ));
         (*  (ptr) var←c43884 ) = var←c43788;
         (* (( (ptr) var←c43884)+1) ) = var←c43820;
         (* (( (ptr) var←c43884)+2) ) = var←c43852;
         (* (( (ptr) var←c43884)+3) ) = (endJoint←v6800 - startJoint←v6772);
         {
            word idx47;
            (* (( (ptr) var←c43884)+4) ) = (
               idx47 = (word) ((endJoint←v6800 - startJoint←v6772) + 1),
               SGNCK(idx47)
               );
            };
         seq←v6844 = var←c43884;
         };
SOURCE(3990, 84)
      {
         register word i←v18852;
         register word noName←c43916;
         i←v18852 = startJoint←v6772;
         noName←c43916 = endJoint←v6800;
         if ((i←v18852 >= noName←c43916)) {
            goto lab←L100012;
            };
         lab←L100015: ;
SOURCE(4030, 22)
         {
            word var←c43948;
            var←c43948 = (*  (ptr) seq←v6844 );
            {
               word limit48;
               word xs49;
               xs49 = (word) (
                  limit48 = (*  (ptr) var←c43948 ),
                  BCK(i←v18852, limit48)
                  );
               (*  (bPt) ((( (bPt) var←c43948)+4) + ((word) xs49 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs49 & 7)+1));
               };
            };
SOURCE(4054, 20)
         {
            word var←c43980;
            var←c43980 = (* (( (ptr) seq←v6844)+1) );
            {
               word limit50;
               word xs51;
               xs51 = (word) (
                  limit50 = (*  (ptr) var←c43980 ),
                  BCK(i←v18852, limit50)
                  );
               (*  (bPt) ((( (bPt) var←c43980)+4) + ((word) xs51 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs51 & 7)+1));
               };
            };
         i←v18852 = (i←v18852 + 1);
         if ((i←v18852 < noName←c43916)) {
            goto lab←L100015;
            };
         lab←L100012: ;
         };
SOURCE(4085, 27)
      {
         word var←c44012;
         var←c44012 = (* (( (ptr) seq←v6844)+1) );
         {
            word limit52;
            word xs53;
            xs53 = (word) (
               limit52 = (*  (ptr) var←c44012 ),
               BCK(endJoint←v6800, limit52)
               );
            (*  (bPt) ((( (bPt) var←c44012)+4) + ((word) xs53 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs53 & 7)+1));
            };
         };
      }
   else {
SOURCE(4123, 78)
      if ((startJoint←v6772 == endJoint←v6800)) {
SOURCE(4154, 39)
         seq←v6844 = (word) CreateFromJoint←P300(traj←v6744, startJoint←v6772);
SOURCE(4195, 6)
         return(seq←v6844);
         };
SOURCE(4204, 261)
      {
         word var←c44044;
         word var←c44076;
         word var←c44108;
         word var←c44140;
         var←c44044 = (word) NewBitVector←P1560((* ((( (ptr) traj←v6744)+1)) ));
         var←c44076 = (word) NewBitVector←P1560((hiJoint←v18808 + 1));
         var←c44108 = (word) NewBitMatrix←P1500(traj←v6744);
         var←c44140 = XR←NewObject(24, (* (( (ptr) gf←c59180)+5) ));
         (*  (ptr) var←c44140 ) = var←c44044;
         (* (( (ptr) var←c44140)+1) ) = var←c44076;
         (* (( (ptr) var←c44140)+2) ) = var←c44108;
         (* (( (ptr) var←c44140)+3) ) = (((* (( (ptr) traj←v6744)+1) ) - startJoint←v6772) + endJoint←v6800);
         {
            word idx54;
            (* (( (ptr) var←c44140)+4) ) = (
               idx54 = (word) ((((* (( (ptr) traj←v6744)+1) ) - startJoint←v6772) + endJoint←v6800) + 1),
               SGNCK(idx54)
               );
            };
         seq←v6844 = var←c44140;
         };
SOURCE(4467, 89)
      {
         register word i←v18896;
         register word noName←c44172;
         i←v18896 = startJoint←v6772;
         noName←c44172 = (* (( (ptr) traj←v6744)+1) );
         if ((i←v18896 >= noName←c44172)) {
            goto lab←L100016;
            };
         lab←L100019: ;
SOURCE(4512, 22)
         {
            word var←c44204;
            var←c44204 = (*  (ptr) seq←v6844 );
            {
               word limit55;
               word xs56;
               xs56 = (word) (
                  limit55 = (*  (ptr) var←c44204 ),
                  BCK(i←v18896, limit55)
                  );
               (*  (bPt) ((( (bPt) var←c44204)+4) + ((word) xs56 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs56 & 7)+1));
               };
            };
SOURCE(4536, 20)
         {
            word var←c44236;
            var←c44236 = (* (( (ptr) seq←v6844)+1) );
            {
               word limit57;
               word xs58;
               xs58 = (word) (
                  limit57 = (*  (ptr) var←c44236 ),
                  BCK(i←v18896, limit57)
                  );
               (*  (bPt) ((( (bPt) var←c44236)+4) + ((word) xs58 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs58 & 7)+1));
               };
            };
         i←v18896 = (i←v18896 + 1);
         if ((i←v18896 < noName←c44172)) {
            goto lab←L100019;
            };
         lab←L100016: ;
         };
SOURCE(4567, 75)
      {
         register word i←v18940 = 0;
         register word noName←c44268;
         noName←c44268 = endJoint←v6800;
         if ((i←v18940 >= noName←c44268)) {
            goto lab←L100020;
            };
         lab←L100023: ;
SOURCE(4598, 22)
         {
            word var←c44300;
            var←c44300 = (*  (ptr) seq←v6844 );
            {
               word limit59;
               word xs60;
               xs60 = (word) (
                  limit59 = (*  (ptr) var←c44300 ),
                  BCK(i←v18940, limit59)
                  );
               (*  (bPt) ((( (bPt) var←c44300)+4) + ((word) xs60 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs60 & 7)+1));
               };
            };
SOURCE(4622, 20)
         {
            word var←c44332;
            var←c44332 = (* (( (ptr) seq←v6844)+1) );
            {
               word limit61;
               word xs62;
               xs62 = (word) (
                  limit61 = (*  (ptr) var←c44332 ),
                  BCK(i←v18940, limit61)
                  );
               (*  (bPt) ((( (bPt) var←c44332)+4) + ((word) xs62 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs62 & 7)+1));
               };
            };
         i←v18940 = (i←v18940 + 1);
         if ((i←v18940 < noName←c44268)) {
            goto lab←L100023;
            };
         lab←L100020: ;
         };
SOURCE(4653, 27)
      {
         word var←c44364;
         var←c44364 = (* (( (ptr) seq←v6844)+1) );
         {
            word limit63;
            word xs64;
            xs64 = (word) (
               limit63 = (*  (ptr) var←c44364 ),
               BCK(endJoint←v6800, limit63)
               );
            (*  (bPt) ((( (bPt) var←c44364)+4) + ((word) xs64 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs64 & 7)+1));
            };
         };
      };
SOURCE(4685, 24)
   (void) FillInControlPoints←P780(seq←v6844);
SOURCE(3259, 1450)
   return(seq←v6844);
   }

static word CreateEmpty←P180(traj←v6904)
   word traj←v6904;
   {
   register ptr gf←c59212 =  (ptr) &globalframe;
   word seq←v6948;
   /* CreateEmpty: */ 
SOURCE(4745, 273)
SOURCE(4745, 273)
   seq←v6948 = 0;
SOURCE(4816, 202)
   {
      word var←c44396;
      word var←c44428;
      word var←c44492;
      word var←c44524;
      var←c44396 = (word) NewBitVector←P1560((* ((( (ptr) traj←v6904)+1)) ));
      {
         word var←c44460;
         {
            word pd65;
            pd65 = (* (( (ptr) (* (( (ptr) gf←c59212)+204)/* var←c43500 */  ))+40) );
            var←c44460 = ((word) ( *( (fPt) ((*  (ptr) pd65 ))))(traj←v6904, pd65) + 1);
            };
         var←c44428 = (word) NewBitVector←P1560(var←c44460);
         };
      var←c44492 = (word) NewBitMatrix←P1500(traj←v6904);
      var←c44524 = XR←NewObject(24, (* (( (ptr) gf←c59212)+5) ));
      (*  (ptr) var←c44524 ) = var←c44396;
      (* (( (ptr) var←c44524)+1) ) = var←c44428;
      (* (( (ptr) var←c44524)+2) ) = var←c44492;
      seq←v6948 = var←c44524;
      };
SOURCE(4745, 273)
   return(seq←v6948);
   }

static word CreateComplete←P240(traj←v7008)
   word traj←v7008;
   {
   register ptr gf←c59244 =  (ptr) &globalframe;
   word seq←v7052;
   word jointCount←v18984;
   /* CreateComplete: */ 
SOURCE(5024, 565)
SOURCE(5024, 565)
   seq←v7052 = 0;
SOURCE(5098, 46)
   {
      word pd66;
      pd66 = (* (( (ptr) (* (( (ptr) gf←c59244)+204)/* var←c43500 */  ))+40) );
      jointCount←v18984 = ((word) ( *( (fPt) ((*  (ptr) pd66 ))))(traj←v7008, pd66) + 1);
      };
SOURCE(5146, 237)
   {
      word var←c44556;
      word var←c44588;
      word var←c44620;
      word var←c44652;
      var←c44556 = (word) NewBitVector←P1560((* ((( (ptr) traj←v7008)+1)) ));
      var←c44588 = (word) NewBitVector←P1560(jointCount←v18984);
      var←c44620 = (word) NewBitMatrix←P1500(traj←v7008);
      var←c44652 = XR←NewObject(24, (* (( (ptr) gf←c59244)+5) ));
      (*  (ptr) var←c44652 ) = var←c44556;
      (* (( (ptr) var←c44652)+1) ) = var←c44588;
      (* (( (ptr) var←c44652)+2) ) = var←c44620;
      (* (( (ptr) var←c44652)+3) ) = (* (( (ptr) traj←v7008)+1) );
      (* (( (ptr) var←c44652)+4) ) = jointCount←v18984;
      seq←v7052 = var←c44652;
      };
SOURCE(5385, 93)
   {
      register word i←v19028 = 0;
      register word noName←c44684;
      {
         word pd67;
         pd67 = (* (( (ptr) (* (( (ptr) gf←c59244)+204)/* var←c43500 */  ))+38) );
         noName←c44684 = (word) ( *( (fPt) ((*  (ptr) pd67 ))))(traj←v7008, pd67);
         };
      if ((i←v19028 > noName←c44684)) {
         goto lab←L100024;
         };
      lab←L100027: ;
SOURCE(5434, 22)
      {
         word var←c44716;
         var←c44716 = (*  (ptr) seq←v7052 );
         {
            word limit68;
            word xs69;
            xs69 = (word) (
               limit68 = (*  (ptr) var←c44716 ),
               BCK(i←v19028, limit68)
               );
            (*  (bPt) ((( (bPt) var←c44716)+4) + ((word) xs69 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs69 & 7)+1));
            };
         };
SOURCE(5458, 20)
      {
         word var←c44748;
         var←c44748 = (* (( (ptr) seq←v7052)+1) );
         {
            word limit70;
            word xs71;
            xs71 = (word) (
               limit70 = (*  (ptr) var←c44748 ),
               BCK(i←v19028, limit70)
               );
            (*  (bPt) ((( (bPt) var←c44748)+4) + ((word) xs71 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs71 & 7)+1));
            };
         };
      if ((i←v19028 >= noName←c44684)) {
         goto lab←L100024;
         };
      i←v19028 = (i←v19028 + 1);
      goto lab←L100027;
      lab←L100024: ;
      };
SOURCE(5489, 31)
   {
      word var←c44780;
      word var←c44812;
      var←c44780 = (jointCount←v18984 - 1);
      var←c44812 = (* (( (ptr) seq←v7052)+1) );
      {
         word limit72;
         word xs73;
         xs73 = (word) (
            limit72 = (*  (ptr) var←c44812 ),
            BCK(var←c44780, limit72)
            );
         (*  (bPt) ((( (bPt) var←c44812)+4) + ((word) xs73 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs73 & 7)+1));
         };
      };
SOURCE(5565, 24)
   (void) FillInControlPoints←P780(seq←v7052);
SOURCE(5024, 565)
   return(seq←v7052);
   }

static word CreateFromJoint←P300(traj←v7112, jointNum←v7140)
   word traj←v7112;
   word jointNum←v7140;
   {
   word seq←v7184;
   /* CreateFromJoint: */ 
SOURCE(5625, 162)
SOURCE(5625, 162)
   seq←v7184 = 0;
SOURCE(5715, 23)
   seq←v7184 = (word) CreateEmpty←P180(traj←v7112);
SOURCE(5740, 27)
   {
      word var←c44844;
      var←c44844 = (* (( (ptr) seq←v7184)+1) );
      {
         word limit74;
         word xs75;
         xs75 = (word) (
            limit74 = (*  (ptr) var←c44844 ),
            BCK(jointNum←v7140, limit74)
            );
         (*  (bPt) ((( (bPt) var←c44844)+4) + ((word) xs75 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs75 & 7)+1));
         };
      };
SOURCE(5769, 18)
   (* (( (ptr) seq←v7184)+4) ) = 1;
SOURCE(5625, 162)
   return(seq←v7184);
   }

static word CreateFromSegment←P360(traj←v7244, segNum←v7272)
   word traj←v7244;
   word segNum←v7272;
   {
   word seq←v7316;
   /* CreateFromSegment: */ 
SOURCE(5793, 205)
SOURCE(5793, 205)
   seq←v7316 = 0;
SOURCE(5883, 23)
   seq←v7316 = (word) CreateEmpty←P180(traj←v7244);
SOURCE(5908, 27)
   {
      word var←c44876;
      var←c44876 = (*  (ptr) seq←v7316 );
      {
         word limit76;
         word xs77;
         xs77 = (word) (
            limit76 = (*  (ptr) var←c44876 ),
            BCK(segNum←v7272, limit76)
            );
         (*  (bPt) ((( (bPt) var←c44876)+4) + ((word) xs77 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs77 & 7)+1));
         };
      };
SOURCE(5937, 16)
   (* (( (ptr) seq←v7316)+3) ) = 1;
SOURCE(5955, 17)
   (void) FillInJoints←P720(seq←v7316);
SOURCE(5974, 24)
   (void) FillInControlPoints←P780(seq←v7316);
SOURCE(5793, 205)
   return(seq←v7316);
   }

static word CreateSimpleFromSegment←P420(traj←v7376, segNum←v7404)
   word traj←v7376;
   word segNum←v7404;
   {
   word seq←v7448;
   /* CreateSimpleFromSegment: */ 
SOURCE(6034, 166)
SOURCE(6034, 166)
   seq←v7448 = 0;
SOURCE(6130, 23)
   seq←v7448 = (word) CreateEmpty←P180(traj←v7376);
SOURCE(6155, 27)
   {
      word var←c44908;
      var←c44908 = (*  (ptr) seq←v7448 );
      {
         word limit78;
         word xs79;
         xs79 = (word) (
            limit78 = (*  (ptr) var←c44908 ),
            BCK(segNum←v7404, limit78)
            );
         (*  (bPt) ((( (bPt) var←c44908)+4) + ((word) xs79 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs79 & 7)+1));
         };
      };
SOURCE(6184, 16)
   (* (( (ptr) seq←v7448)+3) ) = 1;
SOURCE(6034, 166)
   return(seq←v7448);
   }

static word CreateFromControlPoint←P480(traj←v7508, segNum←v7536, controlPointNum←v7564)
   word traj←v7508;
   word segNum←v7536;
   word controlPointNum←v7564;
   {
   word seq←v7608;
   /* CreateFromControlPoint: */ 
SOURCE(6206, 218)
SOURCE(6206, 218)
   seq←v7608 = 0;
SOURCE(6323, 23)
   seq←v7608 = (word) CreateEmpty←P180(traj←v7508);
SOURCE(6348, 49)
   {
      word var←c44972;
      {
         word var←c44940;
         var←c44940 = (* (( (ptr) seq←v7608)+2) );
         {
            word limit80;
            var←c44972 = (* ((( (ptr) var←c44940)+1)+(
                  limit80 = (*  (ptr) var←c44940 ),
                  BCK(segNum←v7536, limit80)
                  )) );
            };
         };
      {
         word limit81;
         word xs82;
         xs82 = (word) (
            limit81 = (*  (ptr) var←c44972 ),
            BCK(controlPointNum←v7564, limit81)
            );
         (*  (bPt) ((( (bPt) var←c44972)+4) + ((word) xs82 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs82 & 7)+1));
         };
      };
SOURCE(6399, 25)
   (* (( (ptr) seq←v7608)+5) ) = 1;
SOURCE(6206, 218)
   return(seq←v7608);
   }

static word Copy←P540(seq←v7668)
   word seq←v7668;
   {
   register ptr gf←c59276 =  (ptr) &globalframe;
   word copy←v7712;
   /* Copy: */ 
SOURCE(6430, 667)
SOURCE(6430, 667)
   copy←v7712 = 0;
SOURCE(6495, 27)
   if ((seq←v7668 == 0)) {
SOURCE(6511, 11)
      return(0);
      };
SOURCE(6524, 244)
   {
      word var←c45004;
      word var←c45036;
      word var←c45068;
      word var←c45100;
      var←c45004 = (word) NewBitVector←P1560((*  (ptr) ((*  (ptr) seq←v7668 )) ));
      var←c45036 = (word) NewBitVector←P1560((*  (ptr) ((* (( (ptr) seq←v7668)+1) )) ));
      var←c45068 = (word) NewBitMatrixFromSeq←P1440(seq←v7668);
      var←c45100 = XR←NewObject(24, (* (( (ptr) gf←c59276)+5) ));
      (*  (ptr) var←c45100 ) = var←c45004;
      (* (( (ptr) var←c45100)+1) ) = var←c45036;
      (* (( (ptr) var←c45100)+2) ) = var←c45068;
      (* (( (ptr) var←c45100)+3) ) = (* (( (ptr) seq←v7668)+3) );
      (* (( (ptr) var←c45100)+4) ) = (* (( (ptr) seq←v7668)+4) );
      (* (( (ptr) var←c45100)+5) ) = (* (( (ptr) seq←v7668)+5) );
      copy←v7712 = var←c45100;
      };
SOURCE(6770, 73)
   {
      register word i←v19072 = 0;
      register word noName←c45132;
      noName←c45132 = (*  (ptr) (*  (ptr) seq←v7668 ) );
      if ((i←v19072 >= noName←c45132)) {
         goto lab←L100028;
         };
      lab←L100031: ;
SOURCE(6809, 34)
      {
         word var←c45196;
         var←c45196 = (*  (ptr) copy←v7712 );
         {
            word var←c45164;
            var←c45164 = (*  (ptr) seq←v7668 );
            {
               word limit83;
               word limit84;
               word xs85;
               word x86;
               xs85 = (word) (
                  limit84 = (*  (ptr) var←c45196 ),
                  BCK(i←v19072, limit84)
                  );
               x86 = (word) ((( (bPt) var←c45196)+4) + ((word) xs85 >> 3));
               xs85 = 8 - ((word) (xs85 & 7)+1);
               (*  (bPt) x86 ) = ((*  (bPt) x86 ) & ( ~ ((unsigned) 1 << xs85))) | (((XR←ExtractField(var←c45164, 32 + (word) (
                           limit83 = (*  (ptr) var←c45164 ),
                           BCK(i←v19072, limit83)
                           ), 1))) << xs85);
               };
            };
         };
      i←v19072 = (i←v19072 + 1);
      if ((i←v19072 < noName←c45132)) {
         goto lab←L100031;
         };
      lab←L100028: ;
      };
SOURCE(6854, 67)
   {
      register word i←v19116 = 0;
      register word noName←c45228;
      noName←c45228 = (*  (ptr) (* (( (ptr) seq←v7668)+1) ) );
      if ((i←v19116 >= noName←c45228)) {
         goto lab←L100032;
         };
      lab←L100035: ;
SOURCE(6891, 30)
      {
         word var←c45292;
         var←c45292 = (* (( (ptr) copy←v7712)+1) );
         {
            word var←c45260;
            var←c45260 = (* (( (ptr) seq←v7668)+1) );
            {
               word limit87;
               word limit88;
               word xs89;
               word x90;
               xs89 = (word) (
                  limit88 = (*  (ptr) var←c45292 ),
                  BCK(i←v19116, limit88)
                  );
               x90 = (word) ((( (bPt) var←c45292)+4) + ((word) xs89 >> 3));
               xs89 = 8 - ((word) (xs89 & 7)+1);
               (*  (bPt) x90 ) = ((*  (bPt) x90 ) & ( ~ ((unsigned) 1 << xs89))) | (((XR←ExtractField(var←c45260, 32 + (word) (
                           limit87 = (*  (ptr) var←c45260 ),
                           BCK(i←v19116, limit87)
                           ), 1))) << xs89);
               };
            };
         };
      i←v19116 = (i←v19116 + 1);
      if ((i←v19116 < noName←c45228)) {
         goto lab←L100035;
         };
      lab←L100032: ;
      };
SOURCE(6932, 165)
   {
      register word i←v19160 = 0;
      register word noName←c45324;
      noName←c45324 = (*  (ptr) (* (( (ptr) seq←v7668)+2) ) );
      if ((i←v19160 >= noName←c45324)) {
         goto lab←L100036;
         };
      lab←L100039: ;
      {
         word cpCount←v19204;
         word var←c45356;
SOURCE(6976, 39)
         {
            word limit91;
            var←c45356 = (* (( (ptr) seq←v7668)+2) );
            cpCount←v19204 = (*  (ptr) (* ((( (ptr) var←c45356)+1)+(
                  limit91 = (*  (ptr) var←c45356 ),
                  BCK(i←v19160, limit91)
                  )) ) );
            };
SOURCE(7017, 80)
         {
            register word j←v19248 = 0;
            register word noName←c45388;
            noName←c45388 = cpCount←v19204;
            if ((j←v19248 >= noName←c45388)) {
               goto lab←L100040;
               };
            lab←L100043: ;
SOURCE(7047, 50)
            {
               word var←c45516;
               {
                  word var←c45484;
                  var←c45484 = (* (( (ptr) copy←v7712)+2) );
                  {
                     word limit92;
                     var←c45516 = (* ((( (ptr) var←c45484)+1)+(
                           limit92 = (*  (ptr) var←c45484 ),
                           BCK(i←v19160, limit92)
                           )) );
                     };
                  };
               {
                  word var←c45452;
                  {
                     word var←c45420;
                     var←c45420 = (* (( (ptr) seq←v7668)+2) );
                     {
                        word limit93;
                        var←c45452 = (* ((( (ptr) var←c45420)+1)+(
/*1*/   limit93 = (*  (ptr) var←c45420 ),
/*1*/   BCK(i←v19160, limit93)
/*1*/   )) );
                        };
                     };
                  {
                     word limit94;
                     word limit95;
                     word xs96;
                     word x97;
                     xs96 = (word) (
                        limit95 = (*  (ptr) var←c45516 ),
                        BCK(j←v19248, limit95)
                        );
                     x97 = (word) ((( (bPt) var←c45516)+4) + ((word) xs96 >> 3));
                     xs96 = 8 - ((word) (xs96 & 7)+1);
                     (*  (bPt) x97 ) = ((*  (bPt) x97 ) & ( ~ ((unsigned) 1 << xs96))) | (((XR←ExtractField(var←c45452, 32 + (word) (
/*1*/      limit94 = (*  (ptr) var←c45452 ),
/*1*/      BCK(j←v19248, limit94)
/*1*/      ), 1))) << xs96);
                     };
                  };
               };
            j←v19248 = (j←v19248 + 1);
            if ((j←v19248 < noName←c45388)) {
               goto lab←L100043;
               };
            lab←L100040: ;
            };
         };
      i←v19160 = (i←v19160 + 1);
      if ((i←v19160 < noName←c45324)) {
         goto lab←L100039;
         };
      lab←L100036: ;
      };
SOURCE(6430, 667)
   return(copy←v7712);
   }

static word CreateEmptySeq←P600(seq←v7772)
   word seq←v7772;
   {
   register ptr gf←c59308 =  (ptr) &globalframe;
   word copy←v7816;
   /* CreateEmptySeq: */ 
SOURCE(7121, 305)
SOURCE(7121, 305)
   copy←v7816 = 0;
SOURCE(7197, 27)
   if ((seq←v7772 == 0)) {
SOURCE(7213, 11)
      return(0);
      };
SOURCE(7226, 200)
   {
      word var←c45548;
      word var←c45580;
      word var←c45612;
      word var←c45644;
      var←c45548 = (word) NewBitVector←P1560((*  (ptr) ((*  (ptr) seq←v7772 )) ));
      var←c45580 = (word) NewBitVector←P1560((*  (ptr) ((* (( (ptr) seq←v7772)+1) )) ));
      var←c45612 = (word) NewBitMatrixFromSeq←P1440(seq←v7772);
      var←c45644 = XR←NewObject(24, (* (( (ptr) gf←c59308)+5) ));
      (*  (ptr) var←c45644 ) = var←c45548;
      (* (( (ptr) var←c45644)+1) ) = var←c45580;
      (* (( (ptr) var←c45644)+2) ) = var←c45612;
      copy←v7816 = var←c45644;
      };
SOURCE(7121, 305)
   return(copy←v7816);
   }

static void CopyInto←P660(to←v7876, from←v7904)
   word to←v7876;
   word from←v7904;
   {
   /* CopyInto: */ 
SOURCE(7434, 482)
SOURCE(7493, 196)
   {
      register word i←v19292 = 0;
      register word noName←c45676;
      noName←c45676 = (*  (ptr) (*  (ptr) from←v7904 ) );
      if ((i←v19292 >= noName←c45676)) {
         goto lab←L100044;
         };
      lab←L100047: ;
      {
         word cpCount←v19336;
         word var←c45708;
SOURCE(7533, 40)
         {
            word limit98;
            var←c45708 = (* (( (ptr) from←v7904)+2) );
            cpCount←v19336 = (*  (ptr) (* ((( (ptr) var←c45708)+1)+(
                  limit98 = (*  (ptr) var←c45708 ),
                  BCK(i←v19292, limit98)
                  )) ) );
            };
SOURCE(7575, 33)
         {
            word var←c45772;
            var←c45772 = (*  (ptr) to←v7876 );
            {
               word var←c45740;
               var←c45740 = (*  (ptr) from←v7904 );
               {
                  word limit99;
                  word limit100;
                  word xs101;
                  word x102;
                  xs101 = (word) (
                     limit100 = (*  (ptr) var←c45772 ),
                     BCK(i←v19292, limit100)
                     );
                  x102 = (word) ((( (bPt) var←c45772)+4) + ((word) xs101 >> 3));
                  xs101 = 8 - ((word) (xs101 & 7)+1);
                  (*  (bPt) x102 ) = ((*  (bPt) x102 ) & ( ~ ((unsigned) 1 << xs101))) | (((XR←ExtractField(var←c45740, 32 + (word) (
/*1*/   limit99 = (*  (ptr) var←c45740 ),
/*1*/   BCK(i←v19292, limit99)
/*1*/   ), 1))) << xs101);
                  };
               };
            };
SOURCE(7610, 79)
         {
            register word j←v19380 = 0;
            register word noName←c45804;
            noName←c45804 = cpCount←v19336;
            if ((j←v19380 >= noName←c45804)) {
               goto lab←L100048;
               };
            lab←L100051: ;
SOURCE(7640, 49)
            {
               word var←c45932;
               {
                  word var←c45900;
                  var←c45900 = (* (( (ptr) to←v7876)+2) );
                  {
                     word limit103;
                     var←c45932 = (* ((( (ptr) var←c45900)+1)+(
                           limit103 = (*  (ptr) var←c45900 ),
                           BCK(i←v19292, limit103)
                           )) );
                     };
                  };
               {
                  word var←c45868;
                  {
                     word var←c45836;
                     var←c45836 = (* (( (ptr) from←v7904)+2) );
                     {
                        word limit104;
                        var←c45868 = (* ((( (ptr) var←c45836)+1)+(
/*1*/   limit104 = (*  (ptr) var←c45836 ),
/*1*/   BCK(i←v19292, limit104)
/*1*/   )) );
                        };
                     };
                  {
                     word limit105;
                     word limit106;
                     word xs107;
                     word x108;
                     xs107 = (word) (
                        limit106 = (*  (ptr) var←c45932 ),
                        BCK(j←v19380, limit106)
                        );
                     x108 = (word) ((( (bPt) var←c45932)+4) + ((word) xs107 >> 3));
                     xs107 = 8 - ((word) (xs107 & 7)+1);
                     (*  (bPt) x108 ) = ((*  (bPt) x108 ) & ( ~ ((unsigned) 1 << xs107))) | (((XR←ExtractField(var←c45868, 32 + (word) (
/*1*/      limit105 = (*  (ptr) var←c45868 ),
/*1*/      BCK(j←v19380, limit105)
/*1*/      ), 1))) << xs107);
                     };
                  };
               };
            j←v19380 = (j←v19380 + 1);
            if ((j←v19380 < noName←c45804)) {
               goto lab←L100051;
               };
            lab←L100048: ;
            };
         };
      i←v19292 = (i←v19292 + 1);
      if ((i←v19292 < noName←c45676)) {
         goto lab←L100047;
         };
      lab←L100044: ;
      };
SOURCE(7731, 67)
   {
      register word i←v19424 = 0;
      register word noName←c45964;
      noName←c45964 = (*  (ptr) (* (( (ptr) from←v7904)+1) ) );
      if ((i←v19424 >= noName←c45964)) {
         goto lab←L100052;
         };
      lab←L100055: ;
SOURCE(7769, 29)
      {
         word var←c46028;
         var←c46028 = (* (( (ptr) to←v7876)+1) );
         {
            word var←c45996;
            var←c45996 = (* (( (ptr) from←v7904)+1) );
            {
               word limit109;
               word limit110;
               word xs111;
               word x112;
               xs111 = (word) (
                  limit110 = (*  (ptr) var←c46028 ),
                  BCK(i←v19424, limit110)
                  );
               x112 = (word) ((( (bPt) var←c46028)+4) + ((word) xs111 >> 3));
               xs111 = 8 - ((word) (xs111 & 7)+1);
               (*  (bPt) x112 ) = ((*  (bPt) x112 ) & ( ~ ((unsigned) 1 << xs111))) | (((XR←ExtractField(var←c45996, 32 + (word) (
                           limit109 = (*  (ptr) var←c45996 ),
                           BCK(i←v19424, limit109)
                           ), 1))) << xs111);
               };
            };
         };
      i←v19424 = (i←v19424 + 1);
      if ((i←v19424 < noName←c45964)) {
         goto lab←L100055;
         };
      lab←L100052: ;
      };
SOURCE(7809, 27)
   (* (( (ptr) to←v7876)+3) ) = (* (( (ptr) from←v7904)+3) );
SOURCE(7838, 45)
   (* (( (ptr) to←v7876)+5) ) = (* (( (ptr) from←v7904)+5) );
SOURCE(7885, 31)
   (* (( (ptr) to←v7876)+4) ) = (* (( (ptr) from←v7904)+4) );
   }

static void FillInJoints←P720(seq←v7964)
   word seq←v7964;
   {
   word jointCount←v19468 = 0;
   /* FillInJoints: */ 
SOURCE(7922, 731)
SOURCE(7990, 29)
   if (((* (( (ptr) seq←v7964)+3) ) == 0)) {
SOURCE(8013, 6)
      return;
      };
SOURCE(8077, 385)
   if (((*  (ptr) (* (( (ptr) seq←v7964)+1) ) ) == (*  (ptr) (*  (ptr) seq←v7964 ) ))) {
SOURCE(8140, 131)
      {
         register word i←v19512 = 0;
         register word noName←c46060;
         word var←c46092;
         noName←c46060 = (*  (ptr) (*  (ptr) seq←v7964 ) );
         if ((i←v19512 >= noName←c46060)) {
            goto lab←L100056;
            };
         lab←L100059: ;
SOURCE(8179, 92)
         {
            word limit113;
            var←c46092 = (*  (ptr) seq←v7964 );
            if (XR←ExtractField(var←c46092, 32 + (word) (
                  limit113 = (*  (ptr) var←c46092 ),
                  BCK(i←v19512, limit113)
                  ), 1)) {
SOURCE(8204, 20)
               {
                  word var←c46124;
                  var←c46124 = (* (( (ptr) seq←v7964)+1) );
                  {
                     word limit114;
                     word xs115;
                     xs115 = (word) (
                        limit114 = (*  (ptr) var←c46124 ),
                        BCK(i←v19512, limit114)
                        );
                     (*  (bPt) ((( (bPt) var←c46124)+4) + ((word) xs115 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs115 & 7)+1));
                     };
                  };
SOURCE(8226, 45)
               {
                  word var←c46156;
                  word var←c46188;
                  var←c46156 = ((i←v19512 + 1) % (*  (ptr) (*  (ptr) seq←v7964 ) ));
                  var←c46188 = (* (( (ptr) seq←v7964)+1) );
                  {
                     word limit116;
                     word xs117;
                     xs117 = (word) (
                        limit116 = (*  (ptr) var←c46188 ),
                        BCK(var←c46156, limit116)
                        );
                     (*  (bPt) ((( (bPt) var←c46188)+4) + ((word) xs117 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs117 & 7)+1));
                     };
                  };
               };
            };
         i←v19512 = (i←v19512 + 1);
         if ((i←v19512 < noName←c46060)) {
            goto lab←L100059;
            };
         lab←L100056: ;
         };
      }
   else {
SOURCE(8291, 171)
      if (((*  (ptr) (* (( (ptr) seq←v7964)+1) ) ) == ((*  (ptr) (*  (ptr) seq←v7964 ) ) + 1))) {
SOURCE(8354, 108)
         {
            register word i←v19556 = 0;
            register word noName←c46220;
            word var←c46252;
            noName←c46220 = (*  (ptr) (*  (ptr) seq←v7964 ) );
            if ((i←v19556 >= noName←c46220)) {
               goto lab←L100060;
               };
            lab←L100063: ;
SOURCE(8393, 69)
            {
               word limit118;
               var←c46252 = (*  (ptr) seq←v7964 );
               if (XR←ExtractField(var←c46252, 32 + (word) (
                     limit118 = (*  (ptr) var←c46252 ),
                     BCK(i←v19556, limit118)
                     ), 1)) {
SOURCE(8418, 20)
                  {
                     word var←c46284;
                     var←c46284 = (* (( (ptr) seq←v7964)+1) );
                     {
                        word limit119;
                        word xs120;
                        xs120 = (word) (
                           limit119 = (*  (ptr) var←c46284 ),
                           BCK(i←v19556, limit119)
                           );
                        (*  (bPt) ((( (bPt) var←c46284)+4) + ((word) xs120 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs120 & 7)+1));
                        };
                     };
SOURCE(8440, 22)
                  {
                     word var←c46316;
                     word var←c46348;
                     var←c46316 = (i←v19556 + 1);
                     var←c46348 = (* (( (ptr) seq←v7964)+1) );
                     {
                        word limit121;
                        word xs122;
                        xs122 = (word) (
                           limit121 = (*  (ptr) var←c46348 ),
                           BCK(var←c46316, limit121)
                           );
                        (*  (bPt) ((( (bPt) var←c46348)+4) + ((word) xs122 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs122 & 7)+1));
                        };
                     };
                  };
               };
            i←v19556 = (i←v19556 + 1);
            if ((i←v19556 < noName←c46220)) {
               goto lab←L100063;
               };
            lab←L100060: ;
            };
         }
      else {
SOURCE(8481, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(8529, 86)
   {
      register word i←v19600 = 0;
      register word noName←c46380;
      word var←c46412;
      noName←c46380 = (*  (ptr) (* (( (ptr) seq←v7964)+1) ) );
      if ((i←v19600 >= noName←c46380)) {
         goto lab←L100064;
         };
      lab←L100067: ;
SOURCE(8566, 49)
      {
         word limit123;
         var←c46412 = (* (( (ptr) seq←v7964)+1) );
         if (XR←ExtractField(var←c46412, 32 + (word) (
               limit123 = (*  (ptr) var←c46412 ),
               BCK(i←v19600, limit123)
               ), 1)) {
SOURCE(8588, 27)
            jointCount←v19468 = (jointCount←v19468 + 1);
            };
         };
      i←v19600 = (i←v19600 + 1);
      if ((i←v19600 < noName←c46380)) {
         goto lab←L100067;
         };
      lab←L100064: ;
      };
SOURCE(8626, 27)
   (* (( (ptr) seq←v7964)+4) ) = jointCount←v19468;
   }

static void FillInControlPoints←P780(seq←v8024)
   word seq←v8024;
   {
   word cpCount←v19644;
   /* FillInControlPoints: */ 
SOURCE(8659, 759)
SOURCE(8908, 29)
   if (((* (( (ptr) seq←v8024)+3) ) == 0)) {
SOURCE(8931, 6)
      return;
      };
SOURCE(8996, 25)
   (* (( (ptr) seq←v8024)+5) ) = 0;
SOURCE(9023, 395)
   {
      register word i←v19688 = 0;
      register word noName←c46444;
      noName←c46444 = (*  (ptr) (*  (ptr) seq←v8024 ) );
      if ((i←v19688 >= noName←c46444)) {
         goto lab←L100068;
         };
      lab←L100071: ;
      {
         word var←c46476;
         word var←c46508;
SOURCE(9062, 34)
         {
            word limit124;
            var←c46476 = (* (( (ptr) seq←v8024)+2) );
            cpCount←v19644 = (*  (ptr) (* ((( (ptr) var←c46476)+1)+(
                  limit124 = (*  (ptr) var←c46476 ),
                  BCK(i←v19688, limit124)
                  )) ) );
            };
SOURCE(9098, 320)
         {
            word limit125;
            var←c46508 = (*  (ptr) seq←v8024 );
            if (XR←ExtractField(var←c46508, 32 + (word) (
                  limit125 = (*  (ptr) var←c46508 ),
                  BCK(i←v19688, limit125)
                  ), 1)) {
SOURCE(9124, 131)
               {
                  register word j←v19732 = 0;
                  register word noName←c46540;
                  noName←c46540 = cpCount←v19644;
                  if ((j←v19732 >= noName←c46540)) {
                     goto lab←L100072;
                     };
                  lab←L100075: ;
SOURCE(9174, 30)
                  {
                     word var←c46604;
                     {
                        word var←c46572;
                        var←c46572 = (* (( (ptr) seq←v8024)+2) );
                        {
                           word limit126;
                           var←c46604 = (* ((( (ptr) var←c46572)+1)+(
/*1*/      limit126 = (*  (ptr) var←c46572 ),
/*1*/      BCK(i←v19688, limit126)
/*1*/      )) );
                           };
                        };
                     {
                        word limit127;
                        word xs128;
                        xs128 = (word) (
                           limit127 = (*  (ptr) var←c46604 ),
                           BCK(j←v19732, limit127)
                           );
                        (*  (bPt) ((( (bPt) var←c46604)+4) + ((word) xs128 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs128 & 7)+1));
                        };
                     };
SOURCE(9206, 49)
                  (* (( (ptr) seq←v8024)+5) ) = ((* (( (ptr) seq←v8024)+5) ) + 1);
                  j←v19732 = (j←v19732 + 1);
                  if ((j←v19732 < noName←c46540)) {
                     goto lab←L100075;
                     };
                  lab←L100072: ;
                  };
               }
            else {
SOURCE(9275, 143)
               {
                  register word j←v19776 = 0;
                  register word noName←c46636;
                  word var←c46700;
                  noName←c46636 = cpCount←v19644;
                  if ((j←v19776 >= noName←c46636)) {
                     goto lab←L100076;
                     };
                  lab←L100079: ;
SOURCE(9337, 81)
                  {
                     word limit130;
                     {
                        word var←c46668;
                        var←c46668 = (* (( (ptr) seq←v8024)+2) );
                        {
                           word limit129;
                           var←c46700 = (* ((( (ptr) var←c46668)+1)+(
/*1*/      limit129 = (*  (ptr) var←c46668 ),
/*1*/      BCK(i←v19688, limit129)
/*1*/      )) );
                           };
                        };
                     if (XR←ExtractField(var←c46700, 32 + (word) (
                           limit130 = (*  (ptr) var←c46700 ),
                           BCK(j←v19776, limit130)
                           ), 1)) {
SOURCE(9369, 49)
                        (* (( (ptr) seq←v8024)+5) ) = ((* (( (ptr) seq←v8024)+5) ) + 1);
                        };
                     };
                  j←v19776 = (j←v19776 + 1);
                  if ((j←v19776 < noName←c46636)) {
                     goto lab←L100079;
                     };
                  lab←L100076: ;
                  };
               };
            };
         };
      i←v19688 = (i←v19688 + 1);
      if ((i←v19688 < noName←c46444)) {
         goto lab←L100071;
         };
      lab←L100068: ;
      };
   }

static void TrimSelectedParts←P840(trimDescriptor←v8084, selectedList←v8112)
   word trimDescriptor←v8084;
   word selectedList←v8112;
   {
   register ptr gf←c59340 =  (ptr) &globalframe;
   word seq←v19820;
   word selSeq←v19848;
   /* TrimSelectedParts: */ 
SOURCE(9445, 803)
SOURCE(9553, 45)
   seq←v19820 = XR←Narrow((* (( (ptr) trimDescriptor←v8084)+1) ), (* (( (ptr) gf←c59340)+5) ));
SOURCE(9600, 71)
   selSeq←v19848 = (word) FindPartsInList←P1380((*  (ptr) trimDescriptor←v8084 ), selectedList←v8112);
SOURCE(9673, 27)
   if ((selSeq←v19848 == 0)) {
SOURCE(9694, 6)
      return;
      };
SOURCE(9743, 352)
   {
      register word i←v19892 = 0;
      register word noName←c46732;
      noName←c46732 = (*  (ptr) (*  (ptr) seq←v19820 ) );
      if ((i←v19892 >= noName←c46732)) {
         goto lab←L100080;
         };
      lab←L100083: ;
      {
         word var←c47020;
         word var←c47052;
SOURCE(9782, 194)
         {
            register word j←v19936 = 0;
            register word noName←c46796;
            word var←c46764;
            word var←c46860;
            word var←c46924;
            {
               word limit131;
               var←c46764 = (* (( (ptr) seq←v19820)+2) );
               noName←c46796 = (*  (ptr) (* ((( (ptr) var←c46764)+1)+(
                     limit131 = (*  (ptr) var←c46764 ),
                     BCK(i←v19892, limit131)
                     )) ) );
               };
            if ((j←v19936 >= noName←c46796)) {
               goto lab←L100084;
               };
            lab←L100087: ;
SOURCE(9829, 147)
            {
               word tc132;
               word limit134;
               word limit136;
               {
                  word var←c46828;
                  var←c46828 = (* (( (ptr) selSeq←v19848)+2) );
                  {
                     word limit133;
                     var←c46860 = (* ((( (ptr) var←c46828)+1)+(
                           limit133 = (*  (ptr) var←c46828 ),
                           BCK(i←v19892, limit133)
                           )) );
                     };
                  };
               if (XR←ExtractField(var←c46860, 32 + (word) (
                     limit134 = (*  (ptr) var←c46860 ),
                     BCK(j←v19936, limit134)
                     ), 1)) {
                  {
                     word var←c46892;
                     var←c46892 = (* (( (ptr) seq←v19820)+2) );
                     {
                        word limit135;
                        var←c46924 = (* ((( (ptr) var←c46892)+1)+(
/*1*/   limit135 = (*  (ptr) var←c46892 ),
/*1*/   BCK(i←v19892, limit135)
/*1*/   )) );
                        };
                     };
                  tc132 =  (word) XR←ExtractField(var←c46924, 32 + (word) (
                        limit136 = (*  (ptr) var←c46924 ),
                        BCK(j←v19936, limit136)
                        ), 1);
                  }
               else {
                  tc132 =  (word) 0;
                  };
               if (tc132) {
SOURCE(9894, 31)
                  {
                     word var←c46988;
                     {
                        word var←c46956;
                        var←c46956 = (* (( (ptr) seq←v19820)+2) );
                        {
                           word limit137;
                           var←c46988 = (* ((( (ptr) var←c46956)+1)+(
/*1*/      limit137 = (*  (ptr) var←c46956 ),
/*1*/      BCK(i←v19892, limit137)
/*1*/      )) );
                           };
                        };
                     {
                        word limit138;
                        word xs139;
                        xs139 = (word) (
                           limit138 = (*  (ptr) var←c46988 ),
                           BCK(j←v19936, limit138)
                           );
                        (*  (bPt) ((( (bPt) var←c46988)+4) + ((word) xs139 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs139 & 7)+1));
                        };
                     };
SOURCE(9927, 49)
                  {
                     word idx140;
                     (* (( (ptr) seq←v19820)+5) ) = (
                        idx140 = (word) ((* (( (ptr) seq←v19820)+5) ) - 1),
                        SGNCK(idx140)
                        );
                     };
                  };
               };
            j←v19936 = (j←v19936 + 1);
            if ((j←v19936 < noName←c46796)) {
               goto lab←L100087;
               };
            lab←L100084: ;
            };
SOURCE(9990, 105)
         {
            word tc141;
            word limit142;
            word limit143;
            var←c47020 = (*  (ptr) selSeq←v19848 );
            if (XR←ExtractField(var←c47020, 32 + (word) (
                  limit142 = (*  (ptr) var←c47020 ),
                  BCK(i←v19892, limit142)
                  ), 1)) {
               var←c47052 = (*  (ptr) seq←v19820 );
               tc141 =  (word) XR←ExtractField(var←c47052, 32 + (word) (
                     limit143 = (*  (ptr) var←c47052 ),
                     BCK(i←v19892, limit143)
                     ), 1);
               }
            else {
               tc141 =  (word) 0;
               };
            if (tc141) {
SOURCE(10039, 23)
               {
                  word var←c47084;
                  var←c47084 = (*  (ptr) seq←v19820 );
                  {
                     word limit144;
                     word xs145;
                     xs145 = (word) (
                        limit144 = (*  (ptr) var←c47084 ),
                        BCK(i←v19892, limit144)
                        );
                     (*  (bPt) ((( (bPt) var←c47084)+4) + ((word) xs145 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs145 & 7)+1));
                     };
                  };
SOURCE(10064, 31)
               {
                  word idx146;
                  (* (( (ptr) seq←v19820)+3) ) = (
                     idx146 = (word) ((* (( (ptr) seq←v19820)+3) ) - 1),
                     SGNCK(idx146)
                     );
                  };
               };
            };
         };
      i←v19892 = (i←v19892 + 1);
      if ((i←v19892 < noName←c46732)) {
         goto lab←L100083;
         };
      lab←L100080: ;
      };
SOURCE(10109, 139)
   {
      register word i←v19980 = 0;
      register word noName←c47116;
      word var←c47148;
      word var←c47180;
      noName←c47116 = (*  (ptr) (* (( (ptr) seq←v19820)+1) ) );
      if ((i←v19980 >= noName←c47116)) {
         goto lab←L100088;
         };
      lab←L100091: ;
SOURCE(10146, 102)
      {
         word tc147;
         word limit148;
         word limit149;
         var←c47148 = (* (( (ptr) selSeq←v19848)+1) );
         if (XR←ExtractField(var←c47148, 32 + (word) (
               limit148 = (*  (ptr) var←c47148 ),
               BCK(i←v19980, limit148)
               ), 1)) {
            var←c47180 = (* (( (ptr) seq←v19820)+1) );
            tc147 =  (word) XR←ExtractField(var←c47180, 32 + (word) (
                  limit149 = (*  (ptr) var←c47180 ),
                  BCK(i←v19980, limit149)
                  ), 1);
            }
         else {
            tc147 =  (word) 0;
            };
         if (tc147) {
SOURCE(10191, 21)
            {
               word var←c47212;
               var←c47212 = (* (( (ptr) seq←v19820)+1) );
               {
                  word limit150;
                  word xs151;
                  xs151 = (word) (
                     limit150 = (*  (ptr) var←c47212 ),
                     BCK(i←v19980, limit150)
                     );
                  (*  (bPt) ((( (bPt) var←c47212)+4) + ((word) xs151 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs151 & 7)+1));
                  };
               };
SOURCE(10214, 34)
            {
               word idx152;
               (* (( (ptr) seq←v19820)+4) ) = (
                  idx152 = (word) ((* (( (ptr) seq←v19820)+4) ) - 1),
                  SGNCK(idx152)
                  );
               };
            };
         };
      i←v19980 = (i←v19980 + 1);
      if ((i←v19980 < noName←c47116)) {
         goto lab←L100091;
         };
      lab←L100088: ;
      };
   }

static void TrimSelectedJointSegments←P900(formal←c01187, selectedList←v8284)
   word formal←c01187;
   word selectedList←v8284;
   {
   W8 var←c59372;
   /* declaration of trimDescriptor←v8256 skipped */ 
   register ptr gf←c59404 =  (ptr) &globalframe;
   /* declaration of var←c47244 skipped */ 
   word seq←v20052;
   /* declaration of selSeq←v20080 skipped */ 
   var←c59372.f4/* trimDescriptor←v8256 */  = formal←c01187;
   /* TrimSelectedJointSegments: */ 
SOURCE(10266, 601)
   {
      word tmpAddr153;
      tmpAddr153 = (word) (( (ptr) &var←c59372)+5)/* var←c47244 */ ;
      (*  (ptr) tmpAddr153 ) = ( ((word)  (fPt) SomeSelectedJoint←P6480) );
      (* (( (ptr) tmpAddr153) + 1) ) = 1;
      };
SOURCE(10530, 45)
   seq←v20052 = XR←Narrow((* (( (ptr) var←c59372.f4/* trimDescriptor←v8256 */ )+1) ), (* (( (ptr) gf←c59404)+5) ));
SOURCE(10577, 71)
   var←c59372.f7/* selSeq←v20080 */  = (word) FindPartsInList←P1380((*  (ptr) var←c59372.f4/* trimDescriptor←v8256 */  ), selectedList←v8284)
   ;
SOURCE(10650, 27)
   if ((var←c59372.f7/* selSeq←v20080 */  == 0)) {
SOURCE(10671, 6)
      return;
      };
SOURCE(10721, 146)
   {
      register word i←v20228 = 0;
      register word noName←c47276;
      word var←c47308;
      noName←c47276 = (*  (ptr) (*  (ptr) seq←v20052 ) );
      if ((i←v20228 >= noName←c47276)) {
         goto lab←L100092;
         };
      lab←L100095: ;
SOURCE(10760, 107)
      {
         word tc154;
         word limit155;
         var←c47308 = (*  (ptr) seq←v20052 );
         if (XR←ExtractField(var←c47308, 32 + (word) (
               limit155 = (*  (ptr) var←c47308 ),
               BCK(i←v20228, limit155)
               ), 1)) {
            tc154 =  (word) (0 != (word) SomeSelectedJoint←P6480(i←v20228, (word) (( (bPt) &var←c59372)+20)/* var←c47244 */ ));
            }
         else {
            tc154 =  (word) 0;
            };
         if (tc154) {
SOURCE(10811, 23)
            {
               word var←c47340;
               var←c47340 = (*  (ptr) seq←v20052 );
               {
                  word limit156;
                  word xs157;
                  xs157 = (word) (
                     limit156 = (*  (ptr) var←c47340 ),
                     BCK(i←v20228, limit156)
                     );
                  (*  (bPt) ((( (bPt) var←c47340)+4) + ((word) xs157 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs157 & 7)+1));
                  };
               };
SOURCE(10836, 31)
            {
               word idx158;
               (* (( (ptr) seq←v20052)+3) ) = (
                  idx158 = (word) ((* (( (ptr) seq←v20052)+3) ) - 1),
                  SGNCK(idx158)
                  );
               };
            };
         };
      i←v20228 = (i←v20228 + 1);
      if ((i←v20228 < noName←c47276)) {
         goto lab←L100095;
         };
      lab←L100092: ;
      };
   }

static word SomeSelectedJoint←P6480(i←v20156, formal←c59468)
   word i←v20156;
   word formal←c59468;
   {
   register ptr gf←c59436 =  (ptr) &globalframe;
   word var←c20200;
   formal←c59468 = (formal←c59468 - 20);
   /* SomeSelectedJoint: */ 
SOURCE(10382, 143)
SOURCE(10434, 91)
   {
      word var←c01166;
      word var←c47404;
      {
         word limit159;
         var←c47404 = (* (( (ptr) (* (( (ptr) formal←c59468)+7) ))+1) );
         if (XR←ExtractField(var←c47404, 32 + (word) (
               limit159 = (*  (ptr) var←c47404 ),
               BCK(i←v20156, limit159)
               ), 1)) {
            var←c01166 =  (unsigned) 1;
            }
         else {
            {
               word var←c47436;
               word var←c47468;
               {
                  word pd160;
                  pd160 = (* (( (ptr) (* (( (ptr) gf←c59436)+204)/* var←c43500 */  ))+44) );
                  var←c47436 = (word) ( *( (fPt) ((*  (ptr) pd160 ))))((*  (ptr) (* (( (ptr) formal←c59468)+4) ) ), i←v20156, pd160);
                  };
               var←c47468 = (* (( (ptr) (* (( (ptr) formal←c59468)+7) ))+1) );
               {
                  word limit161;
                  var←c01166 =  (unsigned) XR←ExtractField(var←c47468, 32 + (word) (
                        limit161 = (*  (ptr) var←c47468 ),
                        BCK(var←c47436, limit161)
                        ), 1);
                  };
               };
            };
         };
      return(var←c01166);
      };
   }

static void TrimSelectedControlPointSegments←P960(trimDescriptor←v8428, selectedList←v8456)
   word trimDescriptor←v8428;
   word selectedList←v8456;
   {
   W7 var←c59500;
   register ptr gf←c59532 =  (ptr) &globalframe;
   /* declaration of var←c47500 skipped */ 
   word seq←v20300;
   /* declaration of selSeq←v20328 skipped */ 
   /* TrimSelectedControlPointSegments: */ 
SOURCE(10885, 629)
   {
      word tmpAddr162;
      tmpAddr162 = (word) (( (ptr) &var←c59500)+4)/* var←c47500 */ ;
      (*  (ptr) tmpAddr162 ) = ( ((word)  (fPt) SomeSelectedCP←P6588) );
      (* (( (ptr) tmpAddr162) + 1) ) = 1;
      };
SOURCE(11183, 45)
   seq←v20300 = XR←Narrow((* (( (ptr) trimDescriptor←v8428)+1) ), (* (( (ptr) gf←c59532)+5) ));
SOURCE(11230, 71)
   var←c59500.f6/* selSeq←v20328 */  = (word) FindPartsInList←P1380((*  (ptr) trimDescriptor←v8428 ), selectedList←v8456);
SOURCE(11303, 27)
   if ((var←c59500.f6/* selSeq←v20328 */  == 0)) {
SOURCE(11324, 6)
      return;
      };
SOURCE(11371, 143)
   {
      register word i←v20476 = 0;
      register word noName←c47532;
      word var←c47564;
      noName←c47532 = (*  (ptr) (*  (ptr) seq←v20300 ) );
      if ((i←v20476 >= noName←c47532)) {
         goto lab←L100096;
         };
      lab←L100099: ;
SOURCE(11410, 104)
      {
         word tc163;
         word limit164;
         var←c47564 = (*  (ptr) seq←v20300 );
         if (XR←ExtractField(var←c47564, 32 + (word) (
               limit164 = (*  (ptr) var←c47564 ),
               BCK(i←v20476, limit164)
               ), 1)) {
            tc163 =  (word) (0 != (word) SomeSelectedCP←P6588(i←v20476, (word) (( (bPt) &var←c59500)+16)/* var←c47500 */ ));
            }
         else {
            tc163 =  (word) 0;
            };
         if (tc163) {
SOURCE(11458, 23)
            {
               word var←c47596;
               var←c47596 = (*  (ptr) seq←v20300 );
               {
                  word limit165;
                  word xs166;
                  xs166 = (word) (
                     limit165 = (*  (ptr) var←c47596 ),
                     BCK(i←v20476, limit165)
                     );
                  (*  (bPt) ((( (bPt) var←c47596)+4) + ((word) xs166 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs166 & 7)+1));
                  };
               };
SOURCE(11483, 31)
            {
               word idx167;
               (* (( (ptr) seq←v20300)+3) ) = (
                  idx167 = (word) ((* (( (ptr) seq←v20300)+3) ) - 1),
                  SGNCK(idx167)
                  );
               };
            };
         };
      i←v20476 = (i←v20476 + 1);
      if ((i←v20476 < noName←c47532)) {
         goto lab←L100099;
         };
      lab←L100096: ;
      };
   }

static word SomeSelectedCP←P6588(i←v20404, formal←c59564)
   word i←v20404;
   word formal←c59564;
   {
   word var←c20448;
   formal←c59564 = (formal←c59564 - 16);
   /* SomeSelectedCP: */ 
SOURCE(11008, 170)
SOURCE(11057, 97)
   {
      register word j←v20520 = 0;
      register word noName←c47660;
      word var←c47628;
      word var←c47724;
      {
         word limit168;
         var←c47628 = (* (( (ptr) (* (( (ptr) formal←c59564)+6) ))+2) );
         noName←c47660 = (*  (ptr) (* ((( (ptr) var←c47628)+1)+(
               limit168 = (*  (ptr) var←c47628 ),
               BCK(i←v20404, limit168)
               )) ) );
         };
      if ((j←v20520 >= noName←c47660)) {
         goto lab←L100100;
         };
      lab←L100103: ;
SOURCE(11107, 47)
      {
         word limit170;
         {
            word var←c47692;
            var←c47692 = (* (( (ptr) (* (( (ptr) formal←c59564)+6) ))+2) );
            {
               word limit169;
               var←c47724 = (* ((( (ptr) var←c47692)+1)+(
                     limit169 = (*  (ptr) var←c47692 ),
                     BCK(i←v20404, limit169)
                     )) );
               };
            };
         if (XR←ExtractField(var←c47724, 32 + (word) (
               limit170 = (*  (ptr) var←c47724 ),
               BCK(j←v20520, limit170)
               ), 1)) {
SOURCE(11142, 12)
            return(1);
            };
         };
      j←v20520 = (j←v20520 + 1);
      if ((j←v20520 < noName←c47660)) {
         goto lab←L100103;
         };
      lab←L100100: ;
      };
SOURCE(11165, 13)
   return(0);
   }

static void AddNonSelectedJointSegments←P1020(formal←c01188, formal←c01189)
   word formal←c01188;
   word formal←c01189;
   {
   W8 var←c59596;
   /* declaration of descriptor←v8600 skipped */ 
   /* declaration of selected←v8628 skipped */ 
   register ptr gf←c59628 =  (ptr) &globalframe;
   /* declaration of var←c47756 skipped */ 
   word seq←v20592;
   var←c59596.f4/* descriptor←v8600 */  = formal←c01188;
   var←c59596.f5/* selected←v8628 */  = formal←c01189;
   /* AddNonSelectedJointSegments: */ 
SOURCE(11532, 530)
   {
      word tmpAddr171;
      tmpAddr171 = (word) (( (ptr) &var←c59596)+6)/* var←c47756 */ ;
      (*  (ptr) tmpAddr171 ) = ( ((word)  (fPt) SomeSelectedJoint←P6744) );
      (* (( (ptr) tmpAddr171) + 1) ) = 1;
      };
SOURCE(11769, 41)
   seq←v20592 = XR←Narrow((* (( (ptr) var←c59596.f4/* descriptor←v8600 */ )+1) ), (* (( (ptr) gf←c59628)+5) ));
SOURCE(11812, 29)
   if ((var←c59596.f5/* selected←v8628 */  == 0)) {
SOURCE(11835, 6)
      return;
      };
SOURCE(11884, 178)
   {
      register word i←v20740 = 0;
      register word noName←c47788;
      word var←c47820;
      word var←c47852;
      noName←c47788 = (*  (ptr) (*  (ptr) seq←v20592 ) );
      if ((i←v20740 >= noName←c47788)) {
         goto lab←L100104;
         };
      lab←L100107: ;
SOURCE(11923, 139)
      {
         word tc172;
         word tc173;
         word limit174;
         word limit175;
         var←c47820 = (*  (ptr) seq←v20592 );
         if ( ! XR←ExtractField(var←c47820, 32 + (word) (
               limit174 = (*  (ptr) var←c47820 ),
               BCK(i←v20740, limit174)
               ), 1)) {
            var←c47852 = (*  (ptr) var←c59596.f5/* selected←v8628 */  );
            tc173 =  (word)  ! XR←ExtractField(var←c47852, 32 + (word) (
                  limit175 = (*  (ptr) var←c47852 ),
                  BCK(i←v20740, limit175)
                  ), 1);
            }
         else {
            tc173 =  (word) 0;
            };
         if (tc173) {
            tc172 =  (word) (0 != (word) SomeSelectedJoint←P6744(i←v20740, (word) (( (bPt) &var←c59596)+24)/* var←c47756 */ ));
            }
         else {
            tc172 =  (word) 0;
            };
         if (tc172) {
SOURCE(12007, 22)
            {
               word var←c47884;
               var←c47884 = (*  (ptr) seq←v20592 );
               {
                  word limit176;
                  word xs177;
                  xs177 = (word) (
                     limit176 = (*  (ptr) var←c47884 ),
                     BCK(i←v20740, limit176)
                     );
                  (*  (bPt) ((( (bPt) var←c47884)+4) + ((word) xs177 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs177 & 7)+1));
                  };
               };
SOURCE(12031, 31)
            (* (( (ptr) seq←v20592)+3) ) = ((* (( (ptr) seq←v20592)+3) ) + 1);
            };
         };
      i←v20740 = (i←v20740 + 1);
      if ((i←v20740 < noName←c47788)) {
         goto lab←L100107;
         };
      lab←L100104: ;
      };
   }

static word SomeSelectedJoint←P6744(i←v20668, formal←c59692)
   word i←v20668;
   word formal←c59692;
   {
   register ptr gf←c59660 =  (ptr) &globalframe;
   word var←c20712;
   formal←c59692 = (formal←c59692 - 24);
   /* SomeSelectedJoint: */ 
SOURCE(11621, 143)
SOURCE(11673, 91)
   {
      word var←c01167;
      word var←c47948;
      {
         word limit178;
         var←c47948 = (* (( (ptr) (* (( (ptr) formal←c59692)+5) ))+1) );
         if (XR←ExtractField(var←c47948, 32 + (word) (
               limit178 = (*  (ptr) var←c47948 ),
               BCK(i←v20668, limit178)
               ), 1)) {
            var←c01167 =  (unsigned) 1;
            }
         else {
            {
               word var←c47980;
               word var←c48012;
               {
                  word pd179;
                  pd179 = (* (( (ptr) (* (( (ptr) gf←c59660)+204)/* var←c43500 */  ))+44) );
                  var←c47980 = (word) ( *( (fPt) ((*  (ptr) pd179 ))))((*  (ptr) (* (( (ptr) formal←c59692)+4) ) ), i←v20668, pd179);
                  };
               var←c48012 = (* (( (ptr) (* (( (ptr) formal←c59692)+5) ))+1) );
               {
                  word limit180;
                  var←c01167 =  (unsigned) XR←ExtractField(var←c48012, 32 + (word) (
                        limit180 = (*  (ptr) var←c48012 ),
                        BCK(var←c47980, limit180)
                        ), 1);
                  };
               };
            };
         };
      return(var←c01167);
      };
   }

static void AddNonSelectedControlPointSegments←P1080(descriptor←v8688, formal←c01190)
   word descriptor←v8688;
   word formal←c01190;
   {
   W7 var←c59724;
   /* declaration of selected←v8716 skipped */ 
   register ptr gf←c59756 =  (ptr) &globalframe;
   /* declaration of var←c48044 skipped */ 
   word seq←v20812;
   var←c59724.f4/* selected←v8716 */  = formal←c01190;
   /* AddNonSelectedControlPointSegments: */ 
SOURCE(12080, 562)
   {
      word tmpAddr181;
      tmpAddr181 = (word) (( (ptr) &var←c59724)+5)/* var←c48044 */ ;
      (*  (ptr) tmpAddr181 ) = ( ((word)  (fPt) SomeSelectedCP←P6852) );
      (* (( (ptr) tmpAddr181) + 1) ) = 1;
      };
SOURCE(12355, 41)
   seq←v20812 = XR←Narrow((* (( (ptr) descriptor←v8688)+1) ), (* (( (ptr) gf←c59756)+5) ));
SOURCE(12398, 29)
   if ((var←c59724.f4/* selected←v8716 */  == 0)) {
SOURCE(12421, 6)
      return;
      };
SOURCE(12467, 175)
   {
      register word i←v20960 = 0;
      register word noName←c48076;
      word var←c48108;
      word var←c48140;
      noName←c48076 = (*  (ptr) (*  (ptr) seq←v20812 ) );
      if ((i←v20960 >= noName←c48076)) {
         goto lab←L100108;
         };
      lab←L100111: ;
SOURCE(12506, 136)
      {
         word tc182;
         word tc183;
         word limit184;
         word limit185;
         var←c48108 = (*  (ptr) seq←v20812 );
         if ( ! XR←ExtractField(var←c48108, 32 + (word) (
               limit184 = (*  (ptr) var←c48108 ),
               BCK(i←v20960, limit184)
               ), 1)) {
            var←c48140 = (*  (ptr) var←c59724.f4/* selected←v8716 */  );
            tc183 =  (word)  ! XR←ExtractField(var←c48140, 32 + (word) (
                  limit185 = (*  (ptr) var←c48140 ),
                  BCK(i←v20960, limit185)
                  ), 1);
            }
         else {
            tc183 =  (word) 0;
            };
         if (tc183) {
            tc182 =  (word) (0 != (word) SomeSelectedCP←P6852(i←v20960, (word) (( (bPt) &var←c59724)+20)/* var←c48044 */ ));
            }
         else {
            tc182 =  (word) 0;
            };
         if (tc182) {
SOURCE(12587, 22)
            {
               word var←c48172;
               var←c48172 = (*  (ptr) seq←v20812 );
               {
                  word limit186;
                  word xs187;
                  xs187 = (word) (
                     limit186 = (*  (ptr) var←c48172 ),
                     BCK(i←v20960, limit186)
                     );
                  (*  (bPt) ((( (bPt) var←c48172)+4) + ((word) xs187 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs187 & 7)+1));
                  };
               };
SOURCE(12611, 31)
            (* (( (ptr) seq←v20812)+3) ) = ((* (( (ptr) seq←v20812)+3) ) + 1);
            };
         };
      i←v20960 = (i←v20960 + 1);
      if ((i←v20960 < noName←c48076)) {
         goto lab←L100111;
         };
      lab←L100108: ;
      };
   }

static word SomeSelectedCP←P6852(i←v20888, formal←c59788)
   word i←v20888;
   word formal←c59788;
   {
   word var←c20932;
   formal←c59788 = (formal←c59788 - 20);
   /* SomeSelectedCP: */ 
SOURCE(12176, 174)
SOURCE(12225, 101)
   {
      register word j←v21004 = 0;
      register word noName←c48236;
      word var←c48204;
      word var←c48300;
      {
         word limit188;
         var←c48204 = (* (( (ptr) (* (( (ptr) formal←c59788)+4) ))+2) );
         noName←c48236 = (*  (ptr) (* ((( (ptr) var←c48204)+1)+(
               limit188 = (*  (ptr) var←c48204 ),
               BCK(i←v20888, limit188)
               )) ) );
         };
      if ((j←v21004 >= noName←c48236)) {
         goto lab←L100112;
         };
      lab←L100115: ;
SOURCE(12277, 49)
      {
         word limit190;
         {
            word var←c48268;
            var←c48268 = (* (( (ptr) (* (( (ptr) formal←c59788)+4) ))+2) );
            {
               word limit189;
               var←c48300 = (* ((( (ptr) var←c48268)+1)+(
                     limit189 = (*  (ptr) var←c48268 ),
                     BCK(i←v20888, limit189)
                     )) );
               };
            };
         if (XR←ExtractField(var←c48300, 32 + (word) (
               limit190 = (*  (ptr) var←c48300 ),
               BCK(j←v21004, limit190)
               ), 1)) {
SOURCE(12314, 12)
            return(1);
            };
         };
      j←v21004 = (j←v21004 + 1);
      if ((j←v21004 < noName←c48236)) {
         goto lab←L100115;
         };
      lab←L100112: ;
      };
SOURCE(12337, 13)
   return(0);
   }

static void AddConstrained←P1140(formal←c01191, formal←c01192)
   word formal←c01191;
   word formal←c01192;
   {
   W8 var←c59820;
   /* declaration of descriptor←v8776 skipped */ 
   /* declaration of selected←v8804 skipped */ 
   register ptr gf←c59852 =  (ptr) &globalframe;
   /* declaration of var←c48332 skipped */ 
   word seq←v21076;
   var←c59820.f4/* descriptor←v8776 */  = formal←c01191;
   var←c59820.f5/* selected←v8804 */  = formal←c01192;
   /* AddConstrained: */ 
SOURCE(12660, 942)
   {
      word tmpAddr191;
      tmpAddr191 = (word) (( (ptr) &var←c59820)+6)/* var←c48332 */ ;
      (*  (ptr) tmpAddr191 ) = ( ((word)  (fPt) SomeSelectedConstrainer←P7008) );
      (* (( (ptr) tmpAddr191) + 1) ) = 1;
      };
SOURCE(13259, 41)
   seq←v21076 = XR←Narrow((* (( (ptr) var←c59820.f4/* descriptor←v8776 */ )+1) ), (* (( (ptr) gf←c59852)+5) ));
SOURCE(13302, 29)
   if ((var←c59820.f5/* selected←v8804 */  == 0)) {
SOURCE(13325, 6)
      return;
      };
SOURCE(13352, 250)
   {
      register word i←v21224 = 0;
      register word noName←c48364;
      word var←c48396;
      word var←c48428;
      noName←c48364 = (*  (ptr) (*  (ptr) seq←v21076 ) );
      if ((i←v21224 >= noName←c48364)) {
         goto lab←L100116;
         };
      lab←L100119: ;
SOURCE(13391, 211)
      {
         word tc192;
         word tc193;
         word tc194;
         word pd195;
         word limit196;
         word limit197;
         pd195 = (* (( (ptr) (* (( (ptr) gf←c59852)+204)/* var←c43500 */  ))+29) );
         if (((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd195 ))))((*  (ptr) var←c59820.f4/* descriptor←v8776 */  ), i←v21224, pd195)
          ) ) == (* (( (ptr) gf←c59852)+26) ))) {
            var←c48396 = (*  (ptr) seq←v21076 );
            tc194 =  (word)  ! XR←ExtractField(var←c48396, 32 + (word) (
                  limit196 = (*  (ptr) var←c48396 ),
                  BCK(i←v21224, limit196)
                  ), 1);
            }
         else {
            tc194 =  (word) 0;
            };
         if (tc194) {
            var←c48428 = (*  (ptr) var←c59820.f5/* selected←v8804 */  );
            tc193 =  (word)  ! XR←ExtractField(var←c48428, 32 + (word) (
                  limit197 = (*  (ptr) var←c48428 ),
                  BCK(i←v21224, limit197)
                  ), 1);
            }
         else {
            tc193 =  (word) 0;
            };
         if (tc193) {
            tc192 =  (word) (0 != (word) SomeSelectedConstrainer←P7008(i←v21224, (word) (( (bPt) &var←c59820)+24)/* var←c48332 */ ));
            }
         else {
            tc192 =  (word) 0;
            };
         if (tc192) {
SOURCE(13547, 22)
            {
               word var←c48460;
               var←c48460 = (*  (ptr) seq←v21076 );
               {
                  word limit198;
                  word xs199;
                  xs199 = (word) (
                     limit198 = (*  (ptr) var←c48460 ),
                     BCK(i←v21224, limit198)
                     );
                  (*  (bPt) ((( (bPt) var←c48460)+4) + ((word) xs199 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs199 & 7)+1));
                  };
               };
SOURCE(13571, 31)
            (* (( (ptr) seq←v21076)+3) ) = ((* (( (ptr) seq←v21076)+3) ) + 1);
            };
         };
      i←v21224 = (i←v21224 + 1);
      if ((i←v21224 < noName←c48364)) {
         goto lab←L100119;
         };
      lab←L100116: ;
      };
   }

static word SomeSelectedConstrainer←P7008(i←v21152, formal←c59916)
   word i←v21152;
   word formal←c59916;
   {
   register ptr gf←c59884 =  (ptr) &globalframe;
   word var←c21196;
   word previous←v21268;
   word following←v21296;
   word var←c48524;
   word var←c48588;
   formal←c59916 = (formal←c59916 - 24);
   /* SomeSelectedConstrainer: */ 
SOURCE(12736, 518)
SOURCE(12820, 57)
   {
      word pd200;
      pd200 = (* (( (ptr) (* (( (ptr) gf←c59884)+204)/* var←c43500 */  ))+42) );
      previous←v21268 = (word) ( *( (fPt) ((*  (ptr) pd200 ))))((*  (ptr) (* (( (ptr) formal←c59916)+4) ) ), i←v21152, pd200);
      };
SOURCE(12879, 59)
   {
      word pd201;
      pd201 = (* (( (ptr) (* (( (ptr) gf←c59884)+204)/* var←c43500 */  ))+43) );
      following←v21296 = (word) ( *( (fPt) ((*  (ptr) pd201 ))))((*  (ptr) (* (( (ptr) formal←c59916)+4) ) ), i←v21152, pd201);
      };
SOURCE(12940, 147)
   {
      word tc202;
      word tc203;
      word pd204;
      word limit206;
      if (( (int)previous←v21268 !=  (int) (word) -1)) {
         pd204 = (* (( (ptr) (* (( (ptr) gf←c59884)+204)/* var←c43500 */  ))+29) );
         tc203 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd204 ))))((*  (ptr) (* (( (ptr) formal←c59916)+4) ) ), SGNCK(
               previous←v21268), pd204) ) ) == (* (( (ptr) gf←c59884)+26) ));
         }
      else {
         tc203 =  (word) 0;
         };
      if (tc203) {
         {
            word var←c48492;
            var←c48492 = (* (( (ptr) (* (( (ptr) formal←c59916)+5) ))+2) );
            {
               word limit205;
               var←c48524 = (* ((( (ptr) var←c48492)+1)+(
                     limit205 = (*  (ptr) var←c48492 ),
                     BCK(previous←v21268, limit205)
                     )) );
               };
            };
         tc202 =  (word) XR←ExtractField(var←c48524, 32 + (word) (
               limit206 = (*  (ptr) var←c48524 ),
               BCK(1, limit206)
               ), 1);
         }
      else {
         tc202 =  (word) 0;
         };
      if (tc202) {
SOURCE(13075, 12)
         return(1);
         };
      };
SOURCE(13089, 150)
   {
      word tc207;
      word tc208;
      word pd209;
      word limit211;
      if (( (int)following←v21296 !=  (int) (word) -1)) {
         pd209 = (* (( (ptr) (* (( (ptr) gf←c59884)+204)/* var←c43500 */  ))+29) );
         tc208 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd209 ))))((*  (ptr) (* (( (ptr) formal←c59916)+4) ) ), SGNCK(
               following←v21296), pd209) ) ) == (* (( (ptr) gf←c59884)+26) ));
         }
      else {
         tc208 =  (word) 0;
         };
      if (tc208) {
         {
            word var←c48556;
            var←c48556 = (* (( (ptr) (* (( (ptr) formal←c59916)+5) ))+2) );
            {
               word limit210;
               var←c48588 = (* ((( (ptr) var←c48556)+1)+(
                     limit210 = (*  (ptr) var←c48556 ),
                     BCK(following←v21296, limit210)
                     )) );
               };
            };
         tc207 =  (word) XR←ExtractField(var←c48588, 32 + (word) (
               limit211 = (*  (ptr) var←c48588 ),
               BCK(0, limit211)
               ), 1);
         }
      else {
         tc207 =  (word) 0;
         };
      if (tc207) {
SOURCE(13227, 12)
         return(1);
         };
      };
SOURCE(13241, 13)
   return(0);
   }

static void AddNewBezier←P1200(seq←v8864, selected←v8892, segNum←v8920)
   word seq←v8864;
   word selected←v8892;
   word segNum←v8920;
   {
   word var←c48620;
   word var←c48652;
   /* AddNewBezier: */ 
SOURCE(13620, 253)
SOURCE(13694, 29)
   if ((selected←v8892 == 0)) {
SOURCE(13717, 6)
      return;
      };
SOURCE(13744, 129)
   {
      word tc212;
      word limit213;
      word limit214;
      var←c48620 = (*  (ptr) seq←v8864 );
      if ( ! XR←ExtractField(var←c48620, 32 + (word) (
            limit213 = (*  (ptr) var←c48620 ),
            BCK(segNum←v8920, limit213)
            ), 1)) {
         var←c48652 = (*  (ptr) selected←v8892 );
         tc212 =  (word)  ! XR←ExtractField(var←c48652, 32 + (word) (
               limit214 = (*  (ptr) var←c48652 ),
               BCK(segNum←v8920, limit214)
               ), 1);
         }
      else {
         tc212 =  (word) 0;
         };
      if (tc212) {
SOURCE(13813, 27)
         {
            word var←c48684;
            var←c48684 = (*  (ptr) seq←v8864 );
            {
               word limit215;
               word xs216;
               xs216 = (word) (
                  limit215 = (*  (ptr) var←c48684 ),
                  BCK(segNum←v8920, limit215)
                  );
               (*  (bPt) ((( (bPt) var←c48684)+4) + ((word) xs216 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs216 & 7)+1));
               };
            };
SOURCE(13842, 31)
         (* (( (ptr) seq←v8864)+3) ) = ((* (( (ptr) seq←v8864)+3) ) + 1);
         };
      };
   }

static void DDifference←P1260(mutable←v8980, negative←v9008)
   word mutable←v8980;
   word negative←v9008;
   {
   register ptr gf←c59948 =  (ptr) &globalframe;
   /* DDifference: */ 
SOURCE(13882, 232)
SOURCE(13948, 49)
   if (((* (( (ptr) (*  (ptr) mutable←v8980 ))+1) ) != (* (( (ptr) (*  (ptr) negative←v9008 ))+1) ))) {
SOURCE(13997, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(14030, 84)
   {
      word var←c48716;
      word var←c48748;
      var←c48716 = XR←Narrow((* (( (ptr) mutable←v8980)+1) ), (* (( (ptr) gf←c59948)+5) ));
      var←c48748 = XR←Narrow((* (( (ptr) negative←v9008)+1) ), (* (( (ptr) gf←c59948)+5) ));
      (void) DDifferenceSeq←P1320(var←c48716, var←c48748);
      };
   }

static void DDifferenceSeq←P1320(mutSeq←v9068, negSeq←v9096)
   word mutSeq←v9068;
   word negSeq←v9096;
   {
   word hiJoint←v21340;
   /* DDifferenceSeq: */ 
SOURCE(14120, 677)
SOURCE(14195, 345)
   {
      register word i←v21384 = 0;
      register word noName←c48780;
      noName←c48780 = (*  (ptr) (*  (ptr) mutSeq←v9068 ) );
      if ((i←v21384 >= noName←c48780)) {
         goto lab←L100120;
         };
      lab←L100123: ;
      {
         word cpCount←v21428;
         word var←c48812;
SOURCE(14237, 42)
         {
            word limit217;
            var←c48812 = (* (( (ptr) mutSeq←v9068)+2) );
            cpCount←v21428 = (*  (ptr) (* ((( (ptr) var←c48812)+1)+(
                  limit217 = (*  (ptr) var←c48812 ),
                  BCK(i←v21384, limit217)
                  )) ) );
            };
SOURCE(14281, 66)
         {
            word var←c48908;
            word var←c48844;
            var←c48908 = (*  (ptr) mutSeq←v9068 );
            {
               word limit218;
               word limit223;
               word xs224;
               var←c48844 = (*  (ptr) mutSeq←v9068 );
               if (XR←ExtractField(var←c48844, 32 + (word) (
                     limit218 = (*  (ptr) var←c48844 ),
                     BCK(i←v21384, limit218)
                     ), 1)) {
                  {
                     word var←c48876;
                     var←c48876 = (*  (ptr) negSeq←v9096 );
                     {
                        word limit219;
                        word limit220;
                        word xs221;
                        word x222;
                        xs221 = (word) (
                           limit220 = (*  (ptr) var←c48908 ),
                           BCK(i←v21384, limit220)
                           );
                        x222 = (word) ((( (bPt) var←c48908)+4) + ((word) xs221 >> 3));
                        xs221 = 8 - ((word) (xs221 & 7)+1);
                        (*  (bPt) x222 ) = ((*  (bPt) x222 ) & ( ~ ((unsigned) 1 << xs221))) | ((( ! XR←ExtractField(var←c48876, 32 + (word) (
/*1*/         limit219 = (*  (ptr) var←c48876 ),
/*1*/         BCK(i←v21384, limit219)
/*1*/         ), 1))) << xs221);
                        };
                     };
                  }
               else {
                  xs224 = (word) (
                     limit223 = (*  (ptr) var←c48908 ),
                     BCK(i←v21384, limit223)
                     );
                  (*  (bPt) ((( (bPt) var←c48908)+4) + ((word) xs224 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs224 & 7)+1));
                  };
               };
            };
SOURCE(14349, 120)
         {
            register word j←v21472 = 0;
            register word noName←c48940;
            noName←c48940 = cpCount←v21428;
            if ((j←v21472 >= noName←c48940)) {
               goto lab←L100124;
               };
            lab←L100127: ;
SOURCE(14379, 90)
            {
               word var←c49132;
               word var←c49004;
               {
                  word var←c49100;
                  var←c49100 = (* (( (ptr) mutSeq←v9068)+2) );
                  {
                     word limit225;
                     var←c49132 = (* ((( (ptr) var←c49100)+1)+(
                           limit225 = (*  (ptr) var←c49100 ),
                           BCK(i←v21384, limit225)
                           )) );
                     };
                  };
               {
                  word limit227;
                  word limit233;
                  word xs234;
                  {
                     word var←c48972;
                     var←c48972 = (* (( (ptr) mutSeq←v9068)+2) );
                     {
                        word limit226;
                        var←c49004 = (* ((( (ptr) var←c48972)+1)+(
/*1*/   limit226 = (*  (ptr) var←c48972 ),
/*1*/   BCK(i←v21384, limit226)
/*1*/   )) );
                        };
                     };
                  if (XR←ExtractField(var←c49004, 32 + (word) (
                        limit227 = (*  (ptr) var←c49004 ),
                        BCK(j←v21472, limit227)
                        ), 1)) {
                     {
                        word var←c49036;
                        word var←c49068;
                        {
                           word limit228;
                           var←c49036 = (* (( (ptr) negSeq←v9096)+2) );
                           var←c49068 = (* ((( (ptr) var←c49036)+1)+(
/*1*/      limit228 = (*  (ptr) var←c49036 ),
/*1*/      BCK(i←v21384, limit228)
/*1*/      )) );
                           };
                        {
                           word limit229;
                           word limit230;
                           word xs231;
                           word x232;
                           xs231 = (word) (
/*1*/   limit230 = (*  (ptr) var←c49132 ),
/*1*/   BCK(j←v21472, limit230)
/*1*/   );
                           x232 = (word) ((( (bPt) var←c49132)+4) + ((word) xs231 >> 3));
                           xs231 = 8 - ((word) (xs231 & 7)+1);
                           (*  (bPt) x232 ) = ((*  (bPt) x232 ) & ( ~ ((unsigned) 1 << xs231))) | ((( ! XR←ExtractField(var←c49068, 32 + (word) (
/*1*/            limit229 = (*  (ptr) var←c49068 ),
/*1*/            BCK(j←v21472, limit229)
/*1*/            ), 1))) << xs231);
                           };
                        };
                     }
                  else {
                     xs234 = (word) (
                        limit233 = (*  (ptr) var←c49132 ),
                        BCK(j←v21472, limit233)
                        );
                     (*  (bPt) ((( (bPt) var←c49132)+4) + ((word) xs234 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs234 & 7)+1));
                     };
                  };
               };
            j←v21472 = (j←v21472 + 1);
            if ((j←v21472 < noName←c48940)) {
               goto lab←L100127;
               };
            lab←L100124: ;
            };
SOURCE(14480, 60)
         {
            word var←c49228;
            word var←c49164;
            var←c49228 = (* (( (ptr) mutSeq←v9068)+1) );
            {
               word limit235;
               word limit240;
               word xs241;
               var←c49164 = (* (( (ptr) mutSeq←v9068)+1) );
               if (XR←ExtractField(var←c49164, 32 + (word) (
                     limit235 = (*  (ptr) var←c49164 ),
                     BCK(i←v21384, limit235)
                     ), 1)) {
                  {
                     word var←c49196;
                     var←c49196 = (* (( (ptr) negSeq←v9096)+1) );
                     {
                        word limit236;
                        word limit237;
                        word xs238;
                        word x239;
                        xs238 = (word) (
                           limit237 = (*  (ptr) var←c49228 ),
                           BCK(i←v21384, limit237)
                           );
                        x239 = (word) ((( (bPt) var←c49228)+4) + ((word) xs238 >> 3));
                        xs238 = 8 - ((word) (xs238 & 7)+1);
                        (*  (bPt) x239 ) = ((*  (bPt) x239 ) & ( ~ ((unsigned) 1 << xs238))) | ((( ! XR←ExtractField(var←c49196, 32 + (word) (
/*1*/         limit236 = (*  (ptr) var←c49196 ),
/*1*/         BCK(i←v21384, limit236)
/*1*/         ), 1))) << xs238);
                        };
                     };
                  }
               else {
                  xs241 = (word) (
                     limit240 = (*  (ptr) var←c49228 ),
                     BCK(i←v21384, limit240)
                     );
                  (*  (bPt) ((( (bPt) var←c49228)+4) + ((word) xs241 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs241 & 7)+1));
                  };
               };
            };
         };
      i←v21384 = (i←v21384 + 1);
      if ((i←v21384 < noName←c48780)) {
         goto lab←L100123;
         };
      lab←L100120: ;
      };
SOURCE(14551, 29)
   {
      word idx242;
      hiJoint←v21340 = (
         idx242 = (word) ((*  (ptr) (* (( (ptr) mutSeq←v9068)+1) ) ) - 1),
         SGNCK(idx242)
         );
      };
SOURCE(14582, 78)
   {
      word var←c49324;
      word var←c49260;
      var←c49324 = (* (( (ptr) mutSeq←v9068)+1) );
      {
         word limit243;
         word limit248;
         word xs249;
         var←c49260 = (* (( (ptr) mutSeq←v9068)+1) );
         if (XR←ExtractField(var←c49260, 32 + (word) (
               limit243 = (*  (ptr) var←c49260 ),
               BCK(hiJoint←v21340, limit243)
               ), 1)) {
            {
               word var←c49292;
               var←c49292 = (* (( (ptr) negSeq←v9096)+1) );
               {
                  word limit244;
                  word limit245;
                  word xs246;
                  word x247;
                  xs246 = (word) (
                     limit245 = (*  (ptr) var←c49324 ),
                     BCK(hiJoint←v21340, limit245)
                     );
                  x247 = (word) ((( (bPt) var←c49324)+4) + ((word) xs246 >> 3));
                  xs246 = 8 - ((word) (xs246 & 7)+1);
                  (*  (bPt) x247 ) = ((*  (bPt) x247 ) & ( ~ ((unsigned) 1 << xs246))) | ((( ! XR←ExtractField(var←c49292, 32 + (word) (
/*1*/   limit244 = (*  (ptr) var←c49292 ),
/*1*/   BCK(hiJoint←v21340, limit244)
/*1*/   ), 1))) << xs246);
                  };
               };
            }
         else {
            xs249 = (word) (
               limit248 = (*  (ptr) var←c49324 ),
               BCK(hiJoint←v21340, limit248)
               );
            (*  (bPt) ((( (bPt) var←c49324)+4) + ((word) xs249 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs249 & 7)+1));
            };
         };
      };
SOURCE(14662, 39)
   (* (( (ptr) mutSeq←v9068)+3) ) = (word) CountSegments←P2460(mutSeq←v9068);
SOURCE(14703, 39)
   (* (( (ptr) mutSeq←v9068)+4) ) = (word) CountJoints←P2520(mutSeq←v9068);
SOURCE(14744, 53)
   (* (( (ptr) mutSeq←v9068)+5) ) = (word) CountControlPoints←P2580(mutSeq←v9068);
   }

static word FindPartsInList←P1380(traj←v9156, selectedList←v9184)
   word traj←v9156;
   word selectedList←v9184;
   {
   register ptr gf←c59980 =  (ptr) &globalframe;
   word trajParts←v9312;
   word trajD←v21516 = 0;
   /* FindPartsInList: */ 
SOURCE(14803, 530)
SOURCE(14803, 530)
   trajParts←v9312 = 0;
SOURCE(14943, 368)
   {
      register word sliceDList←v21560;
      sliceDList←v21560 = selectedList←v9184;
      lab←L100131: ;
      if ((sliceDList←v21560 != 0)) {
         }
      else {
         goto lab←L100128;
         };
      {
         word sliceD←v21688;
SOURCE(15041, 42)
         sliceD←v21688 = (*  (ptr) sliceDList←v21560 );
SOURCE(15085, 179)
         {
            word pd250;
            word pd251;
            word pd252;
            pd250 = (* (( (ptr) (* (( (ptr) gf←c59980)+205)/* var←c49356 */  ))+6) );
            if (((word) ( *( (fPt) ((*  (ptr) pd250 ))))((*  (ptr) (sliceD←v21688) ), pd250) == (* (( (ptr) gf←c59980)+25) ))) {
               trajD←v21516 = sliceD←v21688;
               }
            else {
               pd251 = (* (( (ptr) (* (( (ptr) gf←c59980)+205)/* var←c49356 */  ))+6) );
               if (((word) ( *( (fPt) ((*  (ptr) pd251 ))))((*  (ptr) (sliceD←v21688) ), pd251) == (* (( (ptr) gf←c59980)+24) ))) {
                  pd252 = (* (( (ptr) (* (( (ptr) gf←c59980)+206)/* var←c49388 */  ))+85) );
                  trajD←v21516 = (word) ( *( (fPt) ((*  (ptr) pd252 ))))(sliceD←v21688, traj←v9156, pd252);
                  }
               else {
                  trajD←v21516 = 0;
                  };
               };
            };
SOURCE(15266, 45)
         if ((trajD←v21516 != 0)) {
SOURCE(15284, 27)
            return(XR←Narrow((* (( (ptr) trajD←v21516)+1) ), (* (( (ptr) gf←c59980)+5) )));
            };
         };
      sliceDList←v21560 = (* (( (ptr) sliceDList←v21560)+1) );
      goto lab←L100131;
      lab←L100128: ;
      };
SOURCE(15322, 11)
   return(0);
   }

static word NewBitMatrixFromSeq←P1440(seq←v9372)
   word seq←v9372;
   {
   register ptr gf←c60012 =  (ptr) &globalframe;
   word bitMatrix←v9416;
   /* NewBitMatrixFromSeq: */ 
SOURCE(15339, 258)
SOURCE(15339, 258)
   bitMatrix←v9416 = 0;
SOURCE(15417, 52)
   {
      word var←c49452;
      word var←c49484;
      word var←c49516;
      {
         word idx253;
         var←c49452 = (
            idx253 = (*  (ptr) (* (( (ptr) seq←v9372)+2) ) ),
            BCK(idx253, 67108863)
            );
         };
      var←c49484 = ((word) var←c49452 << 2);
      var←c49516 = XR←NewObject((4 + var←c49484), (* (( (ptr) gf←c60012)+11) ));
      (*  (ptr) var←c49516 ) = var←c49452;
      bitMatrix←v9416 = var←c49516;
      };
SOURCE(15471, 126)
   {
      register word j←v21732 = 0;
      register word noName←c49548;
      noName←c49548 = (*  (ptr) (* (( (ptr) seq←v9372)+2) ) );
      if ((j←v21732 >= noName←c49548)) {
         goto lab←L100132;
         };
      lab←L100135: ;
SOURCE(15544, 53)
      {
         word var←c49580;
         {
            word var←c49612;
            word var←c01168;
            {
               word limit254;
               var←c49612 = (* (( (ptr) seq←v9372)+2) );
               var←c01168 = (*  (ptr) (* ((( (ptr) var←c49612)+1)+(
                     limit254 = (*  (ptr) var←c49612 ),
                     BCK(j←v21732, limit254)
                     )) ) );
               };
            var←c49580 = (word) NewBitVector←P1560(var←c01168);
            };
         {
            word limit255;
            (* ((( (ptr) bitMatrix←v9416)+1)+(
                  limit255 = (*  (ptr) bitMatrix←v9416 ),
                  BCK(j←v21732, limit255)
                  )) ) = var←c49580;
            };
         };
      j←v21732 = (j←v21732 + 1);
      if ((j←v21732 < noName←c49548)) {
         goto lab←L100135;
         };
      lab←L100132: ;
      };
SOURCE(15339, 258)
   return(bitMatrix←v9416);
   }

static word NewBitMatrix←P1500(traj←v9476)
   word traj←v9476;
   {
   register ptr gf←c60044 =  (ptr) &globalframe;
   word bitMatrix←v9520;
   word j←v21776 = 0;
   word segGen←v21804;
   /* NewBitMatrix: */ 
SOURCE(15648, 360)
SOURCE(15648, 360)
   bitMatrix←v9520 = 0;
SOURCE(15731, 58)
   {
      word pd256;
      pd256 = (* (( (ptr) (* (( (ptr) gf←c60044)+207)/* var←c49644 */  ))+40) );
      segGen←v21804 = (word) ( *( (fPt) ((*  (ptr) pd256 ))))(traj←v9476, pd256);
      };
SOURCE(15791, 44)
   {
      word var←c49676;
      word var←c49708;
      word var←c49740;
      {
         word idx257;
         var←c49676 = (
            idx257 = (* (( (ptr) traj←v9476)+1) ),
            BCK(idx257, 67108863)
            );
         };
      var←c49708 = ((word) var←c49676 << 2);
      var←c49740 = XR←NewObject((4 + var←c49708), (* (( (ptr) gf←c60044)+11) ));
      (*  (ptr) var←c49740 ) = var←c49676;
      bitMatrix←v9520 = var←c49740;
      };
SOURCE(15837, 171)
   {
      register word seg←v21848;
      {
         word pd258;
         pd258 = (* (( (ptr) (* (( (ptr) gf←c60044)+207)/* var←c49644 */  ))+46) );
         seg←v21848 = (word) ( *( (fPt) ((*  (ptr) pd258 ))))(segGen←v21804, pd258);
         };
      lab←L100139: ;
      if ((seg←v21848 != 0)) {
         }
      else {
         goto lab←L100136;
         };
SOURCE(15938, 61)
      {
         word var←c49772;
         {
            word var←c49804;
            {
               word pd259;
               pd259 = (* (( (ptr) (*  (ptr) seg←v21848 ))+17) );
               var←c49804 = (word) ( *( (fPt) ((*  (ptr) pd259 ))))(seg←v21848, pd259);
               };
            var←c49772 = (word) NewBitVector←P1560(var←c49804);
            };
         {
            word limit260;
            (* ((( (ptr) bitMatrix←v9520)+1)+(
                  limit260 = (*  (ptr) bitMatrix←v9520 ),
                  BCK(j←v21776, limit260)
                  )) ) = var←c49772;
            };
         };
SOURCE(16001, 7)
      j←v21776 = (j←v21776 + 1);
      {
         word pd261;
         pd261 = (* (( (ptr) (* (( (ptr) gf←c60044)+207)/* var←c49644 */  ))+46) );
         seg←v21848 = (word) ( *( (fPt) ((*  (ptr) pd261 ))))(segGen←v21804, pd261);
         };
      goto lab←L100139;
      lab←L100136: ;
      };
SOURCE(15648, 360)
   return(bitMatrix←v9520);
   }

static word NewBitVector←P1560(length←v9580)
   word length←v9580;
   {
   register ptr gf←c60076 =  (ptr) &globalframe;
   word bitVec←v9624;
   /* NewBitVector: */ 
SOURCE(16023, 126)
SOURCE(16023, 126)
   bitVec←v9624 = 0;
SOURCE(16088, 34)
   {
      word var←c49836;
      word var←c49868;
      word var←c49900;
      var←c49836 = BCK(length←v9580, 2147483647);
      var←c49868 = ((word) ((word) (var←c49836 + 31) >> 5) << 2);
      var←c49900 = XR←NewObject((4 + var←c49868), (* (( (ptr) gf←c60076)+12) ));
      (*  (ptr) var←c49900 ) = var←c49836;
      bitVec←v9624 = var←c49900;
      };
SOURCE(16124, 25)
   (void) SetAllBits←P1620(bitVec←v9624, 0);
SOURCE(16023, 126)
   return(bitVec←v9624);
   }

static void SetAllBits←P1620(bitVec←v9684, bool←v9712)
   word bitVec←v9684;
   word bool←v9712;
   {
   /* SetAllBits: */ 
SOURCE(16154, 102)
SOURCE(16207, 49)
   {
      register word i←v21892 = 0;
      register word noName←c49932;
      noName←c49932 = (*  (ptr) bitVec←v9684 );
      if ((i←v21892 >= noName←c49932)) {
         goto lab←L100140;
         };
      lab←L100143: ;
SOURCE(16240, 16)
      {
         word limit262;
         word xs263;
         word x264;
         xs263 = (word) (
            limit262 = (*  (ptr) bitVec←v9684 ),
            BCK(i←v21892, limit262)
            );
         x264 = (word) ((( (bPt) bitVec←v9684)+4) + ((word) xs263 >> 3));
         xs263 = 8 - ((word) (xs263 & 7)+1);
         (*  (bPt) x264 ) = ((*  (bPt) x264 ) & ( ~ ((unsigned) 1 << xs263))) | (((bool←v9712 & 1)) << xs263);
         };
      i←v21892 = (i←v21892 + 1);
      if ((i←v21892 < noName←c49932)) {
         goto lab←L100143;
         };
      lab←L100140: ;
      };
   }

static word SomeSegCPInSeq←P1680(segNum←v9772, seq←v9800)
   word segNum←v9772;
   word seq←v9800;
   {
   word var←c9844;
   word cpCount←v21936;
   word var←c49964;
   /* SomeSegCPInSeq: */ 
SOURCE(16271, 219)
SOURCE(16341, 44)
   {
      word limit265;
      var←c49964 = (* (( (ptr) seq←v9800)+2) );
      cpCount←v21936 = (*  (ptr) (* ((( (ptr) var←c49964)+1)+(
            limit265 = (*  (ptr) var←c49964 ),
            BCK(segNum←v9772, limit265)
            )) ) );
      };
SOURCE(16387, 79)
   {
      register word j←v21980 = 0;
      register word noName←c49996;
      word var←c50060;
      noName←c49996 = cpCount←v21936;
      if ((j←v21980 >= noName←c49996)) {
         goto lab←L100144;
         };
      lab←L100147: ;
SOURCE(16417, 49)
      {
         word limit267;
         {
            word var←c50028;
            var←c50028 = (* (( (ptr) seq←v9800)+2) );
            {
               word limit266;
               var←c50060 = (* ((( (ptr) var←c50028)+1)+(
                     limit266 = (*  (ptr) var←c50028 ),
                     BCK(segNum←v9772, limit266)
                     )) );
               };
            };
         if (XR←ExtractField(var←c50060, 32 + (word) (
               limit267 = (*  (ptr) var←c50060 ),
               BCK(j←v21980, limit267)
               ), 1)) {
SOURCE(16454, 12)
            return(1);
            };
         };
      j←v21980 = (j←v21980 + 1);
      if ((j←v21980 < noName←c49996)) {
         goto lab←L100147;
         };
      lab←L100144: ;
      };
SOURCE(16477, 13)
   return(0);
   }

static word Union←P1740(a←v9904, b←v9932)
   word a←v9904;
   word b←v9932;
   {
   register ptr gf←c60108 =  (ptr) &globalframe;
   word union←v9976;
   word hiJoint←v22024;
   word uSeq←v22052 = 0;
   word aSeq←v22080;
   word aTraj←v22108;
   word bSeq←v22136;
   word bTraj←v22164;
   /* Union: */ 
SOURCE(16496, 1215)
SOURCE(16496, 1215)
   union←v9976 = 0;
SOURCE(16607, 33)
   aSeq←v22080 = XR←Narrow((* (( (ptr) a←v9904)+1) ), (* (( (ptr) gf←c60108)+5) ));
SOURCE(16642, 38)
   aTraj←v22108 = XR←Narrow((* (( (ptr) (*  (ptr) a←v9904 ))+1) ), (* (( (ptr) gf←c60108)+13) ));
SOURCE(16682, 33)
   bSeq←v22136 = XR←Narrow((* (( (ptr) b←v9932)+1) ), (* (( (ptr) gf←c60108)+5) ));
SOURCE(16717, 38)
   bTraj←v22164 = XR←Narrow((* (( (ptr) (*  (ptr) b←v9932 ))+1) ), (* (( (ptr) gf←c60108)+13) ));
SOURCE(16757, 22)
   if ((aTraj←v22108 != bTraj←v22164)) {
SOURCE(16779, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(16786, 28)
   if ((aSeq←v22080 == 0)) {
SOURCE(16805, 9)
      return(b←v9932);
      };
SOURCE(16834, 28)
   if ((bSeq←v22136 == 0)) {
SOURCE(16853, 9)
      return(a←v9904);
      };
SOURCE(16882, 31)
   if ((0 != (word) IsEmpty←P2220(aSeq←v22080))) {
SOURCE(16904, 9)
      return(b←v9932);
      };
SOURCE(16933, 31)
   if ((0 != (word) IsEmpty←P2220(bSeq←v22136))) {
SOURCE(16955, 9)
      return(a←v9904);
      };
SOURCE(16984, 34)
   if ((0 != (word) IsComplete←P2280(aSeq←v22080))) {
SOURCE(17009, 9)
      return(a←v9904);
      };
SOURCE(17038, 34)
   if ((0 != (word) IsComplete←P2280(bSeq←v22136))) {
SOURCE(17063, 9)
      return(b←v9932);
      };
SOURCE(17092, 25)
   uSeq←v22052 = (word) CreateEmpty←P180(aTraj←v22108);
SOURCE(17119, 308)
   {
      register word i←v22208 = 0;
      register word noName←c50092;
      noName←c50092 = (*  (ptr) (*  (ptr) uSeq←v22052 ) );
      if ((i←v22208 >= noName←c50092)) {
         goto lab←L100148;
         };
      lab←L100151: ;
      {
         word cpCount←v22252;
         word var←c50124;
SOURCE(17159, 40)
         {
            word limit268;
            var←c50124 = (* (( (ptr) aSeq←v22080)+2) );
            cpCount←v22252 = (*  (ptr) (* ((( (ptr) var←c50124)+1)+(
                  limit268 = (*  (ptr) var←c50124 ),
                  BCK(i←v22208, limit268)
                  )) ) );
            };
SOURCE(17201, 55)
         {
            word var←c50220;
            word var←c50156;
            var←c50220 = (*  (ptr) uSeq←v22052 );
            {
               word limit269;
               word limit270;
               word xs271;
               var←c50156 = (*  (ptr) aSeq←v22080 );
               if (XR←ExtractField(var←c50156, 32 + (word) (
                     limit269 = (*  (ptr) var←c50156 ),
                     BCK(i←v22208, limit269)
                     ), 1)) {
                  xs271 = (word) (
                     limit270 = (*  (ptr) var←c50220 ),
                     BCK(i←v22208, limit270)
                     );
                  (*  (bPt) ((( (bPt) var←c50220)+4) + ((word) xs271 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs271 & 7)+1));
                  }
               else {
                  {
                     word var←c50188;
                     var←c50188 = (*  (ptr) bSeq←v22136 );
                     {
                        word limit272;
                        word limit273;
                        word xs274;
                        word x275;
                        xs274 = (word) (
                           limit273 = (*  (ptr) var←c50220 ),
                           BCK(i←v22208, limit273)
                           );
                        x275 = (word) ((( (bPt) var←c50220)+4) + ((word) xs274 >> 3));
                        xs274 = 8 - ((word) (xs274 & 7)+1);
                        (*  (bPt) x275 ) = ((*  (bPt) x275 ) & ( ~ ((unsigned) 1 << xs274))) | (((XR←ExtractField(var←c50188, 32 + (word) (
/*1*/         limit272 = (*  (ptr) var←c50188 ),
/*1*/         BCK(i←v22208, limit272)
/*1*/         ), 1))) << xs274);
                        };
                     };
                  };
               };
            };
SOURCE(17258, 109)
         {
            register word j←v22296 = 0;
            register word noName←c50252;
            noName←c50252 = cpCount←v22252;
            if ((j←v22296 >= noName←c50252)) {
               goto lab←L100152;
               };
            lab←L100155: ;
SOURCE(17288, 79)
            {
               word var←c50444;
               word var←c50316;
               {
                  word var←c50412;
                  var←c50412 = (* (( (ptr) uSeq←v22052)+2) );
                  {
                     word limit276;
                     var←c50444 = (* ((( (ptr) var←c50412)+1)+(
                           limit276 = (*  (ptr) var←c50412 ),
                           BCK(i←v22208, limit276)
                           )) );
                     };
                  };
               {
                  word limit278;
                  word limit279;
                  word xs280;
                  {
                     word var←c50284;
                     var←c50284 = (* (( (ptr) aSeq←v22080)+2) );
                     {
                        word limit277;
                        var←c50316 = (* ((( (ptr) var←c50284)+1)+(
/*1*/   limit277 = (*  (ptr) var←c50284 ),
/*1*/   BCK(i←v22208, limit277)
/*1*/   )) );
                        };
                     };
                  if (XR←ExtractField(var←c50316, 32 + (word) (
                        limit278 = (*  (ptr) var←c50316 ),
                        BCK(j←v22296, limit278)
                        ), 1)) {
                     xs280 = (word) (
                        limit279 = (*  (ptr) var←c50444 ),
                        BCK(j←v22296, limit279)
                        );
                     (*  (bPt) ((( (bPt) var←c50444)+4) + ((word) xs280 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs280 & 7)+1));
                     }
                  else {
                     {
                        word var←c50380;
                        {
                           word var←c50348;
                           var←c50348 = (* (( (ptr) bSeq←v22136)+2) );
                           {
/*1*/   word limit281;
/*1*/   var←c50380 = (* ((( (ptr) var←c50348)+1)+(
/*1*/         limit281 = (*  (ptr) var←c50348 ),
/*1*/         BCK(i←v22208, limit281)
/*1*/         )) );
/*1*/   };
                           };
                        {
                           word limit282;
                           word limit283;
                           word xs284;
                           word x285;
                           xs284 = (word) (
/*1*/   limit283 = (*  (ptr) var←c50444 ),
/*1*/   BCK(j←v22296, limit283)
/*1*/   );
                           x285 = (word) ((( (bPt) var←c50444)+4) + ((word) xs284 >> 3));
                           xs284 = 8 - ((word) (xs284 & 7)+1);
                           (*  (bPt) x285 ) = ((*  (bPt) x285 ) & ( ~ ((unsigned) 1 << xs284))) | (((XR←ExtractField(var←c50380, 32 + (word) (
/*1*/            limit282 = (*  (ptr) var←c50380 ),
/*1*/            BCK(j←v22296, limit282)
/*1*/            ), 1))) << xs284);
                           };
                        };
                     };
                  };
               };
            j←v22296 = (j←v22296 + 1);
            if ((j←v22296 < noName←c50252)) {
               goto lab←L100155;
               };
            lab←L100152: ;
            };
SOURCE(17378, 49)
         {
            word var←c50540;
            word var←c50476;
            var←c50540 = (* (( (ptr) uSeq←v22052)+1) );
            {
               word limit286;
               word limit287;
               word xs288;
               var←c50476 = (* (( (ptr) aSeq←v22080)+1) );
               if (XR←ExtractField(var←c50476, 32 + (word) (
                     limit286 = (*  (ptr) var←c50476 ),
                     BCK(i←v22208, limit286)
                     ), 1)) {
                  xs288 = (word) (
                     limit287 = (*  (ptr) var←c50540 ),
                     BCK(i←v22208, limit287)
                     );
                  (*  (bPt) ((( (bPt) var←c50540)+4) + ((word) xs288 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs288 & 7)+1));
                  }
               else {
                  {
                     word var←c50508;
                     var←c50508 = (* (( (ptr) bSeq←v22136)+1) );
                     {
                        word limit289;
                        word limit290;
                        word xs291;
                        word x292;
                        xs291 = (word) (
                           limit290 = (*  (ptr) var←c50540 ),
                           BCK(i←v22208, limit290)
                           );
                        x292 = (word) ((( (bPt) var←c50540)+4) + ((word) xs291 >> 3));
                        xs291 = 8 - ((word) (xs291 & 7)+1);
                        (*  (bPt) x292 ) = ((*  (bPt) x292 ) & ( ~ ((unsigned) 1 << xs291))) | (((XR←ExtractField(var←c50508, 32 + (word) (
/*1*/         limit289 = (*  (ptr) var←c50508 ),
/*1*/         BCK(i←v22208, limit289)
/*1*/         ), 1))) << xs291);
                        };
                     };
                  };
               };
            };
         };
      i←v22208 = (i←v22208 + 1);
      if ((i←v22208 < noName←c50092)) {
         goto lab←L100151;
         };
      lab←L100148: ;
      };
SOURCE(17438, 27)
   {
      word idx293;
      hiJoint←v22024 = (
         idx293 = (word) ((*  (ptr) (* (( (ptr) uSeq←v22052)+1) ) ) - 1),
         SGNCK(idx293)
         );
      };
SOURCE(17467, 67)
   {
      word var←c50636;
      word var←c50572;
      var←c50636 = (* (( (ptr) uSeq←v22052)+1) );
      {
         word limit294;
         word limit295;
         word xs296;
         var←c50572 = (* (( (ptr) aSeq←v22080)+1) );
         if (XR←ExtractField(var←c50572, 32 + (word) (
               limit294 = (*  (ptr) var←c50572 ),
               BCK(hiJoint←v22024, limit294)
               ), 1)) {
            xs296 = (word) (
               limit295 = (*  (ptr) var←c50636 ),
               BCK(hiJoint←v22024, limit295)
               );
            (*  (bPt) ((( (bPt) var←c50636)+4) + ((word) xs296 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs296 & 7)+1));
            }
         else {
            {
               word var←c50604;
               var←c50604 = (* (( (ptr) bSeq←v22136)+1) );
               {
                  word limit297;
                  word limit298;
                  word xs299;
                  word x300;
                  xs299 = (word) (
                     limit298 = (*  (ptr) var←c50636 ),
                     BCK(hiJoint←v22024, limit298)
                     );
                  x300 = (word) ((( (bPt) var←c50636)+4) + ((word) xs299 >> 3));
                  xs299 = 8 - ((word) (xs299 & 7)+1);
                  (*  (bPt) x300 ) = ((*  (bPt) x300 ) & ( ~ ((unsigned) 1 << xs299))) | (((XR←ExtractField(var←c50604, 32 + (word) (
/*1*/   limit297 = (*  (ptr) var←c50604 ),
/*1*/   BCK(hiJoint←v22024, limit297)
/*1*/   ), 1))) << xs299);
                  };
               };
            };
         };
      };
SOURCE(17536, 35)
   (* (( (ptr) uSeq←v22052)+3) ) = (word) CountSegments←P2460(uSeq←v22052);
SOURCE(17573, 35)
   (* (( (ptr) uSeq←v22052)+4) ) = (word) CountJoints←P2520(uSeq←v22052);
SOURCE(17610, 49)
   (* (( (ptr) uSeq←v22052)+5) ) = (word) CountControlPoints←P2580(uSeq←v22052);
SOURCE(17661, 50)
   {
      word pd301;
      pd301 = (* (( (ptr) (* (( (ptr) gf←c60108)+208)/* var←c50668 */  ))+8) );
      union←v9976 = (word) ( *( (fPt) ((*  (ptr) pd301 ))))((*  (ptr) a←v9904 ), uSeq←v22052, pd301);
      };
SOURCE(16496, 1215)
   return(union←v9976);
   }

static word Difference←P1800(a←v10036, b←v10064)
   word a←v10036;
   word b←v10064;
   {
   register ptr gf←c60140 =  (ptr) &globalframe;
   word aMinusB←v10108;
   word hiJoint←v22340;
   word dSeq←v22368 = 0;
   word aSeq←v22396;
   word aTraj←v22424;
   word bSeq←v22452;
   word bTraj←v22480;
   /* Difference: */ 
SOURCE(17717, 909)
SOURCE(17717, 909)
   aMinusB←v10108 = 0;
SOURCE(17835, 33)
   aSeq←v22396 = XR←Narrow((* (( (ptr) a←v10036)+1) ), (* (( (ptr) gf←c60140)+5) ));
SOURCE(17870, 38)
   aTraj←v22424 = XR←Narrow((* (( (ptr) (*  (ptr) a←v10036 ))+1) ), (* (( (ptr) gf←c60140)+13) ));
SOURCE(17910, 33)
   bSeq←v22452 = XR←Narrow((* (( (ptr) b←v10064)+1) ), (* (( (ptr) gf←c60140)+5) ));
SOURCE(17945, 38)
   bTraj←v22480 = XR←Narrow((* (( (ptr) (*  (ptr) b←v10064 ))+1) ), (* (( (ptr) gf←c60140)+13) ));
SOURCE(17985, 25)
   dSeq←v22368 = (word) CreateEmpty←P180(aTraj←v22424);
SOURCE(18012, 323)
   {
      register word i←v22524 = 0;
      register word noName←c50700;
      noName←c50700 = (*  (ptr) (*  (ptr) aSeq←v22396 ) );
      if ((i←v22524 >= noName←c50700)) {
         goto lab←L100156;
         };
      lab←L100159: ;
      {
         word cpCount←v22568;
         word var←c50732;
SOURCE(18052, 40)
         {
            word limit302;
            var←c50732 = (* (( (ptr) aSeq←v22396)+2) );
            cpCount←v22568 = (*  (ptr) (* ((( (ptr) var←c50732)+1)+(
                  limit302 = (*  (ptr) var←c50732 ),
                  BCK(i←v22524, limit302)
                  )) ) );
            };
SOURCE(18094, 60)
         {
            word var←c50828;
            word var←c50764;
            var←c50828 = (*  (ptr) dSeq←v22368 );
            {
               word limit303;
               word limit308;
               word xs309;
               var←c50764 = (*  (ptr) aSeq←v22396 );
               if (XR←ExtractField(var←c50764, 32 + (word) (
                     limit303 = (*  (ptr) var←c50764 ),
                     BCK(i←v22524, limit303)
                     ), 1)) {
                  {
                     word var←c50796;
                     var←c50796 = (*  (ptr) bSeq←v22452 );
                     {
                        word limit304;
                        word limit305;
                        word xs306;
                        word x307;
                        xs306 = (word) (
                           limit305 = (*  (ptr) var←c50828 ),
                           BCK(i←v22524, limit305)
                           );
                        x307 = (word) ((( (bPt) var←c50828)+4) + ((word) xs306 >> 3));
                        xs306 = 8 - ((word) (xs306 & 7)+1);
                        (*  (bPt) x307 ) = ((*  (bPt) x307 ) & ( ~ ((unsigned) 1 << xs306))) | ((( ! XR←ExtractField(var←c50796, 32 + (word) (
/*1*/         limit304 = (*  (ptr) var←c50796 ),
/*1*/         BCK(i←v22524, limit304)
/*1*/         ), 1))) << xs306);
                        };
                     };
                  }
               else {
                  xs309 = (word) (
                     limit308 = (*  (ptr) var←c50828 ),
                     BCK(i←v22524, limit308)
                     );
                  (*  (bPt) ((( (bPt) var←c50828)+4) + ((word) xs309 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs309 & 7)+1));
                  };
               };
            };
SOURCE(18156, 114)
         {
            register word j←v22612 = 0;
            register word noName←c50860;
            noName←c50860 = cpCount←v22568;
            if ((j←v22612 >= noName←c50860)) {
               goto lab←L100160;
               };
            lab←L100163: ;
SOURCE(18186, 84)
            {
               word var←c51052;
               word var←c50924;
               {
                  word var←c51020;
                  var←c51020 = (* (( (ptr) dSeq←v22368)+2) );
                  {
                     word limit310;
                     var←c51052 = (* ((( (ptr) var←c51020)+1)+(
                           limit310 = (*  (ptr) var←c51020 ),
                           BCK(i←v22524, limit310)
                           )) );
                     };
                  };
               {
                  word limit312;
                  word limit318;
                  word xs319;
                  {
                     word var←c50892;
                     var←c50892 = (* (( (ptr) aSeq←v22396)+2) );
                     {
                        word limit311;
                        var←c50924 = (* ((( (ptr) var←c50892)+1)+(
/*1*/   limit311 = (*  (ptr) var←c50892 ),
/*1*/   BCK(i←v22524, limit311)
/*1*/   )) );
                        };
                     };
                  if (XR←ExtractField(var←c50924, 32 + (word) (
                        limit312 = (*  (ptr) var←c50924 ),
                        BCK(j←v22612, limit312)
                        ), 1)) {
                     {
                        word var←c50956;
                        word var←c50988;
                        {
                           word limit313;
                           var←c50956 = (* (( (ptr) bSeq←v22452)+2) );
                           var←c50988 = (* ((( (ptr) var←c50956)+1)+(
/*1*/      limit313 = (*  (ptr) var←c50956 ),
/*1*/      BCK(i←v22524, limit313)
/*1*/      )) );
                           };
                        {
                           word limit314;
                           word limit315;
                           word xs316;
                           word x317;
                           xs316 = (word) (
/*1*/   limit315 = (*  (ptr) var←c51052 ),
/*1*/   BCK(j←v22612, limit315)
/*1*/   );
                           x317 = (word) ((( (bPt) var←c51052)+4) + ((word) xs316 >> 3));
                           xs316 = 8 - ((word) (xs316 & 7)+1);
                           (*  (bPt) x317 ) = ((*  (bPt) x317 ) & ( ~ ((unsigned) 1 << xs316))) | ((( ! XR←ExtractField(var←c50988, 32 + (word) (
/*1*/            limit314 = (*  (ptr) var←c50988 ),
/*1*/            BCK(j←v22612, limit314)
/*1*/            ), 1))) << xs316);
                           };
                        };
                     }
                  else {
                     xs319 = (word) (
                        limit318 = (*  (ptr) var←c51052 ),
                        BCK(j←v22612, limit318)
                        );
                     (*  (bPt) ((( (bPt) var←c51052)+4) + ((word) xs319 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs319 & 7)+1));
                     };
                  };
               };
            j←v22612 = (j←v22612 + 1);
            if ((j←v22612 < noName←c50860)) {
               goto lab←L100163;
               };
            lab←L100160: ;
            };
SOURCE(18281, 54)
         {
            word var←c51148;
            word var←c51084;
            var←c51148 = (* (( (ptr) dSeq←v22368)+1) );
            {
               word limit320;
               word limit325;
               word xs326;
               var←c51084 = (* (( (ptr) aSeq←v22396)+1) );
               if (XR←ExtractField(var←c51084, 32 + (word) (
                     limit320 = (*  (ptr) var←c51084 ),
                     BCK(i←v22524, limit320)
                     ), 1)) {
                  {
                     word var←c51116;
                     var←c51116 = (* (( (ptr) bSeq←v22452)+1) );
                     {
                        word limit321;
                        word limit322;
                        word xs323;
                        word x324;
                        xs323 = (word) (
                           limit322 = (*  (ptr) var←c51148 ),
                           BCK(i←v22524, limit322)
                           );
                        x324 = (word) ((( (bPt) var←c51148)+4) + ((word) xs323 >> 3));
                        xs323 = 8 - ((word) (xs323 & 7)+1);
                        (*  (bPt) x324 ) = ((*  (bPt) x324 ) & ( ~ ((unsigned) 1 << xs323))) | ((( ! XR←ExtractField(var←c51116, 32 + (word) (
/*1*/         limit321 = (*  (ptr) var←c51116 ),
/*1*/         BCK(i←v22524, limit321)
/*1*/         ), 1))) << xs323);
                        };
                     };
                  }
               else {
                  xs326 = (word) (
                     limit325 = (*  (ptr) var←c51148 ),
                     BCK(i←v22524, limit325)
                     );
                  (*  (bPt) ((( (bPt) var←c51148)+4) + ((word) xs326 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs326 & 7)+1));
                  };
               };
            };
         };
      i←v22524 = (i←v22524 + 1);
      if ((i←v22524 < noName←c50700)) {
         goto lab←L100159;
         };
      lab←L100156: ;
      };
SOURCE(18346, 27)
   {
      word idx327;
      hiJoint←v22340 = (
         idx327 = (word) ((*  (ptr) (* (( (ptr) dSeq←v22368)+1) ) ) - 1),
         SGNCK(idx327)
         );
      };
SOURCE(18375, 72)
   {
      word var←c51244;
      word var←c51180;
      var←c51244 = (* (( (ptr) dSeq←v22368)+1) );
      {
         word limit328;
         word limit333;
         word xs334;
         var←c51180 = (* (( (ptr) aSeq←v22396)+1) );
         if (XR←ExtractField(var←c51180, 32 + (word) (
               limit328 = (*  (ptr) var←c51180 ),
               BCK(hiJoint←v22340, limit328)
               ), 1)) {
            {
               word var←c51212;
               var←c51212 = (* (( (ptr) bSeq←v22452)+1) );
               {
                  word limit329;
                  word limit330;
                  word xs331;
                  word x332;
                  xs331 = (word) (
                     limit330 = (*  (ptr) var←c51244 ),
                     BCK(hiJoint←v22340, limit330)
                     );
                  x332 = (word) ((( (bPt) var←c51244)+4) + ((word) xs331 >> 3));
                  xs331 = 8 - ((word) (xs331 & 7)+1);
                  (*  (bPt) x332 ) = ((*  (bPt) x332 ) & ( ~ ((unsigned) 1 << xs331))) | ((( ! XR←ExtractField(var←c51212, 32 + (word) (
/*1*/   limit329 = (*  (ptr) var←c51212 ),
/*1*/   BCK(hiJoint←v22340, limit329)
/*1*/   ), 1))) << xs331);
                  };
               };
            }
         else {
            xs334 = (word) (
               limit333 = (*  (ptr) var←c51244 ),
               BCK(hiJoint←v22340, limit333)
               );
            (*  (bPt) ((( (bPt) var←c51244)+4) + ((word) xs334 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs334 & 7)+1));
            };
         };
      };
SOURCE(18449, 35)
   (* (( (ptr) dSeq←v22368)+3) ) = (word) CountSegments←P2460(dSeq←v22368);
SOURCE(18486, 35)
   (* (( (ptr) dSeq←v22368)+4) ) = (word) CountJoints←P2520(dSeq←v22368);
SOURCE(18523, 49)
   (* (( (ptr) dSeq←v22368)+5) ) = (word) CountControlPoints←P2580(dSeq←v22368);
SOURCE(18574, 52)
   {
      word pd335;
      pd335 = (* (( (ptr) (* (( (ptr) gf←c60140)+208)/* var←c50668 */  ))+8) );
      aMinusB←v10108 = (word) ( *( (fPt) ((*  (ptr) pd335 ))))((*  (ptr) a←v10036 ), dSeq←v22368, pd335);
      };
SOURCE(17717, 909)
   return(aMinusB←v10108);
   }

static word Intersection←P1860(a←v10168, b←v10196)
   word a←v10168;
   word b←v10196;
   {
   register ptr gf←c60172 =  (ptr) &globalframe;
   word intersection←v10240;
   word hiJoint←v22656;
   word iSeq←v22684 = 0;
   word aSeq←v22712;
   word aTraj←v22740;
   word bSeq←v22768;
   word bTraj←v22796;
   /* Intersection: */ 
SOURCE(18632, 1184)
SOURCE(18632, 1184)
   intersection←v10240 = 0;
SOURCE(18757, 33)
   aSeq←v22712 = XR←Narrow((* (( (ptr) a←v10168)+1) ), (* (( (ptr) gf←c60172)+5) ));
SOURCE(18792, 38)
   aTraj←v22740 = XR←Narrow((* (( (ptr) (*  (ptr) a←v10168 ))+1) ), (* (( (ptr) gf←c60172)+13) ));
SOURCE(18832, 33)
   bSeq←v22768 = XR←Narrow((* (( (ptr) b←v10196)+1) ), (* (( (ptr) gf←c60172)+5) ));
SOURCE(18867, 38)
   bTraj←v22796 = XR←Narrow((* (( (ptr) (*  (ptr) b←v10196 ))+1) ), (* (( (ptr) gf←c60172)+13) ));
SOURCE(18907, 22)
   if ((aTraj←v22740 != bTraj←v22796)) {
SOURCE(18929, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(18936, 25)
   iSeq←v22684 = (word) CreateEmpty←P180(aTraj←v22740);
SOURCE(18963, 86)
   if ((aSeq←v22712 == 0) || (0 != (word) IsEmpty←P2220(aSeq←v22712))) {
SOURCE(18999, 50)
      {
         word pd336;
         pd336 = (* (( (ptr) (* (( (ptr) gf←c60172)+208)/* var←c50668 */  ))+8) );
         return((word) ( *( (fPt) ((*  (ptr) pd336 ))))((*  (ptr) a←v10168 ), iSeq←v22684, pd336));
         };
      };
SOURCE(19051, 86)
   if ((bSeq←v22768 == 0) || (0 != (word) IsEmpty←P2220(bSeq←v22768))) {
SOURCE(19087, 50)
      {
         word pd337;
         pd337 = (* (( (ptr) (* (( (ptr) gf←c60172)+208)/* var←c50668 */  ))+8) );
         return((word) ( *( (fPt) ((*  (ptr) pd337 ))))((*  (ptr) a←v10168 ), iSeq←v22684, pd337));
         };
      };
SOURCE(19139, 55)
   if ( ( (0 != (word) IsComplete←P2280(aSeq←v22712)) ? (0 != (word) IsComplete←P2280(bSeq←v22768)) : 0 ) ) {
SOURCE(19185, 9)
      return(a←v10168);
      };
SOURCE(19214, 310)
   {
      register word i←v22840 = 0;
      register word noName←c51340;
      noName←c51340 = (*  (ptr) (*  (ptr) aSeq←v22712 ) );
      if ((i←v22840 >= noName←c51340)) {
         goto lab←L100164;
         };
      lab←L100167: ;
      {
         word cpCount←v22884;
         word var←c51372;
SOURCE(19254, 40)
         {
            word limit338;
            var←c51372 = (* (( (ptr) aSeq←v22712)+2) );
            cpCount←v22884 = (*  (ptr) (* ((( (ptr) var←c51372)+1)+(
                  limit338 = (*  (ptr) var←c51372 ),
                  BCK(i←v22840, limit338)
                  )) ) );
            };
SOURCE(19296, 56)
         {
            word var←c51468;
            word var←c51404;
            var←c51468 = (*  (ptr) iSeq←v22684 );
            {
               word limit339;
               word limit344;
               word xs345;
               var←c51404 = (*  (ptr) aSeq←v22712 );
               if (XR←ExtractField(var←c51404, 32 + (word) (
                     limit339 = (*  (ptr) var←c51404 ),
                     BCK(i←v22840, limit339)
                     ), 1)) {
                  {
                     word var←c51436;
                     var←c51436 = (*  (ptr) bSeq←v22768 );
                     {
                        word limit340;
                        word limit341;
                        word xs342;
                        word x343;
                        xs342 = (word) (
                           limit341 = (*  (ptr) var←c51468 ),
                           BCK(i←v22840, limit341)
                           );
                        x343 = (word) ((( (bPt) var←c51468)+4) + ((word) xs342 >> 3));
                        xs342 = 8 - ((word) (xs342 & 7)+1);
                        (*  (bPt) x343 ) = ((*  (bPt) x343 ) & ( ~ ((unsigned) 1 << xs342))) | (((XR←ExtractField(var←c51436, 32 + (word) (
/*1*/         limit340 = (*  (ptr) var←c51436 ),
/*1*/         BCK(i←v22840, limit340)
/*1*/         ), 1))) << xs342);
                        };
                     };
                  }
               else {
                  xs345 = (word) (
                     limit344 = (*  (ptr) var←c51468 ),
                     BCK(i←v22840, limit344)
                     );
                  (*  (bPt) ((( (bPt) var←c51468)+4) + ((word) xs345 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs345 & 7)+1));
                  };
               };
            };
SOURCE(19354, 109)
         {
            register word j←v22928 = 0;
            register word noName←c51500;
            noName←c51500 = cpCount←v22884;
            if ((j←v22928 >= noName←c51500)) {
               goto lab←L100168;
               };
            lab←L100171: ;
SOURCE(19384, 79)
            {
               word var←c51692;
               word var←c51564;
               {
                  word var←c51660;
                  var←c51660 = (* (( (ptr) iSeq←v22684)+2) );
                  {
                     word limit346;
                     var←c51692 = (* ((( (ptr) var←c51660)+1)+(
                           limit346 = (*  (ptr) var←c51660 ),
                           BCK(i←v22840, limit346)
                           )) );
                     };
                  };
               {
                  word limit348;
                  word limit354;
                  word xs355;
                  {
                     word var←c51532;
                     var←c51532 = (* (( (ptr) aSeq←v22712)+2) );
                     {
                        word limit347;
                        var←c51564 = (* ((( (ptr) var←c51532)+1)+(
/*1*/   limit347 = (*  (ptr) var←c51532 ),
/*1*/   BCK(i←v22840, limit347)
/*1*/   )) );
                        };
                     };
                  if (XR←ExtractField(var←c51564, 32 + (word) (
                        limit348 = (*  (ptr) var←c51564 ),
                        BCK(j←v22928, limit348)
                        ), 1)) {
                     {
                        word var←c51628;
                        {
                           word var←c51596;
                           var←c51596 = (* (( (ptr) bSeq←v22768)+2) );
                           {
/*1*/   word limit349;
/*1*/   var←c51628 = (* ((( (ptr) var←c51596)+1)+(
/*1*/         limit349 = (*  (ptr) var←c51596 ),
/*1*/         BCK(i←v22840, limit349)
/*1*/         )) );
/*1*/   };
                           };
                        {
                           word limit350;
                           word limit351;
                           word xs352;
                           word x353;
                           xs352 = (word) (
/*1*/   limit351 = (*  (ptr) var←c51692 ),
/*1*/   BCK(j←v22928, limit351)
/*1*/   );
                           x353 = (word) ((( (bPt) var←c51692)+4) + ((word) xs352 >> 3));
                           xs352 = 8 - ((word) (xs352 & 7)+1);
                           (*  (bPt) x353 ) = ((*  (bPt) x353 ) & ( ~ ((unsigned) 1 << xs352))) | (((XR←ExtractField(var←c51628, 32 + (word) (
/*1*/            limit350 = (*  (ptr) var←c51628 ),
/*1*/            BCK(j←v22928, limit350)
/*1*/            ), 1))) << xs352);
                           };
                        };
                     }
                  else {
                     xs355 = (word) (
                        limit354 = (*  (ptr) var←c51692 ),
                        BCK(j←v22928, limit354)
                        );
                     (*  (bPt) ((( (bPt) var←c51692)+4) + ((word) xs355 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs355 & 7)+1));
                     };
                  };
               };
            j←v22928 = (j←v22928 + 1);
            if ((j←v22928 < noName←c51500)) {
               goto lab←L100171;
               };
            lab←L100168: ;
            };
SOURCE(19474, 50)
         {
            word var←c51788;
            word var←c51724;
            var←c51788 = (* (( (ptr) iSeq←v22684)+1) );
            {
               word limit356;
               word limit361;
               word xs362;
               var←c51724 = (* (( (ptr) aSeq←v22712)+1) );
               if (XR←ExtractField(var←c51724, 32 + (word) (
                     limit356 = (*  (ptr) var←c51724 ),
                     BCK(i←v22840, limit356)
                     ), 1)) {
                  {
                     word var←c51756;
                     var←c51756 = (* (( (ptr) bSeq←v22768)+1) );
                     {
                        word limit357;
                        word limit358;
                        word xs359;
                        word x360;
                        xs359 = (word) (
                           limit358 = (*  (ptr) var←c51788 ),
                           BCK(i←v22840, limit358)
                           );
                        x360 = (word) ((( (bPt) var←c51788)+4) + ((word) xs359 >> 3));
                        xs359 = 8 - ((word) (xs359 & 7)+1);
                        (*  (bPt) x360 ) = ((*  (bPt) x360 ) & ( ~ ((unsigned) 1 << xs359))) | (((XR←ExtractField(var←c51756, 32 + (word) (
/*1*/         limit357 = (*  (ptr) var←c51756 ),
/*1*/         BCK(i←v22840, limit357)
/*1*/         ), 1))) << xs359);
                        };
                     };
                  }
               else {
                  xs362 = (word) (
                     limit361 = (*  (ptr) var←c51788 ),
                     BCK(i←v22840, limit361)
                     );
                  (*  (bPt) ((( (bPt) var←c51788)+4) + ((word) xs362 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs362 & 7)+1));
                  };
               };
            };
         };
      i←v22840 = (i←v22840 + 1);
      if ((i←v22840 < noName←c51340)) {
         goto lab←L100167;
         };
      lab←L100164: ;
      };
SOURCE(19535, 27)
   {
      word idx363;
      hiJoint←v22656 = (
         idx363 = (word) ((*  (ptr) (* (( (ptr) iSeq←v22684)+1) ) ) - 1),
         SGNCK(idx363)
         );
      };
SOURCE(19564, 68)
   {
      word var←c51884;
      word var←c51820;
      var←c51884 = (* (( (ptr) iSeq←v22684)+1) );
      {
         word limit364;
         word limit369;
         word xs370;
         var←c51820 = (* (( (ptr) aSeq←v22712)+1) );
         if (XR←ExtractField(var←c51820, 32 + (word) (
               limit364 = (*  (ptr) var←c51820 ),
               BCK(hiJoint←v22656, limit364)
               ), 1)) {
            {
               word var←c51852;
               var←c51852 = (* (( (ptr) bSeq←v22768)+1) );
               {
                  word limit365;
                  word limit366;
                  word xs367;
                  word x368;
                  xs367 = (word) (
                     limit366 = (*  (ptr) var←c51884 ),
                     BCK(hiJoint←v22656, limit366)
                     );
                  x368 = (word) ((( (bPt) var←c51884)+4) + ((word) xs367 >> 3));
                  xs367 = 8 - ((word) (xs367 & 7)+1);
                  (*  (bPt) x368 ) = ((*  (bPt) x368 ) & ( ~ ((unsigned) 1 << xs367))) | (((XR←ExtractField(var←c51852, 32 + (word) (
/*1*/   limit365 = (*  (ptr) var←c51852 ),
/*1*/   BCK(hiJoint←v22656, limit365)
/*1*/   ), 1))) << xs367);
                  };
               };
            }
         else {
            xs370 = (word) (
               limit369 = (*  (ptr) var←c51884 ),
               BCK(hiJoint←v22656, limit369)
               );
            (*  (bPt) ((( (bPt) var←c51884)+4) + ((word) xs370 >> 3)) ) &= ~((unsigned) 1 << 8 - ((word) (xs370 & 7)+1));
            };
         };
      };
SOURCE(19634, 35)
   (* (( (ptr) iSeq←v22684)+3) ) = (word) CountSegments←P2460(iSeq←v22684);
SOURCE(19671, 35)
   (* (( (ptr) iSeq←v22684)+4) ) = (word) CountJoints←P2520(iSeq←v22684);
SOURCE(19708, 49)
   (* (( (ptr) iSeq←v22684)+5) ) = (word) CountControlPoints←P2580(iSeq←v22684);
SOURCE(19759, 57)
   {
      word pd371;
      pd371 = (* (( (ptr) (* (( (ptr) gf←c60172)+208)/* var←c50668 */  ))+8) );
      intersection←v10240 = (word) ( *( (fPt) ((*  (ptr) pd371 ))))((*  (ptr) a←v10168 ), iSeq←v22684, pd371);
      };
SOURCE(18632, 1184)
   return(intersection←v10240);
   }

static void TrajMovingParts←P1920(formal←c0545, slice←v10300, parts←v10328, editConstraints←v10356, bezierDrag←v10384)
   word formal←c0545;
   word slice←v10300;
   word parts←v10328;
   word editConstraints←v10356;
   W5 bezierDrag←v10384;
   {
   register ptr gf←c60204 =  (ptr) &globalframe;
   word background←v10428;
   word overlay←v10456;
   word rubber←v10484;
   word drag←v10512;
   word seq←v22972;
   word traj←v23000;
   /* TrajMovingParts: */ 
SOURCE(19822, 461)
SOURCE(19822, 461)
   background←v10428 = 0;
SOURCE(19822, 461)
   overlay←v10456 = 0;
SOURCE(19822, 461)
   rubber←v10484 = 0;
SOURCE(19822, 461)
   drag←v10512 = 0;
SOURCE(20008, 30)
   seq←v22972 = XR←Narrow(parts←v10328, (* (( (ptr) gf←c60204)+5) ));
SOURCE(20040, 35)
   traj←v23000 = XR←Narrow((* (( (ptr) slice←v10300)+1) ), (* (( (ptr) gf←c60204)+13) ));
SOURCE(20077, 16)
   background←v10428 = 0;
SOURCE(20095, 16)
   drag←v10512 = (word) Copy←P540(seq←v22972);
SOURCE(20113, 74)
   rubber←v10484 = (word) FindRubberFromSelected←P1980(slice←v10300, parts←v10328, editConstraints←v10356, bezierDrag←v10384)
   ;
SOURCE(20189, 30)
   overlay←v10456 = (word) CreateComplete←P240(traj←v23000);
SOURCE(20221, 29)
   (void) DDifferenceSeq←P1320(overlay←v10456, drag←v10512);
SOURCE(20252, 31)
   (void) DDifferenceSeq←P1320(overlay←v10456, rubber←v10484);
   /* removed tail goto */ 
   (*  (ptr) formal←c0545 ) = background←v10428;
   (* (( (ptr) formal←c0545)+1) ) = overlay←v10456;
   (* (( (ptr) formal←c0545)+2) ) = rubber←v10484;
   (* (( (ptr) formal←c0545)+3) ) = drag←v10512;
   return;
   }

static word FindRubberFromSelected←P1980(slice←v10572, parts←v10600, editConstraints←v10628, bezierDrag←v10656)
   word slice←v10572;
   word parts←v10600;
   word editConstraints←v10628;
   W5 bezierDrag←v10656;
   {
   register ptr gf←c60236 =  (ptr) &globalframe;
   word rubber←v10700;
   word rubberBabbyBuggyBumper←v23044 = 0;
   word trajParts←v23072;
   word trajData←v23100;
   /* FindRubberFromSelected: */ 
SOURCE(20289, 720)
SOURCE(20289, 720)
   rubber←v10700 = 0;
SOURCE(20489, 36)
   trajParts←v23072 = XR←Narrow(parts←v10600, (* (( (ptr) gf←c60236)+5) ));
SOURCE(20527, 39)
   trajData←v23100 = XR←Narrow((* (( (ptr) slice←v10572)+1) ), (* (( (ptr) gf←c60236)+13) ));
SOURCE(20568, 30)
   rubber←v10700 = (word) CreateEmpty←P180(trajData←v23100);
SOURCE(20600, 67)
   {
      word pd372;
      pd372 = (* (( (ptr) (* (( (ptr) gf←c60236)+208)/* var←c50668 */  ))+8) );
      rubberBabbyBuggyBumper←v23044 = (word) ( *( (fPt) ((*  (ptr) pd372 ))))(slice←v10572, rubber←v10700, pd372);
      };
SOURCE(20669, 69)
   (void) AddNonSelectedControlPointSegments←P1080(rubberBabbyBuggyBumper←v23044, trajParts←v23072);
SOURCE(20740, 62)
   (void) AddNonSelectedJointSegments←P1020(rubberBabbyBuggyBumper←v23044, trajParts←v23072);
SOURCE(20804, 80)
   if ((editConstraints←v10628 != 0)) {
SOURCE(20835, 49)
      (void) AddConstrained←P1140(rubberBabbyBuggyBumper←v23044, trajParts←v23072);
      };
SOURCE(20886, 123)
   if ( ( (0 != bezierDrag←v10656.f0) ? (trajData←v23100 == (* (( (ptr) bezierDrag←v10656.f3)+1) )) : 0 ) ) {
SOURCE(20956, 53)
      (void) AddNewBezier←P1200(rubber←v10700, trajParts←v23072, bezierDrag←v10656.f2);
      };
SOURCE(20289, 720)
   return(rubber←v10700);
   }

static word Augment←P2040(descriptor←v10760, trajEnd←v10788, extend←v10816)
   word descriptor←v10760;
   word trajEnd←v10788;
   word extend←v10816;
   {
   register ptr gf←c60268 =  (ptr) &globalframe;
   word bigger←v10860;
   word seq←v23144;
   word traj←v23172;
   /* Augment: */ 
SOURCE(21046, 1869)
SOURCE(21046, 1869)
   bigger←v10860 = 0;
SOURCE(21161, 41)
   seq←v23144 = XR←Narrow((* (( (ptr) descriptor←v10760)+1) ), (* (( (ptr) gf←c60268)+5) ));
SOURCE(21204, 46)
   traj←v23172 = XR←Narrow((* (( (ptr) (*  (ptr) descriptor←v10760 ))+1) ), (* (( (ptr) gf←c60268)+13) ));
SOURCE(21252, 98)
   if (((*  (ptr) traj←v23172 ) == 1) || ((*  (ptr) traj←v23172 ) == 0)) {
SOURCE(21300, 42)
      bigger←v10860 = (word) AugmentClosed←P2100(descriptor←v10760, extend←v10816);
SOURCE(21344, 6)
      return(bigger←v10860);
      };
SOURCE(21355, 26)
   bigger←v10860 = (word) CreateEmpty←P180(traj←v23172);
SOURCE(21383, 30)
   (* (( (ptr) bigger←v10860)+3) ) = (* (( (ptr) seq←v23144)+3) );
SOURCE(21415, 48)
   (* (( (ptr) bigger←v10860)+5) ) = (* (( (ptr) seq←v23144)+5) );
SOURCE(21465, 34)
   (* (( (ptr) bigger←v10860)+4) ) = (* (( (ptr) seq←v23144)+4) );
SOURCE(21501, 1414)
   if ((trajEnd←v10788 == 1)) {
      {
         word var←c52268;
         word var←c52300;
SOURCE(21524, 234)
         {
            register word i←v23216 = 0;
            register word noName←c51916;
            noName←c51916 = (*  (ptr) (*  (ptr) seq←v23144 ) );
            if ((i←v23216 >= noName←c51916)) {
               goto lab←L100173;
               };
            lab←L100176: ;
            {
               word cpCount←v23260;
               word var←c51948;
SOURCE(21563, 39)
               {
                  word limit373;
                  var←c51948 = (* (( (ptr) seq←v23144)+2) );
                  cpCount←v23260 = (*  (ptr) (* ((( (ptr) var←c51948)+1)+(
                        limit373 = (*  (ptr) var←c51948 ),
                        BCK(i←v23216, limit373)
                        )) ) );
                  };
SOURCE(21604, 36)
               {
                  word var←c52012;
                  var←c52012 = (*  (ptr) bigger←v10860 );
                  {
                     word var←c51980;
                     var←c51980 = (*  (ptr) seq←v23144 );
                     {
                        word limit374;
                        word limit375;
                        word xs376;
                        word x377;
                        xs376 = (word) (
                           limit375 = (*  (ptr) var←c52012 ),
                           BCK(i←v23216, limit375)
                           );
                        x377 = (word) ((( (bPt) var←c52012)+4) + ((word) xs376 >> 3));
                        xs376 = 8 - ((word) (xs376 & 7)+1);
                        (*  (bPt) x377 ) = ((*  (bPt) x377 ) & ( ~ ((unsigned) 1 << xs376))) | (((XR←ExtractField(var←c51980, 32 + (word) (
/*1*/         limit374 = (*  (ptr) var←c51980 ),
/*1*/         BCK(i←v23216, limit374)
/*1*/         ), 1))) << xs376);
                        };
                     };
                  };
SOURCE(21642, 32)
               {
                  word var←c52076;
                  var←c52076 = (* (( (ptr) bigger←v10860)+1) );
                  {
                     word var←c52044;
                     var←c52044 = (* (( (ptr) seq←v23144)+1) );
                     {
                        word limit378;
                        word limit379;
                        word xs380;
                        word x381;
                        xs380 = (word) (
                           limit379 = (*  (ptr) var←c52076 ),
                           BCK(i←v23216, limit379)
                           );
                        x381 = (word) ((( (bPt) var←c52076)+4) + ((word) xs380 >> 3));
                        xs380 = 8 - ((word) (xs380 & 7)+1);
                        (*  (bPt) x381 ) = ((*  (bPt) x381 ) & ( ~ ((unsigned) 1 << xs380))) | (((XR←ExtractField(var←c52044, 32 + (word) (
/*1*/         limit378 = (*  (ptr) var←c52044 ),
/*1*/         BCK(i←v23216, limit378)
/*1*/         ), 1))) << xs380);
                        };
                     };
                  };
SOURCE(21676, 82)
               {
                  register word j←v23304 = 0;
                  register word noName←c52108;
                  noName←c52108 = cpCount←v23260;
                  if ((j←v23304 >= noName←c52108)) {
                     goto lab←L100177;
                     };
                  lab←L100180: ;
SOURCE(21706, 52)
                  {
                     word var←c52236;
                     {
                        word var←c52204;
                        var←c52204 = (* (( (ptr) bigger←v10860)+2) );
                        {
                           word limit382;
                           var←c52236 = (* ((( (ptr) var←c52204)+1)+(
/*1*/      limit382 = (*  (ptr) var←c52204 ),
/*1*/      BCK(i←v23216, limit382)
/*1*/      )) );
                           };
                        };
                     {
                        word var←c52172;
                        {
                           word var←c52140;
                           var←c52140 = (* (( (ptr) seq←v23144)+2) );
                           {
/*1*/   word limit383;
/*1*/   var←c52172 = (* ((( (ptr) var←c52140)+1)+(
/*1*/         limit383 = (*  (ptr) var←c52140 ),
/*1*/         BCK(i←v23216, limit383)
/*1*/         )) );
/*1*/   };
                           };
                        {
                           word limit384;
                           word limit385;
                           word xs386;
                           word x387;
                           xs386 = (word) (
/*1*/   limit385 = (*  (ptr) var←c52236 ),
/*1*/   BCK(j←v23304, limit385)
/*1*/   );
                           x387 = (word) ((( (bPt) var←c52236)+4) + ((word) xs386 >> 3));
                           xs386 = 8 - ((word) (xs386 & 7)+1);
                           (*  (bPt) x387 ) = ((*  (bPt) x387 ) & ( ~ ((unsigned) 1 << xs386))) | (((XR←ExtractField(var←c52172, 32 + (word) (
/*1*/            limit384 = (*  (ptr) var←c52172 ),
/*1*/            BCK(j←v23304, limit384)
/*1*/            ), 1))) << xs386);
                           };
                        };
                     };
                  j←v23304 = (j←v23304 + 1);
                  if ((j←v23304 < noName←c52108)) {
                     goto lab←L100180;
                     };
                  lab←L100177: ;
                  };
               };
            i←v23216 = (i←v23216 + 1);
            if ((i←v23216 < noName←c51916)) {
               goto lab←L100176;
               };
            lab←L100173: ;
            };
SOURCE(21778, 476)
         {
            word limit388;
            var←c52268 = ((*  (ptr) (* (( (ptr) seq←v23144)+1) ) ) - 1);
            var←c52300 = (* (( (ptr) seq←v23144)+1) );
            if (XR←ExtractField(var←c52300, 32 + (word) (
                  limit388 = (*  (ptr) var←c52300 ),
                  BCK(var←c52268, limit388)
                  ), 1)) {
SOURCE(21846, 40)
               {
                  word var←c52332;
                  word var←c52364;
                  var←c52332 = ((*  (ptr) (* (( (ptr) seq←v23144)+1) ) ) - 1);
                  var←c52364 = (* (( (ptr) bigger←v10860)+1) );
                  {
                     word limit389;
                     word xs390;
                     xs390 = (word) (
                        limit389 = (*  (ptr) var←c52364 ),
                        BCK(var←c52332, limit389)
                        );
                     (*  (bPt) ((( (bPt) var←c52364)+4) + ((word) xs390 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs390 & 7)+1));
                     };
                  };
SOURCE(21920, 334)
               if ((0 != extend←v10816)) {
SOURCE(21937, 40)
                  {
                     word var←c52396;
                     var←c52396 = (*  (ptr) bigger←v10860 );
                     {
                        word idx391;
                        word limit392;
                        word xs393;
                        xs393 = (word) (
                           idx391 = (*  (ptr) (*  (ptr) seq←v23144 ) ),
                           limit392 = (*  (ptr) var←c52396 ),
                           BCK(idx391, limit392)
                           );
                        (*  (bPt) ((( (bPt) var←c52396)+4) + ((word) xs393 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs393 & 7)+1));
                        };
                     };
SOURCE(21979, 36)
                  {
                     word var←c52428;
                     var←c52428 = (* (( (ptr) bigger←v10860)+1) );
                     {
                        word idx394;
                        word limit395;
                        word xs396;
                        xs396 = (word) (
                           idx394 = (*  (ptr) (* (( (ptr) seq←v23144)+1) ) ),
                           limit395 = (*  (ptr) var←c52428 ),
                           BCK(idx394, limit395)
                           );
                        (*  (bPt) ((( (bPt) var←c52428)+4) + ((word) xs396 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs396 & 7)+1));
                        };
                     };
SOURCE(22017, 56)
                  {
                     word var←c52460;
                     var←c52460 = (* (( (ptr) bigger←v10860)+2) );
                     {
                        word idx397;
                        word limit398;
                        (void) SetAllBits←P1620((* ((( (ptr) var←c52460)+1)+(
/*1*/      idx397 = (*  (ptr) (*  (ptr) seq←v23144 ) ),
/*1*/      limit398 = (*  (ptr) var←c52460 ),
/*1*/      BCK(idx397, limit398)
/*1*/      )) ), 1);
                        };
                     };
SOURCE(22075, 37)
                  (* (( (ptr) bigger←v10860)+3) ) = ((* (( (ptr) bigger←v10860)+3) ) + 1);
SOURCE(22114, 41)
                  (* (( (ptr) bigger←v10860)+4) ) = ((* (( (ptr) bigger←v10860)+4) ) + 1);
SOURCE(22157, 97)
                  {
                     word var←c52492;
                     word var←c01169;
                     {
                        word idx399;
                        word limit400;
                        var←c52492 = (* (( (ptr) bigger←v10860)+2) );
                        var←c01169 = (*  (ptr) (* ((( (ptr) var←c52492)+1)+(
/*1*/   idx399 = (*  (ptr) (*  (ptr) seq←v23144 ) ),
/*1*/   limit400 = (*  (ptr) var←c52492 ),
/*1*/   BCK(idx399, limit400)
/*1*/   )) ) );
                        };
                     {
                        word idx401;
                        (* (( (ptr) bigger←v10860)+5) ) = (
                           idx401 = (word) ((* (( (ptr) bigger←v10860)+5) ) + var←c01169),
                           SGNCK(idx401)
                           );
                        };
                     };
                  };
               };
            };
         };
      }
   else {
      {
         word var←c53004;
SOURCE(22269, 242)
         {
            register word i←v23348 = 0;
            register word noName←c52524;
            noName←c52524 = (*  (ptr) (*  (ptr) seq←v23144 ) );
            if ((i←v23348 >= noName←c52524)) {
               goto lab←L100181;
               };
            lab←L100184: ;
            {
               word cpCount←v23392;
               word var←c52556;
SOURCE(22308, 39)
               {
                  word limit402;
                  var←c52556 = (* (( (ptr) seq←v23144)+2) );
                  cpCount←v23392 = (*  (ptr) (* ((( (ptr) var←c52556)+1)+(
                        limit402 = (*  (ptr) var←c52556 ),
                        BCK(i←v23348, limit402)
                        )) ) );
                  };
SOURCE(22349, 38)
               {
                  word var←c52620;
                  word var←c52652;
                  var←c52620 = (i←v23348 + 1);
                  var←c52652 = (*  (ptr) bigger←v10860 );
                  {
                     word var←c52588;
                     var←c52588 = (*  (ptr) seq←v23144 );
                     {
                        word limit403;
                        word limit404;
                        word xs405;
                        word x406;
                        xs405 = (word) (
                           limit404 = (*  (ptr) var←c52652 ),
                           BCK(var←c52620, limit404)
                           );
                        x406 = (word) ((( (bPt) var←c52652)+4) + ((word) xs405 >> 3));
                        xs405 = 8 - ((word) (xs405 & 7)+1);
                        (*  (bPt) x406 ) = ((*  (bPt) x406 ) & ( ~ ((unsigned) 1 << xs405))) | (((XR←ExtractField(var←c52588, 32 + (word) (
/*1*/         limit403 = (*  (ptr) var←c52588 ),
/*1*/         BCK(i←v23348, limit403)
/*1*/         ), 1))) << xs405);
                        };
                     };
                  };
SOURCE(22389, 36)
               {
                  word var←c52748;
                  word var←c52780;
                  var←c52748 = (i←v23348 + 2);
                  var←c52780 = (* (( (ptr) bigger←v10860)+1) );
                  {
                     word var←c52684;
                     word var←c52716;
                     var←c52684 = (i←v23348 + 1);
                     var←c52716 = (* (( (ptr) seq←v23144)+1) );
                     {
                        word limit407;
                        word limit408;
                        word xs409;
                        word x410;
                        xs409 = (word) (
                           limit408 = (*  (ptr) var←c52780 ),
                           BCK(var←c52748, limit408)
                           );
                        x410 = (word) ((( (bPt) var←c52780)+4) + ((word) xs409 >> 3));
                        xs409 = 8 - ((word) (xs409 & 7)+1);
                        (*  (bPt) x410 ) = ((*  (bPt) x410 ) & ( ~ ((unsigned) 1 << xs409))) | (((XR←ExtractField(var←c52716, 32 + (word) (
/*1*/         limit407 = (*  (ptr) var←c52716 ),
/*1*/         BCK(var←c52684, limit407)
/*1*/         ), 1))) << xs409);
                        };
                     };
                  };
SOURCE(22427, 84)
               {
                  register word j←v23436 = 0;
                  register word noName←c52812;
                  noName←c52812 = cpCount←v23392;
                  if ((j←v23436 >= noName←c52812)) {
                     goto lab←L100185;
                     };
                  lab←L100188: ;
SOURCE(22457, 54)
                  {
                     word var←c52972;
                     {
                        word var←c52908;
                        word var←c52940;
                        var←c52908 = (i←v23348 + 1);
                        var←c52940 = (* (( (ptr) bigger←v10860)+2) );
                        {
                           word limit411;
                           var←c52972 = (* ((( (ptr) var←c52940)+1)+(
/*1*/      limit411 = (*  (ptr) var←c52940 ),
/*1*/      BCK(var←c52908, limit411)
/*1*/      )) );
                           };
                        };
                     {
                        word var←c52876;
                        {
                           word var←c52844;
                           var←c52844 = (* (( (ptr) seq←v23144)+2) );
                           {
/*1*/   word limit412;
/*1*/   var←c52876 = (* ((( (ptr) var←c52844)+1)+(
/*1*/         limit412 = (*  (ptr) var←c52844 ),
/*1*/         BCK(i←v23348, limit412)
/*1*/         )) );
/*1*/   };
                           };
                        {
                           word limit413;
                           word limit414;
                           word xs415;
                           word x416;
                           xs415 = (word) (
/*1*/   limit414 = (*  (ptr) var←c52972 ),
/*1*/   BCK(j←v23436, limit414)
/*1*/   );
                           x416 = (word) ((( (bPt) var←c52972)+4) + ((word) xs415 >> 3));
                           xs415 = 8 - ((word) (xs415 & 7)+1);
                           (*  (bPt) x416 ) = ((*  (bPt) x416 ) & ( ~ ((unsigned) 1 << xs415))) | (((XR←ExtractField(var←c52876, 32 + (word) (
/*1*/            limit413 = (*  (ptr) var←c52876 ),
/*1*/            BCK(j←v23436, limit413)
/*1*/            ), 1))) << xs415);
                           };
                        };
                     };
                  j←v23436 = (j←v23436 + 1);
                  if ((j←v23436 < noName←c52812)) {
                     goto lab←L100188;
                     };
                  lab←L100185: ;
                  };
               };
            i←v23348 = (i←v23348 + 1);
            if ((i←v23348 < noName←c52524)) {
               goto lab←L100184;
               };
            lab←L100181: ;
            };
SOURCE(22531, 384)
         {
            word limit417;
            var←c53004 = (* (( (ptr) seq←v23144)+1) );
            if (XR←ExtractField(var←c53004, 32 + (word) (
                  limit417 = (*  (ptr) var←c53004 ),
                  BCK(0, limit417)
                  ), 1)) {
SOURCE(22582, 23)
               {
                  word var←c53036;
                  var←c53036 = (* (( (ptr) bigger←v10860)+1) );
                  {
                     word limit418;
                     word xs419;
                     xs419 = (word) (
                        limit418 = (*  (ptr) var←c53036 ),
                        BCK(1, limit418)
                        );
                     (*  (bPt) ((( (bPt) var←c53036)+4) + ((word) xs419 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs419 & 7)+1));
                     };
                  };
SOURCE(22639, 276)
               if ((0 != extend←v10816)) {
SOURCE(22656, 25)
                  {
                     word var←c53068;
                     var←c53068 = (*  (ptr) bigger←v10860 );
                     {
                        word limit420;
                        word xs421;
                        xs421 = (word) (
                           limit420 = (*  (ptr) var←c53068 ),
                           BCK(0, limit420)
                           );
                        (*  (bPt) ((( (bPt) var←c53068)+4) + ((word) xs421 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs421 & 7)+1));
                        };
                     };
SOURCE(22683, 23)
                  {
                     word var←c53100;
                     var←c53100 = (* (( (ptr) bigger←v10860)+1) );
                     {
                        word limit422;
                        word xs423;
                        xs423 = (word) (
                           limit422 = (*  (ptr) var←c53100 ),
                           BCK(0, limit422)
                           );
                        (*  (bPt) ((( (bPt) var←c53100)+4) + ((word) xs423 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs423 & 7)+1));
                        };
                     };
SOURCE(22708, 41)
                  {
                     word var←c53132;
                     var←c53132 = (* (( (ptr) bigger←v10860)+2) );
                     {
                        word limit424;
                        (void) SetAllBits←P1620((* ((( (ptr) var←c53132)+1)+(
/*1*/      limit424 = (*  (ptr) var←c53132 ),
/*1*/      BCK(0, limit424)
/*1*/      )) ), 1);
                        };
                     };
SOURCE(22751, 37)
                  (* (( (ptr) bigger←v10860)+3) ) = ((* (( (ptr) bigger←v10860)+3) ) + 1);
SOURCE(22790, 41)
                  (* (( (ptr) bigger←v10860)+4) ) = ((* (( (ptr) bigger←v10860)+4) ) + 1);
SOURCE(22833, 82)
                  {
                     word var←c53164;
                     word var←c01170;
                     {
                        word limit425;
                        var←c53164 = (* (( (ptr) bigger←v10860)+2) );
                        var←c01170 = (*  (ptr) (* ((( (ptr) var←c53164)+1)+(
/*1*/   limit425 = (*  (ptr) var←c53164 ),
/*1*/   BCK(0, limit425)
/*1*/   )) ) );
                        };
                     {
                        word idx426;
                        (* (( (ptr) bigger←v10860)+5) ) = (
                           idx426 = (word) ((* (( (ptr) bigger←v10860)+5) ) + var←c01170),
                           SGNCK(idx426)
                           );
                        };
                     };
                  };
               };
            };
         };
      };
SOURCE(21046, 1869)
   return(bigger←v10860);
   }

static word AugmentClosed←P2100(descriptor←v10920, extend←v10948)
   word descriptor←v10920;
   word extend←v10948;
   {
   register ptr gf←c60300 =  (ptr) &globalframe;
   word bigger←v10992;
   word seq←v23480;
   word traj←v23508;
   /* AugmentClosed: */ 
SOURCE(22928, 1137)
SOURCE(22928, 1137)
   bigger←v10992 = 0;
SOURCE(23024, 41)
   seq←v23480 = XR←Narrow((* (( (ptr) descriptor←v10920)+1) ), (* (( (ptr) gf←c60300)+5) ));
SOURCE(23067, 46)
   traj←v23508 = XR←Narrow((* (( (ptr) (*  (ptr) descriptor←v10920 ))+1) ), (* (( (ptr) gf←c60300)+13) ));
   {
      word var←c53676;
      word var←c53708;
SOURCE(23115, 278)
      {
         word var←c53196;
         word var←c53228;
         word var←c53260;
         word var←c53292;
         var←c53196 = (word) NewBitVector←P1560(((*  (ptr) (*  (ptr) seq←v23480 ) ) + 1));
         var←c53228 = (word) NewBitVector←P1560((*  (ptr) ((* (( (ptr) seq←v23480)+1) )) ));
         var←c53260 = (word) NewBitMatrix←P1500(traj←v23508);
         var←c53292 = XR←NewObject(24, (* (( (ptr) gf←c60300)+5) ));
         (*  (ptr) var←c53292 ) = var←c53196;
         (* (( (ptr) var←c53292)+1) ) = var←c53228;
         (* (( (ptr) var←c53292)+2) ) = var←c53260;
         (* (( (ptr) var←c53292)+3) ) = (* (( (ptr) seq←v23480)+3) );
         (* (( (ptr) var←c53292)+4) ) = (* (( (ptr) seq←v23480)+4) );
         (* (( (ptr) var←c53292)+5) ) = (* (( (ptr) seq←v23480)+5) );
         bigger←v10992 = var←c53292;
         };
SOURCE(23395, 234)
      {
         register word i←v23552 = 0;
         register word noName←c53324;
         noName←c53324 = (*  (ptr) (*  (ptr) seq←v23480 ) );
         if ((i←v23552 >= noName←c53324)) {
            goto lab←L100189;
            };
         lab←L100192: ;
         {
            word cpCount←v23596;
            word var←c53356;
SOURCE(23434, 39)
            {
               word limit427;
               var←c53356 = (* (( (ptr) seq←v23480)+2) );
               cpCount←v23596 = (*  (ptr) (* ((( (ptr) var←c53356)+1)+(
                     limit427 = (*  (ptr) var←c53356 ),
                     BCK(i←v23552, limit427)
                     )) ) );
               };
SOURCE(23475, 36)
            {
               word var←c53420;
               var←c53420 = (*  (ptr) bigger←v10992 );
               {
                  word var←c53388;
                  var←c53388 = (*  (ptr) seq←v23480 );
                  {
                     word limit428;
                     word limit429;
                     word xs430;
                     word x431;
                     xs430 = (word) (
                        limit429 = (*  (ptr) var←c53420 ),
                        BCK(i←v23552, limit429)
                        );
                     x431 = (word) ((( (bPt) var←c53420)+4) + ((word) xs430 >> 3));
                     xs430 = 8 - ((word) (xs430 & 7)+1);
                     (*  (bPt) x431 ) = ((*  (bPt) x431 ) & ( ~ ((unsigned) 1 << xs430))) | (((XR←ExtractField(var←c53388, 32 + (word) (
/*1*/      limit428 = (*  (ptr) var←c53388 ),
/*1*/      BCK(i←v23552, limit428)
/*1*/      ), 1))) << xs430);
                     };
                  };
               };
SOURCE(23513, 32)
            {
               word var←c53484;
               var←c53484 = (* (( (ptr) bigger←v10992)+1) );
               {
                  word var←c53452;
                  var←c53452 = (* (( (ptr) seq←v23480)+1) );
                  {
                     word limit432;
                     word limit433;
                     word xs434;
                     word x435;
                     xs434 = (word) (
                        limit433 = (*  (ptr) var←c53484 ),
                        BCK(i←v23552, limit433)
                        );
                     x435 = (word) ((( (bPt) var←c53484)+4) + ((word) xs434 >> 3));
                     xs434 = 8 - ((word) (xs434 & 7)+1);
                     (*  (bPt) x435 ) = ((*  (bPt) x435 ) & ( ~ ((unsigned) 1 << xs434))) | (((XR←ExtractField(var←c53452, 32 + (word) (
/*1*/      limit432 = (*  (ptr) var←c53452 ),
/*1*/      BCK(i←v23552, limit432)
/*1*/      ), 1))) << xs434);
                     };
                  };
               };
SOURCE(23547, 82)
            {
               register word j←v23640 = 0;
               register word noName←c53516;
               noName←c53516 = cpCount←v23596;
               if ((j←v23640 >= noName←c53516)) {
                  goto lab←L100193;
                  };
               lab←L100196: ;
SOURCE(23577, 52)
               {
                  word var←c53644;
                  {
                     word var←c53612;
                     var←c53612 = (* (( (ptr) bigger←v10992)+2) );
                     {
                        word limit436;
                        var←c53644 = (* ((( (ptr) var←c53612)+1)+(
/*1*/   limit436 = (*  (ptr) var←c53612 ),
/*1*/   BCK(i←v23552, limit436)
/*1*/   )) );
                        };
                     };
                  {
                     word var←c53580;
                     {
                        word var←c53548;
                        var←c53548 = (* (( (ptr) seq←v23480)+2) );
                        {
                           word limit437;
                           var←c53580 = (* ((( (ptr) var←c53548)+1)+(
/*1*/      limit437 = (*  (ptr) var←c53548 ),
/*1*/      BCK(i←v23552, limit437)
/*1*/      )) );
                           };
                        };
                     {
                        word limit438;
                        word limit439;
                        word xs440;
                        word x441;
                        xs440 = (word) (
                           limit439 = (*  (ptr) var←c53644 ),
                           BCK(j←v23640, limit439)
                           );
                        x441 = (word) ((( (bPt) var←c53644)+4) + ((word) xs440 >> 3));
                        xs440 = 8 - ((word) (xs440 & 7)+1);
                        (*  (bPt) x441 ) = ((*  (bPt) x441 ) & ( ~ ((unsigned) 1 << xs440))) | (((XR←ExtractField(var←c53580, 32 + (word) (
/*1*/         limit438 = (*  (ptr) var←c53580 ),
/*1*/         BCK(j←v23640, limit438)
/*1*/         ), 1))) << xs440);
                        };
                     };
                  };
               j←v23640 = (j←v23640 + 1);
               if ((j←v23640 < noName←c53516)) {
                  goto lab←L100196;
                  };
               lab←L100193: ;
               };
            };
         i←v23552 = (i←v23552 + 1);
         if ((i←v23552 < noName←c53324)) {
            goto lab←L100192;
            };
         lab←L100189: ;
         };
SOURCE(23671, 394)
      {
         word limit442;
         var←c53676 = ((*  (ptr) (* (( (ptr) seq←v23480)+1) ) ) - 1);
         var←c53708 = (* (( (ptr) seq←v23480)+1) );
         if (XR←ExtractField(var←c53708, 32 + (word) (
               limit442 = (*  (ptr) var←c53708 ),
               BCK(var←c53676, limit442)
               ), 1)) {
SOURCE(23739, 40)
            {
               word var←c53740;
               word var←c53772;
               var←c53740 = ((*  (ptr) (* (( (ptr) seq←v23480)+1) ) ) - 1);
               var←c53772 = (* (( (ptr) bigger←v10992)+1) );
               {
                  word limit443;
                  word xs444;
                  xs444 = (word) (
                     limit443 = (*  (ptr) var←c53772 ),
                     BCK(var←c53740, limit443)
                     );
                  (*  (bPt) ((( (bPt) var←c53772)+4) + ((word) xs444 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs444 & 7)+1));
                  };
               };
SOURCE(23813, 252)
            if ((0 != extend←v10948)) {
SOURCE(23830, 40)
               {
                  word var←c53804;
                  var←c53804 = (*  (ptr) bigger←v10992 );
                  {
                     word idx445;
                     word limit446;
                     word xs447;
                     xs447 = (word) (
                        idx445 = (*  (ptr) (*  (ptr) seq←v23480 ) ),
                        limit446 = (*  (ptr) var←c53804 ),
                        BCK(idx445, limit446)
                        );
                     (*  (bPt) ((( (bPt) var←c53804)+4) + ((word) xs447 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs447 & 7)+1));
                     };
                  };
SOURCE(23872, 56)
               {
                  word var←c53836;
                  var←c53836 = (* (( (ptr) bigger←v10992)+2) );
                  {
                     word idx448;
                     word limit449;
                     (void) SetAllBits←P1620((* ((( (ptr) var←c53836)+1)+(
/*1*/   idx448 = (*  (ptr) (*  (ptr) seq←v23480 ) ),
/*1*/   limit449 = (*  (ptr) var←c53836 ),
/*1*/   BCK(idx448, limit449)
/*1*/   )) ), 1);
                     };
                  };
SOURCE(23930, 37)
               (* (( (ptr) bigger←v10992)+3) ) = ((* (( (ptr) bigger←v10992)+3) ) + 1);
SOURCE(23969, 96)
               {
                  word var←c53868;
                  word var←c01171;
                  {
                     word idx450;
                     word limit451;
                     var←c53868 = (* (( (ptr) bigger←v10992)+2) );
                     var←c01171 = (*  (ptr) (* ((( (ptr) var←c53868)+1)+(
                           idx450 = (*  (ptr) (*  (ptr) seq←v23480 ) ),
                           limit451 = (*  (ptr) var←c53868 ),
                           BCK(idx450, limit451)
                           )) ) );
                     };
                  {
                     word idx452;
                     (* (( (ptr) bigger←v10992)+5) ) = (
                        idx452 = (word) ((* (( (ptr) bigger←v10992)+5) ) + var←c01171),
                        SGNCK(idx452)
                        );
                     };
                  };
               };
            };
         };
      };
SOURCE(22928, 1137)
   return(bigger←v10992);
   }

static word IsObsolete←P2160(seq←v11052)
   word seq←v11052;
   {
   word var←c11096;
   /* IsObsolete: */ 
SOURCE(24078, 25)
SOURCE(24138, 5)
   (void) XR←RaiseUnnamedError();
   }

static word IsEmpty←P2220(seq←v11156)
   word seq←v11156;
   {
   word var←c11200;
   /* IsEmpty: */ 
SOURCE(24150, 147)
SOURCE(24207, 90)
   {
      word tc453;
      if ((seq←v11156 == 0)) {
         tc453 =  (word)  (unsigned) 1;
         }
      else {
         if ( ( ((* (( (ptr) seq←v11156)+4) ) == 0) ? ((* (( (ptr) seq←v11156)+3) ) == 0) : 0 ) ) {
            tc453 =  (word)  (unsigned) ((* (( (ptr) seq←v11156)+5) ) == 0);
            }
         else {
            tc453 =  (word)  (unsigned) 0;
            };
         };
      return(tc453);
      };
   }

static word IsComplete←P2280(seq←v11260)
   word seq←v11260;
   {
   word var←c11304;
   /* IsComplete: */ 
SOURCE(24303, 149)
SOURCE(24363, 89)
   {
      word tc454;
      if ( ( (seq←v11260 != 0) ? ((* (( (ptr) seq←v11260)+3) ) == (*  (ptr) (*  (ptr) seq←v11260 ) )) : 0 ) ) {
         tc454 =  (word)  (unsigned) ((* (( (ptr) seq←v11260)+4) ) == (*  (ptr) (* (( (ptr) seq←v11260)+1) ) ));
         }
      else {
         tc454 =  (word)  (unsigned) 0;
         };
      return(tc454);
      };
   }

static word IsConstrained←P2340(descriptor←v11364, segNum←v11392, cPNum←v11420, editConstraints←v11448)
   word descriptor←v11364;
   word segNum←v11392;
   word cPNum←v11420;
   word editConstraints←v11448;
   {
   register ptr gf←c60332 =  (ptr) &globalframe;
   word var←c11492;
   word seq←v23684;
   word previous←v23712;
   word following←v23740;
   /* IsConstrained: */ 
SOURCE(24458, 771)
SOURCE(24588, 41)
   seq←v23684 = XR←Narrow((* (( (ptr) descriptor←v11364)+1) ), (* (( (ptr) gf←c60332)+5) ));
SOURCE(24657, 551)
   {
      word tc455;
      word pd456;
      pd456 = (* (( (ptr) (* (( (ptr) gf←c60332)+204)/* var←c43500 */  ))+29) );
      if (((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd456 ))))((*  (ptr) descriptor←v11364 ), segNum←v11392, pd456) ) ) == (* (
         ( (ptr) gf←c60332)+26) ))) {
         tc455 =  (word) (editConstraints←v11448 != 0);
         }
      else {
         tc455 =  (word) 0;
         };
      if (tc455) {
SOURCE(24761, 447)
         if ((cPNum←v11420 == 0)) {
            {
               word var←c53932;
SOURCE(24781, 62)
               {
                  word pd457;
                  pd457 = (* (( (ptr) (* (( (ptr) gf←c60332)+204)/* var←c43500 */  ))+42) );
                  previous←v23712 = (word) ( *( (fPt) ((*  (ptr) pd457 ))))((*  (ptr) descriptor←v11364 ), segNum←v11392, pd457);
                  };
SOURCE(24845, 143)
               {
                  word tc458;
                  word tc459;
                  word pd460;
                  word limit462;
                  if (( (int)previous←v23712 !=  (int) (word) -1)) {
                     pd460 = (* (( (ptr) (* (( (ptr) gf←c60332)+204)/* var←c43500 */  ))+29) );
                     tc459 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd460 ))))((*  (ptr) descriptor←v11364 ), SGNCK(previous←v23712)
                        , pd460) ) ) == (* (( (ptr) gf←c60332)+26) ));
                     }
                  else {
                     tc459 =  (word) 0;
                     };
                  if (tc459) {
                     {
                        word var←c53900;
                        var←c53900 = (* (( (ptr) seq←v23684)+2) );
                        {
                           word limit461;
                           var←c53932 = (* ((( (ptr) var←c53900)+1)+(
/*1*/      limit461 = (*  (ptr) var←c53900 ),
/*1*/      BCK(previous←v23712, limit461)
/*1*/      )) );
                           };
                        };
                     tc458 =  (word) XR←ExtractField(var←c53932, 32 + (word) (
                           limit462 = (*  (ptr) var←c53932 ),
                           BCK(1, limit462)
                           ), 1);
                     }
                  else {
                     tc458 =  (word) 0;
                     };
                  if (tc458) {
SOURCE(24975, 13)
                     return(1);
                     };
                  };
               };
            }
         else {
            {
               word var←c53996;
SOURCE(24997, 64)
               {
                  word pd463;
                  pd463 = (* (( (ptr) (* (( (ptr) gf←c60332)+204)/* var←c43500 */  ))+43) );
                  following←v23740 = (word) ( *( (fPt) ((*  (ptr) pd463 ))))((*  (ptr) descriptor←v11364 ), segNum←v11392, pd463);
                  };
SOURCE(25063, 145)
               {
                  word tc464;
                  word tc465;
                  word pd466;
                  word limit468;
                  if (( (int)following←v23740 !=  (int) (word) -1)) {
                     pd466 = (* (( (ptr) (* (( (ptr) gf←c60332)+204)/* var←c43500 */  ))+29) );
                     tc465 =  (word) ((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd466 ))))((*  (ptr) descriptor←v11364 ), SGNCK(following←v23740)
                        , pd466) ) ) == (* (( (ptr) gf←c60332)+26) ));
                     }
                  else {
                     tc465 =  (word) 0;
                     };
                  if (tc465) {
                     {
                        word var←c53964;
                        var←c53964 = (* (( (ptr) seq←v23684)+2) );
                        {
                           word limit467;
                           var←c53996 = (* ((( (ptr) var←c53964)+1)+(
/*1*/      limit467 = (*  (ptr) var←c53964 ),
/*1*/      BCK(following←v23740, limit467)
/*1*/      )) );
                           };
                        };
                     tc464 =  (word) XR←ExtractField(var←c53996, 32 + (word) (
                           limit468 = (*  (ptr) var←c53996 ),
                           BCK(0, limit468)
                           ), 1);
                     }
                  else {
                     tc464 =  (word) 0;
                     };
                  if (tc464) {
SOURCE(25196, 12)
                     return(1);
                     };
                  };
               };
            };
         };
      };
SOURCE(25216, 13)
   return(0);
   }

static word Overlap←P2400(descriptor1←v11552, descriptor2←v11580)
   word descriptor1←v11552;
   word descriptor2←v11580;
   {
   register ptr gf←c60364 =  (ptr) &globalframe;
   word var←c11624;
   word hiSegment←v23784;
   word hiJoint←v23812;
   word seq1←v23840;
   word traj1←v23868;
   word seq2←v23896;
   word traj2←v23924;
   /* Overlap: */ 
SOURCE(25235, 793)
SOURCE(25344, 43)
   seq1←v23840 = XR←Narrow((* (( (ptr) descriptor1←v11552)+1) ), (* (( (ptr) gf←c60364)+5) ));
SOURCE(25389, 48)
   traj1←v23868 = XR←Narrow((* (( (ptr) (*  (ptr) descriptor1←v11552 ))+1) ), (* (( (ptr) gf←c60364)+13) ));
SOURCE(25439, 43)
   seq2←v23896 = XR←Narrow((* (( (ptr) descriptor2←v11580)+1) ), (* (( (ptr) gf←c60364)+5) ));
SOURCE(25484, 48)
   traj2←v23924 = XR←Narrow((* (( (ptr) (*  (ptr) descriptor2←v11580 ))+1) ), (* (( (ptr) gf←c60364)+13) ));
SOURCE(25534, 22)
   if ((traj1←v23868 != traj2←v23924)) {
SOURCE(25556, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(25563, 29)
   hiSegment←v23784 = (*  (ptr) (*  (ptr) seq1←v23840 ) );
SOURCE(25594, 90)
   {
      register word i←v23968 = 0;
      register word noName←c54028;
      word var←c54060;
      word var←c54092;
      noName←c54028 = hiSegment←v23784;
      if ((i←v23968 >= noName←c54028)) {
         goto lab←L100197;
         };
      lab←L100200: ;
SOURCE(25626, 58)
      {
         word tc469;
         word limit470;
         word limit471;
         var←c54060 = (*  (ptr) seq1←v23840 );
         if (XR←ExtractField(var←c54060, 32 + (word) (
               limit470 = (*  (ptr) var←c54060 ),
               BCK(i←v23968, limit470)
               ), 1)) {
            var←c54092 = (*  (ptr) seq2←v23896 );
            tc469 =  (word) XR←ExtractField(var←c54092, 32 + (word) (
                  limit471 = (*  (ptr) var←c54092 ),
                  BCK(i←v23968, limit471)
                  ), 1);
            }
         else {
            tc469 =  (word) 0;
            };
         if (tc469) {
SOURCE(25672, 12)
            return(1);
            };
         };
      i←v23968 = (i←v23968 + 1);
      if ((i←v23968 < noName←c54028)) {
         goto lab←L100200;
         };
      lab←L100197: ;
      };
SOURCE(25695, 25)
   hiJoint←v23812 = (*  (ptr) (* (( (ptr) seq1←v23840)+1) ) );
SOURCE(25722, 84)
   {
      register word i←v24012 = 0;
      register word noName←c54124;
      word var←c54156;
      word var←c54188;
      noName←c54124 = hiJoint←v23812;
      if ((i←v24012 >= noName←c54124)) {
         goto lab←L100201;
         };
      lab←L100204: ;
SOURCE(25752, 54)
      {
         word tc472;
         word limit473;
         word limit474;
         var←c54156 = (* (( (ptr) seq1←v23840)+1) );
         if (XR←ExtractField(var←c54156, 32 + (word) (
               limit473 = (*  (ptr) var←c54156 ),
               BCK(i←v24012, limit473)
               ), 1)) {
            var←c54188 = (* (( (ptr) seq2←v23896)+1) );
            tc472 =  (word) XR←ExtractField(var←c54188, 32 + (word) (
                  limit474 = (*  (ptr) var←c54188 ),
                  BCK(i←v24012, limit474)
                  ), 1);
            }
         else {
            tc472 =  (word) 0;
            };
         if (tc472) {
SOURCE(25794, 12)
            return(1);
            };
         };
      i←v24012 = (i←v24012 + 1);
      if ((i←v24012 < noName←c54124)) {
         goto lab←L100204;
         };
      lab←L100201: ;
      };
SOURCE(25817, 178)
   {
      register word i←v24056 = 0;
      register word noName←c54220;
      noName←c54220 = hiSegment←v23784;
      if ((i←v24056 >= noName←c54220)) {
         goto lab←L100205;
         };
      lab←L100208: ;
      {
         word cpCount←v24100;
         word var←c54252;
SOURCE(25849, 40)
         {
            word limit475;
            var←c54252 = (* (( (ptr) seq1←v23840)+2) );
            cpCount←v24100 = (*  (ptr) (* ((( (ptr) var←c54252)+1)+(
                  limit475 = (*  (ptr) var←c54252 ),
                  BCK(i←v24056, limit475)
                  )) ) );
            };
SOURCE(25891, 104)
         {
            register word j←v24144 = 0;
            register word noName←c54284;
            word var←c54348;
            word var←c54412;
            noName←c54284 = cpCount←v24100;
            if ((j←v24144 >= noName←c54284)) {
               goto lab←L100209;
               };
            lab←L100212: ;
SOURCE(25921, 74)
            {
               word tc476;
               word limit478;
               word limit480;
               {
                  word var←c54316;
                  var←c54316 = (* (( (ptr) seq1←v23840)+2) );
                  {
                     word limit477;
                     var←c54348 = (* ((( (ptr) var←c54316)+1)+(
                           limit477 = (*  (ptr) var←c54316 ),
                           BCK(i←v24056, limit477)
                           )) );
                     };
                  };
               if (XR←ExtractField(var←c54348, 32 + (word) (
                     limit478 = (*  (ptr) var←c54348 ),
                     BCK(j←v24144, limit478)
                     ), 1)) {
                  {
                     word var←c54380;
                     var←c54380 = (* (( (ptr) seq2←v23896)+2) );
                     {
                        word limit479;
                        var←c54412 = (* ((( (ptr) var←c54380)+1)+(
/*1*/   limit479 = (*  (ptr) var←c54380 ),
/*1*/   BCK(i←v24056, limit479)
/*1*/   )) );
                        };
                     };
                  tc476 =  (word) XR←ExtractField(var←c54412, 32 + (word) (
                        limit480 = (*  (ptr) var←c54412 ),
                        BCK(j←v24144, limit480)
                        ), 1);
                  }
               else {
                  tc476 =  (word) 0;
                  };
               if (tc476) {
SOURCE(25983, 12)
                  return(1);
                  };
               };
            j←v24144 = (j←v24144 + 1);
            if ((j←v24144 < noName←c54284)) {
               goto lab←L100212;
               };
            lab←L100209: ;
            };
         };
      i←v24056 = (i←v24056 + 1);
      if ((i←v24056 < noName←c54220)) {
         goto lab←L100208;
         };
      lab←L100205: ;
      };
SOURCE(26015, 13)
   return(0);
   }

static word CountSegments←P2460(seq←v11684)
   word seq←v11684;
   {
   word segCount←v11728;
   word hiSegment←v24188;
   /* CountSegments: */ 
SOURCE(26034, 183)
SOURCE(26034, 183)
   segCount←v11728 = 0;
SOURCE(26103, 33)
   hiSegment←v24188 = (*  (ptr) (*  (ptr) seq←v11684 ) );
SOURCE(26138, 79)
   {
      register word i←v24232 = 0;
      register word noName←c54444;
      word var←c54476;
      noName←c54444 = hiSegment←v24188;
      if ((i←v24232 >= noName←c54444)) {
         goto lab←L100213;
         };
      lab←L100216: ;
SOURCE(26170, 47)
      {
         word limit481;
         var←c54476 = (*  (ptr) seq←v11684 );
         if (XR←ExtractField(var←c54476, 32 + (word) (
               limit481 = (*  (ptr) var←c54476 ),
               BCK(i←v24232, limit481)
               ), 1)) {
SOURCE(26194, 23)
            segCount←v11728 = (segCount←v11728 + 1);
            };
         };
      i←v24232 = (i←v24232 + 1);
      if ((i←v24232 < noName←c54444)) {
         goto lab←L100216;
         };
      lab←L100213: ;
      };
SOURCE(26034, 183)
   return(segCount←v11728);
   }

static word CountJoints←P2520(seq←v11788)
   word seq←v11788;
   {
   word jointCount←v11832;
   word hiJoint←v24276;
   /* CountJoints: */ 
SOURCE(26232, 179)
SOURCE(26232, 179)
   jointCount←v11832 = 0;
SOURCE(26301, 29)
   hiJoint←v24276 = (*  (ptr) (* (( (ptr) seq←v11788)+1) ) );
SOURCE(26332, 79)
   {
      register word i←v24320 = 0;
      register word noName←c54508;
      word var←c54540;
      noName←c54508 = hiJoint←v24276;
      if ((i←v24320 >= noName←c54508)) {
         goto lab←L100217;
         };
      lab←L100220: ;
SOURCE(26362, 49)
      {
         word limit482;
         var←c54540 = (* (( (ptr) seq←v11788)+1) );
         if (XR←ExtractField(var←c54540, 32 + (word) (
               limit482 = (*  (ptr) var←c54540 ),
               BCK(i←v24320, limit482)
               ), 1)) {
SOURCE(26384, 27)
            jointCount←v11832 = (jointCount←v11832 + 1);
            };
         };
      i←v24320 = (i←v24320 + 1);
      if ((i←v24320 < noName←c54508)) {
         goto lab←L100220;
         };
      lab←L100217: ;
      };
SOURCE(26232, 179)
   return(jointCount←v11832);
   }

static word CountControlPoints←P2580(seq←v11892)
   word seq←v11892;
   {
   word count←v11936;
   word hiSegment←v24364;
   /* CountControlPoints: */ 
SOURCE(26426, 258)
SOURCE(26426, 258)
   count←v11936 = 0;
SOURCE(26497, 33)
   hiSegment←v24364 = (*  (ptr) (*  (ptr) seq←v11892 ) );
SOURCE(26532, 152)
   {
      register word i←v24408 = 0;
      register word noName←c54572;
      noName←c54572 = hiSegment←v24364;
      if ((i←v24408 >= noName←c54572)) {
         goto lab←L100221;
         };
      lab←L100224: ;
      {
         word cpCount←v24452;
         word var←c54604;
SOURCE(26564, 39)
         {
            word limit483;
            var←c54604 = (* (( (ptr) seq←v11892)+2) );
            cpCount←v24452 = (*  (ptr) (* ((( (ptr) var←c54604)+1)+(
                  limit483 = (*  (ptr) var←c54604 ),
                  BCK(i←v24408, limit483)
                  )) ) );
            };
SOURCE(26605, 79)
         {
            register word j←v24496 = 0;
            register word noName←c54636;
            word var←c54700;
            noName←c54636 = cpCount←v24452;
            if ((j←v24496 >= noName←c54636)) {
               goto lab←L100225;
               };
            lab←L100228: ;
SOURCE(26635, 49)
            {
               word limit485;
               {
                  word var←c54668;
                  var←c54668 = (* (( (ptr) seq←v11892)+2) );
                  {
                     word limit484;
                     var←c54700 = (* ((( (ptr) var←c54668)+1)+(
                           limit484 = (*  (ptr) var←c54668 ),
                           BCK(i←v24408, limit484)
                           )) );
                     };
                  };
               if (XR←ExtractField(var←c54700, 32 + (word) (
                     limit485 = (*  (ptr) var←c54700 ),
                     BCK(j←v24496, limit485)
                     ), 1)) {
SOURCE(26667, 17)
                  count←v11936 = (count←v11936 + 1);
                  };
               };
            j←v24496 = (j←v24496 + 1);
            if ((j←v24496 < noName←c54636)) {
               goto lab←L100228;
               };
            lab←L100225: ;
            };
         };
      i←v24408 = (i←v24408 + 1);
      if ((i←v24408 < noName←c54572)) {
         goto lab←L100224;
         };
      lab←L100221: ;
      };
SOURCE(26426, 258)
   return(count←v11936);
   }

static word ContainsSegment←P2640(seq←v11996, segNum←v12024)
   word seq←v11996;
   word segNum←v12024;
   {
   word var←c12068;
   /* ContainsSegment: */ 
SOURCE(26708, 106)
SOURCE(26786, 28)
   {
      word var←c01172;
      {
         word var←c54732;
         var←c54732 = (*  (ptr) seq←v11996 );
         {
            word limit486;
            var←c01172 =  (unsigned) XR←ExtractField(var←c54732, 32 + (word) (
                  limit486 = (*  (ptr) var←c54732 ),
                  BCK(segNum←v12024, limit486)
                  ), 1);
            };
         };
      return(var←c01172);
      };
   }

static word ContainsSomeSegment←P2700(seq←v12128)
   word seq←v12128;
   {
   word var←c12172;
   /* ContainsSomeSegment: */ 
SOURCE(26820, 93)
SOURCE(26889, 24)
   return( (unsigned) ((* (( (ptr) seq←v12128)+3) ) > 0));
   }

static word ContainsSegmentParts←P2760(seq←v12232, segNum←v12260)
   word seq←v12232;
   word segNum←v12260;
   {
   register ptr gf←c60396 =  (ptr) &globalframe;
   word var←c12304;
   /* ContainsSegmentParts: */ 
SOURCE(26919, 348)
SOURCE(27002, 265)
   {
      word var←c01173;
      word var←c54796;
      word var←c54828;
      word var←c54892;
      {
         word limit487;
         word pd489;
         word limit490;
         word limit491;
         if ((seq←v12232 != 0)) {
            var←c54796 = (*  (ptr) seq←v12232 );
            if (XR←ExtractField(var←c54796, 32 + (word) (
                  limit487 = (*  (ptr) var←c54796 ),
                  BCK(segNum←v12260, limit487)
                  ), 1)) { goto then0488;};
            var←c54828 = (* (( (ptr) seq←v12232)+2) );
            pd489 = (* (( (ptr) (* (( (ptr) gf←c60396)+209)/* var←c54860 */  ))+34) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd489 ))))((* (((( (ptr) var←c54828)+1)+(
                     limit490 = (*  (ptr) var←c54828 ),
                     BCK(segNum←v12260, limit490)
                     ))) ), pd489))) { goto then0488;};
            var←c54892 = (* (( (ptr) seq←v12232)+1) );
            if (XR←ExtractField(var←c54892, 32 + (word) (
                  limit491 = (*  (ptr) var←c54892 ),
                  BCK(segNum←v12260, limit491)
                  ), 1)) {
               then0488: ;
               var←c01173 =  (unsigned) 1;
               }
            else {
               {
                  word var←c54924;
                  word var←c54956;
                  var←c54924 =  ( ((*  (ptr) (*  (ptr) seq←v12232 ) ) != (*  (ptr) (* (( (ptr) seq←v12232)+1) ) )) ? (segNum←v12260 + 1) : ((segNum←v12260 + 
                  1) % (*  (ptr) (*  (ptr) seq←v12232 ) )) ) ;
                  var←c54956 = (* (( (ptr) seq←v12232)+1) );
                  {
                     word limit492;
                     var←c01173 =  (unsigned) XR←ExtractField(var←c54956, 32 + (word) (
                           limit492 = (*  (ptr) var←c54956 ),
                           BCK(var←c54924, limit492)
                           ), 1);
                     };
                  };
               };
            }
         else {
            var←c01173 =  (unsigned) 0;
            };
         };
      return(var←c01173);
      };
   }

static word FirstSegment←P2820(seq←v12364)
   word seq←v12364;
   {
   register ptr gf←c60428 =  (ptr) &globalframe;
   word index←v12408;
   word hiSegment←v24540;
   /* FirstSegment: */ 
SOURCE(27273, 625)
SOURCE(27334, 33)
   hiSegment←v24540 = (*  (ptr) (*  (ptr) seq←v12364 ) );
SOURCE(27369, 529)
   if (((*  (ptr) (*  (ptr) seq←v12364 ) ) != (*  (ptr) (* (( (ptr) seq←v12364)+1) ) ))) {
SOURCE(27436, 166)
      {
         register word i←v24584 = 0;
         register word noName←c54988;
         word var←c55020;
         noName←c54988 = hiSegment←v24540;
         if ((i←v24584 >= noName←c54988)) {
            goto lab←L100229;
            };
         lab←L100233: ;
SOURCE(27468, 24)
         {
            word limit493;
            var←c55020 = (*  (ptr) seq←v12364 );
            if (XR←ExtractField(var←c55020, 32 + (word) (
                  limit493 = (*  (ptr) var←c55020 ),
                  BCK(i←v24584, limit493)
                  ), 1)) {
SOURCE(27492, 10)
               goto lab←L100232;
               };
            };
         i←v24584 = (i←v24584 + 1);
         if ((i←v24584 < noName←c54988)) {
            goto lab←L100233;
            };
         goto lab←L100229;
         lab←L100232: ;
SOURCE(27520, 9)
         index←v12408 = i←v24584;
         goto lab←L100230;
         lab←L100229: ;
SOURCE(27543, 59)
         {
            word var←c0724;
            var←c0724 = (* (( (ptr) gf←c60428)+22) );
            (void) (XR←RaiseSignal((* (( (ptr) gf←c60428)+4)/* Problem←v3952 */  ), 0, (word) &var←c0724));
            };
         lab←L100230: ;
         };
      }
   else {
SOURCE(27622, 276)
      {
         register word i←v24628 = 0;
         register word noName←c55052;
         noName←c55052 = hiSegment←v24540;
         if ((i←v24628 >= noName←c55052)) {
            goto lab←L100234;
            };
         lab←L100238: ;
         {
            word var←c55084;
            word var←c55116;
            word var←c55148;
            word var←c55180;
            word var←c55212;
SOURCE(27654, 78)
            {
               word tc494;
               word limit495;
               word limit496;
               var←c55084 = IOP2( % ,  (int)((i←v24628 - 1) + hiSegment←v24540),  (int)hiSegment←v24540);
               var←c55116 = (*  (ptr) seq←v12364 );
               if ( ! XR←ExtractField(var←c55116, 32 + (word) (
                     limit495 = (*  (ptr) var←c55116 ),
                     BCK(var←c55084, limit495)
                     ), 1)) {
                  var←c55148 = (* (( (ptr) seq←v12364)+1) );
                  tc494 =  (word) XR←ExtractField(var←c55148, 32 + (word) (
                        limit496 = (*  (ptr) var←c55148 ),
                        BCK(i←v24628, limit496)
                        ), 1);
                  }
               else {
                  tc494 =  (word) 0;
                  };
               if (tc494) {
SOURCE(27732, 10)
                  goto lab←L100237;
                  };
               };
SOURCE(27744, 46)
            {
               word tc497;
               word limit498;
               word limit499;
               var←c55180 = (* (( (ptr) seq←v12364)+1) );
               if ( ! XR←ExtractField(var←c55180, 32 + (word) (
                     limit498 = (*  (ptr) var←c55180 ),
                     BCK(i←v24628, limit498)
                     ), 1)) {
                  var←c55212 = (*  (ptr) seq←v12364 );
                  tc497 =  (word) XR←ExtractField(var←c55212, 32 + (word) (
                        limit499 = (*  (ptr) var←c55212 ),
                        BCK(i←v24628, limit499)
                        ), 1);
                  }
               else {
                  tc497 =  (word) 0;
                  };
               if (tc497) {
SOURCE(27790, 10)
                  goto lab←L100237;
                  };
               };
            };
         i←v24628 = (i←v24628 + 1);
         if ((i←v24628 < noName←c55052)) {
            goto lab←L100238;
            };
         goto lab←L100234;
         lab←L100237: ;
SOURCE(27818, 9)
         index←v12408 = i←v24628;
         goto lab←L100235;
         lab←L100234: ;
SOURCE(27841, 57)
         {
            word var←c0732;
            var←c0732 = (* (( (ptr) gf←c60428)+21) );
            (void) (XR←RaiseSignal((* (( (ptr) gf←c60428)+4)/* Problem←v3952 */  ), 0, (word) &var←c0732));
            };
         lab←L100235: ;
         };
      };
SOURCE(27273, 625)
   return(index←v12408);
   }

static word FirstSegNum←P2880(run←v12468)
   word run←v12468;
   {
   register ptr gf←c60460 =  (ptr) &globalframe;
   word var←c12512;
   /* FirstSegNum: */ 
SOURCE(27916, 229)
SOURCE(27976, 35)
   if (((* (( (ptr) run←v12468)+3) ) == 0)) {
SOURCE(28001, 10)
      return( (word) -1);
      };
SOURCE(28013, 44)
   {
      word pd500;
      pd500 = (* (( (ptr) (* (( (ptr) gf←c60460)+207)/* var←c49644 */  ))+26) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd500 ))))(run←v12468, pd500))) {
SOURCE(28048, 9)
         return(0);
         };
      };
SOURCE(28112, 33)
   return((word) FirstTransitionInRun←P3840(run←v12468));
   }

static word LastSegNum←P2940(run←v12572, firstSegNum←v12600)
   word run←v12572;
   word firstSegNum←v12600;
   {
   word lastNum←v12644;
   /* LastSegNum: */ 
SOURCE(28151, 292)
SOURCE(28237, 35)
   if (( (int)firstSegNum←v12600 ==  (int) (word) -1)) {
SOURCE(28262, 10)
      return( (word) -1);
      };
SOURCE(28274, 169)
   if (((*  (ptr) (*  (ptr) run←v12572 ) ) != (*  (ptr) (* (( (ptr) run←v12572)+1) ) ))) {
SOURCE(28314, 47)
      lastNum←v12644 = ((firstSegNum←v12600 + (* (( (ptr) run←v12572)+3) )) - 1);
      }
   else {
SOURCE(28361, 82)
      lastNum←v12644 = IOP2( % ,  (int)(((firstSegNum←v12600 + (* (( (ptr) run←v12572)+3) )) - 1) + (*  (ptr) (*  (ptr) run←v12572 ) )),  (int)(*  (ptr) (*  (ptr) run←v12572 ) ))
      ;
      };
SOURCE(28151, 292)
   return(lastNum←v12644);
   }

static word ContainsJoint←P3000(seq←v12704, jointNum←v12732)
   word seq←v12704;
   word jointNum←v12732;
   {
   word var←c12776;
   /* ContainsJoint: */ 
SOURCE(28449, 106)
SOURCE(28527, 28)
   {
      word var←c01174;
      {
         word var←c55276;
         var←c55276 = (* (( (ptr) seq←v12704)+1) );
         {
            word limit501;
            var←c01174 =  (unsigned) XR←ExtractField(var←c55276, 32 + (word) (
                  limit501 = (*  (ptr) var←c55276 ),
                  BCK(jointNum←v12732, limit501)
                  ), 1);
            };
         };
      return(var←c01174);
      };
   }

static word FirstJointNum←P3060(run←v12836)
   word run←v12836;
   {
   register ptr gf←c60492 =  (ptr) &globalframe;
   word var←c12880;
   word firstSeg←v24672;
   word nextJoint←v24700;
   word var←c55308;
   word var←c55340;
   word var←c55372;
   /* FirstJointNum: */ 
SOURCE(28561, 530)
SOURCE(28649, 37)
   if (((* (( (ptr) run←v12836)+4) ) == 0)) {
SOURCE(28676, 10)
      return( (word) -1);
      };
SOURCE(28688, 36)
   firstSeg←v24672 = (word) FirstTransitionInRun←P3840(run←v12836);
SOURCE(28726, 365)
   {
      word limit502;
      var←c55308 = (* (( (ptr) run←v12836)+1) );
      if (XR←ExtractField(var←c55308, 32 + (word) (
            limit502 = (*  (ptr) var←c55308 ),
            BCK(firstSeg←v24672, limit502)
            ), 1)) {
SOURCE(28755, 22)
         return(firstSeg←v24672);
         }
      else {
SOURCE(28779, 312)
         if (((*  (ptr) (*  (ptr) run←v12836 ) ) != (*  (ptr) (* (( (ptr) run←v12836)+1) ) ))) {
SOURCE(28847, 98)
            {
               word limit503;
               var←c55340 = (firstSeg←v24672 + 1);
               var←c55372 = (* (( (ptr) run←v12836)+1) );
               if (XR←ExtractField(var←c55372, 32 + (word) (
                     limit503 = (*  (ptr) var←c55372 ),
                     BCK(var←c55340, limit503)
                     ), 1)) {
SOURCE(28880, 26)
                  return(SGNCK((firstSeg←v24672 + 1)));
                  }
               else {
SOURCE(28906, 39)
                  {
                     word var←c0749;
                     var←c0749 = (* (( (ptr) gf←c60492)+20) );
                     (void) XR←RaiseError((* (( (ptr) gf←c60492)+4)/* Problem←v3952 */  ), (word) &var←c0749);
                     };
                  };
               };
            }
         else {
            {
               word var←c55404;
SOURCE(28956, 41)
               {
                  word idx504;
                  nextJoint←v24700 = (
                     idx504 = (word) FollowingJoint←P3240(run←v12836, firstSeg←v24672),
                     SGNCK(idx504)
                     );
                  };
SOURCE(28999, 92)
               {
                  word limit505;
                  var←c55404 = (* (( (ptr) run←v12836)+1) );
                  if (XR←ExtractField(var←c55404, 32 + (word) (
                        limit505 = (*  (ptr) var←c55404 ),
                        BCK(nextJoint←v24700, limit505)
                        ), 1)) {
SOURCE(29029, 23)
                     return(nextJoint←v24700);
                     }
                  else {
SOURCE(29052, 39)
                     {
                        word var←c0751;
                        var←c0751 = (* (( (ptr) gf←c60492)+20) );
                        (void) XR←RaiseError((* (( (ptr) gf←c60492)+4)/* Problem←v3952 */  ), (word) &var←c0751);
                        };
                     };
                  };
               };
            };
         };
      };
   }

static word LastJointNum←P3120(run←v12940, firstJointNum←v12968)
   word run←v12940;
   word firstJointNum←v12968;
   {
   word lastNum←v13012;
   /* LastJointNum: */ 
SOURCE(29103, 330)
SOURCE(29193, 37)
   if (( (int)firstJointNum←v12968 ==  (int) (word) -1)) {
SOURCE(29220, 10)
      return( (word) -1);
      };
SOURCE(29232, 201)
   if (((*  (ptr) (*  (ptr) run←v12940 ) ) != (*  (ptr) (* (( (ptr) run←v12940)+1) ) ))) {
SOURCE(29297, 50)
      lastNum←v13012 = ((firstJointNum←v12968 + (* (( (ptr) run←v12940)+4) )) - 1);
      }
   else {
SOURCE(29347, 86)
      lastNum←v13012 = IOP2( % ,  (int)(((firstJointNum←v12968 + (* (( (ptr) run←v12940)+4) )) - 1) + (*  (ptr) (*  (ptr) run←v12940 ) )),  (int)(*  (ptr) (*  (ptr) run←v12940 ) ))
      ;
      };
SOURCE(29103, 330)
   return(lastNum←v13012);
   }

static word LastSegAndJoint←P3180(traj←v13072, trajEnd←v13100)
   word traj←v13072;
   word trajEnd←v13100;
   {
   word segAndJoint←v13144;
   /* LastSegAndJoint: */ 
SOURCE(29439, 459)
SOURCE(29439, 459)
   segAndJoint←v13144 = 0;
SOURCE(29540, 31)
   segAndJoint←v13144 = (word) CreateEmpty←P180(traj←v13072);
SOURCE(29573, 325)
   if (((*  (ptr) traj←v13072 ) == 2)) {
SOURCE(29600, 26)
      (* (( (ptr) segAndJoint←v13144)+4) ) = 1;
SOURCE(29628, 24)
      (* (( (ptr) segAndJoint←v13144)+3) ) = 1;
SOURCE(29654, 244)
      if ((trajEnd←v13100 == 0)) {
SOURCE(29677, 30)
         {
            word var←c55436;
            var←c55436 = (*  (ptr) segAndJoint←v13144 );
            {
               word limit506;
               word xs507;
               xs507 = (word) (
                  limit506 = (*  (ptr) var←c55436 ),
                  BCK(0, limit506)
                  );
               (*  (bPt) ((( (bPt) var←c55436)+4) + ((word) xs507 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs507 & 7)+1));
               };
            };
SOURCE(29709, 28)
         {
            word var←c55468;
            var←c55468 = (* (( (ptr) segAndJoint←v13144)+1) );
            {
               word limit508;
               word xs509;
               xs509 = (word) (
                  limit508 = (*  (ptr) var←c55468 ),
                  BCK(0, limit508)
                  );
               (*  (bPt) ((( (bPt) var←c55468)+4) + ((word) xs509 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs509 & 7)+1));
               };
            };
         }
      else {
SOURCE(29746, 154)
         {
            word hiSegment←v24744;
SOURCE(29748, 70)
            {
               word idx510;
               hiSegment←v24744 = (
                  idx510 = (word) ((*  (ptr) (*  (ptr) segAndJoint←v13144 ) ) - 1),
                  SGNCK(idx510)
                  );
               };
SOURCE(29820, 38)
            {
               word var←c55500;
               var←c55500 = (*  (ptr) segAndJoint←v13144 );
               {
                  word limit511;
                  word xs512;
                  xs512 = (word) (
                     limit511 = (*  (ptr) var←c55500 ),
                     BCK(hiSegment←v24744, limit511)
                     );
                  (*  (bPt) ((( (bPt) var←c55500)+4) + ((word) xs512 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs512 & 7)+1));
                  };
               };
SOURCE(29860, 38)
            {
               word var←c55532;
               word var←c55564;
               var←c55532 = (hiSegment←v24744 + 1);
               var←c55564 = (* (( (ptr) segAndJoint←v13144)+1) );
               {
                  word limit513;
                  word xs514;
                  xs514 = (word) (
                     limit513 = (*  (ptr) var←c55564 ),
                     BCK(var←c55532, limit513)
                     );
                  (*  (bPt) ((( (bPt) var←c55564)+4) + ((word) xs514 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs514 & 7)+1));
                  };
               };
            };
         };
      }
   else {
SOURCE(29910, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(29439, 459)
   return(segAndJoint←v13144);
   }

static word FollowingJoint←P3240(seq←v13204, index←v13232)
   word seq←v13204;
   word index←v13232;
   {
   word nextIndex←v13276;
   word open←v24788;
   word segCount←v24816;
   /* FollowingJoint: */ 
SOURCE(29921, 277)
SOURCE(30009, 44)
   open←v24788 =  (unsigned) ((*  (ptr) (*  (ptr) seq←v13204 ) ) != (*  (ptr) (* (( (ptr) seq←v13204)+1) ) ));
SOURCE(30055, 32)
   segCount←v24816 = (*  (ptr) (*  (ptr) seq←v13204 ) );
SOURCE(30089, 109)
   if ((0 != open←v24788)) {
SOURCE(30102, 60)
      if ((index←v13232 == segCount←v24816)) {
         nextIndex←v13276 =  (word) -1;
         }
      else {
         nextIndex←v13276 = (index←v13232 + 1);
         };
      }
   else {
SOURCE(30162, 36)
      nextIndex←v13276 = ((index←v13232 + 1) % segCount←v24816);
      };
SOURCE(29921, 277)
   return(nextIndex←v13276);
   }

static void UnpackOnePointSequence←P3300(formal←c0786, seq←v13336)
   word formal←c0786;
   word seq←v13336;
   {
   word isACP←v13380;
   word segNum←v13408;
   word cpNum←v13436;
   word jointNum←v13464;
   word hiSegment←v24860;
   word hiJoint←v24888;
   /* UnpackOnePointSequence: */ 
SOURCE(30204, 476)
SOURCE(30313, 33)
   hiSegment←v24860 = (*  (ptr) (*  (ptr) seq←v13336 ) );
SOURCE(30348, 29)
   hiJoint←v24888 = (*  (ptr) (* (( (ptr) seq←v13336)+1) ) );
SOURCE(30379, 116)
   {
      register word i←v24932 = 0;
      register word noName←c55596;
      word var←c55628;
      noName←c55596 = hiJoint←v24888;
      if ((i←v24932 >= noName←c55596)) {
         goto lab←L100240;
         };
      lab←L100243: ;
SOURCE(30409, 86)
      {
         word limit515;
         var←c55628 = (* (( (ptr) seq←v13336)+1) );
         if (XR←ExtractField(var←c55628, 32 + (word) (
               limit515 = (*  (ptr) var←c55628 ),
               BCK(i←v24932, limit515)
               ), 1)) {
SOURCE(30433, 13)
            isACP←v13380 = 0;
SOURCE(30448, 12)
            segNum←v13408 = 999;
SOURCE(30462, 11)
            cpNum←v13436 = 999;
SOURCE(30475, 12)
            jointNum←v13464 = i←v24932;
SOURCE(30489, 6)
            goto lab←L100239;
            };
         };
      i←v24932 = (i←v24932 + 1);
      if ((i←v24932 < noName←c55596)) {
         goto lab←L100243;
         };
      lab←L100240: ;
      };
SOURCE(30508, 172)
   {
      register word i←v24976 = 0;
      register word noName←c55660;
      noName←c55660 = hiSegment←v24860;
      if ((i←v24976 >= noName←c55660)) {
         goto lab←L100244;
         };
      lab←L100247: ;
SOURCE(30540, 140)
      {
         register word j←v25020 = 0;
         register word noName←c55724;
         word var←c55692;
         word var←c55788;
         {
            word limit516;
            var←c55692 = (* (( (ptr) seq←v13336)+2) );
            noName←c55724 = (*  (ptr) (* ((( (ptr) var←c55692)+1)+(
                  limit516 = (*  (ptr) var←c55692 ),
                  BCK(i←v24976, limit516)
                  )) ) );
            };
         if ((j←v25020 >= noName←c55724)) {
            goto lab←L100248;
            };
         lab←L100251: ;
SOURCE(30587, 93)
         {
            word limit518;
            {
               word var←c55756;
               var←c55756 = (* (( (ptr) seq←v13336)+2) );
               {
                  word limit517;
                  var←c55788 = (* ((( (ptr) var←c55756)+1)+(
                        limit517 = (*  (ptr) var←c55756 ),
                        BCK(i←v24976, limit517)
                        )) );
                  };
               };
            if (XR←ExtractField(var←c55788, 32 + (word) (
                  limit518 = (*  (ptr) var←c55788 ),
                  BCK(j←v25020, limit518)
                  ), 1)) {
SOURCE(30621, 12)
               isACP←v13380 = 1;
SOURCE(30635, 10)
               segNum←v13408 = i←v24976;
SOURCE(30647, 9)
               cpNum←v13436 = j←v25020;
SOURCE(30658, 14)
               jointNum←v13464 = 999;
SOURCE(30674, 6)
               goto lab←L100239;
               };
            };
         j←v25020 = (j←v25020 + 1);
         if ((j←v25020 < noName←c55724)) {
            goto lab←L100251;
            };
         lab←L100248: ;
         };
      i←v24976 = (i←v24976 + 1);
      if ((i←v24976 < noName←c55660)) {
         goto lab←L100247;
         };
      lab←L100244: ;
      };
SOURCE(30702, 5)
   (void) XR←RaiseUnnamedError();
   lab←L100239: ;
   (*  (ptr) formal←c0786 ) = isACP←v13380;
   (* (( (ptr) formal←c0786)+1) ) = segNum←v13408;
   (* (( (ptr) formal←c0786)+2) ) = cpNum←v13436;
   (* (( (ptr) formal←c0786)+3) ) = jointNum←v13464;
   return;
   }

static word UnpackOneSegmentSequence←P3360(seq←v13524)
   word seq←v13524;
   {
   word segNum←v13568;
   word hiSegment←v25064;
   /* UnpackOneSegmentSequence: */ 
SOURCE(30713, 192)
SOURCE(30794, 33)
   hiSegment←v25064 = (*  (ptr) (*  (ptr) seq←v13524 ) );
SOURCE(30829, 76)
   {
      register word i←v25108 = 0;
      register word noName←c55820;
      word var←c55852;
      noName←c55820 = hiSegment←v25064;
      if ((i←v25108 >= noName←c55820)) {
         goto lab←L100252;
         };
      lab←L100255: ;
SOURCE(30861, 44)
      {
         word limit519;
         var←c55852 = (*  (ptr) seq←v13524 );
         if (XR←ExtractField(var←c55852, 32 + (word) (
               limit519 = (*  (ptr) var←c55852 ),
               BCK(i←v25108, limit519)
               ), 1)) {
SOURCE(30887, 10)
            segNum←v13568 = i←v25108;
SOURCE(30899, 6)
            return(segNum←v13568);
            };
         };
      i←v25108 = (i←v25108 + 1);
      if ((i←v25108 < noName←c55820)) {
         goto lab←L100255;
         };
      lab←L100252: ;
      };
SOURCE(30918, 5)
   (void) XR←RaiseUnnamedError();
   }

static void UnpackSimpleSequence←P3420(formal←c0827, slice←v13628, parts←v13656)
   word formal←c0827;
   word slice←v13628;
   word parts←v13656;
   {
   register ptr gf←c60524 =  (ptr) &globalframe;
   word success←v13700;
   word partType←v13728;
   word traj←v13756;
   word joint←v13784;
   word jointNum←v13812;
   W2 cp←v13840;
   word cpNum←v13868;
   word seg←v13896;
   word segNum←v13924;
   word jointFound←v25152 = 0;
   word cpFound←v25180 = 0;
   word segFound←v25208 = 0;
   word seq←v25236;
   word seqTraj←v25264;
   word hiSegment←v25292;
   word hiJoint←v25320;
   /* UnpackSimpleSequence: */ 
SOURCE(30929, 1468)
SOURCE(30929, 1468)
   success←v13700 = 0;
SOURCE(30929, 1468)
   partType←v13728 = 0;
SOURCE(30929, 1468)
   traj←v13756 = 0;
SOURCE(30929, 1468)
   joint←v13784 = 0;
SOURCE(30929, 1468)
   jointNum←v13812 = 999;
SOURCE(30929, 1468)
   cp←v13840.f0 = (*  (ptr) &fc520 );
   cp←v13840.f1 = (*  (ptr) &fc520 );
SOURCE(30929, 1468)
   cpNum←v13868 = 999;
SOURCE(30929, 1468)
   seg←v13896 = 0;
SOURCE(30929, 1468)
   segNum←v13924 = 999;
SOURCE(31242, 30)
   seq←v25236 = XR←Narrow(parts←v13656, (* (( (ptr) gf←c60524)+5) ));
SOURCE(31274, 38)
   seqTraj←v25264 = XR←Narrow((* (( (ptr) slice←v13628)+1) ), (* (( (ptr) gf←c60524)+13) ));
SOURCE(31314, 33)
   hiSegment←v25292 = (*  (ptr) (*  (ptr) seq←v25236 ) );
SOURCE(31349, 29)
   hiJoint←v25320 = (*  (ptr) (* (( (ptr) seq←v25236)+1) ) );
SOURCE(31380, 14)
   traj←v13756 = seqTraj←v25264;
SOURCE(31396, 186)
   {
      register word i←v25364 = 0;
      register word noName←c55884;
      word var←c55916;
      noName←c55884 = hiJoint←v25320;
      if ((i←v25364 >= noName←c55884)) {
         goto lab←L100257;
         };
      lab←L100260: ;
SOURCE(31426, 156)
      {
         word limit521;
         var←c55916 = (* (( (ptr) seq←v25236)+1) );
         if (XR←ExtractField(var←c55916, 32 + (word) (
               limit521 = (*  (ptr) var←c55916 ),
               BCK(i←v25364, limit521)
               ), 1)) {
SOURCE(31450, 43)
            if ((0 != jointFound←v25152)) {
SOURCE(31470, 15)
               success←v13700 = 0;
SOURCE(31487, 6)
               goto lab←L100256;
               };
SOURCE(31496, 12)
            jointNum←v13812 = i←v25364;
SOURCE(31510, 35)
            {
               word pd522;
               pd522 = (* (( (ptr) (* (( (ptr) gf←c60524)+204)/* var←c43500 */  ))+31) );
               joint←v13784 = (word) ( *( (fPt) ((*  (ptr) pd522 ))))(slice←v13628, i←v25364, pd522);
               };
SOURCE(31547, 17)
            jointFound←v25152 = 1;
SOURCE(31566, 16)
            partType←v13728 = 1;
            };
         };
      i←v25364 = (i←v25364 + 1);
      if ((i←v25364 < noName←c55884)) {
         goto lab←L100260;
         };
      lab←L100257: ;
      };
SOURCE(31595, 359)
   {
      register word i←v25408 = 0;
      register word noName←c55948;
      noName←c55948 = hiSegment←v25292;
      if ((i←v25408 >= noName←c55948)) {
         goto lab←L100261;
         };
      lab←L100264: ;
      {
         word thisSeg←v25452;
         word cpCount←v25480;
         word var←c55980;
SOURCE(31627, 48)
         {
            word pd523;
            pd523 = (* (( (ptr) (* (( (ptr) gf←c60524)+204)/* var←c43500 */  ))+29) );
            thisSeg←v25452 = (word) ( *( (fPt) ((*  (ptr) pd523 ))))(slice←v13628, i←v25408, pd523);
            };
SOURCE(31677, 39)
         {
            word limit524;
            var←c55980 = (* (( (ptr) seq←v25236)+2) );
            cpCount←v25480 = (*  (ptr) (* ((( (ptr) var←c55980)+1)+(
                  limit524 = (*  (ptr) var←c55980 ),
                  BCK(i←v25408, limit524)
                  )) ) );
            };
SOURCE(31718, 236)
         {
            register word j←v25524 = 0;
            register word noName←c56012;
            word var←c56076;
            noName←c56012 = cpCount←v25480;
            if ((j←v25524 >= noName←c56012)) {
               goto lab←L100265;
               };
            lab←L100268: ;
SOURCE(31748, 206)
            {
               word limit526;
               {
                  word var←c56044;
                  var←c56044 = (* (( (ptr) seq←v25236)+2) );
                  {
                     word limit525;
                     var←c56076 = (* ((( (ptr) var←c56044)+1)+(
                           limit525 = (*  (ptr) var←c56044 ),
                           BCK(i←v25408, limit525)
                           )) );
                     };
                  };
               if (XR←ExtractField(var←c56076, 32 + (word) (
                     limit526 = (*  (ptr) var←c56076 ),
                     BCK(j←v25524, limit526)
                     ), 1)) {
SOURCE(31782, 40)
                  if ((0 != cpFound←v25180)) {
SOURCE(31799, 15)
                     success←v13700 = 0;
SOURCE(31816, 6)
                     goto lab←L100256;
                     };
SOURCE(31825, 10)
                  segNum←v13924 = i←v25408;
SOURCE(31837, 13)
                  seg←v13896 = thisSeg←v25452;
SOURCE(31852, 9)
                  cpNum←v13868 = j←v25524;
SOURCE(31863, 50)
                  {
                     word pd527;
                     pd527 = (* (( (ptr) (*  (ptr) thisSeg←v25452 ))+16) );
                     (void) ( *( (fPt) ((*  (ptr) pd527 ))))((word) &cp←v13840, thisSeg←v25452, cpNum←v13868, pd527);
                     };
SOURCE(31915, 14)
                  cpFound←v25180 = 1;
SOURCE(31931, 23)
                  partType←v13728 = 2;
                  };
               };
            j←v25524 = (j←v25524 + 1);
            if ((j←v25524 < noName←c56012)) {
               goto lab←L100268;
               };
            lab←L100265: ;
            };
         };
      i←v25408 = (i←v25408 + 1);
      if ((i←v25408 < noName←c55948)) {
         goto lab←L100264;
         };
      lab←L100261: ;
      };
SOURCE(31976, 55)
   if (((0 != jointFound←v25152) && (0 != cpFound←v25180))) {
SOURCE(32008, 15)
      success←v13700 = 0;
SOURCE(32025, 6)
      goto lab←L100256;
      };
SOURCE(32034, 186)
   {
      register word i←v25568 = 0;
      register word noName←c56108;
      word var←c56140;
      noName←c56108 = hiSegment←v25292;
      if ((i←v25568 >= noName←c56108)) {
         goto lab←L100269;
         };
      lab←L100272: ;
SOURCE(32066, 154)
      {
         word limit528;
         var←c56140 = (*  (ptr) seq←v25236 );
         if (XR←ExtractField(var←c56140, 32 + (word) (
               limit528 = (*  (ptr) var←c56140 ),
               BCK(i←v25568, limit528)
               ), 1)) {
SOURCE(32092, 41)
            if ((0 != segFound←v25208)) {
SOURCE(32110, 15)
               success←v13700 = 0;
SOURCE(32127, 6)
               goto lab←L100256;
               };
SOURCE(32136, 10)
            segNum←v13924 = i←v25568;
SOURCE(32148, 35)
            {
               word pd529;
               pd529 = (* (( (ptr) (* (( (ptr) gf←c60524)+204)/* var←c43500 */  ))+29) );
               seg←v13896 = (word) ( *( (fPt) ((*  (ptr) pd529 ))))(slice←v13628, i←v25568, pd529);
               };
SOURCE(32185, 15)
            segFound←v25208 = 1;
SOURCE(32202, 18)
            partType←v13728 = 3;
            };
         };
      i←v25568 = (i←v25568 + 1);
      if ((i←v25568 < noName←c56108)) {
         goto lab←L100272;
         };
      lab←L100269: ;
      };
SOURCE(32233, 84)
   if (((0 != jointFound←v25152) && (0 != segFound←v25208)) || ((0 != cpFound←v25180) && (0 != segFound←v25208))) {
SOURCE(32294, 15)
      success←v13700 = 0;
SOURCE(32311, 6)
      goto lab←L100256;
      };
SOURCE(32320, 56)
   if ( (  ( (0 == jointFound←v25152) ? (0 == cpFound←v25180) : 0 )  ? (0 == segFound←v25208) : 0 ) ) {
SOURCE(32376, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(32383, 14)
   success←v13700 = 1;
   /* removed tail goto */ 
   lab←L100256: ;
   (*  (ptr) formal←c0827 ) = success←v13700;
   (* (( (ptr) formal←c0827)+1) ) = partType←v13728;
   (* (( (ptr) formal←c0827)+2) ) = traj←v13756;
   (* (( (ptr) formal←c0827)+3) ) = joint←v13784;
   (* (( (ptr) formal←c0827)+4) ) = jointNum←v13812;
   (*  (W2Pt) (( (ptr) formal←c0827)+5) ) = cp←v13840;
   (* (( (ptr) formal←c0827)+7) ) = cpNum←v13868;
   (* (( (ptr) formal←c0827)+8) ) = seg←v13896;
   (* (( (ptr) formal←c0827)+9) ) = segNum←v13924;
   return;
   }

static void RunsInSequence←P3480(formal←c0835, seq←v13984)
   word formal←c0835;
   word seq←v13984;
   {
   word seqGen←v14028;
   word runCount←v14056;
   /* RunsInSequence: */ 
SOURCE(32402, 262)
SOURCE(32402, 262)
   seqGen←v14028 = 0;
SOURCE(32502, 162)
   if (((*  (ptr) (*  (ptr) seq←v13984 ) ) != (*  (ptr) (* (( (ptr) seq←v13984)+1) ) ))) {
SOURCE(32568, 50)
      {
         W2 var←c56172;
         (void) RunsInSequenceOpen←P3540((word) &var←c56172, seq←v13984);
         runCount←v14056 = var←c56172.f1;
         seqGen←v14028 = var←c56172.f0;
         };
      }
   else {
SOURCE(32618, 46)
      {
         W2 var←c56204;
         (void) RunsInSequenceClosed←P3600((word) &var←c56204, seq←v13984);
         runCount←v14056 = var←c56204.f1;
         seqGen←v14028 = var←c56204.f0;
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0835 ) = seqGen←v14028;
   (* (( (ptr) formal←c0835)+1) ) = runCount←v14056;
   return;
   }

static void RunsInSequenceOpen←P3540(formal←c0853, seq←v14116)
   word formal←c0853;
   word seq←v14116;
   {
   register ptr gf←c60556 =  (ptr) &globalframe;
   word seqGen←v14160;
   word runCount←v14188;
   word in←v25612 = 0;
   word thisSeq←v25640 = 0;
   word hiSegment←v25668;
   word hiJoint←v25696;
   /* RunsInSequenceOpen: */ 
SOURCE(32670, 732)
SOURCE(32670, 732)
   seqGen←v14160 = 0;
SOURCE(32805, 35)
   {
      word idx530;
      hiSegment←v25668 = (
         idx530 = (word) ((*  (ptr) (*  (ptr) seq←v14116 ) ) - 1),
         SGNCK(idx530)
         );
      };
SOURCE(32872, 28)
   hiJoint←v25696 = (hiSegment←v25668 + 1);
SOURCE(32902, 42)
   seqGen←v14160 = XR←NewObject(4, (* (( (ptr) gf←c60556)+19) ));
SOURCE(32946, 12)
   runCount←v14188 = 0;
SOURCE(32960, 27)
   if ((0 != (word) IsEmpty←P2220(seq←v14116))) {
SOURCE(32981, 6)
      goto lab←L100274;
      };
SOURCE(32989, 228)
   {
      register word i←v25740 = 0;
      register word noName←c56268;
      noName←c56268 = hiSegment←v25668;
      if ((i←v25740 > noName←c56268)) {
         goto lab←L100275;
         };
      lab←L100278: ;
SOURCE(33021, 96)
      {
         W4 var←c56300;
         (void) ConsiderJoint←P3960((word) &var←c56300, in←v25612, (*  (ptr) seqGen←v14160 ), seq←v14116, thisSeq←v25640, runCount←v14188
            , i←v25740);
         runCount←v14188 = var←c56300.f3;
         thisSeq←v25640 = var←c56300.f2;
         (*  (ptr) seqGen←v14160 ) = var←c56300.f1;
         in←v25612 = var←c56300.f0;
         };
SOURCE(33119, 98)
      {
         W4 var←c56332;
         (void) ConsiderSegment←P4020((word) &var←c56332, in←v25612, (*  (ptr) seqGen←v14160 ), seq←v14116, thisSeq←v25640, runCount←v14188
            , i←v25740);
         runCount←v14188 = var←c56332.f3;
         thisSeq←v25640 = var←c56332.f2;
         (*  (ptr) seqGen←v14160 ) = var←c56332.f1;
         in←v25612 = var←c56332.f0;
         };
      if ((i←v25740 >= noName←c56268)) {
         goto lab←L100275;
         };
      i←v25740 = (i←v25740 + 1);
      goto lab←L100278;
      lab←L100275: ;
      };
SOURCE(33228, 102)
   {
      W4 var←c56364;
      (void) ConsiderJoint←P3960((word) &var←c56364, in←v25612, (*  (ptr) seqGen←v14160 ), seq←v14116, thisSeq←v25640, runCount←v14188
         , hiJoint←v25696);
      runCount←v14188 = var←c56364.f3;
      thisSeq←v25640 = var←c56364.f2;
      (*  (ptr) seqGen←v14160 ) = var←c56364.f1;
      in←v25612 = var←c56364.f0;
      };
SOURCE(33332, 70)
   if ((0 != in←v25612)) {
SOURCE(33343, 59)
      {
         word var←c56396;
         {
            word var←c56428;
            var←c56428 = XR←NewObject(8, (* (( (ptr) gf←c60556)+18) ));
            (*  (ptr) var←c56428 ) = thisSeq←v25640;
            var←c56396 = var←c56428;
            };
         (*  (ptr) seqGen←v14160 ) = (word) AppendToList←P3900((*  (ptr) seqGen←v14160 ), var←c56396);
         };
      };
   /* removed tail goto */ 
   lab←L100274: ;
   (*  (ptr) formal←c0853 ) = seqGen←v14160;
   (* (( (ptr) formal←c0853)+1) ) = runCount←v14188;
   return;
   }

static void RunsInSequenceClosed←P3600(formal←c0869, seq←v14248)
   word formal←c0869;
   word seq←v14248;
   {
   register ptr gf←c60588 =  (ptr) &globalframe;
   word seqGen←v14292;
   word runCount←v14320;
   word segCount←v25784;
   word in←v25812 = 0;
   word thisSeq←v25840 = 0;
   word start←v25868;
   word natGen←v25896 = 0;
   /* RunsInSequenceClosed: */ 
SOURCE(33408, 741)
SOURCE(33408, 741)
   seqGen←v14292 = 0;
SOURCE(33507, 32)
   segCount←v25784 = (*  (ptr) (*  (ptr) seq←v14248 ) );
SOURCE(33613, 42)
   seqGen←v14292 = XR←NewObject(4, (* (( (ptr) gf←c60588)+19) ));
SOURCE(33657, 12)
   runCount←v14320 = 0;
SOURCE(33671, 37)
   if ((0 != (word) ControlPointsOnly←P3660(seq←v14248))) {
SOURCE(33702, 6)
      goto lab←L100279;
      };
SOURCE(33710, 33)
   start←v25868 = (word) FirstTransitionInRun←P3840(seq←v14248);
SOURCE(33745, 10)
   in←v25812 = 0;
SOURCE(33757, 50)
   natGen←v25896 = (word) NATsInInterval←P4140(start←v25868, segCount←v25784, segCount←v25784);
SOURCE(33809, 259)
   {
      register word i←v25940;
      i←v25940 = (word) NextNAT←P4200(natGen←v25896);
      lab←L100283: ;
      if (( (int)i←v25940 !=  (int) (word) -1)) {
         }
      else {
         goto lab←L100280;
         };
SOURCE(33872, 96)
      {
         W4 var←c56492;
         (void) ConsiderJoint←P3960((word) &var←c56492, in←v25812, (*  (ptr) seqGen←v14292 ), seq←v14248, thisSeq←v25840, runCount←v14320
            , SGNCK(i←v25940));
         runCount←v14320 = var←c56492.f3;
         thisSeq←v25840 = var←c56492.f2;
         (*  (ptr) seqGen←v14292 ) = var←c56492.f1;
         in←v25812 = var←c56492.f0;
         };
SOURCE(33970, 98)
      {
         W4 var←c56524;
         (void) ConsiderSegment←P4020((word) &var←c56524, in←v25812, (*  (ptr) seqGen←v14292 ), seq←v14248, thisSeq←v25840, runCount←v14320
            , SGNCK(i←v25940));
         runCount←v14320 = var←c56524.f3;
         thisSeq←v25840 = var←c56524.f2;
         (*  (ptr) seqGen←v14292 ) = var←c56524.f1;
         in←v25812 = var←c56524.f0;
         };
      i←v25940 = (word) NextNAT←P4200(natGen←v25896);
      goto lab←L100283;
      lab←L100280: ;
      };
SOURCE(34079, 70)
   if ((0 != in←v25812)) {
SOURCE(34090, 59)
      {
         word var←c56556;
         {
            word var←c56588;
            var←c56588 = XR←NewObject(8, (* (( (ptr) gf←c60588)+18) ));
            (*  (ptr) var←c56588 ) = thisSeq←v25840;
            var←c56556 = var←c56588;
            };
         (*  (ptr) seqGen←v14292 ) = (word) AppendToList←P3900((*  (ptr) seqGen←v14292 ), var←c56556);
         };
      };
   /* removed tail goto */ 
   lab←L100279: ;
   (*  (ptr) formal←c0869 ) = seqGen←v14292;
   (* (( (ptr) formal←c0869)+1) ) = runCount←v14320;
   return;
   }

static word ControlPointsOnly←P3660(seq←v14380)
   word seq←v14380;
   {
   word var←c14424;
   /* ControlPointsOnly: */ 
SOURCE(34155, 119)
SOURCE(34215, 59)
   {
      word tc531;
      if ( ( (seq←v14380 != 0) ? ((* (( (ptr) seq←v14380)+4) ) == 0) : 0 ) ) {
         tc531 =  (word)  (unsigned) ((* (( (ptr) seq←v14380)+3) ) == 0);
         }
      else {
         tc531 =  (word)  (unsigned) 0;
         };
      return(tc531);
      };
   }

static word NextSequence←P3720(seqGen←v14484)
   word seqGen←v14484;
   {
   word seq←v14528;
   /* NextSequence: */ 
SOURCE(34280, 177)
SOURCE(34280, 177)
   seq←v14528 = 0;
SOURCE(34363, 37)
   if (((*  (ptr) seqGen←v14484 ) == 0)) {
SOURCE(34389, 11)
      return(0);
      };
SOURCE(34402, 23)
   seq←v14528 = (*  (ptr) (*  (ptr) seqGen←v14484 ) );
SOURCE(34427, 30)
   (*  (ptr) seqGen←v14484 ) = (* (( (ptr) (*  (ptr) seqGen←v14484 ))+1) );
SOURCE(34280, 177)
   return(seq←v14528);
   }

static word FirstRun←P3780(seq←v14588)
   word seq←v14588;
   {
   word runParts←v14632;
   word runCount←v25984;
   word seqGen←v26012 = 0;
   /* FirstRun: */ 
SOURCE(34463, 218)
SOURCE(34463, 218)
   runParts←v14632 = 0;
SOURCE(34578, 40)
   {
      W2 var←c56620;
      (void) RunsInSequence←P3480((word) &var←c56620, seq←v14588);
      runCount←v25984 = var←c56620.f1;
      seqGen←v26012 = var←c56620.f0;
      };
SOURCE(34620, 61)
   if ((runCount←v25984 == 0)) {
      runParts←v14632 = 0;
      }
   else {
      runParts←v14632 = (word) NextSequence←P3720(seqGen←v26012);
      };
SOURCE(34463, 218)
   return(runParts←v14632);
   }

static word FirstTransitionInRun←P3840(seq←v14692)
   word seq←v14692;
   {
   register ptr gf←c60620 =  (ptr) &globalframe;
   word transitionNum←v14736;
   word hiSegment←v26056;
   /* FirstTransitionInRun: */ 
SOURCE(34687, 754)
SOURCE(34764, 35)
   {
      word idx532;
      hiSegment←v26056 = (
         idx532 = (word) ((*  (ptr) (*  (ptr) seq←v14692 ) ) - 1),
         SGNCK(idx532)
         );
      };
SOURCE(34832, 609)
   if (((*  (ptr) (*  (ptr) seq←v14692 ) ) != (*  (ptr) (* (( (ptr) seq←v14692)+1) ) ))) {
      {
         word var←c56748;
         word var←c56780;
SOURCE(34899, 98)
         {
            register word i←v26100 = 0;
            register word noName←c56652;
            noName←c56652 = hiSegment←v26056;
            if ((i←v26100 > noName←c56652)) {
               goto lab←L100284;
               };
            lab←L100287: ;
            {
               word var←c56684;
               word var←c56716;
SOURCE(34931, 31)
               {
                  word limit533;
                  var←c56684 = (* (( (ptr) seq←v14692)+1) );
                  if (XR←ExtractField(var←c56684, 32 + (word) (
                        limit533 = (*  (ptr) var←c56684 ),
                        BCK(i←v26100, limit533)
                        ), 1)) {
SOURCE(34953, 9)
                     return(i←v26100);
                     };
                  };
SOURCE(34964, 33)
               {
                  word limit534;
                  var←c56716 = (*  (ptr) seq←v14692 );
                  if (XR←ExtractField(var←c56716, 32 + (word) (
                        limit534 = (*  (ptr) var←c56716 ),
                        BCK(i←v26100, limit534)
                        ), 1)) {
SOURCE(34988, 9)
                     return(i←v26100);
                     };
                  };
               };
            if ((i←v26100 >= noName←c56652)) {
               goto lab←L100284;
               };
            i←v26100 = (i←v26100 + 1);
            goto lab←L100287;
            lab←L100284: ;
            };
SOURCE(35008, 51)
         {
            word limit535;
            var←c56748 = (hiSegment←v26056 + 1);
            var←c56780 = (* (( (ptr) seq←v14692)+1) );
            if (XR←ExtractField(var←c56780, 32 + (word) (
                  limit535 = (*  (ptr) var←c56780 ),
                  BCK(var←c56748, limit535)
                  ), 1)) {
SOURCE(35040, 19)
               return((hiSegment←v26056 + 1));
               };
            };
SOURCE(35061, 57)
         {
            word var←c0889;
            var←c0889 = (* (( (ptr) gf←c60620)+21) );
            (void) (XR←RaiseSignal((* (( (ptr) gf←c60620)+4)/* Problem←v3952 */  ), 0, (word) &var←c0889));
            };
         };
      }
   else {
SOURCE(35129, 312)
      {
         register word i←v26144 = 0;
         register word noName←c56812;
         noName←c56812 = hiSegment←v26056;
         if ((i←v26144 > noName←c56812)) {
            goto lab←L100288;
            };
         lab←L100292: ;
         {
            word var←c56844;
            word var←c56876;
            word var←c56908;
            word var←c56940;
            word var←c56972;
SOURCE(35161, 91)
            {
               word tc536;
               word limit537;
               word limit538;
               var←c56844 = IOP2( % ,  (int)((i←v26144 - 1) + (*  (ptr) (*  (ptr) seq←v14692 ) )),  (int)(*  (ptr) (*  (ptr) seq←v14692 ) ))
               ;
               var←c56876 = (*  (ptr) seq←v14692 );
               if ( ! XR←ExtractField(var←c56876, 32 + (word) (
                     limit537 = (*  (ptr) var←c56876 ),
                     BCK(var←c56844, limit537)
                     ), 1)) {
                  var←c56908 = (* (( (ptr) seq←v14692)+1) );
                  tc536 =  (word) XR←ExtractField(var←c56908, 32 + (word) (
                        limit538 = (*  (ptr) var←c56908 ),
                        BCK(i←v26144, limit538)
                        ), 1);
                  }
               else {
                  tc536 =  (word) 0;
                  };
               if (tc536) {
SOURCE(35252, 15)
                  goto lab←L100291;
                  };
               };
SOURCE(35269, 46)
            {
               word tc539;
               word limit540;
               word limit541;
               var←c56940 = (* (( (ptr) seq←v14692)+1) );
               if ( ! XR←ExtractField(var←c56940, 32 + (word) (
                     limit540 = (*  (ptr) var←c56940 ),
                     BCK(i←v26144, limit540)
                     ), 1)) {
                  var←c56972 = (*  (ptr) seq←v14692 );
                  tc539 =  (word) XR←ExtractField(var←c56972, 32 + (word) (
                        limit541 = (*  (ptr) var←c56972 ),
                        BCK(i←v26144, limit541)
                        ), 1);
                  }
               else {
                  tc539 =  (word) 0;
                  };
               if (tc539) {
SOURCE(35315, 15)
                  goto lab←L100291;
                  };
               };
            };
         if ((i←v26144 >= noName←c56812)) {
            goto lab←L100288;
            };
         i←v26144 = (i←v26144 + 1);
         goto lab←L100292;
         /* c2c skipped dead code */ 
         lab←L100291: ;
SOURCE(35353, 17)
         transitionNum←v14736 = i←v26144;
         goto lab←L100289;
         lab←L100288: ;
SOURCE(35384, 57)
         {
            word var←c0897;
            var←c0897 = (* (( (ptr) gf←c60620)+21) );
            (void) (XR←RaiseSignal((* (( (ptr) gf←c60620)+4)/* Problem←v3952 */  ), 0, (word) &var←c0897));
            };
         lab←L100289: ;
         };
      };
SOURCE(34687, 754)
   return(transitionNum←v14736);
   }

static word AppendToList←P3900(list1←v14796, list2←v14824)
   word list1←v14796;
   word list2←v14824;
   {
   register ptr gf←c60652 =  (ptr) &globalframe;
   word result←v14952;
   word pos←v26188 = 0;
   word newCell←v26216 = 0;
   /* AppendToList: */ 
SOURCE(35459, 381)
SOURCE(35459, 381)
   result←v14952 = 0;
SOURCE(35604, 33)
   if ((list1←v14796 == 0)) {
SOURCE(35624, 13)
      return(list2←v14824);
      };
SOURCE(35639, 31)
   {
      word var←c57004;
      var←c57004 = XR←NewObject(8, (* (( (ptr) gf←c60652)+18) ));
      (*  (ptr) var←c57004 ) = (*  (ptr) list1←v14796 );
      result←v14952 = var←c57004;
      };
SOURCE(35672, 12)
   pos←v26188 = result←v14952;
SOURCE(35686, 126)
   {
      register word l←v26428;
      l←v26428 = (* (( (ptr) list1←v14796)+1) );
      lab←L100296: ;
      if ((l←v26428 != 0)) {
         }
      else {
         goto lab←L100293;
         };
SOURCE(35749, 28)
      {
         word var←c57036;
         var←c57036 = XR←NewObject(8, (* (( (ptr) gf←c60652)+18) ));
         (*  (ptr) var←c57036 ) = (*  (ptr) l←v26428 );
         newCell←v26216 = var←c57036;
         };
SOURCE(35779, 18)
      (* (( (ptr) pos←v26188)+1) ) = newCell←v26216;
SOURCE(35799, 13)
      pos←v26188 = newCell←v26216;
      l←v26428 = (* (( (ptr) l←v26428)+1) );
      goto lab←L100296;
      lab←L100293: ;
      };
SOURCE(35823, 17)
   (* (( (ptr) pos←v26188)+1) ) = list2←v14824;
SOURCE(35459, 381)
   return(result←v14952);
   }

static void ConsiderJoint←P3960(formal←c0924, in←v15096, list←v15124, seq←v15152, thisSeq←v15180, runCount←v15208, i←v15236)
   word formal←c0924;
   word in←v15096;
   word list←v15124;
   word seq←v15152;
   word thisSeq←v15180;
   word runCount←v15208;
   word i←v15236;
   {
   register ptr gf←c60684 =  (ptr) &globalframe;
   word newIn←v15364;
   word newList←v15392;
   word newThisSeq←v15420;
   word newCount←v15448;
   /* ConsiderJoint: */ 
SOURCE(35846, 735)
SOURCE(35846, 735)
   newList←v15392 = 0;
SOURCE(35846, 735)
   newThisSeq←v15420 = 0;
   {
      word var←c57068;
      word var←c57100;
      word var←c57196;
      word var←c57260;
SOURCE(36053, 10)
      newIn←v15364 = in←v15096;
SOURCE(36065, 14)
      newList←v15392 = list←v15124;
SOURCE(36081, 20)
      newThisSeq←v15420 = thisSeq←v15180;
SOURCE(36103, 19)
      newCount←v15448 = runCount←v15208;
      {
         word tc542;
         word limit543;
         var←c57068 = (* (( (ptr) seq←v15152)+1) );
         if ( ! XR←ExtractField(var←c57068, 32 + (word) (
               limit543 = (*  (ptr) var←c57068 ),
               BCK(i←v15236, limit543)
               ), 1)) {
            tc542 =  (word) (0 == in←v15096);
            }
         else {
            tc542 =  (word) 0;
            };
         if (tc542) {
            }
         else {
            {
               word tc544;
               word limit545;
               var←c57100 = (* (( (ptr) seq←v15152)+1) );
               if ( ! XR←ExtractField(var←c57100, 32 + (word) (
                     limit545 = (*  (ptr) var←c57100 ),
                     BCK(i←v15236, limit545)
                     ), 1)) {
                  tc544 =  (word) (0 != in←v15096);
                  }
               else {
                  tc544 =  (word) 0;
                  };
               if (tc544) {
SOURCE(36207, 13)
                  newIn←v15364 = 0;
SOURCE(36222, 48)
                  {
                     word var←c57132;
                     {
                        word var←c57164;
                        var←c57164 = XR←NewObject(8, (* (( (ptr) gf←c60684)+18) ));
                        (*  (ptr) var←c57164 ) = thisSeq←v15180;
                        var←c57132 = var←c57164;
                        };
                     newList←v15392 = (word) AppendToList←P3900(list←v15124, var←c57132);
                     };
SOURCE(36272, 16)
                  newThisSeq←v15420 = 0;
                  }
               else {
                  {
                     word tc546;
                     word limit547;
                     var←c57196 = (* (( (ptr) seq←v15152)+1) );
                     if (XR←ExtractField(var←c57196, 32 + (word) (
                           limit547 = (*  (ptr) var←c57196 ),
                           BCK(i←v15236, limit547)
                           ), 1)) {
                        tc546 =  (word) (0 == in←v15096);
                        }
                     else {
                        tc546 =  (word) 0;
                        };
                     if (tc546) {
SOURCE(36321, 12)
                        newIn←v15364 = 1;
SOURCE(36335, 32)
                        newThisSeq←v15420 = (word) CreateEmptySeq←P600(seq←v15152);
SOURCE(36369, 23)
                        newCount←v15448 = (newCount←v15448 + 1);
SOURCE(36394, 27)
                        {
                           word var←c57228;
                           var←c57228 = (* (( (ptr) newThisSeq←v15420)+1) );
                           {
/*1*/   word limit548;
/*1*/   word xs549;
/*1*/   xs549 = (word) (
/*1*/      limit548 = (*  (ptr) var←c57228 ),
/*1*/      BCK(i←v15236, limit548)
/*1*/      );
/*1*/   (*  (bPt) ((( (bPt) var←c57228)+4) + ((word) xs549 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs549 & 7)+1));
/*1*/   };
                           };
SOURCE(36423, 49)
                        (* (( (ptr) newThisSeq←v15420)+4) ) = ((* (( (ptr) newThisSeq←v15420)+4) ) + 1);
                        }
                     else {
                        {
                           word tc550;
                           word limit551;
                           var←c57260 = (* (( (ptr) seq←v15152)+1) );
                           if (XR←ExtractField(var←c57260, 32 + (word) (
/*1*/      limit551 = (*  (ptr) var←c57260 ),
/*1*/      BCK(i←v15236, limit551)
/*1*/      ), 1)) {
/*1*/   tc550 =  (word) (0 != in←v15096);
/*1*/   }
                           else {
/*1*/   tc550 =  (word) 0;
/*1*/   };
                           if (tc550) {
SOURCE(36503, 27)
/*1*/   {
/*1*/      word var←c57292;
/*1*/      var←c57292 = (* (( (ptr) newThisSeq←v15420)+1) );
/*1*/      {
/*1*/         word limit552;
/*1*/         word xs553;
/*1*/         xs553 = (word) (
/*1*/            limit552 = (*  (ptr) var←c57292 ),
/*1*/            BCK(i←v15236, limit552)
/*1*/            );
/*1*/         (*  (bPt) ((( (bPt) var←c57292)+4) + ((word) xs553 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs553 & 7)+1));
/*1*/         };
/*1*/      };
SOURCE(36532, 49)
/*1*/   (* (( (ptr) newThisSeq←v15420)+4) ) = ((* (( (ptr) newThisSeq←v15420)+4) ) + 1);
/*1*/   }
                           else {
SOURCE(36597, 5)
/*1*/   (void) XR←RaiseUnnamedError();
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0924 ) = newIn←v15364;
   (* (( (ptr) formal←c0924)+1) ) = newList←v15392;
   (* (( (ptr) formal←c0924)+2) ) = newThisSeq←v15420;
   (* (( (ptr) formal←c0924)+3) ) = newCount←v15448;
   return;
   }

static void ConsiderSegment←P4020(formal←c0943, in←v15592, list←v15620, seq←v15648, thisSeq←v15676, runCount←v15704, i←v15732)
   word formal←c0943;
   word in←v15592;
   word list←v15620;
   word seq←v15648;
   word thisSeq←v15676;
   word runCount←v15704;
   word i←v15732;
   {
   register ptr gf←c60716 =  (ptr) &globalframe;
   word newIn←v15860;
   word newList←v15888;
   word newThisSeq←v15916;
   word newCount←v15944;
   /* ConsiderSegment: */ 
SOURCE(36608, 809)
SOURCE(36608, 809)
   newList←v15888 = 0;
SOURCE(36608, 809)
   newThisSeq←v15916 = 0;
   {
      word var←c57324;
      word var←c57356;
      word var←c57452;
      word var←c57516;
SOURCE(36817, 10)
      newIn←v15860 = in←v15592;
SOURCE(36829, 14)
      newList←v15888 = list←v15620;
SOURCE(36845, 20)
      newThisSeq←v15916 = thisSeq←v15676;
SOURCE(36867, 19)
      newCount←v15944 = runCount←v15704;
      {
         word tc554;
         word limit555;
         var←c57324 = (*  (ptr) seq←v15648 );
         if ( ! XR←ExtractField(var←c57324, 32 + (word) (
               limit555 = (*  (ptr) var←c57324 ),
               BCK(i←v15732, limit555)
               ), 1)) {
            tc554 =  (word) (0 == in←v15592);
            }
         else {
            tc554 =  (word) 0;
            };
         if (tc554) {
            }
         else {
            {
               word tc556;
               word limit557;
               var←c57356 = (*  (ptr) seq←v15648 );
               if ( ! XR←ExtractField(var←c57356, 32 + (word) (
                     limit557 = (*  (ptr) var←c57356 ),
                     BCK(i←v15732, limit557)
                     ), 1)) {
                  tc556 =  (word) (0 != in←v15592);
                  }
               else {
                  tc556 =  (word) 0;
                  };
               if (tc556) {
SOURCE(36975, 13)
                  newIn←v15860 = 0;
SOURCE(36990, 48)
                  {
                     word var←c57388;
                     {
                        word var←c57420;
                        var←c57420 = XR←NewObject(8, (* (( (ptr) gf←c60716)+18) ));
                        (*  (ptr) var←c57420 ) = thisSeq←v15676;
                        var←c57388 = var←c57420;
                        };
                     newList←v15888 = (word) AppendToList←P3900(list←v15620, var←c57388);
                     };
SOURCE(37040, 16)
                  newThisSeq←v15916 = 0;
                  }
               else {
                  {
                     word tc558;
                     word limit559;
                     var←c57452 = (*  (ptr) seq←v15648 );
                     if (XR←ExtractField(var←c57452, 32 + (word) (
                           limit559 = (*  (ptr) var←c57452 ),
                           BCK(i←v15732, limit559)
                           ), 1)) {
                        tc558 =  (word) (0 == in←v15592);
                        }
                     else {
                        tc558 =  (word) 0;
                        };
                     if (tc558) {
SOURCE(37091, 12)
                        newIn←v15860 = 1;
SOURCE(37105, 32)
                        newThisSeq←v15916 = (word) CreateEmptySeq←P600(seq←v15648);
SOURCE(37139, 23)
                        newCount←v15944 = (newCount←v15944 + 1);
SOURCE(37164, 29)
                        {
                           word var←c57484;
                           var←c57484 = (*  (ptr) newThisSeq←v15916 );
                           {
/*1*/   word limit560;
/*1*/   word xs561;
/*1*/   xs561 = (word) (
/*1*/      limit560 = (*  (ptr) var←c57484 ),
/*1*/      BCK(i←v15732, limit560)
/*1*/      );
/*1*/   (*  (bPt) ((( (bPt) var←c57484)+4) + ((word) xs561 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs561 & 7)+1));
/*1*/   };
                           };
SOURCE(37195, 45)
                        (* (( (ptr) newThisSeq←v15916)+3) ) = ((* (( (ptr) newThisSeq←v15916)+3) ) + 1);
SOURCE(37242, 32)
                        (void) ControlPointsTrue←P4080(newThisSeq←v15916, i←v15732);
                        }
                     else {
                        {
                           word tc562;
                           word limit563;
                           var←c57516 = (*  (ptr) seq←v15648 );
                           if (XR←ExtractField(var←c57516, 32 + (word) (
/*1*/      limit563 = (*  (ptr) var←c57516 ),
/*1*/      BCK(i←v15732, limit563)
/*1*/      ), 1)) {
/*1*/   tc562 =  (word) (0 != in←v15592);
/*1*/   }
                           else {
/*1*/   tc562 =  (word) 0;
/*1*/   };
                           if (tc562) {
SOURCE(37307, 29)
/*1*/   {
/*1*/      word var←c57548;
/*1*/      var←c57548 = (*  (ptr) newThisSeq←v15916 );
/*1*/      {
/*1*/         word limit564;
/*1*/         word xs565;
/*1*/         xs565 = (word) (
/*1*/            limit564 = (*  (ptr) var←c57548 ),
/*1*/            BCK(i←v15732, limit564)
/*1*/            );
/*1*/         (*  (bPt) ((( (bPt) var←c57548)+4) + ((word) xs565 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs565 & 7)+1));
/*1*/         };
/*1*/      };
SOURCE(37338, 45)
/*1*/   (* (( (ptr) newThisSeq←v15916)+3) ) = ((* (( (ptr) newThisSeq←v15916)+3) ) + 1);
SOURCE(37385, 32)
/*1*/   (void) ControlPointsTrue←P4080(newThisSeq←v15916, i←v15732);
/*1*/   }
                           else {
SOURCE(37433, 5)
/*1*/   (void) XR←RaiseUnnamedError();
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0943 ) = newIn←v15860;
   (* (( (ptr) formal←c0943)+1) ) = newList←v15888;
   (* (( (ptr) formal←c0943)+2) ) = newThisSeq←v15916;
   (* (( (ptr) formal←c0943)+3) ) = newCount←v15944;
   return;
   }

static void ControlPointsTrue←P4080(seq←v16088, segNum←v16116)
   word seq←v16088;
   word segNum←v16116;
   {
   word cpCount←v26556;
   word var←c57580;
   /* ControlPointsTrue: */ 
SOURCE(37444, 263)
SOURCE(37502, 44)
   {
      word limit566;
      var←c57580 = (* (( (ptr) seq←v16088)+2) );
      cpCount←v26556 = (*  (ptr) (* ((( (ptr) var←c57580)+1)+(
            limit566 = (*  (ptr) var←c57580 ),
            BCK(segNum←v16116, limit566)
            )) ) );
      };
SOURCE(37548, 159)
   {
      register word j←v26600 = 0;
      register word noName←c57612;
      word var←c57644;
      word var←c57676;
      noName←c57612 = cpCount←v26556;
      if ((j←v26600 >= noName←c57612)) {
         goto lab←L100299;
         };
      lab←L100302: ;
SOURCE(37578, 129)
      {
         word limit568;
         {
            word limit567;
            var←c57644 = (* (( (ptr) seq←v16088)+2) );
            var←c57676 = (* ((( (ptr) var←c57644)+1)+(
                  limit567 = (*  (ptr) var←c57644 ),
                  BCK(segNum←v16116, limit567)
                  )) );
            };
         if ( ! XR←ExtractField(var←c57676, 32 + (word) (
               limit568 = (*  (ptr) var←c57676 ),
               BCK(j←v26600, limit568)
               ), 1)) {
SOURCE(37621, 35)
            {
               word var←c57740;
               {
                  word var←c57708;
                  var←c57708 = (* (( (ptr) seq←v16088)+2) );
                  {
                     word limit569;
                     var←c57740 = (* ((( (ptr) var←c57708)+1)+(
                           limit569 = (*  (ptr) var←c57708 ),
                           BCK(segNum←v16116, limit569)
                           )) );
                     };
                  };
               {
                  word limit570;
                  word xs571;
                  xs571 = (word) (
                     limit570 = (*  (ptr) var←c57740 ),
                     BCK(j←v26600, limit570)
                     );
                  (*  (bPt) ((( (bPt) var←c57740)+4) + ((word) xs571 >> 3)) ) |= ((unsigned) 1 << 8 - ((word) (xs571 & 7)+1));
                  };
               };
SOURCE(37658, 49)
            (* (( (ptr) seq←v16088)+5) ) = ((* (( (ptr) seq←v16088)+5) ) + 1);
            };
         };
      j←v26600 = (j←v26600 + 1);
      if ((j←v26600 < noName←c57612)) {
         goto lab←L100302;
         };
      lab←L100299: ;
      };
   }

static word NATsInInterval←P4140(start←v16288, length←v16316, mod←v16344)
   word start←v16288;
   word length←v16316;
   word mod←v16344;
   {
   register ptr gf←c60748 =  (ptr) &globalframe;
   word natGen←v16388;
   /* NATsInInterval: */ 
SOURCE(37835, 152)
SOURCE(37835, 152)
   natGen←v16388 = 0;
SOURCE(37917, 70)
   {
      word var←c57772;
      var←c57772 = XR←NewObject(12, (* (( (ptr) gf←c60748)+17) ));
      (*  (ptr) var←c57772 ) = length←v16316;
      (* (( (ptr) var←c57772)+1) ) = start←v16288;
      (* (( (ptr) var←c57772)+2) ) = mod←v16344;
      natGen←v16388 = var←c57772;
      };
SOURCE(37835, 152)
   return(natGen←v16388);
   }

static word NextNAT←P4200(natGen←v16448)
   word natGen←v16448;
   {
   word nextNAT←v16492;
   /* NextNAT: */ 
SOURCE(37993, 200)
SOURCE(38057, 34)
   if (((*  (ptr) natGen←v16448 ) == 0)) {
SOURCE(38081, 10)
      return( (word) -1);
      };
SOURCE(38093, 29)
   {
      word idx572;
      (*  (ptr) natGen←v16448 ) = (
         idx572 = (word) ((*  (ptr) natGen←v16448 ) - 1),
         SGNCK(idx572)
         );
      };
SOURCE(38124, 21)
   nextNAT←v16492 = (* (( (ptr) natGen←v16448)+1) );
SOURCE(38147, 46)
   (* (( (ptr) natGen←v16448)+1) ) = (((* (( (ptr) natGen←v16448)+1) ) + 1) % (* (( (ptr) natGen←v16448)+2) ));
SOURCE(37993, 200)
   return(nextNAT←v16492);
   }

static word SegmentsInTraj←P4260(traj←v16552)
   word traj←v16552;
   {
   register ptr gf←c60780 =  (ptr) &globalframe;
   word segGen←v16596;
   /* SegmentsInTraj: */ 
SOURCE(38199, 195)
SOURCE(38199, 195)
   segGen←v16596 = 0;
SOURCE(38284, 110)
   {
      word var←c57804;
      var←c57804 = XR←NewObject(32, (* (( (ptr) gf←c60780)+16) ));
      (*  (ptr) var←c57804 ) = traj←v16552;
      (* (( (ptr) var←c57804)+1) ) = (* (( (ptr) traj←v16552)+1) );
      (* (( (ptr) var←c57804)+5) ) = 1;
      segGen←v16596 = var←c57804;
      };
SOURCE(38199, 195)
   return(segGen←v16596);
   }

static word WalkSegmentsInTraj←P4320(traj←v16656, walkProc←v16684)
   word traj←v16656;
   word walkProc←v16684;
   {
   register ptr gf←c60812 =  (ptr) &globalframe;
   word aborted←v16728;
   word seg←v26644 = 0;
   /* WalkSegmentsInTraj: */ 
SOURCE(38400, 271)
SOURCE(38400, 271)
   aborted←v16728 = 0;
SOURCE(38526, 145)
   {
      register word i←v26688 = 0;
      register word noName←c57836;
      {
         word pd573;
         pd573 = (* (( (ptr) (* (( (ptr) gf←c60812)+204)/* var←c43500 */  ))+38) );
         noName←c57836 = (word) ( *( (fPt) ((*  (ptr) pd573 ))))(traj←v16656, pd573);
         };
      if ((i←v26688 > noName←c57836)) {
         goto lab←L100303;
         };
      lab←L100306: ;
SOURCE(38575, 38)
      {
         word pd574;
         pd574 = (* (( (ptr) (* (( (ptr) gf←c60812)+204)/* var←c43500 */  ))+30) );
         seg←v26644 = (word) ( *( (fPt) ((*  (ptr) pd574 ))))(traj←v16656, i←v26688, pd574);
         };
SOURCE(38615, 32)
      aborted←v16728 = (word) ( *( (fPt) ((*  (ptr) walkProc←v16684 ))))(traj←v16656, seg←v26644, i←v26688, walkProc←v16684);
SOURCE(38649, 22)
      if ((0 != aborted←v16728)) {
SOURCE(38665, 6)
         return(aborted←v16728);
         };
      if ((i←v26688 >= noName←c57836)) {
         goto lab←L100303;
         };
      i←v26688 = (i←v26688 + 1);
      goto lab←L100306;
      lab←L100303: ;
      };
SOURCE(38400, 271)
   return(aborted←v16728);
   }

static word WalkSegmentsInSequence←P4380(traj←v16788, seq←v16816, walkProc←v16844)
   word traj←v16788;
   word seq←v16816;
   word walkProc←v16844;
   {
   register ptr gf←c60844 =  (ptr) &globalframe;
   word aborted←v16888;
   word seg←v26732 = 0;
   word done←v26760 = 0;
   word toGo←v26788;
   word segCount←v26816;
   word index←v26844 = 0;
   word touched←v26872 = 0;
   /* WalkSegmentsInSequence: */ 
SOURCE(38685, 602)
SOURCE(38685, 602)
   aborted←v16888 = 0;
SOURCE(38851, 49)
   toGo←v26788 =  ( (seq←v16816 == 0) ? 0 : (* (( (ptr) seq←v16816)+3) ) ) ;
SOURCE(38902, 29)
   segCount←v26816 = (* (( (ptr) traj←v16788)+1) );
SOURCE(38958, 329)
   {
      register word i←v26916 = 1;
      register word noName←c57868;
      noName←c57868 = toGo←v26788;
      if ((i←v26916 > noName←c57868)) {
         goto lab←L100307;
         };
      lab←L100310: ;
      {
         word var←c57900;
SOURCE(38985, 153)
         lab←L100313: ;
         {
            word limit575;
            var←c57900 = (*  (ptr) seq←v16816 );
            if ( ! XR←ExtractField(var←c57900, 32 + (word) (
                  limit575 = (*  (ptr) var←c57900 ),
                  BCK(index←v26844, limit575)
                  ), 1)) {
               }
            else {
               goto lab←L100311;
               };
            };
SOURCE(39014, 32)
         index←v26844 = ((index←v26844 + 1) % segCount←v26816);
SOURCE(39048, 21)
         touched←v26872 = (touched←v26872 + 1);
SOURCE(39071, 67)
         if ((touched←v26872 >= segCount←v26816)) {
SOURCE(39099, 39)
            {
               word var←c0983;
               var←c0983 = (* (( (ptr) gf←c60844)+23) );
               (void) (XR←RaiseSignal((* (( (ptr) gf←c60844)+4)/* Problem←v3952 */  ), 0, (word) &var←c0983));
               };
            };
         goto lab←L100313;
         lab←L100311: ;
SOURCE(39149, 42)
         {
            word pd576;
            pd576 = (* (( (ptr) (* (( (ptr) gf←c60844)+204)/* var←c43500 */  ))+30) );
            seg←v26732 = (word) ( *( (fPt) ((*  (ptr) pd576 ))))(traj←v16788, index←v26844, pd576);
            };
SOURCE(39193, 36)
         aborted←v16888 = (word) ( *( (fPt) ((*  (ptr) walkProc←v16844 ))))(traj←v16788, seg←v26732, index←v26844, walkProc←v16844)
         ;
SOURCE(39231, 22)
         if ((0 != aborted←v16888)) {
SOURCE(39247, 6)
            return(aborted←v16888);
            };
SOURCE(39255, 32)
         index←v26844 = ((index←v26844 + 1) % segCount←v26816);
         };
      if ((i←v26916 >= noName←c57868)) {
         goto lab←L100307;
         };
      i←v26916 = (i←v26916 + 1);
      goto lab←L100310;
      lab←L100307: ;
      };
SOURCE(38685, 602)
   return(aborted←v16888);
   }

static word CountSegmentsInSequence←P4440(traj←v16948, seq←v16976)
   word traj←v16948;
   word seq←v16976;
   {
   W7 var←c60876;
   /* declaration of count←v17020 skipped */ 
   /* declaration of var←c57932 skipped */ 
   /* CountSegmentsInSequence: */ 
SOURCE(39302, 265)
   {
      word tmpAddr577;
      tmpAddr577 = (word) (( (ptr) &var←c60876)+5)/* var←c57932 */ ;
      (*  (ptr) tmpAddr577 ) = ( ((word)  (fPt) AddEmUp←P9852) );
      (* (( (ptr) tmpAddr577) + 1) ) = 1;
      };
SOURCE(39509, 9)
   var←c60876.f4/* count←v17020 */  = 0;
SOURCE(39520, 47)
   {
      word var←c57964;
      var←c57964 = (word) WalkSegmentsInSequence←P4380(traj←v16948, seq←v16976, (word) (( (bPt) &var←c60876)+20)/* var←c57932 */ )
      ;
      };
SOURCE(39302, 265)
   return(var←c60876.f4/* count←v17020 */ );
   }

static word AddEmUp←P9852(traj←v27036, seg←v27064, index←v27092, formal←c60908)
   word traj←v27036;
   word seg←v27064;
   word index←v27092;
   word formal←c60908;
   {
   word done←v27136;
   formal←c60908 = (formal←c60908 - 20);
   /* AddEmUp: */ 
SOURCE(39397, 107)
SOURCE(39397, 107)
   done←v27136 = 0;
SOURCE(39487, 17)
   (* (( (ptr) formal←c60908)+4) ) = ((* (( (ptr) formal←c60908)+4) ) + 1);
SOURCE(39397, 107)
   return(done←v27136);
   }

static void NextSegmentAndIndex←P4500(formal←c0999, segGen←v17080)
   word formal←c0999;
   word segGen←v17080;
   {
   register ptr gf←c60940 =  (ptr) &globalframe;
   W2 next←v17124;
   word segCount←v27164;
   word seq←v27192;
   /* NextSegmentAndIndex: */ 
SOURCE(39573, 733)
SOURCE(39573, 733)
   next←v17124.f0 = 0;
   next←v17124.f1 = 0;
SOURCE(39680, 27)
   seq←v27192 = (* (( (ptr) segGen←v17080)+4) );
SOURCE(39709, 42)
   if (((* (( (ptr) segGen←v17080)+1) ) == 0)) {
SOURCE(39733, 18)
      next←v17124.f0 = 0;
      next←v17124.f1 = 999;
      goto lab←L100314;
      };
SOURCE(39753, 48)
   {
      word pd578;
      pd578 = (* (( (ptr) (* (( (ptr) gf←c60940)+204)/* var←c43500 */  ))+38) );
      segCount←v27164 = ((word) ( *( (fPt) ((*  (ptr) pd578 ))))((*  (ptr) (segGen←v17080) ), pd578) + 1);
      };
SOURCE(39803, 285)
   if ((0 == (* (( (ptr) segGen←v17080)+5) ))) {
SOURCE(39893, 195)
      {
         word var←c58028;
         lab←L100317: ;
         {
            word idx579;
            word limit580;
            var←c58028 = (*  (ptr) seq←v27192 );
            if ( ! XR←ExtractField(var←c58028, 32 + (word) (
                  idx579 = (* (( (ptr) segGen←v17080)+2) ),
                  limit580 = (*  (ptr) var←c58028 ),
                  BCK(idx579, limit580)
                  ), 1)) {
               }
            else {
               goto lab←L100315;
               };
            };
SOURCE(39929, 46)
         (* (( (ptr) segGen←v17080)+2) ) = (((* (( (ptr) segGen←v17080)+2) ) + 1) % segCount←v27164);
SOURCE(39977, 35)
         (* (( (ptr) segGen←v17080)+3) ) = ((* (( (ptr) segGen←v17080)+3) ) + 1);
SOURCE(40014, 74)
         if (((* (( (ptr) segGen←v17080)+3) ) >= segCount←v27164)) {
SOURCE(40049, 39)
            {
               word var←c0998;
               var←c0998 = (* (( (ptr) gf←c60940)+23) );
               (void) (XR←RaiseSignal((* (( (ptr) gf←c60940)+4)/* Problem←v3952 */  ), 0, (word) &var←c0998));
               };
            };
         goto lab←L100317;
         lab←L100315: ;
         };
      };
SOURCE(40102, 61)
   {
      word pd581;
      pd581 = (* (( (ptr) (* (( (ptr) gf←c60940)+204)/* var←c43500 */  ))+30) );
      next←v17124.f0 = (word) ( *( (fPt) ((*  (ptr) pd581 ))))((*  (ptr) segGen←v17080 ), (* (( (ptr) segGen←v17080)+2) ), pd581)
      ;
      };
SOURCE(40165, 25)
   next←v17124.f1 = (* (( (ptr) segGen←v17080)+2) );
SOURCE(40192, 46)
   (* (( (ptr) segGen←v17080)+2) ) = (((* (( (ptr) segGen←v17080)+2) ) + 1) % segCount←v27164);
SOURCE(40240, 35)
   (* (( (ptr) segGen←v17080)+3) ) = ((* (( (ptr) segGen←v17080)+3) ) + 1);
SOURCE(40277, 29)
   {
      word idx582;
      (* (( (ptr) segGen←v17080)+1) ) = (
         idx582 = (word) ((* (( (ptr) segGen←v17080)+1) ) - 1),
         SGNCK(idx582)
         );
      };
   /* removed tail goto */ 
   lab←L100314: ;
   (*  (W2Pt) formal←c0999 ) = next←v17124;
   return;
   }

static word SegmentsInSequence←P4560(traj←v17184, seq←v17212)
   word traj←v17184;
   word seq←v17212;
   {
   register ptr gf←c60972 =  (ptr) &globalframe;
   word segGen←v17256;
   /* SegmentsInSequence: */ 
SOURCE(40312, 389)
SOURCE(40312, 389)
   segGen←v17256 = 0;
SOURCE(40416, 63)
   if ((0 != (word) IsComplete←P2280(seq←v17212))) {
SOURCE(40442, 29)
      segGen←v17256 = (word) SegmentsInTraj←P4260(traj←v17184);
SOURCE(40473, 6)
      return(segGen←v17256);
      };
SOURCE(40484, 217)
   {
      word var←c58060;
      var←c58060 = XR←NewObject(32, (* (( (ptr) gf←c60972)+16) ));
      if ((seq←v17212 == 0)) {
         (*  (ptr) var←c58060 ) = 0;
         }
      else {
         (*  (ptr) var←c58060 ) = traj←v17184;
         };
      if ((seq←v17212 == 0)) {
         (* (( (ptr) var←c58060)+1) ) = 0;
         }
      else {
         (* (( (ptr) var←c58060)+1) ) = (* (( (ptr) seq←v17212)+3) );
         };
      (* (( (ptr) var←c58060)+4) ) = seq←v17212;
      segGen←v17256 = var←c58060;
      };
SOURCE(40312, 389)
   return(segGen←v17256);
   }

static word OrderedSegmentsInSequence←P4620(traj←v17316, seq←v17344)
   word traj←v17316;
   word seq←v17344;
   {
   register ptr gf←c61004 =  (ptr) &globalframe;
   word segGen←v17388;
   /* OrderedSegmentsInSequence: */ 
SOURCE(40707, 390)
SOURCE(40707, 390)
   segGen←v17388 = 0;
SOURCE(40818, 52)
   if ((0 != (word) IsComplete←P2280(seq←v17344))) {
SOURCE(40842, 28)
      return((word) SegmentsInTraj←P4260(traj←v17316));
      };
SOURCE(40872, 225)
   {
      word var←c58124;
      word var←c58156;
      if (((* (( (ptr) seq←v17344)+3) ) == 0)) {
         var←c58124 = 0;
         }
      else {
         var←c58124 = (word) FirstSegment←P2820(seq←v17344);
         };
      var←c58156 = XR←NewObject(32, (* (( (ptr) gf←c61004)+16) ));
      (*  (ptr) var←c58156 ) = traj←v17316;
      (* (( (ptr) var←c58156)+1) ) = (* (( (ptr) seq←v17344)+3) );
      (* (( (ptr) var←c58156)+2) ) = var←c58124;
      (* (( (ptr) var←c58156)+4) ) = seq←v17344;
      segGen←v17388 = var←c58156;
      };
SOURCE(40707, 390)
   return(segGen←v17388);
   }

static word NextSegment←P4680(segGen←v17448)
   word segGen←v17448;
   {
   register ptr gf←c61036 =  (ptr) &globalframe;
   word next←v17492;
   word segCount←v27236;
   word seq←v27264;
   /* NextSegment: */ 
SOURCE(41103, 683)
SOURCE(41103, 683)
   next←v17492 = 0;
SOURCE(41198, 27)
   seq←v27264 = (* (( (ptr) segGen←v17448)+4) );
SOURCE(41227, 35)
   if (((* (( (ptr) segGen←v17448)+1) ) == 0)) {
SOURCE(41251, 11)
      return(0);
      };
SOURCE(41264, 48)
   {
      word pd583;
      pd583 = (* (( (ptr) (* (( (ptr) gf←c61036)+204)/* var←c43500 */  ))+38) );
      segCount←v27236 = ((word) ( *( (fPt) ((*  (ptr) pd583 ))))((*  (ptr) (segGen←v17448) ), pd583) + 1);
      };
SOURCE(41314, 285)
   if ((0 == (* (( (ptr) segGen←v17448)+5) ))) {
SOURCE(41404, 195)
      {
         word var←c58188;
         lab←L100320: ;
         {
            word idx584;
            word limit585;
            var←c58188 = (*  (ptr) seq←v27264 );
            if ( ! XR←ExtractField(var←c58188, 32 + (word) (
                  idx584 = (* (( (ptr) segGen←v17448)+2) ),
                  limit585 = (*  (ptr) var←c58188 ),
                  BCK(idx584, limit585)
                  ), 1)) {
               }
            else {
               goto lab←L100318;
               };
            };
SOURCE(41440, 46)
         (* (( (ptr) segGen←v17448)+2) ) = (((* (( (ptr) segGen←v17448)+2) ) + 1) % segCount←v27236);
SOURCE(41488, 35)
         (* (( (ptr) segGen←v17448)+3) ) = ((* (( (ptr) segGen←v17448)+3) ) + 1);
SOURCE(41525, 74)
         if (((* (( (ptr) segGen←v17448)+3) ) >= segCount←v27236)) {
SOURCE(41560, 39)
            {
               word var←c01014;
               var←c01014 = (* (( (ptr) gf←c61036)+23) );
               (void) (XR←RaiseSignal((* (( (ptr) gf←c61036)+4)/* Problem←v3952 */  ), 0, (word) &var←c01014));
               };
            };
         goto lab←L100320;
         lab←L100318: ;
         };
      };
SOURCE(41613, 57)
   {
      word pd586;
      pd586 = (* (( (ptr) (* (( (ptr) gf←c61036)+204)/* var←c43500 */  ))+30) );
      next←v17492 = (word) ( *( (fPt) ((*  (ptr) pd586 ))))((*  (ptr) segGen←v17448 ), (* (( (ptr) segGen←v17448)+2) ), pd586);
      };
SOURCE(41672, 46)
   (* (( (ptr) segGen←v17448)+2) ) = (((* (( (ptr) segGen←v17448)+2) ) + 1) % segCount←v27236);
SOURCE(41720, 35)
   (* (( (ptr) segGen←v17448)+3) ) = ((* (( (ptr) segGen←v17448)+3) ) + 1);
SOURCE(41757, 29)
   {
      word idx587;
      (* (( (ptr) segGen←v17448)+1) ) = (
         idx587 = (word) ((* (( (ptr) segGen←v17448)+1) ) - 1),
         SGNCK(idx587)
         );
      };
SOURCE(41103, 683)
   return(next←v17492);
   }

static word ControlPointsInSequence←P4740(traj←v17552, seq←v17580)
   word traj←v17552;
   word seq←v17580;
   {
   register ptr gf←c61068 =  (ptr) &globalframe;
   word cpGen←v17624;
   /* ControlPointsInSequence: */ 
SOURCE(41792, 254)
SOURCE(41792, 254)
   cpGen←v17624 = 0;
SOURCE(41905, 141)
   {
      word var←c58220;
      var←c58220 = XR←NewObject(20, (* (( (ptr) gf←c61068)+10) ));
      (*  (ptr) var←c58220 ) = traj←v17552;
      (* (( (ptr) var←c58220)+1) ) = seq←v17580;
      if ((seq←v17580 == 0)) {
         (* (( (ptr) var←c58220)+2) ) = 0;
         }
      else {
         (* (( (ptr) var←c58220)+2) ) = (* (( (ptr) seq←v17580)+5) );
         };
      cpGen←v17624 = var←c58220;
      };
SOURCE(41792, 254)
   return(cpGen←v17624);
   }

static void WalkControlPointsInSequence←P4800(traj←v17684, seq←v17712, walkProc←v17740)
   word traj←v17684;
   word seq←v17712;
   word walkProc←v17740;
   {
   register ptr gf←c61100 =  (ptr) &globalframe;
   word hiSegment←v27308;
   word seg←v27336 = 0;
   word done←v27364 = 0;
   /* WalkControlPointsInSequence: */ 
SOURCE(42052, 398)
SOURCE(42155, 35)
   {
      word idx588;
      hiSegment←v27308 = (
         idx588 = (word) ((*  (ptr) (*  (ptr) seq←v17712 ) ) - 1),
         SGNCK(idx588)
         );
      };
SOURCE(42226, 224)
   {
      register word i←v27408 = 0;
      register word noName←c58252;
      noName←c58252 = hiSegment←v27308;
      if ((i←v27408 > noName←c58252)) {
         goto lab←L100321;
         };
      lab←L100324: ;
SOURCE(42258, 192)
      {
         register word j←v27452 = 0;
         register word noName←c58316;
         word var←c58284;
         word var←c58380;
         {
            word limit589;
            var←c58284 = (* (( (ptr) seq←v17712)+2) );
            noName←c58316 = (*  (ptr) (* ((( (ptr) var←c58284)+1)+(
                  limit589 = (*  (ptr) var←c58284 ),
                  BCK(i←v27408, limit589)
                  )) ) );
            };
         if ((j←v27452 >= noName←c58316)) {
            goto lab←L100325;
            };
         lab←L100328: ;
SOURCE(42305, 145)
         {
            word limit591;
            {
               word var←c58348;
               var←c58348 = (* (( (ptr) seq←v17712)+2) );
               {
                  word limit590;
                  var←c58380 = (* ((( (ptr) var←c58348)+1)+(
                        limit590 = (*  (ptr) var←c58348 ),
                        BCK(i←v27408, limit590)
                        )) );
                  };
               };
            if (XR←ExtractField(var←c58380, 32 + (word) (
                  limit591 = (*  (ptr) var←c58380 ),
                  BCK(j←v27452, limit591)
                  ), 1)) {
SOURCE(42339, 38)
               {
                  word pd592;
                  pd592 = (* (( (ptr) (* (( (ptr) gf←c61100)+204)/* var←c43500 */  ))+30) );
                  seg←v27336 = (word) ( *( (fPt) ((*  (ptr) pd592 ))))(traj←v17684, i←v27408, pd592);
                  };
SOURCE(42379, 50)
               {
                  W2 var←c58412;
                  {
                     word pd593;
                     pd593 = (* (( (ptr) (*  (ptr) seg←v27336 ))+16) );
                     (void) ( *( (fPt) ((*  (ptr) pd593 ))))((word) &var←c58412, seg←v27336, j←v27452, pd593);
                     };
                  done←v27364 = (word) ( *( (fPt) ((*  (ptr) walkProc←v17740 ))))(var←c58412, walkProc←v17740);
                  };
SOURCE(42431, 19)
               if ((0 != done←v27364)) {
SOURCE(42444, 6)
                  return;
                  };
               };
            };
         j←v27452 = (j←v27452 + 1);
         if ((j←v27452 < noName←c58316)) {
            goto lab←L100328;
            };
         lab←L100325: ;
         };
      if ((i←v27408 >= noName←c58252)) {
         goto lab←L100321;
         };
      i←v27408 = (i←v27408 + 1);
      goto lab←L100324;
      lab←L100321: ;
      };
   }

static void NextControlPoint←P4860(formal←c01049, cpGen←v17800)
   word formal←c01049;
   word cpGen←v17800;
   {
   register ptr gf←c61132 =  (ptr) &globalframe;
   W3 next←v17844;
   /* NextControlPoint: */ 
SOURCE(42477, 757)
SOURCE(42571, 663)
   if (((* (( (ptr) cpGen←v17800)+2) ) == 0)) {
SOURCE(42594, 27)
      next←v17844.f0 = (*  (ptr) &fc520 );
      next←v17844.f1 = (*  (ptr) &fc520 );
      next←v17844.f2 = 1;
      goto lab←L100329;
      }
   else {
SOURCE(42621, 615)
      {
         word trajParts←v27496;
         word seg←v27524 = 0;
         word segIndex←v27552;
         word cpIndex←v27580;
         word hiSegment←v27608;
SOURCE(42623, 32)
         trajParts←v27496 = (* (( (ptr) cpGen←v17800)+1) );
SOURCE(42671, 30)
         segIndex←v27552 = (* (( (ptr) cpGen←v17800)+3) );
SOURCE(42703, 28)
         cpIndex←v27580 = (* (( (ptr) cpGen←v17800)+4) );
SOURCE(42733, 39)
         hiSegment←v27608 = (*  (ptr) (*  (ptr) trajParts←v27496 ) );
SOURCE(42774, 344)
         {
            register word i←v27652;
            register word noName←c58476;
            i←v27652 = segIndex←v27552;
            noName←c58476 = hiSegment←v27608;
            if ((i←v27652 >= noName←c58476)) {
               goto lab←L100330;
               };
            lab←L100334: ;
SOURCE(42813, 124)
            {
               register word j←v27696;
               register word noName←c58540;
               word var←c58508;
               word var←c58604;
               j←v27696 = cpIndex←v27580;
               {
                  word limit594;
                  var←c58508 = (* (( (ptr) trajParts←v27496)+2) );
                  noName←c58540 = (*  (ptr) (* ((( (ptr) var←c58508)+1)+(
                        limit594 = (*  (ptr) var←c58508 ),
                        BCK(i←v27652, limit594)
                        )) ) );
                  };
               if ((j←v27696 >= noName←c58540)) {
                  goto lab←L100335;
                  };
               lab←L100338: ;
SOURCE(42872, 65)
               {
                  word limit596;
                  {
                     word var←c58572;
                     var←c58572 = (* (( (ptr) trajParts←v27496)+2) );
                     {
                        word limit595;
                        var←c58604 = (* ((( (ptr) var←c58572)+1)+(
/*1*/   limit595 = (*  (ptr) var←c58572 ),
/*1*/   BCK(i←v27652, limit595)
/*1*/   )) );
                        };
                     };
                  if (XR←ExtractField(var←c58604, 32 + (word) (
                        limit596 = (*  (ptr) var←c58604 ),
                        BCK(j←v27696, limit596)
                        ), 1)) {
SOURCE(42912, 12)
                     segIndex←v27552 = i←v27652;
SOURCE(42926, 11)
                     cpIndex←v27580 = j←v27696;
SOURCE(42939, 10)
                     goto lab←L100333;
                     };
                  };
               j←v27696 = (j←v27696 + 1);
               if ((j←v27696 < noName←c58540)) {
                  goto lab←L100338;
                  };
               lab←L100335: ;
               };
SOURCE(42963, 11)
            cpIndex←v27580 = 0;
            i←v27652 = (i←v27652 + 1);
            if ((i←v27652 < noName←c58476)) {
               goto lab←L100334;
               };
            goto lab←L100330;
            lab←L100333: ;
SOURCE(42994, 51)
            {
               word pd597;
               pd597 = (* (( (ptr) (* (( (ptr) gf←c61132)+204)/* var←c43500 */  ))+30) );
               seg←v27524 = (word) ( *( (fPt) ((*  (ptr) pd597 ))))((*  (ptr) cpGen←v17800 ), segIndex←v27552, pd597);
               };
SOURCE(43047, 52)
            {
               word pd598;
               pd598 = (* (( (ptr) (*  (ptr) seg←v27524 ))+16) );
               (void) ( *( (fPt) ((*  (ptr) pd598 ))))((word) &next←v17844, seg←v27524, cpIndex←v27580, pd598);
               };
SOURCE(43101, 17)
            next←v17844.f2 = 0;
            goto lab←L100331;
            lab←L100330: ;
SOURCE(43135, 5)
            (void) XR←RaiseUnnamedError();
            lab←L100331: ;
            };
SOURCE(43151, 25)
         (* (( (ptr) cpGen←v17800)+3) ) = segIndex←v27552;
SOURCE(43178, 27)
         (* (( (ptr) cpGen←v17800)+4) ) = (cpIndex←v27580 + 1);
SOURCE(43207, 27)
         {
            word idx599;
            (* (( (ptr) cpGen←v17800)+2) ) = (
               idx599 = (word) ((* (( (ptr) cpGen←v17800)+2) ) - 1),
               SGNCK(idx599)
               );
            };
         };
      };
   /* removed tail goto */ 
   lab←L100329: ;
   (*  (W3Pt) formal←c01049 ) = next←v17844;
   return;
   }

static void NextSegNumAndCPNum←P4920(formal←c01065, cpGen←v17904)
   word formal←c01065;
   word cpGen←v17904;
   {
   word segNum←v17948;
   word cpNum←v17976;
   word done←v18004;
   /* NextSegNumAndCPNum: */ 
SOURCE(43243, 654)
SOURCE(43351, 546)
   if (((* (( (ptr) cpGen←v17904)+2) ) == 0)) {
SOURCE(43374, 24)
      segNum←v17948 = 0;
      cpNum←v17976 = 0;
      done←v18004 = 1;
      goto lab←L100339;
      }
   else {
SOURCE(43398, 501)
      {
         word seq←v27740;
         word segIndex←v27768;
         word cpIndex←v27796;
         word hiSegment←v27824;
SOURCE(43400, 26)
         seq←v27740 = (* (( (ptr) cpGen←v17904)+1) );
SOURCE(43428, 30)
         segIndex←v27768 = (* (( (ptr) cpGen←v17904)+3) );
SOURCE(43460, 28)
         cpIndex←v27796 = (* (( (ptr) cpGen←v17904)+4) );
SOURCE(43490, 33)
         hiSegment←v27824 = (*  (ptr) (*  (ptr) seq←v27740 ) );
SOURCE(43525, 256)
         {
            register word i←v27868;
            register word noName←c58636;
            i←v27868 = segIndex←v27768;
            noName←c58636 = hiSegment←v27824;
            if ((i←v27868 >= noName←c58636)) {
               goto lab←L100340;
               };
            lab←L100344: ;
SOURCE(43564, 112)
            {
               register word j←v27912;
               register word noName←c58700;
               word var←c58668;
               word var←c58764;
               j←v27912 = cpIndex←v27796;
               {
                  word limit600;
                  var←c58668 = (* (( (ptr) seq←v27740)+2) );
                  noName←c58700 = (*  (ptr) (* ((( (ptr) var←c58668)+1)+(
                        limit600 = (*  (ptr) var←c58668 ),
                        BCK(i←v27868, limit600)
                        )) ) );
                  };
               if ((j←v27912 >= noName←c58700)) {
                  goto lab←L100345;
                  };
               lab←L100348: ;
SOURCE(43617, 59)
               {
                  word limit602;
                  {
                     word var←c58732;
                     var←c58732 = (* (( (ptr) seq←v27740)+2) );
                     {
                        word limit601;
                        var←c58764 = (* ((( (ptr) var←c58732)+1)+(
/*1*/   limit601 = (*  (ptr) var←c58732 ),
/*1*/   BCK(i←v27868, limit601)
/*1*/   )) );
                        };
                     };
                  if (XR←ExtractField(var←c58764, 32 + (word) (
                        limit602 = (*  (ptr) var←c58764 ),
                        BCK(j←v27912, limit602)
                        ), 1)) {
SOURCE(43651, 12)
                     segIndex←v27768 = i←v27868;
SOURCE(43665, 11)
                     cpIndex←v27796 = j←v27912;
SOURCE(43678, 10)
                     goto lab←L100343;
                     };
                  };
               j←v27912 = (j←v27912 + 1);
               if ((j←v27912 < noName←c58700)) {
                  goto lab←L100348;
                  };
               lab←L100345: ;
               };
SOURCE(43702, 11)
            cpIndex←v27796 = 0;
            i←v27868 = (i←v27868 + 1);
            if ((i←v27868 < noName←c58636)) {
               goto lab←L100344;
               };
            goto lab←L100340;
            lab←L100343: ;
SOURCE(43733, 17)
            segNum←v17948 = segIndex←v27768;
SOURCE(43752, 15)
            cpNum←v17976 = cpIndex←v27796;
SOURCE(43769, 12)
            done←v18004 = 0;
            goto lab←L100341;
            lab←L100340: ;
SOURCE(43798, 5)
            (void) XR←RaiseUnnamedError();
            lab←L100341: ;
            };
SOURCE(43814, 25)
         (* (( (ptr) cpGen←v17904)+3) ) = segIndex←v27768;
SOURCE(43841, 27)
         (* (( (ptr) cpGen←v17904)+4) ) = (cpIndex←v27796 + 1);
SOURCE(43870, 27)
         {
            word idx603;
            (* (( (ptr) cpGen←v17904)+2) ) = (
               idx603 = (word) ((* (( (ptr) cpGen←v17904)+2) ) - 1),
               SGNCK(idx603)
               );
            };
         };
      };
   /* removed tail goto */ 
   lab←L100339: ;
   (*  (ptr) formal←c01065 ) = segNum←v17948;
   (* (( (ptr) formal←c01065)+1) ) = cpNum←v17976;
   (* (( (ptr) formal←c01065)+2) ) = done←v18004;
   return;
   }

static word JointsInSequence←P4980(seq←v18064)
   word seq←v18064;
   {
   register ptr gf←c61164 =  (ptr) &globalframe;
   word jointGen←v18108;
   /* JointsInSequence: */ 
SOURCE(43906, 299)
SOURCE(43906, 299)
   jointGen←v18108 = 0;
SOURCE(43992, 213)
   {
      word var←c58796;
      var←c58796 = XR←NewObject(20, (* (( (ptr) gf←c61164)+9) ));
      if ((seq←v18064 == 0)) {
         (* (( (ptr) var←c58796)+1) ) = 0;
         }
      else {
         (* (( (ptr) var←c58796)+1) ) = (* (( (ptr) seq←v18064)+4) );
         };
      (* (( (ptr) var←c58796)+3) ) = seq←v18064;
      jointGen←v18108 = var←c58796;
      };
SOURCE(43906, 299)
   return(jointGen←v18108);
   }

static void WalkJointPositionsInSequence←P5040(traj←v18168, seq←v18196, walkProc←v18224)
   word traj←v18168;
   word seq←v18196;
   word walkProc←v18224;
   {
   register ptr gf←c61196 =  (ptr) &globalframe;
   W2 jointPos←v27956;
   word done←v27984 = 0;
   word toGo←v28012;
   word hiJoint←v28040;
   word index←v28068 = 0;
   /* WalkJointPositionsInSequence: */ 
SOURCE(44211, 501)
SOURCE(44352, 51)
   toGo←v28012 =  ( (seq←v18196 == 0) ? 0 : (* (( (ptr) seq←v18196)+4) ) ) ;
SOURCE(44405, 29)
   hiJoint←v28040 = (*  (ptr) (* (( (ptr) seq←v18196)+1) ) );
SOURCE(44452, 260)
   {
      register word i←v28112 = 1;
      register word noName←c58828;
      noName←c58828 = toGo←v28012;
      if ((i←v28112 > noName←c58828)) {
         goto lab←L100349;
         };
      lab←L100352: ;
      {
         word var←c58860;
SOURCE(44479, 63)
         lab←L100355: ;
         {
            word tc604;
            word limit605;
            var←c58860 = (* (( (ptr) seq←v18196)+1) );
            if ( ! XR←ExtractField(var←c58860, 32 + (word) (
                  limit605 = (*  (ptr) var←c58860 ),
                  BCK(index←v28068, limit605)
                  ), 1)) {
               tc604 =  (word) (index←v28068 <= hiJoint←v28040);
               }
            else {
               tc604 =  (word) 0;
               };
            if (tc604) {
               }
            else {
               goto lab←L100353;
               };
            };
SOURCE(44525, 17)
         index←v28068 = (index←v28068 + 1);
         goto lab←L100355;
         lab←L100353: ;
SOURCE(44553, 24)
         if ((index←v28068 > hiJoint←v28040)) {
SOURCE(44577, 5)
            (void) XR←RaiseUnnamedError();
            };
SOURCE(44584, 48)
         {
            word pd606;
            pd606 = (* (( (ptr) (* (( (ptr) gf←c61196)+204)/* var←c43500 */  ))+33) );
            (void) ( *( (fPt) ((*  (ptr) pd606 ))))((word) &jointPos←v27956, traj←v18168, index←v28068, pd606);
            };
SOURCE(44634, 38)
         done←v27984 = (word) ( *( (fPt) ((*  (ptr) walkProc←v18224 ))))(traj←v18168, jointPos←v27956, index←v28068, walkProc←v18224)
         ;
SOURCE(44674, 19)
         if ((0 != done←v27984)) {
SOURCE(44687, 6)
            return;
            };
SOURCE(44695, 17)
         index←v28068 = (index←v28068 + 1);
         };
      if ((i←v28112 >= noName←c58828)) {
         goto lab←L100349;
         };
      i←v28112 = (i←v28112 + 1);
      goto lab←L100352;
      lab←L100349: ;
      };
   }

static void WalkJointsInSequence←P5100(traj←v18284, seq←v18312, walkProc←v18340)
   word traj←v18284;
   word seq←v18312;
   word walkProc←v18340;
   {
   register ptr gf←c61228 =  (ptr) &globalframe;
   W2 jointPos←v28156;
   word done←v28184 = 0;
   word toGo←v28212;
   word hiJoint←v28240;
   word index←v28268 = 0;
   /* WalkJointsInSequence: */ 
SOURCE(44727, 480)
SOURCE(44860, 51)
   toGo←v28212 =  ( (seq←v18312 == 0) ? 0 : (* (( (ptr) seq←v18312)+4) ) ) ;
SOURCE(44913, 29)
   hiJoint←v28240 = (*  (ptr) (* (( (ptr) seq←v18312)+1) ) );
SOURCE(44960, 247)
   {
      register word i←v28312 = 1;
      register word noName←c58892;
      noName←c58892 = toGo←v28212;
      if ((i←v28312 > noName←c58892)) {
         goto lab←L100356;
         };
      lab←L100359: ;
      {
         word var←c58924;
SOURCE(44987, 63)
         lab←L100362: ;
         {
            word tc607;
            word limit608;
            var←c58924 = (* (( (ptr) seq←v18312)+1) );
            if ( ! XR←ExtractField(var←c58924, 32 + (word) (
                  limit608 = (*  (ptr) var←c58924 ),
                  BCK(index←v28268, limit608)
                  ), 1)) {
               tc607 =  (word) (index←v28268 <= hiJoint←v28240);
               }
            else {
               tc607 =  (word) 0;
               };
            if (tc607) {
               }
            else {
               goto lab←L100360;
               };
            };
SOURCE(45033, 17)
         index←v28268 = (index←v28268 + 1);
         goto lab←L100362;
         lab←L100360: ;
SOURCE(45061, 24)
         if ((index←v28268 > hiJoint←v28240)) {
SOURCE(45085, 5)
            (void) XR←RaiseUnnamedError();
            };
SOURCE(45092, 48)
         {
            word pd609;
            pd609 = (* (( (ptr) (* (( (ptr) gf←c61228)+204)/* var←c43500 */  ))+33) );
            (void) ( *( (fPt) ((*  (ptr) pd609 ))))((word) &jointPos←v28156, traj←v18284, index←v28268, pd609);
            };
SOURCE(45142, 25)
         done←v28184 = (word) ( *( (fPt) ((*  (ptr) walkProc←v18340 ))))(jointPos←v28156, walkProc←v18340);
SOURCE(45169, 19)
         if ((0 != done←v28184)) {
SOURCE(45182, 6)
            return;
            };
SOURCE(45190, 17)
         index←v28268 = (index←v28268 + 1);
         };
      if ((i←v28312 >= noName←c58892)) {
         goto lab←L100356;
         };
      i←v28312 = (i←v28312 + 1);
      goto lab←L100359;
      lab←L100356: ;
      };
   }

static word JointsInTraj←P5160(traj←v18400)
   word traj←v18400;
   {
   register ptr gf←c61260 =  (ptr) &globalframe;
   word jointGen←v18444;
   /* JointsInTraj: */ 
SOURCE(45222, 229)
SOURCE(45222, 229)
   jointGen←v18444 = 0;
SOURCE(45304, 147)
   {
      word var←c58956;
      word var←c58988;
      {
         word pd610;
         pd610 = (* (( (ptr) (* (( (ptr) gf←c61260)+204)/* var←c43500 */  ))+40) );
         var←c58956 = ((word) ( *( (fPt) ((*  (ptr) pd610 ))))(traj←v18400, pd610) + 1);
         };
      var←c58988 = XR←NewObject(20, (* (( (ptr) gf←c61260)+9) ));
      (* (( (ptr) var←c58988)+1) ) = var←c58956;
      (* (( (ptr) var←c58988)+4) ) = 1;
      jointGen←v18444 = var←c58988;
      };
SOURCE(45222, 229)
   return(jointGen←v18444);
   }

static word NextJoint←P5220(jointGen←v18504)
   word jointGen←v18504;
   {
   word next←v18548;
   word seq←v28356;
   word index←v28384;
   /* NextJoint: */ 
SOURCE(45457, 440)
SOURCE(45531, 29)
   seq←v28356 = (* (( (ptr) jointGen←v18504)+3) );
SOURCE(45562, 27)
   index←v28384 = (* (( (ptr) jointGen←v18504)+2) );
SOURCE(45591, 36)
   if (((* (( (ptr) jointGen←v18504)+1) ) == 0)) {
SOURCE(45617, 10)
      return( (word) -1);
      };
SOURCE(45629, 202)
   if ((0 != (* (( (ptr) jointGen←v18504)+4) ))) {
SOURCE(45660, 12)
      next←v18548 = index←v28384;
      }
   else {
SOURCE(45681, 152)
      {
         word hiJoint←v28428;
         word var←c59020;
SOURCE(45683, 29)
         hiJoint←v28428 = (*  (ptr) (* (( (ptr) seq←v28356)+1) ) );
SOURCE(45714, 63)
         lab←L100365: ;
         {
            word tc611;
            word limit612;
            var←c59020 = (* (( (ptr) seq←v28356)+1) );
            if ( ! XR←ExtractField(var←c59020, 32 + (word) (
                  limit612 = (*  (ptr) var←c59020 ),
                  BCK(index←v28384, limit612)
                  ), 1)) {
               tc611 =  (word) (index←v28384 <= hiJoint←v28428);
               }
            else {
               tc611 =  (word) 0;
               };
            if (tc611) {
               }
            else {
               goto lab←L100363;
               };
            };
SOURCE(45760, 17)
         index←v28384 = (index←v28384 + 1);
         goto lab←L100365;
         lab←L100363: ;
SOURCE(45788, 24)
         if ((index←v28384 > hiJoint←v28428)) {
SOURCE(45812, 5)
            (void) XR←RaiseUnnamedError();
            };
SOURCE(45819, 12)
         next←v18548 = index←v28384;
         };
      };
SOURCE(45836, 26)
   (* (( (ptr) jointGen←v18504)+2) ) = (index←v28384 + 1);
SOURCE(45864, 33)
   {
      word idx613;
      (* (( (ptr) jointGen←v18504)+1) ) = (
         idx613 = (word) ((* (( (ptr) jointGen←v18504)+1) ) - 1),
         SGNCK(idx613)
         );
      };
SOURCE(45457, 440)
   return(next←v18548);
   }

/* file: GGSequenceImpl, module: GGSequenceImpl, compiled at: July 11, 1993 8:16:24 pm PDT */ 
extern void XR←install←GGSequenceImpl() {
   NoName←Q10440();
   }
extern void XR←run←GGSequenceImpl() { XR←Start(&globalframe); }