/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: February 5, 1993 2:05:58 pm PST */
/* C2C version: October 7, 1992 (native) */
/* ref-counting: off */
/* file: GGSegmentImplA, module: GGSegmentImplA */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1437427825,2755230924] GGSegmentImplA";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
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; W5 r;} W13;
typedef W8 *W8Pt;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {W8 f; W8 r;} W16;
typedef W6 *W6Pt;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W8 f; word r;} W9;
#define SOURCE(p, l) /* source p, l */
static float fc70 = 2.0;
static float fc78 = 0.0;
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc115 = -1.0;
#define FMIN(x, y, tx, ty)  ( (tx=((float) x)) <= (ty=((float) y)) ? tx : ty )
#define FMAX(x, y, tx, ty)  ( (tx=((float) x)) >= (ty=((float) y)) ? tx : ty )
static float fc156 = 0.707106816;
static float fc158 = 1.0;
static float fc182 = 0.9999;
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static float fc513 = 8608.12;
static float fc521 = 8607.22;
static float fc699 = 0.5;
static void NoName←Q9660();
static void GGSegmentImplA←P0();
static void RegisterSegmentClass←P60();
static word FetchSegmentClass←P120();
static word CopySegment←P180();
static void CopyLooks←P240();
static void SetDefaults←P300();
static word SameLooks←P360();
static word SameShape←P420();
static word EqualSequence←P480();
static void ReverseSegment←P540();
static void OpenUpSegment←P600();
static void TransformSegment←P660();
static void TranslateSegment←P720();
static void MoveEndPointSegment←P780();
static void DrawLine←P840();
static void EdgePathProc←P7212();
static word PatternProc←P7272();
static word BuildConicClass←P900();
static void ConicSetStrokeWidth←P960();
static word MakeConic←P1020();
static void ConicGetParams←P1080();
static void ConicSetRatio←P1140();
static void ConicSetControlPoint←P1200();
static word ConicBoundBox←P1260();
static word ConicTightBox←P1320();
static word ConicSameShape←P1380();
static void UpdateConicBoundBox←P1440();
static word ConicCopyData←P1500();
static void ConicReverse←P1560();
static void ConicBuildPath←P1620();
static void ConicBuildPathTransform←P1680();
static void ConicTransform←P1740();
static void ConicEndPointMoved←P1800();
static void ConicControlPointMoved←P1860();
static void TransformEndPoints←P1920();
static word ConicDescribe←P1980();
static void ConicFileOut←P2040();
static word ConicFileIn←P2100();
static void ConicFieldSet←P2160();
static word ConicFieldGet←P2220();
static void ConicControlPointGet←P2280();
static word ConicControlPointCount←P2340();
static void ConicClosestControlPoint←P2400();
static word ConicAsPolyline←P2460();
static word ConicPolyline←P2640();
static word BuildBezierClass←P2700();
static void BZSetStrokeWidth←P2760();
static word MakeBezier←P2820();
static void BezierGetParams←P2880();
static word BZBoundBox←P2940();
static word BZTightBox←P3000();
static void UpdateBZBoundBox←P3060();
static word BZCopyData←P3120();
static void BZReverse←P3180();
static void BZTransform←P3240();
static void BZEndPointMoved←P3300();
static void BZControlPointMoved←P3360();
static void BZControlPointMovedTo←P3420();
static void BZBuildPathTransform←P3480();
static void NoName←Q7524();
static void BZTransformPath←P3540();
static void BZSpecialTransformPath←P3600();
static void NoName←Q7680();
static void BZRestorePath←P3660();
static void BZControlPointGet←P3720();
static word BZControlPointCount←P3780();
static void BZFieldSet←P3840();
static word BZFieldGet←P3900();
static void BZClosestControlPoint←P3960();
static word BZAsSimpleCurve←P4020();
static word BZAsPolyline←P4080();
static void BZJointNormal←P4140();
static void BZAddJoint←P4200();
static word BZDescribe←P4260();
static void BZFileOut←P4320();
static word BZFileIn←P4380();
static word BuildCubicSplineClass←P4440();
static word CSSameShape←P4500();
static void CSSetStrokeWidth←P4560();
static word MakeCubicSpline←P4620();
static word CubicSplineGetParams←P4680();
static word CSBoundBox←P4740();
static word CSTightBox←P4800();
static void UpdateCSBoundBox←P4860();
static word CSCopyData←P4920();
static void CSReverse←P4980();
static void CSBuildPathTransform←P5040();
static void NoName←Q7932();
static void CSTransform←P5100();
static void CSEndPointMoved←P5160();
static void CSControlPointMoved←P5220();
static word CSDescribe←P5280();
static void CSFileOut←P5340();
static word CSFileIn←P5400();
static void CSFieldSet←P5460();
static word CSFieldGet←P5520();
static void CSControlPointGet←P5580();
static word CSControlPointCount←P5640();
static void CSClosestControlPoint←P5700();
static word CSAsPolyline←P5760();
static void CSCPNormal←P5820();
static void CSJointNormal←P5880();
static void CSAddJoint←P5940();
static word CSControlPointAdd←P6000();
static word CSControlPointDelete←P6060();
static word CountSelected←P8856();
static void CSControlPointSet←P6120();
static void CSEndPointSet←P6180();
static void CurveBoundBox←P6240();
static void CurveBuildPath←P6300();
static void NoName←Q9012();
static void CurveClosestPoint←P6360();
static word PointIsInBox←P6420();
static void KnotBoundBox←P6480();
static void FPToPoint←P6540();
static void PointToFP←P6600();
static word FindNearestPath←P6660();
static word PathNumToCPIndex←P6720();
static word GetPath←P6780();
static word PathFromConic←P6840();
static void bproc←P9360();
static word PathFromList←P6900();
static void Init←P6960();
static struct {unsigned f; char r[48];} string1 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\043\211\212\366\300\343\003\307\242\100\164\005\004\162\145\163\164\214\216\257\300\043\211\212\366\300\343\003\307\242\100\164\261\000\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string3 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[4];} string4 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\164\000\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\100\200\000\000"};
static struct {unsigned f; char r[28];} string7 = {1638425, "\006\011\000\001\004\001\024\001\040\001\100\124\001\100\130\001\100\134\001\100\140\001\100\144\001\000\000"};
static struct {unsigned f; char r[4];} string8 = {131076, "\216\251\000"};
static struct {unsigned f; char r[48];} string9 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\176\067\335\331\300\021\260\123\113\100\200\005\004\162\145\163\164\214\216\257\300\176\067\335\331\300\021\260\123\113\100\200\261\000\000\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\125\255\150\161\300\244\071\174\314\105\204\000\000"};
static struct {unsigned f; char r[4];} string11 = {131074, "\004\015\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\100\244\000\000"};
static struct {unsigned f; char r[16];} string13 = {851984, "\257\300\125\255\150\161\300\244\071\174\314\106\354\000\000"};
static struct {unsigned f; char r[12];} string14 = {524296, "\011\000\004\000\040\000\004\001\000\000\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300U\255hq\300\2449|\314A|\000\000"};
static struct {unsigned f; char r[4];} string16 = {131074, "\003\007\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\125\255\150\161\300\244\071\174\314\105\220\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\017\106\176\051\300\361\373\025\153\100\214\000\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\102\220\000\000"};
static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\176\067\335\331\300\021\260\123\113\100\200\000\000"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\125\255\150\161\300\244\071\174\314\103\214\000\000"};
static struct {unsigned f; char r[4];} string22 = {131074, "\003\010\000"};
static struct {unsigned f; char r[16];} string23 = {851984, "\257\300\325\040\343\357\300\152\277\324\231\100\164\000\000"};
static struct {unsigned f; char r[4];} string24 = {131074, "\003\004\000"};
static struct {unsigned f; char r[16];} string25 = {851984, "\257\300\325\040\343\357\300\152\277\324\231\100\200\000\000"};
static struct {unsigned f; char r[8];} string26 = {393224, "Bezier\000"};
static struct {unsigned f; char r[4];} string27 = {196612, " %g"};
static struct {unsigned f; char r[16];} string28 = {983056, "Parabolic Conic"};
static struct {unsigned f; char r[8];} string29 = {458760, "Natural"};
static struct {unsigned f; char r[16];} string30 = {917520, "Cyclic Natural\000"};
static struct {unsigned f; char r[8];} string31 = {458760, "BSpline"};
static struct {unsigned f; char r[16];} string32 = {917520, "Type: Natural \000"};
static struct {unsigned f; char r[24];} string33 = {1310744, "Type: CyclicNatural \000\000\000"};
static struct {unsigned f; char r[16];} string34 = {917520, "Type: BSpline \000"};
static struct {unsigned f; char r[4];} string35 = {196612, "%g "};
static struct {unsigned f; char r[8];} string36 = {327688, "Type:\000\000"};
static struct {unsigned f; char r[16];} string37 = {851984, "CyclicNatural\000\000"};
static struct {unsigned f; char r[8];} string38 = {458760, "Cyclic:"};
static struct {unsigned f; char r[8];} string39 = {327688, "Conic\000\000"};
static struct {unsigned f; char r[20];} string40 = {1114132, "CurveClosestPoint\000\000"};
static struct {unsigned f; char r[12];} string41 = {524300, "Gargoyle\000\000\000"};
static struct {unsigned f; char r[12];} string42 = {720908, "CubicSpline"};
static struct {unsigned f; char r[28];} string43 = {1703964, "SegmentClass %g is unknown\000"};
static struct {unsigned f; char r[16];} string44 = {851984, "\257\300\125\255\150\161\300\244\071\174\314\100\164\000\000"};
static struct {unsigned f; char r[12];} string45 = {720907, "\006\002\030\001\100\170\010\000\004\023\001"};
static struct {unsigned f; char r[16];} string46 = {851984, "\257\300\055\153\222\376\300\327\164\352\142\100\150\000\000"};
static struct {unsigned f; char r[16];} string47 = {851984, "\257\300\006<7[\300;CV\364@h\000\000"};
static struct {unsigned f; char r[16];} string48 = {851984, "\257\300\176\067\335\331\300\021\260\123\113\100\150\000\000"};
static struct {unsigned f; char r[16];} string49 = {851984, "\257\300\325\040\343\357\300\152\277\324\231\100\150\000\000"};
static struct {unsigned f; char r[16];} string50 = {851984, "\257\300\017\106\176\051\300\361\373\025\153\100\150\000\000"};
static struct {unsigned f; char r[16];} string51 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string52 = {851984, "\257\300\265\217\206\011\300\172\271\371\033\100\150\000\000"};
static struct {unsigned f; char r[16];} string53 = {851984, "\257\300\231\005\151\136\300\275\231\323\274\100\150\000\000"};
static struct {unsigned f; char r[16];} string54 = {851984, "\257\300\335\021\351\270\300\210\237\013\247\100\150\000\000"};
static struct {unsigned f; char r[16];} string55 = {851984, "\257\300\236\155\220\261\300\040\017\026\014\100\150\000\000"};
static struct {unsigned f; char r[16];} string56 = {851984, "\257\300\045\215\147\016\300\153\043\150\276\100\150\000\000"};
static struct {unsigned f; char r[8];} string57 = {1195856741, "gment"};
static struct {unsigned f; char r[16];} string58 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\150\000\000"};
static struct {unsigned f; char r[16];} string59 = {851984, "\257\300\104\154\010\164\300\126\073\363\036\100\150\000\000"};
static struct {unsigned f; char r[16];} string60 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string61 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\100\150\000\000"};
static struct {unsigned f; char r[16];} string62 = {851984, "\257\300\354\147\236\353\300\316\347\225\106\100\150\000\000"};
static struct {unsigned f; char r[16];} string63 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string64 = {851984, "\257\300\015\277\004\146\300\034\367\146\045\100\164\000\000"};
static struct {unsigned f; char r[16];} string65 = {851984, "\257\300\144\364\322\150\300\206\136\277\046\100\150\000\000"};
static struct {unsigned f; char r[16];} string66 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string67 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string68 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string69 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static struct {
   word f0[49]; 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; word f227; 
   word f228; word f229; word f230; word f231; 
   word f232; word f233; word f234; word f235; 
   word f236; word f237; word f238; word f239; 
   word f240; word f241; word f242; word f243; 
   word f244; word f245; word f246; word f247; 
   word f248; word f249; word f250; word f251; 
   word f252; word f253; word f254; word f255; 
   word f256; word f257; word f258; word f259; 
   word f260; word f261; word f262; word f263; 
   word f264; word f265; word f266; word f267; 
   word f268; word f269; word f270; word f271; 
   word f272; word f273; word f274; word f275; 
   word f276; word f277; word f278[29]; 
   } globalframe = {
   {0}, (word) Init←P6960, 0, (word) PathFromList←P6900, 
   0, (word) PathFromConic←P6840, 0, (word) GetPath←P6780, 
   0, (word) PathNumToCPIndex←P6720, 0, (word) FindNearestPath←P6660, 
   0, (word) PointToFP←P6600, 0, (word) FPToPoint←P6540, 
   0, (word) KnotBoundBox←P6480, 0, (word) PointIsInBox←P6420, 
   0, (word) CurveClosestPoint←P6360, 0, (word) CurveBuildPath←P6300, 
   0, (word) CurveBoundBox←P6240, 0, (word) CSEndPointSet←P6180, 
   0, (word) CSControlPointSet←P6120, 0, (word) CSControlPointDelete←P6060, 
   0, (word) CSControlPointAdd←P6000, 0, (word) CSAddJoint←P5940, 
   0, (word) CSJointNormal←P5880, 0, (word) CSCPNormal←P5820, 
   0, (word) CSAsPolyline←P5760, 0, (word) CSClosestControlPoint←P5700, 
   0, (word) CSControlPointCount←P5640, 0, (word) CSControlPointGet←P5580, 
   0, (word) CSFieldGet←P5520, 0, (word) CSFieldSet←P5460, 
   0, (word) CSFileIn←P5400, 0, (word) CSFileOut←P5340, 
   0, (word) CSDescribe←P5280, 0, (word) CSControlPointMoved←P5220, 
   0, (word) CSEndPointMoved←P5160, 0, (word) CSTransform←P5100, 
   0, (word) CSBuildPathTransform←P5040, 0, (word) CSReverse←P4980, 
   0, (word) CSCopyData←P4920, 0, (word) UpdateCSBoundBox←P4860, 
   0, (word) CSTightBox←P4800, 0, (word) CSBoundBox←P4740, 
   0, (word) CubicSplineGetParams←P4680, 0, (word) MakeCubicSpline←P4620, 
   0, (word) CSSetStrokeWidth←P4560, 0, (word) CSSameShape←P4500, 
   0, (word) BuildCubicSplineClass←P4440, 0, (word) BZFileIn←P4380, 
   0, (word) BZFileOut←P4320, 0, (word) BZDescribe←P4260, 
   0, (word) BZAddJoint←P4200, 0, (word) BZJointNormal←P4140, 
   0, (word) BZAsPolyline←P4080, 0, (word) BZAsSimpleCurve←P4020, 
   0, (word) BZClosestControlPoint←P3960, 0, (word) BZFieldGet←P3900, 
   0, (word) BZFieldSet←P3840, 0, (word) BZControlPointCount←P3780, 
   0, (word) BZControlPointGet←P3720, 0, (word) BZRestorePath←P3660, 
   0, (word) BZSpecialTransformPath←P3600, 0, (word) BZTransformPath←P3540, 
   0, (word) BZBuildPathTransform←P3480, 0, (word) BZControlPointMovedTo←P3420, 
   0, (word) BZControlPointMoved←P3360, 0, (word) BZEndPointMoved←P3300, 
   0, (word) BZTransform←P3240, 0, (word) BZReverse←P3180, 
   0, (word) BZCopyData←P3120, 0, (word) UpdateBZBoundBox←P3060, 
   0, (word) BZTightBox←P3000, 0, (word) BZBoundBox←P2940, 
   0, (word) BezierGetParams←P2880, 0, (word) MakeBezier←P2820, 
   0, (word) BZSetStrokeWidth←P2760, 0, (word) BuildBezierClass←P2700, 
   0, (word) ConicPolyline←P2640, 0, (word) ConicAsPolyline←P2460, 
   0, (word) ConicClosestControlPoint←P2400, 0, (word) ConicControlPointCount←P2340, 
   0, (word) ConicControlPointGet←P2280, 0, (word) ConicFieldGet←P2220, 
   0, (word) ConicFieldSet←P2160, 0, (word) ConicFileIn←P2100, 
   0, (word) ConicFileOut←P2040, 0, (word) ConicDescribe←P1980, 
   0, (word) TransformEndPoints←P1920, 0, (word) ConicControlPointMoved←P1860, 
   0, (word) ConicEndPointMoved←P1800, 0, (word) ConicTransform←P1740, 
   0, (word) ConicBuildPathTransform←P1680, 0, (word) ConicBuildPath←P1620, 
   0, (word) ConicReverse←P1560, 0, (word) ConicCopyData←P1500, 
   0, (word) UpdateConicBoundBox←P1440, 0, (word) ConicSameShape←P1380, 
   0, (word) ConicTightBox←P1320, 0, (word) ConicBoundBox←P1260, 
   0, (word) ConicSetControlPoint←P1200, 0, (word) ConicSetRatio←P1140, 
   0, (word) ConicGetParams←P1080, 0, (word) MakeConic←P1020, 
   0, (word) ConicSetStrokeWidth←P960, 0, (word) BuildConicClass←P900, 
   0, (word) DrawLine←P840, 0, (word) MoveEndPointSegment←P780, 
   0, (word) TranslateSegment←P720, 0, (word) TransformSegment←P660, 
   0, (word) OpenUpSegment←P600, 0, (word) ReverseSegment←P540, 
   0, (word) EqualSequence←P480, 0, (word) SameShape←P420, 
   0, (word) SameLooks←P360, 0, (word) SetDefaults←P300, 
   0, (word) CopyLooks←P240, 0, (word) CopySegment←P180, 
   0, (word) FetchSegmentClass←P120, 0, (word) RegisterSegmentClass←P60, 
   0, (word) GGSegmentImplA←P0, {0}
   };

static void NoName←Q9660()
   {
   register ptr gf←c01263 =  (ptr) &globalframe;
   word var←c78068;
   (* (( (ptr) gf←c01263)+11) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c01263)+13) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c01263)+14) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string2);
   (* (( (ptr) gf←c01263)+15) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (* (( (ptr) gf←c01263)+16) ) = (word) XR←GetTypeIndex((word) &string8, 0, (word) &string4);
   (* (( (ptr) gf←c01263)+17) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string2);
   (* (( (ptr) gf←c01263)+19) ) = (word) XR←GetTypeIndex((word) &string10, 0, (word) &string11);
   (* (( (ptr) gf←c01263)+20) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string4);
   (* (( (ptr) gf←c01263)+21) ) = (word) XR←GetTypeIndex((word) &string13, 0, (word) &string14);
   (* (( (ptr) gf←c01263)+22) ) = (word) XR←GetTypeIndex((word) &string15, 0, (word) &string16);
   (* (( (ptr) gf←c01263)+23) ) = (word) XR←GetTypeIndexS((word) (&string17));
   (* (( (ptr) gf←c01263)+24) ) = (word) XR←GetTypeIndexS((word) (&string18));
   (* (( (ptr) gf←c01263)+25) ) = (word) XR←GetTypeIndexS((word) (&string19));
   (* (( (ptr) gf←c01263)+26) ) = (word) XR←GetTypeIndexS((word) (&string20));
   (* (( (ptr) gf←c01263)+27) ) = (word) XR←GetTypeIndex((word) &string21, 0, (word) &string22);
   (* (( (ptr) gf←c01263)+28) ) = (word) XR←GetTypeIndex((word) &string23, 0, (word) &string24);
   (* (( (ptr) gf←c01263)+29) ) = (word) XR←GetTypeIndexS((word) (&string25));
   (*  (ptr) (( (bPt) gf←c01263)+120) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+16) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c01263)+124) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c01263)+128) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c01263)+132) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string28);
   (*  (ptr) (( (bPt) gf←c01263)+136) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c01263)+140) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string30);
   (*  (ptr) (( (bPt) gf←c01263)+144) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string31);
   (*  (ptr) (( (bPt) gf←c01263)+148) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c01263)+152) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string33);
   (*  (ptr) (( (bPt) gf←c01263)+156) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string34);
   (*  (ptr) (( (bPt) gf←c01263)+160) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string35);
   (*  (ptr) (( (bPt) gf←c01263)+164) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string36);
   (*  (ptr) (( (bPt) gf←c01263)+168) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string37);
   (*  (ptr) (( (bPt) gf←c01263)+172) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string38);
   (*  (ptr) (( (bPt) gf←c01263)+176) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+16) ), (word) &string39);
   (*  (ptr) (( (bPt) gf←c01263)+180) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+16) ), (word) &string40);
   (*  (ptr) (( (bPt) gf←c01263)+184) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+16) ), (word) &string41);
   (*  (ptr) (( (bPt) gf←c01263)+188) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+16) ), (word) &string42);
   (*  (ptr) (( (bPt) gf←c01263)+192) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c01263)+13) ), (word) &string43);
   (void) XR←DeclareGlobalFrame((word) "GGSegmentImplA", &globalframe, (word) XR←GetTypeIndex((word) &string44, 0, (word) &string45)
      , (word) (( (bPt) gf←c01263)+1108)/* var←c64756 */ );
   var←c78068 = (word) XR←ImportInterface((word) "Atom", (word) XR←GetTypeIndexS((word) (&string46)), 16);
   (* (( (ptr) gf←c01263)+284)/* var←c64980 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67372289);
   var←c78068 = (word) XR←ImportInterface((word) "CodeTimer", (word) XR←GetTypeIndexS((word) (&string47)), 21);
   (* (( (ptr) gf←c01263)+304)/* var←c76980 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 526850);
   (void) XR←ImportProcS(var←c78068, 526338);
   var←c78068 = (word) XR←ImportInterface((word) "Cubic2", (word) XR←GetTypeIndexS((word) (&string48)), 5);
   (* (( (ptr) gf←c01263)+302)/* var←c70004 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 1076101890);
   var←c78068 = (word) XR←ImportInterface((word) "CubicPaths", (word) XR←GetTypeIndexS((word) (&string49)), 13);
   (* (( (ptr) gf←c01263)+291)/* var←c65492 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 68158211);
   (void) XR←ImportProcS(var←c78068, 202377731);
   (void) XR←ImportProcS(var←c78068, 69733122);
   (void) XR←ImportProcS(var←c78068, 786691);
   (void) XR←ImportProcS(var←c78068, 263681);
   (void) XR←ImportProcS(var←c78068, 787715);
   (void) XR←ImportProcS(var←c78068, 264449);
   (void) XR←ImportProcS(var←c78068, 67373057);
   (void) XR←ImportProcS(var←c78068, 67633154);
   var←c78068 = (word) XR←ImportInterface((word) "CubicSplines", (word) XR←GetTypeIndexS((word) (&string50)), 6);
   (* (( (ptr) gf←c01263)+290)/* var←c65460 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67634178);
   var←c78068 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string51)), 25);
   (* (( (ptr) gf←c01263)+283)/* var←c64852 */  ) = var←c78068;
   var←c78068 = (word) XR←ImportInterface((word) "GGBoundBox", (word) XR←GetTypeIndexS((word) (&string52)), 24);
   (* (( (ptr) gf←c01263)+287)/* var←c65172 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 527618);
   (void) XR←ImportProcS(var←c78068, 1314309);
   (void) XR←ImportProcS(var←c78068, 68681990);
   (void) XR←ImportProcS(var←c78068, 67371777);
   var←c78068 = (word) XR←ImportInterface((word) "GGCoreOps", (word) XR←GetTypeIndexS((word) (&string53)), 37);
   (* (( (ptr) gf←c01263)+289)/* var←c65332 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67641090);
   var←c78068 = (word) XR←ImportInterface((word) "GGCubic2", (word) XR←GetTypeIndexS((word) (&string54)), 3);
   (* (( (ptr) gf←c01263)+301)/* var←c69812 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 69468674);
   var←c78068 = (word) XR←ImportInterface((word) "GGParseIn", (word) XR←GetTypeIndexS((word) (&string55)), 26);
   (* (( (ptr) gf←c01263)+297)/* var←c66260 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67376385);
   (void) XR←ImportProcS(var←c78068, 67376129);
   (void) XR←ImportProcS(var←c78068, 67372033);
   (void) XR←ImportProcS(var←c78068, 525570);
   (void) XR←ImportProcS(var←c78068, 67376897);
   (void) XR←ImportProcS(var←c78068, 134483713);
   var←c78068 = (word) XR←ImportInterface((word) "GGParseOut", (word) XR←GetTypeIndexS((word) (&string56)), 15);
   (* (( (ptr) gf←c01263)+296)/* var←c66196 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 787714);
   var←c78068 = (word) XR←ImportInterface((word) &string57, (word) XR←GetTypeIndexS((word) (&string58)), 47);
   (* (( (ptr) gf←c01263)+295)/* var←c65748 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67641090);
   (void) XR←ImportProcS(var←c78068, 67376129);
   (void) XR←ImportProcS(var←c78068, 135015682);
   (void) XR←ImportProcS(var←c78068, 270019332);
   (void) XR←ImportProcS(var←c78068, 135801860);
   (void) XR←ImportProcS(var←c78068, 67905794);
   (void) XR←ImportProcS(var←c78068, 134752258);
   (void) XR←ImportProcS(var←c78068, 134752002);
   (void) XR←ImportProcS(var←c78068, 336602627);
   var←c78068 = (word) XR←ImportInterface((word) "GGTransform", (word) XR←GetTypeIndexS((word) (&string59)), 7);
   (* (( (ptr) gf←c01263)+292)/* var←c65524 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 135004418);
   var←c78068 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string60)), 42);
   (* (( (ptr) gf←c01263)+286)/* var←c65108 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67379457);
   var←c78068 = (word) XR←ImportInterface((word) "Imager", (word) XR←GetTypeIndexS((word) (&string61)), 84);
   (* (( (ptr) gf←c01263)+294)/* var←c65684 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 1328387);
   (void) XR←ImportProcS(var←c78068, 1591046);
   (void) XR←ImportProcS(var←c78068, 536578);
   (void) XR←ImportProcS(var←c78068, 540930);
   (void) XR←ImportProcS(var←c78068, 540674);
   var←c78068 = (word) XR←ImportInterface((word) "ImagerPath", (word) XR←GetTypeIndexS((word) (&string62)), 18);
   (* (( (ptr) gf←c01263)+305)/* var←c77588 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 2097157);
   var←c78068 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string63)), 55);
   (* (( (ptr) gf←c01263)+293)/* var←c65588 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 135013122);
   (void) XR←ImportProcS(var←c78068, 67634689);
   var←c78068 = (word) XR←ImportInterface((word) "IO", (word) XR←GetTypeIndexS((word) (&string64)), 103);
   (* (( (ptr) gf←c01263)+285)/* var←c65044 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 1071364);
   (void) XR←ImportProcS(var←c78068, 528642);
   (void) XR←ImportProcS(var←c78068, 1063171);
   (void) XR←ImportProcS(var←c78068, 67910402);
   var←c78068 = (word) XR←ImportInterface((word) "List", (word) XR←GetTypeIndexS((word) (&string65)), 28);
   (* (( (ptr) gf←c01263)+288)/* var←c65268 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67633666);
   var←c78068 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string66)), 11);
   (* (( (ptr) gf←c01263)+298)/* var←c66644 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67633154);
   var←c78068 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string67)), 36);
   (* (( (ptr) gf←c01263)+299)/* var←c66836 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67372289);
   var←c78068 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string68)), 43);
   (* (( (ptr) gf←c01263)+303)/* var←c72340 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 67896323);
   var←c78068 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string69)), 21);
   (* (( (ptr) gf←c01263)+300)/* var←c69588 */  ) = var←c78068;
   (void) XR←ImportProcS(var←c78068, 68158722);
   (void) XR←ImportProcS(var←c78068, 135270914);
   (void) XR←ImportProcS(var←c78068, 68161794);
   var←c78068 = (word) XR←ExportInterface((word) &string57, (word) XR←GetTypeIndexS((word) (&string58)), 47);
   (* (( (ptr) gf←c01263)+306)/* var←c78100 */  ) = var←c78068;
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+748)/* var←c63316 */ , 69468677);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+972)/* var←c64212 */ , 69206789);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+508)/* var←c62356 */ , 67896579);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+740)/* var←c63284 */ , 537134593);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+964)/* var←c64180 */ , 470025985);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+956)/* var←c64148 */ , 526338);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+948)/* var←c64116 */ , 788738);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+500)/* var←c62324 */ , 67373825);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1068)/* var←c64596 */ , 527362);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1084)/* var←c64660 */ , 67374337);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1076)/* var←c64628 */ , 527874);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1060)/* var←c64564 */ , 67636994);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1052)/* var←c64532 */ , 67637250);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1036)/* var←c64468 */ , 266753);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1028)/* var←c64436 */ , 267009);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1092)/* var←c64692 */ , 67376129);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1100)/* var←c64724 */ , 267521);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1020)/* var←c64404 */ , 529922);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1012)/* var←c64372 */ , 792322);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+1004)/* var←c64340 */ , 1054723);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+996)/* var←c64308 */ , 1579268);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+324)/* var←c61620 */ , 67901954);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+316)/* var←c61588 */ , 67640066);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+644)/* var←c62900 */ , 2104328);
   (void) XR←ExportProcS(var←c78068, (word) (( (bPt) gf←c01263)+668)/* var←c62996 */ , 1056003);
   }

static void GGSegmentImplA←P0(formal←c0150, formal←c0149)
   word formal←c0150;
   word formal←c0149;
   {
   register ptr gf←c78132 =  (ptr) &globalframe;
   /* GGSegmentImplA: */ 
SOURCE(341, 51804)
SOURCE(1704, 30)
   (* (( (ptr) gf←c78132)+4)/* defaultStrokeWidth←v4540 */  ) = (*  (ptr) &fc70 );
SOURCE(1736, 35)
   (* (( (ptr) gf←c78132)+5)/* defaultStrokeEnd←v4568 */  ) = 2;
SOURCE(1858, 16)
   (* (( (ptr) gf←c78132)+7)/* Problem←v4680 */  ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c78132)+283)/* var←c64852 */  ))+28)
    ) );
SOURCE(48443, 20)
   (* (( (ptr) gf←c78132)+8)/* useBBox←v7956 */  ) = 1;
SOURCE(52139, 6)
   (void) Init←P6960();
   }

static void RegisterSegmentClass←P60(classDef←v8548)
   word classDef←v8548;
   {
   register ptr gf←c78164 =  (ptr) &globalframe;
   /* RegisterSegmentClass: */ 
SOURCE(1912, 106)
SOURCE(1971, 47)
   {
      word var←c64884;
      var←c64884 = XR←NewObject(8, (* (( (ptr) gf←c78164)+11) ));
      (*  (ptr) var←c64884 ) = classDef←v8548;
      (* (( (ptr) var←c64884)+1) ) = (* (( (ptr) gf←c78164)+6)/* segmentClasses←v4596 */  );
      (* (( (ptr) gf←c78164)+6)/* segmentClasses←v4596 */  ) = var←c64884;
      };
   }

static word FetchSegmentClass←P120(type←v8608)
   word type←v8608;
   {
   register ptr gf←c78196 =  (ptr) &globalframe;
   word class←v8652;
   /* FetchSegmentClass: */ 
SOURCE(2024, 289)
SOURCE(2024, 289)
   class←v8652 = 0;
SOURCE(2102, 111)
   {
      register word l←v23776;
      l←v23776 = (* (( (ptr) gf←c78196)+6)/* segmentClasses←v4596 */  );
      lab←L100003: ;
      if ((l←v23776 != 0)) {
         }
      else {
         goto lab←L100000;
         };
SOURCE(2166, 47)
      if (((*  (ptr) (*  (ptr) l←v23776 ) ) == type←v8608)) {
SOURCE(2192, 21)
         return((* (( (ptr) (*  (ptr) l←v23776 ))+1) ));
         };
      l←v23776 = (* (( (ptr) l←v23776)+1) );
      goto lab←L100003;
      lab←L100000: ;
      };
SOURCE(2224, 89)
   {
      word var←c64916;
      {
         word var←c64948;
         {
            word pd71;
            pd71 = (* (( (ptr) (* (( (ptr) gf←c78196)+284)/* var←c64980 */  ))+9) );
            var←c64948 = (word) ( *( (fPt) ((*  (ptr) pd71 ))))(type←v8608, pd71);
            };
         {
            W2 var←c65012;
            var←c65012.f0 = 11;
            var←c65012.f1 = var←c64948;
            {
               word pd72;
               pd72 = (* (( (ptr) (* (( (ptr) gf←c78196)+285)/* var←c65044 */  ))+63) );
               var←c64916 = (word) ( *( (fPt) ((*  (ptr) pd72 ))))((* (( (ptr) gf←c78196)+48) ), var←c65012, pd72);
               };
            };
         };
      {
         word var←c0159;
         var←c0159 = var←c64916;
         (void) XR←RaiseError((* (( (ptr) gf←c78196)+7)/* Problem←v4680 */  ), (word) &var←c0159);
         };
      };
   }

static word CopySegment←P180(seg←v8712)
   word seg←v8712;
   {
   register ptr gf←c78228 =  (ptr) &globalframe;
   word copy←v8756;
   word copyData←v23904 = 0;
   /* CopySegment: */ 
SOURCE(2319, 639)
SOURCE(2319, 639)
   copy←v8756 = 0;
SOURCE(2406, 34)
   {
      word pd73;
      pd73 = (* (( (ptr) (*  (ptr) seg←v8712 ))+3) );
      copyData←v23904 = (word) ( *( (fPt) ((*  (ptr) pd73 ))))(seg←v8712, pd73);
      };
SOURCE(2442, 516)
   {
      word var←c65076;
      word var←c65140;
      word var←c65204;
      word var←c65236;
      word var←c65300;
      {
         word pd74;
         pd74 = (* (( (ptr) (* (( (ptr) gf←c78228)+286)/* var←c65108 */  ))+37) );
         var←c65076 = (word) ( *( (fPt) ((*  (ptr) pd74 ))))((* ((( (ptr) seg←v8712)+5)) ), pd74);
         };
      {
         word pd75;
         pd75 = (* (( (ptr) (* (( (ptr) gf←c78228)+287)/* var←c65172 */  ))+7) );
         var←c65140 = (word) ( *( (fPt) ((*  (ptr) pd75 ))))((* ((( (ptr) seg←v8712)+21)) ), pd75);
         };
      {
         word pd76;
         pd76 = (* (( (ptr) (* (( (ptr) gf←c78228)+287)/* var←c65172 */  ))+7) );
         var←c65204 = (word) ( *( (fPt) ((*  (ptr) pd76 ))))((* ((( (ptr) seg←v8712)+22)) ), pd76);
         };
      {
         word pd77;
         pd77 = (* (( (ptr) (* (( (ptr) gf←c78228)+288)/* var←c65268 */  ))+6) );
         var←c65236 = (word) ( *( (fPt) ((*  (ptr) pd77 ))))((* (( (ptr) seg←v8712)+25) ), 0, pd77);
         };
      var←c65300 = XR←NewObject(104, (* (( (ptr) gf←c78228)+15) ));
      (*  (ptr) var←c65300 ) = (*  (ptr) seg←v8712 );
      (* (( (ptr) var←c65300)+1) ) = (* (( (ptr) seg←v8712)+1) );
      (* (( (ptr) var←c65300)+2) ) = (* (( (ptr) seg←v8712)+2) );
      (* (( (ptr) var←c65300)+3) ) = (* (( (ptr) seg←v8712)+3) );
      (* (( (ptr) var←c65300)+4) ) = (* (( (ptr) seg←v8712)+4) );
      (* (( (ptr) var←c65300)+5) ) = var←c65076;
      (* (( (ptr) var←c65300)+6) ) = (* (( (ptr) seg←v8712)+6) );
      (* (( (ptr) var←c65300)+7) ) = (* (( (ptr) seg←v8712)+7) );
      (* (( (ptr) var←c65300)+8) ) = (* (( (ptr) seg←v8712)+8) );
      (*  (W2Pt) (( (ptr) var←c65300)+9) ) = (*  (W2Pt) (( (ptr) seg←v8712)+9) );
      (*  (W2Pt) (( (ptr) var←c65300)+11) ) = (*  (W2Pt) (( (ptr) seg←v8712)+11) );
      (* (( (ptr) var←c65300)+13) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c65300)+14) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c65300)+15) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c65300)+16) ) = (*  (ptr) &fc78 );
      (*  (W4Pt) (( (ptr) var←c65300)+17) ) = (*  (W4Pt) (( (ptr) seg←v8712)+17) );
      (* (( (ptr) var←c65300)+21) ) = var←c65140;
      (* (( (ptr) var←c65300)+22) ) = var←c65204;
      (* (( (ptr) var←c65300)+24) ) = copyData←v23904;
      (* (( (ptr) var←c65300)+25) ) = var←c65236;
      copy←v8756 = var←c65300;
      };
SOURCE(2319, 639)
   return(copy←v8756);
   }

static void CopyLooks←P240(from←v8816, to←v8844)
   word from←v8816;
   word to←v8844;
   {
   register ptr gf←c78260 =  (ptr) &globalframe;
   /* CopyLooks: */ 
SOURCE(2964, 290)
SOURCE(3011, 21)
   (* (( (ptr) to←v8844)+8) ) = (* (( (ptr) from←v8816)+8) );
SOURCE(3034, 33)
   (* (( (ptr) to←v8844)+2) ) = (* (( (ptr) from←v8816)+2) );
SOURCE(3069, 29)
   (* (( (ptr) to←v8844)+3) ) = (* (( (ptr) from←v8816)+3) );
SOURCE(3100, 23)
   (* (( (ptr) to←v8844)+4) ) = (* (( (ptr) from←v8816)+4) );
SOURCE(3125, 48)
   {
      word pd79;
      pd79 = (* (( (ptr) (* (( (ptr) gf←c78260)+286)/* var←c65108 */  ))+37) );
      (* (( (ptr) to←v8844)+5) ) = (word) ( *( (fPt) ((*  (ptr) pd79 ))))((* ((( (ptr) from←v8816)+5)) ), pd79);
      };
SOURCE(3206, 23)
   (* (( (ptr) to←v8844)+6) ) = (* (( (ptr) from←v8816)+6) );
SOURCE(3231, 23)
   (* (( (ptr) to←v8844)+7) ) = (* (( (ptr) from←v8816)+7) );
   }

static void SetDefaults←P300(seg←v8904, defaults←v8932)
   word seg←v8904;
   word defaults←v8932;
   {
   register ptr gf←c78292 =  (ptr) &globalframe;
   /* SetDefaults: */ 
SOURCE(3260, 364)
SOURCE(3327, 34)
   (* (( (ptr) seg←v8904)+3) ) = (* (( (ptr) defaults←v8932)+2) );
SOURCE(3363, 28)
   (* (( (ptr) seg←v8904)+4) ) = (* (( (ptr) defaults←v8932)+3) );
SOURCE(3393, 53)
   {
      word pd80;
      pd80 = (* (( (ptr) (* (( (ptr) gf←c78292)+286)/* var←c65108 */  ))+37) );
      (* (( (ptr) seg←v8904)+5) ) = (word) ( *( (fPt) ((*  (ptr) pd80 ))))((* ((( (ptr) defaults←v8932)+4)) ), pd80);
      };
SOURCE(3479, 28)
   (* (( (ptr) seg←v8904)+6) ) = (* (( (ptr) defaults←v8932)+5) );
SOURCE(3509, 28)
   (* (( (ptr) seg←v8904)+7) ) = (* (( (ptr) defaults←v8932)+6) );
SOURCE(3539, 32)
   (* (( (ptr) seg←v8904)+8) ) = (* (( (ptr) defaults←v8932)+7) );
SOURCE(3573, 51)
   {
      word pd81;
      pd81 = (* (( (ptr) (*  (ptr) seg←v8904 ))+28) );
      (void) ( *( (fPt) ((*  (ptr) pd81 ))))(seg←v8904, (*  (ptr) defaults←v8932 ), pd81);
      };
   }

static word SameLooks←P360(seg1←v8992, seg2←v9020)
   word seg1←v8992;
   word seg2←v9020;
   {
   register ptr gf←c78324 =  (ptr) &globalframe;
   word var←c9064;
   /* SameLooks: */ 
SOURCE(3630, 518)
SOURCE(3703, 47)
   if (((* (( (ptr) seg1←v8992)+4) ) != (* (( (ptr) seg2←v9020)+4) ))) {
SOURCE(3737, 13)
      return(0);
      };
SOURCE(3752, 53)
   if (((* (( (ptr) seg1←v8992)+3) ) != (* (( (ptr) seg2←v9020)+3) ))) {
SOURCE(3792, 13)
      return(0);
      };
SOURCE(3807, 57)
   {
      word x82;
      word x83;
      if (((
         x82 = (* (( (ptr) seg1←v8992)+2) ),  *(float*)&x82
         ) != (
         x83 = (* (( (ptr) seg2←v9020)+2) ),  *(float*)&x83
         ))) {
SOURCE(3851, 13)
         return(0);
         };
      };
SOURCE(3866, 187)
   if ((0 != (* (( (ptr) seg1←v8992)+4) ))) {
SOURCE(3888, 47)
      {
         word x84;
         word x85;
         if (((
            x84 = (* (( (ptr) seg1←v8992)+6) ),  *(float*)&x84
            ) != (
            x85 = (* (( (ptr) seg2←v9020)+6) ),  *(float*)&x85
            ))) {
SOURCE(3922, 13)
            return(0);
            };
         };
SOURCE(3937, 47)
      {
         word x86;
         word x87;
         if (((
            x86 = (* (( (ptr) seg1←v8992)+7) ),  *(float*)&x86
            ) != (
            x87 = (* (( (ptr) seg2←v9020)+7) ),  *(float*)&x87
            ))) {
SOURCE(3971, 13)
            return(0);
            };
         };
SOURCE(3986, 67)
      if ((0 == (word) EqualSequence←P480((* (( (ptr) seg1←v8992)+5) ), (* (( (ptr) seg2←v9020)+5) )))) {
SOURCE(4040, 13)
         return(0);
         };
      };
SOURCE(4058, 76)
   {
      word pd88;
      pd88 = (* (( (ptr) (* (( (ptr) gf←c78324)+289)/* var←c65332 */  ))+35) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd88 ))))((* (( (ptr) seg1←v8992)+8) ), (* (( (ptr) seg2←v9020)+8) ), pd88))) {
SOURCE(4121, 13)
         return(0);
         };
      };
SOURCE(4136, 12)
   return(1);
   }

static word SameShape←P420(seg1←v9124, seg2←v9152)
   word seg1←v9124;
   word seg2←v9152;
   {
   word same←v9196;
   /* SameShape: */ 
SOURCE(4154, 120)
SOURCE(4233, 41)
   {
      word pd89;
      pd89 = (* (( (ptr) (*  (ptr) seg1←v9124 ))+5) );
      return((word) ( *( (fPt) ((*  (ptr) pd89 ))))(seg1←v9124, seg2←v9152, pd89));
      };
   }

static word EqualSequence←P480(s1←v9256, s2←v9284)
   word s1←v9256;
   word s2←v9284;
   {
   word var←c9328;
   /* EqualSequence: */ 
SOURCE(4280, 190)
SOURCE(4344, 37)
   if (((*  (ptr) s1←v9256 ) != (*  (ptr) s2←v9284 ))) {
SOURCE(4368, 13)
      return(0);
      };
SOURCE(4383, 64)
   {
      register word i←v23960 = 0;
      register word noName←c65396;
      noName←c65396 = (*  (ptr) s1←v9256 );
      if ((i←v23960 >= noName←c65396)) {
         goto lab←L100004;
         };
      lab←L100007: ;
SOURCE(4412, 35)
      {
         word limit90;
         word x91;
         word limit92;
         word x93;
         if (((
            x91 = (* ((( (ptr) s1←v9256)+1)+(
                  limit90 = (*  (ptr) s1←v9256 ),
                  BCK(i←v23960, limit90)
                  )) ),  *(float*)&x91
            ) != (
            x93 = (* ((( (ptr) s2←v9284)+1)+(
                  limit92 = (*  (ptr) s2←v9284 ),
                  BCK(i←v23960, limit92)
                  )) ),  *(float*)&x93
            ))) {
SOURCE(4434, 13)
            return(0);
            };
         };
      i←v23960 = (i←v23960 + 1);
      if ((i←v23960 < noName←c65396)) {
         goto lab←L100007;
         };
      lab←L100004: ;
      };
SOURCE(4458, 12)
   return(1);
   }

static void ReverseSegment←P540(seg←v9388)
   word seg←v9388;
   {
   W2 temp←v24004;
   /* ReverseSegment: */ 
SOURCE(4476, 129)
SOURCE(4536, 13)
   temp←v24004 = (*  (W2Pt) (( (ptr) seg←v9388)+9) );
SOURCE(4551, 15)
   (*  (W2Pt) (( (ptr) seg←v9388)+9) ) = (*  (W2Pt) (( (ptr) seg←v9388)+11) );
SOURCE(4568, 13)
   (*  (W2Pt) (( (ptr) seg←v9388)+11) ) = temp←v24004;
SOURCE(4583, 22)
   {
      word pd94;
      pd94 = (* (( (ptr) (*  (ptr) seg←v9388 ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd94 ))))(seg←v9388, pd94);
      };
   }

static void OpenUpSegment←P600(seg←v9448)
   word seg←v9448;
   {
   register ptr gf←c78356 =  (ptr) &globalframe;
   /* OpenUpSegment: */ 
SOURCE(4611, 261)
SOURCE(4658, 214)
   if (((*  (ptr) (*  (ptr) seg←v9448 ) ) == (* (( (ptr) gf←c78356)+47) ))) {
SOURCE(4694, 203)
      {
         word data←v24048;
SOURCE(4696, 40)
         data←v24048 = XR←Narrow((* (( (ptr) seg←v9448)+24) ), (* (( (ptr) gf←c78356)+19) ));
SOURCE(4738, 134)
         if (((* (( (ptr) data←v24048)+1) ) == 3)) {
SOURCE(4767, 21)
            (* (( (ptr) data←v24048)+1) ) = 2;
SOURCE(4790, 82)
            {
               word var←c65428;
               {
                  word pd95;
                  pd95 = (* (( (ptr) (* (( (ptr) gf←c78356)+290)/* var←c65460 */  ))+8) );
                  var←c65428 = (word) ( *( (fPt) ((*  (ptr) pd95 ))))((*  (ptr) data←v24048 ), (* (( (ptr) data←v24048)+1) ), pd95);
                  };
               {
                  word pd96;
                  pd96 = (* (( (ptr) (* (( (ptr) gf←c78356)+291)/* var←c65492 */  ))+4) );
                  (* (( (ptr) data←v24048)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd96 ))))(var←c65428, 1, pd96);
                  };
               };
            };
         };
      };
   }

static void TransformSegment←P660(seg←v9508, transform←v9536)
   word seg←v9508;
   word transform←v9536;
   {
   register ptr gf←c78388 =  (ptr) &globalframe;
   /* TransformSegment: */ 
SOURCE(4904, 235)
SOURCE(5002, 49)
   {
      word pd97;
      pd97 = (* (( (ptr) (* (( (ptr) gf←c78388)+292)/* var←c65524 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd97 ))))((word) (( (bPt) seg←v9508)+36), transform←v9536, (*  (W2Pt) (( (ptr) seg←v9508)+9)
          ), pd97);
      };
SOURCE(5053, 49)
   {
      word pd98;
      pd98 = (* (( (ptr) (* (( (ptr) gf←c78388)+292)/* var←c65524 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd98 ))))((word) (( (bPt) seg←v9508)+44), transform←v9536, (*  (W2Pt) (( (ptr) seg←v9508)+11)
          ), pd98);
      };
SOURCE(5104, 35)
   {
      word pd99;
      pd99 = (* (( (ptr) (*  (ptr) seg←v9508 ))+8) );
      (void) ( *( (fPt) ((*  (ptr) pd99 ))))(seg←v9508, transform←v9536, pd99);
      };
   }

static void TranslateSegment←P720(seg←v9596, vector←v9624)
   word seg←v9596;
   W2 vector←v9624;
   {
   register ptr gf←c78420 =  (ptr) &globalframe;
   word transform←v24092 = 0;
   /* TranslateSegment: */ 
SOURCE(5145, 212)
SOURCE(5259, 64)
   {
      W2 var←c65556;
      var←c65556.f0 = vector←v9624.f0;
      var←c65556.f1 = vector←v9624.f1;
      {
         word pd100;
         pd100 = (* (( (ptr) (* (( (ptr) gf←c78420)+293)/* var←c65588 */  ))+10) );
         transform←v24092 = (word) ( *( (fPt) ((*  (ptr) pd100 ))))(var←c65556, pd100);
         };
      };
SOURCE(5325, 32)
   (void) TransformSegment←P660(seg←v9596, transform←v24092);
   }

static void MoveEndPointSegment←P780(seg←v9684, lo←v9712, newPoint←v9740)
   word seg←v9684;
   word lo←v9712;
   W2 newPoint←v9740;
   {
   /* MoveEndPointSegment: */ 
SOURCE(5363, 174)
SOURCE(5442, 51)
   if ((0 != lo←v9712)) {
SOURCE(5453, 23)
      (*  (W2Pt) (( (ptr) seg←v9684)+9) ) = newPoint←v9740;
      }
   else {
SOURCE(5476, 17)
      (*  (W2Pt) (( (ptr) seg←v9684)+11) ) = newPoint←v9740;
      };
SOURCE(5495, 42)
   {
      word pd101;
      pd101 = (* (( (ptr) (*  (ptr) seg←v9684 ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd101 ))))(seg←v9684, lo←v9712, newPoint←v9740, pd101);
      };
   }

static void DrawLine←P840(dc←v9800, formal←c01401, formal←c01402, seg←v9884)
   word dc←v9800;
   W2 formal←c01401;
   W2 formal←c01402;
   word seg←v9884;
   {
   W13 var←c78452;
   /* declaration of p1←v9828 skipped */ 
   /* declaration of p2←v9856 skipped */ 
   register ptr gf←c78484 =  (ptr) &globalframe;
   /* declaration of var←c65620 skipped */ 
   /* declaration of var←c65652 skipped */ 
   (*  (W2Pt) (( (ptr) &var←c78452)+4)/* p1←v9828 */  ) = formal←c01401;
   (*  (W2Pt) (( (ptr) &var←c78452)+6)/* p2←v9856 */  ) = formal←c01402;
   /* DrawLine: */ 
SOURCE(5542, 566)
   {
      word tmpAddr102;
      tmpAddr102 = (word) (( (ptr) &var←c78452)+8)/* var←c65620 */ ;
      (*  (ptr) tmpAddr102 ) = ( ((word)  (fPt) PatternProc←P7272) );
      (* (( (ptr) tmpAddr102) + 1) ) = 1;
      };
   {
      word tmpAddr103;
      tmpAddr103 = (word) (( (ptr) &var←c78452)+10)/* var←c65652 */ ;
      (*  (ptr) tmpAddr103 ) = ( ((word)  (fPt) EdgePathProc←P7212) );
      (* (( (ptr) tmpAddr103) + 1) ) = 1;
      };
SOURCE(5618, 490)
   {
      word x104;
      word x105;
      if (((* (( (ptr) seg←v9884)+8) ) == 0) || ((
         x104 = (* (( (ptr) seg←v9884)+2) ),  *(float*)&x104
         ) == (
         x105 = (*  (ptr) &fc78 ),  *(float*)&x105
         ))) {
SOURCE(5663, 12)
         return;
         }
      else {
SOURCE(5677, 42)
         {
            word pd106;
            pd106 = (* (( (ptr) (* (( (ptr) gf←c78484)+294)/* var←c65684 */  ))+68) );
            (void) ( *( (fPt) ((*  (ptr) pd106 ))))(dc←v9800, (* (( (ptr) seg←v9884)+2) ), pd106);
            };
SOURCE(5721, 38)
         {
            word pd107;
            pd107 = (* (( (ptr) (* (( (ptr) gf←c78484)+294)/* var←c65684 */  ))+69) );
            (void) ( *( (fPt) ((*  (ptr) pd107 ))))(dc←v9800, (* (( (ptr) seg←v9884)+3) ), pd107);
            };
SOURCE(5761, 30)
         {
            word pd108;
            pd108 = (* (( (ptr) (* (( (ptr) gf←c78484)+294)/* var←c65684 */  ))+52) );
            (void) ( *( (fPt) ((*  (ptr) pd108 ))))(dc←v9800, (* (( (ptr) seg←v9884)+8) ), pd108);
            };
SOURCE(5793, 315)
         if ((0 != (* (( (ptr) seg←v9884)+4) ))) {
SOURCE(5812, 260)
            {
               /* declaration of pattern←v24192 skipped */ 
SOURCE(5940, 37)
               (* (( (ptr) &var←c78452)+12)/* pattern←v24192 */  ) = (* (( (ptr) seg←v9884)+5) );
SOURCE(5979, 91)
               {
                  word pd109;
                  pd109 = (* (( (ptr) (* (( (ptr) gf←c78484)+294)/* var←c65684 */  ))+75) );
                  (void) ( *( (fPt) ((*  (ptr) pd109 ))))(dc←v9800, (word) (( (bPt) &var←c78452)+40)/* var←c65652 */ , (*  (ptr) (* (( (ptr) &var←c78452)+12)
                     /* pattern←v24192 */  ) ), (word) (( (bPt) &var←c78452)+32)/* var←c65620 */ , (* (( (ptr) seg←v9884)+6) ), (* (( (ptr) seg←v9884)+7)
                      ), pd109);
                  };
               };
            }
         else {
SOURCE(6079, 29)
            {
               word pd110;
               pd110 = (* (( (ptr) (* (( (ptr) gf←c78484)+294)/* var←c65684 */  ))+73) );
               (void) ( *( (fPt) ((*  (ptr) pd110 ))))(dc←v9800, (*  (W2Pt) (( (ptr) &var←c78452)+4)/* p1←v9828 */  ), (*  (W2Pt) (( (ptr) &var←c78452)+6)
                  /* p2←v9856 */  ), pd110);
               };
            };
         };
      };
   }

static void EdgePathProc←P7212(moveTo←v52264, lineTo←v52292, curveTo←v52320, conicTo←v52348, arcTo←v52376, formal←c78516)
   word moveTo←v52264;
   word lineTo←v52292;
   word curveTo←v52320;
   word conicTo←v52348;
   word arcTo←v52376;
   word formal←c78516;
   {
   formal←c78516 = (formal←c78516 - 40);
   /* EdgePathProc: */ 
SOURCE(5814, 32)
SOURCE(5847, 10)
   (void) ( *( (fPt) ((*  (ptr) moveTo←v52264 ))))((*  (W2Pt) ((( (ptr) formal←c78516)+4)) ), moveTo←v52264);
SOURCE(5859, 10)
   (void) ( *( (fPt) ((*  (ptr) lineTo←v52292 ))))((*  (W2Pt) ((( (ptr) formal←c78516)+6)) ), lineTo←v52292);
   }

static word PatternProc←P7272(i←v24268, formal←c78548)
   word i←v24268;
   word formal←c78548;
   {
   word var←c24312;
   formal←c78548 = (formal←c78548 - 32);
   /* PatternProc: */ 
SOURCE(5874, 19)
SOURCE(5919, 18)
   {
      word limit111;
      return((* ((( (ptr) (* (( (ptr) formal←c78548)+12) ))+1)+(
            limit111 = (*  (ptr) (* (( (ptr) formal←c78548)+12) ) ),
            BCK(i←v24268, limit111)
            )) ));
      };
   }

static word BuildConicClass←P900()
   {
   register ptr gf←c78580 =  (ptr) &globalframe;
   word class←v10084;
   /* BuildConicClass: */ 
SOURCE(6260, 1053)
SOURCE(6260, 1053)
   class←v10084 = 0;
SOURCE(6335, 978)
   {
      word var←c65716;
      var←c65716 = XR←NewObject(116, (* (( (ptr) gf←c78580)+20) ));
      (*  (ptr) var←c65716 ) = (* (( (ptr) gf←c78580)+44) );
      (* (( (ptr) var←c65716)+1) ) = (word) (( (bPt) gf←c78580)+940)/* var←c64084 */ ;
      (* (( (ptr) var←c65716)+2) ) = (word) (( (bPt) gf←c78580)+932)/* var←c64052 */ ;
      (* (( (ptr) var←c65716)+3) ) = (word) (( (bPt) gf←c78580)+908)/* var←c63956 */ ;
      (* (( (ptr) var←c65716)+4) ) = (word) (( (bPt) gf←c78580)+900)/* var←c63924 */ ;
      (* (( (ptr) var←c65716)+5) ) = (word) (( (bPt) gf←c78580)+924)/* var←c64020 */ ;
      (* (( (ptr) var←c65716)+6) ) = (word) (( (bPt) gf←c78580)+892)/* var←c63892 */ ;
      (* (( (ptr) var←c65716)+7) ) = (word) (( (bPt) gf←c78580)+884)/* var←c63860 */ ;
      (* (( (ptr) var←c65716)+8) ) = (word) (( (bPt) gf←c78580)+876)/* var←c63828 */ ;
      (* (( (ptr) var←c65716)+9) ) = (word) (( (bPt) gf←c78580)+868)/* var←c63796 */ ;
      (* (( (ptr) var←c65716)+10) ) = (word) (( (bPt) gf←c78580)+860)/* var←c63764 */ ;
      (* (( (ptr) var←c65716)+11) ) = (word) (( (bPt) gf←c78580)+844)/* var←c63700 */ ;
      (* (( (ptr) var←c65716)+12) ) = (word) (( (bPt) gf←c78580)+836)/* var←c63668 */ ;
      (* (( (ptr) var←c65716)+13) ) = (word) (( (bPt) gf←c78580)+828)/* var←c63636 */ ;
      (* (( (ptr) var←c65716)+14) ) = (word) (( (bPt) gf←c78580)+820)/* var←c63604 */ ;
      (* (( (ptr) var←c65716)+15) ) = (word) (( (bPt) gf←c78580)+812)/* var←c63572 */ ;
      (* (( (ptr) var←c65716)+16) ) = (word) (( (bPt) gf←c78580)+804)/* var←c63540 */ ;
      (* (( (ptr) var←c65716)+17) ) = (word) (( (bPt) gf←c78580)+796)/* var←c63508 */ ;
      (* (( (ptr) var←c65716)+18) ) = (word) (( (bPt) gf←c78580)+276)/* var←c61428 */ ;
      (* (( (ptr) var←c65716)+19) ) = (word) (( (bPt) gf←c78580)+788)/* var←c63476 */ ;
      (* (( (ptr) var←c65716)+20) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c78580)+295)/* var←c65748 */  ))+42) );
      (* (( (ptr) var←c65716)+21) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c78580)+295)/* var←c65748 */  ))+43) );
      (* (( (ptr) var←c65716)+22) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c78580)+295)/* var←c65748 */  ))+44) );
      (* (( (ptr) var←c65716)+23) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c78580)+295)/* var←c65748 */  ))+45) );
      (* (( (ptr) var←c65716)+24) ) = (word) (( (bPt) gf←c78580)+780)/* var←c63444 */ ;
      (* (( (ptr) var←c65716)+25) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c78580)+295)/* var←c65748 */  ))+48) );
      (* (( (ptr) var←c65716)+26) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c78580)+295)/* var←c65748 */  ))+47) );
      (* (( (ptr) var←c65716)+27) ) = (* (( (ptr) (* (( (ptr) gf←c78580)+295)/* var←c65748 */  ))+49) );
      (* (( (ptr) var←c65716)+28) ) = (word) (( (bPt) gf←c78580)+980)/* var←c64244 */ ;
      class←v10084 = var←c65716;
      };
SOURCE(6260, 1053)
   return(class←v10084);
   }

static void ConicSetStrokeWidth←P960(seg←v10144, strokeWidth←v10172)
   word seg←v10144;
   word strokeWidth←v10172;
   {
   /* ConicSetStrokeWidth: */ 
SOURCE(7319, 119)
SOURCE(7383, 29)
   (* (( (ptr) seg←v10144)+2) ) = strokeWidth←v10172;
SOURCE(7414, 24)
   (void) UpdateConicBoundBox←P1440(seg←v10144);
   }

static word MakeConic←P1020(p0←v10232, p1←v10260, p2←v10288, r←v10316, props←v10344)
   W2 p0←v10232;
   W2 p1←v10260;
   W2 p2←v10288;
   word r←v10316;
   word props←v10344;
   {
   register ptr gf←c78612 =  (ptr) &globalframe;
   word seg←v10488;
   word data←v24340;
   /* MakeConic: */ 
SOURCE(7444, 622)
SOURCE(7444, 622)
   seg←v10488 = 0;
SOURCE(7547, 134)
   {
      word var←c65780;
      word var←c65812;
      var←c65780 = (word) PathFromConic←P6840(p0←v10232, p1←v10260, p2←v10288, r←v10316);
      var←c65812 = XR←NewObject(32, (* (( (ptr) gf←c78612)+22) ));
      (*  (ptr) var←c65812 ) = p1←v10260.f0;
      (* (( (ptr) var←c65812)+1) ) = p1←v10260.f1;
      (* (( (ptr) var←c65812)+2) ) = r←v10316;
      (*  (W4Pt) (( (ptr) var←c65812)+3) ) = (*  (W4Pt) (( (ptr) gf←c78612)+279)/* var←c64820 */  );
      (* (( (ptr) var←c65812)+7) ) = var←c65780;
      data←v24340 = var←c65812;
      };
SOURCE(7683, 357)
   {
      word var←c65844;
      word var←c65876;
      word var←c65908;
      word var←c65940;
      {
         word pd112;
         pd112 = (* (( (ptr) (* (( (ptr) gf←c78612)+295)/* var←c65748 */  ))+24) );
         var←c65844 = (word) ( *( (fPt) ((*  (ptr) pd112 ))))((* ((( (ptr) gf←c78612)+44)) ), pd112);
         };
      {
         word pd113;
         pd113 = (* (( (ptr) (* (( (ptr) gf←c78612)+287)/* var←c65172 */  ))+5) );
         var←c65876 = (word) ( *( (fPt) ((*  (ptr) pd113 ))))((*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), 0, 0, pd113)
         ;
         };
      {
         word pd114;
         pd114 = (* (( (ptr) (* (( (ptr) gf←c78612)+287)/* var←c65172 */  ))+5) );
         var←c65908 = (word) ( *( (fPt) ((*  (ptr) pd114 ))))((*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), 0, 0, pd114)
         ;
         };
      var←c65940 = XR←NewObject(104, (* (( (ptr) gf←c78612)+15) ));
      (*  (ptr) var←c65940 ) = var←c65844;
      (* (( (ptr) var←c65940)+2) ) = (* (( (ptr) gf←c78612)+4)/* defaultStrokeWidth←v4540 */  );
      (* (( (ptr) var←c65940)+3) ) = (* (( (ptr) gf←c78612)+5)/* defaultStrokeEnd←v4568 */  );
      (* (( (ptr) var←c65940)+6) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c65940)+7) ) = (*  (ptr) &fc115 );
      (* (( (ptr) var←c65940)+8) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c78612)+294)/* var←c65684 */  ))+54) ) );
      (*  (W2Pt) (( (ptr) var←c65940)+9) ) = p0←v10232;
      (*  (W2Pt) (( (ptr) var←c65940)+11) ) = p2←v10288;
      (* (( (ptr) var←c65940)+13) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c65940)+14) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c65940)+15) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c65940)+16) ) = (*  (ptr) &fc78 );
      (*  (W4Pt) (( (ptr) var←c65940)+17) ) = (*  (W4Pt) (( (ptr) gf←c78612)+279)/* var←c64820 */  );
      (* (( (ptr) var←c65940)+21) ) = var←c65876;
      (* (( (ptr) var←c65940)+22) ) = var←c65908;
      (* (( (ptr) var←c65940)+24) ) = data←v24340;
      (* (( (ptr) var←c65940)+25) ) = props←v10344;
      seg←v10488 = var←c65940;
      };
SOURCE(8042, 24)
   (void) UpdateConicBoundBox←P1440(seg←v10488);
SOURCE(7444, 622)
   return(seg←v10488);
   }

static void ConicGetParams←P1080(formal←c0236, seg←v10548)
   word formal←c0236;
   word seg←v10548;
   {
   register ptr gf←c78644 =  (ptr) &globalframe;
   W2 p0←v10592;
   W2 p1←v10620;
   W2 p2←v10648;
   word r←v10676;
   word data←v24384;
   /* ConicGetParams: */ 
SOURCE(8072, 170)
SOURCE(8156, 34)
   data←v24384 = XR←Narrow((* (( (ptr) seg←v10548)+24) ), (* (( (ptr) gf←c78644)+22) ));
SOURCE(8192, 11)
   p0←v10592 = (*  (W2Pt) (( (ptr) seg←v10548)+9) );
SOURCE(8205, 12)
   p1←v10620 = (*  (W2Pt) data←v24384 );
SOURCE(8219, 11)
   p2←v10648 = (*  (W2Pt) (( (ptr) seg←v10548)+11) );
SOURCE(8232, 10)
   r←v10676 = (* (( (ptr) data←v24384)+2) );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0236 ) = p0←v10592;
   (*  (W2Pt) (( (ptr) formal←c0236)+2) ) = p1←v10620;
   (*  (W2Pt) (( (ptr) formal←c0236)+4) ) = p2←v10648;
   (* (( (ptr) formal←c0236)+6) ) = r←v10676;
   return;
   }

static void ConicSetRatio←P1140(seg←v10736, r←v10764)
   word seg←v10736;
   word r←v10764;
   {
   register ptr gf←c78676 =  (ptr) &globalframe;
   word data←v24428;
   /* ConicSetRatio: */ 
SOURCE(8248, 187)
SOURCE(8303, 34)
   data←v24428 = XR←Narrow((* (( (ptr) seg←v10736)+24) ), (* (( (ptr) gf←c78676)+22) ));
SOURCE(8339, 10)
   (* (( (ptr) data←v24428)+2) ) = r←v10764;
SOURCE(8351, 58)
   (* (( (ptr) data←v24428)+7) ) = (word) PathFromConic←P6840((*  (W2Pt) (( (ptr) seg←v10736)+9) ), (*  (W2Pt) data←v24428 ), (*  (W2Pt) (
         ( (ptr) seg←v10736)+11) ), (* (( (ptr) data←v24428)+2) ));
SOURCE(8411, 24)
   (void) UpdateConicBoundBox←P1440(seg←v10736);
   }

static void ConicSetControlPoint←P1200(seg←v10824, p1←v10852)
   word seg←v10824;
   W2 p1←v10852;
   {
   register ptr gf←c78708 =  (ptr) &globalframe;
   word data←v24472;
   /* ConicSetControlPoint: */ 
SOURCE(8441, 198)
SOURCE(8505, 34)
   data←v24472 = XR←Narrow((* (( (ptr) seg←v10824)+24) ), (* (( (ptr) gf←c78708)+22) ));
SOURCE(8541, 12)
   (*  (W2Pt) data←v24472 ) = p1←v10852;
SOURCE(8555, 58)
   (* (( (ptr) data←v24472)+7) ) = (word) PathFromConic←P6840((*  (W2Pt) (( (ptr) seg←v10824)+9) ), (*  (W2Pt) data←v24472 ), (*  (W2Pt) (
         ( (ptr) seg←v10824)+11) ), (* (( (ptr) data←v24472)+2) ));
SOURCE(8615, 24)
   (void) UpdateConicBoundBox←P1440(seg←v10824);
   }

static word ConicBoundBox←P1260(seg←v10912)
   word seg←v10912;
   {
   word bBox←v10956;
   /* ConicBoundBox: */ 
SOURCE(8645, 79)
SOURCE(8645, 79)
   bBox←v10956 = 0;
SOURCE(8709, 15)
   bBox←v10956 = (* (( (ptr) seg←v10912)+21) );
SOURCE(8645, 79)
   return(bBox←v10956);
   }

static word ConicTightBox←P1320(seg←v11016)
   word seg←v11016;
   {
   word bBox←v11060;
   /* ConicTightBox: */ 
SOURCE(8730, 83)
SOURCE(8730, 83)
   bBox←v11060 = 0;
SOURCE(8794, 19)
   bBox←v11060 = (* (( (ptr) seg←v11016)+22) );
SOURCE(8730, 83)
   return(bBox←v11060);
   }

static word ConicSameShape←P1380(seg1←v11120, seg2←v11148)
   word seg1←v11120;
   word seg2←v11148;
   {
   register ptr gf←c78740 =  (ptr) &globalframe;
   word same←v11192;
   word seg1Data←v24516;
   word seg2Data←v24544;
   /* ConicSameShape: */ 
SOURCE(8818, 187)
SOURCE(8818, 187)
   same←v11192 = 1;
SOURCE(8893, 39)
   seg1Data←v24516 = XR←Narrow((* (( (ptr) seg1←v11120)+24) ), (* (( (ptr) gf←c78740)+22) ));
SOURCE(8934, 39)
   seg2Data←v24544 = XR←Narrow((* (( (ptr) seg2←v11148)+24) ), (* (( (ptr) gf←c78740)+22) ));
SOURCE(8975, 30)
   {
      word x116;
      word x117;
      same←v11192 = ((
         x116 = (* (( (ptr) seg1Data←v24516)+2) ),  *(float*)&x116
         ) == (
         x117 = (* (( (ptr) seg2Data←v24544)+2) ),  *(float*)&x117
         ));
      };
SOURCE(8818, 187)
   return(same←v11192);
   }

static void UpdateConicBoundBox←P1440(seg←v11252)
   word seg←v11252;
   {
   register ptr gf←c78772 =  (ptr) &globalframe;
   word data←v24588;
   word pad←v24616;
   word minX←v24644;
   word minY←v24672;
   word maxX←v24700;
   word maxY←v24728;
   /* UpdateConicBoundBox: */ 
SOURCE(9044, 545)
SOURCE(9089, 34)
   data←v24588 = XR←Narrow((* (( (ptr) seg←v11252)+24) ), (* (( (ptr) gf←c78772)+22) ));
SOURCE(9166, 41)
   {
      word x118;
      float tf119;
      float tf120;
      word x121;
      float tf122;
      float tf123;
      float tf124;
      word x125;
      float tf126;
      tf122 = FMIN((
            x118 = (* (( (ptr) seg←v11252)+9) ),  *(float*)&x118
            ), (
            x121 = (* (( (ptr) seg←v11252)+11) ),  *(float*)&x121
            ), tf119, tf120);
      minX←v24644 = (
         tf126 = FMIN(tf122, (
               x125 = (*  (ptr) data←v24588 ),  *(float*)&x125
               ), tf123, tf124),  *(word*)&tf126
         );
      };
SOURCE(9209, 41)
   {
      word x127;
      float tf128;
      float tf129;
      word x130;
      float tf131;
      float tf132;
      float tf133;
      word x134;
      float tf135;
      tf131 = FMIN((
            x127 = (* (( (ptr) seg←v11252)+10) ),  *(float*)&x127
            ), (
            x130 = (* (( (ptr) seg←v11252)+12) ),  *(float*)&x130
            ), tf128, tf129);
      minY←v24672 = (
         tf135 = FMIN(tf131, (
               x134 = (* (( (ptr) data←v24588)+1) ),  *(float*)&x134
               ), tf132, tf133),  *(word*)&tf135
         );
      };
SOURCE(9252, 41)
   {
      word x136;
      float tf137;
      float tf138;
      word x139;
      float tf140;
      float tf141;
      float tf142;
      word x143;
      float tf144;
      tf140 = FMAX((
            x136 = (* (( (ptr) seg←v11252)+9) ),  *(float*)&x136
            ), (
            x139 = (* (( (ptr) seg←v11252)+11) ),  *(float*)&x139
            ), tf137, tf138);
      maxX←v24700 = (
         tf144 = FMAX(tf140, (
               x143 = (*  (ptr) data←v24588 ),  *(float*)&x143
               ), tf141, tf142),  *(word*)&tf144
         );
      };
SOURCE(9295, 41)
   {
      word x145;
      float tf146;
      float tf147;
      word x148;
      float tf149;
      float tf150;
      float tf151;
      word x152;
      float tf153;
      tf149 = FMAX((
            x145 = (* (( (ptr) seg←v11252)+10) ),  *(float*)&x145
            ), (
            x148 = (* (( (ptr) seg←v11252)+12) ),  *(float*)&x148
            ), tf146, tf147);
      maxY←v24728 = (
         tf153 = FMAX(tf149, (
               x152 = (* (( (ptr) data←v24588)+1) ),  *(float*)&x152
               ), tf150, tf151),  *(word*)&tf153
         );
      };
SOURCE(9338, 63)
   {
      word pd154;
      pd154 = (* (( (ptr) (* (( (ptr) gf←c78772)+287)/* var←c65172 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd154 ))))((* (( (ptr) seg←v11252)+22) ), minX←v24644, minY←v24672, maxX←v24700, maxY←v24728, pd154)
      ;
      };
SOURCE(9403, 35)
   (void) CurveBoundBox←P6240(seg←v11252, (* (( (ptr) seg←v11252)+21) ), 0);
SOURCE(9440, 106)
   if (((* (( (ptr) seg←v11252)+3) ) == 0)) {
SOURCE(9471, 44)
      {
         word x155;
         word x157;
         word x159;
         *(float*)&pad←v24616 = ((
            x155 = (* (( (ptr) seg←v11252)+2) ),  *(float*)&x155
            ) * (
            x157 = (*  (ptr) &fc156 ),  *(float*)&x157
            )) + (
            x159 = (*  (ptr) &fc158 ),  *(float*)&x159
            );
         };
      }
   else {
SOURCE(9515, 31)
      {
         word x160;
         word x161;
         word x162;
         *(float*)&pad←v24616 = ((
            x160 = (* (( (ptr) seg←v11252)+2) ),  *(float*)&x160
            ) / (
            x161 = (*  (ptr) &fc70 ),  *(float*)&x161
            )) + (
            x162 = (*  (ptr) &fc158 ),  *(float*)&x162
            );
         };
      };
SOURCE(9548, 41)
   {
      word pd163;
      pd163 = (* (( (ptr) (* (( (ptr) gf←c78772)+287)/* var←c65172 */  ))+17) );
      (void) ( *( (fPt) ((*  (ptr) pd163 ))))((* (( (ptr) seg←v11252)+21) ), pad←v24616, pd163);
      };
   }

static word ConicCopyData←P1500(seg←v38408)
   word seg←v38408;
   {
   register ptr gf←c78804 =  (ptr) &globalframe;
   word data←v38452;
   word conicData←v24772;
   word new←v24800;
   /* ConicCopyData: */ 
SOURCE(9595, 266)
SOURCE(9595, 266)
   data←v38452 = 0;
SOURCE(9642, 39)
   conicData←v24772 = XR←Narrow((* (( (ptr) seg←v38408)+24) ), (* (( (ptr) gf←c78804)+22) ));
SOURCE(9683, 34)
   new←v24800 = XR←NewObject(32, (* (( (ptr) gf←c78804)+22) ));
SOURCE(9719, 21)
   (*  (W2Pt) new←v24800 ) = (*  (W2Pt) conicData←v24772 );
SOURCE(9742, 19)
   (* (( (ptr) new←v24800)+2) ) = (* (( (ptr) conicData←v24772)+2) );
SOURCE(9763, 37)
   (*  (W4Pt) (( (ptr) new←v24800)+3) ) = (*  (W4Pt) (( (ptr) conicData←v24772)+3) );
SOURCE(9802, 46)
   {
      word pd164;
      pd164 = (* (( (ptr) (* (( (ptr) gf←c78804)+291)/* var←c65492 */  ))+12) );
      (* (( (ptr) new←v24800)+7) ) = (word) ( *( (fPt) ((*  (ptr) pd164 ))))((* ((( (ptr) conicData←v24772)+7)) ), pd164);
      };
SOURCE(9850, 11)
   return(new←v24800);
   }

static void ConicReverse←P1560(seg←v11312)
   word seg←v11312;
   {
   register ptr gf←c78836 =  (ptr) &globalframe;
   word data←v24844;
   /* ConicReverse: */ 
SOURCE(9867, 107)
SOURCE(9905, 34)
   data←v24844 = XR←Narrow((* (( (ptr) seg←v11312)+24) ), (* (( (ptr) gf←c78836)+22) ));
SOURCE(9941, 33)
   {
      word pd165;
      pd165 = (* (( (ptr) (* (( (ptr) gf←c78836)+291)/* var←c65492 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd165 ))))((* ((( (ptr) data←v24844)+7)) ), pd165);
      };
   }

static void ConicBuildPath←P1620(seg←v11372, lineTo←v11400, curveTo←v11428, conicTo←v11456, arcTo←v11484)
   word seg←v11372;
   word lineTo←v11400;
   word curveTo←v11428;
   word conicTo←v11456;
   word arcTo←v11484;
   {
   register ptr gf←c78868 =  (ptr) &globalframe;
   word data←v24888;
   /* ConicBuildPath: */ 
SOURCE(9980, 234)
SOURCE(10146, 34)
   data←v24888 = XR←Narrow((* (( (ptr) seg←v11372)+24) ), (* (( (ptr) gf←c78868)+22) ));
SOURCE(10182, 32)
   (void) ( *( (fPt) ((*  (ptr) conicTo←v11456 ))))((*  (W2Pt) data←v24888 ), (*  (W2Pt) (( (ptr) seg←v11372)+11) ), (* (( (ptr) data←v24888)+2)
       ), conicTo←v11456);
   }

static void ConicBuildPathTransform←P1680(seg←v11544, transform←v11572, entire←v11600, lo←v11628, hi←v11656, controlPoints←v11684, lineTo←v11712, curveTo←v11740, conicTo←v11768, arcTo←v11796)
   word seg←v11544;
   word transform←v11572;
   word entire←v11600;
   word lo←v11628;
   word hi←v11656;
   word controlPoints←v11684;
   word lineTo←v11712;
   word curveTo←v11740;
   word conicTo←v11768;
   word arcTo←v11796;
   {
   register ptr gf←c78900 =  (ptr) &globalframe;
   word data←v24932;
   W2 p0←v24960;
   W2 p1←v24988;
   W2 p2←v25016;
   /* ConicBuildPathTransform: */ 
SOURCE(10220, 681)
SOURCE(10491, 34)
   data←v24932 = XR←Narrow((* (( (ptr) seg←v11544)+24) ), (* (( (ptr) gf←c78900)+22) ));
SOURCE(10542, 333)
   if ((0 != entire←v11600)) {
SOURCE(10559, 68)
      {
         W4 var←c66004;
         (void) TransformEndPoints←P1920((word) &var←c66004, (*  (W2Pt) (( (ptr) seg←v11544)+9) ), (*  (W2Pt) (( (ptr) seg←v11544)+11)
             ), 1, 1, transform←v11572);
         p2←v25016 = (*  (W2Pt) (( (ptr) &var←c66004)+2) );
         p0←v24960 = (*  (W2Pt) &var←c66004 );
         };
SOURCE(10629, 55)
      {
         word pd166;
         pd166 = (* (( (ptr) (* (( (ptr) gf←c78900)+293)/* var←c65588 */  ))+39) );
         (void) ( *( (fPt) ((*  (ptr) pd166 ))))((word) &p1←v24988, transform←v11572, (*  (W2Pt) data←v24932 ), pd166);
         };
      }
   else {
SOURCE(10695, 64)
      {
         W4 var←c66036;
         (void) TransformEndPoints←P1920((word) &var←c66036, (*  (W2Pt) (( (ptr) seg←v11544)+9) ), (*  (W2Pt) (( (ptr) seg←v11544)+11)
             ), lo←v11628, hi←v11656, transform←v11572);
         p2←v25016 = (*  (W2Pt) (( (ptr) &var←c66036)+2) );
         p0←v24960 = (*  (W2Pt) &var←c66036 );
         };
SOURCE(10761, 114)
      {
         word limit168;
         if ((controlPoints←v11684 == 0)) { goto then0167;};
         if (XR←ExtractField(controlPoints←v11684, 32 + (word) (
               limit168 = (*  (ptr) controlPoints←v11684 ),
               BCK(0, limit168)
               ), 1)) {
            then0167: ;
            {
               W2 var←c0290;
               {
                  word pd169;
                  pd169 = (* (( (ptr) (* (( (ptr) gf←c78900)+293)/* var←c65588 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd169 ))))((word) &var←c0290, transform←v11572, (*  (W2Pt) data←v24932 ), pd169);
                  };
               p1←v24988 = var←c0290;
               };
            }
         else {
            p1←v24988 = (*  (W2Pt) data←v24932 );
            };
         };
      };
SOURCE(10880, 21)
   (void) ( *( (fPt) ((*  (ptr) conicTo←v11768 ))))(p1←v24988, p2←v25016, (* (( (ptr) data←v24932)+2) ), conicTo←v11768);
   }

static void ConicTransform←P1740(seg←v11856, transform←v11884)
   word seg←v11856;
   word transform←v11884;
   {
   register ptr gf←c78932 =  (ptr) &globalframe;
   word data←v25060;
   /* ConicTransform: */ 
SOURCE(10906, 265)
SOURCE(10994, 34)
   data←v25060 = XR←Narrow((* (( (ptr) seg←v11856)+24) ), (* (( (ptr) gf←c78932)+22) ));
SOURCE(11030, 60)
   {
      word pd170;
      pd170 = (* (( (ptr) (* (( (ptr) gf←c78932)+293)/* var←c65588 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd170 ))))((word) data←v25060, transform←v11884, (*  (W2Pt) data←v25060 ), pd170);
      };
SOURCE(11092, 53)
   {
      word pd171;
      pd171 = (* (( (ptr) (* (( (ptr) gf←c78932)+291)/* var←c65492 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd171 ))))((* (( (ptr) data←v25060)+7) ), transform←v11884, 0, pd171);
      };
SOURCE(11147, 24)
   (void) UpdateConicBoundBox←P1440(seg←v11856);
   }

static void ConicEndPointMoved←P1800(seg←v11944, lo←v11972, newPoint←v12000)
   word seg←v11944;
   word lo←v11972;
   W2 newPoint←v12000;
   {
   register ptr gf←c78964 =  (ptr) &globalframe;
   word data←v25104;
   W2 p0←v25132;
   W2 p1←v25160;
   W2 p2←v25188;
   /* ConicEndPointMoved: */ 
SOURCE(11177, 304)
SOURCE(11248, 34)
   data←v25104 = XR←Narrow((* (( (ptr) seg←v11944)+24) ), (* (( (ptr) gf←c78964)+22) ));
SOURCE(11284, 43)
   {
      word tcp172;
      if ((0 != lo←v11972)) {
         tcp172 = (word) &newPoint←v12000;
         }
      else {
         tcp172 = (word) (( (ptr) seg←v11944)+9);
         };
      p0←v25132 = (*  (W2Pt) tcp172 );
      };
SOURCE(11329, 34)
   p1←v25160.f0 = (*  (ptr) data←v25104 );
   p1←v25160.f1 = (* (( (ptr) data←v25104)+1) );
SOURCE(11365, 43)
   {
      word tcp173;
      if ((0 != lo←v11972)) {
         tcp173 = (word) (( (ptr) seg←v11944)+11);
         }
      else {
         tcp173 = (word) &newPoint←v12000;
         };
      p2←v25188 = (*  (W2Pt) tcp173 );
      };
SOURCE(11410, 45)
   (* (( (ptr) data←v25104)+7) ) = (word) PathFromConic←P6840(p0←v25132, p1←v25160, p2←v25188, (* (( (ptr) data←v25104)+2) ))
   ;
SOURCE(11457, 24)
   (void) UpdateConicBoundBox←P1440(seg←v11944);
   }

static void ConicControlPointMoved←P1860(seg←v12060, transform←v12088, controlPointNum←v12116)
   word seg←v12060;
   word transform←v12088;
   word controlPointNum←v12116;
   {
   register ptr gf←c78996 =  (ptr) &globalframe;
   W2 p1Vec←v25232;
   W2 p1←v25260;
   word data←v25288;
   /* ConicControlPointMoved: */ 
SOURCE(11487, 391)
SOURCE(11628, 34)
   data←v25288 = XR←Narrow((* (( (ptr) seg←v12060)+24) ), (* (( (ptr) gf←c78996)+22) ));
SOURCE(11664, 26)
   if ((controlPointNum←v12116 != 0)) {
SOURCE(11690, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(11697, 58)
   {
      word pd174;
      pd174 = (* (( (ptr) (* (( (ptr) gf←c78996)+293)/* var←c65588 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd174 ))))((word) &p1Vec←v25232, transform←v12088, (*  (W2Pt) data←v25288 ), pd174);
      };
SOURCE(11757, 23)
   p1←v25260.f0 = p1Vec←v25232.f0;
   p1←v25260.f1 = p1Vec←v25232.f1;
SOURCE(11782, 53)
   (* (( (ptr) data←v25288)+7) ) = (word) PathFromConic←P6840((*  (W2Pt) (( (ptr) seg←v12060)+9) ), p1←v25260, (*  (W2Pt) (( (ptr) seg←v12060)+11)
       ), (* (( (ptr) data←v25288)+2) ));
SOURCE(11837, 15)
   (*  (W2Pt) data←v25288 ) = p1Vec←v25232;
SOURCE(11854, 24)
   (void) UpdateConicBoundBox←P1440(seg←v12060);
   }

static void TransformEndPoints←P1920(formal←c0320, loPt←v12176, hiPt←v12204, lo←v12232, hi←v12260, transform←v12288)
   word formal←c0320;
   W2 loPt←v12176;
   W2 hiPt←v12204;
   word lo←v12232;
   word hi←v12260;
   word transform←v12288;
   {
   register ptr gf←c79028 =  (ptr) &globalframe;
   W2 newLo←v12332;
   W2 newHi←v12360;
   /* TransformEndPoints: */ 
SOURCE(11884, 353)
SOURCE(12023, 106)
   if ((0 != lo←v12232)) {
SOURCE(12034, 72)
      {
         W2 var←c0317;
         {
            W2 var←c66100;
            var←c66100.f0 = loPt←v12176.f0;
            var←c66100.f1 = loPt←v12176.f1;
            {
               word pd175;
               pd175 = (* (( (ptr) (* (( (ptr) gf←c79028)+293)/* var←c65588 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd175 ))))((word) &var←c0317, transform←v12288, var←c66100, pd175);
               };
            };
         newLo←v12332 = var←c0317;
         };
      }
   else {
SOURCE(12106, 23)
      newLo←v12332.f0 = loPt←v12176.f0;
      newLo←v12332.f1 = loPt←v12176.f1;
      };
SOURCE(12131, 106)
   if ((0 != hi←v12260)) {
SOURCE(12142, 72)
      {
         W2 var←c0319;
         {
            W2 var←c66132;
            var←c66132.f0 = hiPt←v12204.f0;
            var←c66132.f1 = hiPt←v12204.f1;
            {
               word pd176;
               pd176 = (* (( (ptr) (* (( (ptr) gf←c79028)+293)/* var←c65588 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd176 ))))((word) &var←c0319, transform←v12288, var←c66132, pd176);
               };
            };
         newHi←v12360 = var←c0319;
         };
      }
   else {
SOURCE(12214, 23)
      newHi←v12360.f0 = hiPt←v12204.f0;
      newHi←v12360.f1 = hiPt←v12204.f1;
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0320 ) = newLo←v12332;
   (*  (W2Pt) (( (ptr) formal←c0320)+2) ) = newHi←v12360;
   return;
   }

static word ConicDescribe←P1980(seg←v12420, self←v12448, lo←v12476, hi←v12504, cps←v12532)
   word seg←v12420;
   word self←v12448;
   word lo←v12476;
   word hi←v12504;
   word cps←v12532;
   {
   register ptr gf←c79060 =  (ptr) &globalframe;
   word rope←v12576;
   /* ConicDescribe: */ 
SOURCE(12242, 125)
SOURCE(12242, 125)
   rope←v12576 = 0;
SOURCE(12343, 24)
   rope←v12576 = (* (( (ptr) gf←c79060)+33) );
SOURCE(12242, 125)
   return(rope←v12576);
   }

static void ConicFileOut←P2040(seg←v12636, f←v12664)
   word seg←v12636;
   word f←v12664;
   {
   register ptr gf←c79092 =  (ptr) &globalframe;
   word data←v25332;
   W2 p1←v25360;
   /* ConicFileOut: */ 
SOURCE(12373, 184)
SOURCE(12425, 34)
   data←v25332 = XR←Narrow((* (( (ptr) seg←v12636)+24) ), (* (( (ptr) gf←c79092)+22) ));
SOURCE(12461, 34)
   p1←v25360.f0 = (*  (ptr) data←v25332 );
   p1←v25360.f1 = (* (( (ptr) data←v25332)+1) );
SOURCE(12497, 28)
   {
      word pd177;
      pd177 = (* (( (ptr) (* (( (ptr) gf←c79092)+296)/* var←c66196 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd177 ))))(f←v12664, p1←v25360, pd177);
      };
SOURCE(12527, 30)
   {
      W2 var←c66228;
      var←c66228.f0 = 8;
      var←c66228.f1 = (* (( (ptr) data←v25332)+2) );
      {
         word pd178;
         pd178 = (* (( (ptr) (* (( (ptr) gf←c79092)+285)/* var←c65044 */  ))+61) );
         (void) ( *( (fPt) ((*  (ptr) pd178 ))))(f←v12664, (* (( (ptr) gf←c79092)+32) ), var←c66228, pd178);
         };
      };
   }

static word ConicFileIn←P2100(f←v12724, loPoint←v12752, hiPoint←v12780, version←v12808)
   word f←v12724;
   W2 loPoint←v12752;
   W2 hiPoint←v12780;
   word version←v12808;
   {
   register ptr gf←c79124 =  (ptr) &globalframe;
   word seg←v12852;
   word s←v25404;
   W2 p1←v25432;
   /* ConicFileIn: */ 
SOURCE(12563, 221)
SOURCE(12563, 221)
   seg←v12852 = 0;
SOURCE(12683, 27)
   {
      word pd179;
      pd179 = (* (( (ptr) (* (( (ptr) gf←c79124)+297)/* var←c66260 */  ))+19) );
      (void) ( *( (fPt) ((*  (ptr) pd179 ))))((word) &p1←v25432, f←v12724, pd179);
      };
SOURCE(12712, 25)
   {
      word pd180;
      pd180 = (* (( (ptr) (* (( (ptr) gf←c79124)+297)/* var←c66260 */  ))+27) );
      s←v25404 = (word) ( *( (fPt) ((*  (ptr) pd180 ))))(f←v12724, pd180);
      };
SOURCE(12739, 45)
   seg←v12852 = (word) MakeConic←P1020(loPoint←v12752, p1←v25432, hiPoint←v12780, s←v25404, 0);
SOURCE(12563, 221)
   return(seg←v12852);
   }

static void ConicFieldSet←P2160(seg←v38512, controlPointNum←v38540, selected←v38568, selectClass←v38596)
   word seg←v38512;
   word controlPointNum←v38540;
   word selected←v38568;
   word selectClass←v38596;
   {
   register ptr gf←c79156 =  (ptr) &globalframe;
   word data←v25476;
   /* ConicFieldSet: */ 
SOURCE(12790, 324)
SOURCE(12849, 34)
   data←v25476 = XR←Narrow((* (( (ptr) seg←v38512)+24) ), (* (( (ptr) gf←c79156)+22) ));
SOURCE(12885, 28)
   if ((controlPointNum←v38540 != 0)) {
SOURCE(12913, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(12920, 194)
   {
      word var←c66292;
      var←c66292 = selectClass←v38596;
      switch (var←c66292) {
         case 0: 
SOURCE(12954, 33)
            (* (( (ptr) data←v25476)+3) ) = selected←v38568;
            break;
         case 1: 
SOURCE(12996, 30)
            (* (( (ptr) data←v25476)+4) ) = selected←v38568;
            break;
         case 2: 
SOURCE(13038, 33)
            (* (( (ptr) data←v25476)+5) ) = selected←v38568;
            break;
         case 3: 
SOURCE(13082, 32)
            (* (( (ptr) data←v25476)+6) ) = selected←v38568;
            break;
         default: 
SOURCE(13127, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static word ConicFieldGet←P2220(seg←v38656, controlPointNum←v38684, selectClass←v38712)
   word seg←v38656;
   word controlPointNum←v38684;
   word selectClass←v38712;
   {
   register ptr gf←c79188 =  (ptr) &globalframe;
   word selected←v38756;
   word data←v25520;
   /* ConicFieldGet: */ 
SOURCE(13138, 324)
SOURCE(13197, 34)
   data←v25520 = XR←Narrow((* (( (ptr) seg←v38656)+24) ), (* (( (ptr) gf←c79188)+22) ));
SOURCE(13233, 28)
   if ((controlPointNum←v38684 != 0)) {
SOURCE(13261, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(13268, 194)
   {
      word var←c66324;
      var←c66324 = selectClass←v38712;
      switch (var←c66324) {
         case 0: 
SOURCE(13302, 33)
            selected←v38756 = (* (( (ptr) data←v25520)+3) );
            break;
         case 1: 
SOURCE(13344, 30)
            selected←v38756 = (* (( (ptr) data←v25520)+4) );
            break;
         case 2: 
SOURCE(13386, 33)
            selected←v38756 = (* (( (ptr) data←v25520)+5) );
            break;
         case 3: 
SOURCE(13430, 32)
            selected←v38756 = (* (( (ptr) data←v25520)+6) );
            break;
         default: 
SOURCE(13475, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(13138, 324)
   return(selected←v38756);
   }

static void ConicControlPointGet←P2280(formal←c0358, seg←v12912, controlPointNum←v12940)
   word formal←c0358;
   word seg←v12912;
   word controlPointNum←v12940;
   {
   register ptr gf←c79220 =  (ptr) &globalframe;
   W2 point←v12984;
   word data←v25564;
   /* ConicControlPointGet: */ 
SOURCE(13486, 192)
SOURCE(13577, 34)
   data←v25564 = XR←Narrow((* (( (ptr) seg←v12912)+24) ), (* (( (ptr) gf←c79220)+22) ));
SOURCE(13613, 26)
   if ((controlPointNum←v12940 != 0)) {
SOURCE(13639, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(13646, 32)
   point←v12984.f0 = (*  (ptr) data←v25564 );
   point←v12984.f1 = (* (( (ptr) data←v25564)+1) );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0358 ) = point←v12984;
   return;
   }

static word ConicControlPointCount←P2340(seg←v13044)
   word seg←v13044;
   {
   register ptr gf←c79252 =  (ptr) &globalframe;
   word controlPointCount←v13088;
   word data←v25608;
   /* ConicControlPointCount: */ 
SOURCE(13684, 175)
SOURCE(13765, 34)
   data←v25608 = XR←Narrow((* (( (ptr) seg←v13044)+24) ), (* (( (ptr) gf←c79252)+22) ));
SOURCE(13850, 9)
   return(1);
   }

static void ConicClosestControlPoint←P2400(formal←c0370, seg←v13148, testPoint←v13176, tolerance←v13204)
   word formal←c0370;
   word seg←v13148;
   W2 testPoint←v13176;
   word tolerance←v13204;
   {
   register ptr gf←c79284 =  (ptr) &globalframe;
   W2 point←v13248;
   W2 normal←v13276;
   word controlPointNum←v13304;
   word success←v13332;
   word data←v25652;
   /* ConicClosestControlPoint: */ 
SOURCE(13864, 273)
SOURCE(13864, 273)
   normal←v13276.f0 = (*  (ptr) &fc78 );
   normal←v13276.f1 = (*  (ptr) &fc115 );
SOURCE(14034, 34)
   data←v25652 = XR←Narrow((* (( (ptr) seg←v13148)+24) ), (* (( (ptr) gf←c79284)+22) ));
SOURCE(14070, 14)
   success←v13332 = 1;
SOURCE(14086, 19)
   controlPointNum←v13304 = 0;
SOURCE(14107, 30)
   point←v13248.f0 = (*  (ptr) data←v25652 );
   point←v13248.f1 = (* (( (ptr) data←v25652)+1) );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0370 ) = point←v13248;
   (*  (W2Pt) (( (ptr) formal←c0370)+2) ) = normal←v13276;
   (* (( (ptr) formal←c0370)+4) ) = controlPointNum←v13304;
   (* (( (ptr) formal←c0370)+5) ) = success←v13332;
   return;
   }

static word ConicAsPolyline←P2460(seg←v13392, tolerance←v13420)
   word seg←v13392;
   word tolerance←v13420;
   {
   register ptr gf←c79316 =  (ptr) &globalframe;
   word polyline←v13464;
   word data←v25696;
   W2 p0←v25724;
   W2 p1←v25752;
   W2 p2←v25780;
   word r←v25808;
   /* ConicAsPolyline: */ 
SOURCE(14142, 271)
SOURCE(14142, 271)
   polyline←v13464 = 0;
SOURCE(14248, 34)
   data←v25696 = XR←Narrow((* (( (ptr) seg←v13392)+24) ), (* (( (ptr) gf←c79316)+22) ));
SOURCE(14310, 11)
   p0←v25724 = (*  (W2Pt) (( (ptr) seg←v13392)+9) );
SOURCE(14323, 12)
   p1←v25752 = (*  (W2Pt) data←v25696 );
SOURCE(14337, 11)
   p2←v25780 = (*  (W2Pt) (( (ptr) seg←v13392)+11) );
SOURCE(14350, 10)
   r←v25808 = (* (( (ptr) data←v25696)+2) );
SOURCE(14363, 50)
   polyline←v13464 = (word) ConicPolyline←P2640(p0←v25724, p1←v25752, p2←v25780, r←v25808, tolerance←v13420);
SOURCE(14142, 271)
   return(polyline←v13464);
   }

static word ConicPolyline←P2640(p0←v13760, p1←v13788, p2←v13816, r←v13844, tolerance←v13872)
   W2 p0←v13760;
   W2 p1←v13788;
   W2 p2←v13816;
   word r←v13844;
   word tolerance←v13872;
   {
   register ptr gf←c79348 =  (ptr) &globalframe;
   word polyline←v13916;
   /* ConicPolyline: */ 
SOURCE(14589, 1266)
SOURCE(14589, 1266)
   polyline←v13916 = 0;
SOURCE(14705, 1150)
   {
      word var←c66420;
      var←c66420 = r←v13844;
      {
         word x181;
         word x183;
         word x187;
         word x188;
         if (((
            x181 = var←c66420,  *(float*)&x181
            ) > (
            x183 = (*  (ptr) &fc182 ),  *(float*)&x183
            ))) {
SOURCE(14733, 49)
            {
               word var←c66452;
               var←c66452 = XR←NewObject(32, (* (( (ptr) gf←c79348)+25) ));
               (* (( (ptr) var←c66452)+1) ) = 3;
               polyline←v13916 = var←c66452;
               };
SOURCE(14784, 19)
            (*  (ptr) polyline←v13916 ) = 3;
SOURCE(14805, 16)
            {
               word limit184;
               (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
                     limit184 = (* (( (ptr) polyline←v13916)+1) ),
                     BCK(0, limit184)
                     )) ) = p0←v13760;
               };
SOURCE(14823, 16)
            {
               word limit185;
               (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
                     limit185 = (* (( (ptr) polyline←v13916)+1) ),
                     BCK(1, limit185)
                     )) ) = p1←v13788;
               };
SOURCE(14841, 16)
            {
               word limit186;
               (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
                     limit186 = (* (( (ptr) polyline←v13916)+1) ),
                     BCK(2, limit186)
                     )) ) = p2←v13816;
               };
            }
         else {
            if (((
               x187 = var←c66420,  *(float*)&x187
               ) <= (
               x188 = (*  (ptr) &fc78 ),  *(float*)&x188
               ))) {
SOURCE(14874, 49)
               {
                  word var←c66484;
                  var←c66484 = XR←NewObject(24, (* (( (ptr) gf←c79348)+25) ));
                  (* (( (ptr) var←c66484)+1) ) = 2;
                  polyline←v13916 = var←c66484;
                  };
SOURCE(14925, 19)
               (*  (ptr) polyline←v13916 ) = 2;
SOURCE(14946, 16)
               {
                  word limit189;
                  (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
                        limit189 = (* (( (ptr) polyline←v13916)+1) ),
                        BCK(0, limit189)
                        )) ) = p0←v13760;
                  };
SOURCE(14964, 16)
               {
                  word limit190;
                  (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
                        limit190 = (* (( (ptr) polyline←v13916)+1) ),
                        BCK(1, limit190)
                        )) ) = p2←v13816;
                  };
               }
            else {
SOURCE(14996, 873)
               {
                  W2 p02←v25852;
                  W2 m←v25880;
SOURCE(14998, 22)
                  {
                     W2 p←v60936;
                     W2 q←v60964;
                     p←v60936 = p0←v13760;
                     q←v60964 = p2←v13816;
SOURCE(14466, 40)
                     {
                        W2 var←c66548;
                        {
                           word var←c66580;
                           word r←v61060;
                           {
/*1*/   word x191;
/*1*/   word x192;
/*1*/   *(float*)&r←v61060 = (
/*1*/      x191 = p←v60936.f0,  *(float*)&x191
/*1*/      ) + (
/*1*/      x192 = q←v60964.f0,  *(float*)&x192
/*1*/      );
/*1*/   };
SOURCE(14557, 28)
                           {
/*1*/   word pd193;
/*1*/   pd193 = (* (( (ptr) (* (( (ptr) gf←c79348)+298)/* var←c66644 */  ))+4) );
/*1*/   var←c66580 = (word) ( *( (fPt) ((*  (ptr) pd193 ))))(r←v61060,  (word) -1, pd193);
/*1*/   };
                           var←c66548.f0 = var←c66580;
                           };
                        {
                           word var←c66676;
                           word r←v61012;
                           {
/*1*/   word x194;
/*1*/   word x195;
/*1*/   *(float*)&r←v61012 = (
/*1*/      x194 = p←v60936.f1,  *(float*)&x194
/*1*/      ) + (
/*1*/      x195 = q←v60964.f1,  *(float*)&x195
/*1*/      );
/*1*/   };
SOURCE(14557, 28)
                           {
/*1*/   word pd196;
/*1*/   pd196 = (* (( (ptr) (* (( (ptr) gf←c79348)+298)/* var←c66644 */  ))+4) );
/*1*/   var←c66676 = (word) ( *( (fPt) ((*  (ptr) pd196 ))))(r←v61012,  (word) -1, pd196);
/*1*/   };
                           var←c66548.f1 = var←c66676;
                           };
                        p02←v25852 = var←c66548;
                        };
                     };
SOURCE(15022, 33)
                  {
                     word x197;
                     word x198;
                     *(float*)&m←v25880.f0 = (
                        x197 = p1←v13788.f0,  *(float*)&x197
                        ) - (
                        x198 = p02←v25852.f0,  *(float*)&x198
                        );
                     };
                  {
                     word x199;
                     word x200;
                     *(float*)&m←v25880.f1 = (
                        x199 = p1←v13788.f1,  *(float*)&x199
                        ) - (
                        x200 = p02←v25852.f1,  *(float*)&x200
                        );
                     };
SOURCE(15057, 798)
                  {
                     float tf201;
                     word x202;
                     float tf203;
                     word x204;
                     word x205;
                     word x206;
                     if (((FABS((
                           x202 = m←v25880.f0,  *(float*)&x202
                           ), tf201) + FABS((
                           x204 = m←v25880.f1,  *(float*)&x204
                           ), tf203)) * (
                        x205 = r←v13844,  *(float*)&x205
                        ) <= (
                        x206 = tolerance←v13872,  *(float*)&x206
                        ))) {
SOURCE(15139, 49)
                        {
                           word var←c66772;
                           var←c66772 = XR←NewObject(24, (* (( (ptr) gf←c79348)+25) ));
                           (* (( (ptr) var←c66772)+1) ) = 2;
                           polyline←v13916 = var←c66772;
                           };
SOURCE(15190, 19)
                        (*  (ptr) polyline←v13916 ) = 2;
SOURCE(15211, 16)
                        {
                           word limit207;
                           (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
/*1*/      limit207 = (* (( (ptr) polyline←v13916)+1) ),
/*1*/      BCK(0, limit207)
/*1*/      )) ) = p0←v13760;
                           };
SOURCE(15229, 16)
                        {
                           word limit208;
                           (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
/*1*/      limit208 = (* (( (ptr) polyline←v13916)+1) ),
/*1*/      BCK(1, limit208)
/*1*/      )) ) = p2←v13816;
                           };
                        }
                     else {
SOURCE(15254, 612)
                        {
                           W2 q←v25924;
                           word rNew←v25952;
                           word poly1←v25980 = 0;
                           word poly2←v26008 = 0;
                           word totalPoints←v26036;
SOURCE(15256, 35)
                           {
/*1*/   word x209;
/*1*/   word x210;
/*1*/   word x211;
/*1*/   *(float*)&q←v25924.f0 = ((
/*1*/      x209 = m←v25880.f0,  *(float*)&x209
/*1*/      ) * (
/*1*/      x210 = r←v13844,  *(float*)&x210
/*1*/      )) + (
/*1*/      x211 = p02←v25852.f0,  *(float*)&x211
/*1*/      );
/*1*/   };
                           {
/*1*/   word x212;
/*1*/   word x213;
/*1*/   word x214;
/*1*/   *(float*)&q←v25924.f1 = ((
/*1*/      x212 = m←v25880.f1,  *(float*)&x212
/*1*/      ) * (
/*1*/      x213 = r←v13844,  *(float*)&x213
/*1*/      )) + (
/*1*/      x214 = p02←v25852.f1,  *(float*)&x214
/*1*/      );
/*1*/   };
SOURCE(15293, 46)
                           {
/*1*/   word x215;
/*1*/   word x216;
/*1*/   word pd217;
/*1*/   word x218;
/*1*/   word x219;
/*1*/   word x220;
/*1*/   float tf221;
/*1*/   word x222;
/*1*/   pd217 = (* (( (ptr) (* (( (ptr) gf←c79348)+299)/* var←c66836 */  ))+9) );
/*1*/   *(float*)&rNew←v25952 = (
/*1*/      x215 = (*  (ptr) &fc158 ),  *(float*)&x215
/*1*/      ) / ((
/*1*/      x216 = (*  (ptr) &fc158 ),  *(float*)&x216
/*1*/      ) + (
/*1*/      x222 = (word) ( *( (fPt) ((*  (ptr) pd217 ))))((
/*1*/            tf221 = (
/*1*/               x218 = (*  (ptr) &fc70 ),  *(float*)&x218
/*1*/               ) * ((
/*1*/               x219 = (*  (ptr) &fc158 ),  *(float*)&x219
/*1*/               ) - (
/*1*/               x220 = r←v13844,  *(float*)&x220
/*1*/               )),  *(word*)&tf221
/*1*/            ), pd217),  *(float*)&x222
/*1*/      ));
/*1*/   };
SOURCE(15402, 87)
                           {
/*1*/   W2 var←c66868;
/*1*/   {
/*1*/      word x223;
/*1*/      word x224;
/*1*/      word x225;
/*1*/      word x226;
/*1*/      *(float*)&var←c66868.f0 = (((
/*1*/         x223 = p1←v13788.f0,  *(float*)&x223
/*1*/         ) - (
/*1*/         x224 = p0←v13760.f0,  *(float*)&x224
/*1*/         )) * (
/*1*/         x225 = r←v13844,  *(float*)&x225
/*1*/         )) + (
/*1*/         x226 = p0←v13760.f0,  *(float*)&x226
/*1*/         );
/*1*/      };
/*1*/   {
/*1*/      word x227;
/*1*/      word x228;
/*1*/      word x229;
/*1*/      word x230;
/*1*/      *(float*)&var←c66868.f1 = (((
/*1*/         x227 = p1←v13788.f1,  *(float*)&x227
/*1*/         ) - (
/*1*/         x228 = p0←v13760.f1,  *(float*)&x228
/*1*/         )) * (
/*1*/         x229 = r←v13844,  *(float*)&x229
/*1*/         )) + (
/*1*/         x230 = p0←v13760.f1,  *(float*)&x230
/*1*/         );
/*1*/      };
/*1*/   poly1←v25980 = (word) ConicPolyline←P2640(p0←v13760, var←c66868, q←v25924, rNew←v25952, tolerance←v13872);
/*1*/   };
SOURCE(15491, 87)
                           {
/*1*/   W2 var←c66900;
/*1*/   {
/*1*/      word x231;
/*1*/      word x232;
/*1*/      word x233;
/*1*/      word x234;
/*1*/      *(float*)&var←c66900.f0 = (((
/*1*/         x231 = p1←v13788.f0,  *(float*)&x231
/*1*/         ) - (
/*1*/         x232 = p2←v13816.f0,  *(float*)&x232
/*1*/         )) * (
/*1*/         x233 = r←v13844,  *(float*)&x233
/*1*/         )) + (
/*1*/         x234 = p2←v13816.f0,  *(float*)&x234
/*1*/         );
/*1*/      };
/*1*/   {
/*1*/      word x235;
/*1*/      word x236;
/*1*/      word x237;
/*1*/      word x238;
/*1*/      *(float*)&var←c66900.f1 = (((
/*1*/         x235 = p1←v13788.f1,  *(float*)&x235
/*1*/         ) - (
/*1*/         x236 = p2←v13816.f1,  *(float*)&x236
/*1*/         )) * (
/*1*/         x237 = r←v13844,  *(float*)&x237
/*1*/         )) + (
/*1*/         x238 = p2←v13816.f1,  *(float*)&x238
/*1*/         );
/*1*/      };
/*1*/   poly2←v26008 = (word) ConicPolyline←P2640(q←v25924, var←c66900, p2←v13816, rNew←v25952, tolerance←v13872);
/*1*/   };
SOURCE(15580, 41)
                           {
/*1*/   word idx239;
/*1*/   totalPoints←v26036 = (
/*1*/      idx239 = (word) (((*  (ptr) poly1←v25980 ) + (*  (ptr) poly2←v26008 )) - 1),
/*1*/      SGNCK(idx239)
/*1*/      );
/*1*/   };
SOURCE(15623, 59)
                           {
/*1*/   word var←c66932;
/*1*/   word var←c66964;
/*1*/   var←c66932 = ((word) totalPoints←v26036 << 3);
/*1*/   var←c66964 = XR←NewObject((8 + var←c66932), (* (( (ptr) gf←c79348)+25) ));
/*1*/   (* (( (ptr) var←c66964)+1) ) = totalPoints←v26036;
/*1*/   polyline←v13916 = var←c66964;
/*1*/   };
SOURCE(15684, 29)
                           (*  (ptr) polyline←v13916 ) = totalPoints←v26036;
SOURCE(15715, 57)
                           {
/*1*/   register word i←v26080 = 0;
/*1*/   register word noName←c66996;
/*1*/   noName←c66996 = (*  (ptr) poly1←v25980 );
/*1*/   if ((i←v26080 >= noName←c66996)) {
/*1*/      goto lab←L100015;
/*1*/      };
/*1*/   lab←L100018: ;
SOURCE(15750, 22)
/*1*/   {
/*1*/      word limit240;
/*1*/      word limit241;
/*1*/      (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
/*1*/            limit240 = (* (( (ptr) polyline←v13916)+1) ),
/*1*/            BCK(i←v26080, limit240)
/*1*/            )) ) = (* (( (W2Pt) (( (ptr) poly1←v25980)+2))+(
/*1*/            limit241 = (* (( (ptr) poly1←v25980)+1) ),
/*1*/            BCK(i←v26080, limit241)
/*1*/            )) );
/*1*/      };
/*1*/   i←v26080 = (i←v26080 + 1);
/*1*/   if ((i←v26080 < noName←c66996)) {
/*1*/      goto lab←L100018;
/*1*/      };
/*1*/   lab←L100015: ;
/*1*/   };
SOURCE(15783, 72)
                           {
/*1*/   register word i←v26124 = 1;
/*1*/   register word noName←c67028;
/*1*/   noName←c67028 = (*  (ptr) poly2←v26008 );
/*1*/   if ((i←v26124 >= noName←c67028)) {
/*1*/      goto lab←L100019;
/*1*/      };
/*1*/   lab←L100022: ;
SOURCE(15818, 37)
/*1*/   {
/*1*/      word var←c67060;
/*1*/      var←c67060 = ((i←v26124 + (*  (ptr) poly1←v25980 )) - 1);
/*1*/      {
/*1*/         word limit242;
/*1*/         word limit243;
/*1*/         (* (( (W2Pt) (( (ptr) polyline←v13916)+2))+(
/*1*/               limit242 = (* (( (ptr) polyline←v13916)+1) ),
/*1*/               BCK(var←c67060, limit242)
/*1*/               )) ) = (* (( (W2Pt) (( (ptr) poly2←v26008)+2))+(
/*1*/               limit243 = (* (( (ptr) poly2←v26008)+1) ),
/*1*/               BCK(i←v26124, limit243)
/*1*/               )) );
/*1*/         };
/*1*/      };
/*1*/   i←v26124 = (i←v26124 + 1);
/*1*/   if ((i←v26124 < noName←c67028)) {
/*1*/      goto lab←L100022;
/*1*/      };
/*1*/   lab←L100019: ;
/*1*/   };
                           };
                        };
                     };
                  };
               };
            };
         };
      };
SOURCE(14589, 1266)
   return(polyline←v13916);
   }

static word BuildBezierClass←P2700()
   {
   register ptr gf←c79380 =  (ptr) &globalframe;
   word class←v14088;
   /* BuildBezierClass: */ 
SOURCE(16015, 1028)
SOURCE(16015, 1028)
   class←v14088 = 0;
SOURCE(16091, 952)
   {
      word var←c67092;
      var←c67092 = XR←NewObject(116, (* (( (ptr) gf←c79380)+20) ));
      (*  (ptr) var←c67092 ) = (* (( (ptr) gf←c79380)+30) );
      (* (( (ptr) var←c67092)+1) ) = (word) (( (bPt) gf←c79380)+732)/* var←c63252 */ ;
      (* (( (ptr) var←c67092)+2) ) = (word) (( (bPt) gf←c79380)+724)/* var←c63220 */ ;
      (* (( (ptr) var←c67092)+3) ) = (word) (( (bPt) gf←c79380)+708)/* var←c63156 */ ;
      (* (( (ptr) var←c67092)+4) ) = (word) (( (bPt) gf←c79380)+700)/* var←c63124 */ ;
      (* (( (ptr) var←c67092)+5) ) = (* (( (ptr) (* (( (ptr) gf←c79380)+295)/* var←c65748 */  ))+35) );
      (* (( (ptr) var←c67092)+6) ) = (word) (( (bPt) gf←c79380)+284)/* var←c61460 */ ;
      (* (( (ptr) var←c67092)+7) ) = (word) (( (bPt) gf←c79380)+660)/* var←c62964 */ ;
      (* (( (ptr) var←c67092)+8) ) = (word) (( (bPt) gf←c79380)+692)/* var←c63092 */ ;
      (* (( (ptr) var←c67092)+9) ) = (word) (( (bPt) gf←c79380)+684)/* var←c63060 */ ;
      (* (( (ptr) var←c67092)+10) ) = (word) (( (bPt) gf←c79380)+676)/* var←c63028 */ ;
      (* (( (ptr) var←c67092)+11) ) = (word) (( (bPt) gf←c79380)+556)/* var←c62548 */ ;
      (* (( (ptr) var←c67092)+12) ) = (word) (( (bPt) gf←c79380)+548)/* var←c62516 */ ;
      (* (( (ptr) var←c67092)+13) ) = (word) (( (bPt) gf←c79380)+540)/* var←c62484 */ ;
      (* (( (ptr) var←c67092)+14) ) = (word) (( (bPt) gf←c79380)+612)/* var←c62772 */ ;
      (* (( (ptr) var←c67092)+15) ) = (word) (( (bPt) gf←c79380)+604)/* var←c62740 */ ;
      (* (( (ptr) var←c67092)+16) ) = (word) (( (bPt) gf←c79380)+628)/* var←c62836 */ ;
      (* (( (ptr) var←c67092)+17) ) = (word) (( (bPt) gf←c79380)+620)/* var←c62804 */ ;
      (* (( (ptr) var←c67092)+18) ) = (word) (( (bPt) gf←c79380)+276)/* var←c61428 */ ;
      (* (( (ptr) var←c67092)+19) ) = (word) (( (bPt) gf←c79380)+596)/* var←c62708 */ ;
      (* (( (ptr) var←c67092)+20) ) = (* (( (ptr) (* (( (ptr) gf←c79380)+295)/* var←c65748 */  ))+42) );
      (* (( (ptr) var←c67092)+21) ) = (* (( (ptr) (* (( (ptr) gf←c79380)+295)/* var←c65748 */  ))+43) );
      (* (( (ptr) var←c67092)+22) ) = (* (( (ptr) (* (( (ptr) gf←c79380)+295)/* var←c65748 */  ))+44) );
      (* (( (ptr) var←c67092)+23) ) = (word) (( (bPt) gf←c79380)+588)/* var←c62676 */ ;
      (* (( (ptr) var←c67092)+24) ) = (word) (( (bPt) gf←c79380)+580)/* var←c62644 */ ;
      (* (( (ptr) var←c67092)+25) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c79380)+295)/* var←c65748 */  ))+48) );
      (* (( (ptr) var←c67092)+26) ) = (word) (( (bPt) gf←c79380)+572)/* var←c62612 */ ;
      (* (( (ptr) var←c67092)+27) ) = (word) (( (bPt) gf←c79380)+564)/* var←c62580 */ ;
      (* (( (ptr) var←c67092)+28) ) = (word) (( (bPt) gf←c79380)+756)/* var←c63348 */ ;
      class←v14088 = var←c67092;
      };
SOURCE(16015, 1028)
   return(class←v14088);
   }

static void BZSetStrokeWidth←P2760(seg←v14148, strokeWidth←v14176)
   word seg←v14148;
   word strokeWidth←v14176;
   {
   /* BZSetStrokeWidth: */ 
SOURCE(17049, 113)
SOURCE(17110, 29)
   (* (( (ptr) seg←v14148)+2) ) = strokeWidth←v14176;
SOURCE(17141, 21)
   (void) UpdateBZBoundBox←P3060(seg←v14148);
   }

static word MakeBezier←P2820(p0←v14236, p1←v14264, p2←v14292, p3←v14320, props←v14348)
   W2 p0←v14236;
   W2 p1←v14264;
   W2 p2←v14292;
   W2 p3←v14320;
   word props←v14348;
   {
   register ptr gf←c79412 =  (ptr) &globalframe;
   word seg←v14488;
   word data←v26168;
   /* MakeBezier: */ 
SOURCE(17168, 637)
SOURCE(17168, 637)
   seg←v14488 = 0;
SOURCE(17267, 73)
   {
      word var←c67124;
      word var←c67188;
      var←c67124 = XR←NewObject(20, (* (( (ptr) gf←c79412)+28) ));
      var←c67188 = XR←NewObject(36, (* (( (ptr) gf←c79412)+27) ));
      (* (( (ptr) var←c67188)+8) ) = var←c67124;
      data←v26168 = var←c67188;
      };
SOURCE(17342, 50)
   {
      word var←c67220;
      {
         word var←c67252;
         var←c67252 = XR←NewObject(36, (* (( (ptr) gf←c79412)+29) ));
         (*  (ptr) var←c67252 ) = 1;
         var←c67220 = var←c67252;
         };
      (* (( (ptr) (* (( (ptr) data←v26168)+8) ))+4) ) = var←c67220;
      };
SOURCE(17394, 38)
   {
      word var←c67316;
      word var←c67284;
      {
         word limit244;
         var←c67284 = (* (( (ptr) (* (( (ptr) data←v26168)+8) ))+4) );
         var←c67316 = (word) (( (W8Pt) (( (bPt) var←c67284)+4))+(
               limit244 = (*  (ptr) var←c67284 ),
               BCK(0, limit244)
               ));
         };
      (*  (W2Pt) var←c67316 ) = p0←v14236;
      (*  (W2Pt) (( (ptr) var←c67316)+2) ) = p1←v14264;
      (*  (W2Pt) (( (ptr) var←c67316)+4) ) = p2←v14292;
      (*  (W2Pt) (( (ptr) var←c67316)+6) ) = p3←v14320;
      };
SOURCE(17434, 348)
   {
      word var←c67348;
      word var←c67380;
      word var←c67412;
      word var←c67444;
      var←c67348 = (word) FetchSegmentClass←P120((* ((( (ptr) gf←c79412)+30)) ));
      {
         word pd245;
         pd245 = (* (( (ptr) (* (( (ptr) gf←c79412)+287)/* var←c65172 */  ))+5) );
         var←c67380 = (word) ( *( (fPt) ((*  (ptr) pd245 ))))((*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), 0, 0, pd245)
         ;
         };
      {
         word pd246;
         pd246 = (* (( (ptr) (* (( (ptr) gf←c79412)+287)/* var←c65172 */  ))+5) );
         var←c67412 = (word) ( *( (fPt) ((*  (ptr) pd246 ))))((*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), 0, 0, pd246)
         ;
         };
      var←c67444 = XR←NewObject(104, (* (( (ptr) gf←c79412)+15) ));
      (*  (ptr) var←c67444 ) = var←c67348;
      (* (( (ptr) var←c67444)+2) ) = (* (( (ptr) gf←c79412)+4)/* defaultStrokeWidth←v4540 */  );
      (* (( (ptr) var←c67444)+3) ) = (* (( (ptr) gf←c79412)+5)/* defaultStrokeEnd←v4568 */  );
      (* (( (ptr) var←c67444)+6) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c67444)+7) ) = (*  (ptr) &fc115 );
      (* (( (ptr) var←c67444)+8) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c79412)+294)/* var←c65684 */  ))+54) ) );
      (*  (W2Pt) (( (ptr) var←c67444)+9) ) = p0←v14236;
      (*  (W2Pt) (( (ptr) var←c67444)+11) ) = p3←v14320;
      (* (( (ptr) var←c67444)+13) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c67444)+14) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c67444)+15) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c67444)+16) ) = (*  (ptr) &fc78 );
      (*  (W4Pt) (( (ptr) var←c67444)+17) ) = (*  (W4Pt) (( (ptr) gf←c79412)+279)/* var←c64820 */  );
      (* (( (ptr) var←c67444)+21) ) = var←c67380;
      (* (( (ptr) var←c67444)+22) ) = var←c67412;
      (* (( (ptr) var←c67444)+24) ) = data←v26168;
      (* (( (ptr) var←c67444)+25) ) = props←v14348;
      seg←v14488 = var←c67444;
      };
SOURCE(17784, 21)
   (void) UpdateBZBoundBox←P3060(seg←v14488);
SOURCE(17168, 637)
   return(seg←v14488);
   }

static void BezierGetParams←P2880(formal←c0443, seg←v14548)
   word formal←c0443;
   word seg←v14548;
   {
   register ptr gf←c79444 =  (ptr) &globalframe;
   W2 p0←v14592;
   W2 p1←v14620;
   W2 p2←v14648;
   W2 p3←v14676;
   word data←v26212;
   /* BezierGetParams: */ 
SOURCE(17811, 231)
SOURCE(17891, 35)
   data←v26212 = XR←Narrow((* (( (ptr) seg←v14548)+24) ), (* (( (ptr) gf←c79444)+27) ));
   {
      word var←c67476;
      word var←c67508;
      word var←c67540;
      word var←c67572;
SOURCE(17928, 27)
      {
         word limit247;
         var←c67476 = (* (( (ptr) (* (( (ptr) data←v26212)+8) ))+4) );
         p0←v14592 = (*  (W2Pt) (( (W8Pt) (( (ptr) var←c67476)+1))+(
               limit247 = (*  (ptr) var←c67476 ),
               BCK(0, limit247)
               )) );
         };
SOURCE(17957, 27)
      {
         word limit248;
         var←c67508 = (* (( (ptr) (* (( (ptr) data←v26212)+8) ))+4) );
         p1←v14620 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c67508)+1))+(
                  limit248 = (*  (ptr) var←c67508 ),
                  BCK(0, limit248)
                  )))+2) );
         };
SOURCE(17986, 27)
      {
         word limit249;
         var←c67540 = (* (( (ptr) (* (( (ptr) data←v26212)+8) ))+4) );
         p2←v14648 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c67540)+1))+(
                  limit249 = (*  (ptr) var←c67540 ),
                  BCK(0, limit249)
                  )))+4) );
         };
SOURCE(18015, 27)
      {
         word limit250;
         var←c67572 = (* (( (ptr) (* (( (ptr) data←v26212)+8) ))+4) );
         p3←v14676 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c67572)+1))+(
                  limit250 = (*  (ptr) var←c67572 ),
                  BCK(0, limit250)
                  )))+6) );
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0443 ) = p0←v14592;
   (*  (W2Pt) (( (ptr) formal←c0443)+2) ) = p1←v14620;
   (*  (W2Pt) (( (ptr) formal←c0443)+4) ) = p2←v14648;
   (*  (W2Pt) (( (ptr) formal←c0443)+6) ) = p3←v14676;
   return;
   }

static word BZBoundBox←P2940(seg←v14736)
   word seg←v14736;
   {
   word bBox←v14780;
   /* BZBoundBox: */ 
SOURCE(18048, 76)
SOURCE(18048, 76)
   bBox←v14780 = 0;
SOURCE(18109, 15)
   bBox←v14780 = (* (( (ptr) seg←v14736)+21) );
SOURCE(18048, 76)
   return(bBox←v14780);
   }

static word BZTightBox←P3000(seg←v14840)
   word seg←v14840;
   {
   word bBox←v14884;
   /* BZTightBox: */ 
SOURCE(18130, 80)
SOURCE(18130, 80)
   bBox←v14884 = 0;
SOURCE(18191, 19)
   bBox←v14884 = (* (( (ptr) seg←v14840)+22) );
SOURCE(18130, 80)
   return(bBox←v14884);
   }

static void UpdateBZBoundBox←P3060(seg←v14944)
   word seg←v14944;
   {
   register ptr gf←c79476 =  (ptr) &globalframe;
   word pad←v26256;
   word data←v26284;
   word cubics←v26312;
   word floX←v26340;
   word floY←v26368;
   word fhiX←v26396;
   word fhiY←v26424;
   word ft1←v26452;
   word ft2←v26480;
   word ft3←v26508;
   word ft4←v26536;
   /* UpdateBZBoundBox: */ 
SOURCE(18216, 1117)
SOURCE(18269, 35)
   data←v26284 = XR←Narrow((* (( (ptr) seg←v14944)+24) ), (* (( (ptr) gf←c79476)+27) ));
SOURCE(18306, 54)
   cubics←v26312 = (* (( (ptr) (* (( (ptr) data←v26284)+8) ))+4) );
SOURCE(18418, 20)
   {
      word limit251;
      ft1←v26452 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit251 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit251)
            )) ).f0;
      };
SOURCE(18440, 20)
   {
      word limit252;
      ft2←v26480 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit252 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit252)
            )) ).f2;
      };
SOURCE(18462, 20)
   {
      word limit253;
      ft3←v26508 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit253 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit253)
            )) ).f4;
      };
SOURCE(18484, 20)
   {
      word limit254;
      ft4←v26536 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit254 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit254)
            )) ).f6;
      };
SOURCE(18506, 30)
   {
      word x255;
      float tf256;
      float tf257;
      word x258;
      float tf259;
      float tf260;
      float tf261;
      word x262;
      float tf263;
      float tf264;
      float tf265;
      word x266;
      float tf267;
      tf259 = FMIN((
            x255 = ft1←v26452,  *(float*)&x255
            ), (
            x258 = ft2←v26480,  *(float*)&x258
            ), tf256, tf257);
      tf263 = FMIN(tf259, (
            x262 = ft3←v26508,  *(float*)&x262
            ), tf260, tf261);
      floX←v26340 = (
         tf267 = FMIN(tf263, (
               x266 = ft4←v26536,  *(float*)&x266
               ), tf264, tf265),  *(word*)&tf267
         );
      };
SOURCE(18538, 20)
   {
      word limit268;
      ft1←v26452 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit268 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit268)
            )) ).f1;
      };
SOURCE(18560, 20)
   {
      word limit269;
      ft2←v26480 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit269 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit269)
            )) ).f3;
      };
SOURCE(18582, 20)
   {
      word limit270;
      ft3←v26508 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit270 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit270)
            )) ).f5;
      };
SOURCE(18604, 20)
   {
      word limit271;
      ft4←v26536 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit271 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit271)
            )) ).f7;
      };
SOURCE(18626, 30)
   {
      word x272;
      float tf273;
      float tf274;
      word x275;
      float tf276;
      float tf277;
      float tf278;
      word x279;
      float tf280;
      float tf281;
      float tf282;
      word x283;
      float tf284;
      tf276 = FMIN((
            x272 = ft1←v26452,  *(float*)&x272
            ), (
            x275 = ft2←v26480,  *(float*)&x275
            ), tf273, tf274);
      tf280 = FMIN(tf276, (
            x279 = ft3←v26508,  *(float*)&x279
            ), tf277, tf278);
      floY←v26368 = (
         tf284 = FMIN(tf280, (
               x283 = ft4←v26536,  *(float*)&x283
               ), tf281, tf282),  *(word*)&tf284
         );
      };
SOURCE(18658, 20)
   {
      word limit285;
      ft1←v26452 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit285 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit285)
            )) ).f0;
      };
SOURCE(18680, 20)
   {
      word limit286;
      ft2←v26480 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit286 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit286)
            )) ).f2;
      };
SOURCE(18702, 20)
   {
      word limit287;
      ft3←v26508 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit287 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit287)
            )) ).f4;
      };
SOURCE(18724, 20)
   {
      word limit288;
      ft4←v26536 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit288 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit288)
            )) ).f6;
      };
SOURCE(18746, 30)
   {
      word x289;
      float tf290;
      float tf291;
      word x292;
      float tf293;
      float tf294;
      float tf295;
      word x296;
      float tf297;
      float tf298;
      float tf299;
      word x300;
      float tf301;
      tf293 = FMAX((
            x289 = ft1←v26452,  *(float*)&x289
            ), (
            x292 = ft2←v26480,  *(float*)&x292
            ), tf290, tf291);
      tf297 = FMAX(tf293, (
            x296 = ft3←v26508,  *(float*)&x296
            ), tf294, tf295);
      fhiX←v26396 = (
         tf301 = FMAX(tf297, (
               x300 = ft4←v26536,  *(float*)&x300
               ), tf298, tf299),  *(word*)&tf301
         );
      };
SOURCE(18778, 20)
   {
      word limit302;
      ft1←v26452 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit302 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit302)
            )) ).f1;
      };
SOURCE(18800, 20)
   {
      word limit303;
      ft2←v26480 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit303 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit303)
            )) ).f3;
      };
SOURCE(18822, 20)
   {
      word limit304;
      ft3←v26508 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit304 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit304)
            )) ).f5;
      };
SOURCE(18844, 20)
   {
      word limit305;
      ft4←v26536 = (* (( (W8Pt) (( (ptr) cubics←v26312)+1))+(
            limit305 = (*  (ptr) cubics←v26312 ),
            BCK(0, limit305)
            )) ).f7;
      };
SOURCE(18866, 30)
   {
      word x306;
      float tf307;
      float tf308;
      word x309;
      float tf310;
      float tf311;
      float tf312;
      word x313;
      float tf314;
      float tf315;
      float tf316;
      word x317;
      float tf318;
      tf310 = FMAX((
            x306 = ft1←v26452,  *(float*)&x306
            ), (
            x309 = ft2←v26480,  *(float*)&x309
            ), tf307, tf308);
      tf314 = FMAX(tf310, (
            x313 = ft3←v26508,  *(float*)&x313
            ), tf311, tf312);
      fhiY←v26424 = (
         tf318 = FMAX(tf314, (
               x317 = ft4←v26536,  *(float*)&x317
               ), tf315, tf316),  *(word*)&tf318
         );
      };
SOURCE(18898, 89)
   {
      word pd319;
      pd319 = (* (( (ptr) (* (( (ptr) gf←c79476)+287)/* var←c65172 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd319 ))))((* (( (ptr) seg←v14944)+22) ), floX←v26340, floY←v26368, fhiX←v26396, fhiY←v26424, pd319)
      ;
      };
SOURCE(18989, 34)
   {
      word pd320;
      pd320 = (* (( (ptr) (* (( (ptr) gf←c79476)+291)/* var←c65492 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd320 ))))((* ((( (ptr) data←v26284)+8)) ), pd320);
      };
SOURCE(19025, 157)
   {
      word pd321;
      word x322;
      word x323;
      float tf324;
      word x325;
      word x326;
      float tf327;
      pd321 = (* (( (ptr) (* (( (ptr) gf←c79476)+287)/* var←c65172 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd321 ))))((* (( (ptr) seg←v14944)+21) ), (*  (ptr) (* (( (ptr) data←v26284)+8) ) ), (* (( (ptr) (* (
               ( (ptr) data←v26284)+8) ))+1) ), (
            tf324 = (
               x322 = (*  (ptr) (* (( (ptr) data←v26284)+8) ) ),  *(float*)&x322
               ) + (
               x323 = (* (( (ptr) (* (( (ptr) data←v26284)+8) ))+2) ),  *(float*)&x323
               ),  *(word*)&tf324
            ), (
            tf327 = (
               x325 = (* (( (ptr) (* (( (ptr) data←v26284)+8) ))+1) ),  *(float*)&x325
               ) + (
               x326 = (* (( (ptr) (* (( (ptr) data←v26284)+8) ))+3) ),  *(float*)&x326
               ),  *(word*)&tf327
            ), pd321);
      };
SOURCE(19184, 106)
   if (((* (( (ptr) seg←v14944)+3) ) == 0)) {
SOURCE(19215, 44)
      {
         word x328;
         word x329;
         word x330;
         *(float*)&pad←v26256 = ((
            x328 = (* (( (ptr) seg←v14944)+2) ),  *(float*)&x328
            ) * (
            x329 = (*  (ptr) &fc156 ),  *(float*)&x329
            )) + (
            x330 = (*  (ptr) &fc158 ),  *(float*)&x330
            );
         };
      }
   else {
SOURCE(19259, 31)
      {
         word x331;
         word x332;
         word x333;
         *(float*)&pad←v26256 = ((
            x331 = (* (( (ptr) seg←v14944)+2) ),  *(float*)&x331
            ) / (
            x332 = (*  (ptr) &fc70 ),  *(float*)&x332
            )) + (
            x333 = (*  (ptr) &fc158 ),  *(float*)&x333
            );
         };
      };
SOURCE(19292, 41)
   {
      word pd334;
      pd334 = (* (( (ptr) (* (( (ptr) gf←c79476)+287)/* var←c65172 */  ))+17) );
      (void) ( *( (fPt) ((*  (ptr) pd334 ))))((* (( (ptr) seg←v14944)+21) ), pad←v26256, pd334);
      };
   }

static word BZCopyData←P3120(seg←v38880)
   word seg←v38880;
   {
   register ptr gf←c79508 =  (ptr) &globalframe;
   word data←v38924;
   word bzData←v26592;
   word new←v26620;
   /* BZCopyData: */ 
SOURCE(19339, 249)
SOURCE(19339, 249)
   data←v38924 = 0;
SOURCE(19383, 37)
   bzData←v26592 = XR←Narrow((* (( (ptr) seg←v38880)+24) ), (* (( (ptr) gf←c79508)+27) ));
SOURCE(19422, 36)
   new←v26620 = XR←NewObject(36, (* (( (ptr) gf←c79508)+27) ));
SOURCE(19460, 34)
   (*  (W4Pt) new←v26620 ) = (*  (W4Pt) bzData←v26592 );
SOURCE(19496, 34)
   (*  (W4Pt) (( (ptr) new←v26620)+4) ) = (*  (W4Pt) (( (ptr) bzData←v26592)+4) );
SOURCE(19532, 43)
   {
      word pd335;
      pd335 = (* (( (ptr) (* (( (ptr) gf←c79508)+291)/* var←c65492 */  ))+12) );
      (* (( (ptr) new←v26620)+8) ) = (word) ( *( (fPt) ((*  (ptr) pd335 ))))((* ((( (ptr) bzData←v26592)+8)) ), pd335);
      };
SOURCE(19577, 11)
   return(new←v26620);
   }

static void BZReverse←P3180(seg←v15004)
   word seg←v15004;
   {
   register ptr gf←c79540 =  (ptr) &globalframe;
   word data←v26664;
   /* BZReverse: */ 
SOURCE(19594, 105)
SOURCE(19629, 35)
   data←v26664 = XR←Narrow((* (( (ptr) seg←v15004)+24) ), (* (( (ptr) gf←c79540)+27) ));
SOURCE(19666, 33)
   {
      word pd336;
      pd336 = (* (( (ptr) (* (( (ptr) gf←c79540)+291)/* var←c65492 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd336 ))))((* ((( (ptr) data←v26664)+8)) ), pd336);
      };
   }

static void BZTransform←P3240(seg←v15064, transform←v15092)
   word seg←v15064;
   word transform←v15092;
   {
   register ptr gf←c79572 =  (ptr) &globalframe;
   word data←v26708;
   /* BZTransform: */ 
SOURCE(19704, 198)
SOURCE(19789, 35)
   data←v26708 = XR←Narrow((* (( (ptr) seg←v15064)+24) ), (* (( (ptr) gf←c79572)+27) ));
SOURCE(19826, 53)
   {
      word pd337;
      pd337 = (* (( (ptr) (* (( (ptr) gf←c79572)+291)/* var←c65492 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd337 ))))((* (( (ptr) data←v26708)+8) ), transform←v15092, 0, pd337);
      };
SOURCE(19881, 21)
   (void) UpdateBZBoundBox←P3060(seg←v15064);
   }

static void BZEndPointMoved←P3300(seg←v15152, lo←v15180, newPoint←v15208)
   word seg←v15152;
   word lo←v15180;
   W2 newPoint←v15208;
   {
   register ptr gf←c79604 =  (ptr) &globalframe;
   word data←v26752;
   /* BZEndPointMoved: */ 
SOURCE(19908, 243)
SOURCE(19976, 35)
   data←v26752 = XR←Narrow((* (( (ptr) seg←v15152)+24) ), (* (( (ptr) gf←c79604)+27) ));
SOURCE(20013, 115)
   if ((0 != lo←v15180)) {
SOURCE(20024, 55)
      {
         word var←c67668;
         word var←c67636;
         {
            word limit338;
            var←c67636 = (* (( (ptr) (* (( (ptr) data←v26752)+8) ))+4) );
            var←c67668 = (word) (( (W8Pt) (( (bPt) var←c67636)+4))+(
                  limit338 = (*  (ptr) var←c67636 ),
                  BCK(0, limit338)
                  ));
            };
         (*  (ptr) var←c67668 ) = newPoint←v15208.f0;
         (* (( (ptr) var←c67668)+1) ) = newPoint←v15208.f1;
         };
      }
   else {
SOURCE(20079, 49)
      {
         word var←c67732;
         word var←c67700;
         {
            word limit339;
            var←c67700 = (* (( (ptr) (* (( (ptr) data←v26752)+8) ))+4) );
            var←c67732 = (word) (( (bPt) (( (W8Pt) (( (bPt) var←c67700)+4))+(
                     limit339 = (*  (ptr) var←c67700 ),
                     BCK(0, limit339)
                     )))+24);
            };
         (*  (ptr) var←c67732 ) = newPoint←v15208.f0;
         (* (( (ptr) var←c67732)+1) ) = newPoint←v15208.f1;
         };
      };
SOURCE(20130, 21)
   (void) UpdateBZBoundBox←P3060(seg←v15152);
   }

static void BZControlPointMoved←P3360(seg←v15268, transform←v15296, controlPointNum←v15324)
   word seg←v15268;
   word transform←v15296;
   word controlPointNum←v15324;
   {
   register ptr gf←c79636 =  (ptr) &globalframe;
   word data←v26796;
   /* BZControlPointMoved: */ 
SOURCE(20157, 413)
SOURCE(20272, 35)
   data←v26796 = XR←Narrow((* (( (ptr) seg←v15268)+24) ), (* (( (ptr) gf←c79636)+27) ));
SOURCE(20309, 220)
   {
      word var←c67764;
      var←c67764 = controlPointNum←v15324;
      if ((var←c67764 == 0)) {
SOURCE(20342, 90)
         {
            W2 var←c67796;
            word var←c67860;
            {
               W2 var←c0484;
               {
                  word var←c67828;
                  W2 var←c01371;
                  {
                     word limit340;
                     var←c67828 = (* (( (ptr) (* (( (ptr) data←v26796)+8) ))+4) );
                     var←c01371 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c67828)+1))+(
/*1*/   limit340 = (*  (ptr) var←c67828 ),
/*1*/   BCK(0, limit340)
/*1*/   )))+2) );
                     };
                  {
                     word pd341;
                     pd341 = (* (( (ptr) (* (( (ptr) gf←c79636)+293)/* var←c65588 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd341 ))))((word) &var←c0484, transform←v15296, var←c01371, pd341);
                     };
                  };
               var←c67796 = var←c0484;
               };
            {
               word limit342;
               var←c67860 = (* (( (ptr) (* (( (ptr) data←v26796)+8) ))+4) );
               (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c67860)+1))+(
                        limit342 = (*  (ptr) var←c67860 ),
                        BCK(0, limit342)
                        )))+2) ) = var←c67796;
               };
            };
         }
      else {
         if ((var←c67764 == 1)) {
SOURCE(20439, 90)
            {
               W2 var←c67892;
               word var←c67956;
               {
                  W2 var←c0488;
                  {
                     word var←c67924;
                     W2 var←c01372;
                     {
                        word limit343;
                        var←c67924 = (* (( (ptr) (* (( (ptr) data←v26796)+8) ))+4) );
                        var←c01372 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c67924)+1))+(
/*1*/      limit343 = (*  (ptr) var←c67924 ),
/*1*/      BCK(0, limit343)
/*1*/      )))+4) );
                        };
                     {
                        word pd344;
                        pd344 = (* (( (ptr) (* (( (ptr) gf←c79636)+293)/* var←c65588 */  ))+39) );
                        (void) ( *( (fPt) ((*  (ptr) pd344 ))))((word) &var←c0488, transform←v15296, var←c01372, pd344);
                        };
                     };
                  var←c67892 = var←c0488;
                  };
               {
                  word limit345;
                  var←c67956 = (* (( (ptr) (* (( (ptr) data←v26796)+8) ))+4) );
                  (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c67956)+1))+(
                           limit345 = (*  (ptr) var←c67956 ),
                           BCK(0, limit345)
                           )))+4) ) = var←c67892;
                  };
               };
            }
         else {
SOURCE(20542, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
SOURCE(20549, 21)
   (void) UpdateBZBoundBox←P3060(seg←v15268);
   }

static void BZControlPointMovedTo←P3420(seg←v15384, newPos←v15412, controlPointNum←v15440)
   word seg←v15384;
   W2 newPos←v15412;
   word controlPointNum←v15440;
   {
   register ptr gf←c79668 =  (ptr) &globalframe;
   word data←v26840;
   /* BZControlPointMovedTo: */ 
SOURCE(20576, 271)
SOURCE(20667, 35)
   data←v26840 = XR←Narrow((* (( (ptr) seg←v15384)+24) ), (* (( (ptr) gf←c79668)+27) ));
SOURCE(20704, 102)
   {
      word var←c67988;
      word var←c68020;
      word var←c68052;
      var←c67988 = controlPointNum←v15440;
      if ((var←c67988 == 0)) {
SOURCE(20737, 31)
         {
            word limit346;
            var←c68020 = (* (( (ptr) (* (( (ptr) data←v26840)+8) ))+4) );
            (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68020)+1))+(
                     limit346 = (*  (ptr) var←c68020 ),
                     BCK(0, limit346)
                     )))+2) ) = newPos←v15412;
            };
         }
      else {
         if ((var←c67988 == 1)) {
SOURCE(20775, 31)
            {
               word limit347;
               var←c68052 = (* (( (ptr) (* (( (ptr) data←v26840)+8) ))+4) );
               (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68052)+1))+(
                        limit347 = (*  (ptr) var←c68052 ),
                        BCK(0, limit347)
                        )))+4) ) = newPos←v15412;
               };
            }
         else {
SOURCE(20819, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
SOURCE(20826, 21)
   (void) UpdateBZBoundBox←P3060(seg←v15384);
   }

static void BZBuildPathTransform←P3480(seg←v15500, transform←v15528, entire←v15556, lo←v15584, hi←v15612, controlPoints←v15640, lineTo←v15668, curveTo←v15696, conicTo←v15724, arcTo←v15752)
   word seg←v15500;
   word transform←v15528;
   word entire←v15556;
   word lo←v15584;
   word hi←v15612;
   word controlPoints←v15640;
   word lineTo←v15668;
   word curveTo←v15696;
   word conicTo←v15724;
   word arcTo←v15752;
   {
   W6 var←c79700;
   register ptr gf←c79732 =  (ptr) &globalframe;
   /* declaration of var←c68084 skipped */ 
   word path←v26884;
   word moveTo←v26912;
   /* BZBuildPathTransform: */ 
SOURCE(20853, 756)
   {
      word tmpAddr348;
      tmpAddr348 = (word) (( (ptr) &var←c79700)+4)/* var←c68084 */ ;
      (*  (ptr) tmpAddr348 ) = ( ((word)  (fPt) NoName←Q7524) );
      (* (( (ptr) tmpAddr348) + 1) ) = 1;
      };
SOURCE(21121, 36)
   path←v26884 = (word) GetPath←P6780(seg←v15500);
SOURCE(21159, 32)
   moveTo←v26912 = (word) (( (bPt) &var←c79700)+16)/* var←c68084 */ ;
SOURCE(21195, 414)
   if ((0 != entire←v15556)) {
SOURCE(21210, 173)
      {
         word scratchPath←v26956;
SOURCE(21212, 56)
         {
            word pd349;
            pd349 = (* (( (ptr) (* (( (ptr) gf←c79732)+291)/* var←c65492 */  ))+12) );
            scratchPath←v26956 = (word) ( *( (fPt) ((*  (ptr) pd349 ))))(path←v26884, pd349);
            };
SOURCE(21270, 55)
         {
            word pd350;
            pd350 = (* (( (ptr) (* (( (ptr) gf←c79732)+291)/* var←c65492 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd350 ))))(scratchPath←v26956, transform←v15528, 0, pd350);
            };
SOURCE(21327, 54)
         {
            word pd351;
            pd351 = (* (( (ptr) (* (( (ptr) gf←c79732)+291)/* var←c65492 */  ))+5) );
            (void) ( *( (fPt) ((*  (ptr) pd351 ))))(scratchPath←v26956, moveTo←v26912, curveTo←v15696, pd351);
            };
         };
      }
   else {
SOURCE(21390, 221)
      {
         W2 oldLo←v27000;
         W2 oldHi←v27028;
         W2 oldC1←v27056;
         W2 oldC2←v27084;
SOURCE(21425, 86)
         {
            W8 var←c68116;
            (void) BZTransformPath←P3540((word) &var←c68116, path←v26884, transform←v15528, lo←v15584, hi←v15612, controlPoints←v15640)
            ;
            oldC2←v27084 = (*  (W2Pt) (( (ptr) &var←c68116)+6) );
            oldC1←v27056 = (*  (W2Pt) (( (ptr) &var←c68116)+4) );
            oldHi←v27028 = (*  (W2Pt) (( (ptr) &var←c68116)+2) );
            oldLo←v27000 = (*  (W2Pt) &var←c68116 );
            };
SOURCE(21513, 47)
         {
            word pd352;
            pd352 = (* (( (ptr) (* (( (ptr) gf←c79732)+291)/* var←c65492 */  ))+5) );
            (void) ( *( (fPt) ((*  (ptr) pd352 ))))(path←v26884, moveTo←v26912, curveTo←v15696, pd352);
            };
SOURCE(21562, 47)
         (void) BZRestorePath←P3660(path←v26884, oldLo←v27000, oldHi←v27028, oldC1←v27056, oldC2←v27084);
         };
      };
   }

static void NoName←Q7524(p←v56832, formal←c79764)
   W2 p←v56832;
   word formal←c79764;
   {
   formal←c79764 = (formal←c79764 - 16);
   /* : */ 
   }

static void BZTransformPath←P3540(formal←c0545, path←v15812, transform←v15840, lo←v15868, hi←v15896, controlPoints←v15924)
   word formal←c0545;
   word path←v15812;
   word transform←v15840;
   word lo←v15868;
   word hi←v15896;
   word controlPoints←v15924;
   {
   register ptr gf←c79796 =  (ptr) &globalframe;
   W2 oldLo←v15968;
   W2 oldHi←v15996;
   W2 oldC1←v16024;
   W2 oldC2←v16052;
   /* BZTransformPath: */ 
SOURCE(21617, 704)
   {
      word var←c68148;
      word var←c68180;
      word var←c68212;
      word var←c68244;
SOURCE(21797, 25)
      {
         word limit353;
         var←c68148 = (* (( (ptr) path←v15812)+4) );
         oldLo←v15968 = (*  (W2Pt) (( (W8Pt) (( (ptr) var←c68148)+1))+(
               limit353 = (*  (ptr) var←c68148 ),
               BCK(0, limit353)
               )) );
         };
SOURCE(21824, 25)
      {
         word limit354;
         var←c68180 = (* (( (ptr) path←v15812)+4) );
         oldHi←v15996 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68180)+1))+(
                  limit354 = (*  (ptr) var←c68180 ),
                  BCK(0, limit354)
                  )))+6) );
         };
SOURCE(21851, 25)
      {
         word limit355;
         var←c68212 = (* (( (ptr) path←v15812)+4) );
         oldC1←v16024 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68212)+1))+(
                  limit355 = (*  (ptr) var←c68212 ),
                  BCK(0, limit355)
                  )))+2) );
         };
SOURCE(21878, 25)
      {
         word limit356;
         var←c68244 = (* (( (ptr) path←v15812)+4) );
         oldC2←v16052 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68244)+1))+(
                  limit356 = (*  (ptr) var←c68244 ),
                  BCK(0, limit356)
                  )))+4) );
         };
SOURCE(21905, 79)
      if ((0 != lo←v15868)) {
SOURCE(21916, 68)
         {
            W2 var←c68276;
            word var←c68308;
            {
               word pd357;
               pd357 = (* (( (ptr) (* (( (ptr) gf←c79796)+293)/* var←c65588 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd357 ))))((word) &var←c68276, transform←v15840, oldLo←v15968, pd357);
               };
            {
               word limit358;
               var←c68308 = (* (( (ptr) path←v15812)+4) );
               (*  (W2Pt) (( (W8Pt) (( (ptr) var←c68308)+1))+(
                     limit358 = (*  (ptr) var←c68308 ),
                     BCK(0, limit358)
                     )) ) = var←c68276;
               };
            };
         };
SOURCE(21986, 79)
      if ((0 != hi←v15896)) {
SOURCE(21997, 68)
         {
            W2 var←c68340;
            word var←c68372;
            {
               word pd359;
               pd359 = (* (( (ptr) (* (( (ptr) gf←c79796)+293)/* var←c65588 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd359 ))))((word) &var←c68340, transform←v15840, oldHi←v15996, pd359);
               };
            {
               word limit360;
               var←c68372 = (* (( (ptr) path←v15812)+4) );
               (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68372)+1))+(
                        limit360 = (*  (ptr) var←c68372 ),
                        BCK(0, limit360)
                        )))+6) ) = var←c68340;
               };
            };
         };
SOURCE(22067, 126)
      {
         word limit362;
         if ((controlPoints←v15924 == 0)) { goto then0361;};
         if (XR←ExtractField(controlPoints←v15924, 32 + (word) (
               limit362 = (*  (ptr) controlPoints←v15924 ),
               BCK(0, limit362)
               ), 1)) {
            then0361: ;
SOURCE(22113, 80)
            {
               W2 var←c68404;
               word var←c68468;
               {
                  W2 var←c0539;
                  {
                     word var←c68436;
                     W2 var←c01373;
                     {
                        word limit363;
                        var←c68436 = (* (( (ptr) path←v15812)+4) );
                        var←c01373 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68436)+1))+(
/*1*/      limit363 = (*  (ptr) var←c68436 ),
/*1*/      BCK(0, limit363)
/*1*/      )))+2) );
                        };
                     {
                        word pd364;
                        pd364 = (* (( (ptr) (* (( (ptr) gf←c79796)+293)/* var←c65588 */  ))+39) );
                        (void) ( *( (fPt) ((*  (ptr) pd364 ))))((word) &var←c0539, transform←v15840, var←c01373, pd364);
                        };
                     };
                  var←c68404 = var←c0539;
                  };
               {
                  word limit365;
                  var←c68468 = (* (( (ptr) path←v15812)+4) );
                  (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68468)+1))+(
                           limit365 = (*  (ptr) var←c68468 ),
                           BCK(0, limit365)
                           )))+2) ) = var←c68404;
                  };
               };
            };
         };
SOURCE(22195, 126)
      {
         word limit367;
         if ((controlPoints←v15924 == 0)) { goto then0366;};
         if (XR←ExtractField(controlPoints←v15924, 32 + (word) (
               limit367 = (*  (ptr) controlPoints←v15924 ),
               BCK(1, limit367)
               ), 1)) {
            then0366: ;
SOURCE(22241, 80)
            {
               W2 var←c68500;
               word var←c68564;
               {
                  W2 var←c0543;
                  {
                     word var←c68532;
                     W2 var←c01374;
                     {
                        word limit368;
                        var←c68532 = (* (( (ptr) path←v15812)+4) );
                        var←c01374 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68532)+1))+(
/*1*/      limit368 = (*  (ptr) var←c68532 ),
/*1*/      BCK(0, limit368)
/*1*/      )))+4) );
                        };
                     {
                        word pd369;
                        pd369 = (* (( (ptr) (* (( (ptr) gf←c79796)+293)/* var←c65588 */  ))+39) );
                        (void) ( *( (fPt) ((*  (ptr) pd369 ))))((word) &var←c0543, transform←v15840, var←c01374, pd369);
                        };
                     };
                  var←c68500 = var←c0543;
                  };
               {
                  word limit370;
                  var←c68564 = (* (( (ptr) path←v15812)+4) );
                  (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68564)+1))+(
                           limit370 = (*  (ptr) var←c68564 ),
                           BCK(0, limit370)
                           )))+4) ) = var←c68500;
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0545 ) = oldLo←v15968;
   (*  (W2Pt) (( (ptr) formal←c0545)+2) ) = oldHi←v15996;
   (*  (W2Pt) (( (ptr) formal←c0545)+4) ) = oldC1←v16024;
   (*  (W2Pt) (( (ptr) formal←c0545)+6) ) = oldC2←v16052;
   return;
   }

static void BZSpecialTransformPath←P3600(seg←v16112, transform←v16140, lo←v16168, hi←v16196, controlPoints←v16224, loTransform←v16252, hiTransform←v16280, curveTo←v16308)
   word seg←v16112;
   word transform←v16140;
   word lo←v16168;
   word hi←v16196;
   word controlPoints←v16224;
   word loTransform←v16252;
   word hiTransform←v16280;
   word curveTo←v16308;
   {
   W6 var←c79828;
   register ptr gf←c79860 =  (ptr) &globalframe;
   /* declaration of var←c68596 skipped */ 
   W2 oldLo←v27128;
   W2 oldHi←v27156;
   W2 oldC1←v27184;
   W2 oldC2←v27212;
   word path←v27240;
   word moveTo←v27268;
   word var←c68628;
   word var←c68660;
   word var←c68692;
   word var←c68724;
   /* BZSpecialTransformPath: */ 
SOURCE(22327, 972)
   {
      word tmpAddr371;
      tmpAddr371 = (word) (( (ptr) &var←c79828)+4)/* var←c68596 */ ;
      (*  (ptr) tmpAddr371 ) = ( ((word)  (fPt) NoName←Q7680) );
      (* (( (ptr) tmpAddr371) + 1) ) = 1;
      };
SOURCE(22599, 36)
   path←v27240 = (word) GetPath←P6780(seg←v16112);
SOURCE(22637, 32)
   moveTo←v27268 = (word) (( (bPt) &var←c79828)+16)/* var←c68596 */ ;
SOURCE(22673, 25)
   {
      word limit372;
      var←c68628 = (* (( (ptr) path←v27240)+4) );
      oldLo←v27128 = (*  (W2Pt) (( (W8Pt) (( (ptr) var←c68628)+1))+(
            limit372 = (*  (ptr) var←c68628 ),
            BCK(0, limit372)
            )) );
      };
SOURCE(22700, 25)
   {
      word limit373;
      var←c68660 = (* (( (ptr) path←v27240)+4) );
      oldHi←v27156 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68660)+1))+(
               limit373 = (*  (ptr) var←c68660 ),
               BCK(0, limit373)
               )))+6) );
      };
SOURCE(22727, 25)
   {
      word limit374;
      var←c68692 = (* (( (ptr) path←v27240)+4) );
      oldC1←v27184 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68692)+1))+(
               limit374 = (*  (ptr) var←c68692 ),
               BCK(0, limit374)
               )))+2) );
      };
SOURCE(22754, 25)
   {
      word limit375;
      var←c68724 = (* (( (ptr) path←v27240)+4) );
      oldC2←v27212 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68724)+1))+(
               limit375 = (*  (ptr) var←c68724 ),
               BCK(0, limit375)
               )))+4) );
      };
SOURCE(22781, 79)
   if ((0 != lo←v16168)) {
SOURCE(22792, 68)
      {
         W2 var←c68756;
         word var←c68788;
         {
            word pd376;
            pd376 = (* (( (ptr) (* (( (ptr) gf←c79860)+293)/* var←c65588 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd376 ))))((word) &var←c68756, transform←v16140, oldLo←v27128, pd376);
            };
         {
            word limit377;
            var←c68788 = (* (( (ptr) path←v27240)+4) );
            (*  (W2Pt) (( (W8Pt) (( (ptr) var←c68788)+1))+(
                  limit377 = (*  (ptr) var←c68788 ),
                  BCK(0, limit377)
                  )) ) = var←c68756;
            };
         };
      };
SOURCE(22862, 79)
   if ((0 != hi←v16196)) {
SOURCE(22873, 68)
      {
         W2 var←c68820;
         word var←c68852;
         {
            word pd378;
            pd378 = (* (( (ptr) (* (( (ptr) gf←c79860)+293)/* var←c65588 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd378 ))))((word) &var←c68820, transform←v16140, oldHi←v27156, pd378);
            };
         {
            word limit379;
            var←c68852 = (* (( (ptr) path←v27240)+4) );
            (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68852)+1))+(
                     limit379 = (*  (ptr) var←c68852 ),
                     BCK(0, limit379)
                     )))+6) ) = var←c68820;
            };
         };
      };
SOURCE(22943, 128)
   {
      word limit381;
      if ((controlPoints←v16224 == 0)) { goto then0380;};
      if (XR←ExtractField(controlPoints←v16224, 32 + (word) (
            limit381 = (*  (ptr) controlPoints←v16224 ),
            BCK(0, limit381)
            ), 1)) {
         then0380: ;
SOURCE(22989, 82)
         {
            W2 var←c68884;
            word var←c68948;
            {
               W2 var←c0573;
               {
                  word var←c68916;
                  W2 var←c01375;
                  {
                     word limit382;
                     var←c68916 = (* (( (ptr) path←v27240)+4) );
                     var←c01375 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68916)+1))+(
/*1*/   limit382 = (*  (ptr) var←c68916 ),
/*1*/   BCK(0, limit382)
/*1*/   )))+2) );
                     };
                  {
                     word pd383;
                     pd383 = (* (( (ptr) (* (( (ptr) gf←c79860)+293)/* var←c65588 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd383 ))))((word) &var←c0573, loTransform←v16252, var←c01375, pd383);
                     };
                  };
               var←c68884 = var←c0573;
               };
            {
               word limit384;
               var←c68948 = (* (( (ptr) path←v27240)+4) );
               (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c68948)+1))+(
                        limit384 = (*  (ptr) var←c68948 ),
                        BCK(0, limit384)
                        )))+2) ) = var←c68884;
               };
            };
         };
      };
SOURCE(23073, 128)
   {
      word limit386;
      if ((controlPoints←v16224 == 0)) { goto then0385;};
      if (XR←ExtractField(controlPoints←v16224, 32 + (word) (
            limit386 = (*  (ptr) controlPoints←v16224 ),
            BCK(1, limit386)
            ), 1)) {
         then0385: ;
SOURCE(23119, 82)
         {
            W2 var←c68980;
            word var←c69044;
            {
               W2 var←c0577;
               {
                  word var←c69012;
                  W2 var←c01376;
                  {
                     word limit387;
                     var←c69012 = (* (( (ptr) path←v27240)+4) );
                     var←c01376 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69012)+1))+(
/*1*/   limit387 = (*  (ptr) var←c69012 ),
/*1*/   BCK(0, limit387)
/*1*/   )))+4) );
                     };
                  {
                     word pd388;
                     pd388 = (* (( (ptr) (* (( (ptr) gf←c79860)+293)/* var←c65588 */  ))+39) );
                     (void) ( *( (fPt) ((*  (ptr) pd388 ))))((word) &var←c0577, hiTransform←v16280, var←c01376, pd388);
                     };
                  };
               var←c68980 = var←c0577;
               };
            {
               word limit389;
               var←c69044 = (* (( (ptr) path←v27240)+4) );
               (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69044)+1))+(
                        limit389 = (*  (ptr) var←c69044 ),
                        BCK(0, limit389)
                        )))+4) ) = var←c68980;
               };
            };
         };
      };
SOURCE(23203, 47)
   {
      word pd390;
      pd390 = (* (( (ptr) (* (( (ptr) gf←c79860)+291)/* var←c65492 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd390 ))))(path←v27240, moveTo←v27268, curveTo←v16308, pd390);
      };
SOURCE(23252, 47)
   (void) BZRestorePath←P3660(path←v27240, oldLo←v27128, oldHi←v27156, oldC1←v27184, oldC2←v27212);
   }

static void NoName←Q7680(p←v57040, formal←c79892)
   W2 p←v57040;
   word formal←c79892;
   {
   formal←c79892 = (formal←c79892 - 16);
   /* : */ 
   }

static void BZRestorePath←P3660(path←v16368, oldLo←v16396, oldHi←v16424, oldC1←v16452, oldC2←v16480)
   word path←v16368;
   W2 oldLo←v16396;
   W2 oldHi←v16424;
   W2 oldC1←v16452;
   W2 oldC2←v16480;
   {
   word var←c69076;
   word var←c69108;
   word var←c69140;
   word var←c69172;
   /* BZRestorePath: */ 
SOURCE(23305, 187)
SOURCE(23386, 25)
   {
      word limit391;
      var←c69076 = (* (( (ptr) path←v16368)+4) );
      (*  (W2Pt) (( (W8Pt) (( (ptr) var←c69076)+1))+(
            limit391 = (*  (ptr) var←c69076 ),
            BCK(0, limit391)
            )) ) = oldLo←v16396;
      };
SOURCE(23413, 25)
   {
      word limit392;
      var←c69108 = (* (( (ptr) path←v16368)+4) );
      (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69108)+1))+(
               limit392 = (*  (ptr) var←c69108 ),
               BCK(0, limit392)
               )))+6) ) = oldHi←v16424;
      };
SOURCE(23440, 25)
   {
      word limit393;
      var←c69140 = (* (( (ptr) path←v16368)+4) );
      (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69140)+1))+(
               limit393 = (*  (ptr) var←c69140 ),
               BCK(0, limit393)
               )))+2) ) = oldC1←v16452;
      };
SOURCE(23467, 25)
   {
      word limit394;
      var←c69172 = (* (( (ptr) path←v16368)+4) );
      (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69172)+1))+(
               limit394 = (*  (ptr) var←c69172 ),
               BCK(0, limit394)
               )))+4) ) = oldC2←v16480;
      };
   }

static void BZControlPointGet←P3720(formal←c0598, seg←v16540, controlPointNum←v16568)
   word formal←c0598;
   word seg←v16540;
   word controlPointNum←v16568;
   {
   register ptr gf←c79924 =  (ptr) &globalframe;
   W2 point←v16612;
   word data←v27312;
   /* BZControlPointGet: */ 
SOURCE(23498, 227)
SOURCE(23586, 35)
   data←v27312 = XR←Narrow((* (( (ptr) seg←v16540)+24) ), (* (( (ptr) gf←c79924)+27) ));
SOURCE(23623, 102)
   {
      word var←c69204;
      var←c69204 = controlPointNum←v16568;
      if ((var←c69204 == 0)) {
SOURCE(23656, 31)
         {
            W2 var←c69268;
            word var←c69236;
            {
               word limit395;
               var←c69236 = (* (( (ptr) (* (( (ptr) data←v27312)+8) ))+4) );
               var←c69268 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69236)+1))+(
                        limit395 = (*  (ptr) var←c69236 ),
                        BCK(0, limit395)
                        )))+2) );
               };
            point←v16612 = var←c69268;
            /* removed tail goto */ 
            };
         }
      else {
         if ((var←c69204 == 1)) {
SOURCE(23694, 31)
            {
               W2 var←c69332;
               word var←c69300;
               {
                  word limit396;
                  var←c69300 = (* (( (ptr) (* (( (ptr) data←v27312)+8) ))+4) );
                  var←c69332 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69300)+1))+(
                           limit396 = (*  (ptr) var←c69300 ),
                           BCK(0, limit396)
                           )))+4) );
                  };
               point←v16612 = var←c69332;
               /* removed tail goto */ 
               };
            }
         else {
SOURCE(23738, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
   (*  (W2Pt) formal←c0598 ) = point←v16612;
   return;
   }

static word BZControlPointCount←P3780(seg←v16672)
   word seg←v16672;
   {
   register ptr gf←c79956 =  (ptr) &globalframe;
   word controlPointCount←v16716;
   word data←v27356;
   /* BZControlPointCount: */ 
SOURCE(23749, 173)
SOURCE(23827, 35)
   data←v27356 = XR←Narrow((* (( (ptr) seg←v16672)+24) ), (* (( (ptr) gf←c79956)+27) ));
SOURCE(23913, 9)
   return(2);
   }

static void BZFieldSet←P3840(seg←v38984, controlPointNum←v39012, selected←v39040, selectClass←v39068)
   word seg←v38984;
   word controlPointNum←v39012;
   word selected←v39040;
   word selectClass←v39068;
   {
   register ptr gf←c79988 =  (ptr) &globalframe;
   word data←v27400;
   /* BZFieldSet: */ 
SOURCE(23928, 546)
SOURCE(23984, 35)
   data←v27400 = XR←Narrow((* (( (ptr) seg←v38984)+24) ), (* (( (ptr) gf←c79988)+27) ));
SOURCE(24021, 453)
   {
      word var←c69364;
      var←c69364 = controlPointNum←v39012;
      if ((var←c69364 == 0)) {
SOURCE(24056, 194)
         {
            word var←c69396;
            var←c69396 = selectClass←v39068;
            switch (var←c69396) {
               case 0: 
SOURCE(24090, 33)
                  (*  (ptr) data←v27400 ) = selected←v39040;
                  break;
               case 1: 
SOURCE(24132, 30)
                  (* (( (ptr) data←v27400)+1) ) = selected←v39040;
                  break;
               case 2: 
SOURCE(24174, 33)
                  (* (( (ptr) data←v27400)+2) ) = selected←v39040;
                  break;
               case 3: 
SOURCE(24218, 32)
                  (* (( (ptr) data←v27400)+3) ) = selected←v39040;
                  break;
               default: 
SOURCE(24263, 5)
                  (void) XR←RaiseUnnamedError();
                  break;
               };
            };
         }
      else {
         if ((var←c69364 == 1)) {
SOURCE(24280, 194)
            {
               word var←c69428;
               var←c69428 = selectClass←v39068;
               switch (var←c69428) {
                  case 0: 
SOURCE(24314, 33)
                     (* (( (ptr) data←v27400)+4) ) = selected←v39040;
                     break;
                  case 1: 
SOURCE(24356, 30)
                     (* (( (ptr) data←v27400)+5) ) = selected←v39040;
                     break;
                  case 2: 
SOURCE(24398, 33)
                     (* (( (ptr) data←v27400)+6) ) = selected←v39040;
                     break;
                  case 3: 
SOURCE(24442, 32)
                     (* (( (ptr) data←v27400)+7) ) = selected←v39040;
                     break;
                  default: 
SOURCE(24487, 5)
                     (void) XR←RaiseUnnamedError();
                     break;
                  };
               };
            }
         else {
SOURCE(24508, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
   }

static word BZFieldGet←P3900(seg←v39128, controlPointNum←v39156, selectClass←v39184)
   word seg←v39128;
   word controlPointNum←v39156;
   word selectClass←v39184;
   {
   register ptr gf←c80020 =  (ptr) &globalframe;
   word selected←v39228;
   word data←v27444;
   /* BZFieldGet: */ 
SOURCE(24519, 546)
SOURCE(24575, 35)
   data←v27444 = XR←Narrow((* (( (ptr) seg←v39128)+24) ), (* (( (ptr) gf←c80020)+27) ));
SOURCE(24612, 453)
   {
      word var←c69460;
      var←c69460 = controlPointNum←v39156;
      if ((var←c69460 == 0)) {
SOURCE(24647, 194)
         {
            word var←c69492;
            var←c69492 = selectClass←v39184;
            switch (var←c69492) {
               case 0: 
SOURCE(24681, 33)
                  selected←v39228 = (*  (ptr) data←v27444 );
                  break;
               case 1: 
SOURCE(24723, 30)
                  selected←v39228 = (* (( (ptr) data←v27444)+1) );
                  break;
               case 2: 
SOURCE(24765, 33)
                  selected←v39228 = (* (( (ptr) data←v27444)+2) );
                  break;
               case 3: 
SOURCE(24809, 32)
                  selected←v39228 = (* (( (ptr) data←v27444)+3) );
                  break;
               default: 
SOURCE(24854, 5)
                  (void) XR←RaiseUnnamedError();
                  break;
               };
            };
         }
      else {
         if ((var←c69460 == 1)) {
SOURCE(24871, 194)
            {
               word var←c69524;
               var←c69524 = selectClass←v39184;
               switch (var←c69524) {
                  case 0: 
SOURCE(24905, 33)
                     selected←v39228 = (* (( (ptr) data←v27444)+4) );
                     break;
                  case 1: 
SOURCE(24947, 30)
                     selected←v39228 = (* (( (ptr) data←v27444)+5) );
                     break;
                  case 2: 
SOURCE(24989, 33)
                     selected←v39228 = (* (( (ptr) data←v27444)+6) );
                     break;
                  case 3: 
SOURCE(25033, 32)
                     selected←v39228 = (* (( (ptr) data←v27444)+7) );
                     break;
                  default: 
SOURCE(25078, 5)
                     (void) XR←RaiseUnnamedError();
                     break;
                  };
               };
            }
         else {
SOURCE(25099, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
SOURCE(24519, 546)
   return(selected←v39228);
   }

static void BZClosestControlPoint←P3960(formal←c0632, seg←v16776, testPoint←v16804, tolerance←v16832)
   word formal←c0632;
   word seg←v16776;
   W2 testPoint←v16804;
   word tolerance←v16832;
   {
   register ptr gf←c80052 =  (ptr) &globalframe;
   W2 point←v16876;
   W2 normal←v16904;
   word controlPointNum←v16932;
   word success←v16960;
   word data←v27488;
   word d0←v27516;
   word d1←v27544;
   /* BZClosestControlPoint: */ 
SOURCE(25109, 585)
SOURCE(25109, 585)
   normal←v16904.f0 = (*  (ptr) &fc78 );
   normal←v16904.f1 = (*  (ptr) &fc115 );
SOURCE(25276, 35)
   data←v27488 = XR←Narrow((* (( (ptr) seg←v16776)+24) ), (* (( (ptr) gf←c80052)+27) ));
SOURCE(25313, 71)
   {
      word var←c69556;
      W2 var←c01377;
      {
         word limit397;
         var←c69556 = (* (( (ptr) (* (( (ptr) data←v27488)+8) ))+4) );
         var←c01377 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69556)+1))+(
                  limit397 = (*  (ptr) var←c69556 ),
                  BCK(0, limit397)
                  )))+2) );
         };
      {
         word pd398;
         pd398 = (* (( (ptr) (* (( (ptr) gf←c80052)+300)/* var←c69588 */  ))+21) );
         d0←v27516 = (word) ( *( (fPt) ((*  (ptr) pd398 ))))(testPoint←v16804, var←c01377, pd398);
         };
      };
SOURCE(25386, 71)
   {
      word var←c69620;
      W2 var←c01378;
      {
         word limit399;
         var←c69620 = (* (( (ptr) (* (( (ptr) data←v27488)+8) ))+4) );
         var←c01378 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69620)+1))+(
                  limit399 = (*  (ptr) var←c69620 ),
                  BCK(0, limit399)
                  )))+4) );
         };
      {
         word pd400;
         pd400 = (* (( (ptr) (* (( (ptr) gf←c80052)+300)/* var←c69588 */  ))+21) );
         d1←v27544 = (word) ( *( (fPt) ((*  (ptr) pd400 ))))(testPoint←v16804, var←c01378, pd400);
         };
      };
SOURCE(25459, 235)
   {
      word x401;
      word x402;
      if (((
         x401 = d0←v27516,  *(float*)&x401
         ) < (
         x402 = d1←v27544,  *(float*)&x402
         ))) {
         {
            word var←c69652;
SOURCE(25477, 21)
            {
               word pd403;
               pd403 = (* (( (ptr) (* (( (ptr) gf←c80052)+299)/* var←c66836 */  ))+9) );
               d0←v27516 = (word) ( *( (fPt) ((*  (ptr) pd403 ))))(d0←v27516, pd403);
               };
SOURCE(25500, 30)
            {
               word limit404;
               var←c69652 = (* (( (ptr) (* (( (ptr) data←v27488)+8) ))+4) );
               point←v16876 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69652)+1))+(
                        limit404 = (*  (ptr) var←c69652 ),
                        BCK(0, limit404)
                        )))+2) );
               };
SOURCE(25532, 19)
            controlPointNum←v16932 = 0;
SOURCE(25553, 27)
            {
               word x405;
               word x406;
               success←v16960 = ((
                  x405 = d0←v27516,  *(float*)&x405
                  ) <= (
                  x406 = tolerance←v16832,  *(float*)&x406
                  ));
               };
            };
         }
      else {
         {
            word var←c69684;
SOURCE(25591, 21)
            {
               word pd407;
               pd407 = (* (( (ptr) (* (( (ptr) gf←c80052)+299)/* var←c66836 */  ))+9) );
               d1←v27544 = (word) ( *( (fPt) ((*  (ptr) pd407 ))))(d1←v27544, pd407);
               };
SOURCE(25614, 30)
            {
               word limit408;
               var←c69684 = (* (( (ptr) (* (( (ptr) data←v27488)+8) ))+4) );
               point←v16876 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69684)+1))+(
                        limit408 = (*  (ptr) var←c69684 ),
                        BCK(0, limit408)
                        )))+4) );
               };
SOURCE(25646, 19)
            controlPointNum←v16932 = 1;
SOURCE(25667, 27)
            {
               word x409;
               word x410;
               success←v16960 = ((
                  x409 = d1←v27544,  *(float*)&x409
                  ) <= (
                  x410 = tolerance←v16832,  *(float*)&x410
                  ));
               };
            };
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0632 ) = point←v16876;
   (*  (W2Pt) (( (ptr) formal←c0632)+2) ) = normal←v16904;
   (* (( (ptr) formal←c0632)+4) ) = controlPointNum←v16932;
   (* (( (ptr) formal←c0632)+5) ) = success←v16960;
   return;
   }

static word BZAsSimpleCurve←P4020(seg←v17020, point←v17048)
   word seg←v17020;
   W2 point←v17048;
   {
   register ptr gf←c80084 =  (ptr) &globalframe;
   word simpleCurve←v17092;
   word data←v27588;
   W8 bezier←v27616;
   /* BZAsSimpleCurve: */ 
SOURCE(25703, 195)
SOURCE(25703, 195)
   simpleCurve←v17092 = 0;
SOURCE(25789, 35)
   data←v27588 = XR←Narrow((* (( (ptr) seg←v17020)+24) ), (* (( (ptr) gf←c80084)+27) ));
SOURCE(25826, 36)
   {
      word var←c69716;
      var←c69716 = (* (( (ptr) (* (( (ptr) data←v27588)+8) ))+4) );
      {
         word limit411;
         bezier←v27616 = (* (( (W8Pt) (( (ptr) var←c69716)+1))+(
               limit411 = (*  (ptr) var←c69716 ),
               BCK(0, limit411)
               )) );
         };
      };
SOURCE(25864, 34)
   {
      word var←c69748;
      var←c69748 = XR←NewObject(32, (* (( (ptr) gf←c80084)+26) ));
      (*  (W8Pt) var←c69748 ) = bezier←v27616;
      simpleCurve←v17092 = var←c69748;
      };
SOURCE(25703, 195)
   return(simpleCurve←v17092);
   }

static word BZAsPolyline←P4080(seg←v17164, tolerance←v17192)
   word seg←v17164;
   word tolerance←v17192;
   {
   register ptr gf←c80116 =  (ptr) &globalframe;
   word polyline←v17236;
   word data←v27660;
   /* BZAsPolyline: */ 
SOURCE(25904, 202)
SOURCE(25904, 202)
   polyline←v17236 = 0;
SOURCE(26007, 35)
   data←v27660 = XR←Narrow((* (( (ptr) seg←v17164)+24) ), (* (( (ptr) gf←c80116)+27) ));
SOURCE(26044, 62)
   {
      word var←c69780;
      W8 var←c01379;
      var←c69780 = (* (( (ptr) (* (( (ptr) data←v27660)+8) ))+4) );
      {
         word limit412;
         var←c01379 = (* (( (W8Pt) (( (ptr) var←c69780)+1))+(
               limit412 = (*  (ptr) var←c69780 ),
               BCK(0, limit412)
               )) );
         };
      {
         word pd413;
         pd413 = (* (( (ptr) (* (( (ptr) gf←c80116)+301)/* var←c69812 */  ))+6) );
         polyline←v17236 = (word) ( *( (fPt) ((*  (ptr) pd413 ))))(var←c01379, tolerance←v17192, pd413);
         };
      };
SOURCE(25904, 202)
   return(polyline←v17236);
   }

static void BZJointNormal←P4140(formal←c0666, seg←v17296, joint←v17324, point←v17352, hi←v17380)
   word formal←c0666;
   word seg←v17296;
   W2 joint←v17324;
   W2 point←v17352;
   word hi←v17380;
   {
   register ptr gf←c80148 =  (ptr) &globalframe;
   W2 normal←v17424;
   W2 tangent←v17452;
   word data←v27704;
   W2 normal1←v27732;
   W2 normal2←v27760;
   W2 direction←v27788;
   W2 p0←v27816;
   W2 p1←v27844;
   W2 p2←v27872;
   W2 p3←v27900;
   /* BZJointNormal: */ 
SOURCE(26112, 852)
SOURCE(26216, 35)
   data←v27704 = XR←Narrow((* (( (ptr) seg←v17296)+24) ), (* (( (ptr) gf←c80148)+27) ));
   {
      word var←c69844;
      word var←c69876;
      word var←c69908;
      word var←c69940;
SOURCE(26310, 27)
      {
         word limit414;
         var←c69844 = (* (( (ptr) (* (( (ptr) data←v27704)+8) ))+4) );
         p0←v27816 = (*  (W2Pt) (( (W8Pt) (( (ptr) var←c69844)+1))+(
               limit414 = (*  (ptr) var←c69844 ),
               BCK(0, limit414)
               )) );
         };
SOURCE(26339, 27)
      {
         word limit415;
         var←c69876 = (* (( (ptr) (* (( (ptr) data←v27704)+8) ))+4) );
         p1←v27844 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69876)+1))+(
                  limit415 = (*  (ptr) var←c69876 ),
                  BCK(0, limit415)
                  )))+2) );
         };
SOURCE(26368, 27)
      {
         word limit416;
         var←c69908 = (* (( (ptr) (* (( (ptr) data←v27704)+8) ))+4) );
         p2←v27872 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69908)+1))+(
                  limit416 = (*  (ptr) var←c69908 ),
                  BCK(0, limit416)
                  )))+4) );
         };
SOURCE(26397, 27)
      {
         word limit417;
         var←c69940 = (* (( (ptr) (* (( (ptr) data←v27704)+8) ))+4) );
         p3←v27900 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c69940)+1))+(
                  limit417 = (*  (ptr) var←c69940 ),
                  BCK(0, limit417)
                  )))+6) );
         };
SOURCE(26426, 298)
      if ((0 != hi←v17380)) {
SOURCE(26439, 43)
         {
            word pd418;
            pd418 = (* (( (ptr) (* (( (ptr) gf←c80148)+300)/* var←c69588 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd418 ))))((word) &tangent←v17452, p3←v27900, p2←v27872, pd418);
            };
SOURCE(26484, 21)
         normal1←v27732.f0 = tangent←v17452.f1;
SOURCE(26507, 22)
         {
            word x419;
            *(float*)&normal1←v27732.f1 =  - (
               x419 = tangent←v17452.f0,  *(float*)&x419
               );
            };
SOURCE(26531, 22)
         {
            word x420;
            *(float*)&normal2←v27760.f0 =  - (
               x420 = tangent←v17452.f1,  *(float*)&x420
               );
            };
SOURCE(26555, 21)
         normal2←v27760.f1 = tangent←v17452.f0;
         }
      else {
SOURCE(26587, 43)
         {
            word pd421;
            pd421 = (* (( (ptr) (* (( (ptr) gf←c80148)+300)/* var←c69588 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd421 ))))((word) &tangent←v17452, p0←v27816, p1←v27844, pd421);
            };
SOURCE(26632, 21)
         normal1←v27732.f0 = tangent←v17452.f1;
SOURCE(26655, 22)
         {
            word x422;
            *(float*)&normal1←v27732.f1 =  - (
               x422 = tangent←v17452.f0,  *(float*)&x422
               );
            };
SOURCE(26679, 22)
         {
            word x423;
            *(float*)&normal2←v27760.f0 =  - (
               x423 = tangent←v17452.f1,  *(float*)&x423
               );
            };
SOURCE(26703, 21)
         normal2←v27760.f1 = tangent←v17452.f0;
         };
SOURCE(26729, 52)
      {
         word pd424;
         pd424 = (* (( (ptr) (* (( (ptr) gf←c80148)+300)/* var←c69588 */  ))+22) );
         (void) ( *( (fPt) ((*  (ptr) pd424 ))))((word) &direction←v27788, joint←v17324, point←v17352, pd424);
         };
SOURCE(26783, 181)
      {
         float tf425;
         word pd426;
         word x427;
         float tf428;
         word pd429;
         word x430;
         pd426 = (* (( (ptr) (* (( (ptr) gf←c80148)+300)/* var←c69588 */  ))+9) );
         pd429 = (* (( (ptr) (* (( (ptr) gf←c80148)+300)/* var←c69588 */  ))+9) );
         if ((FABS((
               x427 = (word) ( *( (fPt) ((*  (ptr) pd426 ))))(normal1←v27732, direction←v27788, pd426),  *(float*)&x427
               ), tf425) < FABS((
               x430 = (word) ( *( (fPt) ((*  (ptr) pd429 ))))(normal2←v27760, direction←v27788, pd429),  *(float*)&x430
               ), tf428))) {
SOURCE(26921, 17)
            normal←v17424 = normal1←v27732;
            }
         else {
SOURCE(26948, 16)
            normal←v17424 = normal2←v27760;
            };
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0666 ) = normal←v17424;
   (*  (W2Pt) (( (ptr) formal←c0666)+2) ) = tangent←v17452;
   return;
   }

static void BZAddJoint←P4200(formal←c0679, seg←v17512, pos←v17540)
   word formal←c0679;
   word seg←v17512;
   W2 pos←v17540;
   {
   register ptr gf←c80180 =  (ptr) &globalframe;
   word seg1←v17584;
   word seg2←v17612;
   word data←v27944;
   W8 bezier←v27972;
   W8 bezier1←v28000;
   W8 bezier2←v28028;
   word alpha←v28056;
   /* BZAddJoint: */ 
SOURCE(26971, 445)
SOURCE(26971, 445)
   seg1←v17584 = 0;
SOURCE(26971, 445)
   seg2←v17612 = 0;
SOURCE(27056, 35)
   data←v27944 = XR←Narrow((* (( (ptr) seg←v17512)+24) ), (* (( (ptr) gf←c80180)+27) ));
SOURCE(27147, 28)
   {
      word var←c69972;
      var←c69972 = (* (( (ptr) (* (( (ptr) data←v27944)+8) ))+4) );
      {
         word limit431;
         bezier←v27972 = (* (( (W8Pt) (( (ptr) var←c69972)+1))+(
               limit431 = (*  (ptr) var←c69972 ),
               BCK(0, limit431)
               )) );
         };
      };
SOURCE(27177, 40)
   {
      word pd432;
      pd432 = (* (( (ptr) (* (( (ptr) gf←c80180)+291)/* var←c65492 */  ))+15) );
      alpha←v28056 = (word) ( *( (fPt) ((*  (ptr) pd432 ))))(bezier←v27972, pos←v17540, pd432);
      };
SOURCE(27219, 53)
   {
      W16 var←c70036;
      {
         word pd433;
         pd433 = (* (( (ptr) (* (( (ptr) gf←c80180)+302)/* var←c70004 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd433 ))))((word) &var←c70036, bezier←v27972, alpha←v28056, pd433);
         };
      bezier2←v28028 = (*  (W8Pt) (( (ptr) &var←c70036)+8) );
      bezier1←v28000 = (*  (W8Pt) &var←c70036 );
      };
SOURCE(27274, 70)
   seg1←v17584 = (word) MakeBezier←P2820((*  (W2Pt) &bezier1←v28000 ), (*  (W2Pt) (( (ptr) &bezier1←v28000)+2) ), (*  (W2Pt) (
         ( (ptr) &bezier1←v28000)+4) ), (*  (W2Pt) (( (ptr) &bezier1←v28000)+6) ), 0);
SOURCE(27346, 70)
   seg2←v17612 = (word) MakeBezier←P2820((*  (W2Pt) &bezier2←v28028 ), (*  (W2Pt) (( (ptr) &bezier2←v28028)+2) ), (*  (W2Pt) (
         ( (ptr) &bezier2←v28028)+4) ), (*  (W2Pt) (( (ptr) &bezier2←v28028)+6) ), 0);
   /* removed tail goto */ 
   (*  (ptr) formal←c0679 ) = seg1←v17584;
   (* (( (ptr) formal←c0679)+1) ) = seg2←v17612;
   return;
   }

static word BZDescribe←P4260(seg←v17672, self←v17700, lo←v17728, hi←v17756, cps←v17784)
   word seg←v17672;
   word self←v17700;
   word lo←v17728;
   word hi←v17756;
   word cps←v17784;
   {
   register ptr gf←c80212 =  (ptr) &globalframe;
   word rope←v17828;
   /* BZDescribe: */ 
SOURCE(27422, 113)
SOURCE(27422, 113)
   rope←v17828 = 0;
SOURCE(27520, 15)
   rope←v17828 = (* (( (ptr) gf←c80212)+31) );
SOURCE(27422, 113)
   return(rope←v17828);
   }

static void BZFileOut←P4320(seg←v17888, f←v17916)
   word seg←v17888;
   word f←v17916;
   {
   register ptr gf←c80244 =  (ptr) &globalframe;
   word data←v28100;
   /* BZFileOut: */ 
SOURCE(27541, 202)
SOURCE(27590, 35)
   data←v28100 = XR←Narrow((* (( (ptr) seg←v17888)+24) ), (* (( (ptr) gf←c80244)+27) ));
SOURCE(27627, 48)
   {
      word var←c70068;
      W2 var←c01380;
      {
         word limit434;
         var←c70068 = (* (( (ptr) (* (( (ptr) data←v28100)+8) ))+4) );
         var←c01380 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c70068)+1))+(
                  limit434 = (*  (ptr) var←c70068 ),
                  BCK(0, limit434)
                  )))+2) );
         };
      {
         word pd435;
         pd435 = (* (( (ptr) (* (( (ptr) gf←c80244)+296)/* var←c66196 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd435 ))))(f←v17916, var←c01380, pd435);
         };
      };
SOURCE(27677, 16)
   {
      word pd436;
      pd436 = (* (( (ptr) (* (( (ptr) gf←c80244)+285)/* var←c65044 */  ))+21) );
      (void) ( *( (fPt) ((*  (ptr) pd436 ))))(f←v17916, 32, pd436);
      };
SOURCE(27695, 48)
   {
      word var←c70100;
      W2 var←c01381;
      {
         word limit437;
         var←c70100 = (* (( (ptr) (* (( (ptr) data←v28100)+8) ))+4) );
         var←c01381 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c70100)+1))+(
                  limit437 = (*  (ptr) var←c70100 ),
                  BCK(0, limit437)
                  )))+4) );
         };
      {
         word pd438;
         pd438 = (* (( (ptr) (* (( (ptr) gf←c80244)+296)/* var←c66196 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd438 ))))(f←v17916, var←c01381, pd438);
         };
      };
   }

static word BZFileIn←P4380(f←v17976, loPoint←v18004, hiPoint←v18032, version←v18060)
   word f←v17976;
   W2 loPoint←v18004;
   W2 hiPoint←v18032;
   word version←v18060;
   {
   register ptr gf←c80276 =  (ptr) &globalframe;
   word seg←v18104;
   W2 p1←v28144;
   W2 p2←v28172;
   /* BZFileIn: */ 
SOURCE(27749, 217)
SOURCE(27749, 217)
   seg←v18104 = 0;
SOURCE(27861, 27)
   {
      word pd439;
      pd439 = (* (( (ptr) (* (( (ptr) gf←c80276)+297)/* var←c66260 */  ))+19) );
      (void) ( *( (fPt) ((*  (ptr) pd439 ))))((word) &p1←v28144, f←v17976, pd439);
      };
SOURCE(27890, 27)
   {
      word pd440;
      pd440 = (* (( (ptr) (* (( (ptr) gf←c80276)+297)/* var←c66260 */  ))+19) );
      (void) ( *( (fPt) ((*  (ptr) pd440 ))))((word) &p2←v28172, f←v17976, pd440);
      };
SOURCE(27919, 47)
   seg←v18104 = (word) MakeBezier←P2820(loPoint←v18004, p1←v28144, p2←v28172, hiPoint←v18032, 0);
SOURCE(27749, 217)
   return(seg←v18104);
   }

static word BuildCubicSplineClass←P4440()
   {
   register ptr gf←c80308 =  (ptr) &globalframe;
   word class←v18408;
   /* BuildCubicSplineClass: */ 
SOURCE(28316, 992)
SOURCE(28316, 992)
   class←v18408 = 0;
SOURCE(28397, 911)
   {
      word var←c70132;
      var←c70132 = XR←NewObject(116, (* (( (ptr) gf←c80308)+20) ));
      (*  (ptr) var←c70132 ) = (* (( (ptr) gf←c80308)+47) );
      (* (( (ptr) var←c70132)+1) ) = (word) (( (bPt) gf←c80308)+492)/* var←c62292 */ ;
      (* (( (ptr) var←c70132)+2) ) = (word) (( (bPt) gf←c80308)+484)/* var←c62260 */ ;
      (* (( (ptr) var←c70132)+3) ) = (word) (( (bPt) gf←c80308)+468)/* var←c62196 */ ;
      (* (( (ptr) var←c70132)+4) ) = (word) (( (bPt) gf←c80308)+460)/* var←c62164 */ ;
      (* (( (ptr) var←c70132)+5) ) = (word) (( (bPt) gf←c80308)+524)/* var←c62420 */ ;
      (* (( (ptr) var←c70132)+6) ) = (word) (( (bPt) gf←c80308)+284)/* var←c61460 */ ;
      (* (( (ptr) var←c70132)+7) ) = (word) (( (bPt) gf←c80308)+452)/* var←c62132 */ ;
      (* (( (ptr) var←c70132)+8) ) = (word) (( (bPt) gf←c80308)+444)/* var←c62100 */ ;
      (* (( (ptr) var←c70132)+9) ) = (word) (( (bPt) gf←c80308)+436)/* var←c62068 */ ;
      (* (( (ptr) var←c70132)+10) ) = (word) (( (bPt) gf←c80308)+428)/* var←c62036 */ ;
      (* (( (ptr) var←c70132)+11) ) = (word) (( (bPt) gf←c80308)+420)/* var←c62004 */ ;
      (* (( (ptr) var←c70132)+12) ) = (word) (( (bPt) gf←c80308)+412)/* var←c61972 */ ;
      (* (( (ptr) var←c70132)+13) ) = (word) (( (bPt) gf←c80308)+404)/* var←c61940 */ ;
      (* (( (ptr) var←c70132)+14) ) = (word) (( (bPt) gf←c80308)+396)/* var←c61908 */ ;
      (* (( (ptr) var←c70132)+15) ) = (word) (( (bPt) gf←c80308)+388)/* var←c61876 */ ;
      (* (( (ptr) var←c70132)+16) ) = (word) (( (bPt) gf←c80308)+380)/* var←c61844 */ ;
      (* (( (ptr) var←c70132)+17) ) = (word) (( (bPt) gf←c80308)+372)/* var←c61812 */ ;
      (* (( (ptr) var←c70132)+18) ) = (word) (( (bPt) gf←c80308)+276)/* var←c61428 */ ;
      (* (( (ptr) var←c70132)+19) ) = (word) (( (bPt) gf←c80308)+364)/* var←c61780 */ ;
      (* (( (ptr) var←c70132)+20) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c80308)+295)/* var←c65748 */  ))+42) );
      (* (( (ptr) var←c70132)+21) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c80308)+295)/* var←c65748 */  ))+43) );
      (* (( (ptr) var←c70132)+22) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c80308)+295)/* var←c65748 */  ))+44) );
      (* (( (ptr) var←c70132)+23) ) = XR←CheckProc(* (( (ptr) (* (( (ptr) gf←c80308)+295)/* var←c65748 */  ))+45) );
      (* (( (ptr) var←c70132)+24) ) = (word) (( (bPt) gf←c80308)+356)/* var←c61748 */ ;
      (* (( (ptr) var←c70132)+25) ) = (word) (( (bPt) gf←c80308)+348)/* var←c61716 */ ;
      (* (( (ptr) var←c70132)+26) ) = (word) (( (bPt) gf←c80308)+340)/* var←c61684 */ ;
      (* (( (ptr) var←c70132)+27) ) = (word) (( (bPt) gf←c80308)+332)/* var←c61652 */ ;
      (* (( (ptr) var←c70132)+28) ) = (word) (( (bPt) gf←c80308)+516)/* var←c62388 */ ;
      class←v18408 = var←c70132;
      };
SOURCE(28316, 992)
   return(class←v18408);
   }

static word CSSameShape←P4500(seg1←v39288, seg2←v39316)
   word seg1←v39288;
   word seg2←v39316;
   {
   register ptr gf←c80340 =  (ptr) &globalframe;
   word var←c39360;
   word data1←v28216;
   word data2←v28244;
   /* CSSameShape: */ 
SOURCE(29314, 164)
SOURCE(29361, 42)
   data1←v28216 = XR←Narrow((* (( (ptr) seg1←v39288)+24) ), (* (( (ptr) gf←c80340)+19) ));
SOURCE(29405, 42)
   data2←v28244 = XR←Narrow((* (( (ptr) seg2←v39316)+24) ), (* (( (ptr) gf←c80340)+19) ));
SOURCE(29449, 29)
   return(((* (( (ptr) data1←v28216)+1) ) == (* (( (ptr) data2←v28244)+1) )));
   }

static void CSSetStrokeWidth←P4560(seg←v18468, strokeWidth←v18496)
   word seg←v18468;
   word strokeWidth←v18496;
   {
   /* CSSetStrokeWidth: */ 
SOURCE(29484, 113)
SOURCE(29545, 29)
   (* (( (ptr) seg←v18468)+2) ) = strokeWidth←v18496;
SOURCE(29576, 21)
   (void) UpdateCSBoundBox←P4860(seg←v18468);
   }

static word MakeCubicSpline←P4620(cps←v18556, type←v18584, props←v18612)
   word cps←v18556;
   word type←v18584;
   word props←v18612;
   {
   register ptr gf←c80372 =  (ptr) &globalframe;
   word seg←v18752;
   word coeffs←v28288 = 0;
   word data←v28316 = 0;
   word newCPs←v28344 = 0;
   word last←v28372;
   /* MakeCubicSpline: */ 
SOURCE(29603, 1404)
SOURCE(29603, 1404)
   seg←v18752 = 0;
SOURCE(29841, 24)
   {
      word idx441;
      last←v28372 = (
         idx441 = (word) ((*  (ptr) cps←v18556 ) - 1),
         SGNCK(idx441)
         );
      };
SOURCE(29867, 209)
   {
      word var←c70164;
      var←c70164 = type←v18584;
      switch (var←c70164) {
         case 2: case 3: 
SOURCE(29953, 54)
            {
               word var←c70196;
               word var←c70228;
               word var←c70260;
               {
                  word idx442;
                  var←c70196 = (
                     idx442 = (*  (ptr) cps←v18556 ),
                     BCK(idx442, 33554431)
                     );
                  };
               var←c70228 = ((word) var←c70196 << 3);
               var←c70260 = XR←NewObject((4 + var←c70228), (* (( (ptr) gf←c80372)+24) ));
               (*  (ptr) var←c70260 ) = var←c70196;
               newCPs←v28344 = var←c70260;
               };
            break;
         case 6: 
SOURCE(30020, 56)
            {
               word var←c70292;
               word var←c70324;
               word var←c70356;
               {
                  word idx443;
                  var←c70292 = (
                     idx443 = (word) ((*  (ptr) cps←v18556 ) + 4),
                     BCK(idx443, 33554431)
                     );
                  };
               var←c70324 = ((word) var←c70292 << 3);
               var←c70356 = XR←NewObject((4 + var←c70324), (* (( (ptr) gf←c80372)+24) ));
               (*  (ptr) var←c70356 ) = var←c70292;
               newCPs←v28344 = var←c70356;
               };
            break;
         default: 
SOURCE(30089, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(30096, 112)
   {
      word var←c70388;
      word var←c70516;
      {
         word var←c70420;
         word var←c70452;
         word var←c70484;
         {
            word idx444;
            var←c70420 = (
               idx444 = (*  (ptr) cps←v18556 ),
               BCK(idx444, 16777215)
               );
            };
         var←c70452 = ((word) var←c70420 << 4);
         var←c70484 = XR←NewObject((4 + var←c70452), (* (( (ptr) gf←c80372)+23) ));
         (*  (ptr) var←c70484 ) = var←c70420;
         var←c70388 = var←c70484;
         };
      var←c70516 = XR←NewObject(16, (* (( (ptr) gf←c80372)+19) ));
      (*  (ptr) var←c70516 ) = newCPs←v28344;
      (* (( (ptr) var←c70516)+1) ) = type←v18584;
      (* (( (ptr) var←c70516)+3) ) = var←c70388;
      data←v28316 = var←c70516;
      };
SOURCE(30210, 399)
   {
      word var←c70548;
      word var←c70580;
      word var←c70612;
      word var←c70644;
      var←c70548 = (word) FetchSegmentClass←P120((* ((( (ptr) gf←c80372)+47)) ));
      {
         word pd445;
         pd445 = (* (( (ptr) (* (( (ptr) gf←c80372)+287)/* var←c65172 */  ))+5) );
         var←c70580 = (word) ( *( (fPt) ((*  (ptr) pd445 ))))((*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), 0, 0, pd445)
         ;
         };
      {
         word pd446;
         pd446 = (* (( (ptr) (* (( (ptr) gf←c80372)+287)/* var←c65172 */  ))+5) );
         var←c70612 = (word) ( *( (fPt) ((*  (ptr) pd446 ))))((*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), (*  (ptr) &fc78 ), 0, 0, pd446)
         ;
         };
      var←c70644 = XR←NewObject(104, (* (( (ptr) gf←c80372)+15) ));
      (*  (ptr) var←c70644 ) = var←c70548;
      (* (( (ptr) var←c70644)+2) ) = (* (( (ptr) gf←c80372)+4)/* defaultStrokeWidth←v4540 */  );
      (* (( (ptr) var←c70644)+3) ) = (* (( (ptr) gf←c80372)+5)/* defaultStrokeEnd←v4568 */  );
      (* (( (ptr) var←c70644)+6) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c70644)+7) ) = (*  (ptr) &fc115 );
      (* (( (ptr) var←c70644)+8) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c80372)+294)/* var←c65684 */  ))+54) ) );
      {
         word limit447;
         (* (( (ptr) var←c70644)+9) ) = (* (( (W2Pt) (( (ptr) cps←v18556)+1))+(
               limit447 = (*  (ptr) cps←v18556 ),
               BCK(0, limit447)
               )) ).f0;
         };
      {
         word limit448;
         (* (( (ptr) var←c70644)+10) ) = (* (( (W2Pt) (( (ptr) cps←v18556)+1))+(
               limit448 = (*  (ptr) cps←v18556 ),
               BCK(0, limit448)
               )) ).f1;
         };
      {
         word limit449;
         (* (( (ptr) var←c70644)+11) ) = (* (( (W2Pt) (( (ptr) cps←v18556)+1))+(
               limit449 = (*  (ptr) cps←v18556 ),
               BCK(last←v28372, limit449)
               )) ).f0;
         };
      {
         word limit450;
         (* (( (ptr) var←c70644)+12) ) = (* (( (W2Pt) (( (ptr) cps←v18556)+1))+(
               limit450 = (*  (ptr) cps←v18556 ),
               BCK(last←v28372, limit450)
               )) ).f1;
         };
      (* (( (ptr) var←c70644)+13) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c70644)+14) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c70644)+15) ) = (*  (ptr) &fc78 );
      (* (( (ptr) var←c70644)+16) ) = (*  (ptr) &fc78 );
      (*  (W4Pt) (( (ptr) var←c70644)+17) ) = (*  (W4Pt) (( (ptr) gf←c80372)+279)/* var←c64820 */  );
      (* (( (ptr) var←c70644)+21) ) = var←c70580;
      (* (( (ptr) var←c70644)+22) ) = var←c70612;
      (* (( (ptr) var←c70644)+24) ) = data←v28316;
      (* (( (ptr) var←c70644)+25) ) = props←v18612;
      seg←v18752 = var←c70644;
      };
SOURCE(30611, 59)
   {
      W2 var←c70676;
      {
         word limit451;
         (void) FPToPoint←P6540((word) &var←c70676, (* (( (W2Pt) (( (ptr) cps←v18556)+1))+(
                  limit451 = (*  (ptr) cps←v18556 ),
                  BCK(0, limit451)
                  )) ));
         };
      (void) CSEndPointSet←P6180(seg←v18752, 1, var←c70676);
      };
SOURCE(30672, 63)
   {
      W2 var←c70708;
      {
         word limit452;
         (void) FPToPoint←P6540((word) &var←c70708, (* (( (W2Pt) (( (ptr) cps←v18556)+1))+(
                  limit452 = (*  (ptr) cps←v18556 ),
                  BCK(last←v28372, limit452)
                  )) ));
         };
      (void) CSEndPointSet←P6180(seg←v18752, 0, var←c70708);
      };
SOURCE(30737, 101)
   {
      register word i←v28416 = 0;
      register word noName←c70740;
      {
         word pd453;
         pd453 = (* (( (ptr) (*  (ptr) seg←v18752 ))+17) );
         noName←c70740 = (word) ( *( (fPt) ((*  (ptr) pd453 ))))(seg←v18752, pd453);
         };
      if (( (int)i←v28416 >=  (int)noName←c70740)) {
         goto lab←L100029;
         };
      lab←L100032: ;
SOURCE(30792, 46)
      {
         W2 var←c70772;
         {
            W2 var←c0741;
            {
               word var←c70804;
               W2 var←c01382;
               var←c70804 = (i←v28416 + 1);
               {
                  word limit454;
                  var←c01382 = (* (( (W2Pt) (( (ptr) cps←v18556)+1))+(
                        limit454 = (*  (ptr) cps←v18556 ),
                        BCK(var←c70804, limit454)
                        )) );
                  };
               (void) FPToPoint←P6540((word) &var←c0741, var←c01382);
               };
            var←c70772 = var←c0741;
            };
         (void) CSControlPointSet←P6120(seg←v18752, SGNCK(i←v28416), var←c70772);
         };
      i←v28416 = (i←v28416 + 1);
      if (( (int)i←v28416 <  (int)noName←c70740)) {
         goto lab←L100032;
         };
      lab←L100029: ;
      };
SOURCE(30849, 48)
   {
      word pd455;
      pd455 = (* (( (ptr) (* (( (ptr) gf←c80372)+290)/* var←c65460 */  ))+8) );
      coeffs←v28288 = (word) ( *( (fPt) ((*  (ptr) pd455 ))))((*  (ptr) data←v28316 ), type←v18584, pd455);
      };
SOURCE(30899, 51)
   {
      word pd456;
      pd456 = (* (( (ptr) (* (( (ptr) gf←c80372)+291)/* var←c65492 */  ))+4) );
      (* (( (ptr) data←v28316)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd456 ))))(coeffs←v28288, 0, pd456);
      };
SOURCE(30986, 21)
   (void) UpdateCSBoundBox←P4860(seg←v18752);
SOURCE(29603, 1404)
   return(seg←v18752);
   }

static word CubicSplineGetParams←P4680(seg←v18812)
   word seg←v18812;
   {
   register ptr gf←c80404 =  (ptr) &globalframe;
   word var←c18856;
   word data←v28460;
   /* CubicSplineGetParams: */ 
SOURCE(31013, 138)
SOURCE(31092, 40)
   data←v28460 = XR←Narrow((* (( (ptr) seg←v18812)+24) ), (* (( (ptr) gf←c80404)+19) ));
SOURCE(31134, 17)
   return((* (( (ptr) data←v28460)+2) ));
   }

static word CSBoundBox←P4740(seg←v18916)
   word seg←v18916;
   {
   word bBox←v18960;
   /* CSBoundBox: */ 
SOURCE(31157, 76)
SOURCE(31157, 76)
   bBox←v18960 = 0;
SOURCE(31218, 15)
   bBox←v18960 = (* (( (ptr) seg←v18916)+21) );
SOURCE(31157, 76)
   return(bBox←v18960);
   }

static word CSTightBox←P4800(seg←v19020)
   word seg←v19020;
   {
   word bBox←v19064;
   /* CSTightBox: */ 
SOURCE(31239, 80)
SOURCE(31239, 80)
   bBox←v19064 = 0;
SOURCE(31300, 19)
   bBox←v19064 = (* (( (ptr) seg←v19020)+22) );
SOURCE(31239, 80)
   return(bBox←v19064);
   }

static void UpdateCSBoundBox←P4860(seg←v19124)
   word seg←v19124;
   {
   register ptr gf←c80436 =  (ptr) &globalframe;
   word data←v28504;
   word path←v28532;
   word pad←v28560;
   /* UpdateCSBoundBox: */ 
SOURCE(31325, 499)
SOURCE(31367, 40)
   data←v28504 = XR←Narrow((* (( (ptr) seg←v19124)+24) ), (* (( (ptr) gf←c80436)+19) ));
SOURCE(31409, 33)
   path←v28532 = (* (( (ptr) data←v28504)+2) );
SOURCE(31455, 106)
   if (((* (( (ptr) seg←v19124)+3) ) == 0)) {
SOURCE(31486, 44)
      {
         word x457;
         word x458;
         word x459;
         *(float*)&pad←v28560 = ((
            x457 = (* (( (ptr) seg←v19124)+2) ),  *(float*)&x457
            ) * (
            x458 = (*  (ptr) &fc156 ),  *(float*)&x458
            )) + (
            x459 = (*  (ptr) &fc158 ),  *(float*)&x459
            );
         };
      }
   else {
SOURCE(31530, 31)
      {
         word x460;
         word x461;
         word x462;
         *(float*)&pad←v28560 = ((
            x460 = (* (( (ptr) seg←v19124)+2) ),  *(float*)&x460
            ) / (
            x461 = (*  (ptr) &fc70 ),  *(float*)&x461
            )) + (
            x462 = (*  (ptr) &fc158 ),  *(float*)&x462
            );
         };
      };
SOURCE(31563, 261)
   if (((* (( (ptr) data←v28504)+1) ) == 6)) {
SOURCE(31593, 31)
      (void) KnotBoundBox←P6480(seg←v19124, (* (( (ptr) seg←v19124)+22) ));
SOURCE(31626, 35)
      (void) CurveBoundBox←P6240(seg←v19124, (* (( (ptr) seg←v19124)+21) ), 0);
SOURCE(31663, 41)
      {
         word pd463;
         pd463 = (* (( (ptr) (* (( (ptr) gf←c80436)+287)/* var←c65172 */  ))+17) );
         (void) ( *( (fPt) ((*  (ptr) pd463 ))))((* (( (ptr) seg←v19124)+21) ), pad←v28560, pd463);
         };
      }
   else {
SOURCE(31715, 39)
      (void) CurveBoundBox←P6240(seg←v19124, (* (( (ptr) seg←v19124)+22) ), 0);
SOURCE(31756, 25)
      (*  (W6Pt) (* (( (ptr) seg←v19124)+21) ) ) = (*  (W6Pt) (* (( (ptr) seg←v19124)+22) ) );
SOURCE(31783, 41)
      {
         word pd464;
         pd464 = (* (( (ptr) (* (( (ptr) gf←c80436)+287)/* var←c65172 */  ))+17) );
         (void) ( *( (fPt) ((*  (ptr) pd464 ))))((* (( (ptr) seg←v19124)+21) ), pad←v28560, pd464);
         };
      };
   }

static word CSCopyData←P4920(seg←v39420)
   word seg←v39420;
   {
   register ptr gf←c80468 =  (ptr) &globalframe;
   word data←v39464;
   word csData←v28604;
   word new←v28632;
   word cpCount←v28660;
   /* CSCopyData: */ 
SOURCE(31833, 540)
SOURCE(31833, 540)
   data←v39464 = 0;
SOURCE(31877, 42)
   csData←v28604 = XR←Narrow((* (( (ptr) seg←v39420)+24) ), (* (( (ptr) gf←c80468)+19) ));
SOURCE(31921, 46)
   new←v28632 = XR←NewObject(16, (* (( (ptr) gf←c80468)+19) ));
SOURCE(31969, 47)
   {
      word pd465;
      pd465 = (* (( (ptr) (*  (ptr) seg←v39420 ))+17) );
      cpCount←v28660 = (word) ( *( (fPt) ((*  (ptr) pd465 ))))(seg←v39420, pd465);
      };
SOURCE(32018, 62)
   {
      word var←c70868;
      {
         word var←c70900;
         word var←c70932;
         word var←c70964;
         {
            word idx466;
            var←c70900 = (
               idx466 = (*  (ptr) (*  (ptr) csData←v28604 ) ),
               BCK(idx466, 33554431)
               );
            };
         var←c70932 = ((word) var←c70900 << 3);
         var←c70964 = XR←NewObject((4 + var←c70932), (* (( (ptr) gf←c80468)+24) ));
         (*  (ptr) var←c70964 ) = var←c70900;
         var←c70868 = var←c70964;
         };
      (*  (ptr) new←v28632 ) = var←c70868;
      };
SOURCE(32082, 52)
   {
      word var←c70996;
      {
         word var←c71028;
         word var←c71060;
         word var←c71092;
         var←c71028 = BCK(cpCount←v28660, 16777215);
         var←c71060 = ((word) var←c71028 << 4);
         var←c71092 = XR←NewObject((4 + var←c71060), (* (( (ptr) gf←c80468)+23) ));
         (*  (ptr) var←c71092 ) = var←c71028;
         var←c70996 = var←c71092;
         };
      (* (( (ptr) new←v28632)+3) ) = var←c70996;
      };
SOURCE(32136, 63)
   {
      register word i←v28704 = 0;
      register word noName←c71124;
      noName←c71124 = (*  (ptr) (*  (ptr) new←v28632 ) );
      if ((i←v28704 >= noName←c71124)) {
         goto lab←L100033;
         };
      lab←L100036: ;
SOURCE(32173, 26)
      {
         word var←c71188;
         var←c71188 = (*  (ptr) new←v28632 );
         {
            word var←c71156;
            var←c71156 = (*  (ptr) csData←v28604 );
            {
               word limit467;
               word limit468;
               (* (( (W2Pt) (( (ptr) var←c71188)+1))+(
                     limit467 = (*  (ptr) var←c71188 ),
                     BCK(i←v28704, limit467)
                     )) ) = (* (( (W2Pt) (( (ptr) var←c71156)+1))+(
                     limit468 = (*  (ptr) var←c71156 ),
                     BCK(i←v28704, limit468)
                     )) );
               };
            };
         };
      i←v28704 = (i←v28704 + 1);
      if ((i←v28704 < noName←c71124)) {
         goto lab←L100036;
         };
      lab←L100033: ;
      };
SOURCE(32210, 72)
   {
      register word i←v28748 = 0;
      register word noName←c71220;
      noName←c71220 = cpCount←v28660;
      if ((i←v28748 >= noName←c71220)) {
         goto lab←L100037;
         };
      lab←L100040: ;
SOURCE(32240, 42)
      {
         word var←c71284;
         var←c71284 = (* (( (ptr) new←v28632)+3) );
         {
            word var←c71252;
            var←c71252 = (* (( (ptr) csData←v28604)+3) );
            {
               word limit469;
               word limit470;
               (* (( (W4Pt) (( (ptr) var←c71284)+1))+(
                     limit469 = (*  (ptr) var←c71284 ),
                     BCK(i←v28748, limit469)
                     )) ) = (* (( (W4Pt) (( (ptr) var←c71252)+1))+(
                     limit470 = (*  (ptr) var←c71252 ),
                     BCK(i←v28748, limit470)
                     )) );
               };
            };
         };
      i←v28748 = (i←v28748 + 1);
      if ((i←v28748 < noName←c71220)) {
         goto lab←L100040;
         };
      lab←L100037: ;
      };
SOURCE(32293, 22)
   (* (( (ptr) new←v28632)+1) ) = (* (( (ptr) csData←v28604)+1) );
SOURCE(32317, 43)
   {
      word pd471;
      pd471 = (* (( (ptr) (* (( (ptr) gf←c80468)+291)/* var←c65492 */  ))+12) );
      (* (( (ptr) new←v28632)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd471 ))))((* ((( (ptr) csData←v28604)+2)) ), pd471);
      };
SOURCE(32362, 11)
   return(new←v28632);
   }

static void CSReverse←P4980(seg←v19184)
   word seg←v19184;
   {
   register ptr gf←c80500 =  (ptr) &globalframe;
   word data←v28792;
   W2 temp←v28820;
   word last←v28848;
   /* CSReverse: */ 
SOURCE(32379, 296)
SOURCE(32414, 40)
   data←v28792 = XR←Narrow((* (( (ptr) seg←v19184)+24) ), (* (( (ptr) gf←c80500)+19) ));
SOURCE(32485, 29)
   {
      word idx472;
      last←v28848 = (
         idx472 = (word) ((*  (ptr) (*  (ptr) data←v28792 ) ) - 1),
         SGNCK(idx472)
         );
      };
SOURCE(32516, 115)
   {
      register word i←v28892 = 0;
      register word noName←c71316;
      noName←c71316 = ((*  (ptr) (*  (ptr) data←v28792 ) ) >> 1);
      if ((i←v28892 >= noName←c71316)) {
         goto lab←L100041;
         };
      lab←L100044: ;
SOURCE(32556, 18)
      {
         word var←c71348;
         var←c71348 = (*  (ptr) data←v28792 );
         {
            word limit473;
            temp←v28820 = (* (( (W2Pt) (( (ptr) var←c71348)+1))+(
                  limit473 = (*  (ptr) var←c71348 ),
                  BCK(i←v28892, limit473)
                  )) );
            };
         };
SOURCE(32576, 30)
      {
         word var←c71444;
         var←c71444 = (*  (ptr) data←v28792 );
         {
            word var←c71380;
            word var←c71412;
            var←c71380 = (last←v28848 - i←v28892);
            var←c71412 = (*  (ptr) data←v28792 );
            {
               word limit474;
               word limit475;
               (* (( (W2Pt) (( (ptr) var←c71444)+1))+(
                     limit474 = (*  (ptr) var←c71444 ),
                     BCK(i←v28892, limit474)
                     )) ) = (* (( (W2Pt) (( (ptr) var←c71412)+1))+(
                     limit475 = (*  (ptr) var←c71412 ),
                     BCK(var←c71380, limit475)
                     )) );
               };
            };
         };
SOURCE(32608, 23)
      {
         word var←c71476;
         word var←c71508;
         var←c71476 = (last←v28848 - i←v28892);
         var←c71508 = (*  (ptr) data←v28792 );
         {
            word limit476;
            (* (( (W2Pt) (( (ptr) var←c71508)+1))+(
                  limit476 = (*  (ptr) var←c71508 ),
                  BCK(var←c71476, limit476)
                  )) ) = temp←v28820;
            };
         };
      i←v28892 = (i←v28892 + 1);
      if ((i←v28892 < noName←c71316)) {
         goto lab←L100044;
         };
      lab←L100041: ;
      };
SOURCE(32642, 33)
   {
      word pd477;
      pd477 = (* (( (ptr) (* (( (ptr) gf←c80500)+291)/* var←c65492 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd477 ))))((* ((( (ptr) data←v28792)+2)) ), pd477);
      };
   }

static void CSBuildPathTransform←P5040(seg←v19244, transform←v19272, entire←v19300, lo←v19328, hi←v19356, controlPoints←v19384, lineTo←v19412, curveTo←v19440, conicTo←v19468, arcTo←v19496)
   word seg←v19244;
   word transform←v19272;
   word entire←v19300;
   word lo←v19328;
   word hi←v19356;
   word controlPoints←v19384;
   word lineTo←v19412;
   word curveTo←v19440;
   word conicTo←v19468;
   word arcTo←v19496;
   {
   W6 var←c80532;
   register ptr gf←c80564 =  (ptr) &globalframe;
   /* declaration of var←c71540 skipped */ 
   word data←v28936;
   word moveTo←v28964;
   /* CSBuildPathTransform: */ 
SOURCE(32681, 1338)
   {
      word tmpAddr478;
      tmpAddr478 = (word) (( (ptr) &var←c80532)+4)/* var←c71540 */ ;
      (*  (ptr) tmpAddr478 ) = ( ((word)  (fPt) NoName←Q7932) );
      (* (( (ptr) tmpAddr478) + 1) ) = 1;
      };
SOURCE(32949, 40)
   data←v28936 = XR←Narrow((* (( (ptr) seg←v19244)+24) ), (* (( (ptr) gf←c80564)+19) ));
SOURCE(32991, 32)
   moveTo←v28964 = (word) (( (bPt) &var←c80532)+16)/* var←c71540 */ ;
SOURCE(33027, 992)
   if ((0 != entire←v19300)) {
SOURCE(33042, 178)
      {
         word scratchPath←v29008;
SOURCE(33044, 61)
         {
            word pd479;
            pd479 = (* (( (ptr) (* (( (ptr) gf←c80564)+291)/* var←c65492 */  ))+12) );
            scratchPath←v29008 = (word) ( *( (fPt) ((*  (ptr) pd479 ))))((* ((( (ptr) data←v28936)+2)) ), pd479);
            };
SOURCE(33107, 55)
         {
            word pd480;
            pd480 = (* (( (ptr) (* (( (ptr) gf←c80564)+291)/* var←c65492 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd480 ))))(scratchPath←v29008, transform←v19272, 0, pd480);
            };
SOURCE(33164, 54)
         {
            word pd481;
            pd481 = (* (( (ptr) (* (( (ptr) gf←c80564)+291)/* var←c65492 */  ))+5) );
            (void) ( *( (fPt) ((*  (ptr) pd481 ))))(scratchPath←v29008, moveTo←v28964, curveTo←v19440, pd481);
            };
         };
      }
   else {
SOURCE(33227, 813)
      {
         word coeffs←v29052 = 0;
         word cpsCopy←v29080;
SOURCE(33266, 87)
         {
            word var←c71572;
            word var←c71604;
            word var←c71636;
            {
               word idx482;
               var←c71572 = (
                  idx482 = (*  (ptr) (*  (ptr) data←v28936 ) ),
                  BCK(idx482, 33554431)
                  );
               };
            var←c71604 = ((word) var←c71572 << 3);
            var←c71636 = XR←NewObject((4 + var←c71604), (* (( (ptr) gf←c80564)+24) ));
            (*  (ptr) var←c71636 ) = var←c71572;
            cpsCopy←v29080 = var←c71636;
            };
SOURCE(33375, 61)
         {
            register word i←v29124 = 0;
            register word noName←c71668;
            noName←c71668 = (*  (ptr) (*  (ptr) data←v28936 ) );
            if (( (int)i←v29124 >=  (int)noName←c71668)) {
               goto lab←L100045;
               };
            lab←L100048: ;
SOURCE(33412, 24)
            {
               word var←c71700;
               var←c71700 = (*  (ptr) data←v28936 );
               {
                  word limit483;
                  word limit484;
                  (* (( (W2Pt) (( (ptr) cpsCopy←v29080)+1))+(
                        limit483 = (*  (ptr) cpsCopy←v29080 ),
                        BCK(i←v29124, limit483)
                        )) ) = (* (( (W2Pt) (( (ptr) var←c71700)+1))+(
                        limit484 = (*  (ptr) var←c71700 ),
                        BCK(i←v29124, limit484)
                        )) );
                  };
               };
            i←v29124 = (i←v29124 + 1);
            if (( (int)i←v29124 <  (int)noName←c71668)) {
               goto lab←L100048;
               };
            lab←L100045: ;
            };
SOURCE(33447, 195)
         {
            register word i←v29168 = 0;
            register word noName←c71732;
            {
               word pd485;
               pd485 = (* (( (ptr) (*  (ptr) seg←v19244 ))+17) );
               noName←c71732 = (word) ( *( (fPt) ((*  (ptr) pd485 ))))(seg←v19244, pd485);
               };
            if (( (int)i←v29168 >=  (int)noName←c71732)) {
               goto lab←L100049;
               };
            lab←L100052: ;
SOURCE(33501, 141)
            {
               word limit487;
               if ((controlPoints←v19384 == 0)) { goto then0486;};
               if (XR←ExtractField(controlPoints←v19384, 32 + (word) (
                     limit487 = (*  (ptr) controlPoints←v19384 ),
                     BCK(i←v29168, limit487)
                     ), 1)) {
                  then0486: ;
SOURCE(33547, 95)
                  {
                     W2 var←c71764;
                     {
                        W2 var←c71796;
                        (void) CSControlPointGet←P5580((word) &var←c71796, seg←v19244, SGNCK(i←v29168));
                        {
                           W2 var←c0813;
                           {
/*1*/   word pd488;
/*1*/   pd488 = (* (( (ptr) (* (( (ptr) gf←c80564)+293)/* var←c65588 */  ))+39) );
/*1*/   (void) ( *( (fPt) ((*  (ptr) pd488 ))))((word) &var←c0813, transform←v19272, var←c71796, pd488);
/*1*/   };
                           var←c71764 = var←c0813;
                           };
                        };
                     (void) CSControlPointSet←P6120(seg←v19244, SGNCK(i←v29168), var←c71764);
                     };
                  };
               };
            i←v29168 = (i←v29168 + 1);
            if (( (int)i←v29168 <  (int)noName←c71732)) {
               goto lab←L100052;
               };
            lab←L100049: ;
            };
SOURCE(33653, 102)
         if ((0 != lo←v19328)) {
SOURCE(33664, 91)
            {
               W2 var←c71828;
               {
                  word pd489;
                  pd489 = (* (( (ptr) (* (( (ptr) gf←c80564)+293)/* var←c65588 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd489 ))))((word) &var←c71828, transform←v19272, (*  (W2Pt) (( (ptr) seg←v19244)+9) ), pd489)
                  ;
                  };
               (void) CSEndPointSet←P6180(seg←v19244, 1, var←c71828);
               };
            };
SOURCE(33757, 103)
         if ((0 != hi←v19356)) {
SOURCE(33768, 92)
            {
               W2 var←c71860;
               {
                  word pd490;
                  pd490 = (* (( (ptr) (* (( (ptr) gf←c80564)+293)/* var←c65588 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd490 ))))((word) &var←c71860, transform←v19272, (*  (W2Pt) (( (ptr) seg←v19244)+11) ), pd490)
                  ;
                  };
               (void) CSEndPointSet←P6180(seg←v19244, 0, var←c71860);
               };
            };
SOURCE(33862, 53)
         {
            word pd491;
            pd491 = (* (( (ptr) (* (( (ptr) gf←c80564)+290)/* var←c65460 */  ))+8) );
            coeffs←v29052 = (word) ( *( (fPt) ((*  (ptr) pd491 ))))((*  (ptr) data←v28936 ), (* (( (ptr) data←v28936)+1) ), pd491);
            };
SOURCE(33917, 82)
         {
            word var←c71892;
            {
               word pd492;
               pd492 = (* (( (ptr) (* (( (ptr) gf←c80564)+291)/* var←c65492 */  ))+4) );
               var←c71892 = (word) ( *( (fPt) ((*  (ptr) pd492 ))))(coeffs←v29052, 0, pd492);
               };
            {
               word pd493;
               pd493 = (* (( (ptr) (* (( (ptr) gf←c80564)+291)/* var←c65492 */  ))+5) );
               (void) ( *( (fPt) ((*  (ptr) pd493 ))))(var←c71892, moveTo←v28964, curveTo←v19440, pd493);
               };
            };
SOURCE(34001, 18)
         (*  (ptr) data←v28936 ) = cpsCopy←v29080;
         };
      };
   }

static void NoName←Q7932(p←v58552, formal←c80596)
   W2 p←v58552;
   word formal←c80596;
   {
   formal←c80596 = (formal←c80596 - 16);
   /* : */ 
   }

static void CSTransform←P5100(seg←v19556, transform←v19584)
   word seg←v19556;
   word transform←v19584;
   {
   register ptr gf←c80628 =  (ptr) &globalframe;
   word data←v29212;
   /* CSTransform: */ 
SOURCE(34047, 397)
SOURCE(34132, 40)
   data←v29212 = XR←Narrow((* (( (ptr) seg←v19556)+24) ), (* (( (ptr) gf←c80628)+19) ));
SOURCE(34174, 183)
   {
      register word i←v29256 = 0;
      register word noName←c71924;
      noName←c71924 = (*  (ptr) (*  (ptr) data←v29212 ) );
      if ((i←v29256 >= noName←c71924)) {
         goto lab←L100053;
         };
      lab←L100056: ;
      {
         W2 vec←v29300;
         word var←c71988;
         word var←c72020;
         word var←c72052;
         word var←c72084;
SOURCE(34212, 43)
         {
            word limit494;
            var←c71988 = (*  (ptr) data←v29212 );
            vec←v29300.f0 = (* (( (W2Pt) (( (ptr) var←c71988)+1))+(
                  limit494 = (*  (ptr) var←c71988 ),
                  BCK(i←v29256, limit494)
                  )) ).f0;
            };
         {
            word limit495;
            var←c72020 = (*  (ptr) data←v29212 );
            vec←v29300.f1 = (* (( (W2Pt) (( (ptr) var←c72020)+1))+(
                  limit495 = (*  (ptr) var←c72020 ),
                  BCK(i←v29256, limit495)
                  )) ).f1;
            };
SOURCE(34257, 52)
         {
            word pd496;
            pd496 = (* (( (ptr) (* (( (ptr) gf←c80628)+293)/* var←c65588 */  ))+39) );
            (void) ( *( (fPt) ((*  (ptr) pd496 ))))((word) &vec←v29300, transform←v19584, vec←v29300, pd496);
            };
SOURCE(34311, 22)
         {
            word limit497;
            var←c72052 = (*  (ptr) data←v29212 );
            (* (( (W2Pt) (( (ptr) var←c72052)+1))+(
                  limit497 = (*  (ptr) var←c72052 ),
                  BCK(i←v29256, limit497)
                  )) ).f0 = vec←v29300.f0;
            };
SOURCE(34335, 22)
         {
            word limit498;
            var←c72084 = (*  (ptr) data←v29212 );
            (* (( (W2Pt) (( (ptr) var←c72084)+1))+(
                  limit498 = (*  (ptr) var←c72084 ),
                  BCK(i←v29256, limit498)
                  )) ).f1 = vec←v29300.f1;
            };
         };
      i←v29256 = (i←v29256 + 1);
      if ((i←v29256 < noName←c71924)) {
         goto lab←L100056;
         };
      lab←L100053: ;
      };
SOURCE(34368, 53)
   {
      word pd499;
      pd499 = (* (( (ptr) (* (( (ptr) gf←c80628)+291)/* var←c65492 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd499 ))))((* (( (ptr) data←v29212)+2) ), transform←v19584, 0, pd499);
      };
SOURCE(34423, 21)
   (void) UpdateCSBoundBox←P4860(seg←v19556);
   }

static void CSEndPointMoved←P5160(seg←v19644, lo←v19672, newPoint←v19700)
   word seg←v19644;
   word lo←v19672;
   W2 newPoint←v19700;
   {
   register ptr gf←c80660 =  (ptr) &globalframe;
   word data←v29344;
   word coeffs←v29372 = 0;
   /* CSEndPointMoved: */ 
SOURCE(34450, 343)
SOURCE(34518, 40)
   data←v29344 = XR←Narrow((* (( (ptr) seg←v19644)+24) ), (* (( (ptr) gf←c80660)+19) ));
SOURCE(34597, 32)
   (void) CSEndPointSet←P6180(seg←v19644, lo←v19672, newPoint←v19700);
SOURCE(34631, 53)
   {
      word pd500;
      pd500 = (* (( (ptr) (* (( (ptr) gf←c80660)+290)/* var←c65460 */  ))+8) );
      coeffs←v29372 = (word) ( *( (fPt) ((*  (ptr) pd500 ))))((*  (ptr) data←v29344 ), (* (( (ptr) data←v29344)+1) ), pd500);
      };
SOURCE(34719, 51)
   {
      word pd501;
      pd501 = (* (( (ptr) (* (( (ptr) gf←c80660)+291)/* var←c65492 */  ))+4) );
      (* (( (ptr) data←v29344)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd501 ))))(coeffs←v29372, 0, pd501);
      };
SOURCE(34772, 21)
   (void) UpdateCSBoundBox←P4860(seg←v19644);
   }

static void CSControlPointMoved←P5220(seg←v19760, transform←v19788, controlPointNum←v19816)
   word seg←v19760;
   word transform←v19788;
   word controlPointNum←v19816;
   {
   register ptr gf←c80692 =  (ptr) &globalframe;
   word data←v29416;
   word coeffs←v29444 = 0;
   /* CSControlPointMoved: */ 
SOURCE(34799, 448)
SOURCE(34914, 40)
   data←v29416 = XR←Narrow((* (( (ptr) seg←v19760)+24) ), (* (( (ptr) gf←c80692)+19) ));
SOURCE(34993, 123)
   {
      W2 var←c72116;
      {
         W2 var←c72148;
         (void) CSControlPointGet←P5580((word) &var←c72148, seg←v19760, controlPointNum←v19816);
         {
            W2 var←c0844;
            {
               word pd502;
               pd502 = (* (( (ptr) (* (( (ptr) gf←c80692)+293)/* var←c65588 */  ))+39) );
               (void) ( *( (fPt) ((*  (ptr) pd502 ))))((word) &var←c0844, transform←v19788, var←c72148, pd502);
               };
            var←c72116 = var←c0844;
            };
         };
      (void) CSControlPointSet←P6120(seg←v19760, controlPointNum←v19816, var←c72116);
      };
SOURCE(35118, 53)
   {
      word pd503;
      pd503 = (* (( (ptr) (* (( (ptr) gf←c80692)+290)/* var←c65460 */  ))+8) );
      coeffs←v29444 = (word) ( *( (fPt) ((*  (ptr) pd503 ))))((*  (ptr) data←v29416 ), (* (( (ptr) data←v29416)+1) ), pd503);
      };
SOURCE(35173, 51)
   {
      word pd504;
      pd504 = (* (( (ptr) (* (( (ptr) gf←c80692)+291)/* var←c65492 */  ))+4) );
      (* (( (ptr) data←v29416)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd504 ))))(coeffs←v29444, 0, pd504);
      };
SOURCE(35226, 21)
   (void) UpdateCSBoundBox←P4860(seg←v19760);
   }

static word CSDescribe←P5280(seg←v19876, self←v19904, lo←v19932, hi←v19960, cps←v19988)
   word seg←v19876;
   word self←v19904;
   word lo←v19932;
   word hi←v19960;
   word cps←v19988;
   {
   register ptr gf←c80724 =  (ptr) &globalframe;
   word rope←v20032;
   word data←v29488;
   /* CSDescribe: */ 
SOURCE(35253, 257)
SOURCE(35253, 257)
   rope←v20032 = 0;
SOURCE(35351, 40)
   data←v29488 = XR←Narrow((* (( (ptr) seg←v19876)+24) ), (* (( (ptr) gf←c80724)+19) ));
SOURCE(35393, 117)
   {
      word var←c72180;
      var←c72180 = (* (( (ptr) data←v29488)+1) );
      switch (var←c72180) {
         case 2: 
SOURCE(35428, 16)
            rope←v20032 = (* (( (ptr) gf←c80724)+34) );
            break;
         case 3: 
SOURCE(35458, 23)
            rope←v20032 = (* (( (ptr) gf←c80724)+35) );
            break;
         case 6: 
SOURCE(35494, 16)
            rope←v20032 = (* (( (ptr) gf←c80724)+36) );
            break;
         default: 
SOURCE(35523, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(35253, 257)
   return(rope←v20032);
   }

static void CSFileOut←P5340(seg←v20092, f←v20120)
   word seg←v20092;
   word f←v20120;
   {
   register ptr gf←c80756 =  (ptr) &globalframe;
   word data←v29532;
   word cpCount←v29560;
   /* CSFileOut: */ 
SOURCE(35534, 442)
SOURCE(35583, 40)
   data←v29532 = XR←Narrow((* (( (ptr) seg←v20092)+24) ), (* (( (ptr) gf←c80756)+19) ));
SOURCE(35625, 47)
   {
      word pd505;
      pd505 = (* (( (ptr) (*  (ptr) seg←v20092 ))+17) );
      cpCount←v29560 = (word) ( *( (fPt) ((*  (ptr) pd505 ))))(seg←v20092, pd505);
      };
SOURCE(35674, 149)
   {
      word var←c72212;
      var←c72212 = (* (( (ptr) data←v29532)+1) );
      switch (var←c72212) {
         case 2: 
SOURCE(35709, 27)
            {
               word pd506;
               pd506 = (* (( (ptr) (* (( (ptr) gf←c80756)+285)/* var←c65044 */  ))+93) );
               (void) ( *( (fPt) ((*  (ptr) pd506 ))))(f←v20120, (* (( (ptr) gf←c80756)+37) ), 0, 2147483647, pd506);
               };
            break;
         case 3: 
SOURCE(35750, 33)
            {
               word pd507;
               pd507 = (* (( (ptr) (* (( (ptr) gf←c80756)+285)/* var←c65044 */  ))+93) );
               (void) ( *( (fPt) ((*  (ptr) pd507 ))))(f←v20120, (* (( (ptr) gf←c80756)+38) ), 0, 2147483647, pd507);
               };
            break;
         case 6: 
SOURCE(35796, 27)
            {
               word pd508;
               pd508 = (* (( (ptr) (* (( (ptr) gf←c80756)+285)/* var←c65044 */  ))+93) );
               (void) ( *( (fPt) ((*  (ptr) pd508 ))))(f←v20120, (* (( (ptr) gf←c80756)+39) ), 0, 2147483647, pd508);
               };
            break;
         default: 
SOURCE(35836, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(35843, 35)
   {
      W2 var←c72244;
      var←c72244.f0 = 5;
      var←c72244.f1 = cpCount←v29560;
      {
         word pd509;
         pd509 = (* (( (ptr) (* (( (ptr) gf←c80756)+285)/* var←c65044 */  ))+61) );
         (void) ( *( (fPt) ((*  (ptr) pd509 ))))(f←v20120, (* (( (ptr) gf←c80756)+40) ), var←c72244, pd509);
         };
      };
SOURCE(35880, 96)
   {
      register word i←v29604 = 0;
      register word noName←c72276;
      noName←c72276 = cpCount←v29560;
      if (( (int)i←v29604 >=  (int)noName←c72276)) {
         goto lab←L100057;
         };
      lab←L100060: ;
SOURCE(35910, 51)
      {
         W2 var←c72308;
         (void) CSControlPointGet←P5580((word) &var←c72308, seg←v20092, SGNCK(i←v29604));
         {
            word pd510;
            pd510 = (* (( (ptr) (* (( (ptr) gf←c80756)+296)/* var←c66196 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd510 ))))(f←v20120, var←c72308, pd510);
            };
         };
SOURCE(35963, 13)
      {
         word pd511;
         pd511 = (* (( (ptr) (* (( (ptr) gf←c80756)+285)/* var←c65044 */  ))+21) );
         (void) ( *( (fPt) ((*  (ptr) pd511 ))))(f←v20120, 32, pd511);
         };
      i←v29604 = (i←v29604 + 1);
      if (( (int)i←v29604 <  (int)noName←c72276)) {
         goto lab←L100060;
         };
      lab←L100057: ;
      };
   }

static word CSFileIn←P5400(f←v20180, loPoint←v20208, hiPoint←v20236, version←v20264)
   word f←v20180;
   W2 loPoint←v20208;
   W2 hiPoint←v20236;
   word version←v20264;
   {
   register ptr gf←c80788 =  (ptr) &globalframe;
   word seg←v20308;
   word cps←v29648 = 0;
   word type←v29676;
   word typeWord←v29704 = 0;
   word cyclic←v29732;
   /* CSFileIn: */ 
SOURCE(35991, 1043)
SOURCE(35991, 1043)
   seg←v20308 = 0;
SOURCE(36186, 470)
   {
      word x512;
      word x514;
      if (((
         x512 = version←v20264,  *(float*)&x512
         ) >= (
         x514 = (*  (ptr) &fc513 ),  *(float*)&x514
         ))) {
SOURCE(36215, 30)
         {
            word pd515;
            pd515 = (* (( (ptr) (* (( (ptr) gf←c80788)+297)/* var←c66260 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd515 ))))(f←v20180, (* (( (ptr) gf←c80788)+41) ), pd515);
            };
SOURCE(36247, 32)
         {
            word pd516;
            pd516 = (* (( (ptr) (* (( (ptr) gf←c80788)+297)/* var←c66260 */  ))+8) );
            typeWord←v29704 = (word) ( *( (fPt) ((*  (ptr) pd516 ))))(f←v20180, pd516);
            };
SOURCE(36281, 189)
         {
            word pd517;
            pd517 = (* (( (ptr) (* (( (ptr) gf←c80788)+303)/* var←c72340 */  ))+8) );
            if ((0 != (word) ( *( (fPt) ((*  (ptr) pd517 ))))(typeWord←v29704, (* (( (ptr) gf←c80788)+34) ), 1, pd517))) {
SOURCE(36321, 22)
               type←v29676 = 2;
               }
            else {
SOURCE(36343, 127)
               {
                  word pd518;
                  pd518 = (* (( (ptr) (* (( (ptr) gf←c80788)+303)/* var←c72340 */  ))+8) );
                  if ((0 != (word) ( *( (fPt) ((*  (ptr) pd518 ))))(typeWord←v29704, (* (( (ptr) gf←c80788)+42) ), 1, pd518))) {
SOURCE(36389, 21)
                     type←v29676 = 3;
                     }
                  else {
SOURCE(36410, 60)
                     {
                        word pd519;
                        pd519 = (* (( (ptr) (* (( (ptr) gf←c80788)+303)/* var←c72340 */  ))+8) );
                        if ((0 != (word) ( *( (fPt) ((*  (ptr) pd519 ))))(typeWord←v29704, (* (( (ptr) gf←c80788)+36) ), 1, pd519))) {
SOURCE(36450, 20)
                           type←v29676 = 6;
                           }
                        else {
SOURCE(36470, 5)
                           (void) XR←RaiseUnnamedError();
                           };
                        };
                     };
                  };
               };
            };
         }
      else {
SOURCE(36484, 172)
         {
            word x520;
            word x522;
            if (((
               x520 = version←v20264,  *(float*)&x520
               ) >= (
               x522 = (*  (ptr) &fc521 ),  *(float*)&x522
               ))) {
SOURCE(36513, 32)
               {
                  word pd523;
                  pd523 = (* (( (ptr) (* (( (ptr) gf←c80788)+297)/* var←c66260 */  ))+9) );
                  (void) ( *( (fPt) ((*  (ptr) pd523 ))))(f←v20180, (* (( (ptr) gf←c80788)+43) ), pd523);
                  };
SOURCE(36547, 30)
               {
                  word pd524;
                  pd524 = (* (( (ptr) (* (( (ptr) gf←c80788)+297)/* var←c66260 */  ))+24) );
                  cyclic←v29732 = (word) ( *( (fPt) ((*  (ptr) pd524 ))))(f←v20180, pd524);
                  };
SOURCE(36579, 52)
               if ((0 != cyclic←v29732)) {
SOURCE(36594, 21)
                  type←v29676 = 3;
                  }
               else {
SOURCE(36615, 16)
                  type←v29676 = 2;
                  };
               }
            else {
SOURCE(36640, 16)
               type←v29676 = 2;
               };
            };
         };
      };
SOURCE(36658, 63)
   {
      word var←c72372;
      word var←c72404;
      word var←c72436;
      {
         word pd525;
         word idx526;
         pd525 = (* (( (ptr) (* (( (ptr) gf←c80788)+297)/* var←c66260 */  ))+25) );
         var←c72372 = (
            idx526 = (word) ((word) ( *( (fPt) ((*  (ptr) pd525 ))))(f←v20180, pd525) + 2),
            BCK(idx526, 33554431)
            );
         };
      var←c72404 = ((word) var←c72372 << 3);
      var←c72436 = XR←NewObject((4 + var←c72404), (* (( (ptr) gf←c80788)+24) ));
      (*  (ptr) var←c72436 ) = var←c72372;
      cps←v29648 = var←c72436;
      };
SOURCE(36723, 77)
   {
      register word i←v29776 = 1;
      register word noName←c72468;
      noName←c72468 = ((*  (ptr) cps←v29648 ) - 1);
      if (( (int)i←v29776 >=  (int)noName←c72468)) {
         goto lab←L100061;
         };
      lab←L100064: ;
SOURCE(36758, 42)
      {
         W2 var←c72500;
         {
            W2 var←c72532;
            {
               word pd527;
               pd527 = (* (( (ptr) (* (( (ptr) gf←c80788)+297)/* var←c66260 */  ))+19) );
               (void) ( *( (fPt) ((*  (ptr) pd527 ))))((word) &var←c72532, f←v20180, pd527);
               };
            {
               W2 var←c0880;
               (void) PointToFP←P6600((word) &var←c0880, var←c72532);
               var←c72500 = var←c0880;
               };
            };
         {
            word limit528;
            (* (( (W2Pt) (( (ptr) cps←v29648)+1))+(
                  limit528 = (*  (ptr) cps←v29648 ),
                  BCK(i←v29776, limit528)
                  )) ) = var←c72500;
            };
         };
      i←v29776 = (i←v29776 + 1);
      if (( (int)i←v29776 <  (int)noName←c72468)) {
         goto lab←L100064;
         };
      lab←L100061: ;
      };
SOURCE(36811, 48)
   if ( ( (type←v29676 == 3) ?  ! XR←EqualWords(&loPoint←v20208, &hiPoint←v20236, 2) : 0 ) ) {
SOURCE(36859, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(36928, 27)
   {
      W2 var←c72564;
      (void) PointToFP←P6600((word) &var←c72564, loPoint←v20208);
      {
         word limit529;
         (* (( (W2Pt) (( (ptr) cps←v29648)+1))+(
               limit529 = (*  (ptr) cps←v29648 ),
               BCK(0, limit529)
               )) ) = var←c72564;
         };
      };
SOURCE(36957, 38)
   {
      W2 var←c72596;
      (void) PointToFP←P6600((word) &var←c72596, hiPoint←v20236);
      {
         word var←c72628;
         var←c72628 = ((*  (ptr) cps←v29648 ) - 1);
         {
            word limit530;
            (* (( (W2Pt) (( (ptr) cps←v29648)+1))+(
                  limit530 = (*  (ptr) cps←v29648 ),
                  BCK(var←c72628, limit530)
                  )) ) = var←c72596;
            };
         };
      };
SOURCE(36997, 37)
   seg←v20308 = (word) MakeCubicSpline←P4620(cps←v29648, type←v29676, 0);
SOURCE(35991, 1043)
   return(seg←v20308);
   }

static void CSFieldSet←P5460(seg←v39524, controlPointNum←v39552, selected←v39580, selectClass←v39608)
   word seg←v39524;
   word controlPointNum←v39552;
   word selected←v39580;
   word selectClass←v39608;
   {
   register ptr gf←c80820 =  (ptr) &globalframe;
   word data←v29820;
   /* CSFieldSet: */ 
SOURCE(37040, 364)
SOURCE(37096, 40)
   data←v29820 = XR←Narrow((* (( (ptr) seg←v39524)+24) ), (* (( (ptr) gf←c80820)+19) ));
SOURCE(37138, 266)
   {
      word var←c72660;
      word var←c72692;
      word var←c72724;
      word var←c72756;
      word var←c72788;
      var←c72660 = selectClass←v39608;
      switch (var←c72660) {
         case 0: 
SOURCE(37172, 51)
            {
               word limit531;
               var←c72692 = (* (( (ptr) data←v29820)+3) );
               (* (( (W4Pt) (( (ptr) var←c72692)+1))+(
                     limit531 = (*  (ptr) var←c72692 ),
                     BCK(controlPointNum←v39552, limit531)
                     )) ).f0 = selected←v39580;
               };
            break;
         case 1: 
SOURCE(37232, 48)
            {
               word limit532;
               var←c72724 = (* (( (ptr) data←v29820)+3) );
               (* (( (W4Pt) (( (ptr) var←c72724)+1))+(
                     limit532 = (*  (ptr) var←c72724 ),
                     BCK(controlPointNum←v39552, limit532)
                     )) ).f1 = selected←v39580;
               };
            break;
         case 2: 
SOURCE(37292, 51)
            {
               word limit533;
               var←c72756 = (* (( (ptr) data←v29820)+3) );
               (* (( (W4Pt) (( (ptr) var←c72756)+1))+(
                     limit533 = (*  (ptr) var←c72756 ),
                     BCK(controlPointNum←v39552, limit533)
                     )) ).f2 = selected←v39580;
               };
            break;
         case 3: 
SOURCE(37354, 50)
            {
               word limit534;
               var←c72788 = (* (( (ptr) data←v29820)+3) );
               (* (( (W4Pt) (( (ptr) var←c72788)+1))+(
                     limit534 = (*  (ptr) var←c72788 ),
                     BCK(controlPointNum←v39552, limit534)
                     )) ).f3 = selected←v39580;
               };
            break;
         default: 
SOURCE(37417, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static word CSFieldGet←P5520(seg←v39668, controlPointNum←v39696, selectClass←v39724)
   word seg←v39668;
   word controlPointNum←v39696;
   word selectClass←v39724;
   {
   register ptr gf←c80852 =  (ptr) &globalframe;
   word selected←v39768;
   word data←v29864;
   /* CSFieldGet: */ 
SOURCE(37428, 364)
SOURCE(37484, 40)
   data←v29864 = XR←Narrow((* (( (ptr) seg←v39668)+24) ), (* (( (ptr) gf←c80852)+19) ));
SOURCE(37526, 266)
   {
      word var←c72820;
      word var←c72852;
      word var←c72884;
      word var←c72916;
      word var←c72948;
      var←c72820 = selectClass←v39724;
      switch (var←c72820) {
         case 0: 
SOURCE(37560, 51)
            {
               word limit535;
               var←c72852 = (* (( (ptr) data←v29864)+3) );
               selected←v39768 = (* (( (W4Pt) (( (ptr) var←c72852)+1))+(
                     limit535 = (*  (ptr) var←c72852 ),
                     BCK(controlPointNum←v39696, limit535)
                     )) ).f0;
               };
            break;
         case 1: 
SOURCE(37620, 48)
            {
               word limit536;
               var←c72884 = (* (( (ptr) data←v29864)+3) );
               selected←v39768 = (* (( (W4Pt) (( (ptr) var←c72884)+1))+(
                     limit536 = (*  (ptr) var←c72884 ),
                     BCK(controlPointNum←v39696, limit536)
                     )) ).f1;
               };
            break;
         case 2: 
SOURCE(37680, 51)
            {
               word limit537;
               var←c72916 = (* (( (ptr) data←v29864)+3) );
               selected←v39768 = (* (( (W4Pt) (( (ptr) var←c72916)+1))+(
                     limit537 = (*  (ptr) var←c72916 ),
                     BCK(controlPointNum←v39696, limit537)
                     )) ).f2;
               };
            break;
         case 3: 
SOURCE(37742, 50)
            {
               word limit538;
               var←c72948 = (* (( (ptr) data←v29864)+3) );
               selected←v39768 = (* (( (W4Pt) (( (ptr) var←c72948)+1))+(
                     limit538 = (*  (ptr) var←c72948 ),
                     BCK(controlPointNum←v39696, limit538)
                     )) ).f3;
               };
            break;
         default: 
SOURCE(37805, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(37428, 364)
   return(selected←v39768);
   }

static void CSControlPointGet←P5580(formal←c0919, seg←v20368, controlPointNum←v20396)
   word formal←c0919;
   word seg←v20368;
   word controlPointNum←v20396;
   {
   register ptr gf←c80884 =  (ptr) &globalframe;
   W2 point←v20440;
   word data←v29908;
   /* CSControlPointGet: */ 
SOURCE(37816, 393)
SOURCE(37904, 40)
   data←v29908 = XR←Narrow((* (( (ptr) seg←v20368)+24) ), (* (( (ptr) gf←c80884)+19) ));
SOURCE(37946, 263)
   {
      word var←c72980;
      var←c72980 = (* (( (ptr) data←v29908)+1) );
      switch (var←c72980) {
         case 2: case 3: 
SOURCE(37993, 45)
            if (( (int)controlPointNum←v20396 >=  (int)((*  (ptr) (*  (ptr) data←v29908 ) ) - 2))) {
SOURCE(38038, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(38045, 47)
            {
               W2 var←c73108;
               {
                  W2 var←c0914;
                  {
                     word var←c73044;
                     word var←c73076;
                     W2 var←c01383;
                     var←c73044 = (controlPointNum←v20396 + 1);
                     var←c73076 = (*  (ptr) data←v29908 );
                     {
                        word limit539;
                        var←c01383 = (* (( (W2Pt) (( (ptr) var←c73076)+1))+(
/*1*/   limit539 = (*  (ptr) var←c73076 ),
/*1*/   BCK(var←c73044, limit539)
/*1*/   )) );
                        };
                     (void) FPToPoint←P6540((word) &var←c0914, var←c01383);
                     };
                  var←c73108 = var←c0914;
                  };
               point←v20440 = var←c73108;
               /* removed tail goto */ 
               };
            break;
         case 6: 
SOURCE(38110, 45)
            if (( (int)controlPointNum←v20396 >=  (int)((*  (ptr) (*  (ptr) data←v29908 ) ) - 4))) {
SOURCE(38155, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(38162, 47)
            {
               W2 var←c73236;
               {
                  W2 var←c0918;
                  {
                     word var←c73172;
                     word var←c73204;
                     W2 var←c01384;
                     var←c73172 = (controlPointNum←v20396 + 3);
                     var←c73204 = (*  (ptr) data←v29908 );
                     {
                        word limit540;
                        var←c01384 = (* (( (W2Pt) (( (ptr) var←c73204)+1))+(
/*1*/   limit540 = (*  (ptr) var←c73204 ),
/*1*/   BCK(var←c73172, limit540)
/*1*/   )) );
                        };
                     (void) FPToPoint←P6540((word) &var←c0918, var←c01384);
                     };
                  var←c73236 = var←c0918;
                  };
               point←v20440 = var←c73236;
               /* removed tail goto */ 
               };
            break;
         default: 
SOURCE(38225, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   (*  (W2Pt) formal←c0919 ) = point←v20440;
   return;
   }

static word CSControlPointCount←P5640(seg←v20500)
   word seg←v20500;
   {
   register ptr gf←c80916 =  (ptr) &globalframe;
   word controlPointCount←v20544;
   word data←v29952;
   /* CSControlPointCount: */ 
SOURCE(38236, 361)
SOURCE(38314, 40)
   data←v29952 = XR←Narrow((* (( (ptr) seg←v20500)+24) ), (* (( (ptr) gf←c80916)+19) ));
SOURCE(38405, 192)
   {
      word var←c73268;
      var←c73268 = (* (( (ptr) data←v29952)+1) );
      switch (var←c73268) {
         case 2: case 3: 
SOURCE(38450, 25)
            {
               word idx541;
               return((
                  idx541 = (word) ((*  (ptr) (*  (ptr) data←v29952 ) ) - 2),
                  SGNCK(idx541)
                  ));
               };
         case 6: 
SOURCE(38524, 73)
            {
               word idx542;
               return((
                  idx542 = (word) ((*  (ptr) (*  (ptr) data←v29952 ) ) - 6),
                  SGNCK(idx542)
                  ));
               };
         default: 
SOURCE(38597, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static void CSClosestControlPoint←P5700(formal←c0951, seg←v20604, testPoint←v20632, tolerance←v20660)
   word formal←c0951;
   word seg←v20604;
   W2 testPoint←v20632;
   word tolerance←v20660;
   {
   register ptr gf←c80948 =  (ptr) &globalframe;
   W2 point←v20704;
   W2 normal←v20732;
   word controlPointNum←v20760;
   word success←v20788;
   word data←v29996;
   word nextDist←v30024;
   word minDist←v30052;
   /* CSClosestControlPoint: */ 
SOURCE(38607, 1336)
SOURCE(38607, 1336)
   normal←v20732.f0 = (*  (ptr) &fc78 );
   normal←v20732.f1 = (*  (ptr) &fc115 );
SOURCE(38774, 40)
   data←v29996 = XR←Narrow((* (( (ptr) seg←v20604)+24) ), (* (( (ptr) gf←c80948)+19) ));
SOURCE(38847, 78)
   {
      word pd543;
      pd543 = (* (( (ptr) (*  (ptr) seg←v20604 ))+17) );
      if (((word) ( *( (fPt) ((*  (ptr) pd543 ))))(seg←v20604, pd543) == 0)) {
SOURCE(38892, 33)
         point←v20704.f0 = (*  (ptr) &fc78 );
         point←v20704.f1 = (*  (ptr) &fc78 );
         normal←v20732.f0 = (*  (ptr) &fc78 );
         normal←v20732.f1 = (*  (ptr) &fc115 );
         controlPointNum←v20760 = 999;
         success←v20788 = 0;
         goto lab←L100066;
         };
      };
SOURCE(38927, 73)
   {
      W2 var←c73364;
      (void) CSControlPointGet←P5580((word) &var←c73364, seg←v20604, 0);
      {
         word pd544;
         pd544 = (* (( (ptr) (* (( (ptr) gf←c80948)+300)/* var←c69588 */  ))+21) );
         minDist←v30052 = (word) ( *( (fPt) ((*  (ptr) pd544 ))))(testPoint←v20632, var←c73364, pd544);
         };
      };
SOURCE(39002, 19)
   controlPointNum←v20760 = 0;
SOURCE(39023, 190)
   {
      register word i←v30096 = 1;
      register word noName←c73396;
      word var←c01385;
      {
         word pd545;
         pd545 = (* (( (ptr) (*  (ptr) seg←v20604 ))+17) );
         noName←c73396 = (word) ( *( (fPt) ((*  (ptr) pd545 ))))(seg←v20604, pd545);
         };
      if (( (int)i←v30096 >=  (int)noName←c73396)) {
         goto lab←L100067;
         };
      lab←L100070: ;
SOURCE(39077, 136)
      {
         word x547;
         word x548;
         {
            W2 var←c73428;
            (void) CSControlPointGet←P5580((word) &var←c73428, seg←v20604, SGNCK(i←v30096));
            {
               word pd546;
               pd546 = (* (( (ptr) (* (( (ptr) gf←c80948)+300)/* var←c69588 */  ))+21) );
               nextDist←v30024 = (word) ( *( (fPt) ((*  (ptr) pd546 ))))(testPoint←v20632, var←c73428, pd546);
               };
            };
         var←c01385 = nextDist←v30024;
         if (((
            x547 = var←c01385,  *(float*)&x547
            ) < (
            x548 = minDist←v30052,  *(float*)&x548
            ))) {
SOURCE(39174, 18)
            minDist←v30052 = nextDist←v30024;
SOURCE(39194, 19)
            controlPointNum←v20760 = SGNCK(i←v30096);
            };
         };
      i←v30096 = (i←v30096 + 1);
      if (( (int)i←v30096 <  (int)noName←c73396)) {
         goto lab←L100070;
         };
      lab←L100067: ;
      };
SOURCE(39228, 31)
   {
      word pd549;
      pd549 = (* (( (ptr) (* (( (ptr) gf←c80948)+299)/* var←c66836 */  ))+9) );
      minDist←v30052 = (word) ( *( (fPt) ((*  (ptr) pd549 ))))(minDist←v30052, pd549);
      };
SOURCE(39261, 32)
   {
      word x550;
      word x551;
      success←v20788 = ((
         x550 = minDist←v30052,  *(float*)&x550
         ) <= (
         x551 = tolerance←v20660,  *(float*)&x551
         ));
      };
SOURCE(39295, 47)
   (void) CSControlPointGet←P5580((word) &point←v20704, seg←v20604, controlPointNum←v20760);
SOURCE(39345, 598)
   if ((0 != success←v20788)) {
SOURCE(39363, 580)
      if (((* (( (ptr) data←v29996)+1) ) == 2) || ((* (( (ptr) data←v29996)+1) ) == 3)) {
SOURCE(39417, 529)
         {
            W2 normal1←v30140;
            W2 normal2←v30168;
            W2 tangent←v30196;
            W2 direction←v30224;
            W2 p2←v30252;
            W2 p3←v30280;
            word var←c73460;
            word var←c73492;
SOURCE(39479, 41)
            {
               word limit552;
               var←c73460 = (* (( (ptr) (* (( (ptr) data←v29996)+2) ))+4) );
               p2←v30252 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c73460)+1))+(
                        limit552 = (*  (ptr) var←c73460 ),
                        BCK(controlPointNum←v20760, limit552)
                        )))+4) );
               };
SOURCE(39522, 41)
            {
               word limit553;
               var←c73492 = (* (( (ptr) (* (( (ptr) data←v29996)+2) ))+4) );
               p3←v30280 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c73492)+1))+(
                        limit553 = (*  (ptr) var←c73492 ),
                        BCK(controlPointNum←v20760, limit553)
                        )))+6) );
               };
SOURCE(39565, 43)
            {
               word pd554;
               pd554 = (* (( (ptr) (* (( (ptr) gf←c80948)+300)/* var←c69588 */  ))+22) );
               (void) ( *( (fPt) ((*  (ptr) pd554 ))))((word) &tangent←v30196, p3←v30280, p2←v30252, pd554);
               };
SOURCE(39610, 21)
            normal1←v30140.f0 = tangent←v30196.f1;
SOURCE(39633, 22)
            {
               word x555;
               *(float*)&normal1←v30140.f1 =  - (
                  x555 = tangent←v30196.f0,  *(float*)&x555
                  );
               };
SOURCE(39657, 22)
            {
               word x556;
               *(float*)&normal2←v30168.f0 =  - (
                  x556 = tangent←v30196.f1,  *(float*)&x556
                  );
               };
SOURCE(39681, 21)
            normal2←v30168.f1 = tangent←v30196.f0;
SOURCE(39704, 56)
            {
               word pd557;
               pd557 = (* (( (ptr) (* (( (ptr) gf←c80948)+300)/* var←c69588 */  ))+22) );
               (void) ( *( (fPt) ((*  (ptr) pd557 ))))((word) &direction←v30224, point←v20704, testPoint←v20632, pd557);
               };
SOURCE(39762, 181)
            {
               float tf558;
               word pd559;
               word x560;
               float tf561;
               word pd562;
               word x563;
               pd559 = (* (( (ptr) (* (( (ptr) gf←c80948)+300)/* var←c69588 */  ))+9) );
               pd562 = (* (( (ptr) (* (( (ptr) gf←c80948)+300)/* var←c69588 */  ))+9) );
               if ((FABS((
                     x560 = (word) ( *( (fPt) ((*  (ptr) pd559 ))))(normal1←v30140, direction←v30224, pd559),  *(float*)&x560
                     ), tf558) < FABS((
                     x563 = (word) ( *( (fPt) ((*  (ptr) pd562 ))))(normal2←v30168, direction←v30224, pd562),  *(float*)&x563
                     ), tf561))) {
SOURCE(39900, 17)
                  normal←v20732 = normal1←v30140;
                  }
               else {
SOURCE(39927, 16)
                  normal←v20732 = normal2←v30168;
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   lab←L100066: ;
   (*  (W2Pt) formal←c0951 ) = point←v20704;
   (*  (W2Pt) (( (ptr) formal←c0951)+2) ) = normal←v20732;
   (* (( (ptr) formal←c0951)+4) ) = controlPointNum←v20760;
   (* (( (ptr) formal←c0951)+5) ) = success←v20788;
   return;
   }

static word CSAsPolyline←P5760(seg←v20952, tolerance←v20980)
   word seg←v20952;
   word tolerance←v20980;
   {
   register ptr gf←c80980 =  (ptr) &globalframe;
   word polyline←v21024;
   word data←v30324;
   word polylines←v30352 = 0;
   word lineCount←v30380 = 0;
   word index←v30408 = 0;
   /* CSAsPolyline: */ 
SOURCE(40083, 705)
SOURCE(40083, 705)
   polyline←v21024 = 0;
SOURCE(40186, 40)
   data←v30324 = XR←Narrow((* (( (ptr) seg←v20952)+24) ), (* (( (ptr) gf←c80980)+19) ));
SOURCE(40278, 54)
   {
      word var←c73524;
      word var←c73556;
      word var←c73588;
      {
         word idx564;
         var←c73524 = (
            idx564 = (*  (ptr) (* (( (ptr) (* (( (ptr) data←v30324)+2) ))+4) ) ),
            BCK(idx564, 67108863)
            );
         };
      var←c73556 = ((word) var←c73524 << 2);
      var←c73588 = XR←NewObject((4 + var←c73556), (* (( (ptr) gf←c80980)+21) ));
      (*  (ptr) var←c73588 ) = var←c73524;
      polylines←v30352 = var←c73588;
      };
SOURCE(40334, 157)
   {
      register word i←v30452 = 0;
      register word noName←c73620;
      noName←c73620 = (*  (ptr) (* (( (ptr) (* (( (ptr) data←v30324)+2) ))+4) ) );
      if ((i←v30452 >= noName←c73620)) {
         goto lab←L100071;
         };
      lab←L100074: ;
SOURCE(40380, 66)
      {
         word var←c73652;
         {
            word var←c73684;
            W8 var←c01386;
            var←c73684 = (* (( (ptr) (* (( (ptr) data←v30324)+2) ))+4) );
            {
               word limit565;
               var←c01386 = (* (( (W8Pt) (( (ptr) var←c73684)+1))+(
                     limit565 = (*  (ptr) var←c73684 ),
                     BCK(i←v30452, limit565)
                     )) );
               };
            {
               word pd566;
               pd566 = (* (( (ptr) (* (( (ptr) gf←c80980)+301)/* var←c69812 */  ))+6) );
               var←c73652 = (word) ( *( (fPt) ((*  (ptr) pd566 ))))(var←c01386, tolerance←v20980, pd566);
               };
            };
         {
            word limit567;
            (* ((( (ptr) polylines←v30352)+1)+(
                  limit567 = (*  (ptr) polylines←v30352 ),
                  BCK(i←v30452, limit567)
                  )) ) = var←c73652;
            };
         };
SOURCE(40448, 43)
      {
         word limit568;
         word idx569;
         lineCount←v30380 = (
            idx569 = (word) ((lineCount←v30380 + (*  (ptr) (* ((( (ptr) polylines←v30352)+1)+(
                  limit568 = (*  (ptr) polylines←v30352 ),
                  BCK(i←v30452, limit568)
                  )) ) )) - 1),
            SGNCK(idx569)
            );
         };
      i←v30452 = (i←v30452 + 1);
      if ((i←v30452 < noName←c73620)) {
         goto lab←L100074;
         };
      lab←L100071: ;
      };
SOURCE(40502, 59)
   {
      word var←c73716;
      word var←c73748;
      word var←c73780;
      var←c73716 = (lineCount←v30380 + 1);
      var←c73748 = ((word) var←c73716 << 3);
      var←c73780 = XR←NewObject((8 + var←c73748), (* (( (ptr) gf←c80980)+25) ));
      (* (( (ptr) var←c73780)+1) ) = var←c73716;
      polyline←v21024 = var←c73780;
      };
SOURCE(40563, 29)
   (*  (ptr) polyline←v21024 ) = (lineCount←v30380 + 1);
SOURCE(40594, 33)
   {
      word var←c73812;
      {
         word limit570;
         var←c73812 = (* ((( (ptr) polylines←v30352)+1)+(
               limit570 = (*  (ptr) polylines←v30352 ),
               BCK(0, limit570)
               )) );
         };
      {
         word limit571;
         word limit572;
         (* (( (W2Pt) (( (ptr) polyline←v21024)+2))+(
               limit571 = (* (( (ptr) polyline←v21024)+1) ),
               BCK(index←v30408, limit571)
               )) ) = (* (( (W2Pt) (( (ptr) var←c73812)+2))+(
               limit572 = (* (( (ptr) var←c73812)+1) ),
               BCK(0, limit572)
               )) );
         };
      };
SOURCE(40629, 17)
   index←v30408 = (index←v30408 + 1);
SOURCE(40648, 140)
   {
      register word i←v30496 = 0;
      register word noName←c73844;
      noName←c73844 = (*  (ptr) (* (( (ptr) (* (( (ptr) data←v30324)+2) ))+4) ) );
      if ((i←v30496 >= noName←c73844)) {
         goto lab←L100075;
         };
      lab←L100078: ;
SOURCE(40694, 94)
      {
         register word j←v30540 = 1;
         register word noName←c73876;
         {
            word limit573;
            noName←c73876 = (*  (ptr) (* ((( (ptr) polylines←v30352)+1)+(
                  limit573 = (*  (ptr) polylines←v30352 ),
                  BCK(i←v30496, limit573)
                  )) ) );
            };
         if ((j←v30540 >= noName←c73876)) {
            goto lab←L100079;
            };
         lab←L100082: ;
SOURCE(40736, 33)
         {
            word var←c73908;
            {
               word limit574;
               var←c73908 = (* ((( (ptr) polylines←v30352)+1)+(
                     limit574 = (*  (ptr) polylines←v30352 ),
                     BCK(i←v30496, limit574)
                     )) );
               };
            {
               word limit575;
               word limit576;
               (* (( (W2Pt) (( (ptr) polyline←v21024)+2))+(
                     limit575 = (* (( (ptr) polyline←v21024)+1) ),
                     BCK(index←v30408, limit575)
                     )) ) = (* (( (W2Pt) (( (ptr) var←c73908)+2))+(
                     limit576 = (* (( (ptr) var←c73908)+1) ),
                     BCK(j←v30540, limit576)
                     )) );
               };
            };
SOURCE(40771, 17)
         index←v30408 = (index←v30408 + 1);
         j←v30540 = (j←v30540 + 1);
         if ((j←v30540 < noName←c73876)) {
            goto lab←L100082;
            };
         lab←L100079: ;
         };
      i←v30496 = (i←v30496 + 1);
      if ((i←v30496 < noName←c73844)) {
         goto lab←L100078;
         };
      lab←L100075: ;
      };
SOURCE(40083, 705)
   return(polyline←v21024);
   }

static void CSCPNormal←P5820(formal←c0991, seg←v21084, controlPointNum←v21112, cPoint←v21140, testPoint←v21168)
   word formal←c0991;
   word seg←v21084;
   word controlPointNum←v21112;
   W2 cPoint←v21140;
   W2 testPoint←v21168;
   {
   register ptr gf←c81012 =  (ptr) &globalframe;
   W2 normal←v21212;
   word data←v30584;
   /* CSCPNormal: */ 
SOURCE(40812, 741)
SOURCE(40812, 741)
   normal←v21212.f0 = (*  (ptr) &fc78 );
   normal←v21212.f1 = (*  (ptr) &fc115 );
SOURCE(40930, 40)
   data←v30584 = XR←Narrow((* (( (ptr) seg←v21084)+24) ), (* (( (ptr) gf←c81012)+19) ));
SOURCE(40972, 581)
   if (((* (( (ptr) data←v30584)+1) ) == 2) || ((* (( (ptr) data←v30584)+1) ) == 3)) {
SOURCE(41026, 530)
      {
         W2 normal1←v30628;
         W2 normal2←v30656;
         W2 tangent←v30684;
         W2 direction←v30712;
         W2 p2←v30740;
         W2 p3←v30768;
         word var←c73940;
         word var←c73972;
SOURCE(41088, 41)
         {
            word limit577;
            var←c73940 = (* (( (ptr) (* (( (ptr) data←v30584)+2) ))+4) );
            p2←v30740 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c73940)+1))+(
                     limit577 = (*  (ptr) var←c73940 ),
                     BCK(controlPointNum←v21112, limit577)
                     )))+4) );
            };
SOURCE(41131, 41)
         {
            word limit578;
            var←c73972 = (* (( (ptr) (* (( (ptr) data←v30584)+2) ))+4) );
            p3←v30768 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c73972)+1))+(
                     limit578 = (*  (ptr) var←c73972 ),
                     BCK(controlPointNum←v21112, limit578)
                     )))+6) );
            };
SOURCE(41174, 43)
         {
            word pd579;
            pd579 = (* (( (ptr) (* (( (ptr) gf←c81012)+300)/* var←c69588 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd579 ))))((word) &tangent←v30684, p3←v30768, p2←v30740, pd579);
            };
SOURCE(41219, 21)
         normal1←v30628.f0 = tangent←v30684.f1;
SOURCE(41242, 22)
         {
            word x580;
            *(float*)&normal1←v30628.f1 =  - (
               x580 = tangent←v30684.f0,  *(float*)&x580
               );
            };
SOURCE(41266, 22)
         {
            word x581;
            *(float*)&normal2←v30656.f0 =  - (
               x581 = tangent←v30684.f1,  *(float*)&x581
               );
            };
SOURCE(41290, 21)
         normal2←v30656.f1 = tangent←v30684.f0;
SOURCE(41313, 57)
         {
            word pd582;
            pd582 = (* (( (ptr) (* (( (ptr) gf←c81012)+300)/* var←c69588 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd582 ))))((word) &direction←v30712, cPoint←v21140, testPoint←v21168, pd582);
            };
SOURCE(41372, 181)
         {
            float tf583;
            word pd584;
            word x585;
            float tf586;
            word pd587;
            word x588;
            pd584 = (* (( (ptr) (* (( (ptr) gf←c81012)+300)/* var←c69588 */  ))+9) );
            pd587 = (* (( (ptr) (* (( (ptr) gf←c81012)+300)/* var←c69588 */  ))+9) );
            if ((FABS((
                  x585 = (word) ( *( (fPt) ((*  (ptr) pd584 ))))(normal1←v30628, direction←v30712, pd584),  *(float*)&x585
                  ), tf583) < FABS((
                  x588 = (word) ( *( (fPt) ((*  (ptr) pd587 ))))(normal2←v30656, direction←v30712, pd587),  *(float*)&x588
                  ), tf586))) {
SOURCE(41510, 17)
               normal←v21212 = normal1←v30628;
               }
            else {
SOURCE(41537, 16)
               normal←v21212 = normal2←v30656;
               };
            };
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0991 ) = normal←v21212;
   return;
   }

static void CSJointNormal←P5880(formal←c01017, seg←v21272, joint←v21300, point←v21328, hi←v21356)
   word formal←c01017;
   word seg←v21272;
   W2 joint←v21300;
   W2 point←v21328;
   word hi←v21356;
   {
   register ptr gf←c81044 =  (ptr) &globalframe;
   W2 normal←v21400;
   W2 tangent←v21428;
   W2 normal1←v30812;
   W2 normal2←v30840;
   W2 direction←v30868;
   W2 p0←v30896;
   W2 p1←v30924;
   W2 p2←v30952;
   W2 p3←v30980;
   word offset←v31008;
   word data←v31036;
   word path←v31064;
   /* CSJointNormal: */ 
SOURCE(41564, 1038)
SOURCE(41564, 1038)
   normal←v21400.f0 = (*  (ptr) &fc78 );
   normal←v21400.f1 = (*  (ptr) &fc115 );
SOURCE(41564, 1038)
   tangent←v21428.f0 = (*  (ptr) &fc78 );
   tangent←v21428.f1 = (*  (ptr) &fc115 );
SOURCE(41747, 40)
   data←v31036 = XR←Narrow((* (( (ptr) seg←v21272)+24) ), (* (( (ptr) gf←c81044)+19) ));
SOURCE(41789, 36)
   path←v31064 = (word) GetPath←P6780(seg←v21272);
   {
      word var←c74004;
      word var←c74036;
      word var←c74068;
      word var←c74100;
      word var←c74132;
      word var←c74164;
SOURCE(41827, 58)
      if (((* (( (ptr) data←v31036)+1) ) == 6)) {
SOURCE(41856, 10)
         offset←v31008 = 1;
         }
      else {
SOURCE(41875, 10)
         offset←v31008 = 0;
         };
SOURCE(41890, 31)
      {
         word limit589;
         var←c74004 = (* (( (ptr) path←v31064)+4) );
         p0←v30896 = (*  (W2Pt) (( (W8Pt) (( (ptr) var←c74004)+1))+(
               limit589 = (*  (ptr) var←c74004 ),
               BCK(offset←v31008, limit589)
               )) );
         };
SOURCE(41923, 31)
      {
         word limit590;
         var←c74036 = (* (( (ptr) path←v31064)+4) );
         p1←v30924 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c74036)+1))+(
                  limit590 = (*  (ptr) var←c74036 ),
                  BCK(offset←v31008, limit590)
                  )))+2) );
         };
SOURCE(41956, 52)
      {
         word limit591;
         var←c74068 = (((*  (ptr) (* (( (ptr) path←v31064)+4) ) ) - 1) - offset←v31008);
         var←c74100 = (* (( (ptr) path←v31064)+4) );
         p2←v30952 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c74100)+1))+(
                  limit591 = (*  (ptr) var←c74100 ),
                  BCK(var←c74068, limit591)
                  )))+4) );
         };
SOURCE(42010, 52)
      {
         word limit592;
         var←c74132 = (((*  (ptr) (* (( (ptr) path←v31064)+4) ) ) - 1) - offset←v31008);
         var←c74164 = (* (( (ptr) path←v31064)+4) );
         p3←v30980 = (*  (W2Pt) (( (ptr) (( (W8Pt) (( (ptr) var←c74164)+1))+(
                  limit592 = (*  (ptr) var←c74164 ),
                  BCK(var←c74132, limit592)
                  )))+6) );
         };
SOURCE(42064, 298)
      if ((0 != hi←v21356)) {
SOURCE(42077, 43)
         {
            word pd593;
            pd593 = (* (( (ptr) (* (( (ptr) gf←c81044)+300)/* var←c69588 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd593 ))))((word) &tangent←v21428, p3←v30980, p2←v30952, pd593);
            };
SOURCE(42122, 21)
         normal1←v30812.f0 = tangent←v21428.f1;
SOURCE(42145, 22)
         {
            word x594;
            *(float*)&normal1←v30812.f1 =  - (
               x594 = tangent←v21428.f0,  *(float*)&x594
               );
            };
SOURCE(42169, 22)
         {
            word x595;
            *(float*)&normal2←v30840.f0 =  - (
               x595 = tangent←v21428.f1,  *(float*)&x595
               );
            };
SOURCE(42193, 21)
         normal2←v30840.f1 = tangent←v21428.f0;
         }
      else {
SOURCE(42225, 43)
         {
            word pd596;
            pd596 = (* (( (ptr) (* (( (ptr) gf←c81044)+300)/* var←c69588 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd596 ))))((word) &tangent←v21428, p0←v30896, p1←v30924, pd596);
            };
SOURCE(42270, 21)
         normal1←v30812.f0 = tangent←v21428.f1;
SOURCE(42293, 22)
         {
            word x597;
            *(float*)&normal1←v30812.f1 =  - (
               x597 = tangent←v21428.f0,  *(float*)&x597
               );
            };
SOURCE(42317, 22)
         {
            word x598;
            *(float*)&normal2←v30840.f0 =  - (
               x598 = tangent←v21428.f1,  *(float*)&x598
               );
            };
SOURCE(42341, 21)
         normal2←v30840.f1 = tangent←v21428.f0;
         };
SOURCE(42367, 52)
      {
         word pd599;
         pd599 = (* (( (ptr) (* (( (ptr) gf←c81044)+300)/* var←c69588 */  ))+22) );
         (void) ( *( (fPt) ((*  (ptr) pd599 ))))((word) &direction←v30868, joint←v21300, point←v21328, pd599);
         };
SOURCE(42421, 181)
      {
         float tf600;
         word pd601;
         word x602;
         float tf603;
         word pd604;
         word x605;
         pd601 = (* (( (ptr) (* (( (ptr) gf←c81044)+300)/* var←c69588 */  ))+9) );
         pd604 = (* (( (ptr) (* (( (ptr) gf←c81044)+300)/* var←c69588 */  ))+9) );
         if ((FABS((
               x602 = (word) ( *( (fPt) ((*  (ptr) pd601 ))))(normal1←v30812, direction←v30868, pd601),  *(float*)&x602
               ), tf600) < FABS((
               x605 = (word) ( *( (fPt) ((*  (ptr) pd604 ))))(normal2←v30840, direction←v30868, pd604),  *(float*)&x605
               ), tf603))) {
SOURCE(42559, 17)
            normal←v21400 = normal1←v30812;
            }
         else {
SOURCE(42586, 16)
            normal←v21400 = normal2←v30840;
            };
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c01017 ) = normal←v21400;
   (*  (W2Pt) (( (ptr) formal←c01017)+2) ) = tangent←v21428;
   return;
   }

static void CSAddJoint←P5940(formal←c01059, seg←v21488, pos←v21516)
   word formal←c01059;
   word seg←v21488;
   W2 pos←v21516;
   {
   register ptr gf←c81076 =  (ptr) &globalframe;
   word seg1←v21560;
   word seg2←v21588;
   word data←v31108;
   word data1←v31136 = 0;
   word data2←v31164 = 0;
   word oldCPCount←v31192;
   word nearest←v31220;
   word cpsInSeg1←v31248;
   word cpsInSeg2←v31276;
   word coeffs←v31304 = 0;
   /* CSAddJoint: */ 
SOURCE(42609, 1657)
SOURCE(42609, 1657)
   seg1←v21560 = 0;
SOURCE(42609, 1657)
   seg2←v21588 = 0;
SOURCE(42687, 40)
   data←v31108 = XR←Narrow((* (( (ptr) seg←v21488)+24) ), (* (( (ptr) gf←c81076)+19) ));
SOURCE(42760, 50)
   {
      word pd606;
      pd606 = (* (( (ptr) (*  (ptr) seg←v21488 ))+17) );
      oldCPCount←v31192 = (word) ( *( (fPt) ((*  (ptr) pd606 ))))(seg←v21488, pd606);
      };
SOURCE(42812, 46)
   nearest←v31220 = (word) FindNearestPath←P6660((* (( (ptr) data←v31108)+2) ), pos←v21516);
SOURCE(42860, 47)
   cpsInSeg1←v31248 = (word) PathNumToCPIndex←P6720(seg←v21488, nearest←v31220);
SOURCE(42951, 39)
   cpsInSeg2←v31276 = (oldCPCount←v31192 - cpsInSeg1←v31248);
SOURCE(43029, 23)
   seg1←v21560 = (word) CopySegment←P180(seg←v21488);
SOURCE(43054, 23)
   seg2←v21588 = (word) CopySegment←P180(seg←v21488);
SOURCE(43079, 25)
   data1←v31136 = XR←Narrow((* (( (ptr) seg1←v21560)+24) ), (* (( (ptr) gf←c81076)+19) ));
SOURCE(43106, 25)
   data2←v31164 = XR←Narrow((* (( (ptr) seg2←v21588)+24) ), (* (( (ptr) gf←c81076)+19) ));
SOURCE(43133, 62)
   if (((* (( (ptr) data←v31108)+1) ) == 3)) {
SOURCE(43160, 35)
      (* (( (ptr) data2←v31164)+1) ) = 2;
      (* (( (ptr) data1←v31136)+1) ) = 2;
      };
SOURCE(43226, 72)
   {
      word var←c74196;
      {
         word var←c74228;
         word var←c74260;
         word var←c74292;
         {
            word idx607;
            var←c74228 = (
               idx607 = (word) ((*  (ptr) (*  (ptr) data←v31108 ) ) - cpsInSeg2←v31276),
               BCK(idx607, 33554431)
               );
            };
         var←c74260 = ((word) var←c74228 << 3);
         var←c74292 = XR←NewObject((4 + var←c74260), (* (( (ptr) gf←c81076)+24) ));
         (*  (ptr) var←c74292 ) = var←c74228;
         var←c74196 = var←c74292;
         };
      (*  (ptr) data1←v31136 ) = var←c74196;
      };
SOURCE(43300, 56)
   {
      word var←c74324;
      {
         word var←c74356;
         word var←c74388;
         word var←c74420;
         var←c74356 = BCK(cpsInSeg1←v31248, 16777215);
         var←c74388 = ((word) var←c74356 << 4);
         var←c74420 = XR←NewObject((4 + var←c74388), (* (( (ptr) gf←c81076)+23) ));
         (*  (ptr) var←c74420 ) = var←c74356;
         var←c74324 = var←c74420;
         };
      (* (( (ptr) data1←v31136)+3) ) = var←c74324;
      };
SOURCE(43358, 33)
   (void) CSEndPointSet←P6180(seg1←v21560, 1, (*  (W2Pt) (( (ptr) seg←v21488)+9) ));
SOURCE(43393, 31)
   (void) CSEndPointSet←P6180(seg1←v21560, 0, pos←v21516);
SOURCE(43426, 13)
   (*  (W2Pt) (( (ptr) seg1←v21560)+11) ) = pos←v21516;
SOURCE(43441, 128)
   {
      register word i←v31348 = 0;
      register word noName←c74452;
      noName←c74452 = cpsInSeg1←v31248;
      if (( (int)i←v31348 >=  (int)noName←c74452)) {
         goto lab←L100086;
         };
      lab←L100089: ;
SOURCE(43472, 53)
      {
         W2 var←c74484;
         (void) CSControlPointGet←P5580((word) &var←c74484, seg←v21488, SGNCK(i←v31348));
         (void) CSControlPointSet←P6120(seg1←v21560, SGNCK(i←v31348), var←c74484);
         };
SOURCE(43527, 42)
      {
         word var←c74548;
         var←c74548 = (* (( (ptr) data1←v31136)+3) );
         {
            word var←c74516;
            var←c74516 = (* (( (ptr) data←v31108)+3) );
            {
               word limit608;
               word limit609;
               (* (( (W4Pt) (( (ptr) var←c74548)+1))+(
                     limit608 = (*  (ptr) var←c74548 ),
                     BCK(i←v31348, limit608)
                     )) ) = (* (( (W4Pt) (( (ptr) var←c74516)+1))+(
                     limit609 = (*  (ptr) var←c74516 ),
                     BCK(i←v31348, limit609)
                     )) );
               };
            };
         };
      i←v31348 = (i←v31348 + 1);
      if (( (int)i←v31348 <  (int)noName←c74452)) {
         goto lab←L100089;
         };
      lab←L100086: ;
      };
SOURCE(43580, 55)
   {
      word pd610;
      pd610 = (* (( (ptr) (* (( (ptr) gf←c81076)+290)/* var←c65460 */  ))+8) );
      coeffs←v31304 = (word) ( *( (fPt) ((*  (ptr) pd610 ))))((*  (ptr) data1←v31136 ), (* (( (ptr) data1←v31136)+1) ), pd610);
      };
SOURCE(43637, 52)
   {
      word pd611;
      pd611 = (* (( (ptr) (* (( (ptr) gf←c81076)+291)/* var←c65492 */  ))+4) );
      (* (( (ptr) data1←v31136)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd611 ))))(coeffs←v31304, 0, pd611);
      };
SOURCE(43691, 72)
   {
      word var←c74580;
      {
         word var←c74612;
         word var←c74644;
         word var←c74676;
         {
            word idx612;
            var←c74612 = (
               idx612 = (word) ((*  (ptr) (*  (ptr) data←v31108 ) ) - cpsInSeg1←v31248),
               BCK(idx612, 33554431)
               );
            };
         var←c74644 = ((word) var←c74612 << 3);
         var←c74676 = XR←NewObject((4 + var←c74644), (* (( (ptr) gf←c81076)+24) ));
         (*  (ptr) var←c74676 ) = var←c74612;
         var←c74580 = var←c74676;
         };
      (*  (ptr) data2←v31164 ) = var←c74580;
      };
SOURCE(43765, 56)
   {
      word var←c74708;
      {
         word var←c74740;
         word var←c74772;
         word var←c74804;
         var←c74740 = BCK(cpsInSeg2←v31276, 16777215);
         var←c74772 = ((word) var←c74740 << 4);
         var←c74804 = XR←NewObject((4 + var←c74772), (* (( (ptr) gf←c81076)+23) ));
         (*  (ptr) var←c74804 ) = var←c74740;
         var←c74708 = var←c74804;
         };
      (* (( (ptr) data2←v31164)+3) ) = var←c74708;
      };
SOURCE(43823, 30)
   (void) CSEndPointSet←P6180(seg2←v21588, 1, pos←v21516);
SOURCE(43855, 34)
   (void) CSEndPointSet←P6180(seg2←v21588, 0, (*  (W2Pt) (( (ptr) seg←v21488)+11) ));
SOURCE(43891, 13)
   (*  (W2Pt) (( (ptr) seg2←v21588)+9) ) = pos←v21516;
SOURCE(43906, 157)
   {
      register word i←v31392;
      register word noName←c74836;
      i←v31392 = cpsInSeg1←v31248;
      noName←c74836 = oldCPCount←v31192;
      if (( (int)i←v31392 >=  (int)noName←c74836)) {
         goto lab←L100090;
         };
      lab←L100093: ;
SOURCE(43946, 63)
      {
         W2 var←c74868;
         (void) CSControlPointGet←P5580((word) &var←c74868, seg←v21488, SGNCK(i←v31392));
         (void) CSControlPointSet←P6120(seg2←v21588, SGNCK((i←v31392 - cpsInSeg1←v31248)), var←c74868);
         };
SOURCE(44011, 52)
      {
         word var←c74932;
         word var←c74964;
         var←c74932 = (i←v31392 - cpsInSeg1←v31248);
         var←c74964 = (* (( (ptr) data2←v31164)+3) );
         {
            word var←c74900;
            var←c74900 = (* (( (ptr) data←v31108)+3) );
            {
               word limit613;
               word limit614;
               (* (( (W4Pt) (( (ptr) var←c74964)+1))+(
                     limit613 = (*  (ptr) var←c74964 ),
                     BCK(var←c74932, limit613)
                     )) ) = (* (( (W4Pt) (( (ptr) var←c74900)+1))+(
                     limit614 = (*  (ptr) var←c74900 ),
                     BCK(i←v31392, limit614)
                     )) );
               };
            };
         };
      i←v31392 = (i←v31392 + 1);
      if (( (int)i←v31392 <  (int)noName←c74836)) {
         goto lab←L100093;
         };
      lab←L100090: ;
      };
SOURCE(44074, 55)
   {
      word pd615;
      pd615 = (* (( (ptr) (* (( (ptr) gf←c81076)+290)/* var←c65460 */  ))+8) );
      coeffs←v31304 = (word) ( *( (fPt) ((*  (ptr) pd615 ))))((*  (ptr) data2←v31164 ), (* (( (ptr) data2←v31164)+1) ), pd615);
      };
SOURCE(44131, 52)
   {
      word pd616;
      pd616 = (* (( (ptr) (* (( (ptr) gf←c81076)+291)/* var←c65492 */  ))+4) );
      (* (( (ptr) data2←v31164)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd616 ))))(coeffs←v31304, 0, pd616);
      };
SOURCE(44185, 22)
   (void) UpdateCSBoundBox←P4860(seg1←v21560);
SOURCE(44244, 22)
   (void) UpdateCSBoundBox←P4860(seg2←v21588);
   /* removed tail goto */ 
   (*  (ptr) formal←c01059 ) = seg1←v21560;
   (* (( (ptr) formal←c01059)+1) ) = seg2←v21588;
   return;
   }

static word CSControlPointAdd←P6000(seg←v21648, pos←v21676)
   word seg←v21648;
   W2 pos←v21676;
   {
   register ptr gf←c81108 =  (ptr) &globalframe;
   word var←c21720;
   word data←v31436;
   word oldCPCount←v31464;
   word nearest←v31492;
   word newCPIndex←v31520;
   word newSeg←v31548;
   word newSegData←v31576;
   word coeffs←v31604 = 0;
   /* CSControlPointAdd: */ 
SOURCE(44307, 1465)
SOURCE(44387, 40)
   data←v31436 = XR←Narrow((* (( (ptr) seg←v21648)+24) ), (* (( (ptr) gf←c81108)+19) ));
SOURCE(44429, 50)
   {
      word pd617;
      pd617 = (* (( (ptr) (*  (ptr) seg←v21648 ))+17) );
      oldCPCount←v31464 = (word) ( *( (fPt) ((*  (ptr) pd617 ))))(seg←v21648, pd617);
      };
SOURCE(44481, 46)
   nearest←v31492 = (word) FindNearestPath←P6660((* (( (ptr) data←v31436)+2) ), pos←v21676);
SOURCE(44529, 48)
   newCPIndex←v31520 = (word) PathNumToCPIndex←P6720(seg←v21648, nearest←v31492);
SOURCE(44664, 34)
   newSeg←v31548 = (word) CopySegment←P180(seg←v21648);
SOURCE(44700, 49)
   newSegData←v31576 = XR←Narrow((* (( (ptr) newSeg←v31548)+24) ), (* (( (ptr) gf←c81108)+19) ));
SOURCE(44788, 69)
   {
      word var←c74996;
      {
         word var←c75028;
         word var←c75060;
         word var←c75092;
         {
            word idx618;
            var←c75028 = (
               idx618 = (word) ((*  (ptr) (*  (ptr) data←v31436 ) ) + 1),
               BCK(idx618, 33554431)
               );
            };
         var←c75060 = ((word) var←c75028 << 3);
         var←c75092 = XR←NewObject((4 + var←c75060), (* (( (ptr) gf←c81108)+24) ));
         (*  (ptr) var←c75092 ) = var←c75028;
         var←c74996 = var←c75092;
         };
      (*  (ptr) newSegData←v31576 ) = var←c74996;
      };
SOURCE(44859, 64)
   {
      word var←c75124;
      {
         word var←c75156;
         word var←c75188;
         word var←c75220;
         var←c75156 = BCK((oldCPCount←v31464 + 1), 16777215);
         var←c75188 = ((word) var←c75156 << 4);
         var←c75220 = XR←NewObject((4 + var←c75188), (* (( (ptr) gf←c81108)+23) ));
         (*  (ptr) var←c75220 ) = var←c75156;
         var←c75124 = var←c75220;
         };
      (* (( (ptr) newSegData←v31576)+3) ) = var←c75124;
      };
SOURCE(44925, 35)
   (void) CSEndPointSet←P6180(newSeg←v31548, 1, (*  (W2Pt) (( (ptr) seg←v21648)+9) ));
SOURCE(44962, 36)
   (void) CSEndPointSet←P6180(newSeg←v31548, 0, (*  (W2Pt) (( (ptr) seg←v21648)+11) ));
SOURCE(45000, 136)
   {
      register word i←v31648 = 0;
      register word noName←c75252;
      noName←c75252 = newCPIndex←v31520;
      if (( (int)i←v31648 >=  (int)noName←c75252)) {
         goto lab←L100094;
         };
      lab←L100097: ;
SOURCE(45032, 55)
      {
         W2 var←c75284;
         (void) CSControlPointGet←P5580((word) &var←c75284, seg←v21648, SGNCK(i←v31648));
         (void) CSControlPointSet←P6120(newSeg←v31548, SGNCK(i←v31648), var←c75284);
         };
SOURCE(45089, 47)
      {
         word var←c75348;
         var←c75348 = (* (( (ptr) newSegData←v31576)+3) );
         {
            word var←c75316;
            var←c75316 = (* (( (ptr) data←v31436)+3) );
            {
               word limit619;
               word limit620;
               (* (( (W4Pt) (( (ptr) var←c75348)+1))+(
                     limit619 = (*  (ptr) var←c75348 ),
                     BCK(i←v31648, limit619)
                     )) ) = (* (( (W4Pt) (( (ptr) var←c75316)+1))+(
                     limit620 = (*  (ptr) var←c75316 ),
                     BCK(i←v31648, limit620)
                     )) );
               };
            };
         };
      i←v31648 = (i←v31648 + 1);
      if (( (int)i←v31648 <  (int)noName←c75252)) {
         goto lab←L100097;
         };
      lab←L100094: ;
      };
SOURCE(45147, 42)
   (void) CSControlPointSet←P6120(newSeg←v31548, SGNCK(newCPIndex←v31520), pos←v21676);
SOURCE(45191, 44)
   (void) CSFieldSet←P5460(newSeg←v31548, SGNCK(newCPIndex←v31520), 1, 0);
SOURCE(45273, 42)
   (void) CSFieldSet←P5460(newSeg←v31548, SGNCK(newCPIndex←v31520), 0, 1);
SOURCE(45317, 45)
   (void) CSFieldSet←P5460(newSeg←v31548, SGNCK(newCPIndex←v31520), 0, 2);
SOURCE(45364, 44)
   (void) CSFieldSet←P5460(newSeg←v31548, SGNCK(newCPIndex←v31520), 0, 3);
SOURCE(45410, 149)
   {
      register word i←v31692;
      register word noName←c75380;
      i←v31692 = newCPIndex←v31520;
      noName←c75380 = oldCPCount←v31464;
      if (( (int)i←v31692 >=  (int)noName←c75380)) {
         goto lab←L100098;
         };
      lab←L100101: ;
SOURCE(45451, 57)
      {
         W2 var←c75412;
         (void) CSControlPointGet←P5580((word) &var←c75412, seg←v21648, SGNCK(i←v31692));
         (void) CSControlPointSet←P6120(newSeg←v31548, SGNCK((i←v31692 + 1)), var←c75412);
         };
SOURCE(45510, 49)
      {
         word var←c75476;
         word var←c75508;
         var←c75476 = (i←v31692 + 1);
         var←c75508 = (* (( (ptr) newSegData←v31576)+3) );
         {
            word var←c75444;
            var←c75444 = (* (( (ptr) data←v31436)+3) );
            {
               word limit621;
               word limit622;
               (* (( (W4Pt) (( (ptr) var←c75508)+1))+(
                     limit621 = (*  (ptr) var←c75508 ),
                     BCK(var←c75476, limit621)
                     )) ) = (* (( (W4Pt) (( (ptr) var←c75444)+1))+(
                     limit622 = (*  (ptr) var←c75444 ),
                     BCK(i←v31692, limit622)
                     )) );
               };
            };
         };
      i←v31692 = (i←v31692 + 1);
      if (( (int)i←v31692 <  (int)noName←c75380)) {
         goto lab←L100101;
         };
      lab←L100098: ;
      };
SOURCE(45570, 65)
   {
      word pd623;
      pd623 = (* (( (ptr) (* (( (ptr) gf←c81108)+290)/* var←c65460 */  ))+8) );
      coeffs←v31604 = (word) ( *( (fPt) ((*  (ptr) pd623 ))))((*  (ptr) newSegData←v31576 ), (* (( (ptr) newSegData←v31576)+1) ), pd623)
      ;
      };
SOURCE(45637, 57)
   {
      word pd624;
      pd624 = (* (( (ptr) (* (( (ptr) gf←c81108)+291)/* var←c65492 */  ))+4) );
      (* (( (ptr) newSegData←v31576)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd624 ))))(coeffs←v31604, 0, pd624);
      };
SOURCE(45696, 24)
   (void) UpdateCSBoundBox←P4860(newSeg←v31548);
SOURCE(45757, 15)
   return(newSeg←v31548);
   }

static word CSControlPointDelete←P6060(seg←v21780, cpVec←v21808)
   word seg←v21780;
   word cpVec←v21808;
   {
   W6 var←c81140;
   register ptr gf←c81172 =  (ptr) &globalframe;
   word var←c21852;
   /* declaration of var←c75540 skipped */ 
   word data←v31764;
   word currentCPIndex←v31792 = 0;
   word oldCPCount←v31820;
   word cpSelectedCount←v31848;
   word newSeg←v31876;
   word coeffs←v31904 = 0;
   word newSegData←v31932;
   /* CSControlPointDelete: */ 
SOURCE(45778, 1234)
   {
      word tmpAddr625;
      tmpAddr625 = (word) (( (ptr) &var←c81140)+4)/* var←c75540 */ ;
      (*  (ptr) tmpAddr625 ) = ( ((word)  (fPt) CountSelected←P8856) );
      (* (( (ptr) tmpAddr625) + 1) ) = 1;
      };
SOURCE(46041, 40)
   data←v31764 = XR←Narrow((* (( (ptr) seg←v21780)+24) ), (* (( (ptr) gf←c81172)+19) ));
SOURCE(46108, 50)
   {
      word pd626;
      pd626 = (* (( (ptr) (*  (ptr) seg←v21780 ))+17) );
      oldCPCount←v31820 = (word) ( *( (fPt) ((*  (ptr) pd626 ))))(seg←v21780, pd626);
      };
SOURCE(46160, 43)
   cpSelectedCount←v31848 = (word) CountSelected←P8856(cpVec←v21808, (word) (( (bPt) &var←c81140)+16)/* var←c75540 */ );
SOURCE(46205, 34)
   newSeg←v31876 = (word) CopySegment←P180(seg←v21780);
SOURCE(46278, 49)
   newSegData←v31932 = XR←Narrow((* (( (ptr) newSeg←v31876)+24) ), (* (( (ptr) gf←c81172)+19) ));
SOURCE(46329, 83)
   {
      word var←c75572;
      {
         word var←c75604;
         word var←c75636;
         word var←c75668;
         {
            word idx627;
            var←c75604 = (
               idx627 = (word) ((*  (ptr) (*  (ptr) data←v31764 ) ) - cpSelectedCount←v31848),
               BCK(idx627, 33554431)
               );
            };
         var←c75636 = ((word) var←c75604 << 3);
         var←c75668 = XR←NewObject((4 + var←c75636), (* (( (ptr) gf←c81172)+24) ));
         (*  (ptr) var←c75668 ) = var←c75604;
         var←c75572 = var←c75668;
         };
      (*  (ptr) newSegData←v31932 ) = var←c75572;
      };
SOURCE(46414, 83)
   {
      word var←c75700;
      {
         word var←c75732;
         word var←c75764;
         word var←c75796;
         {
            word idx628;
            var←c75732 = (
               idx628 = (word) ((*  (ptr) (*  (ptr) data←v31764 ) ) - cpSelectedCount←v31848),
               BCK(idx628, 16777215)
               );
            };
         var←c75764 = ((word) var←c75732 << 4);
         var←c75796 = XR←NewObject((4 + var←c75764), (* (( (ptr) gf←c81172)+23) ));
         (*  (ptr) var←c75796 ) = var←c75732;
         var←c75700 = var←c75796;
         };
      (* (( (ptr) newSegData←v31932)+3) ) = var←c75700;
      };
SOURCE(46499, 35)
   (void) CSEndPointSet←P6180(newSeg←v31876, 1, (*  (W2Pt) (( (ptr) seg←v21780)+9) ));
SOURCE(46536, 36)
   (void) CSEndPointSet←P6180(newSeg←v31876, 0, (*  (W2Pt) (( (ptr) seg←v21780)+11) ));
SOURCE(46574, 222)
   {
      register word i←v32080 = 0;
      register word noName←c75828;
      noName←c75828 = oldCPCount←v31820;
      if (( (int)i←v32080 >=  (int)noName←c75828)) {
         goto lab←L100102;
         };
      lab←L100105: ;
SOURCE(46606, 190)
      {
         word limit629;
         if ( ! XR←ExtractField(cpVec←v21808, 32 + (word) (
               limit629 = (*  (ptr) cpVec←v21808 ),
               BCK(i←v32080, limit629)
               ), 1)) {
SOURCE(46629, 68)
            {
               W2 var←c75860;
               (void) CSControlPointGet←P5580((word) &var←c75860, seg←v21780, SGNCK(i←v32080));
               (void) CSControlPointSet←P6120(newSeg←v31876, SGNCK(currentCPIndex←v31792), var←c75860);
               };
SOURCE(46699, 60)
            {
               word var←c75924;
               var←c75924 = (* (( (ptr) newSegData←v31932)+3) );
               {
                  word var←c75892;
                  var←c75892 = (* (( (ptr) data←v31764)+3) );
                  {
                     word limit630;
                     word limit631;
                     (* (( (W4Pt) (( (ptr) var←c75924)+1))+(
                           limit630 = (*  (ptr) var←c75924 ),
                           BCK(currentCPIndex←v31792, limit630)
                           )) ) = (* (( (W4Pt) (( (ptr) var←c75892)+1))+(
                           limit631 = (*  (ptr) var←c75892 ),
                           BCK(i←v32080, limit631)
                           )) );
                     };
                  };
               };
SOURCE(46761, 35)
            currentCPIndex←v31792 = (currentCPIndex←v31792 + 1);
            };
         };
      i←v32080 = (i←v32080 + 1);
      if (( (int)i←v32080 <  (int)noName←c75828)) {
         goto lab←L100105;
         };
      lab←L100102: ;
      };
SOURCE(46810, 65)
   {
      word pd632;
      pd632 = (* (( (ptr) (* (( (ptr) gf←c81172)+290)/* var←c65460 */  ))+8) );
      coeffs←v31904 = (word) ( *( (fPt) ((*  (ptr) pd632 ))))((*  (ptr) newSegData←v31932 ), (* (( (ptr) newSegData←v31932)+1) ), pd632)
      ;
      };
SOURCE(46877, 57)
   {
      word pd633;
      pd633 = (* (( (ptr) (* (( (ptr) gf←c81172)+291)/* var←c65492 */  ))+4) );
      (* (( (ptr) newSegData←v31932)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd633 ))))(coeffs←v31904, 0, pd633);
      };
SOURCE(46936, 24)
   (void) UpdateCSBoundBox←P4860(newSeg←v31876);
SOURCE(46997, 15)
   return(newSeg←v31876);
   }

static word CountSelected←P8856(bitVec←v32008, formal←c81204)
   word bitVec←v32008;
   word formal←c81204;
   {
   word selectedCount←v32052;
   formal←c81204 = (formal←c81204 - 16);
   /* CountSelected: */ 
SOURCE(45867, 160)
SOURCE(45867, 160)
   selectedCount←v32052 = 0;
SOURCE(45944, 83)
   {
      register word i←v32124 = 0;
      register word noName←c75956;
      noName←c75956 = (*  (ptr) bitVec←v32008 );
      if (( (int)i←v32124 >=  (int)noName←c75956)) {
         goto lab←L100106;
         };
      lab←L100109: ;
SOURCE(45976, 51)
      {
         word limit634;
         if (XR←ExtractField(bitVec←v32008, 32 + (word) (
               limit634 = (*  (ptr) bitVec←v32008 ),
               BCK(i←v32124, limit634)
               ), 1)) {
SOURCE(45994, 33)
            selectedCount←v32052 = (selectedCount←v32052 + 1);
            };
         };
      i←v32124 = (i←v32124 + 1);
      if (( (int)i←v32124 <  (int)noName←c75956)) {
         goto lab←L100109;
         };
      lab←L100106: ;
      };
SOURCE(45867, 160)
   return(selectedCount←v32052);
   }

static void CSControlPointSet←P6120(seg←v21912, controlPointNum←v21940, point←v21968)
   word seg←v21912;
   word controlPointNum←v21940;
   W2 point←v21968;
   {
   register ptr gf←c81236 =  (ptr) &globalframe;
   word data←v32168;
   /* CSControlPointSet: */ 
SOURCE(47017, 271)
SOURCE(47096, 40)
   data←v32168 = XR←Narrow((* (( (ptr) seg←v21912)+24) ), (* (( (ptr) gf←c81236)+19) ));
SOURCE(47138, 150)
   {
      word var←c75988;
      var←c75988 = (* (( (ptr) data←v32168)+1) );
      switch (var←c75988) {
         case 2: case 3: 
SOURCE(47183, 46)
            {
               W2 var←c76020;
               (void) PointToFP←P6600((word) &var←c76020, point←v21968);
               {
                  word var←c76052;
                  word var←c76084;
                  var←c76052 = (controlPointNum←v21940 + 1);
                  var←c76084 = (*  (ptr) data←v32168 );
                  {
                     word limit635;
                     (* (( (W2Pt) (( (ptr) var←c76084)+1))+(
                           limit635 = (*  (ptr) var←c76084 ),
                           BCK(var←c76052, limit635)
                           )) ) = var←c76020;
                     };
                  };
               };
            break;
         case 6: 
SOURCE(47242, 46)
            {
               W2 var←c76116;
               (void) PointToFP←P6600((word) &var←c76116, point←v21968);
               {
                  word var←c76148;
                  word var←c76180;
                  var←c76148 = (controlPointNum←v21940 + 3);
                  var←c76180 = (*  (ptr) data←v32168 );
                  {
                     word limit636;
                     (* (( (W2Pt) (( (ptr) var←c76180)+1))+(
                           limit636 = (*  (ptr) var←c76180 ),
                           BCK(var←c76148, limit636)
                           )) ) = var←c76116;
                     };
                  };
               };
            break;
         default: 
SOURCE(47301, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static void CSEndPointSet←P6180(seg←v22028, lo←v22056, point←v22084)
   word seg←v22028;
   word lo←v22056;
   W2 point←v22084;
   {
   register ptr gf←c81268 =  (ptr) &globalframe;
   word data←v32212;
   /* CSEndPointSet: */ 
SOURCE(47312, 508)
SOURCE(47375, 40)
   data←v32212 = XR←Narrow((* (( (ptr) seg←v22028)+24) ), (* (( (ptr) gf←c81268)+19) ));
SOURCE(47417, 403)
   {
      word var←c76212;
      var←c76212 = (* (( (ptr) data←v32212)+1) );
      switch (var←c76212) {
         case 2: 
SOURCE(47454, 93)
            if ((0 != lo←v22056)) {
SOURCE(47465, 36)
               {
                  W2 var←c76244;
                  (void) PointToFP←P6600((word) &var←c76244, point←v22084);
                  {
                     word var←c76276;
                     var←c76276 = (*  (ptr) data←v32212 );
                     {
                        word limit637;
                        (* (( (W2Pt) (( (ptr) var←c76276)+1))+(
/*1*/   limit637 = (*  (ptr) var←c76276 ),
/*1*/   BCK(0, limit637)
/*1*/   )) ) = var←c76244;
                        };
                     };
                  };
               }
            else {
SOURCE(47501, 46)
               {
                  W2 var←c76308;
                  (void) PointToFP←P6600((word) &var←c76308, point←v22084);
                  {
                     word var←c76340;
                     word var←c76372;
                     var←c76340 = ((*  (ptr) (*  (ptr) data←v32212 ) ) - 1);
                     var←c76372 = (*  (ptr) data←v32212 );
                     {
                        word limit638;
                        (* (( (W2Pt) (( (ptr) var←c76372)+1))+(
/*1*/   limit638 = (*  (ptr) var←c76372 ),
/*1*/   BCK(var←c76340, limit638)
/*1*/   )) ) = var←c76308;
                        };
                     };
                  };
               };
            break;
         case 3: 
SOURCE(47564, 60)
            {
               W2 var←c76404;
               (void) PointToFP←P6600((word) &var←c76404, point←v22084);
               {
                  word var←c76436;
                  word var←c76468;
                  var←c76436 = ((*  (ptr) (*  (ptr) data←v32212 ) ) - 1);
                  var←c76468 = (*  (ptr) data←v32212 );
                  {
                     word limit639;
                     (* (( (W2Pt) (( (ptr) var←c76468)+1))+(
                           limit639 = (*  (ptr) var←c76468 ),
                           BCK(var←c76436, limit639)
                           )) ) = var←c76404;
                     };
                  };
               {
                  word var←c76500;
                  var←c76500 = (*  (ptr) data←v32212 );
                  {
                     word limit640;
                     (* (( (W2Pt) (( (ptr) var←c76500)+1))+(
                           limit640 = (*  (ptr) var←c76500 ),
                           BCK(0, limit640)
                           )) ) = var←c76404;
                     };
                  };
               };
            break;
         case 6: 
SOURCE(47639, 181)
            if ((0 != lo←v22056)) {
SOURCE(47650, 64)
               {
                  W2 var←c76532;
                  (void) PointToFP←P6600((word) &var←c76532, point←v22084);
                  {
                     word var←c76564;
                     var←c76564 = (*  (ptr) data←v32212 );
                     {
                        word limit641;
                        (* (( (W2Pt) (( (ptr) var←c76564)+1))+(
/*1*/   limit641 = (*  (ptr) var←c76564 ),
/*1*/   BCK(2, limit641)
/*1*/   )) ) = var←c76532;
                        };
                     };
                  {
                     word var←c76596;
                     var←c76596 = (*  (ptr) data←v32212 );
                     {
                        word limit642;
                        (* (( (W2Pt) (( (ptr) var←c76596)+1))+(
/*1*/   limit642 = (*  (ptr) var←c76596 ),
/*1*/   BCK(1, limit642)
/*1*/   )) ) = var←c76532;
                        };
                     };
                  {
                     word var←c76628;
                     var←c76628 = (*  (ptr) data←v32212 );
                     {
                        word limit643;
                        (* (( (W2Pt) (( (ptr) var←c76628)+1))+(
/*1*/   limit643 = (*  (ptr) var←c76628 ),
/*1*/   BCK(0, limit643)
/*1*/   )) ) = var←c76532;
                        };
                     };
                  };
               }
            else {
SOURCE(47714, 106)
               {
                  W2 var←c76660;
                  (void) PointToFP←P6600((word) &var←c76660, point←v22084);
                  {
                     word var←c76692;
                     word var←c76724;
                     var←c76692 = ((*  (ptr) (*  (ptr) data←v32212 ) ) - 3);
                     var←c76724 = (*  (ptr) data←v32212 );
                     {
                        word limit644;
                        (* (( (W2Pt) (( (ptr) var←c76724)+1))+(
/*1*/   limit644 = (*  (ptr) var←c76724 ),
/*1*/   BCK(var←c76692, limit644)
/*1*/   )) ) = var←c76660;
                        };
                     };
                  {
                     word var←c76756;
                     word var←c76788;
                     var←c76756 = ((*  (ptr) (*  (ptr) data←v32212 ) ) - 2);
                     var←c76788 = (*  (ptr) data←v32212 );
                     {
                        word limit645;
                        (* (( (W2Pt) (( (ptr) var←c76788)+1))+(
/*1*/   limit645 = (*  (ptr) var←c76788 ),
/*1*/   BCK(var←c76756, limit645)
/*1*/   )) ) = var←c76660;
                        };
                     };
                  {
                     word var←c76820;
                     word var←c76852;
                     var←c76820 = ((*  (ptr) (*  (ptr) data←v32212 ) ) - 1);
                     var←c76852 = (*  (ptr) data←v32212 );
                     {
                        word limit646;
                        (* (( (W2Pt) (( (ptr) var←c76852)+1))+(
/*1*/   limit646 = (*  (ptr) var←c76852 ),
/*1*/   BCK(var←c76820, limit646)
/*1*/   )) ) = var←c76660;
                        };
                     };
                  };
               };
            break;
         default: 
SOURCE(47836, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static void CurveBoundBox←P6240(seg←v22144, bBox←v22172, boundsOK←v22200)
   word seg←v22144;
   word bBox←v22172;
   word boundsOK←v22200;
   {
   register ptr gf←c81300 =  (ptr) &globalframe;
   word path←v32256;
   W4 r←v32284;
   /* CurveBoundBox: */ 
SOURCE(47847, 298)
SOURCE(47926, 36)
   path←v32256 = (word) GetPath←P6780(seg←v22144);
SOURCE(47985, 50)
   if ((0 == boundsOK←v22200)) {
SOURCE(48006, 29)
      {
         word pd647;
         pd647 = (* (( (ptr) (* (( (ptr) gf←c81300)+291)/* var←c65492 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd647 ))))(path←v32256, pd647);
         };
      };
SOURCE(48069, 15)
   r←v32284 = (*  (W4Pt) path←v32256 );
SOURCE(48086, 59)
   {
      word pd648;
      word x649;
      word x650;
      float tf651;
      word x652;
      word x653;
      float tf654;
      pd648 = (* (( (ptr) (* (( (ptr) gf←c81300)+287)/* var←c65172 */  ))+18) );
      (void) ( *( (fPt) ((*  (ptr) pd648 ))))(bBox←v22172, r←v32284.f0, r←v32284.f1, (
            tf651 = (
               x649 = r←v32284.f0,  *(float*)&x649
               ) + (
               x650 = r←v32284.f2,  *(float*)&x650
               ),  *(word*)&tf651
            ), (
            tf654 = (
               x652 = r←v32284.f1,  *(float*)&x652
               ) + (
               x653 = r←v32284.f3,  *(float*)&x653
               ),  *(word*)&tf654
            ), pd648);
      };
   }

static void CurveBuildPath←P6300(seg←v22260, lineTo←v22288, curveTo←v22316, conicTo←v22344, arcTo←v22372)
   word seg←v22260;
   word lineTo←v22288;
   word curveTo←v22316;
   word conicTo←v22344;
   word arcTo←v22372;
   {
   W6 var←c81332;
   register ptr gf←c81364 =  (ptr) &globalframe;
   /* declaration of var←c76884 skipped */ 
   word path←v32328;
   word moveTo←v32356;
   /* CurveBuildPath: */ 
SOURCE(48150, 287)
   {
      word tmpAddr655;
      tmpAddr655 = (word) (( (ptr) &var←c81332)+4)/* var←c76884 */ ;
      (*  (ptr) tmpAddr655 ) = ( ((word)  (fPt) NoName←Q9012) );
      (* (( (ptr) tmpAddr655) + 1) ) = 1;
      };
SOURCE(48316, 36)
   path←v32328 = (word) GetPath←P6780(seg←v22260);
SOURCE(48354, 32)
   moveTo←v32356 = (word) (( (bPt) &var←c81332)+16)/* var←c76884 */ ;
SOURCE(48390, 47)
   {
      word pd656;
      pd656 = (* (( (ptr) (* (( (ptr) gf←c81364)+291)/* var←c65492 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd656 ))))(path←v32328, moveTo←v32356, curveTo←v22316, pd656);
      };
   }

static void NoName←Q9012(p←v59592, formal←c81396)
   W2 p←v59592;
   word formal←c81396;
   {
   formal←c81396 = (formal←c81396 - 16);
   /* : */ 
   }

static void CurveClosestPoint←P6360(formal←c01186, seg←v22432, testPoint←v22460, tolerance←v22488)
   word formal←c01186;
   word seg←v22432;
   W2 testPoint←v22460;
   word tolerance←v22488;
   {
   register ptr gf←c81428 =  (ptr) &globalframe;
   W2 point←v22532;
   word success←v22560;
   word path←v32400 = 0;
   /* CurveClosestPoint: */ 
SOURCE(48465, 560)
SOURCE(48604, 216)
   if ((0 != (* (( (ptr) gf←c81428)+8)/* useBBox←v7956 */  ))) {
SOURCE(48620, 202)
      {
         W6 bigBox←v32444;
SOURCE(48622, 132)
         {
            word x657;
            word x658;
            *(float*)&bigBox←v32444.f0 = (
               x657 = (*  (ptr) (* (( (ptr) seg←v22432)+21) ) ),  *(float*)&x657
               ) - (
               x658 = tolerance←v22488,  *(float*)&x658
               );
            };
         {
            word x659;
            word x660;
            *(float*)&bigBox←v32444.f1 = (
               x659 = (* (( (ptr) (* (( (ptr) seg←v22432)+21) ))+1) ),  *(float*)&x659
               ) - (
               x660 = tolerance←v22488,  *(float*)&x660
               );
            };
         {
            word x661;
            word x662;
            *(float*)&bigBox←v32444.f2 = (
               x661 = (* (( (ptr) (* (( (ptr) seg←v22432)+21) ))+2) ),  *(float*)&x661
               ) + (
               x662 = tolerance←v22488,  *(float*)&x662
               );
            };
         {
            word x663;
            word x664;
            *(float*)&bigBox←v32444.f3 = (
               x663 = (* (( (ptr) (* (( (ptr) seg←v22432)+21) ))+3) ),  *(float*)&x663
               ) + (
               x664 = tolerance←v22488,  *(float*)&x664
               );
            };
         bigBox←v32444.f4 = 0;
         bigBox←v32444.f5 = 0;
SOURCE(48756, 64)
         if ((0 == (word) PointIsInBox←P6420(testPoint←v22460, bigBox←v32444))) {
SOURCE(48800, 20)
            point←v22532.f0 = (*  (ptr) &fc78 );
            point←v22532.f1 = (*  (ptr) &fc78 );
            success←v22560 = 0;
            goto lab←L100110;
            };
         };
      };
SOURCE(48825, 49)
   {
      word pd665;
      pd665 = (* (( (ptr) (* (( (ptr) gf←c81428)+304)/* var←c76980 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd665 ))))((* (( (ptr) gf←c81428)+45) ), (* (( (ptr) gf←c81428)+46) ), pd665);
      };
SOURCE(48876, 19)
   path←v32400 = (word) GetPath←P6780(seg←v22432);
SOURCE(48897, 78)
   {
      W3 var←c77012;
      {
         word pd666;
         pd666 = (* (( (ptr) (* (( (ptr) gf←c81428)+291)/* var←c65492 */  ))+14) );
         (void) ( *( (fPt) ((*  (ptr) pd666 ))))((word) &var←c77012, testPoint←v22460, path←v32400, tolerance←v22488, pd666);
         };
      success←v22560 = var←c77012.f2;
      point←v22532 = (*  (W2Pt) &var←c77012 );
      };
SOURCE(48977, 48)
   {
      word pd667;
      pd667 = (* (( (ptr) (* (( (ptr) gf←c81428)+304)/* var←c76980 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd667 ))))((* (( (ptr) gf←c81428)+45) ), (* (( (ptr) gf←c81428)+46) ), pd667);
      };
   /* removed tail goto */ 
   lab←L100110: ;
   (*  (W2Pt) formal←c01186 ) = point←v22532;
   (* (( (ptr) formal←c01186)+2) ) = success←v22560;
   return;
   }

static word PointIsInBox←P6420(test←v22620, box←v22648)
   W2 test←v22620;
   W6 box←v22648;
   {
   word var←c22692;
   /* PointIsInBox: */ 
SOURCE(49031, 162)
SOURCE(49101, 92)
   {
      word tc668;
      word x669;
      word x670;
      word x671;
      word x672;
      word x673;
      word x674;
      word x675;
      word x676;
      if ( (  ( ((
         x669 = test←v22620.f0,  *(float*)&x669
         ) >= (
         x670 = box←v22648.f0,  *(float*)&x670
         )) ? ((
         x671 = test←v22620.f0,  *(float*)&x671
         ) <= (
         x672 = box←v22648.f2,  *(float*)&x672
         )) : 0 )  ? ((
         x673 = test←v22620.f1,  *(float*)&x673
         ) >= (
         x674 = box←v22648.f1,  *(float*)&x674
         )) : 0 ) ) {
         tc668 =  (word) ((
            x675 = test←v22620.f1,  *(float*)&x675
            ) <= (
            x676 = box←v22648.f3,  *(float*)&x676
            ));
         }
      else {
         tc668 =  (word) 0;
         };
      return(tc668);
      };
   }

static void KnotBoundBox←P6480(seg←v22752, bBox←v22780)
   word seg←v22752;
   word bBox←v22780;
   {
   register ptr gf←c81460 =  (ptr) &globalframe;
   word data←v32488;
   word cps←v32516;
   word minX←v32544;
   word maxX←v32572;
   word minY←v32600;
   word maxY←v32628;
   /* KnotBoundBox: */ 
SOURCE(49199, 494)
SOURCE(49253, 40)
   data←v32488 = XR←Narrow((* (( (ptr) seg←v22752)+24) ), (* (( (ptr) gf←c81460)+19) ));
SOURCE(49295, 41)
   cps←v32516 = (*  (ptr) data←v32488 );
SOURCE(49338, 28)
   {
      word limit677;
      minX←v32544 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
            limit677 = (*  (ptr) cps←v32516 ),
            BCK(0, limit677)
            )) ).f0;
      };
   maxX←v32572 = minX←v32544;
SOURCE(49368, 28)
   {
      word limit678;
      minY←v32600 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
            limit678 = (*  (ptr) cps←v32516 ),
            BCK(0, limit678)
            )) ).f1;
      };
   maxY←v32628 = minY←v32600;
SOURCE(49398, 202)
   {
      register word i←v32672 = 1;
      register word noName←c77044;
      noName←c77044 = (*  (ptr) cps←v32516 );
      if (( (int)i←v32672 >=  (int)noName←c77044)) {
         goto lab←L100111;
         };
      lab←L100114: ;
SOURCE(49430, 41)
      {
         word x679;
         word limit680;
         word x681;
         if (((
            x679 = maxX←v32572,  *(float*)&x679
            ) < (
            x681 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
                  limit680 = (*  (ptr) cps←v32516 ),
                  BCK(i←v32672, limit680)
                  )) ).f0,  *(float*)&x681
            ))) {
SOURCE(49455, 16)
            {
               word limit682;
               maxX←v32572 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
                     limit682 = (*  (ptr) cps←v32516 ),
                     BCK(i←v32672, limit682)
                     )) ).f0;
               };
            };
         };
SOURCE(49473, 41)
      {
         word x683;
         word limit684;
         word x685;
         if (((
            x683 = minX←v32544,  *(float*)&x683
            ) > (
            x685 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
                  limit684 = (*  (ptr) cps←v32516 ),
                  BCK(i←v32672, limit684)
                  )) ).f0,  *(float*)&x685
            ))) {
SOURCE(49498, 16)
            {
               word limit686;
               minX←v32544 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
                     limit686 = (*  (ptr) cps←v32516 ),
                     BCK(i←v32672, limit686)
                     )) ).f0;
               };
            };
         };
SOURCE(49516, 41)
      {
         word x687;
         word limit688;
         word x689;
         if (((
            x687 = maxY←v32628,  *(float*)&x687
            ) < (
            x689 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
                  limit688 = (*  (ptr) cps←v32516 ),
                  BCK(i←v32672, limit688)
                  )) ).f1,  *(float*)&x689
            ))) {
SOURCE(49541, 16)
            {
               word limit690;
               maxY←v32628 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
                     limit690 = (*  (ptr) cps←v32516 ),
                     BCK(i←v32672, limit690)
                     )) ).f1;
               };
            };
         };
SOURCE(49559, 41)
      {
         word x691;
         word limit692;
         word x693;
         if (((
            x691 = minY←v32600,  *(float*)&x691
            ) > (
            x693 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
                  limit692 = (*  (ptr) cps←v32516 ),
                  BCK(i←v32672, limit692)
                  )) ).f1,  *(float*)&x693
            ))) {
SOURCE(49584, 16)
            {
               word limit694;
               minY←v32600 = (* (( (W2Pt) (( (ptr) cps←v32516)+1))+(
                     limit694 = (*  (ptr) cps←v32516 ),
                     BCK(i←v32672, limit694)
                     )) ).f1;
               };
            };
         };
      i←v32672 = (i←v32672 + 1);
      if (( (int)i←v32672 <  (int)noName←c77044)) {
         goto lab←L100114;
         };
      lab←L100111: ;
      };
SOURCE(49611, 82)
   (*  (ptr) bBox←v22780 ) = minX←v32544;
   (* (( (ptr) bBox←v22780)+1) ) = minY←v32600;
   (* (( (ptr) bBox←v22780)+2) ) = maxX←v32572;
   (* (( (ptr) bBox←v22780)+3) ) = maxY←v32628;
   (* (( (ptr) bBox←v22780)+4) ) = 0;
   (* (( (ptr) bBox←v22780)+5) ) = 0;
   }

static void FPToPoint←P6540(formal←c01202, FP←v22840)
   word formal←c01202;
   W2 FP←v22840;
   {
   W2 point←v22884;
   /* FPToPoint: */ 
SOURCE(49699, 94)
SOURCE(49770, 23)
   point←v22884.f0 = FP←v22840.f0;
   point←v22884.f1 = FP←v22840.f1;
   /* removed tail goto */ 
   (*  (W2Pt) formal←c01202 ) = point←v22884;
   return;
   }

static void PointToFP←P6600(formal←c01205, point←v22944)
   word formal←c01205;
   W2 point←v22944;
   {
   word var←c01403;
   word var←c01404;
   /* PointToFP: */ 
SOURCE(49799, 94)
   /* Return var split */ 
SOURCE(49866, 27)
   var←c01403 = point←v22944.f0;
   var←c01404 = point←v22944.f1;
   /* removed tail goto */ 
   (* (( (ptr) formal←c01205)+1) ) = var←c01404;
   (*  (ptr) formal←c01205 ) = var←c01403;
   return;
   }

static word FindNearestPath←P6660(path←v23048, pos←v23076)
   word path←v23048;
   W2 pos←v23076;
   {
   register ptr gf←c81492 =  (ptr) &globalframe;
   word var←c23120;
   word miniPath←v32716;
   /* FindNearestPath: */ 
SOURCE(49899, 375)
SOURCE(49975, 51)
   miniPath←v32716 = XR←NewObject(20, (* (( (ptr) gf←c81492)+28) ));
SOURCE(50028, 49)
   {
      word var←c77172;
      {
         word var←c77204;
         var←c77204 = XR←NewObject(36, (* (( (ptr) gf←c81492)+29) ));
         (*  (ptr) var←c77204 ) = 1;
         var←c77172 = var←c77204;
         };
      (* (( (ptr) miniPath←v32716)+4) ) = var←c77172;
      };
SOURCE(50079, 173)
   {
      register word i←v32760 = 0;
      register word noName←c77236;
      noName←c77236 = (*  (ptr) (* (( (ptr) path←v23048)+4) ) );
      if (( (int)i←v32760 >=  (int)noName←c77236)) {
         goto lab←L100117;
         };
      lab←L100120: ;
SOURCE(50119, 35)
      {
         word var←c77300;
         var←c77300 = (* (( (ptr) miniPath←v32716)+4) );
         {
            word var←c77268;
            var←c77268 = (* (( (ptr) path←v23048)+4) );
            {
               word limit695;
               word limit696;
               (* (( (W8Pt) (( (ptr) var←c77300)+1))+(
                     limit695 = (*  (ptr) var←c77300 ),
                     BCK(0, limit695)
                     )) ) = (* (( (W8Pt) (( (ptr) var←c77268)+1))+(
                     limit696 = (*  (ptr) var←c77268 ),
                     BCK(i←v32760, limit696)
                     )) );
               };
            };
         };
SOURCE(50156, 33)
      {
         word pd697;
         pd697 = (* (( (ptr) (* (( (ptr) gf←c81492)+291)/* var←c65492 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd697 ))))(miniPath←v32716, pd697);
         };
SOURCE(50191, 61)
      {
         word pd698;
         pd698 = (* (( (ptr) (* (( (ptr) gf←c81492)+291)/* var←c65492 */  ))+7) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd698 ))))(pos←v23076, miniPath←v32716, (*  (ptr) &fc699 ), pd698))) {
SOURCE(50242, 10)
            return(i←v32760);
            };
         };
      i←v32760 = (i←v32760 + 1);
      if (( (int)i←v32760 <  (int)noName←c77236)) {
         goto lab←L100120;
         };
      lab←L100117: ;
      };
SOURCE(50263, 11)
   return( (word) -1);
   }

static word PathNumToCPIndex←P6720(seg←v23180, pathNum←v23208)
   word seg←v23180;
   word pathNum←v23208;
   {
   register ptr gf←c81524 =  (ptr) &globalframe;
   word cpIndex←v23252;
   word data←v32804;
   word cpCount←v32832;
   /* PathNumToCPIndex: */ 
SOURCE(50280, 372)
SOURCE(50359, 40)
   data←v32804 = XR←Narrow((* (( (ptr) seg←v23180)+24) ), (* (( (ptr) gf←c81524)+19) ));
SOURCE(50401, 47)
   {
      word pd700;
      pd700 = (* (( (ptr) (*  (ptr) seg←v23180 ))+17) );
      cpCount←v32832 = (word) ( *( (fPt) ((*  (ptr) pd700 ))))(seg←v23180, pd700);
      };
SOURCE(50450, 94)
   {
      word var←c77332;
      var←c77332 = (* (( (ptr) data←v32804)+1) );
      switch (var←c77332) {
         case 3: case 2: 
SOURCE(50495, 17)
            cpIndex←v23252 = pathNum←v23208;
            break;
         case 6: 
SOURCE(50525, 19)
            cpIndex←v23252 = (pathNum←v23208 - 1);
            break;
         default: 
SOURCE(50557, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(50564, 80)
   if (( (int)cpIndex←v23252 <  (int)0)) {
SOURCE(50584, 17)
      cpIndex←v23252 = 0;
      }
   else {
SOURCE(50601, 43)
      if (( (int)cpIndex←v23252 >  (int)cpCount←v32832)) {
SOURCE(50627, 17)
         cpIndex←v23252 = cpCount←v32832;
         };
      };
SOURCE(50646, 6)
   return(cpIndex←v23252);
   }

static word GetPath←P6780(seg←v23312)
   word seg←v23312;
   {
   register ptr gf←c81556 =  (ptr) &globalframe;
   word path←v23356;
   /* GetPath: */ 
SOURCE(50658, 239)
SOURCE(50658, 239)
   path←v23356 = 0;
SOURCE(50723, 142)
   {
      word var←c77364;
      word var←c77396;
      var←c77364 = (* (( (ptr) seg←v23312)+24) );
      if ((var←c77364 == 0)) {
         goto lab←L100121;
         };
      var←c77396 = XR←GetReferentType(var←c77364);
      if (((* (( (ptr) gf←c81556)+27) ) == var←c77396)) {
         {
            word type←v32876;
            type←v32876 = var←c77364;
SOURCE(50769, 16)
            path←v23356 = (* (( (ptr) type←v32876)+8) );
            };
         goto endif0701;
         };
      if (((* (( (ptr) gf←c81556)+22) ) == var←c77396)) {
         {
            word type←v32920;
            type←v32920 = var←c77364;
SOURCE(50806, 16)
            path←v23356 = (* (( (ptr) type←v32920)+7) );
            };
         goto endif0701;
         };
      if (((* (( (ptr) gf←c81556)+19) ) == var←c77396)) {
         {
            word type←v32964;
            type←v32964 = var←c77364;
SOURCE(50849, 16)
            path←v23356 = (* (( (ptr) type←v32964)+2) );
            };
         goto endif0701;
         };
      lab←L100121: ;
SOURCE(50878, 5)
      (void) XR←RaiseUnnamedError();
      goto endif0701;
      endif0701: ;
      };
SOURCE(50885, 12)
   return(path←v23356);
   }

static word PathFromConic←P6840(p0←v23416, p1←v23444, p2←v23472, r←v23500)
   W2 p0←v23416;
   W2 p1←v23444;
   W2 p2←v23472;
   word r←v23500;
   {
   W9 var←c81588;
   register ptr gf←c81620 =  (ptr) &globalframe;
   word path←v23544;
   /* declaration of var←c77428 skipped */ 
   /* declaration of bList←v33008 skipped */ 
   /* declaration of joint←v33036 skipped */ 
   /* PathFromConic: */ 
SOURCE(50903, 386)
   {
      word tmpAddr702;
      tmpAddr702 = (word) (( (ptr) &var←c81588)+4)/* var←c77428 */ ;
      (*  (ptr) tmpAddr702 ) = ( ((word)  (fPt) bproc←P9360) );
      (* (( (ptr) tmpAddr702) + 1) ) = 1;
      };
SOURCE(50903, 386)
   path←v23544 = 0;
SOURCE(50988, 7)
   (* (( (ptr) &var←c81588)+6)/* bList←v33008 */  ) = 0;
SOURCE(51014, 24)
   (* (( (ptr) &var←c81588)+7) ) = p0←v23416.f0;
   (* (( (ptr) &var←c81588)+8) ) = p0←v23416.f1;
SOURCE(51174, 73)
   {
      W2 var←c77492;
      W2 var←c77524;
      W2 var←c77556;
      var←c77492.f0 = p0←v23416.f0;
      var←c77492.f1 = p0←v23416.f1;
      var←c77524.f0 = p1←v23444.f0;
      var←c77524.f1 = p1←v23444.f1;
      var←c77556.f0 = p2←v23472.f0;
      var←c77556.f1 = p2←v23472.f1;
      {
         word pd703;
         pd703 = (* (( (ptr) (* (( (ptr) gf←c81620)+305)/* var←c77588 */  ))+4) );
         (void) ( *( (fPt) ((*  (ptr) pd703 ))))(var←c77492, var←c77524, var←c77556, r←v23500, (word) (( (bPt) &var←c81588)+16)/* var←c77428 */ , pd703)
         ;
         };
      };
SOURCE(51249, 26)
   path←v23544 = (word) PathFromList←P6900((* ((( (ptr) &var←c81588)+6)/* bList←v33008 */ ) ));
SOURCE(51277, 12)
   return(path←v23544);
   }

static void bproc←P9360(p1←v60496, p2←v60524, p3←v60552, formal←c81684)
   W2 p1←v60496;
   W2 p2←v60524;
   W2 p3←v60552;
   word formal←c81684;
   {
   register ptr gf←c81652 =  (ptr) &globalframe;
   word new←v33192;
   formal←c81684 = (formal←c81684 - 16);
   /* bproc: */ 
SOURCE(51040, 129)
SOURCE(51074, 57)
   new←v33192 = XR←NewObject(32, (* (( (ptr) gf←c81652)+26) ));
   (*  (W2Pt) new←v33192 ) = (*  (W2Pt) (( (ptr) formal←c81684)+7) );
   (*  (W2Pt) (( (ptr) new←v33192)+2) ) = p1←v60496;
   (*  (W2Pt) (( (ptr) new←v33192)+4) ) = p2←v60524;
   (*  (W2Pt) (( (ptr) new←v33192)+6) ) = p3←v60552;
SOURCE(51133, 24)
   {
      word var←c77652;
      var←c77652 = XR←NewObject(8, (* (( (ptr) gf←c81652)+17) ));
      (*  (ptr) var←c77652 ) = new←v33192;
      (* (( (ptr) var←c77652)+1) ) = (* (( (ptr) formal←c81684)+6) );
      (* (( (ptr) formal←c81684)+6) ) = var←c77652;
      };
SOURCE(51159, 10)
   (*  (W2Pt) (( (ptr) formal←c81684)+7) ) = p3←v60552;
   }

static word PathFromList←P6900(list←v23604)
   word list←v23604;
   {
   register ptr gf←c81716 =  (ptr) &globalframe;
   word var←c23732;
   word count←v33236 = 0;
   word path←v33264;
   /* PathFromList: */ 
SOURCE(51295, 479)
SOURCE(51386, 47)
   path←v33264 = XR←NewObject(20, (* (( (ptr) gf←c81716)+28) ));
SOURCE(51435, 70)
   {
      register word l←v33308;
      l←v33308 = list←v23604;
      lab←L100125: ;
      if ((l←v33308 != 0)) {
         }
      else {
         goto lab←L100122;
         };
SOURCE(51490, 15)
      count←v33236 = (count←v33236 + 1);
      l←v33308 = (* (( (ptr) l←v33308)+1) );
      goto lab←L100125;
      lab←L100122: ;
      };
SOURCE(51516, 49)
   {
      word var←c77716;
      {
         word var←c77748;
         word var←c77780;
         word var←c77812;
         var←c77748 = BCK(count←v33236, 8388607);
         var←c77780 = ((word) var←c77748 << 5);
         var←c77812 = XR←NewObject((4 + var←c77780), (* (( (ptr) gf←c81716)+29) ));
         (*  (ptr) var←c77812 ) = var←c77748;
         var←c77716 = var←c77812;
         };
      (* (( (ptr) path←v33264)+4) ) = var←c77716;
      };
SOURCE(51567, 153)
   {
      register word l←v33436;
      l←v33436 = list←v23604;
      lab←L100129: ;
      if ((l←v33436 != 0)) {
         }
      else {
         goto lab←L100126;
         };
SOURCE(51622, 15)
      count←v33236 = SGNCK((count←v33236 - 1));
SOURCE(51691, 29)
      {
         word var←c77844;
         var←c77844 = (* (( (ptr) path←v33264)+4) );
         {
            word limit704;
            (* (( (W8Pt) (( (ptr) var←c77844)+1))+(
                  limit704 = (*  (ptr) var←c77844 ),
                  BCK(count←v33236, limit704)
                  )) ) = (*  (W8Pt) (*  (ptr) l←v33436 ) );
            };
         };
      l←v33436 = (* (( (ptr) l←v33436)+1) );
      goto lab←L100129;
      lab←L100126: ;
      };
SOURCE(51731, 29)
   {
      word pd705;
      pd705 = (* (( (ptr) (* (( (ptr) gf←c81716)+291)/* var←c65492 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd705 ))))(path←v33264, pd705);
      };
SOURCE(51762, 12)
   return(path←v33264);
   }

static void Init←P6960()
   {
   register ptr gf←c81748 =  (ptr) &globalframe;
   word classDef←v33564;
   /* Init: */ 
SOURCE(51780, 352)
SOURCE(51798, 82)
   {
      word var←c77876;
      word var←c77908;
      var←c77876 = (word) BuildBezierClass←P2700();
      var←c77908 = XR←NewObject(8, (* (( (ptr) gf←c81748)+14) ));
      (*  (ptr) var←c77908 ) = (* (( (ptr) gf←c81748)+30) );
      (* (( (ptr) var←c77908)+1) ) = var←c77876;
      classDef←v33564 = var←c77908;
      };
SOURCE(51882, 30)
   (void) RegisterSegmentClass←P60(classDef←v33564);
SOURCE(51914, 82)
   {
      word var←c77940;
      word var←c77972;
      var←c77940 = (word) BuildCubicSplineClass←P4440();
      var←c77972 = XR←NewObject(8, (* (( (ptr) gf←c81748)+14) ));
      (*  (ptr) var←c77972 ) = (* (( (ptr) gf←c81748)+47) );
      (* (( (ptr) var←c77972)+1) ) = var←c77940;
      classDef←v33564 = var←c77972;
      };
SOURCE(51998, 30)
   (void) RegisterSegmentClass←P60(classDef←v33564);
SOURCE(52030, 70)
   {
      word var←c78004;
      word var←c78036;
      var←c78004 = (word) BuildConicClass←P900();
      var←c78036 = XR←NewObject(8, (* (( (ptr) gf←c81748)+14) ));
      (*  (ptr) var←c78036 ) = (* (( (ptr) gf←c81748)+44) );
      (* (( (ptr) var←c78036)+1) ) = var←c78004;
      classDef←v33564 = var←c78036;
      };
SOURCE(52102, 30)
   (void) RegisterSegmentClass←P60(classDef←v33564);
   }

/* file: GGSegmentImplA, module: GGSegmentImplA, compiled at: February 5, 1993 2:05:50 pm PST */ 
extern void XR←install←GGSegmentImplA() {
   NoName←Q9660();
   }
extern void XR←run←GGSegmentImplA() { XR←Start(&globalframe); }