/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 13, 1993 1:25:56 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGAlignImpl, module: GGAlignImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [691176395,3997848566] GGAlignImpl";
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;} W6;
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, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef struct {W8 f; W2 r;} W10;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2;} W3;
typedef W3 *W3Pt;
typedef W5 *W5Pt;
typedef struct {W8 f; W8 r;} W16;
typedef struct {W16 f; word r;} W17;
typedef struct {W8 f; W7 r;} W15;
typedef struct {W8 f; W4 r;} W12;
typedef struct {W8 f; word r;} W9;
typedef struct {W8 f; W6 r;} W14;
typedef W4 *W4Pt;
#define SOURCE(p, l) /* source p, l */
static float fc115 = 0.0;
#define MIN(cast, x, y)  ( ( cast x) < ( cast y) ? (x) : (y) )
#define MAX(cast, x, y)  ( ( cast x) > ( cast y) ? (x) : (y) )
static float fc133 = 1.0e+3;
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc145 = 1.0e-3;
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
static float fc246 = 72.0;
static float fc308 = 90.0;
static float fc345 = 1.0;
static void NoName←Q9648();
static void GGAlignImpl←P0();
static word CreateTriggerBag←P60();
static void FlushTriggerBag←P120();
static word EmptyTriggerBag←P180();
static word EmptyTriggerSlices←P240();
static word SliceFeatureFound←P5460();
static void CopyTriggerBag←P300();
static void CopyTriggerSlices←P360();
static word CopySliceFeatures←P5520();
static void WalkSliceTriggers←P420();
static word DoForTrigger←P5580();
static word ListSliceTriggers←P480();
static word DoMakeList←P5688();
static word FindFeature←P540();
static void ReplaceFeature←P600();
static void DeleteFeature←P660();
static void AppendFeature←P720();
static word FeatureFromSlice←P780();
static word FeatureFromAnchor←P840();
static void FillStaticTriggerBag←P900();
static void FillDynamicTriggerBag←P960();
static void FillStaticSceneBag←P1020();
static void FillDynamicSceneBag←P1080();
static word CreateAlignBag←P1140();
static void CopyAlignBag←P1200();
static word EmptyAlignBag←P1260();
static void CopySlopeLineTable←P1320();
static word CopyFeatures←P5988();
static word EmptySlopeLines←P1380();
static word FeatureFound←P6048();
static void FlushAlignBag←P1440();
static void TriggersPerSlopeLine←P1500();
static word Count←P6108();
static void FlushSlopeLines←P1560();
static void FillStaticAlignBag←P1620();
static void FillDynamicAlignBag←P1680();
static void AddAlignment←P1740();
static void AddSlopeLine←P1800();
static word JointAddSlopeLine←P1860();
static void WalkSlopeLines←P1920();
static word WalkAction←P6456();
static word ListOfSlopeLines←P1980();
static word ConsSlopeLine←P6564();
static void KeysFromDistance←P2040();
static word KeyFromDistance←P2100();
static void LineThru←P2160();
static word JointAddCircle←P2220();
static word SameCircle←P2280();
static void DistanceFromOrigin←P2340();
static void SegmentAddTwoAngleLines←P2400();
static void SegmentAddDistanceLines←P2460();
static void SetStaticBags←P2520();
static void SetStaticTriggerAndAlignBags←P2580();
static void SetDynamicBags←P2640();
static void StaticToDynamicBags←P2700();
static void DynamicToStaticBags←P2760();
static void SwapOldAndNewAlignBags←P2820();
static void SwapOldAndNewTriggerBags←P2880();
static void SwapOldAndNewSceneBags←P2940();
static word UpdateBagsForAdd←P3000();
static void UpdateBagsForNewSlices←P3060();
static void AddAnchorTrigger←P3120();
static void AddAllHotSlices←P3180();
static word AddHotToTriggerBag←P7248();
static void AddHeuristics←P3240();
static word AddToTriggerBag←P7356();
static word StationaryParts←P3300();
static void StationaryTriggerParts←P3360();
static word RemoveMoving←P3420();
static word DoRemoveMoving←P7464();
static word EmptyFilterLists←P3480();
static word FilterListsFromFilter←P3540();
static void BuiltInFilters←P3600();
static word DoPointFireRule←P7620();
static word DoForSlice←P7680();
static word CreateAnchorTrigger←P3660();
static word AddSliceFeature←P3720();
static word IncrementalFilterSlice←P3780();
static word SplineInPointFeatures←P7788();
static word IncrementalNewTrigger←P3840();
static word IncrementalNewFilter←P3900();
static word DoPointFireRule←P8088();
static word DoForSlice←P8148();
static void RemoveAnchorTrigger←P3960();
static word RemoveEntireHotSlice←P4020();
static void AddFeature←P4080();
static void AddAllSlices←P4140();
static word DoAddSlice←P8400();
static void AddAnchorObject←P4200();
static word PointFireRule←P4260();
static word SegmentFireRule←P4320();
static word AnchorFireRule←P4380();
static word SomeSelectedIsHot←P4440();
static word FindHot←P8796();
static void FindOldSlice←P4500();
static word RemoveFeatureFromList←P4560();
static void CreateLineTable←P4620();
static word LineIsPresent←P4680();
static void TableStatistics←P4740();
static word Count←P8952();
static word CopyLineList←P4800();
static void SaveLineTable←P4860();
static word CopyLines←P9060();
static void RestoreLineTable←P4920();
static void FlushLineTable←P4980();
static word CardFromLine←P5040();
static void AddLineToTable←P5100();
static void DrawFeatureList←P5160();
static void DrawLineAux←P9120();
static void DrawCircleAux←P9180();
static word HasVisibleObjects←P5220();
static void DrawAlignBagRegardless←P5280();
static void MakeFiltersGarbage←P5340();
static void UnlinkBag←P9480();
static word DoUnLink←P9540();
static void Init←P5400();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\050\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\003\000"};
static struct {unsigned f; char r[48];} string3 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\247\365\203\234\300\047\265\225\046\107\270\005\004\162\145\163\164\214\216\257\300\247\365\203\234\300\047\265\225\046\107\270\261\000\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\100\310\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\270\000\000"};
static struct {unsigned f; char r[4];} string6 = {131074, "\003\001\000"};
static struct {unsigned f; char r[4];} string7 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string8 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\241\203\324\306\300\306\173\161\152\100\200\000\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\064\000\000"};
static struct {unsigned f; char r[4];} string11 = {131074, "\004\037\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\144\000\000"};
static struct {unsigned f; char r[4];} string13 = {131074, "\004\005\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[48];} string15 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\241\203\324\306\300\306\173\161\152\100\200\005\004\162\145\163\164\214\216\257\300\241\203\324\306\300\306\173\161\152\100\200\261\000\000\000"};
static struct {unsigned f; char r[44];} string16 = {2752556, "\260\006\005\146\151\162\163\164\257\300\247\031\224\326\300\123\162\224\023\100\164\005\004\162\145\163\164\214\257\300\247\031\224\326\300\123\162\224\023\100\164\261\000"};
static struct {unsigned f; char r[4];} string17 = {131074, "\003\002\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\174\000\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\100\370\000\000"};
static struct {unsigned f; char r[4];} string20 = {196611, "\004@`"};
static struct {unsigned f; char r[20];} string21 = {1179668, "\260\006\005\146\151\162\163\164\256\005\004\162\145\163\164\214\256\261\000"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\314\006\055\020\300\004\067\017\043\100\164\000\000"};
static struct {unsigned f; char r[4];} string23 = {131074, "\004\017\000"};
static struct {unsigned f; char r[48];} string24 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\247\365\203\234\300\047\265\225\046\100\310\005\004\162\145\163\164\214\216\257\300\247\365\203\234\300\047\265\225\046\100\310\261\000\000\000"};
static struct {unsigned f; char r[16];} string25 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\106\354\000\000"};
static struct {unsigned f; char r[8];} string26 = {262148, "\004\200@\034\000\000\000"};
static struct {unsigned f; char r[8];} string27 = {262152, "Traj\000\000\000"};
static struct {unsigned f; char r[20];} string28 = {1245204, "DynamicToStaticBags"};
static struct {unsigned f; char r[20];} string29 = {1245204, "StaticToDynamicBags"};
static struct {unsigned f; char r[12];} string30 = {524300, "CaretPos\000\000\000"};
static struct {unsigned f; char r[16];} string31 = {917520, "SetDynamicBags\000"};
static struct {unsigned f; char r[12];} string32 = {524300, "Gargoyle\000\000\000"};
static struct {unsigned f; char r[16];} string33 = {917520, "BuiltInFilters\000"};
static struct {unsigned f; char r[16];} string34 = {851984, "SetStaticBags\000\000"};
static struct {unsigned f; char r[28];} string35 = {1703964, "Unimplemented feature type\000"};
static struct {unsigned f; char r[8];} string36 = {262152, "Drag\000\000\000"};
static struct {unsigned f; char r[16];} string37 = {851984, "\257\300\051\062\203\313\300\356\112\123\366\100\164\000\000"};
static struct {unsigned f; char r[16];} string38 = {983055, "\006\005\024\001\030\001\034\001\040\001\100\200\004\103\377"};
static struct {unsigned f; char r[16];} string39 = {851984, "\257\300\223\215\300\016\300\070\141\304\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string40 = {851984, "\257\300\006<7[\300;CV\364@h\000\000"};
static struct {unsigned f; char r[16];} string41 = {851984, "\257\300\244\024\137\127\300\061\033\201\312\100\164\000\000"};
static struct {unsigned f; char r[16];} string42 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string43 = {851984, "\257\300\223\031\346\162\300\275\253\133\335\100\150\000\000"};
static struct {unsigned f; char r[16];} string44 = {851984, "\257\300\346\140\152\135\300\203\202\276\373\100\150\000\000"};
static struct {unsigned f; char r[16];} string45 = {851984, "\257\300IKM\275\300Y\0222&@h\000\000"};
static struct {unsigned f; char r[16];} string46 = {851984, "\257\300\301\241\007\150\300\032\111\265\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string47 = {851984, "\257\300\207\142\037\125\300\254\056\012\025\100\150\000\000"};
static struct {unsigned f; char r[16];} string48 = {851984, "\257\300\347\101\365\007\300\150\102\366\020\100\150\000\000"};
static struct {unsigned f; char r[16];} string49 = {851984, "\257\300\011\245\206\305\300\112\326\356\245\100\150\000\000"};
static struct {unsigned f; char r[16];} string50 = {851984, "\257\300\261\002\056\176\300\055\321\222\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string51 = {851984, "\257\300\235\036\354\311\300\234\133\201\260\100\150\000\000"};
static struct {unsigned f; char r[16];} string52 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"};
static struct {unsigned f; char r[16];} string53 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string54 = {851984, "\257\300\206\055\004\241\300\261\334\001\116\100\150\000\000"};
static struct {unsigned f; char r[16];} string55 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\150\000\000"};
static struct {unsigned f; char r[16];} string56 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string57 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\100\150\000\000"};
static struct {unsigned f; char r[16];} string58 = {851984, "\257\300\170\064\225\306\300\207\372\245\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string59 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string60 = {851984, "\257\300\103\306\166\071\300\047\126\012\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string61 = {851984, "\257\300\240\236\274\315\300\111\163\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string62 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string63 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string64 = {851984, "\257\300\242\221\264\046\300\105\142\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string65 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static struct {unsigned f; char r[16];} string66 = {851984, "\257\300\136\002\175\264\300\016\031\370\241\100\150\000\000"};
static struct {unsigned f; char r[16];} string67 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\100\150\000\000"};
static struct {unsigned f; char r[28];} string68 = {1572892, "\211\014\013\104\162\141\147\104\141\164\141\117\142\152\300\223\145\303\043\300\372\023\025\003\000\000\000"};
static struct {unsigned f; char r[16];} string69 = {851984, "\257\300\333\030\273\126\300\173\036\033\131\100\200\000\000"};
static struct {unsigned f; char r[20];} string70 = {1114129, "\006\006\050\001\054\001\060\001\064\001\100\100\001\100\110\004\030\000\000"};
static struct {unsigned f; char r[28];} string71 = {1769500, "\211\017\016\122\145\146\162\145\163\150\104\141\164\141\117\142\152\300\223\145\303\043\300\372\023\025\003"};
static struct {unsigned f; char r[16];} string72 = {851984, "\257\300\026\355\016\312\300\171\207\041\370\100\200\000\000"};
static struct {unsigned f; char r[44];} string73 = {2752554, "\006\020\000\001\014\001\020\001\024\001\030\001\034\001\070\001\074\001\100\100\001\100\104\001\100\110\001\100\114\001\100\120\001\100\124\001\100\130\001\100\144\001\000"};
static struct {
   word f0[45]; 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; word f203; 
   word f204; word f205; word f206; word f207; 
   word f208; word f209; word f210; word f211; 
   word f212; word f213; word f214; word f215; 
   word f216; word f217; word f218; word f219; 
   word f220; word f221; word f222; word f223; 
   word f224; word f225; word f226[30]; 
   } globalframe = {
   {0}, (word) Init←P5400, 0, (word) MakeFiltersGarbage←P5340, 
   0, (word) DrawAlignBagRegardless←P5280, 0, (word) HasVisibleObjects←P5220, 
   0, (word) DrawFeatureList←P5160, 0, (word) AddLineToTable←P5100, 
   0, (word) CardFromLine←P5040, 0, (word) FlushLineTable←P4980, 
   0, (word) RestoreLineTable←P4920, 0, (word) SaveLineTable←P4860, 
   0, (word) CopyLineList←P4800, 0, (word) TableStatistics←P4740, 
   0, (word) LineIsPresent←P4680, 0, (word) CreateLineTable←P4620, 
   0, (word) RemoveFeatureFromList←P4560, 0, (word) FindOldSlice←P4500, 
   0, (word) SomeSelectedIsHot←P4440, 0, (word) AnchorFireRule←P4380, 
   0, (word) SegmentFireRule←P4320, 0, (word) PointFireRule←P4260, 
   0, (word) AddAnchorObject←P4200, 0, (word) AddAllSlices←P4140, 
   0, (word) AddFeature←P4080, 0, (word) RemoveEntireHotSlice←P4020, 
   0, (word) RemoveAnchorTrigger←P3960, 0, (word) IncrementalNewFilter←P3900, 
   0, (word) IncrementalNewTrigger←P3840, 0, (word) IncrementalFilterSlice←P3780, 
   0, (word) AddSliceFeature←P3720, 0, (word) CreateAnchorTrigger←P3660, 
   0, (word) BuiltInFilters←P3600, 0, (word) FilterListsFromFilter←P3540, 
   0, (word) EmptyFilterLists←P3480, 0, (word) RemoveMoving←P3420, 
   0, (word) StationaryTriggerParts←P3360, 0, (word) StationaryParts←P3300, 
   0, (word) AddHeuristics←P3240, 0, (word) AddAllHotSlices←P3180, 
   0, (word) AddAnchorTrigger←P3120, 0, (word) UpdateBagsForNewSlices←P3060, 
   0, (word) UpdateBagsForAdd←P3000, 0, (word) SwapOldAndNewSceneBags←P2940, 
   0, (word) SwapOldAndNewTriggerBags←P2880, 0, (word) SwapOldAndNewAlignBags←P2820, 
   0, (word) DynamicToStaticBags←P2760, 0, (word) StaticToDynamicBags←P2700, 
   0, (word) SetDynamicBags←P2640, 0, (word) SetStaticTriggerAndAlignBags←P2580, 
   0, (word) SetStaticBags←P2520, 0, (word) SegmentAddDistanceLines←P2460, 
   0, (word) SegmentAddTwoAngleLines←P2400, 0, (word) DistanceFromOrigin←P2340, 
   0, (word) SameCircle←P2280, 0, (word) JointAddCircle←P2220, 
   0, (word) LineThru←P2160, 0, (word) KeyFromDistance←P2100, 
   0, (word) KeysFromDistance←P2040, 0, (word) ListOfSlopeLines←P1980, 
   0, (word) WalkSlopeLines←P1920, 0, (word) JointAddSlopeLine←P1860, 
   0, (word) AddSlopeLine←P1800, 0, (word) AddAlignment←P1740, 
   0, (word) FillDynamicAlignBag←P1680, 0, (word) FillStaticAlignBag←P1620, 
   0, (word) FlushSlopeLines←P1560, 0, (word) TriggersPerSlopeLine←P1500, 
   0, (word) FlushAlignBag←P1440, 0, (word) EmptySlopeLines←P1380, 
   0, (word) CopySlopeLineTable←P1320, 0, (word) EmptyAlignBag←P1260, 
   0, (word) CopyAlignBag←P1200, 0, (word) CreateAlignBag←P1140, 
   0, (word) FillDynamicSceneBag←P1080, 0, (word) FillStaticSceneBag←P1020, 
   0, (word) FillDynamicTriggerBag←P960, 0, (word) FillStaticTriggerBag←P900, 
   0, (word) FeatureFromAnchor←P840, 0, (word) FeatureFromSlice←P780, 
   0, (word) AppendFeature←P720, 0, (word) DeleteFeature←P660, 
   0, (word) ReplaceFeature←P600, 0, (word) FindFeature←P540, 
   0, (word) ListSliceTriggers←P480, 0, (word) WalkSliceTriggers←P420, 
   0, (word) CopyTriggerSlices←P360, 0, (word) CopyTriggerBag←P300, 
   0, (word) EmptyTriggerSlices←P240, 0, (word) EmptyTriggerBag←P180, 
   0, (word) FlushTriggerBag←P120, 0, (word) CreateTriggerBag←P60, 
   0, (word) GGAlignImpl←P0, {0}
   };

static void NoName←Q9648()
   {
   register ptr gf←c0901 =  (ptr) &globalframe;
   word var←c77988;
   (* (( (ptr) gf←c0901)+13) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0901)+14) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string2);
   (* (( (ptr) gf←c0901)+15) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string2);
   (* (( (ptr) gf←c0901)+16) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (* (( (ptr) gf←c0901)+17) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
   (* (( (ptr) gf←c0901)+18) ) = (word) XR←GetTypeIndexS((word) (&string9));
   (* (( (ptr) gf←c0901)+20) ) = (word) XR←GetTypeIndex((word) &string10, 0, (word) &string11);
   (* (( (ptr) gf←c0901)+21) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string13);
   (* (( (ptr) gf←c0901)+23) ) = (word) XR←GetTypeIndex((word) &string14, 0, (word) &string8);
   (* (( (ptr) gf←c0901)+24) ) = (word) XR←GetTypeIndex((word) &string15, 0, (word) &string2);
   (* (( (ptr) gf←c0901)+25) ) = (word) XR←GetTypeIndex((word) &string16, 0, (word) &string17);
   (* (( (ptr) gf←c0901)+26) ) = (word) XR←GetTypeIndex((word) &string18, 0, (word) &string2);
   (* (( (ptr) gf←c0901)+27) ) = (word) XR←GetTypeIndex((word) &string19, 0, (word) &string20);
   (* (( (ptr) gf←c0901)+28) ) = (word) XR←GetTypeIndex((word) &string21, 0, (word) &string6);
   (* (( (ptr) gf←c0901)+29) ) = (word) XR←GetTypeIndex((word) &string22, 0, (word) &string23);
   (* (( (ptr) gf←c0901)+30) ) = (word) XR←GetTypeIndex((word) &string24, 0, (word) &string2);
   (* (( (ptr) gf←c0901)+31) ) = (word) XR←GetTypeIndex((word) &string25, 0, (word) &string26);
   (*  (ptr) (( (bPt) gf←c0901)+128) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c0901)+132) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string28);
   (*  (ptr) (( (bPt) gf←c0901)+136) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c0901)+140) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string30);
   (*  (ptr) (( (bPt) gf←c0901)+144) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string31);
   (*  (ptr) (( (bPt) gf←c0901)+148) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c0901)+152) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string33);
   (*  (ptr) (( (bPt) gf←c0901)+156) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string34);
   (*  (ptr) (( (bPt) gf←c0901)+160) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+23) ), (word) &string35);
   (*  (ptr) (( (bPt) gf←c0901)+164) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0901)+17) ), (word) &string36);
   (void) XR←DeclareGlobalFrame((word) "GGAlignImpl", &globalframe, (word) XR←GetTypeIndex((word) &string37, 0, (word) &string38)
      , (word) (( (bPt) gf←c0901)+900)/* var←c71012 */ );
   var←c77988 = (word) XR←ImportInterface((word) "CardTab", (word) XR←GetTypeIndexS((word) (&string39)), 12);
   (* (( (ptr) gf←c0901)+234)/* var←c72196 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67896579);
   (void) XR←ImportProcS(var←c77988, 134742786);
   (void) XR←ImportProcS(var←c77988, 67896835);
   (void) XR←ImportProcS(var←c77988, 67635458);
   (void) XR←ImportProcS(var←c77988, 264193);
   (void) XR←ImportProcS(var←c77988, 67371265);
   var←c77988 = (word) XR←ImportInterface((word) "CodeTimer", (word) XR←GetTypeIndexS((word) (&string40)), 21);
   (* (( (ptr) gf←c0901)+241)/* var←c73860 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 526850);
   (void) XR←ImportProcS(var←c77988, 526338);
   var←c77988 = (word) XR←ImportInterface((word) "Draw2d", (word) XR←GetTypeIndexS((word) (&string41)), 15);
   (* (( (ptr) gf←c0901)+251)/* var←c77668 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 264193);
   (void) XR←ImportProcS(var←c77988, 67634946);
   var←c77988 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string42)), 25);
   (* (( (ptr) gf←c0901)+227)/* var←c71044 */  ) = var←c77988;
   var←c77988 = (word) XR←ImportInterface((word) "GGCaret", (word) XR←GetTypeIndexS((word) (&string43)), 13);
   (* (( (ptr) gf←c0901)+248)/* var←c75556 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 134482945);
   (void) XR←ImportProcS(var←c77988, 134482689);
   (void) XR←ImportProcS(var←c77988, 67371777);
   var←c77988 = (word) XR←ImportInterface((word) "GGCircleCache", (word) XR←GetTypeIndexS((word) (&string44)), 6);
   (* (( (ptr) gf←c0901)+253)/* var←c77828 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 524546);
   (void) XR←ImportProcS(var←c77988, 1049859);
   (void) XR←ImportProcS(var←c77988, 67633666);
   var←c77988 = (word) XR←ImportInterface((word) "GGCircles", (word) XR←GetTypeIndexS((word) (&string45)), 29);
   (* (( (ptr) gf←c0901)+237)/* var←c73284 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67896066);
   var←c77988 = (word) XR←ImportInterface((word) "GGParent", (word) XR←GetTypeIndexS((word) (&string46)), 83);
   (* (( (ptr) gf←c0901)+244)/* var←c74180 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67391489);
   (void) XR←ImportProcS(var←c77988, 68176388);
   var←c77988 = (word) XR←ImportInterface((word) "GGRefresh", (word) XR←GetTypeIndexS((word) (&string47)), 30);
   (* (( (ptr) gf←c0901)+242)/* var←c74020 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 268289);
   (void) XR←ImportProcS(var←c77988, 529410);
   (void) XR←ImportProcS(var←c77988, 268033);
   (void) XR←ImportProcS(var←c77988, 529666);
   var←c77988 = (word) XR←ImportInterface((word) "GGScene", (word) XR←GetTypeIndexS((word) (&string48)), 50);
   (* (( (ptr) gf←c0901)+247)/* var←c74724 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 68164356);
   (void) XR←ImportProcS(var←c77988, 68426757);
   var←c77988 = (word) XR←ImportInterface((word) "GGSelect", (word) XR←GetTypeIndexS((word) (&string49)), 23);
   (* (( (ptr) gf←c0901)+243)/* var←c74084 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67898883);
   (void) XR←ImportProcS(var←c77988, 67637250);
   var←c77988 = (word) XR←ImportInterface((word) "GGSequence", (word) XR←GetTypeIndexS((word) (&string50)), 58);
   (* (( (ptr) gf←c0901)+245)/* var←c74276 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67634178);
   (void) XR←ImportProcS(var←c77988, 67634434);
   (void) XR←ImportProcS(var←c77988, 67637250);
   var←c77988 = (word) XR←ImportInterface((word) "GGShapes", (word) XR←GetTypeIndexS((word) (&string51)), 20);
   (* (( (ptr) gf←c0901)+252)/* var←c77764 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 2098949);
   (void) XR←ImportProcS(var←c77988, 526594);
   var←c77988 = (word) XR←ImportInterface((word) "GGSlice", (word) XR←GetTypeIndexS((word) (&string52)), 128);
   (* (( (ptr) gf←c0901)+233)/* var←c71972 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 279297);
   (void) XR←ImportProcS(var←c77988, 67634178);
   var←c77988 = (word) XR←ImportInterface((word) "GGSliceOps", (word) XR←GetTypeIndexS((word) (&string53)), 73);
   (* (( (ptr) gf←c0901)+232)/* var←c71940 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 336078338);
   (void) XR←ImportProcS(var←c77988, 67379713);
   (void) XR←ImportProcS(var←c77988, 532738);
   (void) XR←ImportProcS(var←c77988, 270539780);
   (void) XR←ImportProcS(var←c77988, 67639810);
   (void) XR←ImportProcS(var←c77988, 67376897);
   (void) XR←ImportProcS(var←c77988, 67377153);
   (void) XR←ImportProcS(var←c77988, 67640066);
   (void) XR←ImportProcS(var←c77988, 67901699);
   var←c77988 = (word) XR←ImportInterface((word) "GGState", (word) XR←GetTypeIndexS((word) (&string54)), 119);
   (* (( (ptr) gf←c0901)+240)/* var←c73828 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67382017);
   (void) XR←ImportProcS(var←c77988, 134481921);
   (void) XR←ImportProcS(var←c77988, 268698369);
   (void) XR←ImportProcS(var←c77988, 67375617);
   (void) XR←ImportProcS(var←c77988, 67384833);
   (void) XR←ImportProcS(var←c77988, 67394561);
   var←c77988 = (word) XR←ImportInterface((word) "GGTraj", (word) XR←GetTypeIndexS((word) (&string55)), 55);
   (* (( (ptr) gf←c0901)+246)/* var←c74468 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67379969);
   (void) XR←ImportProcS(var←c77988, 67379457);
   var←c77988 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string56)), 42);
   (* (( (ptr) gf←c0901)+230)/* var←c71428 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67634434);
   (void) XR←ImportProcS(var←c77988, 67372033);
   (void) XR←ImportProcS(var←c77988, 135004931);
   var←c77988 = (word) XR←ImportInterface((word) "Imager", (word) XR←GetTypeIndexS((word) (&string57)), 84);
   (* (( (ptr) gf←c0901)+250)/* var←c77636 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 536578);
   (void) XR←ImportProcS(var←c77988, 540674);
   var←c77988 = (word) XR←ImportInterface((word) "ImagerBackdoor", (word) XR←GetTypeIndexS((word) (&string58)), 42);
   (* (( (ptr) gf←c0901)+228)/* var←c71076 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67641602);
   var←c77988 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string59)), 55);
   (* (( (ptr) gf←c0901)+249)/* var←c77604 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 269756930);
   var←c77988 = (word) XR←ImportInterface((word) "Lines2d", (word) XR←GetTypeIndexS((word) (&string60)), 50);
   (* (( (ptr) gf←c0901)+235)/* var←c72836 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67635714);
   (void) XR←ImportProcS(var←c77988, 67635458);
   (void) XR←ImportProcS(var←c77988, 68158466);
   (void) XR←ImportProcS(var←c77988, 67897090);
   (void) XR←ImportProcS(var←c77988, 67904258);
   (void) XR←ImportProcS(var←c77988, 67896835);
   var←c77988 = (word) XR←ImportInterface((word) "Process", (word) XR←GetTypeIndexS((word) (&string61)), 22);
   (* (( (ptr) gf←c0901)+231)/* var←c71716 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 3584);
   var←c77988 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string62)), 11);
   (* (( (ptr) gf←c0901)+236)/* var←c73156 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67372033);
   var←c77988 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string63)), 36);
   (* (( (ptr) gf←c0901)+238)/* var←c73444 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67372801);
   (void) XR←ImportProcS(var←c77988, 67373313);
   (void) XR←ImportProcS(var←c77988, 67904259);
   var←c77988 = (word) XR←ImportInterface((word) "RefTab", (word) XR←GetTypeIndexS((word) (&string64)), 16);
   (* (( (ptr) gf←c0901)+229)/* var←c71140 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67634946);
   (void) XR←ImportProcS(var←c77988, 67896579);
   (void) XR←ImportProcS(var←c77988, 134742786);
   (void) XR←ImportProcS(var←c77988, 67896835);
   (void) XR←ImportProcS(var←c77988, 67635458);
   (void) XR←ImportProcS(var←c77988, 264193);
   (void) XR←ImportProcS(var←c77988, 67895555);
   var←c77988 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string65)), 21);
   (* (( (ptr) gf←c0901)+239)/* var←c73540 */  ) = var←c77988;
   (void) XR←ImportProcS(var←c77988, 67633665);
   var←c77988 = (word) XR←ExportInterface((word) "GGAlign", (word) XR←GetTypeIndexS((word) (&string66)), 46);
   (* (( (ptr) gf←c0901)+254)/* var←c78020 */  ) = var←c77988;
   (void) XR←ExportVar(var←c77988, 0, (word) (( (bPt) gf←c0901)+20)/* emptyTriggerBag←v5800 */ );
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+892)/* var←c70980 */ , 67109120, (word) "CreateTriggerBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+884)/* var←c70948 */ , 262657, (word) "FlushTriggerBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+876)/* var←c70916 */ , 67371777, (word) "EmptyTriggerBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+860)/* var←c70852 */ , 525314, (word) "CopyTriggerBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+844)/* var←c70788 */ , 525570, (word) "WalkSliceTriggers");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+796)/* var←c70596 */ , 67634690, (word) "FeatureFromSlice");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+788)/* var←c70564 */ , 67372801, (word) "FeatureFromAnchor");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+780)/* var←c70532 */ , 1050628, (word) "FillStaticTriggerBag")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+772)/* var←c70500 */ , 2623750, (word) "FillDynamicTriggerBag")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+764)/* var←c70468 */ , 526850, (word) "FillStaticSceneBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+756)/* var←c70436 */ , 2099972, (word) "FillDynamicSceneBag")
   ;
   (void) XR←ExportVar(var←c77988, 12, (word) (( (bPt) gf←c0901)+24)/* emptyAlignBag←v6332 */ );
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+748)/* var←c70404 */ , 67112192, (word) "CreateAlignBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+708)/* var←c70244 */ , 265729, (word) "FlushAlignBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+732)/* var←c70340 */ , 67374849, (word) "EmptyAlignBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+652)/* var←c70020 */ , 68161539, (word) "JointAddSlopeLine");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+644)/* var←c69988 */ , 528642, (word) "WalkSlopeLines");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+604)/* var←c69828 */ , 68162051, (word) "JointAddCircle");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+580)/* var←c69732 */ , 136057605, (word) "SegmentAddTwoAngleLines")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+572)/* var←c69700 */ , 136057861, (word) "SegmentAddDistanceLines")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+684)/* var←c70148 */ , 1316101, (word) "FillStaticAlignBag");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+676)/* var←c70116 */ , 1578502, (word) "FillDynamicAlignBag")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+564)/* var←c69668 */ , 268033, (word) "SetStaticBags");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+556)/* var←c69636 */ , 268289, (word) "SetStaticTriggerAndAlignBags")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+548)/* var←c69604 */ , 530690, (word) "SetDynamicBags");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+540)/* var←c69572 */ , 530946, (word) "StaticToDynamicBags");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+532)/* var←c69540 */ , 531202, (word) "DynamicToStaticBags");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+500)/* var←c69412 */ , 68164612, (word) "UpdateBagsForAdd");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+492)/* var←c69380 */ , 531714, (word) "UpdateBagsForNewSlices")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+420)/* var←c69092 */ , 1056516, (word) "BuiltInFilters");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+412)/* var←c69060 */ , 67641346, (word) "CreateAnchorTrigger")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+404)/* var←c69028 */ , 67641602, (word) "AddSliceFeature");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+388)/* var←c68964 */ , 68166404, (word) "IncrementalNewTrigger")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+380)/* var←c68932 */ , 68428805, (word) "IncrementalNewFilter")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+372)/* var←c68900 */ , 271617, (word) "RemoveAnchorTrigger");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+364)/* var←c68868 */ , 67642882, (word) "RemoveEntireHotSlice")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+284)/* var←c68548 */ , 272385, (word) "CreateLineTable");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+236)/* var←c68356 */ , 272641, (word) "FlushLineTable");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+204)/* var←c68228 */ , 67381761, (word) "HasVisibleObjects");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+212)/* var←c68260 */ , 797443, (word) "DrawFeatureList");
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+196)/* var←c68196 */ , 797699, (word) "DrawAlignBagRegardless")
   ;
   (void) XR←ExportProcS(var←c77988, (word) (( (bPt) gf←c0901)+188)/* var←c68164 */ , 273665, (word) "MakeFiltersGarbage");
   var←c77988 = (word) XR←ExportInterface((word) "GGInterfaceTypes", (word) XR←GetTypeIndexS((word) (&string67)), 6);
   (* (( (ptr) gf←c0901)+255)/* var←c78052 */  ) = var←c77988;
   (void) XR←ExportType((word) "DragDataObj", (word) XR←GetTypeIndexS((word) (&string68)), (word) XR←GetTypeIndex((word) &string69, 0, (word) &string70)
      );
   (void) XR←ExportType((word) "RefreshDataObj", (word) XR←GetTypeIndexS((word) (&string71)), (word) XR←GetTypeIndex((word) &string72, 0, (word) &string73)
      );
   }

static void GGAlignImpl←P0(formal←c0132, formal←c0131)
   word formal←c0132;
   word formal←c0131;
   {
   register ptr gf←c78084 =  (ptr) &globalframe;
   /* GGAlignImpl: */ 
SOURCE(438, 47719)
SOURCE(3347, 17)
   (* (( (ptr) gf←c78084)+4)/* Problem←v5688 */  ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c78084)+227)/* var←c71044 */  ))+28)
    ) );
SOURCE(42115, 66)
   {
      word pd74;
      pd74 = (* (( (ptr) (* (( (ptr) gf←c78084)+228)/* var←c71076 */  ))+37) );
      (* (( (ptr) gf←c78084)+7)/* alignmentColor←v8040 */  ) = (word) ( *( (fPt) ((*  (ptr) pd74 ))))(51765, 0, pd74);
      };
SOURCE(42183, 64)
   {
      word pd75;
      pd75 = (* (( (ptr) (* (( (ptr) gf←c78084)+228)/* var←c71076 */  ))+37) );
      (* (( (ptr) gf←c78084)+8)/* checkerColor←v8068 */  ) = (word) ( *( (fPt) ((*  (ptr) pd75 ))))(42405, 0, pd75);
      };
SOURCE(42250, 21)
   (* (( (ptr) gf←c78084)+9)/* useCache←v8096 */  ) = 1;
SOURCE(48151, 6)
   (void) Init←P5400();
   }

static word CreateTriggerBag←P60()
   {
   register ptr gf←c78116 =  (ptr) &globalframe;
   word triggerBag←v8712;
   /* CreateTriggerBag: */ 
SOURCE(3550, 151)
SOURCE(3550, 151)
   triggerBag←v8712 = 0;
SOURCE(3620, 81)
   {
      word var←c71108;
      word var←c71172;
      {
         word pd76;
         pd76 = (* (( (ptr) (* (( (ptr) gf←c78116)+229)/* var←c71140 */  ))+5) );
         var←c71108 = (word) ( *( (fPt) ((*  (ptr) pd76 ))))(211, 0, 0, pd76);
         };
      var←c71172 = XR←NewObject(8, (* (( (ptr) gf←c78116)+13) ));
      (*  (ptr) var←c71172 ) = var←c71108;
      triggerBag←v8712 = var←c71172;
      };
SOURCE(3550, 151)
   return(triggerBag←v8712);
   }

static void FlushTriggerBag←P120(triggerBag←v8772)
   word triggerBag←v8772;
   {
   register ptr gf←c78148 =  (ptr) &globalframe;
   /* FlushTriggerBag: */ 
SOURCE(3707, 114)
SOURCE(3765, 31)
   {
      word pd77;
      pd77 = (* (( (ptr) (* (( (ptr) gf←c78148)+229)/* var←c71140 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd77 ))))((*  (ptr) (triggerBag←v8772) ), pd77);
      };
SOURCE(3798, 23)
   (* (( (ptr) triggerBag←v8772)+1) ) = 0;
   }

static word EmptyTriggerBag←P180(triggerBag←v8832)
   word triggerBag←v8832;
   {
   word var←c8876;
   /* EmptyTriggerBag: */ 
SOURCE(3827, 141)
SOURCE(3900, 68)
   {
      word tc78;
      if ((0 != (word) EmptyTriggerSlices←P240(triggerBag←v8832))) {
         tc78 =  (word)  (unsigned) ((* (( (ptr) triggerBag←v8832)+1) ) == 0);
         }
      else {
         tc78 =  (word)  (unsigned) 0;
         };
      return(tc78);
      };
   }

static word EmptyTriggerSlices←P240(triggerBag←v8936)
   word triggerBag←v8936;
   {
   W6 var←c78180;
   register ptr gf←c78212 =  (ptr) &globalframe;
   word empty←v8980;
   /* declaration of var←c71236 skipped */ 
   /* EmptyTriggerSlices: */ 
SOURCE(3974, 232)
   {
      word tmpAddr79;
      tmpAddr79 = (word) (( (ptr) &var←c78180)+4)/* var←c71236 */ ;
      (*  (ptr) tmpAddr79 ) = ( ((word)  (fPt) SliceFeatureFound←P5460) );
      (* (( (ptr) tmpAddr79) + 1) ) = 1;
      };
SOURCE(3974, 232)
   empty←v8980 = 0;
SOURCE(4144, 62)
   {
      word pd80;
      pd80 = (* (( (ptr) (* (( (ptr) gf←c78212)+229)/* var←c71140 */  ))+13) );
      empty←v8980 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd80 ))))((*  (ptr) triggerBag←v8936 ), (word) (( (bPt) &var←c78180)+16)
         /* var←c71236 */ , pd80));
      };
SOURCE(3974, 232)
   return(empty←v8980);
   }

static word SliceFeatureFound←P5460(key←v46056, val←v46084, formal←c78244)
   word key←v46056;
   word val←v46084;
   word formal←c78244;
   {
   word quit←v46128;
   formal←c78244 = (formal←c78244 - 16);
   /* SliceFeatureFound: */ 
SOURCE(4058, 81)
SOURCE(4058, 81)
   quit←v46128 = 0;
SOURCE(4103, 18)
   if ((val←v46084 == 0)) {
SOURCE(4121, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(4128, 11)
   quit←v46128 = 1;
SOURCE(4058, 81)
   return(quit←v46128);
   }

static void CopyTriggerBag←P300(to←v9040, from←v9068)
   word to←v9040;
   word from←v9068;
   {
   /* CopyTriggerBag: */ 
SOURCE(4212, 142)
SOURCE(4267, 19)
   (void) FlushTriggerBag←P120(to←v9040);
SOURCE(4288, 41)
   (void) CopyTriggerSlices←P360((*  (ptr) to←v9040 ), (*  (ptr) from←v9068 ));
SOURCE(4331, 23)
   (* (( (ptr) to←v9040)+1) ) = (* (( (ptr) from←v9068)+1) );
   }

static void CopyTriggerSlices←P360(formal←c01059, fromTable←v9156)
   word formal←c01059;
   word fromTable←v9156;
   {
   W7 var←c78276;
   /* declaration of toTable←v9128 skipped */ 
   register ptr gf←c78308 =  (ptr) &globalframe;
   /* declaration of var←c71268 skipped */ 
   var←c78276.f4/* toTable←v9128 */  = formal←c01059;
   /* CopyTriggerSlices: */ 
SOURCE(4360, 258)
   {
      word tmpAddr81;
      tmpAddr81 = (word) (( (ptr) &var←c78276)+5)/* var←c71268 */ ;
      (*  (ptr) tmpAddr81 ) = ( ((word)  (fPt) CopySliceFeatures←P5520) );
      (* (( (ptr) tmpAddr81) + 1) ) = 1;
      };
SOURCE(4548, 21)
   {
      word pd82;
      pd82 = (* (( (ptr) (* (( (ptr) gf←c78308)+229)/* var←c71140 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd82 ))))(var←c78276.f4/* toTable←v9128 */ , pd82);
      };
SOURCE(4571, 47)
   {
      word var←c71300;
      word pd83;
      pd83 = (* (( (ptr) (* (( (ptr) gf←c78308)+229)/* var←c71140 */  ))+13) );
      var←c71300 = (word) ( *( (fPt) ((*  (ptr) pd83 ))))(fromTable←v9156, (word) (( (bPt) &var←c78276)+20)/* var←c71268 */ , pd83)
      ;
      };
   }

static word CopySliceFeatures←P5520(key←v46352, val←v46380, formal←c78372)
   word key←v46352;
   word val←v46380;
   word formal←c78372;
   {
   register ptr gf←c78340 =  (ptr) &globalframe;
   word quit←v46424;
   word inserted←v20952;
   formal←c78372 = (formal←c78372 - 20);
   /* CopySliceFeatures: */ 
SOURCE(4421, 117)
SOURCE(4421, 117)
   quit←v46424 = 0;
SOURCE(4466, 49)
   {
      word pd84;
      pd84 = (* (( (ptr) (* (( (ptr) gf←c78340)+229)/* var←c71140 */  ))+10) );
      inserted←v20952 = (word) ( *( (fPt) ((*  (ptr) pd84 ))))((* (( (ptr) formal←c78372)+4) ), key←v46352, val←v46380, pd84);
      };
SOURCE(4517, 21)
   if ((0 == inserted←v20952)) {
SOURCE(4538, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(4421, 117)
   return(quit←v46424);
   }

static void WalkSliceTriggers←P420(triggerBag←v9216, formal←c01060)
   word triggerBag←v9216;
   word formal←c01060;
   {
   W7 var←c78404;
   /* declaration of walkProc←v9244 skipped */ 
   register ptr gf←c78436 =  (ptr) &globalframe;
   /* declaration of var←c71332 skipped */ 
   var←c78404.f4/* walkProc←v9244 */  = formal←c01060;
   /* WalkSliceTriggers: */ 
SOURCE(4624, 312)
   {
      word tmpAddr85;
      tmpAddr85 = (word) (( (ptr) &var←c78404)+5)/* var←c71332 */ ;
      (*  (ptr) tmpAddr85 ) = ( ((word)  (fPt) DoForTrigger←P5580) );
      (* (( (ptr) tmpAddr85) + 1) ) = 1;
      };
SOURCE(4886, 50)
   {
      word var←c71364;
      word pd86;
      pd86 = (* (( (ptr) (* (( (ptr) gf←c78436)+229)/* var←c71140 */  ))+13) );
      var←c71364 = (word) ( *( (fPt) ((*  (ptr) pd86 ))))((*  (ptr) triggerBag←v9216 ), (word) (( (bPt) &var←c78404)+20)/* var←c71332 */ , pd86)
      ;
      };
   }

static word DoForTrigger←P5580(key←v46676, val←v46704, formal←c78500)
   word key←v46676;
   word val←v46704;
   word formal←c78500;
   {
   register ptr gf←c78468 =  (ptr) &globalframe;
   word quit←v46748;
   formal←c78500 = (formal←c78500 - 20);
   /* DoForTrigger: */ 
SOURCE(4711, 157)
SOURCE(4711, 157)
   quit←v46748 = 0;
SOURCE(4751, 117)
   {
      register word list←v21040;
      list←v21040 = XR←Narrow(val←v46704, (* (( (ptr) gf←c78468)+14) ));
      lab←L100003: ;
      if ((list←v21040 != 0)) {
         }
      else {
         goto lab←L100000;
         };
SOURCE(4826, 27)
      {
         word pd87;
         pd87 = (* (( (ptr) formal←c78500)+4) );
         quit←v46748 = (word) ( *( (fPt) ((*  (ptr) pd87 ))))((*  (ptr) (list←v21040) ), pd87);
         };
SOURCE(4855, 13)
      if ((0 != quit←v46748)) {
SOURCE(4868, 4)
         goto lab←L100001;
         };
      list←v21040 = (* (( (ptr) list←v21040)+1) );
      goto lab←L100003;
      lab←L100000: ;
      lab←L100001: ;
      };
SOURCE(4711, 157)
   return(quit←v46748);
   }

static word ListSliceTriggers←P480(triggerBag←v9304)
   word triggerBag←v9304;
   {
   W8 var←c78532;
   /* declaration of features←v9348 skipped */ 
   /* declaration of var←c71396 skipped */ 
   /* declaration of ptr←v21196 skipped */ 
   /* ListSliceTriggers: */ 
SOURCE(4942, 304)
   {
      word tmpAddr88;
      tmpAddr88 = (word) (( (ptr) &var←c78532)+5)/* var←c71396 */ ;
      (*  (ptr) tmpAddr88 ) = ( ((word)  (fPt) DoMakeList←P5688) );
      (* (( (ptr) tmpAddr88) + 1) ) = 1;
      };
SOURCE(4942, 304)
   var←c78532.f4/* features←v9348 */  = 0;
SOURCE(5179, 5)
   var←c78532.f7/* ptr←v21196 */  = 0;
SOURCE(5205, 41)
   (void) WalkSliceTriggers←P420(triggerBag←v9304, (word) (( (bPt) &var←c78532)+20)/* var←c71396 */ );
SOURCE(4942, 304)
   return(var←c78532.f4/* features←v9348 */ );
   }

static word DoMakeList←P5688(feature←v21272, formal←c78596)
   word feature←v21272;
   word formal←c78596;
   {
   register ptr gf←c78564 =  (ptr) &globalframe;
   word done←v21316;
   formal←c78596 = (formal←c78596 - 20);
   /* DoMakeList: */ 
SOURCE(5035, 139)
SOURCE(5035, 139)
   done←v21316 = 0;
SOURCE(5108, 66)
   {
      W2 var←c71460;
      {
         word pd89;
         pd89 = (* (( (ptr) (* (( (ptr) gf←c78564)+230)/* var←c71428 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd89 ))))((word) &var←c71460, feature←v21272, (* (( (ptr) formal←c78596)+4) ), (* (( (ptr) formal←c78596)+7)
             ), pd89);
         };
      (* (( (ptr) formal←c78596)+7) ) = var←c71460.f1;
      (* (( (ptr) formal←c78596)+4) ) = var←c71460.f0;
      };
SOURCE(5035, 139)
   return(done←v21316);
   }

static word FindFeature←P540(triggerBag←v9492, slice←v9520)
   word triggerBag←v9492;
   word slice←v9520;
   {
   register ptr gf←c78628 =  (ptr) &globalframe;
   word feature←v9564;
   word val←v21428 = 0;
   word found←v21456 = 0;
   /* FindFeature: */ 
SOURCE(5252, 372)
SOURCE(5252, 372)
   feature←v9564 = 0;
SOURCE(5381, 53)
   {
      W2 var←c71492;
      {
         word pd90;
         pd90 = (* (( (ptr) (* (( (ptr) gf←c78628)+229)/* var←c71140 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd90 ))))((word) &var←c71492, (*  (ptr) triggerBag←v9492 ), slice←v9520, pd90);
         };
      val←v21428 = var←c71492.f1;
      found←v21456 = var←c71492.f0;
      };
SOURCE(5436, 29)
   if ((0 == found←v21456)) {
SOURCE(5454, 11)
      return(0);
      };
SOURCE(5467, 157)
   {
      register word list←v21516;
      list←v21516 = XR←Narrow(val←v21428, (* (( (ptr) gf←c78628)+14) ));
      lab←L100007: ;
      if ((list←v21516 != 0)) {
         }
      else {
         goto lab←L100004;
         };
SOURCE(5542, 82)
      if (((*  (ptr) XR←Narrow((* (( (ptr) (*  (ptr) list←v21516 ))+1) ), (* (( (ptr) gf←c78628)+15) )) ) == slice←v9520)) {
SOURCE(5606, 18)
         return((*  (ptr) list←v21516 ));
         };
      list←v21516 = (* (( (ptr) list←v21516)+1) );
      goto lab←L100007;
      lab←L100004: ;
      };
SOURCE(5252, 372)
   return(feature←v9564);
   }

static void ReplaceFeature←P600(triggerBag←v9624, oldFeature←v9652, newFeature←v9680)
   word triggerBag←v9624;
   word oldFeature←v9652;
   word newFeature←v9680;
   {
   register ptr gf←c78660 =  (ptr) &globalframe;
   word val←v21644 = 0;
   word key←v21672;
   word found←v21700 = 0;
   /* ReplaceFeature: */ 
SOURCE(5639, 428)
SOURCE(5736, 58)
   key←v21672 = (*  (ptr) XR←Narrow((* (( (ptr) oldFeature←v9652)+1) ), (* (( (ptr) gf←c78660)+15) )) );
SOURCE(5817, 51)
   {
      W2 var←c71524;
      {
         word pd91;
         pd91 = (* (( (ptr) (* (( (ptr) gf←c78660)+229)/* var←c71140 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd91 ))))((word) &var←c71524, (*  (ptr) triggerBag←v9624 ), key←v21672, pd91);
         };
      val←v21644 = var←c71524.f1;
      found←v21700 = var←c71524.f0;
      };
SOURCE(5870, 197)
   if ( ( (0 != found←v21700) ? (val←v21644 != 0) : 0 ) ) {
SOURCE(5898, 171)
      {
         word list←v21768;
SOURCE(5900, 6)
         list←v21768 = XR←Narrow(val←v21644, (* (( (ptr) gf←c78660)+14) ));
SOURCE(5941, 46)
         list←v21768 = (word) RemoveFeatureFromList←P4560(oldFeature←v9652, list←v21768);
SOURCE(5989, 29)
         {
            word var←c71556;
            var←c71556 = XR←NewObject(8, (* (( (ptr) gf←c78660)+14) ));
            (*  (ptr) var←c71556 ) = newFeature←v9680;
            (* (( (ptr) var←c71556)+1) ) = list←v21768;
            list←v21768 = var←c71556;
            };
SOURCE(6020, 47)
         {
            word var←c71588;
            word pd92;
            pd92 = (* (( (ptr) (* (( (ptr) gf←c78660)+229)/* var←c71140 */  ))+9) );
            var←c71588 = (word) ( *( (fPt) ((*  (ptr) pd92 ))))((*  (ptr) triggerBag←v9624 ), key←v21672, list←v21768, pd92);
            };
         };
      }
   else {
SOURCE(6076, 5)
      (void) XR←RaiseUnnamedError();
      };
   }

static void DeleteFeature←P660(triggerBag←v9740, oldFeature←v9768)
   word triggerBag←v9740;
   word oldFeature←v9768;
   {
   register ptr gf←c78692 =  (ptr) &globalframe;
   word val←v21896 = 0;
   word key←v21924;
   word found←v21952 = 0;
   /* DeleteFeature: */ 
SOURCE(6087, 451)
SOURCE(6171, 58)
   key←v21924 = (*  (ptr) XR←Narrow((* (( (ptr) oldFeature←v9768)+1) ), (* (( (ptr) gf←c78692)+15) )) );
SOURCE(6252, 51)
   {
      W2 var←c71620;
      {
         word pd93;
         pd93 = (* (( (ptr) (* (( (ptr) gf←c78692)+229)/* var←c71140 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd93 ))))((word) &var←c71620, (*  (ptr) triggerBag←v9740 ), key←v21924, pd93);
         };
      val←v21896 = var←c71620.f1;
      found←v21952 = var←c71620.f0;
      };
SOURCE(6305, 233)
   if ( ( (0 != found←v21952) ? (val←v21896 != 0) : 0 ) ) {
SOURCE(6333, 207)
      {
         word list←v22020;
SOURCE(6335, 6)
         list←v22020 = XR←Narrow(val←v21896, (* (( (ptr) gf←c78692)+14) ));
SOURCE(6376, 46)
         list←v22020 = (word) RemoveFeatureFromList←P4560(oldFeature←v9768, list←v22020);
SOURCE(6424, 114)
         if ((list←v22020 == 0)) {
SOURCE(6443, 48)
            {
               word var←c71652;
               word pd94;
               pd94 = (* (( (ptr) (* (( (ptr) gf←c78692)+229)/* var←c71140 */  ))+11) );
               var←c71652 = (word) ( *( (fPt) ((*  (ptr) pd94 ))))((*  (ptr) triggerBag←v9740 ), key←v21924, pd94);
               };
            }
         else {
SOURCE(6491, 47)
            {
               word var←c71684;
               word pd95;
               pd95 = (* (( (ptr) (* (( (ptr) gf←c78692)+229)/* var←c71140 */  ))+9) );
               var←c71684 = (word) ( *( (fPt) ((*  (ptr) pd95 ))))((*  (ptr) triggerBag←v9740 ), key←v21924, list←v22020, pd95);
               };
            };
         };
      }
   else {
SOURCE(6547, 5)
      (void) XR←RaiseUnnamedError();
      };
   }

static void AppendFeature←P720(feature←v9828, sliceTriggers←v9856)
   word feature←v9828;
   word sliceTriggers←v9856;
   {
   register ptr gf←c78724 =  (ptr) &globalframe;
   word val←v22148 = 0;
   word slice←v22176;
   word found←v22204 = 0;
   /* AppendFeature: */ 
SOURCE(6558, 494)
SOURCE(6649, 59)
   slice←v22176 = (*  (ptr) XR←Narrow((* (( (ptr) feature←v9828)+1) ), (* (( (ptr) gf←c78724)+15) )) );
SOURCE(6732, 23)
   {
      word pd96;
      pd96 = (* (( (ptr) (* (( (ptr) gf←c78724)+231)/* var←c71716 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd96 ))))(pd96);
      };
SOURCE(6757, 49)
   {
      W2 var←c71748;
      {
         word pd97;
         pd97 = (* (( (ptr) (* (( (ptr) gf←c78724)+229)/* var←c71140 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd97 ))))((word) &var←c71748, sliceTriggers←v9856, slice←v22176, pd97);
         };
      val←v22148 = var←c71748.f1;
      found←v22204 = var←c71748.f0;
      };
SOURCE(6808, 244)
   if ( ( (0 != found←v22204) ? (val←v22148 != 0) : 0 ) ) {
SOURCE(6836, 118)
      {
         word list←v22260;
SOURCE(6838, 6)
         list←v22260 = XR←Narrow(val←v22148, (* (( (ptr) gf←c78724)+14) ));
SOURCE(6879, 26)
         {
            word var←c71780;
            var←c71780 = XR←NewObject(8, (* (( (ptr) gf←c78724)+14) ));
            (*  (ptr) var←c71780 ) = feature←v9828;
            (* (( (ptr) var←c71780)+1) ) = list←v22260;
            list←v22260 = var←c71780;
            };
SOURCE(6907, 45)
         {
            word var←c71812;
            word pd98;
            pd98 = (* (( (ptr) (* (( (ptr) gf←c78724)+229)/* var←c71140 */  ))+9) );
            var←c71812 = (word) ( *( (fPt) ((*  (ptr) pd98 ))))(sliceTriggers←v9856, slice←v22176, list←v22260, pd98);
            };
         };
      }
   else {
SOURCE(6961, 93)
      {
         word list←v22388;
SOURCE(6963, 6)
         list←v22388 = XR←NewObject(8, (* (( (ptr) gf←c78724)+14) ));
         {
            word var←c71876;
            var←c71876 = list←v22388;
            (*  (ptr) var←c71876 ) = feature←v9828;
            };
SOURCE(7006, 46)
         {
            word var←c71908;
            word pd99;
            pd99 = (* (( (ptr) (* (( (ptr) gf←c78724)+229)/* var←c71140 */  ))+10) );
            var←c71908 = (word) ( *( (fPt) ((*  (ptr) pd99 ))))(sliceTriggers←v9856, slice←v22176, list←v22388, pd99);
            };
         };
      };
   }

static word FeatureFromSlice←P780(slice←v9916, parts←v9944)
   word slice←v9916;
   word parts←v9944;
   {
   register ptr gf←c78756 =  (ptr) &globalframe;
   word feature←v9988;
   word sliceD←v22516;
   /* FeatureFromSlice: */ 
SOURCE(7061, 311)
SOURCE(7061, 311)
   feature←v9988 = 0;
SOURCE(7166, 129)
   {
      word tc100;
      word pd101;
      word pd102;
      if ((parts←v9944 == 0)) {
         pd101 = (* (( (ptr) (* (( (ptr) gf←c78756)+232)/* var←c71940 */  ))+29) );
         tc100 =  (word) ( *( (fPt) ((*  (ptr) pd101 ))))(slice←v9916, 0, 6, pd101);
         }
      else {
         pd102 = (* (( (ptr) (* (( (ptr) gf←c78756)+233)/* var←c71972 */  ))+8) );
         tc100 =  (word) ( *( (fPt) ((*  (ptr) pd102 ))))(slice←v9916, parts←v9944, pd102);
         };
      sliceD←v22516 = tc100;
      };
SOURCE(7297, 29)
   feature←v9988 = XR←NewObject(8, (* (( (ptr) gf←c78756)+16) ));
SOURCE(7328, 20)
   (*  (ptr) feature←v9988 ) = 0;
SOURCE(7350, 22)
   (* (( (ptr) feature←v9988)+1) ) = sliceD←v22516;
SOURCE(7061, 311)
   return(feature←v9988);
   }

static word FeatureFromAnchor←P840(anchor←v10048)
   word anchor←v10048;
   {
   register ptr gf←c78788 =  (ptr) &globalframe;
   word feature←v10092;
   /* FeatureFromAnchor: */ 
SOURCE(7378, 214)
SOURCE(7378, 214)
   feature←v10092 = 0;
SOURCE(7460, 29)
   feature←v10092 = XR←NewObject(8, (* (( (ptr) gf←c78788)+16) ));
SOURCE(7491, 21)
   (*  (ptr) feature←v10092 ) = 8;
SOURCE(7570, 22)
   (* (( (ptr) feature←v10092)+1) ) = anchor←v10048;
SOURCE(7378, 214)
   return(feature←v10092);
   }

static void FillStaticTriggerBag←P900(anchor←v10152, scene←v10180, heuristics←v10208, triggerBag←v10236)
   word anchor←v10152;
   word scene←v10180;
   word heuristics←v10208;
   word triggerBag←v10236;
   {
   /* FillStaticTriggerBag: */ 
SOURCE(7633, 182)
SOURCE(7743, 36)
   (void) AddAnchorTrigger←P3120(anchor←v10152, triggerBag←v10236);
SOURCE(7781, 34)
   (void) AddAllHotSlices←P3180(scene←v10180, triggerBag←v10236);
   }

static void FillDynamicTriggerBag←P960(anchor←v10296, scene←v10324, heuristics←v10352, triggerBag←v10380, editConstraints←v10408, bezierDrag←v10436)
   word anchor←v10296;
   word scene←v10324;
   word heuristics←v10352;
   word triggerBag←v10380;
   word editConstraints←v10408;
   W5 bezierDrag←v10436;
   {
   register ptr gf←c78820 =  (ptr) &globalframe;
   /* FillDynamicTriggerBag: */ 
SOURCE(7821, 401)
SOURCE(7996, 36)
   (void) AddAnchorTrigger←P3120(anchor←v10296, triggerBag←v10380);
SOURCE(8034, 34)
   (void) AddAllHotSlices←P3180(scene←v10324, triggerBag←v10380);
SOURCE(8070, 85)
   {
      W2 var←c72068;
      (void) AddHeuristics←P3240((word) &var←c72068, scene←v10324, heuristics←v10352, (* (( (ptr) gf←c78820)+41) ), triggerBag←v10380, editConstraints←v10408
         , bezierDrag←v10436);
      };
SOURCE(8157, 65)
   {
      word var←c72100;
      var←c72100 = (word) RemoveMoving←P3420(scene←v10324, triggerBag←v10380, editConstraints←v10408, bezierDrag←v10436);
      };
   }

static void FillStaticSceneBag←P1020(scene←v10496, sceneBag←v10524)
   word scene←v10496;
   word sceneBag←v10524;
   {
   /* FillStaticSceneBag: */ 
SOURCE(8227, 102)
SOURCE(8300, 29)
   (void) AddAllSlices←P4140(scene←v10496, sceneBag←v10524);
   }

static void FillDynamicSceneBag←P1080(scene←v10584, sceneBag←v10612, editConstraints←v10640, bezierDrag←v10668)
   word scene←v10584;
   word sceneBag←v10612;
   word editConstraints←v10640;
   W5 bezierDrag←v10668;
   {
   /* FillDynamicSceneBag: */ 
SOURCE(8335, 262)
SOURCE(8503, 29)
   (void) AddAllSlices←P4140(scene←v10584, sceneBag←v10612);
SOURCE(8534, 63)
   {
      word var←c72132;
      var←c72132 = (word) RemoveMoving←P3420(scene←v10584, sceneBag←v10612, editConstraints←v10640, bezierDrag←v10668);
      };
   }

static word CreateAlignBag←P1140()
   {
   register ptr gf←c78852 =  (ptr) &globalframe;
   word alignBag←v10728;
   /* CreateAlignBag: */ 
SOURCE(8634, 207)
SOURCE(8634, 207)
   alignBag←v10728 = 0;
SOURCE(8698, 143)
   {
      word var←c72164;
      word var←c72228;
      {
         word pd103;
         pd103 = (* (( (ptr) (* (( (ptr) gf←c78852)+234)/* var←c72196 */  ))+5) );
         var←c72164 = (word) ( *( (fPt) ((*  (ptr) pd103 ))))(211, pd103);
         };
      var←c72228 = XR←NewObject(20, (* (( (ptr) gf←c78852)+20) ));
      (*  (ptr) var←c72228 ) = var←c72164;
      alignBag←v10728 = var←c72228;
      };
SOURCE(8634, 207)
   return(alignBag←v10728);
   }

static void CopyAlignBag←P1200(to←v10788, from←v10816)
   word to←v10788;
   word from←v10816;
   {
   register ptr gf←c78884 =  (ptr) &globalframe;
   /* CopyAlignBag: */ 
SOURCE(8847, 349)
SOURCE(8891, 78)
   (void) CopySlopeLineTable←P1320((*  (ptr) to←v10788 ), (*  (ptr) from←v10816 ));
SOURCE(8971, 62)
   {
      word pd104;
      pd104 = (* (( (ptr) (* (( (ptr) gf←c78884)+230)/* var←c71428 */  ))+8) );
      (* (( (ptr) to←v10788)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd104 ))))((* ((( (ptr) from←v10816)+1)) ), pd104);
      };
SOURCE(9035, 66)
   {
      word pd105;
      pd105 = (* (( (ptr) (* (( (ptr) gf←c78884)+230)/* var←c71428 */  ))+8) );
      (* (( (ptr) to←v10788)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd105 ))))((* ((( (ptr) from←v10816)+2)) ), pd105);
      };
SOURCE(9103, 68)
   {
      word pd106;
      pd106 = (* (( (ptr) (* (( (ptr) gf←c78884)+230)/* var←c71428 */  ))+8) );
      (* (( (ptr) to←v10788)+3) ) = (word) ( *( (fPt) ((*  (ptr) pd106 ))))((* ((( (ptr) from←v10816)+3)) ), pd106);
      };
SOURCE(9173, 23)
   (* (( (ptr) to←v10788)+4) ) = (* (( (ptr) from←v10816)+4) );
   }

static word EmptyAlignBag←P1260(alignBag←v10876)
   word alignBag←v10876;
   {
   word var←c10920;
   /* EmptyAlignBag: */ 
SOURCE(9202, 222)
SOURCE(9269, 155)
   {
      word tc107;
      if ( (  (  ( (0 != (word) EmptySlopeLines←P1380(alignBag←v10876)) ? ((* (( (ptr) alignBag←v10876)+1) ) == 0) : 0 )  ? ((* (
         ( (ptr) alignBag←v10876)+2) ) == 0) : 0 )  ? ((* (( (ptr) alignBag←v10876)+3) ) == 0) : 0 ) ) {
         tc107 =  (word)  (unsigned) ((* (( (ptr) alignBag←v10876)+4) ) == 0);
         }
      else {
         tc107 =  (word)  (unsigned) 0;
         };
      return(tc107);
      };
   }

static void CopySlopeLineTable←P1320(formal←c01061, fromTable←v11008)
   word formal←c01061;
   word fromTable←v11008;
   {
   W7 var←c78916;
   /* declaration of toTable←v10980 skipped */ 
   register ptr gf←c78948 =  (ptr) &globalframe;
   /* declaration of var←c72292 skipped */ 
   var←c78916.f4/* toTable←v10980 */  = formal←c01061;
   /* CopySlopeLineTable: */ 
SOURCE(9430, 254)
   {
      word tmpAddr108;
      tmpAddr108 = (word) (( (ptr) &var←c78916)+5)/* var←c72292 */ ;
      (*  (ptr) tmpAddr108 ) = ( ((word)  (fPt) CopyFeatures←P5988) );
      (* (( (ptr) tmpAddr108) + 1) ) = 1;
      };
SOURCE(9617, 22)
   {
      word pd109;
      pd109 = (* (( (ptr) (* (( (ptr) gf←c78948)+234)/* var←c72196 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd109 ))))(var←c78916.f4/* toTable←v10980 */ , pd109);
      };
SOURCE(9641, 43)
   {
      word var←c72324;
      word pd110;
      pd110 = (* (( (ptr) (* (( (ptr) gf←c78948)+234)/* var←c72196 */  ))+13) );
      var←c72324 = (word) ( *( (fPt) ((*  (ptr) pd110 ))))(fromTable←v11008, (word) (( (bPt) &var←c78916)+20)/* var←c72292 */ , pd110)
      ;
      };
   }

static word CopyFeatures←P5988(key←v49200, val←v49228, formal←c79012)
   word key←v49200;
   word val←v49228;
   word formal←c79012;
   {
   register ptr gf←c78980 =  (ptr) &globalframe;
   word quit←v49272;
   word inserted←v22604;
   formal←c79012 = (formal←c79012 - 20);
   /* CopyFeatures: */ 
SOURCE(9493, 114)
SOURCE(9493, 114)
   quit←v49272 = 0;
SOURCE(9534, 50)
   {
      word pd111;
      pd111 = (* (( (ptr) (* (( (ptr) gf←c78980)+234)/* var←c72196 */  ))+10) );
      inserted←v22604 = (word) ( *( (fPt) ((*  (ptr) pd111 ))))((* (( (ptr) formal←c79012)+4) ), key←v49200, val←v49228, pd111)
      ;
      };
SOURCE(9586, 21)
   if ((0 == inserted←v22604)) {
SOURCE(9607, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(9493, 114)
   return(quit←v49272);
   }

static word EmptySlopeLines←P1380(alignBag←v11068)
   word alignBag←v11068;
   {
   W6 var←c79044;
   register ptr gf←c79076 =  (ptr) &globalframe;
   word empty←v11112;
   /* declaration of var←c72356 skipped */ 
   /* EmptySlopeLines: */ 
SOURCE(9690, 223)
   {
      word tmpAddr112;
      tmpAddr112 = (word) (( (ptr) &var←c79044)+4)/* var←c72356 */ ;
      (*  (ptr) tmpAddr112 ) = ( ((word)  (fPt) FeatureFound←P6048) );
      (* (( (ptr) tmpAddr112) + 1) ) = 1;
      };
SOURCE(9690, 223)
   empty←v11112 = 0;
SOURCE(9849, 64)
   {
      word pd113;
      pd113 = (* (( (ptr) (* (( (ptr) gf←c79076)+234)/* var←c72196 */  ))+13) );
      empty←v11112 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd113 ))))((*  (ptr) alignBag←v11068 ), (word) (( (bPt) &var←c79044)+16)
         /* var←c72356 */ , pd113));
      };
SOURCE(9690, 223)
   return(empty←v11112);
   }

static word FeatureFound←P6048(key←v49780, val←v49808, formal←c79108)
   word key←v49780;
   word val←v49808;
   word formal←c79108;
   {
   word quit←v49852;
   formal←c79108 = (formal←c79108 - 16);
   /* FeatureFound: */ 
SOURCE(9767, 77)
SOURCE(9767, 77)
   quit←v49852 = 0;
SOURCE(9808, 18)
   if ((val←v49808 == 0)) {
SOURCE(9826, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(9833, 11)
   quit←v49852 = 1;
SOURCE(9767, 77)
   return(quit←v49852);
   }

static void FlushAlignBag←P1440(alignBag←v11172)
   word alignBag←v11172;
   {
   /* FlushAlignBag: */ 
SOURCE(9919, 186)
SOURCE(9971, 25)
   (void) FlushSlopeLines←P1560(alignBag←v11172);
SOURCE(9998, 25)
   (* (( (ptr) alignBag←v11172)+1) ) = 0;
SOURCE(10025, 27)
   (* (( (ptr) alignBag←v11172)+2) ) = 0;
SOURCE(10054, 28)
   (* (( (ptr) alignBag←v11172)+3) ) = 0;
SOURCE(10084, 21)
   (* (( (ptr) alignBag←v11172)+4) ) = 0;
   }

static void TriggersPerSlopeLine←P1500(formal←c0269, ggData←v11232)
   word formal←c0269;
   word ggData←v11232;
   {
   W10 var←c79140;
   register ptr gf←c79172 =  (ptr) &globalframe;
   /* declaration of lines←v11276 skipped */ 
   /* declaration of min←v11304 skipped */ 
   /* declaration of max←v11332 skipped */ 
   word avg←v11360;
   /* declaration of var←c72388 skipped */ 
   /* declaration of totalTriggers←v22720 skipped */ 
   /* TriggersPerSlopeLine: */ 
SOURCE(10111, 790)
   {
      word tmpAddr114;
      tmpAddr114 = (word) (( (ptr) &var←c79140)+7)/* var←c72388 */ ;
      (*  (ptr) tmpAddr114 ) = ( ((word)  (fPt) Count←P6108) );
      (* (( (ptr) tmpAddr114) + 1) ) = 1;
      };
SOURCE(10744, 25)
   (* (( (ptr) &var←c79140)+9)/* totalTriggers←v22720 */  ) = (*  (ptr) &fc115 );
SOURCE(10771, 9)
   (* (( (ptr) &var←c79140)+4)/* lines←v11276 */  ) = 0;
SOURCE(10782, 16)
   (* (( (ptr) &var←c79140)+5)/* min←v11304 */  ) =  (word) -1;
SOURCE(10800, 7)
   (* (( (ptr) &var←c79140)+6)/* max←v11332 */  ) = 0;
SOURCE(10809, 65)
   {
      word var←c72420;
      word pd116;
      pd116 = (* (( (ptr) (* (( (ptr) gf←c79172)+234)/* var←c72196 */  ))+13) );
      var←c72420 = (word) ( *( (fPt) ((*  (ptr) pd116 ))))((*  (ptr) (* (( (ptr) (* (( (ptr) ggData←v11232)+18) ))+4) ) ), (word) (
            ( (bPt) &var←c79140)+28)/* var←c72388 */ , pd116);
      };
SOURCE(10876, 25)
   {
      word x117;
      *(float*)&avg←v11360 = (
         x117 = (* (( (ptr) &var←c79140)+9)/* totalTriggers←v22720 */  ),  *(float*)&x117
         ) / (float)(unsigned)(* (( (ptr) &var←c79140)+4)/* lines←v11276 */  );
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0269 ) = (* (( (ptr) &var←c79140)+4)/* lines←v11276 */  );
   (* (( (ptr) formal←c0269)+1) ) = (* (( (ptr) &var←c79140)+5)/* min←v11304 */  );
   (* (( (ptr) formal←c0269)+2) ) = (* (( (ptr) &var←c79140)+6)/* max←v11332 */  );
   (* (( (ptr) formal←c0269)+3) ) = avg←v11360;
   return;
   }

static word Count←P6108(key←v49912, val←v49940, formal←c79236)
   word key←v49912;
   word val←v49940;
   word formal←c79236;
   {
   register ptr gf←c79204 =  (ptr) &globalframe;
   word quit←v49984;
   word list←v22764;
   word aLine←v22792 = 0;
   word triggersPerSlope←v22820 = 0;
   formal←c79236 = (formal←c79236 - 28);
   /* Count: */ 
SOURCE(10202, 514)
SOURCE(10202, 514)
   quit←v49984 = 0;
SOURCE(10236, 6)
   list←v22764 = XR←Narrow(val←v49940, (* (( (ptr) gf←c79204)+14) ));
SOURCE(10327, 389)
   {
      register word l←v22948;
      l←v22948 = list←v22764;
      lab←L100012: ;
      if ((l←v22948 != 0)) {
         }
      else {
         goto lab←L100009;
         };
SOURCE(10386, 17)
      (* (( (ptr) formal←c79236)+4) ) = ((* (( (ptr) formal←c79236)+4) ) + 1);
SOURCE(10405, 29)
      aLine←v22792 = XR←Narrow((* (( (ptr) (*  (ptr) l←v22948 ))+1) ), (* (( (ptr) gf←c79204)+21) ));
SOURCE(10436, 20)
      triggersPerSlope←v22820 = 0;
SOURCE(10458, 131)
      {
         register word pointList←v23076;
         pointList←v23076 = (* (( (ptr) aLine←v22792)+2) );
         lab←L100016: ;
         if ((pointList←v23076 != 0)) {
            }
         else {
            goto lab←L100013;
            };
SOURCE(10550, 39)
         triggersPerSlope←v22820 = (triggersPerSlope←v22820 + 1);
         pointList←v23076 = (* (( (ptr) pointList←v23076)+2) );
         goto lab←L100016;
         lab←L100013: ;
         };
SOURCE(10600, 32)
      {
         word x118;
         (* (( (ptr) formal←c79236)+5) ) = (x118 = (* (( (ptr) formal←c79236)+5) ),
            MIN( (unsigned) , x118, triggersPerSlope←v22820));
         };
SOURCE(10634, 32)
      {
         word x119;
         (* (( (ptr) formal←c79236)+6) ) = (x119 = (* (( (ptr) formal←c79236)+6) ),
            MAX( (unsigned) , x119, triggersPerSlope←v22820));
         };
SOURCE(10668, 48)
      {
         word x120;
         *(float*)(( (ptr) formal←c79236)+9) = (
            x120 = (* (( (ptr) formal←c79236)+9) ),  *(float*)&x120
            ) + (float)(unsigned)triggersPerSlope←v22820;
         };
      l←v22948 = (* (( (ptr) l←v22948)+1) );
      goto lab←L100012;
      lab←L100009: ;
      };
SOURCE(10202, 514)
   return(quit←v49984);
   }

static void FlushSlopeLines←P1560(alignBag←v11420)
   word alignBag←v11420;
   {
   register ptr gf←c79268 =  (ptr) &globalframe;
   /* FlushSlopeLines: */ 
SOURCE(10907, 85)
SOURCE(10954, 38)
   {
      word pd121;
      pd121 = (* (( (ptr) (* (( (ptr) gf←c79268)+234)/* var←c72196 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd121 ))))((*  (ptr) (alignBag←v11420) ), pd121);
      };
   }

static void FillStaticAlignBag←P1620(triggerBag←v11480, sceneBag←v11508, ggData←v11536, hideAlignments←v11564, alignBag←v11592)
   word triggerBag←v11480;
   word sceneBag←v11508;
   word ggData←v11536;
   word hideAlignments←v11564;
   word alignBag←v11592;
   {
   /* FillStaticAlignBag: */ 
SOURCE(10998, 201)
SOURCE(11139, 60)
   (void) BuiltInFilters←P3600(triggerBag←v11480, ggData←v11536, hideAlignments←v11564, alignBag←v11592);
   }

static void FillDynamicAlignBag←P1680(triggerBag←v11652, sceneBag←v11680, ggData←v11708, hideAlignments←v11736, action←v11764, alignBag←v11792)
   word triggerBag←v11652;
   word sceneBag←v11680;
   word ggData←v11708;
   word hideAlignments←v11736;
   word action←v11764;
   word alignBag←v11792;
   {
   /* FillDynamicAlignBag: */ 
SOURCE(11205, 216)
SOURCE(11361, 60)
   (void) BuiltInFilters←P3600(triggerBag←v11652, ggData←v11708, hideAlignments←v11736, alignBag←v11792);
   }

static void AddAlignment←P1740(featureData←v11852, alignBag←v11880)
   word featureData←v11852;
   word alignBag←v11880;
   {
   register ptr gf←c79300 =  (ptr) &globalframe;
   /* AddAlignment: */ 
SOURCE(11427, 515)
SOURCE(11497, 23)
   {
      word pd122;
      pd122 = (* (( (ptr) (* (( (ptr) gf←c79300)+231)/* var←c71716 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd122 ))))(pd122);
      };
SOURCE(11522, 420)
   {
      word var←c72452;
      var←c72452 = (*  (ptr) featureData←v11852 );
      switch (var←c72452) {
         case 1: 
SOURCE(11567, 66)
            {
               word var←c72484;
               var←c72484 = XR←NewObject(8, (* (( (ptr) gf←c79300)+14) ));
               (*  (ptr) var←c72484 ) = featureData←v11852;
               (* (( (ptr) var←c72484)+1) ) = (* (( (ptr) alignBag←v11880)+3) );
               (* (( (ptr) alignBag←v11880)+3) ) = var←c72484;
               };
            break;
         case 2: 
SOURCE(11648, 35)
            (void) AddSlopeLine←P1800(featureData←v11852, alignBag←v11880);
            break;
         case 3: 
SOURCE(11698, 60)
            {
               word var←c72516;
               var←c72516 = XR←NewObject(8, (* (( (ptr) gf←c79300)+14) ));
               (*  (ptr) var←c72516 ) = featureData←v11852;
               (* (( (ptr) var←c72516)+1) ) = (* (( (ptr) alignBag←v11880)+1) );
               (* (( (ptr) alignBag←v11880)+1) ) = var←c72516;
               };
            break;
         case 5: 
SOURCE(11775, 64)
            {
               word var←c72548;
               var←c72548 = XR←NewObject(8, (* (( (ptr) gf←c79300)+14) ));
               (*  (ptr) var←c72548 ) = featureData←v11852;
               (* (( (ptr) var←c72548)+1) ) = (* (( (ptr) alignBag←v11880)+2) );
               (* (( (ptr) alignBag←v11880)+2) ) = var←c72548;
               };
            break;
         case 8: 
SOURCE(11851, 29)
            (* (( (ptr) alignBag←v11880)+4) ) = featureData←v11852;
            break;
         default: 
SOURCE(11893, 49)
            {
               word var←c0296;
               var←c0296 = (* (( (ptr) gf←c79300)+40) );
               (void) (XR←RaiseSignal((* (( (ptr) gf←c79300)+4)/* Problem←v5688 */  ), 0, (word) &var←c0296));
               };
            break;
         };
      };
   }

static void AddSlopeLine←P1800(featureData←v11940, alignBag←v11968)
   word featureData←v11940;
   word alignBag←v11968;
   {
   register ptr gf←c79332 =  (ptr) &globalframe;
   word line←v23204;
   word distance←v23232;
   word key←v23260;
   word val←v23288 = 0;
   word found←v23316 = 0;
   /* AddSlopeLine: */ 
SOURCE(11948, 545)
SOURCE(12018, 58)
   line←v23204 = (*  (ptr) XR←Narrow((* (( (ptr) featureData←v11940)+1) ), (* (( (ptr) gf←c79332)+21) )) );
SOURCE(12078, 23)
   distance←v23232 = (* (( (ptr) line←v23204)+1) );
SOURCE(12103, 37)
   key←v23260 = (word) KeyFromDistance←P2100(distance←v23232);
SOURCE(12173, 58)
   {
      W2 var←c72580;
      {
         word pd123;
         pd123 = (* (( (ptr) (* (( (ptr) gf←c79332)+234)/* var←c72196 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd123 ))))((word) &var←c72580, (*  (ptr) alignBag←v11968 ), key←v23260, pd123);
         };
      val←v23288 = var←c72580.f1;
      found←v23316 = var←c72580.f0;
      };
SOURCE(12233, 260)
   if ((0 == found←v23316)) {
SOURCE(12251, 106)
      {
         word list←v23372;
SOURCE(12253, 6)
         list←v23372 = XR←NewObject(8, (* (( (ptr) gf←c79332)+14) ));
         {
            word var←c72644;
            var←c72644 = list←v23372;
            (*  (ptr) var←c72644 ) = featureData←v11940;
            };
SOURCE(12300, 55)
         {
            word var←c72676;
            word pd124;
            pd124 = (* (( (ptr) (* (( (ptr) gf←c79332)+234)/* var←c72196 */  ))+10) );
            var←c72676 = (word) ( *( (fPt) ((*  (ptr) pd124 ))))((*  (ptr) alignBag←v11968 ), key←v23260, list←v23372, pd124);
            };
         };
      }
   else {
SOURCE(12364, 131)
      {
         word list←v23500;
SOURCE(12366, 6)
         list←v23500 = XR←Narrow(val←v23288, (* (( (ptr) gf←c79332)+14) ));
SOURCE(12407, 30)
         {
            word var←c72708;
            var←c72708 = XR←NewObject(8, (* (( (ptr) gf←c79332)+14) ));
            (*  (ptr) var←c72708 ) = featureData←v11940;
            (* (( (ptr) var←c72708)+1) ) = list←v23500;
            list←v23500 = var←c72708;
            };
SOURCE(12439, 54)
         {
            word var←c72740;
            word pd125;
            pd125 = (* (( (ptr) (* (( (ptr) gf←c79332)+234)/* var←c72196 */  ))+9) );
            var←c72740 = (word) ( *( (fPt) ((*  (ptr) pd125 ))))((*  (ptr) alignBag←v11968 ), key←v23260, list←v23500, pd125);
            };
         };
      };
   }

static word JointAddSlopeLine←P1860(degrees←v12028, point←v12056, alignBag←v12084)
   word degrees←v12028;
   W2 point←v12056;
   word alignBag←v12084;
   {
   register ptr gf←c79364 =  (ptr) &globalframe;
   word feature←v12128;
   word line←v23628 = 0;
   word coincident←v23656 = 0;
   word cosine←v23684;
   word sine←v23712;
   word distance←v23740;
   /* JointAddSlopeLine: */ 
SOURCE(12502, 769)
SOURCE(12502, 769)
   feature←v12128 = 0;
SOURCE(12685, 88)
   {
      W4 var←c72772;
      (void) LineThru←P2160((word) &var←c72772, point←v12056, degrees←v12028, (*  (ptr) alignBag←v12084 ));
      distance←v23740 = var←c72772.f3;
      sine←v23712 = var←c72772.f2;
      cosine←v23684 = var←c72772.f1;
      coincident←v23656 = var←c72772.f0;
      };
SOURCE(12775, 496)
   if ((coincident←v23656 != 0)) {
SOURCE(12800, 146)
      {
         word alignmentLine←v23784;
SOURCE(12802, 55)
         alignmentLine←v23784 = XR←Narrow((* (( (ptr) coincident←v23656)+1) ), (* (( (ptr) gf←c79364)+21) ));
SOURCE(12859, 70)
         {
            word var←c72804;
            var←c72804 = XR←NewObject(12, (* (( (ptr) gf←c79364)+25) ));
            (*  (W2Pt) var←c72804 ) = point←v12056;
            (* (( (ptr) var←c72804)+2) ) = (* (( (ptr) alignmentLine←v23784)+2) );
            (* (( (ptr) alignmentLine←v23784)+2) ) = var←c72804;
            };
SOURCE(12931, 13)
         feature←v12128 = 0;
         };
      }
   else {
SOURCE(12953, 320)
      {
         word alignmentLine←v23828 = 0;
SOURCE(12986, 59)
         {
            word pd126;
            pd126 = (* (( (ptr) (* (( (ptr) gf←c79364)+235)/* var←c72836 */  ))+10) );
            line←v23628 = (word) ( *( (fPt) ((*  (ptr) pd126 ))))(sine←v23712, cosine←v23684, distance←v23740, pd126);
            };
SOURCE(13047, 103)
         {
            word var←c72868;
            word var←c72932;
            {
               word var←c72900;
               var←c72900 = XR←NewObject(12, (* (( (ptr) gf←c79364)+25) ));
               (*  (W2Pt) var←c72900 ) = point←v12056;
               var←c72868 = var←c72900;
               };
            var←c72932 = XR←NewObject(12, (* (( (ptr) gf←c79364)+21) ));
            (*  (ptr) var←c72932 ) = line←v23628;
            (* (( (ptr) var←c72932)+1) ) = degrees←v12028;
            (* (( (ptr) var←c72932)+2) ) = var←c72868;
            alignmentLine←v23828 = var←c72932;
            };
SOURCE(13152, 29)
         feature←v12128 = XR←NewObject(8, (* (( (ptr) gf←c79364)+16) ));
SOURCE(13183, 24)
         (*  (ptr) feature←v12128 ) = 2;
SOURCE(13209, 29)
         (* (( (ptr) feature←v12128)+1) ) = alignmentLine←v23828;
SOURCE(13240, 31)
         (void) AddAlignment←P1740(feature←v12128, alignBag←v12084);
         };
      };
SOURCE(12502, 769)
   return(feature←v12128);
   }

static void WalkSlopeLines←P1920(alignBag←v12188, formal←c01062)
   word alignBag←v12188;
   word formal←c01062;
   {
   W7 var←c79396;
   /* declaration of walkProc←v12216 skipped */ 
   register ptr gf←c79428 =  (ptr) &globalframe;
   /* declaration of var←c72996 skipped */ 
   var←c79396.f4/* walkProc←v12216 */  = formal←c01062;
   /* WalkSlopeLines: */ 
SOURCE(13280, 309)
   {
      word tmpAddr127;
      tmpAddr127 = (word) (( (ptr) &var←c79396)+5)/* var←c72996 */ ;
      (*  (ptr) tmpAddr127 ) = ( ((word)  (fPt) WalkAction←P6456) );
      (* (( (ptr) tmpAddr127) + 1) ) = 1;
      };
SOURCE(13534, 55)
   {
      word var←c73028;
      word pd128;
      pd128 = (* (( (ptr) (* (( (ptr) gf←c79428)+234)/* var←c72196 */  ))+13) );
      var←c73028 = (word) ( *( (fPt) ((*  (ptr) pd128 ))))((*  (ptr) alignBag←v12188 ), (word) (( (bPt) &var←c79396)+20)/* var←c72996 */ , pd128)
      ;
      };
   }

static word WalkAction←P6456(key←v53400, val←v53428, formal←c79492)
   word key←v53400;
   word val←v53428;
   word formal←c79492;
   {
   register ptr gf←c79460 =  (ptr) &globalframe;
   word quit←v53472;
   formal←c79492 = (formal←c79492 - 20);
   /* WalkAction: */ 
SOURCE(13360, 156)
SOURCE(13360, 156)
   quit←v53472 = 0;
SOURCE(13399, 117)
   {
      register word list←v23916;
      list←v23916 = XR←Narrow(val←v53428, (* (( (ptr) gf←c79460)+14) ));
      lab←L100020: ;
      if ((list←v23916 != 0)) {
         }
      else {
         goto lab←L100017;
         };
SOURCE(13474, 27)
      {
         word pd129;
         pd129 = (* (( (ptr) formal←c79492)+4) );
         quit←v53472 = (word) ( *( (fPt) ((*  (ptr) pd129 ))))((*  (ptr) (list←v23916) ), pd129);
         };
SOURCE(13503, 13)
      if ((0 != quit←v53472)) {
SOURCE(13516, 4)
         goto lab←L100018;
         };
      list←v23916 = (* (( (ptr) list←v23916)+1) );
      goto lab←L100020;
      lab←L100017: ;
      lab←L100018: ;
      };
SOURCE(13360, 156)
   return(quit←v53472);
   }

static word ListOfSlopeLines←P1980(alignBag←v12276)
   word alignBag←v12276;
   {
   W7 var←c79524;
   register ptr gf←c79556 =  (ptr) &globalframe;
   /* declaration of slopeLines←v12320 skipped */ 
   /* declaration of var←c73060 skipped */ 
   /* ListOfSlopeLines: */ 
SOURCE(13595, 326)
   {
      word tmpAddr130;
      tmpAddr130 = (word) (( (ptr) &var←c79524)+5)/* var←c73060 */ ;
      (*  (ptr) tmpAddr130 ) = ( ((word)  (fPt) ConsSlopeLine←P6564) );
      (* (( (ptr) tmpAddr130) + 1) ) = 1;
      };
SOURCE(13595, 326)
   var←c79524.f4/* slopeLines←v12320 */  = 0;
SOURCE(13863, 58)
   {
      word var←c73092;
      word pd131;
      pd131 = (* (( (ptr) (* (( (ptr) gf←c79556)+234)/* var←c72196 */  ))+13) );
      var←c73092 = (word) ( *( (fPt) ((*  (ptr) pd131 ))))((*  (ptr) alignBag←v12276 ), (word) (( (bPt) &var←c79524)+20)/* var←c73060 */ , pd131)
      ;
      };
SOURCE(13595, 326)
   return(var←c79524.f4/* slopeLines←v12320 */ );
   }

static word ConsSlopeLine←P6564(key←v53532, val←v53560, formal←c79620)
   word key←v53532;
   word val←v53560;
   word formal←c79620;
   {
   register ptr gf←c79588 =  (ptr) &globalframe;
   word quit←v53604;
   formal←c79620 = (formal←c79620 - 20);
   /* ConsSlopeLine: */ 
SOURCE(13691, 158)
SOURCE(13691, 158)
   quit←v53604 = 0;
SOURCE(13733, 116)
   {
      register word list←v24088;
      list←v24088 = XR←Narrow(val←v53560, (* (( (ptr) gf←c79588)+14) ));
      lab←L100024: ;
      if ((list←v24088 != 0)) {
         }
      else {
         goto lab←L100021;
         };
SOURCE(13808, 41)
      {
         word var←c73124;
         var←c73124 = XR←NewObject(8, (* (( (ptr) gf←c79588)+14) ));
         (*  (ptr) var←c73124 ) = (*  (ptr) list←v24088 );
         (* (( (ptr) var←c73124)+1) ) = (* (( (ptr) formal←c79620)+4) );
         (* (( (ptr) formal←c79620)+4) ) = var←c73124;
         };
      list←v24088 = (* (( (ptr) list←v24088)+1) );
      goto lab←L100024;
      lab←L100021: ;
      };
SOURCE(13691, 158)
   return(quit←v53604);
   }

static void KeysFromDistance←P2040(formal←c0349, distance←v12464)
   word formal←c0349;
   word distance←v12464;
   {
   register ptr gf←c79652 =  (ptr) &globalframe;
   W3 keys←v12508;
   word int←v24216;
   /* KeysFromDistance: */ 
SOURCE(13983, 233)
SOURCE(14073, 36)
   {
      word x132;
      word x134;
      *(float*)&distance←v12464 = (
         x132 = distance←v12464,  *(float*)&x132
         ) * (
         x134 = (*  (ptr) &fc133 ),  *(float*)&x134
         );
      };
SOURCE(14111, 26)
   {
      word pd135;
      pd135 = (* (( (ptr) (* (( (ptr) gf←c79652)+236)/* var←c73156 */  ))+8) );
      int←v24216 = (word) ( *( (fPt) ((*  (ptr) pd135 ))))(distance←v12464, pd135);
      };
SOURCE(14139, 23)
   keys←v12508.f0 = int←v24216;
SOURCE(14164, 25)
   keys←v12508.f1 = (int←v24216 + 1);
SOURCE(14191, 25)
   keys←v12508.f2 = (int←v24216 - 1);
   /* removed tail goto */ 
   (*  (W3Pt) formal←c0349 ) = keys←v12508;
   return;
   }

static word KeyFromDistance←P2100(distance←v12604)
   word distance←v12604;
   {
   register ptr gf←c79684 =  (ptr) &globalframe;
   word key←v12648;
   word int←v24260;
   /* KeyFromDistance: */ 
SOURCE(14222, 190)
SOURCE(14295, 36)
   {
      word x136;
      word x137;
      *(float*)&distance←v12604 = (
         x136 = distance←v12604,  *(float*)&x136
         ) * (
         x137 = (*  (ptr) &fc133 ),  *(float*)&x137
         );
      };
SOURCE(14365, 26)
   {
      word pd138;
      pd138 = (* (( (ptr) (* (( (ptr) gf←c79684)+236)/* var←c73156 */  ))+8) );
      int←v24260 = (word) ( *( (fPt) ((*  (ptr) pd138 ))))(distance←v12604, pd138);
      };
SOURCE(14393, 19)
   key←v12648 = int←v24260;
SOURCE(14222, 190)
   return(key←v12648);
   }

static void LineThru←P2160(formal←c0371, point←v12708, degrees←v12736, table←v12764)
   word formal←c0371;
   W2 point←v12708;
   word degrees←v12736;
   word table←v12764;
   {
   register ptr gf←c79716 =  (ptr) &globalframe;
   word coincident←v12808;
   word cosine←v12836;
   word sine←v12864;
   word distance←v12892;
   word line←v24304 = 0;
   W3 keys←v24332;
   word val←v24360 = 0;
   word found←v24388 = 0;
   /* LineThru: */ 
SOURCE(14418, 687)
SOURCE(14418, 687)
   coincident←v12808 = 0;
SOURCE(14621, 61)
   {
      W3 var←c73188;
      (void) DistanceFromOrigin←P2340((word) &var←c73188, point←v12708, degrees←v12736);
      sine←v12864 = var←c73188.f2;
      cosine←v12836 = var←c73188.f1;
      distance←v12892 = var←c73188.f0;
      };
SOURCE(14684, 33)
   (void) KeysFromDistance←P2040((word) &keys←v24332, distance←v12892);
SOURCE(14719, 350)
   {
      register word i←v24480 = 0;
      lab←L100030: ;
SOURCE(14743, 44)
      {
         W2 var←c73220;
         {
            word pd139;
            pd139 = (* (( (ptr) (* (( (ptr) gf←c79716)+234)/* var←c72196 */  ))+7) );
            (void) ( *( (fPt) ((*  (ptr) pd139 ))))((word) &var←c73220, table←v12764, (* (( (ptr) &keys←v24332)+BCK(i←v24480, 3)) ), pd139)
            ;
            };
         val←v24360 = var←c73220.f1;
         found←v24388 = var←c73220.f0;
         };
SOURCE(14789, 18)
      if ((0 == found←v24388)) {
SOURCE(14807, 4)
         goto lab←L100029;
         };
SOURCE(14813, 256)
      {
         register word l←v24524;
         l←v24524 = XR←Narrow(val←v24360, (* (( (ptr) gf←c79716)+14) ));
         lab←L100034: ;
         if ((l←v24524 != 0)) {
            }
         else {
            goto lab←L100031;
            };
SOURCE(14879, 48)
         line←v24304 = (*  (ptr) XR←Narrow((* (( (ptr) (*  (ptr) l←v24524 ))+1) ), (* (( (ptr) gf←c79716)+21) )) );
SOURCE(14929, 140)
         {
            word tc140;
            word x141;
            word x142;
            word pd143;
            word x144;
            word x146;
            if (((
               x141 = (* (( (ptr) XR←Narrow((* (( (ptr) (*  (ptr) l←v24524 ))+1) ), (* (( (ptr) gf←c79716)+21) )))+1) ),  *(float*)&x141
               ) == (
               x142 = degrees←v12736,  *(float*)&x142
               ))) {
               pd143 = (* (( (ptr) (* (( (ptr) gf←c79716)+235)/* var←c72836 */  ))+39) );
               tc140 =  (word) ((
                  x144 = (word) ( *( (fPt) ((*  (ptr) pd143 ))))(point←v12708, line←v24304, pd143),  *(float*)&x144
                  ) < (
                  x146 = (*  (ptr) &fc145 ),  *(float*)&x146
                  ));
               }
            else {
               tc140 =  (word) 0;
               };
            if (tc140) {
SOURCE(15041, 20)
               coincident←v12808 = (*  (ptr) l←v24524 );
SOURCE(15063, 6)
               goto lab←L100026;
               };
            };
         l←v24524 = (* (( (ptr) l←v24524)+1) );
         goto lab←L100034;
         lab←L100031: ;
         };
      lab←L100029: ;
      if ((i←v24480 >= 2)) {
         goto lab←L100027;
         };
      i←v24480 = (i←v24480 + 1);
      goto lab←L100030;
      lab←L100027: ;
      };
SOURCE(15089, 16)
   coincident←v12808 = 0;
   /* removed tail goto */ 
   lab←L100026: ;
   (*  (ptr) formal←c0371 ) = coincident←v12808;
   (* (( (ptr) formal←c0371)+1) ) = cosine←v12836;
   (* (( (ptr) formal←c0371)+2) ) = sine←v12864;
   (* (( (ptr) formal←c0371)+3) ) = distance←v12892;
   return;
   }

static word JointAddCircle←P2220(radius←v12952, point←v12980, alignBag←v13008)
   word radius←v12952;
   W2 point←v12980;
   word alignBag←v13008;
   {
   register ptr gf←c79748 =  (ptr) &globalframe;
   word feature←v13052;
   word circle←v24652 = 0;
   word coincident←v24680 = 0;
   /* JointAddCircle: */ 
SOURCE(15112, 717)
SOURCE(15112, 717)
   feature←v13052 = 0;
SOURCE(15265, 61)
   coincident←v24680 = (word) SameCircle←P2280(point←v12980, radius←v12952, (* (( (ptr) alignBag←v13008)+2) ));
SOURCE(15328, 501)
   if ((coincident←v24680 != 0)) {
SOURCE(15353, 154)
      {
         word alignmentCircle←v24724;
SOURCE(15355, 59)
         alignmentCircle←v24724 = XR←Narrow((* (( (ptr) coincident←v24680)+1) ), (* (( (ptr) gf←c79748)+26) ));
SOURCE(15416, 74)
         {
            word var←c73252;
            var←c73252 = XR←NewObject(12, (* (( (ptr) gf←c79748)+25) ));
            (*  (W2Pt) var←c73252 ) = point←v12980;
            (* (( (ptr) var←c73252)+2) ) = (* (( (ptr) alignmentCircle←v24724)+1) );
            (* (( (ptr) alignmentCircle←v24724)+1) ) = var←c73252;
            };
SOURCE(15492, 13)
         feature←v13052 = 0;
         };
      }
   else {
SOURCE(15514, 317)
      {
         word alignmentCircle←v24768 = 0;
SOURCE(15551, 58)
         {
            word pd147;
            pd147 = (* (( (ptr) (* (( (ptr) gf←c79748)+237)/* var←c73284 */  ))+7) );
            circle←v24652 = (word) ( *( (fPt) ((*  (ptr) pd147 ))))(point←v12980, radius←v12952, pd147);
            };
SOURCE(15611, 93)
         {
            word var←c73316;
            word var←c73380;
            {
               word var←c73348;
               var←c73348 = XR←NewObject(12, (* (( (ptr) gf←c79748)+25) ));
               (*  (W2Pt) var←c73348 ) = point←v12980;
               var←c73316 = var←c73348;
               };
            var←c73380 = XR←NewObject(8, (* (( (ptr) gf←c79748)+26) ));
            (*  (ptr) var←c73380 ) = circle←v24652;
            (* (( (ptr) var←c73380)+1) ) = var←c73316;
            alignmentCircle←v24768 = var←c73380;
            };
SOURCE(15706, 29)
         feature←v13052 = XR←NewObject(8, (* (( (ptr) gf←c79748)+16) ));
SOURCE(15737, 26)
         (*  (ptr) feature←v13052 ) = 5;
SOURCE(15765, 31)
         (* (( (ptr) feature←v13052)+1) ) = alignmentCircle←v24768;
SOURCE(15798, 31)
         (void) AddAlignment←P1740(feature←v13052, alignBag←v13008);
         };
      };
SOURCE(15112, 717)
   return(feature←v13052);
   }

static word SameCircle←P2280(point←v13112, radius←v13140, list←v13168)
   W2 point←v13112;
   word radius←v13140;
   word list←v13168;
   {
   register ptr gf←c79780 =  (ptr) &globalframe;
   word coincident←v13296;
   word circle←v24812 = 0;
   /* SameCircle: */ 
SOURCE(15838, 445)
SOURCE(15838, 445)
   coincident←v13296 = 0;
SOURCE(15965, 296)
   {
      register word l←v24856;
      l←v24856 = list←v13168;
      lab←L100038: ;
      if ((l←v24856 != 0)) {
         }
      else {
         goto lab←L100035;
         };
SOURCE(16024, 54)
      circle←v24812 = (*  (ptr) XR←Narrow((* (( (ptr) (*  (ptr) l←v24856 ))+1) ), (* (( (ptr) gf←c79780)+26) )) );
SOURCE(16080, 181)
      {
         word tc148;
         word tc149;
         word pd150;
         word pd151;
         word pd152;
         pd150 = (* (( (ptr) (* (( (ptr) gf←c79780)+238)/* var←c73444 */  ))+39) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd150 ))))((*  (ptr) circle←v24812 ), point←v13112.f0, 116, pd150))) {
            pd151 = (* (( (ptr) (* (( (ptr) gf←c79780)+238)/* var←c73444 */  ))+39) );
            tc149 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd151 ))))((* (( (ptr) circle←v24812)+1) ), point←v13112.f1, 116, pd151)
            );
            }
         else {
            tc149 =  (word) 0;
            };
         if (tc149) {
            pd152 = (* (( (ptr) (* (( (ptr) gf←c79780)+238)/* var←c73444 */  ))+39) );
            tc148 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd152 ))))((* (( (ptr) circle←v24812)+2) ), radius←v13140, 116, pd152)
            );
            }
         else {
            tc148 =  (word) 0;
            };
         if (tc148) {
SOURCE(16246, 15)
            return((*  (ptr) l←v24856 ));
            };
         };
      l←v24856 = (* (( (ptr) l←v24856)+1) );
      goto lab←L100038;
      lab←L100035: ;
      };
SOURCE(16272, 11)
   return(0);
   }

static void DistanceFromOrigin←P2340(formal←c0395, pt1←v13356, degrees←v13384)
   word formal←c0395;
   W2 pt1←v13356;
   word degrees←v13384;
   {
   register ptr gf←c79812 =  (ptr) &globalframe;
   word distance←v13428;
   word c←v13456;
   word s←v13484;
   /* DistanceFromOrigin: */ 
SOURCE(16289, 174)
SOURCE(16377, 27)
   {
      word pd153;
      pd153 = (* (( (ptr) (* (( (ptr) gf←c79812)+238)/* var←c73444 */  ))+13) );
      c←v13456 = (word) ( *( (fPt) ((*  (ptr) pd153 ))))(degrees←v13384, pd153);
      };
SOURCE(16406, 27)
   {
      word pd154;
      pd154 = (* (( (ptr) (* (( (ptr) gf←c79812)+238)/* var←c73444 */  ))+11) );
      s←v13484 = (word) ( *( (fPt) ((*  (ptr) pd154 ))))(degrees←v13384, pd154);
      };
SOURCE(16435, 28)
   {
      word x155;
      word x156;
      word x157;
      word x158;
      *(float*)&distance←v13428 = ((
         x155 = pt1←v13356.f1,  *(float*)&x155
         ) * (
         x156 = c←v13456,  *(float*)&x156
         )) - ((
         x157 = pt1←v13356.f0,  *(float*)&x157
         ) * (
         x158 = s←v13484,  *(float*)&x158
         ));
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0395 ) = distance←v13428;
   (* (( (ptr) formal←c0395)+1) ) = c←v13456;
   (* (( (ptr) formal←c0395)+2) ) = s←v13484;
   return;
   }

static void SegmentAddTwoAngleLines←P2400(formal←c0411, degrees←v13544, segNum←v13572, lo←v13600, hi←v13628, alignBag←v13656)
   word formal←c0411;
   word degrees←v13544;
   word segNum←v13572;
   W2 lo←v13600;
   W2 hi←v13628;
   word alignBag←v13656;
   {
   register ptr gf←c79844 =  (ptr) &globalframe;
   word line1←v13700;
   word line2←v13728;
   word loLine←v24984;
   word hiLine←v25012;
   /* SegmentAddTwoAngleLines: */ 
SOURCE(16469, 747)
SOURCE(16469, 747)
   line1←v13700 = 0;
SOURCE(16469, 747)
   line2←v13728 = 0;
SOURCE(16610, 126)
   {
      word var←c73476;
      {
         W2 var←c73508;
         word var←c01013;
         {
            word x159;
            word x160;
            *(float*)&var←c73508.f0 = (
               x159 = hi←v13628.f0,  *(float*)&x159
               ) - (
               x160 = lo←v13600.f0,  *(float*)&x160
               );
            };
         {
            word x161;
            word x162;
            *(float*)&var←c73508.f1 = (
               x161 = hi←v13628.f1,  *(float*)&x161
               ) - (
               x162 = lo←v13600.f1,  *(float*)&x162
               );
            };
         {
            word pd163;
            pd163 = (* (( (ptr) (* (( (ptr) gf←c79844)+239)/* var←c73540 */  ))+6) );
            var←c01013 = (word) ( *( (fPt) ((*  (ptr) pd163 ))))(var←c73508, pd163);
            };
         {
            word x164;
            word x165;
            *(float*)&var←c73476 = (
               x164 = var←c01013,  *(float*)&x164
               ) + (
               x165 = degrees←v13544,  *(float*)&x165
               );
            };
         };
      {
         word pd166;
         pd166 = (* (( (ptr) (* (( (ptr) gf←c79844)+235)/* var←c72836 */  ))+11) );
         loLine←v24984 = (word) ( *( (fPt) ((*  (ptr) pd166 ))))(lo←v13600, var←c73476, pd166);
         };
      };
SOURCE(16738, 126)
   {
      word var←c73572;
      {
         W2 var←c73604;
         word var←c01014;
         {
            word x167;
            word x168;
            *(float*)&var←c73604.f0 = (
               x167 = lo←v13600.f0,  *(float*)&x167
               ) - (
               x168 = hi←v13628.f0,  *(float*)&x168
               );
            };
         {
            word x169;
            word x170;
            *(float*)&var←c73604.f1 = (
               x169 = lo←v13600.f1,  *(float*)&x169
               ) - (
               x170 = hi←v13628.f1,  *(float*)&x170
               );
            };
         {
            word pd171;
            pd171 = (* (( (ptr) (* (( (ptr) gf←c79844)+239)/* var←c73540 */  ))+6) );
            var←c01014 = (word) ( *( (fPt) ((*  (ptr) pd171 ))))(var←c73604, pd171);
            };
         {
            word x172;
            word x173;
            *(float*)&var←c73572 = (
               x172 = var←c01014,  *(float*)&x172
               ) + (
               x173 = degrees←v13544,  *(float*)&x173
               );
            };
         };
      {
         word pd174;
         pd174 = (* (( (ptr) (* (( (ptr) gf←c79844)+235)/* var←c72836 */  ))+11) );
         hiLine←v25012 = (word) ( *( (fPt) ((*  (ptr) pd174 ))))(hi←v13628, var←c73572, pd174);
         };
      };
SOURCE(16866, 27)
   line1←v13700 = XR←NewObject(8, (* (( (ptr) gf←c79844)+16) ));
SOURCE(16895, 22)
   (*  (ptr) line1←v13700 ) = 3;
SOURCE(16919, 90)
   {
      word var←c73668;
      var←c73668 = XR←NewObject(12, (* (( (ptr) gf←c79844)+21) ));
      (*  (ptr) var←c73668 ) = loLine←v24984;
      (* (( (ptr) var←c73668)+1) ) = degrees←v13544;
      (* (( (ptr) line1←v13700)+1) ) = var←c73668;
      };
SOURCE(17011, 29)
   (void) AddAlignment←P1740(line1←v13700, alignBag←v13656);
SOURCE(17042, 27)
   line2←v13728 = XR←NewObject(8, (* (( (ptr) gf←c79844)+16) ));
SOURCE(17071, 22)
   (*  (ptr) line2←v13728 ) = 3;
SOURCE(17095, 90)
   {
      word var←c73732;
      var←c73732 = XR←NewObject(12, (* (( (ptr) gf←c79844)+21) ));
      (*  (ptr) var←c73732 ) = hiLine←v25012;
      (* (( (ptr) var←c73732)+1) ) = degrees←v13544;
      (* (( (ptr) line2←v13728)+1) ) = var←c73732;
      };
SOURCE(17187, 29)
   (void) AddAlignment←P1740(line2←v13728, alignBag←v13656);
   /* removed tail goto */ 
   (*  (ptr) formal←c0411 ) = line1←v13700;
   (* (( (ptr) formal←c0411)+1) ) = line2←v13728;
   return;
   }

static void SegmentAddDistanceLines←P2460(formal←c0422, distance←v13788, segNum←v13816, lo←v13844, hi←v13872, alignBag←v13900)
   word formal←c0422;
   word distance←v13788;
   word segNum←v13816;
   W2 lo←v13844;
   W2 hi←v13872;
   word alignBag←v13900;
   {
   register ptr gf←c79876 =  (ptr) &globalframe;
   word line1←v13944;
   word line2←v13972;
   word line←v25056 = 0;
   word leftLine←v25084 = 0;
   word rightLine←v25112 = 0;
   /* SegmentAddDistanceLines: */ 
SOURCE(17223, 591)
SOURCE(17223, 591)
   line1←v13944 = 0;
SOURCE(17223, 591)
   line2←v13972 = 0;
SOURCE(17398, 37)
   {
      word pd175;
      pd175 = (* (( (ptr) (* (( (ptr) gf←c79876)+235)/* var←c72836 */  ))+8) );
      line←v25056 = (word) ( *( (fPt) ((*  (ptr) pd175 ))))(lo←v13844, hi←v13872, pd175);
      };
SOURCE(17438, 49)
   {
      word pd176;
      pd176 = (* (( (ptr) (* (( (ptr) gf←c79876)+235)/* var←c72836 */  ))+13) );
      leftLine←v25084 = (word) ( *( (fPt) ((*  (ptr) pd176 ))))(line←v25056, distance←v13788, pd176);
      };
SOURCE(17489, 27)
   line1←v13944 = XR←NewObject(8, (* (( (ptr) gf←c79876)+16) ));
SOURCE(17518, 25)
   (*  (ptr) line1←v13944 ) = 1;
SOURCE(17545, 22)
   (* (( (ptr) line1←v13944)+1) ) = leftLine←v25084;
SOURCE(17569, 29)
   (void) AddAlignment←P1740(line1←v13944, alignBag←v13900);
SOURCE(17601, 213)
   {
      float tf177;
      word x178;
      word x179;
      if ((FABS((
            x178 = distance←v13788,  *(float*)&x178
            ), tf177) > (
         x179 = (*  (ptr) &fc115 ),  *(float*)&x179
         ))) {
SOURCE(17631, 51)
         {
            word pd180;
            pd180 = (* (( (ptr) (* (( (ptr) gf←c79876)+235)/* var←c72836 */  ))+14) );
            rightLine←v25112 = (word) ( *( (fPt) ((*  (ptr) pd180 ))))(line←v25056, distance←v13788, pd180);
            };
SOURCE(17684, 27)
         line2←v13972 = XR←NewObject(8, (* (( (ptr) gf←c79876)+16) ));
SOURCE(17713, 25)
         (*  (ptr) line2←v13972 ) = 1;
SOURCE(17740, 23)
         (* (( (ptr) line2←v13972)+1) ) = rightLine←v25112;
SOURCE(17765, 29)
         (void) AddAlignment←P1740(line2←v13972, alignBag←v13900);
         }
      else {
SOURCE(17803, 11)
         line2←v13972 = 0;
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0422 ) = line1←v13944;
   (* (( (ptr) formal←c0422)+1) ) = line2←v13972;
   return;
   }

static void SetStaticBags←P2520(ggData←v14032)
   word ggData←v14032;
   {
   register ptr gf←c79908 =  (ptr) &globalframe;
   word triggerBag←v25156;
   word alignBag←v25184;
   word sceneBag←v25212;
   word scene←v25240;
   word anchor←v25268;
   word heuristics←v25296;
   word filters←v25324;
   word hideAlignments←v25352;
   /* SetStaticBags: */ 
SOURCE(17819, 872)
SOURCE(17868, 50)
   triggerBag←v25156 = (* (( (ptr) (* (( (ptr) ggData←v14032)+18) ))+1) );
SOURCE(17920, 44)
   alignBag←v25184 = (* (( (ptr) (* (( (ptr) ggData←v14032)+18) ))+4) );
SOURCE(17966, 46)
   sceneBag←v25212 = (* (( (ptr) (* (( (ptr) ggData←v14032)+18) ))+8) );
SOURCE(18014, 27)
   scene←v25240 = (* (( (ptr) ggData←v14032)+11) );
SOURCE(18043, 29)
   anchor←v25268 = (* (( (ptr) ggData←v14032)+14) );
SOURCE(18074, 48)
   {
      word pd181;
      pd181 = (* (( (ptr) (* (( (ptr) gf←c79908)+240)/* var←c73828 */  ))+96) );
      heuristics←v25296 = (word) ( *( (fPt) ((*  (ptr) pd181 ))))(ggData←v14032, pd181);
      };
SOURCE(18124, 33)
   filters←v25324 = (* (( (ptr) ggData←v14032)+18) );
SOURCE(18159, 60)
   {
      word pd182;
      pd182 = (* (( (ptr) (* (( (ptr) gf←c79908)+240)/* var←c73828 */  ))+58) );
      hideAlignments←v25352 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd182 ))))(ggData←v14032, pd182));
      };
SOURCE(18222, 469)
   if ((0 != hideAlignments←v25352)) {
SOURCE(18247, 23)
      (void) FlushAlignBag←P1440(alignBag←v25184);
SOURCE(18272, 25)
      (void) FlushTriggerBag←P120(sceneBag←v25212);
SOURCE(18299, 35)
      (void) FillStaticSceneBag←P1020(scene←v25240, sceneBag←v25212);
      }
   else {
SOURCE(18345, 45)
      {
         word pd183;
         pd183 = (* (( (ptr) (* (( (ptr) gf←c79908)+241)/* var←c73860 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd183 ))))((* (( (ptr) gf←c79908)+39) ), (* (( (ptr) gf←c79908)+37) ), pd183);
         };
SOURCE(18392, 27)
      (void) FlushTriggerBag←P120(triggerBag←v25156);
SOURCE(18421, 59)
      (void) FillStaticTriggerBag←P900(anchor←v25268, scene←v25240, heuristics←v25296, triggerBag←v25156);
SOURCE(18482, 25)
      (void) FlushTriggerBag←P120(sceneBag←v25212);
SOURCE(18509, 35)
      (void) FillStaticSceneBag←P1020(scene←v25240, sceneBag←v25212);
SOURCE(18546, 23)
      (void) FlushAlignBag←P1440(alignBag←v25184);
SOURCE(18571, 74)
      (void) FillStaticAlignBag←P1620(triggerBag←v25156, sceneBag←v25212, ggData←v14032, hideAlignments←v25352, alignBag←v25184)
      ;
SOURCE(18647, 44)
      {
         word pd184;
         pd184 = (* (( (ptr) (* (( (ptr) gf←c79908)+241)/* var←c73860 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd184 ))))((* (( (ptr) gf←c79908)+39) ), (* (( (ptr) gf←c79908)+37) ), pd184);
         };
      };
   }

static void SetStaticTriggerAndAlignBags←P2580(ggData←v14092)
   word ggData←v14092;
   {
   register ptr gf←c79940 =  (ptr) &globalframe;
   word triggerBag←v25396;
   word alignBag←v25424;
   word scene←v25452;
   word anchor←v25480;
   word heuristics←v25508;
   word filters←v25536;
   word hideAlignments←v25564;
   /* SetStaticTriggerAndAlignBags: */ 
SOURCE(18700, 664)
SOURCE(18763, 50)
   triggerBag←v25396 = (* (( (ptr) (* (( (ptr) ggData←v14092)+18) ))+1) );
SOURCE(18815, 44)
   alignBag←v25424 = (* (( (ptr) (* (( (ptr) ggData←v14092)+18) ))+4) );
SOURCE(18861, 27)
   scene←v25452 = (* (( (ptr) ggData←v14092)+11) );
SOURCE(18890, 29)
   anchor←v25480 = (* (( (ptr) ggData←v14092)+14) );
SOURCE(18921, 48)
   {
      word pd185;
      pd185 = (* (( (ptr) (* (( (ptr) gf←c79940)+240)/* var←c73828 */  ))+96) );
      heuristics←v25508 = (word) ( *( (fPt) ((*  (ptr) pd185 ))))(ggData←v14092, pd185);
      };
SOURCE(18971, 33)
   filters←v25536 = (* (( (ptr) ggData←v14092)+18) );
SOURCE(19006, 60)
   {
      word pd186;
      pd186 = (* (( (ptr) (* (( (ptr) gf←c79940)+240)/* var←c73828 */  ))+58) );
      hideAlignments←v25564 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd186 ))))(ggData←v14092, pd186));
      };
SOURCE(19068, 296)
   if ((0 != hideAlignments←v25564)) {
SOURCE(19093, 23)
      (void) FlushAlignBag←P1440(alignBag←v25424);
      }
   else {
SOURCE(19125, 241)
      {
         word sceneBag←v25608;
SOURCE(19127, 46)
         sceneBag←v25608 = (* (( (ptr) (* (( (ptr) ggData←v14092)+18) ))+8) );
SOURCE(19175, 27)
         (void) FlushTriggerBag←P120(triggerBag←v25396);
SOURCE(19204, 59)
         (void) FillStaticTriggerBag←P900(anchor←v25480, scene←v25452, heuristics←v25508, triggerBag←v25396);
SOURCE(19265, 23)
         (void) FlushAlignBag←P1440(alignBag←v25424);
SOURCE(19290, 74)
         (void) FillStaticAlignBag←P1620(triggerBag←v25396, sceneBag←v25608, ggData←v14092, hideAlignments←v25564, alignBag←v25424)
         ;
         };
      };
   }

static void SetDynamicBags←P2640(ggData←v14152, action←v14180)
   word ggData←v14152;
   word action←v14180;
   {
   register ptr gf←c79972 =  (ptr) &globalframe;
   word triggerBag←v25652;
   word alignBag←v25680;
   word sceneBag←v25708;
   word scene←v25736;
   word anchor←v25764;
   word heuristics←v25792;
   word filters←v25820;
   word hideAlignments←v25848;
   /* SetDynamicBags: */ 
SOURCE(19373, 1118)
SOURCE(19437, 50)
   triggerBag←v25652 = (* (( (ptr) (* (( (ptr) ggData←v14152)+18) ))+1) );
SOURCE(19489, 44)
   alignBag←v25680 = (* (( (ptr) (* (( (ptr) ggData←v14152)+18) ))+4) );
SOURCE(19535, 46)
   sceneBag←v25708 = (* (( (ptr) (* (( (ptr) ggData←v14152)+18) ))+8) );
SOURCE(19583, 27)
   scene←v25736 = (* (( (ptr) ggData←v14152)+11) );
SOURCE(19612, 29)
   anchor←v25764 = (* (( (ptr) ggData←v14152)+14) );
SOURCE(19643, 48)
   {
      word pd187;
      pd187 = (* (( (ptr) (* (( (ptr) gf←c79972)+240)/* var←c73828 */  ))+96) );
      heuristics←v25792 = (word) ( *( (fPt) ((*  (ptr) pd187 ))))(ggData←v14152, pd187);
      };
SOURCE(19693, 33)
   filters←v25820 = (* (( (ptr) ggData←v14152)+18) );
SOURCE(19728, 60)
   {
      word pd188;
      pd188 = (* (( (ptr) (* (( (ptr) gf←c79972)+240)/* var←c73828 */  ))+58) );
      hideAlignments←v25848 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd188 ))))(ggData←v14152, pd188));
      };
SOURCE(19791, 700)
   if ((0 != hideAlignments←v25848)) {
SOURCE(19816, 23)
      (void) FlushAlignBag←P1440(alignBag←v25680);
SOURCE(19841, 25)
      (void) FlushTriggerBag←P120(sceneBag←v25708);
SOURCE(19868, 27)
      (void) FlushTriggerBag←P120(triggerBag←v25652);
SOURCE(19926, 89)
      (void) FillDynamicSceneBag←P1080(scene←v25736, sceneBag←v25708, (* (( (ptr) (* (( (ptr) ggData←v14152)+16) ))+17) ), (*  (W5Pt) (
            ( (ptr) (* (( (ptr) ggData←v14152)+16) ))+18) ));
      }
   else {
SOURCE(20026, 46)
      {
         word pd189;
         pd189 = (* (( (ptr) (* (( (ptr) gf←c79972)+241)/* var←c73860 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd189 ))))((* (( (ptr) gf←c79972)+36) ), (* (( (ptr) gf←c79972)+37) ), pd189);
         };
SOURCE(20074, 27)
      (void) FlushTriggerBag←P120(triggerBag←v25652);
SOURCE(20103, 113)
      (void) FillDynamicTriggerBag←P960(anchor←v25764, scene←v25736, heuristics←v25792, triggerBag←v25652, (* (( (ptr) (* (( (ptr) ggData←v14152)+16)
             ))+17) ), (*  (W5Pt) (( (ptr) (* (( (ptr) ggData←v14152)+16) ))+18) ));
SOURCE(20218, 25)
      (void) FlushTriggerBag←P120(sceneBag←v25708);
SOURCE(20245, 89)
      (void) FillDynamicSceneBag←P1080(scene←v25736, sceneBag←v25708, (* (( (ptr) (* (( (ptr) ggData←v14152)+16) ))+17) ), (*  (W5Pt) (
            ( (ptr) (* (( (ptr) ggData←v14152)+16) ))+18) ));
SOURCE(20336, 23)
      (void) FlushAlignBag←P1440(alignBag←v25680);
SOURCE(20361, 83)
      (void) FillDynamicAlignBag←P1680(triggerBag←v25652, sceneBag←v25708, ggData←v14152, hideAlignments←v25848, action←v14180, alignBag←v25680)
      ;
SOURCE(20446, 45)
      {
         word pd190;
         pd190 = (* (( (ptr) (* (( (ptr) gf←c79972)+241)/* var←c73860 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd190 ))))((* (( (ptr) gf←c79972)+36) ), (* (( (ptr) gf←c79972)+37) ), pd190);
         };
      };
   }

static void StaticToDynamicBags←P2700(ggData←v14240, saveForeground←v14268)
   word ggData←v14240;
   word saveForeground←v14268;
   {
   register ptr gf←c80004 =  (ptr) &globalframe;
   word scene←v25892;
   W5 bd←v25920;
   word ec←v25948;
   word triggerBag←v25976;
   word sceneBag←v26004;
   word alignBag←v26032;
   word heuristics←v26060;
   word hideAlignments←v26088;
   word hotMoving←v26116;
   /* StaticToDynamicBags: */ 
SOURCE(20501, 2503)
SOURCE(20584, 27)
   scene←v25892 = (* (( (ptr) ggData←v14240)+11) );
SOURCE(20613, 45)
   bd←v25920 = (*  (W5Pt) (( (ptr) (* (( (ptr) ggData←v14240)+16) ))+18) );
SOURCE(20660, 49)
   ec←v25948 = (* (( (ptr) (* (( (ptr) ggData←v14240)+16) ))+17) );
SOURCE(20711, 50)
   triggerBag←v25976 = (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+1) );
SOURCE(20763, 46)
   sceneBag←v26004 = (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+8) );
SOURCE(20811, 44)
   alignBag←v26032 = (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+4) );
SOURCE(20857, 48)
   {
      word pd191;
      pd191 = (* (( (ptr) (* (( (ptr) gf←c80004)+240)/* var←c73828 */  ))+96) );
      heuristics←v26060 = (word) ( *( (fPt) ((*  (ptr) pd191 ))))(ggData←v14240, pd191);
      };
SOURCE(20907, 60)
   {
      word pd192;
      pd192 = (* (( (ptr) (* (( (ptr) gf←c80004)+240)/* var←c73828 */  ))+58) );
      hideAlignments←v26088 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd192 ))))(ggData←v14240, pd192));
      };
SOURCE(20969, 42)
   hotMoving←v26116 = (word) SomeSelectedIsHot←P4440(scene←v25892);
SOURCE(21014, 1990)
   if ((0 != (* (( (ptr) (* (( (ptr) ggData←v14240)+15) ))+3) ))) {
SOURCE(21093, 23)
      (void) FlushAlignBag←P1440(alignBag←v26032);
SOURCE(21118, 66)
      (void) CopyTriggerBag←P300((* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+2) ), triggerBag←v25976);
SOURCE(21186, 62)
      (void) CopyTriggerBag←P300((* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+9) ), sceneBag←v26004);
SOURCE(21250, 42)
      {
         word var←c73892;
         var←c73892 = (word) RemoveMoving←P3420(scene←v25892, sceneBag←v26004, ec←v25948, bd←v25920);
         };
      }
   else {
SOURCE(21301, 1705)
      {
         word autoAdded←v26160 = 0;
         word autoTriggers←v26188 = 0;
         word filterLists←v26216;
         word someAlignmentsActive←v26244;
SOURCE(21373, 57)
         {
            word pd193;
            pd193 = (* (( (ptr) (* (( (ptr) gf←c80004)+240)/* var←c73828 */  ))+22) );
            filterLists←v26216 = (word) ( *( (fPt) ((*  (ptr) pd193 ))))(ggData←v14240, pd193);
            };
SOURCE(21432, 62)
         someAlignmentsActive←v26244 =  (unsigned) (0 == (word) EmptyFilterLists←P3480(filterLists←v26216));
SOURCE(21496, 51)
         {
            word pd194;
            pd194 = (* (( (ptr) (* (( (ptr) gf←c80004)+241)/* var←c73860 */  ))+12) );
            (void) ( *( (fPt) ((*  (ptr) pd194 ))))((* (( (ptr) gf←c80004)+34) ), (* (( (ptr) gf←c80004)+37) ), pd194);
            };
SOURCE(21550, 318)
         if ((0 != someAlignmentsActive←v26244)) {
SOURCE(21581, 66)
            (void) CopyTriggerBag←P300((* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+2) ), triggerBag←v25976);
SOURCE(21649, 44)
            {
               word var←c73924;
               var←c73924 = (word) RemoveMoving←P3420(scene←v25892, triggerBag←v25976, ec←v25948, bd←v25920);
               };
SOURCE(21695, 87)
            {
               W2 var←c73956;
               (void) AddHeuristics←P3240((word) &var←c73956, scene←v25892, heuristics←v26060, (* (( (ptr) gf←c80004)+41) ), triggerBag←v25976, ec←v25948
                  , bd←v25920);
               autoTriggers←v26188 = var←c73956.f1;
               autoAdded←v26160 = var←c73956.f0;
               };
SOURCE(21784, 37)
            (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+3) ) = 1;
            }
         else {
SOURCE(21830, 38)
            (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+3) ) = 0;
            };
SOURCE(21870, 62)
         (void) CopyTriggerBag←P300((* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+9) ), sceneBag←v26004);
SOURCE(21934, 42)
         {
            word var←c73988;
            var←c73988 = (word) RemoveMoving←P3420(scene←v25892, sceneBag←v26004, ec←v25948, bd←v25920);
            };
SOURCE(21978, 970)
         if (((0 != autoAdded←v26160) || (0 != hotMoving←v26116))) {
SOURCE(22011, 44)
            (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+5) ) = 0;
SOURCE(22057, 727)
            if ((0 != hotMoving←v26116)) {
SOURCE(22092, 36)
               (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+7) ) = 0;
SOURCE(22130, 23)
               (void) FlushAlignBag←P1440(alignBag←v26032);
SOURCE(22155, 60)
               (void) BuiltInFilters←P3600(triggerBag←v25976, ggData←v14240, hideAlignments←v26088, alignBag←v26032);
SOURCE(22217, 40)
               {
                  word pd195;
                  pd195 = (* (( (ptr) (* (( (ptr) gf←c80004)+242)/* var←c74020 */  ))+25) );
                  (void) ( *( (fPt) ((*  (ptr) pd195 ))))(ggData←v14240, 1, pd195);
                  };
               }
            else {
SOURCE(22266, 520)
               {
                  word alignObjects←v26372 = 0;
SOURCE(22330, 35)
                  (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+7) ) = 1;
SOURCE(22367, 60)
                  (void) CopyAlignBag←P1200((* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+6) ), alignBag←v26032);
SOURCE(22429, 210)
                  {
                     register word list←v26500;
                     list←v26500 = autoTriggers←v26188;
                     lab←L100045: ;
                     if ((list←v26500 != 0)) {
                        }
                     else {
                        goto lab←L100042;
                        };
SOURCE(22509, 130)
                     {
                        word var←c74052;
                        var←c74052 = (word) IncrementalFilterSlice←P3780((*  (ptr) list←v26500 ), filterLists←v26216, hideAlignments←v26088, alignBag←v26032)
                        ;
                        {
                           word pd196;
                           pd196 = (* (( (ptr) (* (( (ptr) gf←c80004)+230)/* var←c71428 */  ))+9) );
                           alignObjects←v26372 = (word) ( *( (fPt) ((*  (ptr) pd196 ))))(var←c74052, alignObjects←v26372, pd196);
                           };
                        };
                     list←v26500 = (* (( (ptr) list←v26500)+1) );
                     goto lab←L100045;
                     lab←L100042: ;
                     };
SOURCE(22650, 80)
                  if ((0 != saveForeground←v14268)) {
SOURCE(22675, 32)
                     {
                        word pd197;
                        pd197 = (* (( (ptr) (* (( (ptr) gf←c80004)+242)/* var←c74020 */  ))+27) );
                        (void) ( *( (fPt) ((*  (ptr) pd197 ))))(ggData←v14240, pd197);
                        };
SOURCE(22709, 21)
                     (void) SaveLineTable←P4860(ggData←v14240);
                     };
SOURCE(22735, 49)
                  {
                     word pd198;
                     pd198 = (* (( (ptr) (* (( (ptr) gf←c80004)+242)/* var←c74020 */  ))+24) );
                     (void) ( *( (fPt) ((*  (ptr) pd198 ))))(ggData←v14240, alignObjects←v26372, pd198);
                     };
                  };
               };
            }
         else {
SOURCE(22867, 43)
            (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+5) ) = 1;
SOURCE(22912, 36)
            (* (( (ptr) (* (( (ptr) ggData←v14240)+18) ))+7) ) = 0;
            };
SOURCE(22954, 50)
         {
            word pd199;
            pd199 = (* (( (ptr) (* (( (ptr) gf←c80004)+241)/* var←c73860 */  ))+14) );
            (void) ( *( (fPt) ((*  (ptr) pd199 ))))((* (( (ptr) gf←c80004)+34) ), (* (( (ptr) gf←c80004)+37) ), pd199);
            };
         };
      };
   }

static void DynamicToStaticBags←P2760(ggData←v14328, restoreForeground←v14356)
   word ggData←v14328;
   word restoreForeground←v14356;
   {
   register ptr gf←c80036 =  (ptr) &globalframe;
   word alignBag←v26628;
   word filters←v26656;
   word hideAlignments←v26684;
   /* DynamicToStaticBags: */ 
SOURCE(23014, 905)
SOURCE(23100, 44)
   alignBag←v26628 = (* (( (ptr) (* (( (ptr) ggData←v14328)+18) ))+4) );
SOURCE(23146, 33)
   filters←v26656 = (* (( (ptr) ggData←v14328)+18) );
SOURCE(23181, 60)
   {
      word pd200;
      pd200 = (* (( (ptr) (* (( (ptr) gf←c80036)+240)/* var←c73828 */  ))+58) );
      hideAlignments←v26684 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd200 ))))(ggData←v14328, pd200));
      };
SOURCE(23244, 51)
   {
      word pd201;
      pd201 = (* (( (ptr) (* (( (ptr) gf←c80036)+241)/* var←c73860 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd201 ))))((* (( (ptr) gf←c80036)+33) ), (* (( (ptr) gf←c80036)+37) ), pd201);
      };
SOURCE(23297, 71)
   if ((0 != (* (( (ptr) (* (( (ptr) ggData←v14328)+18) ))+3) ))) {
SOURCE(23336, 32)
      (void) SwapOldAndNewTriggerBags←P2880(ggData←v14328);
      };
SOURCE(23370, 30)
   (void) SwapOldAndNewSceneBags←P2940(ggData←v14328);
SOURCE(23402, 459)
   if ((0 != (* (( (ptr) (* (( (ptr) ggData←v14328)+18) ))+5) ))) {
      }
   else {
SOURCE(23477, 384)
      if ((0 != (* (( (ptr) (* (( (ptr) ggData←v14328)+18) ))+7) ))) {
SOURCE(23538, 30)
         (void) SwapOldAndNewAlignBags←P2820(ggData←v14328);
SOURCE(23570, 89)
         if ((0 != restoreForeground←v14356)) {
SOURCE(23598, 35)
            {
               word pd202;
               pd202 = (* (( (ptr) (* (( (ptr) gf←c80036)+242)/* var←c74020 */  ))+28) );
               (void) ( *( (fPt) ((*  (ptr) pd202 ))))(ggData←v14328, pd202);
               };
SOURCE(23635, 24)
            (void) RestoreLineTable←P4920(ggData←v14328);
            };
         }
      else {
SOURCE(23719, 23)
         (void) FlushAlignBag←P1440(alignBag←v26628);
SOURCE(23744, 75)
         (void) BuiltInFilters←P3600((* (( (ptr) (* (( (ptr) ggData←v14328)+18) ))+1) ), ggData←v14328, hideAlignments←v26684, alignBag←v26628)
         ;
SOURCE(23821, 40)
         {
            word pd203;
            pd203 = (* (( (ptr) (* (( (ptr) gf←c80036)+242)/* var←c74020 */  ))+25) );
            (void) ( *( (fPt) ((*  (ptr) pd203 ))))(ggData←v14328, 1, pd203);
            };
         };
      };
SOURCE(23869, 50)
   {
      word pd204;
      pd204 = (* (( (ptr) (* (( (ptr) gf←c80036)+241)/* var←c73860 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd204 ))))((* (( (ptr) gf←c80036)+33) ), (* (( (ptr) gf←c80036)+37) ), pd204);
      };
   }

static void SwapOldAndNewAlignBags←P2820(ggData←v14416)
   word ggData←v14416;
   {
   word tempBag←v26728 = 0;
   /* SwapOldAndNewAlignBags: */ 
SOURCE(23925, 194)
SOURCE(23994, 33)
   tempBag←v26728 = (* (( (ptr) (* (( (ptr) ggData←v14416)+18) ))+4) );
SOURCE(24029, 52)
   (* (( (ptr) (* (( (ptr) ggData←v14416)+18) ))+4) ) = (* (( (ptr) (* (( (ptr) ggData←v14416)+18) ))+6) );
SOURCE(24083, 36)
   (* (( (ptr) (* (( (ptr) ggData←v14416)+18) ))+6) ) = tempBag←v26728;
   }

static void SwapOldAndNewTriggerBags←P2880(ggData←v14476)
   word ggData←v14476;
   {
   word tempBag←v26772 = 0;
   /* SwapOldAndNewTriggerBags: */ 
SOURCE(24125, 206)
SOURCE(24198, 35)
   tempBag←v26772 = (* (( (ptr) (* (( (ptr) ggData←v14476)+18) ))+1) );
SOURCE(24235, 56)
   (* (( (ptr) (* (( (ptr) ggData←v14476)+18) ))+1) ) = (* (( (ptr) (* (( (ptr) ggData←v14476)+18) ))+2) );
SOURCE(24293, 38)
   (* (( (ptr) (* (( (ptr) ggData←v14476)+18) ))+2) ) = tempBag←v26772;
   }

static void SwapOldAndNewSceneBags←P2940(ggData←v14536)
   word ggData←v14536;
   {
   word tempBag←v26816 = 0;
   /* SwapOldAndNewSceneBags: */ 
SOURCE(24337, 196)
SOURCE(24408, 33)
   tempBag←v26816 = (* (( (ptr) (* (( (ptr) ggData←v14536)+18) ))+8) );
SOURCE(24443, 52)
   (* (( (ptr) (* (( (ptr) ggData←v14536)+18) ))+8) ) = (* (( (ptr) (* (( (ptr) ggData←v14536)+18) ))+9) );
SOURCE(24497, 36)
   (* (( (ptr) (* (( (ptr) ggData←v14536)+18) ))+9) ) = tempBag←v26816;
   }

static word UpdateBagsForAdd←P3000(oldAncestor←v14596, newAncestorD←v14624, trajEnd←v14652, ggData←v14680)
   word oldAncestor←v14596;
   word newAncestorD←v14624;
   word trajEnd←v14652;
   word ggData←v14680;
   {
   register ptr gf←c80068 =  (ptr) &globalframe;
   word repaintForeground←v14724;
   word triggerBag←v26860;
   word sceneBag←v26888;
   word alignBag←v26916;
   word scene←v26944;
   word newHot←v26972 = 0;
   word oldHot←v27000 = 0;
   word newWhole←v27028 = 0;
   word oldWhole←v27056 = 0;
   word hotMinusOldHot←v27084 = 0;
   word hideAlignments←v27112;
   word alignObjects←v27140 = 0;
   /* UpdateBagsForAdd: */ 
SOURCE(24539, 1867)
SOURCE(24539, 1867)
   repaintForeground←v14724 = 0;
SOURCE(24702, 50)
   triggerBag←v26860 = (* (( (ptr) (* (( (ptr) ggData←v14680)+18) ))+1) );
SOURCE(24754, 46)
   sceneBag←v26888 = (* (( (ptr) (* (( (ptr) ggData←v14680)+18) ))+8) );
SOURCE(24802, 44)
   alignBag←v26916 = (* (( (ptr) (* (( (ptr) ggData←v14680)+18) ))+4) );
SOURCE(24848, 27)
   scene←v26944 = (* (( (ptr) ggData←v14680)+11) );
SOURCE(24946, 60)
   {
      word pd205;
      pd205 = (* (( (ptr) (* (( (ptr) gf←c80068)+240)/* var←c73828 */  ))+58) );
      hideAlignments←v27112 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd205 ))))(ggData←v14680, pd205));
      };
SOURCE(25044, 54)
   oldHot←v27000 = (word) RemoveEntireHotSlice←P4020(oldAncestor←v14596, triggerBag←v26860);
SOURCE(25100, 60)
   {
      word pd206;
      pd206 = (* (( (ptr) (* (( (ptr) gf←c80068)+243)/* var←c74084 */  ))+20) );
      newHot←v26972 = (word) ( *( (fPt) ((*  (ptr) pd206 ))))((*  (ptr) newAncestorD←v14624 ), 1, pd206);
      };
SOURCE(25162, 61)
   if ((newHot←v26972 != 0)) {
SOURCE(25183, 40)
      {
         word var←c74116;
         var←c74116 = (word) AddSliceFeature←P3720(newHot←v26972, triggerBag←v26860);
         };
      };
SOURCE(25225, 54)
   oldWhole←v27056 = (word) RemoveEntireHotSlice←P4020(oldAncestor←v14596, sceneBag←v26888);
SOURCE(25281, 62)
   {
      word pd207;
      pd207 = (* (( (ptr) (* (( (ptr) gf←c80068)+232)/* var←c71940 */  ))+29) );
      newWhole←v27028 = (word) ( *( (fPt) ((*  (ptr) pd207 ))))((*  (ptr) newAncestorD←v14624 ), 0, 6, pd207);
      };
SOURCE(25345, 40)
   {
      word var←c74148;
      var←c74148 = (word) AddSliceFeature←P3720(newWhole←v27028, sceneBag←v26888);
      };
SOURCE(25387, 1019)
   if ((newHot←v26972 == 0)) {
SOURCE(25408, 26)
      hotMinusOldHot←v27084 = 0;
      }
   else {
SOURCE(25434, 974)
      {
         word maskD←v27268 = 0;
         word outD←v27296 = 0;
         word traj←v27324;
         word trajData←v27352;
         word filterLists←v27380;
SOURCE(25530, 99)
         {
            word pd208;
            pd208 = (* (( (ptr) (* (( (ptr) gf←c80068)+244)/* var←c74180 */  ))+78) );
            traj←v27324 = (*  (ptr) ( *( (fPt) ((*  (ptr) pd208 ))))((*  (ptr) newAncestorD←v14624 ), (* (( (ptr) newAncestorD←v14624)+1)
                ), 1, (* (( (ptr) gf←c80068)+32) ), pd208) );
            };
SOURCE(25631, 38)
         trajData←v27352 = XR←Narrow((* (( (ptr) traj←v27324)+1) ), (* (( (ptr) gf←c80068)+31) ));
SOURCE(25671, 57)
         {
            word pd209;
            pd209 = (* (( (ptr) (* (( (ptr) gf←c80068)+240)/* var←c73828 */  ))+22) );
            filterLists←v27380 = (word) ( *( (fPt) ((*  (ptr) pd209 ))))(ggData←v14680, pd209);
            };
SOURCE(25730, 423)
         if ((trajEnd←v14652 == 0)) {
SOURCE(25751, 184)
            {
               word var←c74212;
               word var←c74308;
               {
                  word var←c74244;
                  {
                     word pd210;
                     pd210 = (* (( (ptr) (* (( (ptr) gf←c80068)+245)/* var←c74276 */  ))+9) );
                     var←c74244 = (word) ( *( (fPt) ((*  (ptr) pd210 ))))(trajData←v27352, 0, pd210);
                     };
                  {
                     word pd211;
                     pd211 = (* (( (ptr) (* (( (ptr) gf←c80068)+233)/* var←c71972 */  ))+8) );
                     var←c74212 = (word) ( *( (fPt) ((*  (ptr) pd211 ))))(traj←v27324, var←c74244, pd211);
                     };
                  };
               {
                  word var←c74340;
                  {
                     word pd212;
                     pd212 = (* (( (ptr) (* (( (ptr) gf←c80068)+245)/* var←c74276 */  ))+8) );
                     var←c74340 = (word) ( *( (fPt) ((*  (ptr) pd212 ))))(trajData←v27352, 0, pd212);
                     };
                  {
                     word pd213;
                     pd213 = (* (( (ptr) (* (( (ptr) gf←c80068)+233)/* var←c71972 */  ))+8) );
                     var←c74308 = (word) ( *( (fPt) ((*  (ptr) pd213 ))))(traj←v27324, var←c74340, pd213);
                     };
                  };
               {
                  word pd214;
                  pd214 = (* (( (ptr) (* (( (ptr) gf←c80068)+245)/* var←c74276 */  ))+20) );
                  maskD←v27268 = (word) ( *( (fPt) ((*  (ptr) pd214 ))))(var←c74212, var←c74308, pd214);
                  };
               };
            }
         else {
SOURCE(25935, 218)
            {
               word var←c74372;
               word var←c74500;
               {
                  word var←c74404;
                  {
                     word var←c74436;
                     {
                        word pd215;
                        pd215 = (* (( (ptr) (* (( (ptr) gf←c80068)+246)/* var←c74468 */  ))+37) );
                        var←c74436 = (word) ( *( (fPt) ((*  (ptr) pd215 ))))(traj←v27324, pd215);
                        };
                     {
                        word pd216;
                        pd216 = (* (( (ptr) (* (( (ptr) gf←c80068)+245)/* var←c74276 */  ))+9) );
                        var←c74404 = (word) ( *( (fPt) ((*  (ptr) pd216 ))))(trajData←v27352, var←c74436, pd216);
                        };
                     };
                  {
                     word pd217;
                     pd217 = (* (( (ptr) (* (( (ptr) gf←c80068)+233)/* var←c71972 */  ))+8) );
                     var←c74372 = (word) ( *( (fPt) ((*  (ptr) pd217 ))))(traj←v27324, var←c74404, pd217);
                     };
                  };
               {
                  word var←c74532;
                  {
                     word var←c74564;
                     {
                        word pd218;
                        pd218 = (* (( (ptr) (* (( (ptr) gf←c80068)+246)/* var←c74468 */  ))+39) );
                        var←c74564 = (word) ( *( (fPt) ((*  (ptr) pd218 ))))(traj←v27324, pd218);
                        };
                     {
                        word pd219;
                        pd219 = (* (( (ptr) (* (( (ptr) gf←c80068)+245)/* var←c74276 */  ))+8) );
                        var←c74532 = (word) ( *( (fPt) ((*  (ptr) pd219 ))))(trajData←v27352, var←c74564, pd219);
                        };
                     };
                  {
                     word pd220;
                     pd220 = (* (( (ptr) (* (( (ptr) gf←c80068)+233)/* var←c71972 */  ))+8) );
                     var←c74500 = (word) ( *( (fPt) ((*  (ptr) pd220 ))))(traj←v27324, var←c74532, pd220);
                     };
                  };
               {
                  word pd221;
                  pd221 = (* (( (ptr) (* (( (ptr) gf←c80068)+245)/* var←c74276 */  ))+20) );
                  maskD←v27268 = (word) ( *( (fPt) ((*  (ptr) pd221 ))))(var←c74372, var←c74500, pd221);
                  };
               };
            };
SOURCE(26155, 60)
         {
            word pd222;
            pd222 = (* (( (ptr) (* (( (ptr) gf←c80068)+244)/* var←c74180 */  ))+84) );
            outD←v27296 = (word) ( *( (fPt) ((*  (ptr) pd222 ))))(maskD←v27268, pd222);
            };
SOURCE(26217, 95)
         {
            word var←c74596;
            {
               word pd223;
               pd223 = (* (( (ptr) (* (( (ptr) gf←c80068)+232)/* var←c71940 */  ))+31) );
               var←c74596 = (word) ( *( (fPt) ((*  (ptr) pd223 ))))(newWhole←v27028, outD←v27296, pd223);
               };
            {
               word pd224;
               pd224 = (* (( (ptr) (* (( (ptr) gf←c80068)+232)/* var←c71940 */  ))+31) );
               hotMinusOldHot←v27084 = (word) ( *( (fPt) ((*  (ptr) pd224 ))))(newHot←v26972, var←c74596, pd224);
               };
            };
SOURCE(26314, 92)
         alignObjects←v27140 = (word) IncrementalFilterSlice←P3780(hotMinusOldHot←v27084, filterLists←v27380, hideAlignments←v27112, alignBag←v26916)
         ;
         };
      };
SOURCE(24539, 1867)
   return(repaintForeground←v14724);
   }

static void UpdateBagsForNewSlices←P3060(newSlices←v14784, ggData←v14812)
   word newSlices←v14784;
   word ggData←v14812;
   {
   register ptr gf←c80100 =  (ptr) &globalframe;
   word triggerBag←v27424;
   word sceneBag←v27452;
   word alignBag←v27480;
   word scene←v27508;
   /* UpdateBagsForNewSlices: */ 
SOURCE(26415, 467)
SOURCE(26498, 50)
   triggerBag←v27424 = (* (( (ptr) (* (( (ptr) ggData←v14812)+18) ))+1) );
SOURCE(26550, 46)
   sceneBag←v27452 = (* (( (ptr) (* (( (ptr) ggData←v14812)+18) ))+8) );
SOURCE(26598, 44)
   alignBag←v27480 = (* (( (ptr) (* (( (ptr) ggData←v14812)+18) ))+4) );
SOURCE(26644, 27)
   scene←v27508 = (* (( (ptr) ggData←v14812)+11) );
SOURCE(26674, 208)
   {
      register word list←v27552;
      list←v27552 = newSlices←v14784;
      lab←L100049: ;
      if ((list←v27552 != 0)) {
         }
      else {
         goto lab←L100046;
         };
      {
         word firstSlice←v27680;
         word wholeD←v27708;
SOURCE(26741, 30)
         firstSlice←v27680 = (*  (ptr) list←v27552 );
SOURCE(26773, 69)
         {
            word pd225;
            pd225 = (* (( (ptr) (* (( (ptr) gf←c80100)+232)/* var←c71940 */  ))+29) );
            wholeD←v27708 = (word) ( *( (fPt) ((*  (ptr) pd225 ))))(firstSlice←v27680, 0, 6, pd225);
            };
SOURCE(26844, 38)
         {
            word var←c74628;
            var←c74628 = (word) AddSliceFeature←P3720(wholeD←v27708, sceneBag←v27452);
            };
         };
      list←v27552 = (* (( (ptr) list←v27552)+1) );
      goto lab←L100049;
      lab←L100046: ;
      };
   }

static void AddAnchorTrigger←P3120(anchor←v14956, triggerBag←v14984)
   word anchor←v14956;
   word triggerBag←v14984;
   {
   /* AddAnchorTrigger: */ 
SOURCE(26897, 111)
SOURCE(26964, 44)
   {
      word var←c74660;
      var←c74660 = (word) CreateAnchorTrigger←P3660(anchor←v14956, triggerBag←v14984);
      };
   }

static void AddAllHotSlices←P3180(scene←v15044, formal←c01063)
   word scene←v15044;
   word formal←c01063;
   {
   W8 var←c80132;
   /* declaration of triggerBag←v15072 skipped */ 
   register ptr gf←c80164 =  (ptr) &globalframe;
   /* declaration of var←c74692 skipped */ 
   /* declaration of feature←v27752 skipped */ 
   var←c80132.f4/* triggerBag←v15072 */  = formal←c01063;
   /* AddAllHotSlices: */ 
SOURCE(27014, 333)
   {
      word tmpAddr226;
      tmpAddr226 = (word) (( (ptr) &var←c80132)+5)/* var←c74692 */ ;
      (*  (ptr) tmpAddr226 ) = ( ((word)  (fPt) AddHotToTriggerBag←P7248) );
      (* (( (ptr) tmpAddr226) + 1) ) = 1;
      };
SOURCE(27079, 20)
   var←c80132.f7/* feature←v27752 */  = 0;
SOURCE(27277, 70)
   {
      word var←c74756;
      word pd227;
      pd227 = (* (( (ptr) (* (( (ptr) gf←c80164)+247)/* var←c74724 */  ))+32) );
      var←c74756 = (word) ( *( (fPt) ((*  (ptr) pd227 ))))(scene←v15044, 0, (word) (( (bPt) &var←c80132)+20)/* var←c74692 */ , 1, 0, pd227)
      ;
      };
   }

static word AddHotToTriggerBag←P7248(sliceD←v27856, formal←c80196)
   word sliceD←v27856;
   word formal←c80196;
   {
   word done←v27900;
   formal←c80196 = (formal←c80196 - 20);
   /* AddHotToTriggerBag: */ 
SOURCE(27101, 171)
SOURCE(27101, 171)
   done←v27900 = 0;
SOURCE(27185, 54)
   (* (( (ptr) formal←c80196)+7) ) = (word) FeatureFromSlice←P780((*  (ptr) sliceD←v27856 ), (* (( (ptr) sliceD←v27856)+1) ))
   ;
SOURCE(27241, 31)
   (void) AddFeature←P4080((* (( (ptr) formal←c80196)+7) ), (* (( (ptr) formal←c80196)+4) ));
SOURCE(27101, 171)
   return(done←v27900);
   }

static void AddHeuristics←P3240(formal←c0551, formal←c01064, heuristics←v15160, atom←v15188, formal←c01065, formal←c01066, formal←c01067)
   word formal←c0551;
   word formal←c01064;
   word heuristics←v15160;
   word atom←v15188;
   word formal←c01065;
   word formal←c01066;
   W5 formal←c01067;
   {
   W17 var←c80228;
   /* declaration of scene←v15132 skipped */ 
   /* declaration of triggerBag←v15216 skipped */ 
   /* declaration of ec←v15244 skipped */ 
   /* declaration of bd←v15272 skipped */ 
   register ptr gf←c80260 =  (ptr) &globalframe;
   /* declaration of autoAdded←v15316 skipped */ 
   /* declaration of autoTriggers←v15344 skipped */ 
   /* declaration of var←c74788 skipped */ 
   /* declaration of feature←v27928 skipped */ 
   (* (( (ptr) &var←c80228)+4)/* scene←v15132 */  ) = formal←c01064;
   (* (( (ptr) &var←c80228)+5)/* triggerBag←v15216 */  ) = formal←c01065;
   (* (( (ptr) &var←c80228)+6)/* ec←v15244 */  ) = formal←c01066;
   (*  (W5Pt) (( (ptr) &var←c80228)+7)/* bd←v15272 */  ) = formal←c01067;
   /* AddHeuristics: */ 
SOURCE(27353, 1461)
   {
      word tmpAddr228;
      tmpAddr228 = (word) (( (ptr) &var←c80228)+14)/* var←c74788 */ ;
      (*  (ptr) tmpAddr228 ) = ( ((word)  (fPt) AddToTriggerBag←P7356) );
      (* (( (ptr) tmpAddr228) + 1) ) = 1;
      };
SOURCE(27353, 1461)
   (* (( (ptr) &var←c80228)+12)/* autoAdded←v15316 */  ) = 0;
SOURCE(27353, 1461)
   (* (( (ptr) &var←c80228)+13)/* autoTriggers←v15344 */  ) = 0;
SOURCE(27568, 20)
   (* (( (ptr) &var←c80228)+16)/* feature←v27928 */  ) = 0;
SOURCE(27590, 29)
   if ((0 == heuristics←v15160)) {
SOURCE(27613, 6)
      goto lab←L100050;
      };
SOURCE(27621, 1193)
   {
      word var←c74820;
      var←c74820 = atom←v15188;
      if ((var←c74820 == (* (( (ptr) gf←c80260)+41) ))) {
SOURCE(27647, 1114)
SOURCE(28689, 70)
         {
            word var←c74852;
            word pd229;
            pd229 = (* (( (ptr) (* (( (ptr) gf←c80260)+247)/* var←c74724 */  ))+32) );
            var←c74852 = (word) ( *( (fPt) ((*  (ptr) pd229 ))))((* (( (ptr) &var←c80228)+4)/* scene←v15132 */  ), 0, (word) (( (bPt) &var←c80228)+56)
               /* var←c74788 */ , 0, 0, pd229);
            };
         }
      else {
         if ((var←c74820 == (* (( (ptr) gf←c80260)+35) ))) {
            }
         else {
SOURCE(28794, 20)
            (void) XR←RaiseError((word) (( (bPt) gf←c80260)+172), 0);
            };
         };
      };
   /* removed tail goto */ 
   lab←L100050: ;
   (*  (ptr) formal←c0551 ) = (* (( (ptr) &var←c80228)+12)/* autoAdded←v15316 */  );
   (* (( (ptr) formal←c0551)+1) ) = (* (( (ptr) &var←c80228)+13)/* autoTriggers←v15344 */  );
   return;
   }

static word AddToTriggerBag←P7356(sliceD←v28048, formal←c80324)
   word sliceD←v28048;
   word formal←c80324;
   {
   register ptr gf←c80292 =  (ptr) &globalframe;
   word done←v28092;
   word stationaryD←v28120 = 0;
   word oldFeature←v28148 = 0;
   formal←c80324 = (formal←c80324 - 56);
   /* AddToTriggerBag: */ 
SOURCE(27649, 23)
SOURCE(27649, 23)
   done←v28092 = 0;
SOURCE(27785, 49)
   {
      word pd230;
      pd230 = (* (( (ptr) (* (( (ptr) gf←c80292)+232)/* var←c71940 */  ))+28) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd230 ))))(sliceD←v28048, pd230))) {
SOURCE(27828, 6)
         return(done←v28092);
         };
      };
SOURCE(27865, 52)
   stationaryD←v28120 = (word) StationaryParts←P3300(sliceD←v28048, (* (( (ptr) formal←c80324)+4) ), (* (( (ptr) formal←c80324)+6)
       ), (*  (W5Pt) (( (ptr) formal←c80324)+7) ));
SOURCE(27919, 51)
   {
      word pd231;
      pd231 = (* (( (ptr) (* (( (ptr) gf←c80292)+232)/* var←c71940 */  ))+27) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd231 ))))(stationaryD←v28120, pd231))) {
SOURCE(27964, 6)
         return(done←v28092);
         };
      };
SOURCE(28002, 55)
   oldFeature←v28148 = (word) FindFeature←P540((* (( (ptr) formal←c80324)+5) ), (*  (ptr) stationaryD←v28120 ));
SOURCE(28059, 622)
   if ((oldFeature←v28148 != 0)) {
SOURCE(28084, 425)
      {
         word hotD←v28192;
         word newlyHotD←v28220;
         word totalD←v28248 = 0;
SOURCE(28086, 48)
         hotD←v28192 = XR←Narrow((* (( (ptr) oldFeature←v28148)+1) ), (* (( (ptr) gf←c80292)+15) ));
SOURCE(28136, 74)
         {
            word pd232;
            pd232 = (* (( (ptr) (* (( (ptr) gf←c80292)+232)/* var←c71940 */  ))+31) );
            newlyHotD←v28220 = (word) ( *( (fPt) ((*  (ptr) pd232 ))))(stationaryD←v28120, hotD←v28192, pd232);
            };
SOURCE(28237, 267)
         {
            word pd233;
            pd233 = (* (( (ptr) (* (( (ptr) gf←c80292)+232)/* var←c71940 */  ))+27) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd233 ))))(newlyHotD←v28220, pd233))) {
SOURCE(28286, 49)
               {
                  word pd234;
                  pd234 = (* (( (ptr) (* (( (ptr) gf←c80292)+232)/* var←c71940 */  ))+30) );
                  totalD←v28248 = (word) ( *( (fPt) ((*  (ptr) pd234 ))))(stationaryD←v28120, hotD←v28192, pd234);
                  };
SOURCE(28337, 54)
               (* (( (ptr) formal←c80324)+16) ) = (word) FeatureFromSlice←P780((*  (ptr) totalD←v28248 ), (* (( (ptr) totalD←v28248)+1) ))
               ;
SOURCE(28393, 47)
               (void) ReplaceFeature←P600((* (( (ptr) formal←c80324)+5) ), oldFeature←v28148, (* (( (ptr) formal←c80324)+16) ));
SOURCE(28442, 44)
               {
                  word var←c74884;
                  var←c74884 = XR←NewObject(8, (* (( (ptr) gf←c80292)+30) ));
                  (*  (ptr) var←c74884 ) = newlyHotD←v28220;
                  (* (( (ptr) var←c74884)+1) ) = (* (( (ptr) formal←c80324)+13) );
                  (* (( (ptr) formal←c80324)+13) ) = var←c74884;
                  };
SOURCE(28488, 16)
               (* (( (ptr) formal←c80324)+12) ) = 1;
               };
            };
         };
      }
   else {
SOURCE(28518, 64)
      (* (( (ptr) formal←c80324)+16) ) = (word) FeatureFromSlice←P780((*  (ptr) stationaryD←v28120 ), (* (( (ptr) stationaryD←v28120)+1)
          ));
SOURCE(28584, 31)
      (void) AddFeature←P4080((* (( (ptr) formal←c80324)+16) ), (* (( (ptr) formal←c80324)+5) ));
SOURCE(28617, 46)
      {
         word var←c74916;
         var←c74916 = XR←NewObject(8, (* (( (ptr) gf←c80292)+30) ));
         (*  (ptr) var←c74916 ) = stationaryD←v28120;
         (* (( (ptr) var←c74916)+1) ) = (* (( (ptr) formal←c80324)+13) );
         (* (( (ptr) formal←c80324)+13) ) = var←c74916;
         };
SOURCE(28665, 16)
      (* (( (ptr) formal←c80324)+12) ) = 1;
      };
SOURCE(27649, 23)
   return(done←v28092);
   }

static word StationaryParts←P3300(selectedD←v15488, scene←v15516, ec←v15544, bd←v15572)
   word selectedD←v15488;
   word scene←v15516;
   word ec←v15544;
   W5 bd←v15572;
   {
   register ptr gf←c80356 =  (ptr) &globalframe;
   word stationaryD←v15616;
   word background←v28292 = 0;
   word overlay←v28320 = 0;
   word rubber←v28348 = 0;
   word drag←v28376 = 0;
   word move←v28404 = 0;
   word totalD←v28432 = 0;
   /* StationaryParts: */ 
SOURCE(28820, 513)
SOURCE(28820, 513)
   stationaryD←v15616 = 0;
SOURCE(29037, 57)
   {
      word pd235;
      pd235 = (* (( (ptr) (* (( (ptr) gf←c80356)+232)/* var←c71940 */  ))+29) );
      totalD←v28432 = (word) ( *( (fPt) ((*  (ptr) pd235 ))))((*  (ptr) selectedD←v15488 ), 0, 6, pd235);
      };
SOURCE(29096, 102)
   {
      W4 var←c74948;
      {
         word pd236;
         pd236 = (* (( (ptr) (* (( (ptr) gf←c80356)+232)/* var←c71940 */  ))+32) );
         (void) ( *( (fPt) ((*  (ptr) pd236 ))))((word) &var←c74948, (*  (ptr) selectedD←v15488 ), (* (( (ptr) selectedD←v15488)+1)
             ), ec←v15544, bd←v15572, pd236);
         };
      drag←v28376 = var←c74948.f3;
      rubber←v28348 = var←c74948.f2;
      overlay←v28320 = var←c74948.f1;
      background←v28292 = var←c74948.f0;
      };
SOURCE(29200, 42)
   {
      word pd237;
      pd237 = (* (( (ptr) (* (( (ptr) gf←c80356)+232)/* var←c71940 */  ))+30) );
      move←v28404 = (word) ( *( (fPt) ((*  (ptr) pd237 ))))(rubber←v28348, drag←v28376, pd237);
      };
SOURCE(29244, 33)
   if ((move←v28404 == 0)) {
SOURCE(29263, 14)
      return(totalD←v28432);
      };
SOURCE(29279, 54)
   {
      word pd238;
      pd238 = (* (( (ptr) (* (( (ptr) gf←c80356)+232)/* var←c71940 */  ))+31) );
      stationaryD←v15616 = (word) ( *( (fPt) ((*  (ptr) pd238 ))))(totalD←v28432, move←v28404, pd238);
      };
SOURCE(28820, 513)
   return(stationaryD←v15616);
   }

static void StationaryTriggerParts←P3360(formal←c0587, hotD←v15676, selSliceD←v15704, editConstraints←v15732, bezierDrag←v15760)
   word formal←c0587;
   word hotD←v15676;
   word selSliceD←v15704;
   word editConstraints←v15732;
   W5 bezierDrag←v15760;
   {
   register ptr gf←c80388 =  (ptr) &globalframe;
   word stationary←v15804;
   word someRemoved←v15832;
   word background←v28476 = 0;
   word overlay←v28504 = 0;
   word rubber←v28532 = 0;
   word drag←v28560 = 0;
   word move←v28588 = 0;
   /* StationaryTriggerParts: */ 
SOURCE(29339, 635)
SOURCE(29339, 635)
   stationary←v15804 = 0;
SOURCE(29339, 635)
   someRemoved←v15832 = 0;
SOURCE(29601, 36)
   if ((selSliceD←v15704 == 0)) {
SOURCE(29625, 12)
      stationary←v15804 = hotD←v15676;
      someRemoved←v15832 = 0;
      goto lab←L100051;
      };
SOURCE(29668, 123)
   {
      W4 var←c74980;
      {
         word pd239;
         pd239 = (* (( (ptr) (* (( (ptr) gf←c80388)+232)/* var←c71940 */  ))+32) );
         (void) ( *( (fPt) ((*  (ptr) pd239 ))))((word) &var←c74980, (*  (ptr) selSliceD←v15704 ), (* (( (ptr) selSliceD←v15704)+1)
             ), editConstraints←v15732, bezierDrag←v15760, pd239);
         };
      drag←v28560 = var←c74980.f3;
      rubber←v28532 = var←c74980.f2;
      overlay←v28504 = var←c74980.f1;
      background←v28476 = var←c74980.f0;
      };
SOURCE(29793, 42)
   {
      word pd240;
      pd240 = (* (( (ptr) (* (( (ptr) gf←c80388)+232)/* var←c71940 */  ))+30) );
      move←v28588 = (word) ( *( (fPt) ((*  (ptr) pd240 ))))(rubber←v28532, drag←v28560, pd240);
      };
SOURCE(29837, 38)
   if ((move←v28588 == 0)) {
SOURCE(29856, 19)
      stationary←v15804 = hotD←v15676;
      someRemoved←v15832 = 0;
      goto lab←L100051;
      };
SOURCE(29877, 51)
   {
      word pd241;
      pd241 = (* (( (ptr) (* (( (ptr) gf←c80388)+232)/* var←c71940 */  ))+31) );
      stationary←v15804 = (word) ( *( (fPt) ((*  (ptr) pd241 ))))(hotD←v15676, move←v28588, pd241);
      };
SOURCE(29930, 44)
   if ((stationary←v15804 != hotD←v15676)) {
SOURCE(29956, 18)
      someRemoved←v15832 = 1;
      };
   /* removed tail goto */ 
   lab←L100051: ;
   (*  (ptr) formal←c0587 ) = stationary←v15804;
   (* (( (ptr) formal←c0587)+1) ) = someRemoved←v15832;
   return;
   }

static word RemoveMoving←P3420(scene←v15892, formal←c01068, formal←c01069, formal←c01070)
   word scene←v15892;
   word formal←c01068;
   word formal←c01069;
   W5 formal←c01070;
   {
   W15 var←c80420;
   /* declaration of bag←v15920 skipped */ 
   /* declaration of ec←v15948 skipped */ 
   /* declaration of bd←v15976 skipped */ 
   register ptr gf←c80452 =  (ptr) &globalframe;
   /* declaration of someRemoved←v16020 skipped */ 
   /* declaration of var←c75012 skipped */ 
   /* declaration of thisRemoved←v28632 skipped */ 
   (* (( (ptr) &var←c80420)+4)/* bag←v15920 */  ) = formal←c01068;
   (* (( (ptr) &var←c80420)+5)/* ec←v15948 */  ) = formal←c01069;
   (*  (W5Pt) (( (ptr) &var←c80420)+6)/* bd←v15976 */  ) = formal←c01070;
   /* RemoveMoving: */ 
SOURCE(29980, 881)
   {
      word tmpAddr242;
      tmpAddr242 = (word) (( (ptr) &var←c80420)+12)/* var←c75012 */ ;
      (*  (ptr) tmpAddr242 ) = ( ((word)  (fPt) DoRemoveMoving←P7464) );
      (* (( (ptr) tmpAddr242) + 1) ) = 1;
      };
SOURCE(29980, 881)
   (* (( (ptr) &var←c80420)+11)/* someRemoved←v16020 */  ) = 0;
SOURCE(30114, 25)
   (* (( (ptr) &var←c80420)+14)/* thisRemoved←v28632 */  ) = 0;
SOURCE(30792, 69)
   {
      word var←c75044;
      word pd243;
      pd243 = (* (( (ptr) (* (( (ptr) gf←c80452)+247)/* var←c74724 */  ))+32) );
      var←c75044 = (word) ( *( (fPt) ((*  (ptr) pd243 ))))(scene←v15892, 0, (word) (( (bPt) &var←c80420)+48)/* var←c75012 */ , 0, 0, pd243)
      ;
      };
SOURCE(29980, 881)
   return((* (( (ptr) &var←c80420)+11)/* someRemoved←v16020 */  ));
   }

static word DoRemoveMoving←P7464(selectedD←v28736, formal←c80516)
   word selectedD←v28736;
   word formal←c80516;
   {
   register ptr gf←c80484 =  (ptr) &globalframe;
   word done←v28780;
   word hotSliceD←v28808 = 0;
   word stationaryD←v28836 = 0;
   word oldFeature←v28864 = 0;
   formal←c80516 = (formal←c80516 - 48);
   /* DoRemoveMoving: */ 
SOURCE(30141, 643)
SOURCE(30141, 643)
   done←v28780 = 0;
SOURCE(30290, 46)
   oldFeature←v28864 = (word) FindFeature←P540((* (( (ptr) formal←c80516)+4) ), (*  (ptr) selectedD←v28736 ));
SOURCE(30338, 31)
   if ((oldFeature←v28864 == 0)) {
SOURCE(30363, 6)
      return(done←v28780);
      };
SOURCE(30371, 36)
   hotSliceD←v28808 = XR←Narrow((* (( (ptr) oldFeature←v28864)+1) ), (* (( (ptr) gf←c80484)+15) ));
SOURCE(30409, 81)
   {
      W2 var←c75076;
      (void) StationaryTriggerParts←P3360((word) &var←c75076, hotSliceD←v28808, selectedD←v28736, (* (( (ptr) formal←c80516)+5)
          ), (*  (W5Pt) (( (ptr) formal←c80516)+6) ));
      (* (( (ptr) formal←c80516)+14) ) = var←c75076.f1;
      stationaryD←v28836 = var←c75076.f0;
      };
SOURCE(30492, 292)
   if ((0 != (* (( (ptr) formal←c80516)+14) ))) {
SOURCE(30512, 274)
      {
         word newFeature←v28908 = 0;
SOURCE(30562, 18)
         (* (( (ptr) formal←c80516)+11) ) = 1;
SOURCE(30582, 202)
         {
            word pd244;
            pd244 = (* (( (ptr) (* (( (ptr) gf←c80484)+232)/* var←c71940 */  ))+27) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd244 ))))(stationaryD←v28836, pd244))) {
SOURCE(30633, 67)
               newFeature←v28908 = (word) FeatureFromSlice←P780((*  (ptr) stationaryD←v28836 ), (* (( (ptr) stationaryD←v28836)+1) ));
SOURCE(30702, 43)
               (void) ReplaceFeature←P600((* (( (ptr) formal←c80516)+4) ), oldFeature←v28864, newFeature←v28908);
               }
            else {
SOURCE(30754, 30)
               (void) DeleteFeature←P660((* (( (ptr) formal←c80516)+4) ), oldFeature←v28864);
               };
            };
         };
      };
SOURCE(30141, 643)
   return(done←v28780);
   }

static word EmptyFilterLists←P3480(filterLists←v16080)
   word filterLists←v16080;
   {
   word var←c16124;
   /* EmptyFilterLists: */ 
SOURCE(30867, 194)
SOURCE(30936, 125)
   {
      word tc245;
      if ( (  ( ((*  (ptr) filterLists←v16080 ) == 0) ? ((* (( (ptr) filterLists←v16080)+1) ) == 0) : 0 )  ? ((* (( (ptr) filterLists←v16080)+2)
       ) == 0) : 0 ) ) {
         tc245 =  (word)  (unsigned) ((* (( (ptr) filterLists←v16080)+3) ) == 0);
         }
      else {
         tc245 =  (word)  (unsigned) 0;
         };
      return(tc245);
      };
   }

static word FilterListsFromFilter←P3540(value←v16184, filterType←v16212)
   word value←v16184;
   word filterType←v16212;
   {
   register ptr gf←c80548 =  (ptr) &globalframe;
   word filterLists←v16256;
   /* FilterListsFromFilter: */ 
SOURCE(31067, 370)
SOURCE(31067, 370)
   filterLists←v16256 = 0;
SOURCE(31172, 56)
   {
      word var←c75108;
      var←c75108 = XR←NewObject(20, (* (( (ptr) gf←c80548)+29) ));
      (* (( (ptr) var←c75108)+4) ) = (*  (ptr) &fc246 );
      filterLists←v16256 = var←c75108;
      };
SOURCE(31230, 207)
   {
      word var←c75140;
      var←c75140 = filterType←v16212;
      switch (var←c75140) {
         case 0: 
SOURCE(31262, 34)
            {
               word var←c75172;
               word var←c75204;
               var←c75172 = XR←NewObject(8, (* (( (ptr) gf←c80548)+28) ));
               var←c75204 = var←c75172;
               (*  (ptr) var←c75204 ) = value←v16184;
               (*  (ptr) filterLists←v16256 ) = var←c75172;
               };
            break;
         case 1: 
SOURCE(31308, 33)
            {
               word var←c75236;
               word var←c75268;
               var←c75236 = XR←NewObject(8, (* (( (ptr) gf←c80548)+28) ));
               var←c75268 = var←c75236;
               (*  (ptr) var←c75268 ) = value←v16184;
               (* (( (ptr) filterLists←v16256)+1) ) = var←c75236;
               };
            break;
         case 2: 
SOURCE(31352, 34)
            {
               word var←c75300;
               word var←c75332;
               var←c75300 = XR←NewObject(8, (* (( (ptr) gf←c80548)+28) ));
               var←c75332 = var←c75300;
               (*  (ptr) var←c75332 ) = value←v16184;
               (* (( (ptr) filterLists←v16256)+2) ) = var←c75300;
               };
            break;
         case 3: 
SOURCE(31400, 37)
            {
               word var←c75364;
               word var←c75396;
               var←c75364 = XR←NewObject(8, (* (( (ptr) gf←c80548)+28) ));
               var←c75396 = var←c75364;
               (*  (ptr) var←c75396 ) = value←v16184;
               (* (( (ptr) filterLists←v16256)+3) ) = var←c75364;
               };
            break;
         default: 
SOURCE(31450, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(31067, 370)
   return(filterLists←v16256);
   }

static void BuiltInFilters←P3600(triggerBag←v16316, ggData←v16344, hideAlignments←v16372, formal←c01071)
   word triggerBag←v16316;
   word ggData←v16344;
   word hideAlignments←v16372;
   word formal←c01071;
   {
   W12 var←c80580;
   /* declaration of alignBag←v16400 skipped */ 
   register ptr gf←c80612 =  (ptr) &globalframe;
   /* declaration of var←c75428 skipped */ 
   /* declaration of var←c75460 skipped */ 
   /* declaration of filterLists←v28952 skipped */ 
   word anchor←v28980 = 0;
   word anchorFeature←v29008 = 0;
   word var←c75588;
   (* (( (ptr) &var←c80580)+4)/* alignBag←v16400 */  ) = formal←c01071;
   /* BuiltInFilters: */ 
SOURCE(31461, 1611)
   {
      word tmpAddr247;
      tmpAddr247 = (word) (( (ptr) &var←c80580)+5)/* var←c75428 */ ;
      (*  (ptr) tmpAddr247 ) = ( ((word)  (fPt) DoForSlice←P7680) );
      (* (( (ptr) tmpAddr247) + 1) ) = 1;
      };
   {
      word tmpAddr248;
      tmpAddr248 = (word) (( (ptr) &var←c80580)+7)/* var←c75460 */ ;
      (*  (ptr) tmpAddr248 ) = ( ((word)  (fPt) DoPointFireRule←P7620) );
      (* (( (ptr) tmpAddr248) + 1) ) = 1;
      };
SOURCE(31576, 24)
   (* (( (ptr) &var←c80580)+9)/* filterLists←v28952 */  ) = 0;
SOURCE(31646, 46)
   {
      word pd249;
      pd249 = (* (( (ptr) (* (( (ptr) gf←c80612)+241)/* var←c73860 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd249 ))))((* (( (ptr) gf←c80612)+38) ), (* (( (ptr) gf←c80612)+37) ), pd249);
      };
SOURCE(31694, 33)
   anchorFeature←v29008 = (* (( (ptr) triggerBag←v16316)+1) );
SOURCE(31730, 190)
   if ((0 != hideAlignments←v16372)) {
      {
         word var←c75492;
SOURCE(31755, 23)
         (void) FlushAlignBag←P1440((* ((( (ptr) &var←c80580)+4)/* alignBag←v16400 */ ) ));
SOURCE(31780, 132)
         {
            word tc250;
            word pd251;
            if ((anchorFeature←v29008 != 0)) {
               {
                  word var←c75524;
                  var←c75524 = XR←Narrow((* (( (ptr) anchorFeature←v29008)+1) ), (* (( (ptr) gf←c80612)+27) ));
                  anchor←v28980 = var←c75524;
                  var←c75492 = var←c75524;
                  };
               pd251 = (* (( (ptr) (* (( (ptr) gf←c80612)+248)/* var←c75556 */  ))+7) );
               tc250 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd251 ))))(var←c75492, pd251));
               }
            else {
               tc250 =  (word) 0;
               };
            if (tc250) {
SOURCE(31872, 40)
               (void) AddAnchorObject←P4200(anchorFeature←v29008, (* (( (ptr) &var←c80580)+4)/* alignBag←v16400 */  ));
               };
            };
SOURCE(31914, 6)
         return;
         };
      };
SOURCE(31926, 44)
   {
      word pd252;
      pd252 = (* (( (ptr) (* (( (ptr) gf←c80612)+240)/* var←c73828 */  ))+22) );
      (* (( (ptr) &var←c80580)+9)/* filterLists←v28952 */  ) = (word) ( *( (fPt) ((*  (ptr) pd252 ))))(ggData←v16344, pd252);
      };
SOURCE(32025, 997)
   if ((0 != (word) EmptyFilterLists←P3480((* ((( (ptr) &var←c80580)+9)/* filterLists←v28952 */ ) )))) {
SOURCE(32065, 132)
      {
         word tc253;
         word pd254;
         if ((anchorFeature←v29008 != 0)) {
            {
               word var←c75620;
               var←c75620 = XR←Narrow((* (( (ptr) anchorFeature←v29008)+1) ), (* (( (ptr) gf←c80612)+27) ));
               anchor←v28980 = var←c75620;
               var←c75588 = var←c75620;
               };
            pd254 = (* (( (ptr) (* (( (ptr) gf←c80612)+248)/* var←c75556 */  ))+7) );
            tc253 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd254 ))))(var←c75588, pd254));
            }
         else {
            tc253 =  (word) 0;
            };
         if (tc253) {
SOURCE(32157, 40)
            (void) AddAnchorObject←P4200(anchorFeature←v29008, (* (( (ptr) &var←c80580)+4)/* alignBag←v16400 */  ));
            };
         };
      }
   else {
SOURCE(32206, 818)
      {
         /* declaration of sliceD←v29108 skipped */ 
         /* declaration of pointPairGen←v29136 skipped */ 
SOURCE(32715, 23)
         (* (( (ptr) &var←c80580)+10)/* sliceD←v29108 */  ) = 0;
SOURCE(32740, 32)
         (* (( (ptr) &var←c80580)+11)/* pointPairGen←v29136 */  ) = 0;
SOURCE(32775, 198)
         if ((anchorFeature←v29008 != 0)) {
SOURCE(32803, 43)
            anchor←v28980 = XR←Narrow((* (( (ptr) anchorFeature←v29008)+1) ), (* (( (ptr) gf←c80612)+27) ));
SOURCE(32848, 125)
            {
               word pd255;
               pd255 = (* (( (ptr) (* (( (ptr) gf←c80612)+248)/* var←c75556 */  ))+7) );
               if ((0 != (word) ( *( (fPt) ((*  (ptr) pd255 ))))(anchor←v28980, pd255))) {
SOURCE(32881, 40)
                  (void) AddAnchorObject←P4200(anchorFeature←v29008, (* (( (ptr) &var←c80580)+4)/* alignBag←v16400 */  ));
SOURCE(32923, 50)
                  {
                     word var←c75652;
                     var←c75652 = (word) AnchorFireRule←P4380(anchor←v28980, (* (( (ptr) &var←c80580)+9)/* filterLists←v28952 */  ), (* (( (ptr) &var←c80580)+4)
                        /* alignBag←v16400 */  ));
                     };
                  };
               };
            };
SOURCE(32981, 41)
         (void) WalkSliceTriggers←P420(triggerBag←v16316, (word) (( (bPt) &var←c80580)+20)/* var←c75428 */ );
         };
      };
SOURCE(33027, 45)
   {
      word pd256;
      pd256 = (* (( (ptr) (* (( (ptr) gf←c80612)+241)/* var←c73860 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd256 ))))((* (( (ptr) gf←c80612)+38) ), (* (( (ptr) gf←c80612)+37) ), pd256);
      };
   }

static word DoPointFireRule←P7620(point←v62824, formal←c80644)
   W2 point←v62824;
   word formal←c80644;
   {
   word done←v62868;
   formal←c80644 = (formal←c80644 - 28);
   /* DoPointFireRule: */ 
SOURCE(32208, 33)
SOURCE(32208, 33)
   done←v62868 = 0;
SOURCE(32243, 48)
   {
      word var←c75684;
      var←c75684 = (word) PointFireRule←P4260(point←v62824, (* (( (ptr) formal←c80644)+9) ), (* (( (ptr) formal←c80644)+4) ));
      };
SOURCE(32208, 33)
   return(done←v62868);
   }

static word DoForSlice←P7680(feature←v62928, formal←c80708)
   word feature←v62928;
   word formal←c80708;
   {
   register ptr gf←c80676 =  (ptr) &globalframe;
   word done←v62972;
   formal←c80708 = (formal←c80708 - 20);
   /* DoForSlice: */ 
SOURCE(32296, 30)
SOURCE(32296, 30)
   done←v62972 = 0;
SOURCE(32328, 30)
   (* (( (ptr) formal←c80708)+10) ) = XR←Narrow((* (( (ptr) feature←v62928)+1) ), (* (( (ptr) gf←c80676)+15) ));
SOURCE(32360, 58)
   {
      word pd257;
      pd257 = (* (( (ptr) (* (( (ptr) gf←c80676)+232)/* var←c71940 */  ))+37) );
      (void) ( *( (fPt) ((*  (ptr) pd257 ))))((* (( (ptr) formal←c80708)+10) ), (word) (( (bPt) formal←c80708)+28), pd257);
      };
SOURCE(32420, 56)
   {
      word pd258;
      pd258 = (* (( (ptr) (* (( (ptr) gf←c80676)+232)/* var←c71940 */  ))+38) );
      (* (( (ptr) formal←c80708)+11) ) = (word) ( *( (fPt) ((*  (ptr) pd258 ))))((* ((( (ptr) formal←c80708)+10)) ), pd258);
      };
SOURCE(32478, 222)
   {
      W5 next←v29180;
      {
         word pd259;
         pd259 = (* (( (ptr) (* (( (ptr) gf←c80676)+232)/* var←c71940 */  ))+42) );
         (void) ( *( (fPt) ((*  (ptr) pd259 ))))((word) &next←v29180, (*  (ptr) (* (( (ptr) formal←c80708)+10) ) ), (* (( (ptr) formal←c80708)+11)
             ), pd259);
         };
      lab←L100055: ;
      if ((0 == next←v29180.f4)) {
         }
      else {
         goto lab←L100052;
         };
SOURCE(32633, 67)
      {
         word var←c75716;
         var←c75716 = (word) SegmentFireRule←P4320(9999, (*  (W2Pt) &next←v29180 ), (*  (W2Pt) (( (ptr) &next←v29180)+2) ), (* (( (ptr) formal←c80708)+9)
             ), (* (( (ptr) formal←c80708)+4) ));
         };
      {
         word pd260;
         pd260 = (* (( (ptr) (* (( (ptr) gf←c80676)+232)/* var←c71940 */  ))+42) );
         (void) ( *( (fPt) ((*  (ptr) pd260 ))))((word) &next←v29180, (*  (ptr) (* (( (ptr) formal←c80708)+10) ) ), (* (( (ptr) formal←c80708)+11)
             ), pd260);
         };
      goto lab←L100055;
      lab←L100052: ;
      };
SOURCE(32296, 30)
   return(done←v62972);
   }

static word CreateAnchorTrigger←P3660(anchor←v16460, triggerBag←v16488)
   word anchor←v16460;
   word triggerBag←v16488;
   {
   word feature←v16532;
   /* CreateAnchorTrigger: */ 
SOURCE(33078, 176)
SOURCE(33078, 176)
   feature←v16532 = 0;
SOURCE(33186, 35)
   feature←v16532 = (word) FeatureFromAnchor←P840(anchor←v16460);
SOURCE(33223, 31)
   (void) AddFeature←P4080(feature←v16532, triggerBag←v16488);
SOURCE(33078, 176)
   return(feature←v16532);
   }

static word AddSliceFeature←P3720(sliceD←v16592, triggerBag←v16620)
   word sliceD←v16592;
   word triggerBag←v16620;
   {
   register ptr gf←c80740 =  (ptr) &globalframe;
   word newFeature←v16664;
   word oldD←v29224 = 0;
   word unionD←v29252 = 0;
   word oldFeature←v29280 = 0;
   /* AddSliceFeature: */ 
SOURCE(33260, 531)
SOURCE(33260, 531)
   newFeature←v16664 = 0;
SOURCE(33433, 66)
   {
      W2 var←c75748;
      (void) FindOldSlice←P4500((word) &var←c75748, (*  (ptr) sliceD←v16592 ), (*  (ptr) triggerBag←v16620 ));
      oldFeature←v29280 = var←c75748.f1;
      oldD←v29224 = var←c75748.f0;
      };
SOURCE(33501, 290)
   if ((oldD←v29224 == 0)) {
SOURCE(33522, 57)
      newFeature←v16664 = (word) FeatureFromSlice←P780((*  (ptr) sliceD←v16592 ), (* (( (ptr) sliceD←v16592)+1) ));
SOURCE(33581, 44)
      (void) AppendFeature←P720(newFeature←v16664, (*  (ptr) triggerBag←v16620 ));
      }
   else {
SOURCE(33636, 44)
      {
         word pd261;
         pd261 = (* (( (ptr) (* (( (ptr) gf←c80740)+232)/* var←c71940 */  ))+30) );
         unionD←v29252 = (word) ( *( (fPt) ((*  (ptr) pd261 ))))(oldD←v29224, sliceD←v16592, pd261);
         };
SOURCE(33682, 57)
      newFeature←v16664 = (word) FeatureFromSlice←P780((*  (ptr) sliceD←v16592 ), (* (( (ptr) unionD←v29252)+1) ));
SOURCE(33741, 50)
      (void) ReplaceFeature←P600(triggerBag←v16620, oldFeature←v29280, newFeature←v16664);
      };
SOURCE(33260, 531)
   return(newFeature←v16664);
   }

static word IncrementalFilterSlice←P3780(sliceD←v16724, formal←c01072, hideAlignments←v16780, formal←c01073)
   word sliceD←v16724;
   word formal←c01072;
   word hideAlignments←v16780;
   word formal←c01073;
   {
   W9 var←c80772;
   /* declaration of filterLists←v16752 skipped */ 
   /* declaration of alignBag←v16808 skipped */ 
   register ptr gf←c80804 =  (ptr) &globalframe;
   /* declaration of alignObjects←v16852 skipped */ 
   /* declaration of var←c75780 skipped */ 
   (* (( (ptr) &var←c80772)+4)/* filterLists←v16752 */  ) = formal←c01072;
   (* (( (ptr) &var←c80772)+5)/* alignBag←v16808 */  ) = formal←c01073;
   /* IncrementalFilterSlice: */ 
SOURCE(33800, 941)
   {
      word tmpAddr262;
      tmpAddr262 = (word) (( (ptr) &var←c80772)+7)/* var←c75780 */ ;
      (*  (ptr) tmpAddr262 ) = ( ((word)  (fPt) SplineInPointFeatures←P7788) );
      (* (( (ptr) tmpAddr262) + 1) ) = 1;
      };
SOURCE(33800, 941)
   (* (( (ptr) &var←c80772)+6)/* alignObjects←v16852 */  ) = 0;
SOURCE(34189, 128)
   if (((*  (ptr) (* (( (ptr) &var←c80772)+4)/* filterLists←v16752 */  ) ) != 0) || ((* (( (ptr) (* (( (ptr) &var←c80772)+4)
      /* filterLists←v16752 */  ))+1) ) != 0)) {
SOURCE(34253, 64)
      {
         word pd263;
         pd263 = (* (( (ptr) (* (( (ptr) gf←c80804)+232)/* var←c71940 */  ))+37) );
         (void) ( *( (fPt) ((*  (ptr) pd263 ))))(sliceD←v16724, (word) (( (bPt) &var←c80772)+28)/* var←c75780 */ , pd263);
         };
      };
SOURCE(34319, 422)
   if (((* (( (ptr) (* (( (ptr) &var←c80772)+4)/* filterLists←v16752 */  ))+2) ) != 0) || ((* (( (ptr) (* (( (ptr) &var←c80772)+4)
      /* filterLists←v16752 */  ))+3) ) != 0)) {
SOURCE(34387, 365)
      {
         word pointPairGen←v29368;
SOURCE(34389, 76)
         {
            word pd264;
            pd264 = (* (( (ptr) (* (( (ptr) gf←c80804)+232)/* var←c71940 */  ))+38) );
            pointPairGen←v29368 = (word) ( *( (fPt) ((*  (ptr) pd264 ))))(sliceD←v16724, pd264);
            };
SOURCE(34467, 274)
         {
            W5 next←v29412;
            {
               word pd265;
               pd265 = (* (( (ptr) (* (( (ptr) gf←c80804)+232)/* var←c71940 */  ))+42) );
               (void) ( *( (fPt) ((*  (ptr) pd265 ))))((word) &next←v29412, (*  (ptr) sliceD←v16724 ), pointPairGen←v29368, pd265);
               };
            lab←L100059: ;
            if ((0 == next←v29412.f4)) {
               }
            else {
               goto lab←L100056;
               };
SOURCE(34622, 119)
            {
               word var←c75812;
               var←c75812 = (word) SegmentFireRule←P4320(9999, (*  (W2Pt) &next←v29412 ), (*  (W2Pt) (( (ptr) &next←v29412)+2) ), (* (( (ptr) &var←c80772)+4)
                  /* filterLists←v16752 */  ), (* (( (ptr) &var←c80772)+5)/* alignBag←v16808 */  ));
               {
                  word pd266;
                  pd266 = (* (( (ptr) (* (( (ptr) gf←c80804)+230)/* var←c71428 */  ))+9) );
                  (* (( (ptr) &var←c80772)+6)/* alignObjects←v16852 */  ) = (word) ( *( (fPt) ((*  (ptr) pd266 ))))(var←c75812, (* (( (ptr) &var←c80772)+6)
                     /* alignObjects←v16852 */  ), pd266);
                  };
               };
            {
               word pd267;
               pd267 = (* (( (ptr) (* (( (ptr) gf←c80804)+232)/* var←c71940 */  ))+42) );
               (void) ( *( (fPt) ((*  (ptr) pd267 ))))((word) &next←v29412, (*  (ptr) sliceD←v16724 ), pointPairGen←v29368, pd267);
               };
            goto lab←L100059;
            lab←L100056: ;
            };
         };
      };
SOURCE(33800, 941)
   return((* (( (ptr) &var←c80772)+6)/* alignObjects←v16852 */  ));
   }

static word SplineInPointFeatures←P7788(point←v63644, formal←c80868)
   W2 point←v63644;
   word formal←c80868;
   {
   register ptr gf←c80836 =  (ptr) &globalframe;
   word done←v63688;
   formal←c80868 = (formal←c80868 - 28);
   /* SplineInPointFeatures: */ 
SOURCE(33971, 213)
SOURCE(33971, 213)
   done←v63688 = 0;
SOURCE(34084, 100)
   {
      word var←c75844;
      var←c75844 = (word) PointFireRule←P4260(point←v63644, (* (( (ptr) formal←c80868)+4) ), (* (( (ptr) formal←c80868)+5) ));
      {
         word pd268;
         pd268 = (* (( (ptr) (* (( (ptr) gf←c80836)+230)/* var←c71428 */  ))+9) );
         (* (( (ptr) formal←c80868)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd268 ))))(var←c75844, (* (( (ptr) formal←c80868)+6) ), pd268)
         ;
         };
      };
SOURCE(33971, 213)
   return(done←v63688);
   }

static word IncrementalNewTrigger←P3840(trigger←v16996, filterLists←v17024, hideAlignments←v17052, alignBag←v17080)
   word trigger←v16996;
   word filterLists←v17024;
   word hideAlignments←v17052;
   word alignBag←v17080;
   {
   register ptr gf←c80900 =  (ptr) &globalframe;
   word alignObjects←v17124;
   /* IncrementalNewTrigger: */ 
SOURCE(34759, 543)
SOURCE(34759, 543)
   alignObjects←v17124 = 0;
SOURCE(34933, 18)
   alignObjects←v17124 = 0;
SOURCE(34953, 349)
   if ((0 != hideAlignments←v17052)) {
SOURCE(34978, 23)
      (void) FlushAlignBag←P1440(alignBag←v17080);
      }
   else {
SOURCE(35012, 290)
      {
         word var←c75876;
         word var←c75908;
         var←c75876 = (* (( (ptr) trigger←v16996)+1) );
         if ((var←c75876 == 0)) {
            goto lab←L100060;
            };
         var←c75908 = XR←GetReferentType(var←c75876);
         if (((* (( (ptr) gf←c80900)+15) ) == var←c75908)) {
            {
               word sliceD←v29604;
               sliceD←v29604 = var←c75876;
SOURCE(35072, 84)
               alignObjects←v17124 = (word) IncrementalFilterSlice←P3780(sliceD←v29604, filterLists←v17024, hideAlignments←v17052, alignBag←v17080)
               ;
               };
            }
         else {
            if (((* (( (ptr) gf←c80900)+27) ) == var←c75908)) {
               {
                  word anchor←v29648;
                  anchor←v29648 = var←c75876;
SOURCE(35180, 122)
                  {
                     word pd269;
                     pd269 = (* (( (ptr) (* (( (ptr) gf←c80900)+248)/* var←c75556 */  ))+7) );
                     if ((0 != (word) ( *( (fPt) ((*  (ptr) pd269 ))))(anchor←v29648, pd269))) {
SOURCE(35211, 93)
                        {
                           W2 point←v29692;
SOURCE(35213, 39)
                           {
/*1*/   word pd270;
/*1*/   pd270 = (* (( (ptr) (* (( (ptr) gf←c80900)+248)/* var←c75556 */  ))+15) );
/*1*/   (void) ( *( (fPt) ((*  (ptr) pd270 ))))((word) &point←v29692, anchor←v29648, pd270);
/*1*/   };
SOURCE(35254, 48)
                           {
/*1*/   word var←c75940;
/*1*/   var←c75940 = (word) PointFireRule←P4260(point←v29692, filterLists←v17024, alignBag←v17080);
/*1*/   };
                           };
                        };
                     };
                  };
               }
            else {
               lab←L100060: ;
SOURCE(35321, 5)
               (void) XR←RaiseUnnamedError();
               };
            };
         };
      };
SOURCE(34759, 543)
   return(alignObjects←v17124);
   }

static word IncrementalNewFilter←P3900(value←v17268, formal←c01074, triggerBag←v17324, hideAlignments←v17352, formal←c01075)
   word value←v17268;
   word formal←c01074;
   word triggerBag←v17324;
   word hideAlignments←v17352;
   word formal←c01075;
   {
   W14 var←c80932;
   /* declaration of filterType←v17296 skipped */ 
   /* declaration of alignBag←v17380 skipped */ 
   register ptr gf←c80964 =  (ptr) &globalframe;
   /* declaration of alignObjects←v17424 skipped */ 
   /* declaration of var←c75972 skipped */ 
   /* declaration of var←c76004 skipped */ 
   /* declaration of filterLists←v29736 skipped */ 
   /* declaration of sliceD←v29820 skipped */ 
   /* declaration of pointPairGen←v29848 skipped */ 
   word anchor←v29876 = 0;
   word anchorFeature←v29904 = 0;
   (* (( (ptr) &var←c80932)+4)/* filterType←v17296 */  ) = formal←c01074;
   (* (( (ptr) &var←c80932)+5)/* alignBag←v17380 */  ) = formal←c01075;
   /* IncrementalNewFilter: */ 
SOURCE(35334, 1427)
   {
      word tmpAddr271;
      tmpAddr271 = (word) (( (ptr) &var←c80932)+7)/* var←c75972 */ ;
      (*  (ptr) tmpAddr271 ) = ( ((word)  (fPt) DoForSlice←P8148) );
      (* (( (ptr) tmpAddr271) + 1) ) = 1;
      };
   {
      word tmpAddr272;
      tmpAddr272 = (word) (( (ptr) &var←c80932)+9)/* var←c76004 */ ;
      (*  (ptr) tmpAddr272 ) = ( ((word)  (fPt) DoPointFireRule←P8088) );
      (* (( (ptr) tmpAddr272) + 1) ) = 1;
      };
SOURCE(35334, 1427)
   (* (( (ptr) &var←c80932)+6)/* alignObjects←v17424 */  ) = 0;
SOURCE(35526, 67)
   (* (( (ptr) &var←c80932)+11)/* filterLists←v29736 */  ) = (word) FilterListsFromFilter←P3540(value←v17268, (* (( (ptr) &var←c80932)+4)
      /* filterType←v17296 */  ));
SOURCE(36292, 23)
   (* (( (ptr) &var←c80932)+12)/* sliceD←v29820 */  ) = 0;
SOURCE(36317, 32)
   (* (( (ptr) &var←c80932)+13)/* pointPairGen←v29848 */  ) = 0;
SOURCE(36394, 29)
   if ((0 != hideAlignments←v17352)) {
SOURCE(36417, 6)
      return((* (( (ptr) &var←c80932)+6)/* alignObjects←v17424 */  ));
      };
SOURCE(36425, 33)
   anchorFeature←v29904 = (* (( (ptr) triggerBag←v17324)+1) );
SOURCE(36460, 252)
   if ((anchorFeature←v29904 != 0)) {
SOURCE(36490, 43)
      anchor←v29876 = XR←Narrow((* (( (ptr) anchorFeature←v29904)+1) ), (* (( (ptr) gf←c80964)+27) ));
SOURCE(36535, 177)
      {
         word pd273;
         pd273 = (* (( (ptr) (* (( (ptr) gf←c80964)+248)/* var←c75556 */  ))+7) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd273 ))))(anchor←v29876, pd273))) {
SOURCE(36568, 40)
            (void) AddAnchorObject←P4200(anchorFeature←v29904, (* (( (ptr) &var←c80932)+5)/* alignBag←v17380 */  ));
SOURCE(36610, 102)
            {
               word var←c76036;
               var←c76036 = (word) AnchorFireRule←P4380(anchor←v29876, (* (( (ptr) &var←c80932)+11)/* filterLists←v29736 */  ), (* (( (ptr) &var←c80932)+5)
                  /* alignBag←v17380 */  ));
               {
                  word pd274;
                  pd274 = (* (( (ptr) (* (( (ptr) gf←c80964)+230)/* var←c71428 */  ))+9) );
                  (* (( (ptr) &var←c80932)+6)/* alignObjects←v17424 */  ) = (word) ( *( (fPt) ((*  (ptr) pd274 ))))(var←c76036, (* (( (ptr) &var←c80932)+6)
                     /* alignObjects←v17424 */  ), pd274);
                  };
               };
            };
         };
      };
SOURCE(36720, 41)
   (void) WalkSliceTriggers←P420(triggerBag←v17324, (word) (( (bPt) &var←c80932)+28)/* var←c75972 */ );
SOURCE(35334, 1427)
   return((* (( (ptr) &var←c80932)+6)/* alignObjects←v17424 */  ));
   }

static word DoPointFireRule←P8088(point←v63916, formal←c81028)
   W2 point←v63916;
   word formal←c81028;
   {
   register ptr gf←c80996 =  (ptr) &globalframe;
   word done←v63960;
   formal←c81028 = (formal←c81028 - 36);
   /* DoPointFireRule: */ 
SOURCE(35595, 135)
SOURCE(35595, 135)
   done←v63960 = 0;
SOURCE(35630, 100)
   {
      word var←c76068;
      var←c76068 = (word) PointFireRule←P4260(point←v63916, (* (( (ptr) formal←c81028)+11) ), (* (( (ptr) formal←c81028)+5) ));
      {
         word pd275;
         pd275 = (* (( (ptr) (* (( (ptr) gf←c80996)+230)/* var←c71428 */  ))+9) );
         (* (( (ptr) formal←c81028)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd275 ))))(var←c76068, (* (( (ptr) formal←c81028)+6) ), pd275)
         ;
         };
      };
SOURCE(35595, 135)
   return(done←v63960);
   }

static word DoForSlice←P8148(feature←v64020, formal←c81092)
   word feature←v64020;
   word formal←c81092;
   {
   register ptr gf←c81060 =  (ptr) &globalframe;
   word done←v64064;
   formal←c81092 = (formal←c81092 - 28);
   /* DoForSlice: */ 
SOURCE(35735, 522)
SOURCE(35735, 522)
   done←v64064 = 0;
SOURCE(35767, 30)
   (* (( (ptr) formal←c81092)+12) ) = XR←Narrow((* (( (ptr) feature←v64020)+1) ), (* (( (ptr) gf←c81060)+15) ));
SOURCE(35799, 458)
   {
      word var←c76100;
      var←c76100 = (* (( (ptr) formal←c81092)+4) );
      switch (var←c76100) {
         case 0: case 1: 
SOURCE(35841, 58)
            {
               word pd276;
               pd276 = (* (( (ptr) (* (( (ptr) gf←c81060)+232)/* var←c71940 */  ))+37) );
               (void) ( *( (fPt) ((*  (ptr) pd276 ))))((* (( (ptr) formal←c81092)+12) ), (word) (( (bPt) formal←c81092)+36), pd276);
               };
            break;
         case 2: case 3: 
SOURCE(35925, 56)
            {
               word pd277;
               pd277 = (* (( (ptr) (* (( (ptr) gf←c81060)+232)/* var←c71940 */  ))+38) );
               (* (( (ptr) formal←c81092)+13) ) = (word) ( *( (fPt) ((*  (ptr) pd277 ))))((* ((( (ptr) formal←c81092)+12)) ), pd277);
               };
SOURCE(35983, 274)
            {
               W5 next←v29948;
               {
                  word pd278;
                  pd278 = (* (( (ptr) (* (( (ptr) gf←c81060)+232)/* var←c71940 */  ))+42) );
                  (void) ( *( (fPt) ((*  (ptr) pd278 ))))((word) &next←v29948, (*  (ptr) (* (( (ptr) formal←c81092)+12) ) ), (* (( (ptr) formal←c81092)+13)
                      ), pd278);
                  };
               lab←L100064: ;
               if ((0 == next←v29948.f4)) {
                  }
               else {
                  goto lab←L100061;
                  };
SOURCE(36138, 119)
               {
                  word var←c76132;
                  var←c76132 = (word) SegmentFireRule←P4320(9999, (*  (W2Pt) &next←v29948 ), (*  (W2Pt) (( (ptr) &next←v29948)+2) ), (* (( (ptr) formal←c81092)+11)
                      ), (* (( (ptr) formal←c81092)+5) ));
                  {
                     word pd279;
                     pd279 = (* (( (ptr) (* (( (ptr) gf←c81060)+230)/* var←c71428 */  ))+9) );
                     (* (( (ptr) formal←c81092)+6) ) = (word) ( *( (fPt) ((*  (ptr) pd279 ))))(var←c76132, (* (( (ptr) formal←c81092)+6) ), pd279)
                     ;
                     };
                  };
               {
                  word pd280;
                  pd280 = (* (( (ptr) (* (( (ptr) gf←c81060)+232)/* var←c71940 */  ))+42) );
                  (void) ( *( (fPt) ((*  (ptr) pd280 ))))((word) &next←v29948, (*  (ptr) (* (( (ptr) formal←c81092)+12) ) ), (* (( (ptr) formal←c81092)+13)
                      ), pd280);
                  };
               goto lab←L100064;
               lab←L100061: ;
               };
            break;
         default: 
SOURCE(36282, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(35735, 522)
   return(done←v64064);
   }

static void RemoveAnchorTrigger←P3960(triggerBag←v17568)
   word triggerBag←v17568;
   {
   /* RemoveAnchorTrigger: */ 
SOURCE(36768, 85)
SOURCE(36830, 23)
   (* (( (ptr) triggerBag←v17568)+1) ) = 0;
   }

static word RemoveEntireHotSlice←P4020(slice←v17628, triggerBag←v17656)
   word slice←v17628;
   word triggerBag←v17656;
   {
   word oldSliceD←v17700;
   word oldFeature←v29992 = 0;
   /* RemoveEntireHotSlice: */ 
SOURCE(36859, 265)
SOURCE(36859, 265)
   oldSliceD←v17700 = 0;
SOURCE(36997, 64)
   {
      W2 var←c76164;
      (void) FindOldSlice←P4500((word) &var←c76164, slice←v17628, (*  (ptr) triggerBag←v17656 ));
      oldFeature←v29992 = var←c76164.f1;
      oldSliceD←v17700 = var←c76164.f0;
      };
SOURCE(37063, 61)
   if ((oldSliceD←v17700 != 0)) {
SOURCE(37087, 37)
      (void) DeleteFeature←P660(triggerBag←v17656, oldFeature←v29992);
      };
SOURCE(36859, 265)
   return(oldSliceD←v17700);
   }

static void AddFeature←P4080(featureData←v17760, triggerBag←v17788)
   word featureData←v17760;
   word triggerBag←v17788;
   {
   register ptr gf←c81124 =  (ptr) &globalframe;
   /* AddFeature: */ 
SOURCE(37133, 603)
SOURCE(37205, 23)
   {
      word pd281;
      pd281 = (* (( (ptr) (* (( (ptr) gf←c81124)+231)/* var←c71716 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd281 ))))(pd281);
      };
SOURCE(37230, 506)
   {
      word var←c76196;
      var←c76196 = (*  (ptr) featureData←v17760 );
      if ((var←c76196 == 0)) {
SOURCE(37268, 422)
         {
            word sliceD←v30036;
            word key←v30064;
            word val←v30092 = 0;
            word found←v30120 = 0;
SOURCE(37270, 51)
            sliceD←v30036 = XR←Narrow((* (( (ptr) featureData←v17760)+1) ), (* (( (ptr) gf←c81124)+15) ));
SOURCE(37323, 30)
            key←v30064 = (*  (ptr) sliceD←v30036 );
SOURCE(37386, 51)
            {
               W2 var←c76228;
               {
                  word pd282;
                  pd282 = (* (( (ptr) (* (( (ptr) gf←c81124)+229)/* var←c71140 */  ))+7) );
                  (void) ( *( (fPt) ((*  (ptr) pd282 ))))((word) &var←c76228, (*  (ptr) triggerBag←v17788 ), key←v30064, pd282);
                  };
               val←v30092 = var←c76228.f1;
               found←v30120 = var←c76228.f0;
               };
SOURCE(37439, 246)
            if ((0 == found←v30120)) {
SOURCE(37457, 99)
               {
                  word list←v30176;
SOURCE(37459, 6)
                  list←v30176 = XR←NewObject(8, (* (( (ptr) gf←c81124)+14) ));
                  {
                     word var←c76292;
                     var←c76292 = list←v30176;
                     (*  (ptr) var←c76292 ) = featureData←v17760;
                     };
SOURCE(37506, 48)
                  {
                     word var←c76324;
                     word pd283;
                     pd283 = (* (( (ptr) (* (( (ptr) gf←c81124)+229)/* var←c71140 */  ))+10) );
                     var←c76324 = (word) ( *( (fPt) ((*  (ptr) pd283 ))))((*  (ptr) triggerBag←v17788 ), key←v30064, list←v30176, pd283);
                     };
                  };
               }
            else {
SOURCE(37563, 124)
               {
                  word list←v30304;
SOURCE(37565, 6)
                  list←v30304 = XR←Narrow(val←v30092, (* (( (ptr) gf←c81124)+14) ));
SOURCE(37606, 30)
                  {
                     word var←c76356;
                     var←c76356 = XR←NewObject(8, (* (( (ptr) gf←c81124)+14) ));
                     (*  (ptr) var←c76356 ) = featureData←v17760;
                     (* (( (ptr) var←c76356)+1) ) = list←v30304;
                     list←v30304 = var←c76356;
                     };
SOURCE(37638, 47)
                  {
                     word var←c76388;
                     word pd284;
                     pd284 = (* (( (ptr) (* (( (ptr) gf←c81124)+229)/* var←c71140 */  ))+9) );
                     var←c76388 = (word) ( *( (fPt) ((*  (ptr) pd284 ))))((*  (ptr) triggerBag←v17788 ), key←v30064, list←v30304, pd284);
                     };
                  };
               };
            };
         }
      else {
         if ((var←c76196 == 8)) {
SOURCE(37705, 31)
            (* (( (ptr) triggerBag←v17788)+1) ) = featureData←v17760;
            }
         else {
SOURCE(37752, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
   }

static void AddAllSlices←P4140(scene←v17848, formal←c01076)
   word scene←v17848;
   word formal←c01076;
   {
   W8 var←c81156;
   /* declaration of triggerBag←v17876 skipped */ 
   register ptr gf←c81188 =  (ptr) &globalframe;
   /* declaration of var←c76420 skipped */ 
   /* declaration of feature←v30432 skipped */ 
   var←c81156.f4/* triggerBag←v17876 */  = formal←c01076;
   /* AddAllSlices: */ 
SOURCE(37763, 269)
   {
      word tmpAddr285;
      tmpAddr285 = (word) (( (ptr) &var←c81156)+5)/* var←c76420 */ ;
      (*  (ptr) tmpAddr285 ) = ( ((word)  (fPt) DoAddSlice←P8400) );
      (* (( (ptr) tmpAddr285) + 1) ) = 1;
      };
SOURCE(37825, 20)
   var←c81156.f7/* feature←v30432 */  = 0;
SOURCE(37983, 49)
   {
      word var←c76452;
      word pd286;
      pd286 = (* (( (ptr) (* (( (ptr) gf←c81188)+247)/* var←c74724 */  ))+31) );
      var←c76452 = (word) ( *( (fPt) ((*  (ptr) pd286 ))))(scene←v17848, 0, (word) (( (bPt) &var←c81156)+20)/* var←c76420 */ , 0, pd286)
      ;
      };
   }

static word DoAddSlice←P8400(slice←v30536, formal←c81220)
   word slice←v30536;
   word formal←c81220;
   {
   word done←v30580;
   formal←c81220 = (formal←c81220 - 20);
   /* DoAddSlice: */ 
SOURCE(37847, 131)
SOURCE(37847, 131)
   done←v30580 = 0;
SOURCE(37912, 33)
   (* (( (ptr) formal←c81220)+7) ) = (word) FeatureFromSlice←P780(slice←v30536, 0);
SOURCE(37947, 31)
   (void) AddFeature←P4080((* (( (ptr) formal←c81220)+7) ), (* (( (ptr) formal←c81220)+4) ));
SOURCE(37847, 131)
   return(done←v30580);
   }

static void AddAnchorObject←P4200(anchorFeature←v17936, alignBag←v17964)
   word anchorFeature←v17936;
   word alignBag←v17964;
   {
   /* AddAnchorObject: */ 
SOURCE(38037, 106)
SOURCE(38112, 31)
   (* (( (ptr) alignBag←v17964)+4) ) = anchorFeature←v17936;
   }

static word PointFireRule←P4260(point←v18024, filterLists←v18052, alignBag←v18080)
   W2 point←v18024;
   word filterLists←v18052;
   word alignBag←v18080;
   {
   register ptr gf←c81252 =  (ptr) &globalframe;
   word alignObjects←v18124;
   word feature←v30608 = 0;
   /* PointFireRule: */ 
SOURCE(38149, 653)
SOURCE(38149, 653)
   alignObjects←v18124 = 0;
SOURCE(38300, 18)
   alignObjects←v18124 = 0;
SOURCE(38320, 227)
   {
      register word list←v30652;
      list←v30652 = (*  (ptr) filterLists←v18052 );
      lab←L100068: ;
      if ((list←v30652 != 0)) {
         }
      else {
         goto lab←L100065;
         };
SOURCE(38397, 84)
      feature←v30608 = (word) JointAddSlopeLine←P1860((*  (ptr) list←v30652 ), point←v18024, alignBag←v18080);
SOURCE(38483, 64)
      if ((feature←v30608 != 0)) {
SOURCE(38505, 42)
         {
            word var←c76484;
            var←c76484 = XR←NewObject(8, (* (( (ptr) gf←c81252)+14) ));
            (*  (ptr) var←c76484 ) = feature←v30608;
            (* (( (ptr) var←c76484)+1) ) = alignObjects←v18124;
            alignObjects←v18124 = var←c76484;
            };
         };
      list←v30652 = (* (( (ptr) list←v30652)+1) );
      goto lab←L100068;
      lab←L100065: ;
      };
SOURCE(38558, 244)
   {
      register word list←v30780;
      list←v30780 = (* (( (ptr) filterLists←v18052)+1) );
      lab←L100072: ;
      if ((list←v30780 != 0)) {
         }
      else {
         goto lab←L100069;
         };
SOURCE(38634, 102)
      {
         word x287;
         word x288;
         float tf289;
         feature←v30608 = (word) JointAddCircle←P2220((
               tf289 = (
                  x287 = (*  (ptr) list←v30780 ),  *(float*)&x287
                  ) * (
                  x288 = (* (( (ptr) filterLists←v18052)+4) ),  *(float*)&x288
                  ),  *(word*)&tf289
               ), point←v18024, alignBag←v18080);
         };
SOURCE(38738, 64)
      if ((feature←v30608 != 0)) {
SOURCE(38760, 42)
         {
            word var←c76516;
            var←c76516 = XR←NewObject(8, (* (( (ptr) gf←c81252)+14) ));
            (*  (ptr) var←c76516 ) = feature←v30608;
            (* (( (ptr) var←c76516)+1) ) = alignObjects←v18124;
            alignObjects←v18124 = var←c76516;
            };
         };
      list←v30780 = (* (( (ptr) list←v30780)+1) );
      goto lab←L100072;
      lab←L100069: ;
      };
SOURCE(38149, 653)
   return(alignObjects←v18124);
   }

static word SegmentFireRule←P4320(segNum←v18268, lo←v18296, hi←v18324, filterLists←v18352, alignBag←v18380)
   word segNum←v18268;
   W2 lo←v18296;
   W2 hi←v18324;
   word filterLists←v18352;
   word alignBag←v18380;
   {
   register ptr gf←c81284 =  (ptr) &globalframe;
   word alignObjects←v18424;
   word line1←v30908 = 0;
   word line2←v30936 = 0;
   /* SegmentFireRule: */ 
SOURCE(38817, 857)
SOURCE(38817, 857)
   alignObjects←v18424 = 0;
SOURCE(38989, 18)
   alignObjects←v18424 = 0;
SOURCE(39009, 340)
   {
      register word list←v30980;
      list←v30980 = (* (( (ptr) filterLists←v18352)+3) );
      lab←L100076: ;
      if ((list←v30980 != 0)) {
         }
      else {
         goto lab←L100073;
         };
SOURCE(39089, 136)
      {
         W2 var←c76548;
         {
            word x290;
            word x291;
            float tf292;
            (void) SegmentAddDistanceLines←P2460((word) &var←c76548, (
                  tf292 = (
                     x290 = (*  (ptr) list←v30980 ),  *(float*)&x290
                     ) * (
                     x291 = (* (( (ptr) filterLists←v18352)+4) ),  *(float*)&x291
                     ),  *(word*)&tf292
                  ), segNum←v18268, lo←v18296, hi←v18324, alignBag←v18380);
            };
         line2←v30936 = var←c76548.f1;
         line1←v30908 = var←c76548.f0;
         };
SOURCE(39227, 60)
      if ((line1←v30908 != 0)) {
SOURCE(39247, 40)
         {
            word var←c76580;
            var←c76580 = XR←NewObject(8, (* (( (ptr) gf←c81284)+14) ));
            (*  (ptr) var←c76580 ) = line1←v30908;
            (* (( (ptr) var←c76580)+1) ) = alignObjects←v18424;
            alignObjects←v18424 = var←c76580;
            };
         };
SOURCE(39289, 60)
      if ((line2←v30936 != 0)) {
SOURCE(39309, 40)
         {
            word var←c76612;
            var←c76612 = XR←NewObject(8, (* (( (ptr) gf←c81284)+14) ));
            (*  (ptr) var←c76612 ) = line2←v30936;
            (* (( (ptr) var←c76612)+1) ) = alignObjects←v18424;
            alignObjects←v18424 = var←c76612;
            };
         };
      list←v30980 = (* (( (ptr) list←v30980)+1) );
      goto lab←L100076;
      lab←L100073: ;
      };
SOURCE(39360, 314)
   {
      register word list←v31108;
      list←v31108 = (* (( (ptr) filterLists←v18352)+2) );
      lab←L100080: ;
      if ((list←v31108 != 0)) {
         }
      else {
         goto lab←L100077;
         };
SOURCE(39437, 113)
      {
         W2 var←c76644;
         (void) SegmentAddTwoAngleLines←P2400((word) &var←c76644, (*  (ptr) list←v31108 ), segNum←v18268, lo←v18296, hi←v18324, alignBag←v18380)
         ;
         line2←v30936 = var←c76644.f1;
         line1←v30908 = var←c76644.f0;
         };
SOURCE(39552, 60)
      if ((line1←v30908 != 0)) {
SOURCE(39572, 40)
         {
            word var←c76676;
            var←c76676 = XR←NewObject(8, (* (( (ptr) gf←c81284)+14) ));
            (*  (ptr) var←c76676 ) = line1←v30908;
            (* (( (ptr) var←c76676)+1) ) = alignObjects←v18424;
            alignObjects←v18424 = var←c76676;
            };
         };
SOURCE(39614, 60)
      if ((line2←v30936 != 0)) {
SOURCE(39634, 40)
         {
            word var←c76708;
            var←c76708 = XR←NewObject(8, (* (( (ptr) gf←c81284)+14) ));
            (*  (ptr) var←c76708 ) = line2←v30936;
            (* (( (ptr) var←c76708)+1) ) = alignObjects←v18424;
            alignObjects←v18424 = var←c76708;
            };
         };
      list←v31108 = (* (( (ptr) list←v31108)+1) );
      goto lab←L100080;
      lab←L100077: ;
      };
SOURCE(38817, 857)
   return(alignObjects←v18424);
   }

static word AnchorFireRule←P4380(anchor←v18568, filterLists←v18596, alignBag←v18624)
   word anchor←v18568;
   word filterLists←v18596;
   word alignBag←v18624;
   {
   register ptr gf←c81316 =  (ptr) &globalframe;
   word alignObjects←v18668;
   word line1←v31236 = 0;
   word line2←v31264 = 0;
   W2 point←v31292;
   W2 normal←v31320;
   W2 lo←v31348;
   W2 hi←v31376;
   /* AnchorFireRule: */ 
SOURCE(39689, 1238)
SOURCE(39689, 1238)
   alignObjects←v18668 = 0;
SOURCE(39847, 39)
   {
      word pd293;
      pd293 = (* (( (ptr) (* (( (ptr) gf←c81316)+248)/* var←c75556 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd293 ))))((word) &point←v31292, anchor←v18568, pd293);
      };
SOURCE(39888, 42)
   {
      word pd294;
      pd294 = (* (( (ptr) (* (( (ptr) gf←c81316)+248)/* var←c75556 */  ))+16) );
      (void) ( *( (fPt) ((*  (ptr) pd294 ))))((word) &normal←v31320, anchor←v18568, pd294);
      };
SOURCE(39932, 48)
   {
      word x295;
      word x296;
      *(float*)&lo←v31348.f0 = (
         x295 = point←v31292.f0,  *(float*)&x295
         ) + (
         x296 = normal←v31320.f1,  *(float*)&x296
         );
      };
   {
      word x297;
      word x298;
      *(float*)&lo←v31348.f1 = (
         x297 = point←v31292.f1,  *(float*)&x297
         ) - (
         x298 = normal←v31320.f0,  *(float*)&x298
         );
      };
SOURCE(39982, 48)
   {
      word x299;
      word x300;
      *(float*)&hi←v31376.f0 = (
         x299 = point←v31292.f0,  *(float*)&x299
         ) - (
         x300 = normal←v31320.f1,  *(float*)&x300
         );
      };
   {
      word x301;
      word x302;
      *(float*)&hi←v31376.f1 = (
         x301 = point←v31292.f1,  *(float*)&x301
         ) + (
         x302 = normal←v31320.f0,  *(float*)&x302
         );
      };
SOURCE(40032, 58)
   alignObjects←v18668 = (word) PointFireRule←P4260(point←v31292, filterLists←v18596, alignBag←v18624);
SOURCE(40092, 338)
   {
      register word list←v31420;
      list←v31420 = (* (( (ptr) filterLists←v18596)+3) );
      lab←L100084: ;
      if ((list←v31420 != 0)) {
         }
      else {
         goto lab←L100081;
         };
SOURCE(40172, 134)
      {
         W2 var←c76804;
         {
            word x303;
            word x304;
            float tf305;
            (void) SegmentAddDistanceLines←P2460((word) &var←c76804, (
                  tf305 = (
                     x303 = (*  (ptr) list←v31420 ),  *(float*)&x303
                     ) * (
                     x304 = (* (( (ptr) filterLists←v18596)+4) ),  *(float*)&x304
                     ),  *(word*)&tf305
                  ), 9999, lo←v31348, hi←v31376, alignBag←v18624);
            };
         line2←v31264 = var←c76804.f1;
         line1←v31236 = var←c76804.f0;
         };
SOURCE(40308, 60)
      if ((line1←v31236 != 0)) {
SOURCE(40328, 40)
         {
            word var←c76836;
            var←c76836 = XR←NewObject(8, (* (( (ptr) gf←c81316)+14) ));
            (*  (ptr) var←c76836 ) = line1←v31236;
            (* (( (ptr) var←c76836)+1) ) = alignObjects←v18668;
            alignObjects←v18668 = var←c76836;
            };
         };
SOURCE(40370, 60)
      if ((line2←v31264 != 0)) {
SOURCE(40390, 40)
         {
            word var←c76868;
            var←c76868 = XR←NewObject(8, (* (( (ptr) gf←c81316)+14) ));
            (*  (ptr) var←c76868 ) = line2←v31264;
            (* (( (ptr) var←c76868)+1) ) = alignObjects←v18668;
            alignObjects←v18668 = var←c76868;
            };
         };
      list←v31420 = (* (( (ptr) list←v31420)+1) );
      goto lab←L100084;
      lab←L100081: ;
      };
SOURCE(40441, 486)
   {
      register word list←v31548;
      list←v31548 = (* (( (ptr) filterLists←v18596)+2) );
      lab←L100088: ;
      if ((list←v31548 != 0)) {
         }
      else {
         goto lab←L100085;
         };
      {
         word degrees←v31676;
         word loLine←v31704;
SOURCE(40518, 26)
         degrees←v31676 = (*  (ptr) list←v31548 );
SOURCE(40546, 110)
         {
            word var←c76900;
            {
               word pd306;
               word x307;
               word x309;
               word x310;
               pd306 = (* (( (ptr) (* (( (ptr) gf←c81316)+239)/* var←c73540 */  ))+6) );
               *(float*)&var←c76900 = ((
                  x307 = (word) ( *( (fPt) ((*  (ptr) pd306 ))))(normal←v31320, pd306),  *(float*)&x307
                  ) + (
                  x309 = (*  (ptr) &fc308 ),  *(float*)&x309
                  )) + (
                  x310 = degrees←v31676,  *(float*)&x310
                  );
               };
            {
               word pd311;
               pd311 = (* (( (ptr) (* (( (ptr) gf←c81316)+235)/* var←c72836 */  ))+11) );
               loLine←v31704 = (word) ( *( (fPt) ((*  (ptr) pd311 ))))(point←v31292, var←c76900, pd311);
               };
            };
SOURCE(40691, 27)
         line1←v31236 = XR←NewObject(8, (* (( (ptr) gf←c81316)+16) ));
SOURCE(40720, 22)
         (*  (ptr) line1←v31236 ) = 3;
SOURCE(40744, 90)
         {
            word var←c76964;
            var←c76964 = XR←NewObject(12, (* (( (ptr) gf←c81316)+21) ));
            (*  (ptr) var←c76964 ) = loLine←v31704;
            (* (( (ptr) var←c76964)+1) ) = degrees←v31676;
            (* (( (ptr) line1←v31236)+1) ) = var←c76964;
            };
SOURCE(40836, 29)
         (void) AddAlignment←P1740(line1←v31236, alignBag←v18624);
SOURCE(40867, 60)
         if ((line1←v31236 != 0)) {
SOURCE(40887, 40)
            {
               word var←c76996;
               var←c76996 = XR←NewObject(8, (* (( (ptr) gf←c81316)+14) ));
               (*  (ptr) var←c76996 ) = line1←v31236;
               (* (( (ptr) var←c76996)+1) ) = alignObjects←v18668;
               alignObjects←v18668 = var←c76996;
               };
            };
         };
      list←v31548 = (* (( (ptr) list←v31548)+1) );
      goto lab←L100088;
      lab←L100085: ;
      };
SOURCE(39689, 1238)
   return(alignObjects←v18668);
   }

static word SomeSelectedIsHot←P4440(formal←c01077)
   word formal←c01077;
   {
   W8 var←c81348;
   /* declaration of scene←v18812 skipped */ 
   register ptr gf←c81380 =  (ptr) &globalframe;
   /* declaration of hotFound←v18856 skipped */ 
   /* declaration of var←c77028 skipped */ 
   var←c81348.f4/* scene←v18812 */  = formal←c01077;
   /* SomeSelectedIsHot: */ 
SOURCE(40942, 309)
   {
      word tmpAddr312;
      tmpAddr312 = (word) (( (ptr) &var←c81348)+6)/* var←c77028 */ ;
      (*  (ptr) tmpAddr312 ) = ( ((word)  (fPt) FindHot←P8796) );
      (* (( (ptr) tmpAddr312) + 1) ) = 1;
      };
SOURCE(40942, 309)
   var←c81348.f5/* hotFound←v18856 */  = 0;
SOURCE(41189, 62)
   {
      word var←c77060;
      word pd313;
      pd313 = (* (( (ptr) (* (( (ptr) gf←c81380)+247)/* var←c74724 */  ))+32) );
      var←c77060 = (word) ( *( (fPt) ((*  (ptr) pd313 ))))(var←c81348.f4/* scene←v18812 */ , 0, (word) (( (bPt) &var←c81348)+24)
         /* var←c77028 */ , 0, 0, pd313);
      };
SOURCE(40942, 309)
   return(var←c81348.f5/* hotFound←v18856 */ );
   }

static word FindHot←P8796(sliceD←v31824, formal←c81444)
   word sliceD←v31824;
   word formal←c81444;
   {
   register ptr gf←c81412 =  (ptr) &globalframe;
   word done←v31868;
   formal←c81444 = (formal←c81444 - 24);
   /* FindHot: */ 
SOURCE(41018, 163)
SOURCE(41018, 163)
   done←v31868 = 0;
SOURCE(41091, 90)
   {
      word pd314;
      pd314 = (* (( (ptr) (* (( (ptr) gf←c81412)+243)/* var←c74084 */  ))+18) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd314 ))))((*  (ptr) sliceD←v31824 ), (* (( (ptr) formal←c81444)+4) ), 1, pd314))) {
SOURCE(41153, 15)
         (* (( (ptr) formal←c81444)+5) ) = 1;
SOURCE(41170, 11)
         done←v31868 = 1;
         };
      };
SOURCE(41018, 163)
   return(done←v31868);
   }

static void FindOldSlice←P4500(formal←c0802, slice←v18916, sliceTriggers←v18944)
   word formal←c0802;
   word slice←v18916;
   word sliceTriggers←v18944;
   {
   register ptr gf←c81476 =  (ptr) &globalframe;
   word oldSliceD←v18988;
   word oldFeature←v19016;
   word key←v31896;
   word val←v31924 = 0;
   word found←v31952 = 0;
   /* FindOldSlice: */ 
SOURCE(41257, 478)
SOURCE(41257, 478)
   oldSliceD←v18988 = 0;
SOURCE(41257, 478)
   oldFeature←v19016 = 0;
SOURCE(41384, 16)
   key←v31896 = slice←v18916;
SOURCE(41433, 47)
   {
      W2 var←c77092;
      {
         word pd315;
         pd315 = (* (( (ptr) (* (( (ptr) gf←c81476)+229)/* var←c71140 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd315 ))))((word) &var←c77092, sliceTriggers←v18944, key←v31896, pd315);
         };
      val←v31924 = var←c77092.f1;
      found←v31952 = var←c77092.f0;
      };
SOURCE(41482, 47)
   if ((0 == found←v31952) || (val←v31924 == 0)) {
SOURCE(41513, 16)
      oldSliceD←v18988 = 0;
      oldFeature←v19016 = 0;
      goto lab←L100089;
      };
SOURCE(41531, 176)
   {
      register word list←v32020;
      list←v32020 = XR←Narrow(val←v31924, (* (( (ptr) gf←c81476)+14) ));
      lab←L100093: ;
      if ((list←v32020 != 0)) {
         }
      else {
         goto lab←L100090;
         };
SOURCE(41606, 23)
      oldFeature←v19016 = (*  (ptr) list←v32020 );
SOURCE(41631, 36)
      oldSliceD←v18988 = XR←Narrow((* (( (ptr) oldFeature←v19016)+1) ), (* (( (ptr) gf←c81476)+15) ));
SOURCE(41669, 38)
      if (((*  (ptr) oldSliceD←v18988 ) == slice←v18916)) {
SOURCE(41701, 6)
         goto lab←L100089;
         };
      list←v32020 = (* (( (ptr) list←v32020)+1) );
      goto lab←L100093;
      lab←L100090: ;
      };
SOURCE(41718, 17)
   oldSliceD←v18988 = 0;
   oldFeature←v19016 = 0;
   /* removed tail goto */ 
   lab←L100089: ;
   (*  (ptr) formal←c0802 ) = oldSliceD←v18988;
   (* (( (ptr) formal←c0802)+1) ) = oldFeature←v19016;
   return;
   }

static word RemoveFeatureFromList←P4560(ref←v19076, list←v19104)
   word ref←v19076;
   word list←v19104;
   {
   register ptr gf←c81508 =  (ptr) &globalframe;
   word val←v19232;
   word z←v32148 = 0;
   /* RemoveFeatureFromList: */ 
SOURCE(41741, 329)
SOURCE(41741, 329)
   val←v19232 = 0;
SOURCE(41898, 172)
   lab←L100096: ;
   if ((list←v19104 != 0)) {
      }
   else {
      goto lab←L100094;
      };
SOURCE(41918, 132)
   if (((*  (ptr) list←v19104 ) != ref←v19076)) {
SOURCE(41942, 108)
      if ((val←v19232 == 0)) {
SOURCE(41961, 27)
         {
            word var←c77124;
            var←c77124 = XR←NewObject(8, (* (( (ptr) gf←c81508)+14) ));
            (*  (ptr) var←c77124 ) = (*  (ptr) list←v19104 );
            val←v19232 = var←c77124;
            };
SOURCE(41990, 7)
         z←v32148 = val←v19232;
         }
      else {
SOURCE(42005, 33)
         {
            word var←c77156;
            var←c77156 = XR←NewObject(8, (* (( (ptr) gf←c81508)+14) ));
            (*  (ptr) var←c77156 ) = (*  (ptr) list←v19104 );
            (* (( (ptr) var←c77156)+1) ) = (* (( (ptr) z←v32148)+1) );
            (* (( (ptr) z←v32148)+1) ) = var←c77156;
            };
SOURCE(42040, 10)
         z←v32148 = (* (( (ptr) z←v32148)+1) );
         };
      };
SOURCE(42054, 16)
   list←v19104 = (* (( (ptr) list←v19104)+1) );
   goto lab←L100096;
   lab←L100094: ;
SOURCE(41741, 329)
   return(val←v19232);
   }

static void CreateLineTable←P4620(ggData←v19376)
   word ggData←v19376;
   {
   register ptr gf←c81540 =  (ptr) &globalframe;
   /* CreateLineTable: */ 
SOURCE(42274, 159)
SOURCE(42324, 51)
   {
      word pd316;
      pd316 = (* (( (ptr) (* (( (ptr) gf←c81540)+234)/* var←c72196 */  ))+5) );
      (* (( (ptr) (* (( (ptr) ggData←v19376)+17) ))+6) ) = (word) ( *( (fPt) ((*  (ptr) pd316 ))))(211, pd316);
      };
SOURCE(42377, 56)
   {
      word pd317;
      pd317 = (* (( (ptr) (* (( (ptr) gf←c81540)+234)/* var←c72196 */  ))+5) );
      (* (( (ptr) (* (( (ptr) ggData←v19376)+17) ))+7) ) = (word) ( *( (fPt) ((*  (ptr) pd317 ))))(211, pd317);
      };
   }

static word LineIsPresent←P4680(ggData←v19436, line←v19464)
   word ggData←v19436;
   word line←v19464;
   {
   register ptr gf←c81572 =  (ptr) &globalframe;
   word present←v19508;
   word key←v32276;
   word found←v32304 = 0;
   word val←v32332 = 0;
   word list←v32360 = 0;
   /* LineIsPresent: */ 
SOURCE(42439, 430)
SOURCE(42439, 430)
   present←v19508 = 0;
SOURCE(42524, 30)
   key←v32276 = (word) CardFromLine←P5040(line←v19464);
SOURCE(42607, 59)
   {
      W2 var←c77188;
      {
         word pd318;
         pd318 = (* (( (ptr) (* (( (ptr) gf←c81572)+234)/* var←c72196 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd318 ))))((word) &var←c77188, (* (( (ptr) (* (( (ptr) ggData←v19436)+17) ))+6) ), key←v32276, pd318)
         ;
         };
      val←v32332 = var←c77188.f1;
      found←v32304 = var←c77188.f0;
      };
SOURCE(42668, 31)
   if ((0 == found←v32304)) {
SOURCE(42686, 13)
      return(0);
      };
SOURCE(42701, 18)
   list←v32360 = XR←Narrow(val←v32332, (* (( (ptr) gf←c81572)+24) ));
SOURCE(42721, 122)
   {
      register word l←v32500;
      l←v32500 = list←v32360;
      lab←L100100: ;
      if ((l←v32500 != 0)) {
         }
      else {
         goto lab←L100097;
         };
SOURCE(42773, 70)
      {
         word x319;
         word x320;
         word x321;
         word x322;
         if ( ( ((
            x319 = (* (( (ptr) (*  (ptr) l←v32500 ))+1) ),  *(float*)&x319
            ) == (
            x320 = (* (( (ptr) line←v19464)+1) ),  *(float*)&x320
            )) ? ((
            x321 = (*  (ptr) (*  (ptr) l←v32500 ) ),  *(float*)&x321
            ) == (
            x322 = (*  (ptr) line←v19464 ),  *(float*)&x322
            )) : 0 ) ) {
SOURCE(42831, 12)
            return(1);
            };
         };
      l←v32500 = (* (( (ptr) l←v32500)+1) );
      goto lab←L100100;
      lab←L100097: ;
      };
SOURCE(42854, 15)
   present←v19508 = 0;
SOURCE(42439, 430)
   return(present←v19508);
   }

static void TableStatistics←P4740(formal←c0828, table←v19568)
   word formal←c0828;
   word table←v19568;
   {
   W10 var←c81604;
   register ptr gf←c81636 =  (ptr) &globalframe;
   /* declaration of count←v19612 skipped */ 
   /* declaration of min←v19640 skipped */ 
   /* declaration of max←v19668 skipped */ 
   word avg←v19696;
   /* declaration of var←c77220 skipped */ 
   /* declaration of total←v32656 skipped */ 
   /* TableStatistics: */ 
SOURCE(42875, 502)
   {
      word tmpAddr323;
      tmpAddr323 = (word) (( (ptr) &var←c81604)+7)/* var←c77220 */ ;
      (*  (ptr) tmpAddr323 ) = ( ((word)  (fPt) Count←P8952) );
      (* (( (ptr) tmpAddr323) + 1) ) = 1;
      };
SOURCE(43269, 17)
   (* (( (ptr) &var←c81604)+9)/* total←v32656 */  ) = (*  (ptr) &fc115 );
SOURCE(43288, 9)
   (* (( (ptr) &var←c81604)+4)/* count←v19612 */  ) = 0;
SOURCE(43299, 16)
   (* (( (ptr) &var←c81604)+5)/* min←v19640 */  ) =  (word) -1;
SOURCE(43317, 7)
   (* (( (ptr) &var←c81604)+6)/* max←v19668 */  ) = 0;
SOURCE(43326, 32)
   {
      word var←c77252;
      word pd324;
      pd324 = (* (( (ptr) (* (( (ptr) gf←c81636)+234)/* var←c72196 */  ))+13) );
      var←c77252 = (word) ( *( (fPt) ((*  (ptr) pd324 ))))(table←v19568, (word) (( (bPt) &var←c81604)+28)/* var←c77220 */ , pd324)
      ;
      };
SOURCE(43360, 17)
   {
      word x325;
      *(float*)&avg←v19696 = (
         x325 = (* (( (ptr) &var←c81604)+9)/* total←v32656 */  ),  *(float*)&x325
         ) / (float)(unsigned)(* (( (ptr) &var←c81604)+4)/* count←v19612 */  );
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0828 ) = (* (( (ptr) &var←c81604)+4)/* count←v19612 */  );
   (* (( (ptr) formal←c0828)+1) ) = (* (( (ptr) &var←c81604)+5)/* min←v19640 */  );
   (* (( (ptr) formal←c0828)+2) ) = (* (( (ptr) &var←c81604)+6)/* max←v19668 */  );
   (* (( (ptr) formal←c0828)+3) ) = avg←v19696;
   return;
   }

static word Count←P8952(key←v65088, val←v65116, formal←c81700)
   word key←v65088;
   word val←v65116;
   word formal←c81700;
   {
   register ptr gf←c81668 =  (ptr) &globalframe;
   word quit←v65160;
   word list←v32700;
   word itemsInBucket←v32728 = 0;
   formal←c81700 = (formal←c81700 - 28);
   /* Count: */ 
SOURCE(42965, 299)
SOURCE(42965, 299)
   quit←v65160 = 0;
SOURCE(42999, 6)
   list←v32700 = XR←Narrow(val←v65116, (* (( (ptr) gf←c81668)+24) ));
SOURCE(43058, 17)
   (* (( (ptr) formal←c81700)+4) ) = ((* (( (ptr) formal←c81700)+4) ) + 1);
SOURCE(43077, 85)
   {
      register word l←v32856;
      l←v32856 = list←v32700;
      lab←L100105: ;
      if ((l←v32856 != 0)) {
         }
      else {
         goto lab←L100102;
         };
SOURCE(43129, 33)
      itemsInBucket←v32728 = (itemsInBucket←v32728 + 1);
      l←v32856 = (* (( (ptr) l←v32856)+1) );
      goto lab←L100105;
      lab←L100102: ;
      };
SOURCE(43173, 29)
   {
      word x326;
      (* (( (ptr) formal←c81700)+5) ) = (x326 = (* (( (ptr) formal←c81700)+5) ),
         MIN( (unsigned) , x326, itemsInBucket←v32728));
      };
SOURCE(43204, 29)
   {
      word x327;
      (* (( (ptr) formal←c81700)+6) ) = (x327 = (* (( (ptr) formal←c81700)+6) ),
         MAX( (unsigned) , x327, itemsInBucket←v32728));
      };
SOURCE(43235, 29)
   {
      word x328;
      *(float*)(( (ptr) formal←c81700)+9) = (
         x328 = (* (( (ptr) formal←c81700)+9) ),  *(float*)&x328
         ) + (float)(unsigned)itemsInBucket←v32728;
      };
SOURCE(42965, 299)
   return(quit←v65160);
   }

static word CopyLineList←P4800(l←v19756)
   word l←v19756;
   {
   register ptr gf←c81732 =  (ptr) &globalframe;
   word copyList←v19884;
   word z←v32984 = 0;
   /* CopyLineList: */ 
SOURCE(43383, 245)
SOURCE(43383, 245)
   copyList←v19884 = 0;
SOURCE(43487, 27)
   if ((l←v19756 == 0)) {
SOURCE(43503, 11)
      return(0);
      };
SOURCE(43516, 29)
   {
      word var←c77284;
      var←c77284 = XR←NewObject(8, (* (( (ptr) gf←c81732)+24) ));
      (*  (ptr) var←c77284 ) = (*  (ptr) l←v19756 );
      copyList←v19884 = var←c77284;
      };
SOURCE(43547, 12)
   z←v32984 = copyList←v19884;
SOURCE(43561, 67)
   lab←L100108: ;
   l←v19756 = (* (( (ptr) l←v19756)+1) );
   if ((l←v19756 != 0)) {
      }
   else {
      goto lab←L100106;
      };
SOURCE(43589, 27)
   {
      word var←c77316;
      var←c77316 = XR←NewObject(8, (* (( (ptr) gf←c81732)+24) ));
      (*  (ptr) var←c77316 ) = (*  (ptr) l←v19756 );
      (* (( (ptr) z←v32984)+1) ) = var←c77316;
      };
SOURCE(43618, 10)
   z←v32984 = (* (( (ptr) z←v32984)+1) );
   goto lab←L100108;
   lab←L100106: ;
SOURCE(43383, 245)
   return(copyList←v19884);
   }

static void SaveLineTable←P4860(formal←c01078)
   word formal←c01078;
   {
   W7 var←c81764;
   /* declaration of ggData←v20028 skipped */ 
   register ptr gf←c81796 =  (ptr) &globalframe;
   /* declaration of var←c77348 skipped */ 
   var←c81764.f4/* ggData←v20028 */  = formal←c01078;
   /* SaveLineTable: */ 
SOURCE(43643, 285)
   {
      word tmpAddr329;
      tmpAddr329 = (word) (( (ptr) &var←c81764)+5)/* var←c77348 */ ;
      (*  (ptr) tmpAddr329 ) = ( ((word)  (fPt) CopyLines←P9060) );
      (* (( (ptr) tmpAddr329) + 1) ) = 1;
      };
SOURCE(43827, 44)
   {
      word pd330;
      pd330 = (* (( (ptr) (* (( (ptr) gf←c81796)+234)/* var←c72196 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd330 ))))((* ((( (ptr) (* (( (ptr) var←c81764.f4/* ggData←v20028 */ )+17) ))+7)) ), pd330);
      };
SOURCE(43873, 55)
   {
      word var←c77380;
      word pd331;
      pd331 = (* (( (ptr) (* (( (ptr) gf←c81796)+234)/* var←c72196 */  ))+13) );
      var←c77380 = (word) ( *( (fPt) ((*  (ptr) pd331 ))))((* (( (ptr) (* (( (ptr) var←c81764.f4/* ggData←v20028 */ )+17) ))+6)
          ), (word) (( (bPt) &var←c81764)+20)/* var←c77348 */ , pd331);
      };
   }

static word CopyLines←P9060(key←v65220, val←v65248, formal←c81860)
   word key←v65220;
   word val←v65248;
   word formal←c81860;
   {
   register ptr gf←c81828 =  (ptr) &globalframe;
   word quit←v65292;
   word inserted←v33156;
   formal←c81860 = (formal←c81860 - 20);
   /* CopyLines: */ 
SOURCE(43684, 133)
SOURCE(43684, 133)
   quit←v65292 = 0;
SOURCE(43722, 72)
   {
      word pd332;
      pd332 = (* (( (ptr) (* (( (ptr) gf←c81828)+234)/* var←c72196 */  ))+10) );
      inserted←v33156 = (word) ( *( (fPt) ((*  (ptr) pd332 ))))((* (( (ptr) (* (( (ptr) (* (( (ptr) formal←c81860)+4) ))+17) ))+7)
          ), key←v65220, val←v65248, pd332);
      };
SOURCE(43796, 21)
   if ((0 == inserted←v33156)) {
SOURCE(43817, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(43684, 133)
   return(quit←v65292);
   }

static void RestoreLineTable←P4920(ggData←v20088)
   word ggData←v20088;
   {
   word temp←v33200;
   /* RestoreLineTable: */ 
SOURCE(43934, 184)
SOURCE(43978, 49)
   temp←v33200 = (* (( (ptr) (* (( (ptr) ggData←v20088)+17) ))+7) );
SOURCE(44029, 56)
   (* (( (ptr) (* (( (ptr) ggData←v20088)+17) ))+7) ) = (* (( (ptr) (* (( (ptr) ggData←v20088)+17) ))+6) );
SOURCE(44087, 31)
   (* (( (ptr) (* (( (ptr) ggData←v20088)+17) ))+6) ) = temp←v33200;
   }

static void FlushLineTable←P4980(ggData←v20148)
   word ggData←v20148;
   {
   register ptr gf←c81892 =  (ptr) &globalframe;
   /* FlushLineTable: */ 
SOURCE(44124, 88)
SOURCE(44173, 39)
   {
      word pd333;
      pd333 = (* (( (ptr) (* (( (ptr) gf←c81892)+234)/* var←c72196 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd333 ))))((* ((( (ptr) (* (( (ptr) ggData←v20148)+17) ))+6)) ), pd333);
      };
   }

static word CardFromLine←P5040(line←v20208)
   word line←v20208;
   {
   word key←v20252;
   /* CardFromLine: */ 
SOURCE(44218, 78)
SOURCE(44274, 22)
   key←v20252 = (* (( (ptr) line←v20208)+1) );
SOURCE(44218, 78)
   return(key←v20252);
   }

static void AddLineToTable←P5100(ggData←v20312, line←v20340)
   word ggData←v20312;
   word line←v20340;
   {
   register ptr gf←c81924 =  (ptr) &globalframe;
   word key←v33244;
   word found←v33272 = 0;
   word newValue←v33300 = 0;
   word val←v33328 = 0;
   word list←v33356 = 0;
   /* AddLineToTable: */ 
SOURCE(44302, 516)
SOURCE(44356, 30)
   key←v33244 = (word) CardFromLine←P5040(line←v20340);
SOURCE(44449, 59)
   {
      W2 var←c77412;
      {
         word pd334;
         pd334 = (* (( (ptr) (* (( (ptr) gf←c81924)+234)/* var←c72196 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd334 ))))((word) &var←c77412, (* (( (ptr) (* (( (ptr) ggData←v20312)+17) ))+6) ), key←v33244, pd334)
         ;
         };
      val←v33328 = var←c77412.f1;
      found←v33272 = var←c77412.f0;
      };
SOURCE(44510, 308)
   if ((0 == found←v33272)) {
SOURCE(44546, 17)
      {
         word var←c77444;
         word var←c77476;
         var←c77444 = XR←NewObject(8, (* (( (ptr) gf←c81924)+24) ));
         var←c77476 = var←c77444;
         (*  (ptr) var←c77476 ) = line←v20340;
         list←v33356 = var←c77444;
         };
SOURCE(44565, 61)
      {
         word pd335;
         pd335 = (* (( (ptr) (* (( (ptr) gf←c81924)+234)/* var←c72196 */  ))+9) );
         newValue←v33300 = (word) ( *( (fPt) ((*  (ptr) pd335 ))))((* (( (ptr) (* (( (ptr) ggData←v20312)+17) ))+6) ), key←v33244, list←v33356, pd335)
         ;
         };
SOURCE(44628, 21)
      if ((0 == newValue←v33300)) {
SOURCE(44649, 5)
         (void) XR←RaiseUnnamedError();
         };
      }
   else {
SOURCE(44693, 18)
      list←v33356 = XR←Narrow(val←v33328, (* (( (ptr) gf←c81924)+24) ));
SOURCE(44713, 23)
      {
         word var←c77508;
         var←c77508 = XR←NewObject(8, (* (( (ptr) gf←c81924)+24) ));
         (*  (ptr) var←c77508 ) = line←v20340;
         (* (( (ptr) var←c77508)+1) ) = list←v33356;
         list←v33356 = var←c77508;
         };
SOURCE(44738, 61)
      {
         word pd336;
         pd336 = (* (( (ptr) (* (( (ptr) gf←c81924)+234)/* var←c72196 */  ))+9) );
         newValue←v33300 = (word) ( *( (fPt) ((*  (ptr) pd336 ))))((* (( (ptr) (* (( (ptr) ggData←v20312)+17) ))+6) ), key←v33244, list←v33356, pd336)
         ;
         };
SOURCE(44801, 17)
      if ((0 != newValue←v33300)) {
SOURCE(44818, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
   }

static void DrawFeatureList←P5160(formal←c01079, alignObjects←v20428, formal←c01080)
   word formal←c01079;
   word alignObjects←v20428;
   word formal←c01080;
   {
   W15 var←c81956;
   /* declaration of dc←v20400 skipped */ 
   /* declaration of ggData←v20456 skipped */ 
   register ptr gf←c81988 =  (ptr) &globalframe;
   /* declaration of var←c77540 skipped */ 
   /* declaration of var←c77572 skipped */ 
   /* declaration of zip←v33552 skipped */ 
   /* declaration of rect←v33580 skipped */ 
   word viewerToClient←v33608;
   W2 var←c0873;
   (* (( (ptr) &var←c81956)+4)/* dc←v20400 */  ) = formal←c01079;
   (* (( (ptr) &var←c81956)+5)/* ggData←v20456 */  ) = formal←c01080;
   /* DrawFeatureList: */ 
SOURCE(44832, 2151)
   {
      word tmpAddr337;
      tmpAddr337 = (word) (( (ptr) &var←c81956)+6)/* var←c77540 */ ;
      (*  (ptr) tmpAddr337 ) = ( ((word)  (fPt) DrawCircleAux←P9180) );
      (* (( (ptr) tmpAddr337) + 1) ) = 1;
      };
   {
      word tmpAddr338;
      tmpAddr338 = (word) (( (ptr) &var←c81956)+8)/* var←c77572 */ ;
      (*  (ptr) tmpAddr338 ) = ( ((word)  (fPt) DrawLineAux←P9120) );
      (* (( (ptr) tmpAddr338) + 1) ) = 1;
      };
SOURCE(46028, 15)
   (* (( (ptr) &var←c81956)+10)/* zip←v33552 */  ) = 0;
SOURCE(46045, 52)
   {
      word pd339;
      pd339 = (* (( (ptr) (* (( (ptr) gf←c81988)+240)/* var←c73828 */  ))+7) );
      (void) ( *( (fPt) ((*  (ptr) pd339 ))))((word) (( (bPt) &var←c81956)+44)/* rect←v33580 */ , (* (( (ptr) &var←c81956)+5)/* ggData←v20456 */  ), pd339)
      ;
      };
SOURCE(46141, 109)
   {
      word pd340;
      pd340 = (* (( (ptr) (* (( (ptr) gf←c81988)+240)/* var←c73828 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd340 ))))((word) &var←c0873, (* (( (ptr) &var←c81956)+5)/* ggData←v20456 */  ), pd340);
      };
   viewerToClient←v33608 = var←c0873.f1;
SOURCE(46252, 68)
   {
      word pd341;
      pd341 = (* (( (ptr) (* (( (ptr) gf←c81988)+249)/* var←c77604 */  ))+46) );
      (void) ( *( (fPt) ((*  (ptr) pd341 ))))((word) (( (bPt) &var←c81956)+44)/* rect←v33580 */ , viewerToClient←v33608, (*  (W4Pt) (
            ( (ptr) &var←c81956)+11)/* rect←v33580 */  ), pd341);
      };
SOURCE(46350, 30)
   {
      word pd342;
      pd342 = (* (( (ptr) (* (( (ptr) gf←c81988)+250)/* var←c77636 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd342 ))))((* (( (ptr) &var←c81956)+4)/* dc←v20400 */  ), (*  (ptr) &fc115 ), pd342);
      };
SOURCE(46433, 23)
   {
      word pd343;
      pd343 = (* (( (ptr) (* (( (ptr) gf←c81988)+251)/* var←c77668 */  ))+11) );
      (* (( (ptr) &var←c81956)+10)/* zip←v33552 */  ) = (word) ( *( (fPt) ((*  (ptr) pd343 ))))((* (( (ptr) &var←c81956)+4)/* dc←v20400 */  ), 0, pd343)
      ;
      };
SOURCE(46458, 30)
   {
      word pd344;
      pd344 = (* (( (ptr) (* (( (ptr) gf←c81988)+250)/* var←c77636 */  ))+68) );
      (void) ( *( (fPt) ((*  (ptr) pd344 ))))((* (( (ptr) &var←c81956)+4)/* dc←v20400 */  ), (*  (ptr) &fc345 ), pd344);
      };
SOURCE(46490, 35)
   {
      word pd346;
      pd346 = (* (( (ptr) (* (( (ptr) gf←c81988)+250)/* var←c77636 */  ))+52) );
      (void) ( *( (fPt) ((*  (ptr) pd346 ))))((* (( (ptr) &var←c81956)+4)/* dc←v20400 */  ), (* (( (ptr) gf←c81988)+7)/* alignmentColor←v8040 */  ), pd346)
      ;
      };
SOURCE(46527, 405)
   {
      register word list←v33772;
      list←v33772 = alignObjects←v20428;
      lab←L100112: ;
      if ((list←v33772 != 0)) {
         }
      else {
         goto lab←L100109;
         };
SOURCE(46603, 329)
      {
         word var←c77700;
         word var←c77732;
         var←c77700 = (* (( (ptr) (*  (ptr) list←v33772 ))+1) );
         if ((var←c77700 == 0)) {
            goto lab←L100113;
            };
         var←c77732 = XR←GetReferentType(var←c77700);
         {
            word var←c77796;
            var←c77796 = (* (( (ptr) gf←c81988)+21) );
            if ((var←c77796 == var←c77732)) {
               {
                  word slopeLine←v33900;
                  slopeLine←v33900 = var←c77700;
SOURCE(46665, 27)
                  (void) DrawLineAux←P9120((*  (ptr) slopeLine←v33900 ), (word) (( (bPt) &var←c81956)+32)/* var←c77572 */ );
                  };
               goto endif0347;
               };
            if ((var←c77796 == var←c77732)) {
               {
                  word angleLine←v33944;
                  angleLine←v33944 = var←c77700;
SOURCE(46722, 27)
                  (void) DrawLineAux←P9120((*  (ptr) angleLine←v33944 ), (word) (( (bPt) &var←c81956)+32)/* var←c77572 */ );
                  };
               goto endif0347;
               };
            if (((* (( (ptr) gf←c81988)+26) ) == var←c77732)) {
               {
                  word circle←v33988;
                  circle←v33988 = var←c77700;
SOURCE(46778, 89)
                  if ((0 != (* (( (ptr) gf←c81988)+9)/* useCache←v8096 */  ))) {
SOURCE(46795, 34)
                     (void) DrawCircleAux←P9180((*  (ptr) circle←v33988 ), (word) (( (bPt) &var←c81956)+24)/* var←c77540 */ );
                     }
                  else {
SOURCE(46829, 38)
                     {
                        word pd348;
                        pd348 = (* (( (ptr) (* (( (ptr) gf←c81988)+252)/* var←c77764 */  ))+13) );
                        (void) ( *( (fPt) ((*  (ptr) pd348 ))))((* (( (ptr) &var←c81956)+4)/* dc←v20400 */  ), (*  (ptr) circle←v33988 ), pd348);
                        };
                     };
                  };
               goto endif0347;
               };
            if (((* (( (ptr) gf←c81988)+18) ) == var←c77732)) {
               {
                  word distanceLine←v34032;
                  distanceLine←v34032 = var←c77700;
SOURCE(46891, 41)
                  {
                     word pd349;
                     pd349 = (* (( (ptr) (* (( (ptr) gf←c81988)+252)/* var←c77764 */  ))+11) );
                     (void) ( *( (fPt) ((*  (ptr) pd349 ))))((* (( (ptr) &var←c81956)+4)/* dc←v20400 */  ), distanceLine←v34032, (*  (W4Pt) (( (ptr) &var←c81956)+11)
                        /* rect←v33580 */  ), (*  (ptr) &fc345 ), 0, pd349);
                     };
                  };
               goto endif0347;
               };
            lab←L100113: ;
SOURCE(46945, 5)
            (void) XR←RaiseUnnamedError();
            goto endif0347;
            endif0347: ;
            };
         };
      list←v33772 = (* (( (ptr) list←v33772)+1) );
      goto lab←L100112;
      lab←L100109: ;
      };
SOURCE(46961, 22)
   {
      word pd350;
      pd350 = (* (( (ptr) (* (( (ptr) gf←c81988)+251)/* var←c77668 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd350 ))))((* ((( (ptr) &var←c81956)+10)/* zip←v33552 */ ) ), pd350);
      };
   }

static void DrawLineAux←P9120(line←v33684, formal←c82052)
   word line←v33684;
   word formal←c82052;
   {
   register ptr gf←c82020 =  (ptr) &globalframe;
   formal←c82052 = (formal←c82052 - 32);
   /* DrawLineAux: */ 
SOURCE(44937, 438)
SOURCE(45015, 76)
   if ((0 != (word) LineIsPresent←P4680((* (( (ptr) formal←c82052)+5) ), line←v33684))) {
SOURCE(45051, 12)
      return;
      }
   else {
SOURCE(45063, 28)
      (void) AddLineToTable←P5100((* (( (ptr) formal←c82052)+5) ), line←v33684);
      };
SOURCE(45093, 282)
   {
      float tf351;
      word x352;
      word x353;
      float tf355;
      word x356;
      word x357;
      word x358;
      if ((FABS((
            x352 = (*  (ptr) line←v33684 ),  *(float*)&x352
            ), tf351) < (
         x353 = (*  (ptr) &fc345 ),  *(float*)&x353
         ))) { goto then0354;};
      if ((FABS(((
            x356 = (*  (ptr) line←v33684 ),  *(float*)&x356
            ) - (
            x357 = (*  (ptr) &fc308 ),  *(float*)&x357
            )), tf355) < (
         x358 = (*  (ptr) &fc345 ),  *(float*)&x358
         ))) {
         then0354: ;
SOURCE(45183, 33)
         {
            word pd359;
            pd359 = (* (( (ptr) (* (( (ptr) gf←c82020)+250)/* var←c77636 */  ))+52) );
            (void) ( *( (fPt) ((*  (ptr) pd359 ))))((* (( (ptr) formal←c82052)+4) ), (* (( (ptr) gf←c82020)+8)/* checkerColor←v8068 */  ), pd359)
            ;
            };
SOURCE(45218, 43)
         {
            word pd360;
            pd360 = (* (( (ptr) (* (( (ptr) gf←c82020)+252)/* var←c77764 */  ))+11) );
            (void) ( *( (fPt) ((*  (ptr) pd360 ))))((* (( (ptr) formal←c82052)+4) ), line←v33684, (*  (W4Pt) (( (ptr) formal←c82052)+11)
                ), (*  (ptr) &fc115 ), (* (( (ptr) formal←c82052)+10) ), pd360);
            };
SOURCE(45288, 35)
         {
            word pd361;
            pd361 = (* (( (ptr) (* (( (ptr) gf←c82020)+250)/* var←c77636 */  ))+52) );
            (void) ( *( (fPt) ((*  (ptr) pd361 ))))((* (( (ptr) formal←c82052)+4) ), (* (( (ptr) gf←c82020)+7)/* alignmentColor←v8040 */  ), pd361)
            ;
            };
         }
      else {
SOURCE(45332, 43)
         {
            word pd362;
            pd362 = (* (( (ptr) (* (( (ptr) gf←c82020)+252)/* var←c77764 */  ))+11) );
            (void) ( *( (fPt) ((*  (ptr) pd362 ))))((* (( (ptr) formal←c82052)+4) ), line←v33684, (*  (W4Pt) (( (ptr) formal←c82052)+11)
                ), (*  (ptr) &fc115 ), (* (( (ptr) formal←c82052)+10) ), pd362);
            };
         };
      };
   }

static void DrawCircleAux←P9180(circle←v33744, formal←c82116)
   word circle←v33744;
   word formal←c82116;
   {
   register ptr gf←c82084 =  (ptr) &globalframe;
   word cachedCircle←v34076 = 0;
   word circleCache←v34104;
   formal←c82116 = (formal←c82116 - 24);
   /* DrawCircleAux: */ 
SOURCE(45405, 615)
SOURCE(45510, 71)
   {
      word pd363;
      pd363 = (* (( (ptr) (* (( (ptr) gf←c82084)+240)/* var←c73828 */  ))+47) );
      circleCache←v34104 = (word) ( *( (fPt) ((*  (ptr) pd363 ))))((* ((( (ptr) formal←c82116)+5)) ), pd363);
      };
SOURCE(45583, 437)
   {
      word pd364;
      pd364 = (* (( (ptr) (* (( (ptr) gf←c82084)+253)/* var←c77828 */  ))+6) );
      cachedCircle←v34076 = (word) ( *( (fPt) ((*  (ptr) pd364 ))))(circleCache←v34104, (* (( (ptr) circle←v33744)+2) ), pd364)
      ;
      };
   if ((cachedCircle←v34076 != 0)) {
SOURCE(45661, 82)
      {
         word pd365;
         pd365 = (* (( (ptr) (* (( (ptr) gf←c82084)+253)/* var←c77828 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd365 ))))((* (( (ptr) formal←c82116)+4) ), (*  (W2Pt) circle←v33744 ), cachedCircle←v34076, pd365)
         ;
         };
      }
   else {
SOURCE(45792, 48)
      {
         word pd366;
         pd366 = (* (( (ptr) (* (( (ptr) gf←c82084)+253)/* var←c77828 */  ))+5) );
         (void) ( *( (fPt) ((*  (ptr) pd366 ))))(circleCache←v34104, (* (( (ptr) circle←v33744)+2) ), pd366);
         };
SOURCE(45842, 178)
      {
         word pd367;
         pd367 = (* (( (ptr) (* (( (ptr) gf←c82084)+253)/* var←c77828 */  ))+6) );
         cachedCircle←v34076 = (word) ( *( (fPt) ((*  (ptr) pd367 ))))(circleCache←v34104, (* (( (ptr) circle←v33744)+2) ), pd367)
         ;
         };
      if ((cachedCircle←v34076 != 0)) {
SOURCE(45920, 69)
         {
            word pd368;
            pd368 = (* (( (ptr) (* (( (ptr) gf←c82084)+253)/* var←c77828 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd368 ))))((* (( (ptr) formal←c82116)+4) ), (*  (W2Pt) circle←v33744 ), cachedCircle←v34076, pd368)
            ;
            };
         }
      else {
SOURCE(45989, 31)
         {
            word pd369;
            pd369 = (* (( (ptr) (* (( (ptr) gf←c82084)+252)/* var←c77764 */  ))+13) );
            (void) ( *( (fPt) ((*  (ptr) pd369 ))))((* (( (ptr) formal←c82116)+4) ), circle←v33744, pd369);
            };
         };
      };
   }

static word HasVisibleObjects←P5220(alignBag←v20600)
   word alignBag←v20600;
   {
   word var←c20644;
   /* HasVisibleObjects: */ 
SOURCE(46989, 206)
SOURCE(47060, 135)
   {
      word tc370;
      if (((0 == (word) EmptySlopeLines←P1380(alignBag←v20600)) || ((* (( (ptr) alignBag←v20600)+1) ) != 0)) || ((* (( (ptr) alignBag←v20600)+2)
       ) != 0)) {
         tc370 =  (word)  (unsigned) 1;
         }
      else {
         tc370 =  (word)  (unsigned) ((* (( (ptr) alignBag←v20600)+3) ) != 0);
         };
      return(tc370);
      };
   }

static void DrawAlignBagRegardless←P5280(dc←v20704, alignBag←v20732, ggData←v20760)
   word dc←v20704;
   word alignBag←v20732;
   word ggData←v20760;
   {
   word slopeLines←v34148 = 0;
   /* DrawAlignBagRegardless: */ 
SOURCE(47201, 396)
SOURCE(47331, 29)
   if ((alignBag←v20732 == 0)) {
SOURCE(47354, 6)
      return;
      };
SOURCE(47362, 39)
   slopeLines←v34148 = (word) ListOfSlopeLines←P1980(alignBag←v20732);
SOURCE(47403, 39)
   (void) DrawFeatureList←P5160(dc←v20704, slopeLines←v34148, ggData←v20760);
SOURCE(47444, 48)
   (void) DrawFeatureList←P5160(dc←v20704, (* (( (ptr) alignBag←v20732)+1) ), ggData←v20760);
SOURCE(47494, 50)
   (void) DrawFeatureList←P5160(dc←v20704, (* (( (ptr) alignBag←v20732)+2) ), ggData←v20760);
SOURCE(47546, 51)
   (void) DrawFeatureList←P5160(dc←v20704, (* (( (ptr) alignBag←v20732)+3) ), ggData←v20760);
   }

static void MakeFiltersGarbage←P5340(filters←v20820)
   word filters←v20820;
   {
   W6 var←c82148;
   /* declaration of var←c77892 skipped */ 
   /* MakeFiltersGarbage: */ 
SOURCE(47603, 448)
   {
      word tmpAddr371;
      tmpAddr371 = (word) (( (ptr) &var←c82148)+4)/* var←c77892 */ ;
      (*  (ptr) tmpAddr371 ) = ( ((word)  (fPt) UnlinkBag←P9480) );
      (* (( (ptr) tmpAddr371) + 1) ) = 1;
      };
SOURCE(47927, 29)
   (void) UnlinkBag←P9480((* (( (ptr) filters←v20820)+1) ), (word) (( (bPt) &var←c82148)+16)/* var←c77892 */ );
SOURCE(47958, 32)
   (void) UnlinkBag←P9480((* (( (ptr) filters←v20820)+2) ), (word) (( (bPt) &var←c82148)+16)/* var←c77892 */ );
SOURCE(47992, 27)
   (void) UnlinkBag←P9480((* (( (ptr) filters←v20820)+8) ), (word) (( (bPt) &var←c82148)+16)/* var←c77892 */ );
SOURCE(48021, 30)
   (void) UnlinkBag←P9480((* (( (ptr) filters←v20820)+9) ), (word) (( (bPt) &var←c82148)+16)/* var←c77892 */ );
   }

static void UnlinkBag←P9480(bag←v34352, formal←c82212)
   word bag←v34352;
   word formal←c82212;
   {
   W6 var←c82180;
   /* declaration of var←c77924 skipped */ 
   formal←c82212 = (formal←c82212 - 16);
   var←c82180.f0 = formal←c82212;
   /* UnlinkBag: */ 
SOURCE(47658, 263)
   {
      word tmpAddr372;
      tmpAddr372 = (word) (( (ptr) &var←c82180)+4)/* var←c77924 */ ;
      (*  (ptr) tmpAddr372 ) = ( ((word)  (fPt) DoUnLink←P9540) );
      (* (( (ptr) tmpAddr372) + 1) ) = 1;
      };
SOURCE(47865, 22)
   if ((bag←v34352 == 0)) {
SOURCE(47881, 6)
      return;
      };
SOURCE(47889, 32)
   (void) WalkSliceTriggers←P420(bag←v34352, (word) (( (bPt) &var←c82180)+16)/* var←c77924 */ );
   }

static word DoUnLink←P9540(feature←v67784, formal←c82276)
   word feature←v67784;
   word formal←c82276;
   {
   register ptr gf←c82244 =  (ptr) &globalframe;
   word done←v67828;
   formal←c82276 = (formal←c82276 - 16);
   /* DoUnLink: */ 
SOURCE(47696, 152)
SOURCE(47696, 152)
   done←v67828 = 0;
SOURCE(47726, 122)
   {
      word var←c77956;
      var←c77956 = (* (( (ptr) feature←v67784)+1) );
      if ((var←c77956 == 0)) {
         goto lab←L100114;
         };
      if (((* (( (ptr) gf←c82244)+15) ) == XR←GetReferentType(var←c77956))) {
         {
            word sd←v34424;
            sd←v34424 = var←c77956;
SOURCE(47780, 68)
            if (((*  (ptr) sd←v34424 ) != 0)) {
SOURCE(47803, 29)
               {
                  word pd373;
                  pd373 = (* (( (ptr) (* (( (ptr) gf←c82244)+233)/* var←c71972 */  ))+71) );
                  (void) ( *( (fPt) ((*  (ptr) pd373 ))))((*  (ptr) (sd←v34424) ), pd373);
                  };
SOURCE(47834, 14)
               (*  (ptr) sd←v34424 ) = 0;
               };
            };
         }
      else {
         lab←L100114: ;
         };
      };
SOURCE(47696, 152)
   return(done←v67828);
   }

static void Init←P5400()
   {
   register ptr gf←c82308 =  (ptr) &globalframe;
   /* Init: */ 
SOURCE(48057, 88)
SOURCE(48075, 36)
   (* (( (ptr) gf←c82308)+5)/* emptyTriggerBag←v5800 */  ) = (word) CreateTriggerBag←P60();
SOURCE(48113, 32)
   (* (( (ptr) gf←c82308)+6)/* emptyAlignBag←v6332 */  ) = (word) CreateAlignBag←P1140();
   }

/* file: GGAlignImpl, module: GGAlignImpl, compiled at: July 13, 1993 1:25:54 pm PDT */ 
extern void XR←install←GGAlignImpl() {
   NoName←Q9648();
   }
extern void XR←run←GGAlignImpl() { XR←Start(&globalframe); }