/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 13, 1993 1:30:00 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGMouseEventImplB, module: GGMouseEventImplB */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1347982991,3122576754] GGMouseEventImplB";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {word f0, f1, f2, f3;} W4;
typedef struct {word f0, f1, f2;} W3;
#define SOURCE(p, l) /* source p, l */
static float fc127 = 0.0;
static float fc129 = -1.0;
static float fc220 = 1.0;
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static void NoName←Q3144();
static void GGMouseEventImplB←P0();
static void SetCaretAttractorEndpoint←P60();
static void SetStrokeColorRemote←P120();
static void SetFillColorRemote←P180();
static void SendColorToColorTool←P240();
static word NoName←Q3204();
static word StartSelect←P300();
static void DuringSelect←P360();
static void EndSelect←P420();
static word SelectModeFromAtom←P480();
static word RopeFromSelectMode←P540();
static void Select←P600();
static word GravTypeFromAtom←P660();
static void SelectFromFeature←P720();
static void EndSelectAux←P780();
static word SelectAndDescribeSlicePart←P840();
static word SelectSlicePart←P900();
static void SitTheCaret←P960();
static word StartDeselect←P1020();
static void DuringDeselect←P1080();
static void DuringDeselectAux←P1140();
static word SliceDeselectAux←P1200();
static void EndDeselect←P1260();
static void EndDeselectAux←P1320();
static word StartExtendSelect←P1380();
static word StartExtendSelection←P1440();
static void DuringExtendSelection←P1500();
static void DuringExtendSelectionFeedback←P1560();
static void EndExtendSelection←P1620();
static word StartAddBezier←P1680();
static void UpdateSceneForAddBezier←P1740();
static void DuringBezierDrag←P1800();
static word ContinueBezierAdd←P1860();
static void EndBezierAdd←P1920();
static void AbortBezierAdd←P1980();
static void NoName←Q3264();
static struct {unsigned f; char r[4];} string1 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[4];} string3 = {65540, "\251\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\100\310\000\000"};
static struct {unsigned f; char r[4];} string5 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\164\000\000"};
static struct {unsigned f; char r[4];} string7 = {196611, "\004A6"};
static struct {unsigned f; char r[16];} string8 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\050\000\000"};
static struct {unsigned f; char r[4];} string10 = {131074, "\004\007\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\106\354\000\000"};
static struct {unsigned f; char r[8];} string12 = {262148, "\004\200@\034\000\000\000"};
static struct {unsigned f; char r[20];} string13 = {1179668, "\260\006\005\146\151\162\163\164\217\005\004\162\145\163\164\214\217\261\000"};
static struct {unsigned f; char r[44];} string14 = {2752556, "\260\006\005\146\151\162\163\164\257\300\015\277\004\146\300\034\367\146\045\112\114\005\004\162\145\163\164\214\257\300\015\277\004\146\300\034\367\146\045\112\114\261\000"};
static struct {unsigned f; char r[28];} string15 = {1572888, "\006\002\000\007\000\040\016\000\003\001\000\000\000\000\014\014\000\014\014\014\014\000\010\001\000\000\000"};
static struct {unsigned f; char r[4];} string16 = {65540, "\256\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\247\031\224\326\300\123\162\224\023\100\164\000\000"};
static struct {unsigned f; char r[24];} string18 = {1376280, "StartSelectTrajectory\000\000"};
static struct {unsigned f; char r[20];} string19 = {1245204, "StartSelectTopLevel"};
static struct {unsigned f; char r[12];} string20 = {589836, "Selecting\000\000"};
static struct {unsigned f; char r[16];} string21 = {786448, "DuringSelect\000\000\000"};
static struct {unsigned f; char r[12];} string22 = {524300, "Gargoyle\000\000\000"};
static struct {unsigned f; char r[12];} string23 = {720908, "DuringMouse"};
static struct {unsigned f; char r[12];} string24 = {655372, "%g nothing\000"};
static struct {unsigned f; char r[8];} string25 = {262152, "None\000\000\000"};
static struct {unsigned f; char r[8];} string26 = {327688, "Joint\000\000"};
static struct {unsigned f; char r[8];} string27 = {458760, "Segment"};
static struct {unsigned f; char r[8];} string28 = {262152, "Traj\000\000\000"};
static struct {unsigned f; char r[8];} string29 = {327688, "joint\000\000"};
static struct {unsigned f; char r[8];} string30 = {458760, "segment"};
static struct {unsigned f; char r[12];} string31 = {655372, "trajectory\000"};
static struct {unsigned f; char r[8];} string32 = {393224, "object\000"};
static struct {unsigned f; char r[20];} string33 = {1179668, "StartSelectSegment\000"};
static struct {unsigned f; char r[20];} string34 = {1048596, "StartSelectJoint\000\000\000"};
static struct {unsigned f; char r[12];} string35 = {720908, "PreferLines"};
static struct {unsigned f; char r[16];} string36 = {786448, "PreferPoints\000\000\000"};
static struct {unsigned f; char r[12];} string37 = {720908, "PreferFaces"};
static struct {unsigned f; char r[12];} string38 = {589836, "EndSelect\000\000"};
static struct {unsigned f; char r[76];} string39 = {4915276, "SelectFromFeature failed: unknown selection grain.  Make a selection first."};
static struct {unsigned f; char r[12];} string40 = {524300, "Feedback\000\000\000"};
static struct {unsigned f; char r[20];} string41 = {1114132, "No near %g found.\000\000"};
static struct {unsigned f; char r[20];} string42 = {1245204, " selected (%g more)"};
static struct {unsigned f; char r[12];} string43 = {589836, " selected\000\000"};
static struct {unsigned f; char r[8];} string44 = {327688, "%g %g\000\000"};
static struct {unsigned f; char r[40];} string45 = {2359336, "NIL fill color\030not sent to ColorTool\000\000\000"};
static struct {unsigned f; char r[72];} string46 = {4456520, "SetFillColorRemote failed: Select an object with a unique fill color\000\000\000"};
static struct {unsigned f; char r[68];} string47 = {4259908, "SetFillColorRemote failed: Place input focus in a Gargoyle viewer\000\000"};
static struct {unsigned f; char r[28];} string48 = {1638428, "unimplemented result type\000\000"};
static struct {unsigned f; char r[20];} string49 = {1179668, "StartDeselectJoint\000"};
static struct {unsigned f; char r[24];} string50 = {1310744, "StartDeselectSegment\000\000\000"};
static struct {unsigned f; char r[24];} string51 = {1507352, "StartDeselectTrajectory"};
static struct {unsigned f; char r[24];} string52 = {1376280, "StartDeselectTopLevel\000\000"};
static struct {unsigned f; char r[12];} string53 = {720908, "Deselecting"};
static struct {unsigned f; char r[8];} string54 = {458760, "nothing"};
static struct {unsigned f; char r[20];} string55 = {1048596, "top level object\000\000\000"};
static struct {unsigned f; char r[20];} string56 = {1048596, "No near %g found\000\000\000"};
static struct {unsigned f; char r[12];} string57 = {655372, "deselected\000"};
static struct {unsigned f; char r[44];} string58 = {2621484, "Unexpected feature type for deselect %g.\000\000\000"};
static struct {unsigned f; char r[20];} string59 = {1048596, "SelectionChanged\000\000\000"};
static struct {unsigned f; char r[20];} string60 = {1245204, "StartExtSelectJoint"};
static struct {unsigned f; char r[24];} string61 = {1376280, "StartExtSelectSegment\000\000"};
static struct {unsigned f; char r[28];} string62 = {1572892, "StartExtSelectTrajectory\000\000\000"};
static struct {unsigned f; char r[24];} string63 = {1441816, "StartExtSelectTopLevel\000"};
static struct {unsigned f; char r[68];} string64 = {4259908, "SetStrokeColorRemote: Select an object with a unique stroke color\000\000"};
static struct {unsigned f; char r[24];} string65 = {1310744, "StartExtendSelection\000\000\000"};
static struct {unsigned f; char r[20];} string66 = {1179668, "EndExtendSelection\000"};
static struct {unsigned f; char r[12];} string67 = {720908, "Extended to"};
static struct {unsigned f; char r[16];} string68 = {786448, "Extending to\000\000\000"};
static struct {unsigned f; char r[8];} string69 = {458760, "Outline"};
static struct {unsigned f; char r[4];} string70 = {196612, "Set"};
static struct {unsigned f; char r[20];} string71 = {1114132, "Add Bezier spline\000\000"};
static struct {unsigned f; char r[4];} string72 = {196612, "add"};
static struct {unsigned f; char r[8];} string73 = {262152, "Drag\000\000\000"};
static struct {unsigned f; char r[60];} string74 = {3735612, "Start Bezier failed: caret required for adding new Bezier\000\000"};
static struct {unsigned f; char r[12];} string75 = {589836, "Dragging:\000\000"};
static struct {unsigned f; char r[68];} string76 = {4390980, "SetStrokeColorRemote failed: Place input focus in a Gargoyle viewer"};
static struct {unsigned f; char r[8];} string77 = {393224, "Bezier\000"};
static struct {unsigned f; char r[12];} string78 = {655372, "DuringDrag\000"};
static struct {unsigned f; char r[12];} string79 = {589836, "Complaint\000\000"};
static struct {unsigned f; char r[16];} string80 = {786448, "EndBezierAdd\000\000\000"};
static struct {unsigned f; char r[32];} string81 = {1900576, "ObjectChangedBoundBoxProvided\000\000"};
static struct {unsigned f; char r[20];} string82 = {1048596, "failed assertion\000\000\000"};
static struct {unsigned f; char r[8];} string83 = {393224, "Select\000"};
static struct {unsigned f; char r[16];} string84 = {851984, "\257\300\120\130\226\217\300\272\036\275\162\100\164\000\000"};
static struct {unsigned f; char r[12];} string85 = {655370, "\006\001\100\130\010\000\004\100\102\001\000"};
static struct {unsigned f; char r[16];} string86 = {851984, "\257\300\006<7[\300;CV\364@h\000\000"};
static struct {unsigned f; char r[16];} string87 = {851984, "\257\300\207\224\334\150\300\367\303\105\360\100\150\000\000"};
static struct {unsigned f; char r[16];} string88 = {851984, "\257\300\322\334\347\304\300\124\107\000\027\100\150\000\000"};
static struct {unsigned f; char r[16];} string89 = {851984, "\257\300\136\002\175\264\300\016\031\370\241\100\150\000\000"};
static struct {unsigned f; char r[16];} string90 = {851984, "\257\300\223\031\346\162\300\275\253\133\335\100\150\000\000"};
static struct {unsigned f; char r[16];} string91 = {851984, "\257\300\375\202\245\011\300\112\022\046\301\100\150\000\000"};
static struct {unsigned f; char r[16];} string92 = {851984, "\257\300\003\033\274\104\300\263\246\312\006\100\150\000\000"};
static struct {unsigned f; char r[16];} string93 = {851984, "\257\300\252\050\175\356\300\250\337\044\120\100\150\000\000"};
static struct {unsigned f; char r[12];} string94 = {1195855215, "useEvent"};
static struct {unsigned f; char r[16];} string95 = {851984, "\257\300\246\204\223\340\300\164\162\104\060\100\150\000\000"};
static struct {unsigned f; char r[16];} string96 = {851984, "\257\300\172\265\057\072\300\145\211\260\126\100\150\000\000"};
static struct {unsigned f; char r[16];} string97 = {851984, "\257\300\311\023\117\300\300\337\236\305\170\100\150\000\000"};
static struct {unsigned f; char r[16];} string98 = {851984, "\257\300\301\241\007\150\300\032\111\265\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string99 = {851984, "\257\300\207\142\037\125\300\254\056\012\025\100\150\000\000"};
static struct {unsigned f; char r[16];} string100 = {851984, "\257\300\347\101\365\007\300\150\102\366\020\100\150\000\000"};
static struct {unsigned f; char r[16];} string101 = {851984, "\257\300\043\211\212\366\300\343\003\307\242\100\150\000\000"};
static struct {unsigned f; char r[16];} string102 = {851984, "\257\300\011\245\206\305\300\112\326\356\245\100\150\000\000"};
static struct {unsigned f; char r[16];} string103 = {851984, "\257\300\261\002\056\176\300\055\321\222\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string104 = {851984, "\257\300U$)\337\300Xo9\243@t\000\000"};
static struct {unsigned f; char r[16];} string105 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string106 = {851984, "\257\300\206\055\004\241\300\261\334\001\116\100\150\000\000"};
static struct {unsigned f; char r[16];} string107 = {851984, "\257\300\050\310\006\072\300\004\273\314\121\100\150\000\000"};
static struct {unsigned f; char r[16];} string108 = {851984, "\257\300\355\324\264\170\300\276\334\312\210\100\150\000\000"};
static struct {unsigned f; char r[16];} string109 = {851984, "\257\300\370\132\042\205\300\045\133\011\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string110 = {851984, "\257\300\356\024\243\250\300\175\157\203\227\100\150\000\000"};
static struct {unsigned f; char r[16];} string111 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string112 = {851984, "\257\300\015\277\004\146\300\034\367\146\045\100\164\000\000"};
static struct {unsigned f; char r[16];} string113 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string114 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static struct {unsigned f; char r[16];} string115 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\100\150\000\000"};
static struct {unsigned f; char r[28];} string116 = {1572892, "\211\014\013\104\162\141\147\104\141\164\141\117\142\152\300\223\145\303\043\300\372\023\025\003\000\000\000"};
static struct {unsigned f; char r[16];} string117 = {851984, "\257\300\333\030\273\126\300\173\036\033\131\100\200\000\000"};
static struct {unsigned f; char r[20];} string118 = {1114129, "\006\006\050\001\054\001\060\001\064\001\100\100\001\100\110\004\030\000\000"};
static struct {unsigned f; char r[28];} string119 = {1769500, "\211\017\016\122\145\146\162\145\163\150\104\141\164\141\117\142\152\300\223\145\303\043\300\372\023\025\003"};
static struct {unsigned f; char r[16];} string120 = {851984, "\257\300\026\355\016\312\300\171\207\041\370\100\200\000\000"};
static struct {unsigned f; char r[44];} string121 = {2752554, "\006\020\000\001\014\001\020\001\024\001\030\001\034\001\070\001\074\001\100\100\001\100\104\001\100\110\001\100\114\001\100\120\001\100\124\001\100\130\001\100\144\001\000"};
static struct {
   word f0[88]; 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[31]; 
   } globalframe = {
   {0}, (word) AbortBezierAdd←P1980, 0, (word) EndBezierAdd←P1920, 
   0, (word) ContinueBezierAdd←P1860, 0, (word) DuringBezierDrag←P1800, 
   0, (word) UpdateSceneForAddBezier←P1740, 0, (word) StartAddBezier←P1680, 
   0, (word) EndExtendSelection←P1620, 0, (word) DuringExtendSelectionFeedback←P1560, 
   0, (word) DuringExtendSelection←P1500, 0, (word) StartExtendSelection←P1440, 
   0, (word) StartExtendSelect←P1380, 0, (word) EndDeselectAux←P1320, 
   0, (word) EndDeselect←P1260, 0, (word) SliceDeselectAux←P1200, 
   0, (word) DuringDeselectAux←P1140, 0, (word) DuringDeselect←P1080, 
   0, (word) StartDeselect←P1020, 0, (word) SitTheCaret←P960, 
   0, (word) SelectSlicePart←P900, 0, (word) SelectAndDescribeSlicePart←P840, 
   0, (word) EndSelectAux←P780, 0, (word) SelectFromFeature←P720, 
   0, (word) GravTypeFromAtom←P660, 0, (word) Select←P600, 
   0, (word) RopeFromSelectMode←P540, 0, (word) SelectModeFromAtom←P480, 
   0, (word) EndSelect←P420, 0, (word) DuringSelect←P360, 
   0, (word) StartSelect←P300, 0, (word) SendColorToColorTool←P240, 
   0, (word) SetFillColorRemote←P180, 0, (word) SetStrokeColorRemote←P120, 
   0, (word) SetCaretAttractorEndpoint←P60, 0, (word) GGMouseEventImplB←P0, 
   {0}
   };

static void NoName←Q3144()
   {
   register ptr gf←c0549 =  (ptr) &globalframe;
   word var←c63040;
   (* (( (ptr) gf←c0549)+7) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0549)+9) ) = (word) XR←GetTypeIndexS((word) (&string3));
   (* (( (ptr) gf←c0549)+10) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5);
   (* (( (ptr) gf←c0549)+11) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (* (( (ptr) gf←c0549)+13) ) = (word) XR←GetTypeIndex((word) &string8, 0, (word) &string2);
   (* (( (ptr) gf←c0549)+14) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c0549)+15) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string12);
   (* (( (ptr) gf←c0549)+16) ) = (word) XR←GetTypeIndex((word) &string13, 0, (word) &string5);
   (* (( (ptr) gf←c0549)+19) ) = (word) XR←GetTypeIndex((word) &string14, 0, (word) &string15);
   (* (( (ptr) gf←c0549)+20) ) = (word) XR←GetTypeIndexS((word) (&string16));
   (* (( (ptr) gf←c0549)+21) ) = (word) XR←GetTypeIndexS((word) (&string17));
   (*  (ptr) (( (bPt) gf←c0549)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string18);
   (*  (ptr) (( (bPt) gf←c0549)+92) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string19);
   (*  (ptr) (( (bPt) gf←c0549)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string20);
   (*  (ptr) (( (bPt) gf←c0549)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string21);
   (*  (ptr) (( (bPt) gf←c0549)+104) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string22);
   (*  (ptr) (( (bPt) gf←c0549)+108) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string23);
   (*  (ptr) (( (bPt) gf←c0549)+112) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string24);
   (*  (ptr) (( (bPt) gf←c0549)+116) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string25);
   (*  (ptr) (( (bPt) gf←c0549)+120) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c0549)+124) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c0549)+128) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string28);
   (*  (ptr) (( (bPt) gf←c0549)+132) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c0549)+136) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string30);
   (*  (ptr) (( (bPt) gf←c0549)+140) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string31);
   (*  (ptr) (( (bPt) gf←c0549)+144) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c0549)+148) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string33);
   (*  (ptr) (( (bPt) gf←c0549)+152) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string34);
   (*  (ptr) (( (bPt) gf←c0549)+156) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string35);
   (*  (ptr) (( (bPt) gf←c0549)+160) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string36);
   (*  (ptr) (( (bPt) gf←c0549)+164) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string37);
   (*  (ptr) (( (bPt) gf←c0549)+168) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string38);
   (*  (ptr) (( (bPt) gf←c0549)+172) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string39);
   (*  (ptr) (( (bPt) gf←c0549)+176) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string40);
   (*  (ptr) (( (bPt) gf←c0549)+180) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string41);
   (*  (ptr) (( (bPt) gf←c0549)+184) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string42);
   (*  (ptr) (( (bPt) gf←c0549)+188) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string43);
   (*  (ptr) (( (bPt) gf←c0549)+192) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string44);
   (*  (ptr) (( (bPt) gf←c0549)+196) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string45);
   (*  (ptr) (( (bPt) gf←c0549)+200) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string46);
   (*  (ptr) (( (bPt) gf←c0549)+204) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string47);
   (*  (ptr) (( (bPt) gf←c0549)+208) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string48);
   (*  (ptr) (( (bPt) gf←c0549)+212) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string49);
   (*  (ptr) (( (bPt) gf←c0549)+216) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string50);
   (*  (ptr) (( (bPt) gf←c0549)+220) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string51);
   (*  (ptr) (( (bPt) gf←c0549)+224) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string52);
   (*  (ptr) (( (bPt) gf←c0549)+228) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string53);
   (*  (ptr) (( (bPt) gf←c0549)+232) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string54);
   (*  (ptr) (( (bPt) gf←c0549)+236) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string55);
   (*  (ptr) (( (bPt) gf←c0549)+240) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string56);
   (*  (ptr) (( (bPt) gf←c0549)+244) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string57);
   (*  (ptr) (( (bPt) gf←c0549)+248) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string58);
   (*  (ptr) (( (bPt) gf←c0549)+252) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string59);
   (*  (ptr) (( (bPt) gf←c0549)+256) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string60);
   (*  (ptr) (( (bPt) gf←c0549)+260) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string61);
   (*  (ptr) (( (bPt) gf←c0549)+264) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string62);
   (*  (ptr) (( (bPt) gf←c0549)+268) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string63);
   (*  (ptr) (( (bPt) gf←c0549)+272) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string64);
   (*  (ptr) (( (bPt) gf←c0549)+276) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string65);
   (*  (ptr) (( (bPt) gf←c0549)+280) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string66);
   (*  (ptr) (( (bPt) gf←c0549)+284) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string67);
   (*  (ptr) (( (bPt) gf←c0549)+288) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string68);
   (*  (ptr) (( (bPt) gf←c0549)+292) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string69);
   (*  (ptr) (( (bPt) gf←c0549)+296) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string70);
   (*  (ptr) (( (bPt) gf←c0549)+300) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string71);
   (*  (ptr) (( (bPt) gf←c0549)+304) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string72);
   (*  (ptr) (( (bPt) gf←c0549)+308) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string73);
   (*  (ptr) (( (bPt) gf←c0549)+312) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string74);
   (*  (ptr) (( (bPt) gf←c0549)+316) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string75);
   (*  (ptr) (( (bPt) gf←c0549)+320) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string76);
   (*  (ptr) (( (bPt) gf←c0549)+324) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string77);
   (*  (ptr) (( (bPt) gf←c0549)+328) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string78);
   (*  (ptr) (( (bPt) gf←c0549)+332) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string79);
   (*  (ptr) (( (bPt) gf←c0549)+336) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string80);
   (*  (ptr) (( (bPt) gf←c0549)+340) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string81);
   (*  (ptr) (( (bPt) gf←c0549)+344) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+13) ), (word) &string82);
   (*  (ptr) (( (bPt) gf←c0549)+348) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0549)+7) ), (word) &string83);
   (void) XR←DeclareGlobalFrame((word) "GGMouseEventImplB", &globalframe, (word) XR←GetTypeIndex((word) &string84, 0, (word) &string85)
      , (word) (( (bPt) gf←c0549)+616)/* var←c57664 */ );
   var←c63040 = (word) XR←ImportInterface((word) "CodeTimer", (word) XR←GetTypeIndexS((word) (&string86)), 21);
   (* (( (ptr) gf←c0549)+167)/* var←c58272 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 526850);
   (void) XR←ImportProcS(var←c63040, 526338);
   var←c63040 = (word) XR←ImportInterface((word) "ColorTool", (word) XR←GetTypeIndexS((word) (&string87)), 10);
   (* (( (ptr) gf←c0549)+164)/* var←c58144 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 525314);
   var←c63040 = (word) XR←ImportInterface((word) "Feedback", (word) XR←GetTypeIndexS((word) (&string88)), 25);
   (* (( (ptr) gf←c0549)+156)/* var←c57696 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 1313029);
   (void) XR←ImportProcS(var←c63040, 1575429);
   (void) XR←ImportProcS(var←c63040, 1050628);
   var←c63040 = (word) XR←ImportInterface((word) "GGAlign", (word) XR←GetTypeIndexS((word) (&string89)), 46);
   (* (( (ptr) gf←c0549)+168)/* var←c58336 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 68164612);
   var←c63040 = (word) XR←ImportInterface((word) "GGCaret", (word) XR←GetTypeIndexS((word) (&string90)), 13);
   (* (( (ptr) gf←c0549)+158)/* var←c57760 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67372801);
   (void) XR←ImportProcS(var←c63040, 134482689);
   (void) XR←ImportProcS(var←c63040, 67371777);
   (void) XR←ImportProcS(var←c63040, 525570);
   (void) XR←ImportProcS(var←c63040, 1574916);
   var←c63040 = (word) XR←ImportInterface((word) "GGDescribe", (word) XR←GetTypeIndexS((word) (&string91)), 11);
   (* (( (ptr) gf←c0549)+162)/* var←c58016 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67371265);
   var←c63040 = (word) XR←ImportInterface((word) "GGEvent", (word) XR←GetTypeIndexS((word) (&string92)), 38);
   (* (( (ptr) gf←c0549)+163)/* var←c58048 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 1313029);
   (void) XR←ImportProcS(var←c63040, 1313285);
   var←c63040 = (word) XR←ImportInterface((word) "GGHistory", (word) XR←GetTypeIndexS((word) (&string93)), 20);
   (* (( (ptr) gf←c0549)+182)/* var←c61568 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 262657);
   (void) XR←ImportProcS(var←c63040, 525058);
   var←c63040 = (word) XR←ImportInterface((word) &string94, (word) XR←GetTypeIndexS((word) (&string95)), 32);
   (* (( (ptr) gf←c0549)+166)/* var←c58240 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 269313);
   (void) XR←ImportProcS(var←c63040, 68688645);
   (void) XR←ImportProcS(var←c63040, 1055236);
   (void) XR←ImportProcS(var←c63040, 201595137);
   (void) XR←ImportProcS(var←c63040, 135272451);
   (void) XR←ImportProcS(var←c63040, 69736201);
   (void) XR←ImportProcS(var←c63040, 1316356);
   (void) XR←ImportProcS(var←c63040, 135271684);
   (void) XR←ImportProcS(var←c63040, 2366726);
   (void) XR←ImportProcS(var←c63040, 267265);
   var←c63040 = (word) XR←ImportInterface((word) "GGMultiGravity", (word) XR←GetTypeIndexS((word) (&string96)), 16);
   (* (( (ptr) gf←c0549)+169)/* var←c58368 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 402917633);
   (void) XR←ImportProcS(var←c63040, 68683525);
   (void) XR←ImportProcS(var←c63040, 68683269);
   (void) XR←ImportProcS(var←c63040, 69207303);
   (void) XR←ImportProcS(var←c63040, 404226821);
   (void) XR←ImportProcS(var←c63040, 404226565);
   (void) XR←ImportProcS(var←c63040, 404488454);
   var←c63040 = (word) XR←ImportInterface((word) "GGOutline", (word) XR←GetTypeIndexS((word) (&string97)), 19);
   (* (( (ptr) gf←c0549)+177)/* var←c60928 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67633410);
   (void) XR←ImportProcS(var←c63040, 134482945);
   (void) XR←ImportProcS(var←c63040, 470027009);
   var←c63040 = (word) XR←ImportInterface((word) "GGParent", (word) XR←GetTypeIndexS((word) (&string98)), 83);
   (* (( (ptr) gf←c0549)+173)/* var←c59584 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67913987);
   (void) XR←ImportProcS(var←c63040, 67391489);
   (void) XR←ImportProcS(var←c63040, 67386625);
   (void) XR←ImportProcS(var←c63040, 68176388);
   (void) XR←ImportProcS(var←c63040, 67385857);
   var←c63040 = (word) XR←ImportInterface((word) "GGRefresh", (word) XR←GetTypeIndexS((word) (&string99)), 30);
   (* (( (ptr) gf←c0549)+165)/* var←c58208 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 788227);
   (void) XR←ImportProcS(var←c63040, 264193);
   (void) XR←ImportProcS(var←c63040, 266241);
   (void) XR←ImportProcS(var←c63040, 69994763);
   (void) XR←ImportProcS(var←c63040, 2622986);
   (void) XR←ImportProcS(var←c63040, 67375361);
   var←c63040 = (word) XR←ImportInterface((word) "GGScene", (word) XR←GetTypeIndexS((word) (&string100)), 50);
   (* (( (ptr) gf←c0549)+175)/* var←c59840 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 134744834);
   (void) XR←ImportProcS(var←c63040, 67637506);
   (void) XR←ImportProcS(var←c63040, 787715);
   (void) XR←ImportProcS(var←c63040, 68165892);
   (void) XR←ImportProcS(var←c63040, 274177);
   var←c63040 = (word) XR←ImportInterface((word) "GGSegment", (word) XR←GetTypeIndexS((word) (&string101)), 47);
   (* (( (ptr) gf←c0549)+183)/* var←c61888 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 1056003);
   (void) XR←ImportProcS(var←c63040, 527874);
   (void) XR←ImportProcS(var←c63040, 527362);
   (void) XR←ImportProcS(var←c63040, 68419843);
   (void) XR←ImportProcS(var←c63040, 69468677);
   var←c63040 = (word) XR←ImportInterface((word) "GGSelect", (word) XR←GetTypeIndexS((word) (&string102)), 23);
   (* (( (ptr) gf←c0549)+170)/* var←c58496 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 1051396);
   (void) XR←ImportProcS(var←c63040, 67637250);
   (void) XR←ImportProcS(var←c63040, 786947);
   (void) XR←ImportProcS(var←c63040, 526594);
   var←c63040 = (word) XR←ImportInterface((word) "GGSequence", (word) XR←GetTypeIndexS((word) (&string103)), 58);
   (* (( (ptr) gf←c0549)+179)/* var←c61152 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67637250);
   (void) XR←ImportProcS(var←c63040, 67634434);
   (void) XR←ImportProcS(var←c63040, 67634178);
   (void) XR←ImportProcS(var←c63040, 67640578);
   (void) XR←ImportProcS(var←c63040, 67639554);
   (void) XR←ImportProcS(var←c63040, 67895299);
   var←c63040 = (word) XR←ImportInterface((word) "GGSlice", (word) XR←GetTypeIndexS((word) (&string104)), 128);
   (* (( (ptr) gf←c0549)+180)/* var←c61216 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67634178);
   var←c63040 = (word) XR←ImportInterface((word) "GGSliceOps", (word) XR←GetTypeIndexS((word) (&string105)), 73);
   (* (( (ptr) gf←c0549)+159)/* var←c57824 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67633922);
   (void) XR←ImportProcS(var←c63040, 1062148);
   (void) XR←ImportProcS(var←c63040, 67376897);
   (void) XR←ImportProcS(var←c63040, 67640066);
   (void) XR←ImportProcS(var←c63040, 67901699);
   (void) XR←ImportProcS(var←c63040, 67375873);
   (void) XR←ImportProcS(var←c63040, 67371521);
   (void) XR←ImportProcS(var←c63040, 134756866);
   (void) XR←ImportProcS(var←c63040, 134756354);
   (void) XR←ImportProcS(var←c63040, 337127684);
   var←c63040 = (word) XR←ImportInterface((word) "GGState", (word) XR←GetTypeIndexS((word) (&string106)), 119);
   (* (( (ptr) gf←c0549)+161)/* var←c57920 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67395585);
   (void) XR←ImportProcS(var←c63040, 67396609);
   (void) XR←ImportProcS(var←c63040, 549122);
   (void) XR←ImportProcS(var←c63040, 67397633);
   (void) XR←ImportProcS(var←c63040, 550146);
   (void) XR←ImportProcS(var←c63040, 551170);
   (void) XR←ImportProcS(var←c63040, 67396097);
   (void) XR←ImportProcS(var←c63040, 67109888);
   var←c63040 = (word) XR←ImportInterface((word) "GGTraj", (word) XR←GetTypeIndexS((word) (&string107)), 55);
   (* (( (ptr) gf←c0549)+178)/* var←c60992 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 134749698);
   (void) XR←ImportProcS(var←c63040, 134749186);
   (void) XR←ImportProcS(var←c63040, 67633153);
   (void) XR←ImportProcS(var←c63040, 68157956);
   (void) XR←ImportProcS(var←c63040, 67379457);
   (void) XR←ImportProcS(var←c63040, 67379969);
   (void) XR←ImportProcS(var←c63040, 67639554);
   (void) XR←ImportProcS(var←c63040, 402927873);
   var←c63040 = (word) XR←ImportInterface((word) "GGUserInput", (word) XR←GetTypeIndexS((word) (&string108)), 13);
   (* (( (ptr) gf←c0549)+157)/* var←c57728 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 1312261);
   var←c63040 = (word) XR←ImportInterface((word) "GGUtility", (word) XR←GetTypeIndexS((word) (&string109)), 42);
   (* (( (ptr) gf←c0549)+181)/* var←c61376 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67643394);
   var←c63040 = (word) XR←ImportInterface((word) "GGWindow", (word) XR←GetTypeIndexS((word) (&string110)), 12);
   (* (( (ptr) gf←c0549)+171)/* var←c58592 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 262657);
   (void) XR←ImportProcS(var←c63040, 1572870);
   var←c63040 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string111)), 55);
   (* (( (ptr) gf←c0549)+174)/* var←c59680 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67634689);
   (void) XR←ImportProcS(var←c63040, 67371777);
   var←c63040 = (word) XR←ImportInterface((word) "IO", (word) XR←GetTypeIndexS((word) (&string112)), 103);
   (* (( (ptr) gf←c0549)+176)/* var←c60448 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67910402);
   var←c63040 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string113)), 43);
   (* (( (ptr) gf←c0549)+172)/* var←c59296 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 67633666);
   var←c63040 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string114)), 21);
   (* (( (ptr) gf←c0549)+160)/* var←c57888 */  ) = var←c63040;
   (void) XR←ImportProcS(var←c63040, 135268098);
   (void) XR←ImportProcS(var←c63040, 135270914);
   (void) XR←ImportProcS(var←c63040, 135267842);
   (void) XR←ImportProcS(var←c63040, 67637249);
   var←c63040 = (word) XR←ExportInterface((word) &string94, (word) XR←GetTypeIndexS((word) (&string95)), 32);
   (* (( (ptr) gf←c0549)+184)/* var←c63072 */  ) = var←c63040;
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+520)/* var←c57280 */ , 2360326, (word) "SelectFromFeature");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+576)/* var←c57504 */ , 68158723, (word) "StartSelect");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+568)/* var←c57472 */ , 1050115, (word) "DuringSelect");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+560)/* var←c57440 */ , 1050371, (word) "EndSelect");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+432)/* var←c56928 */ , 68159491, (word) "StartExtendSelect");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+424)/* var←c56896 */ , 68159747, (word) "StartExtendSelection")
   ;
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+416)/* var←c56864 */ , 1051139, (word) "DuringExtendSelection")
   ;
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+400)/* var←c56800 */ , 1051395, (word) "EndExtendSelection");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+480)/* var←c57120 */ , 68160515, (word) "StartDeselect");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+472)/* var←c57088 */ , 1051907, (word) "DuringDeselect");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+448)/* var←c56992 */ , 1052163, (word) "EndDeselect");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+392)/* var←c56768 */ , 68161283, (word) "StartAddBezier");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+376)/* var←c56704 */ , 1052675, (word) "DuringBezierDrag");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+360)/* var←c56640 */ , 1052931, (word) "EndBezierAdd");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+352)/* var←c56608 */ , 1053187, (word) "AbortBezierAdd");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+368)/* var←c56672 */ , 68162307, (word) "ContinueBezierAdd");
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+608)/* var←c57632 */ , 2366726, (word) "SetCaretAttractorEndpoint")
   ;
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+600)/* var←c57600 */ , 134749698, (word) "SetStrokeColorRemote")
   ;
   (void) XR←ExportProcS(var←c63040, (word) (( (bPt) gf←c0549)+592)/* var←c57568 */ , 134749954, (word) "SetFillColorRemote")
   ;
   var←c63040 = (word) XR←ExportInterface((word) "GGInterfaceTypes", (word) XR←GetTypeIndexS((word) (&string115)), 6);
   (* (( (ptr) gf←c0549)+185)/* var←c63104 */  ) = var←c63040;
   (void) XR←ExportType((word) "DragDataObj", (word) XR←GetTypeIndexS((word) (&string116)), (word) XR←GetTypeIndex((word) &string117, 0, (word) &string118)
      );
   (void) XR←ExportType((word) "RefreshDataObj", (word) XR←GetTypeIndexS((word) (&string119)), (word) XR←GetTypeIndex((word) &string120, 0, (word) &string121)
      );
   }

static void GGMouseEventImplB←P0(formal←c072, formal←c071)
   word formal←c072;
   word formal←c071;
   {
   register ptr gf←c63136 =  (ptr) &globalframe;
   /* GGMouseEventImplB: */ 
SOURCE(484, 41897)
SOURCE(2622, 17)
   (* (( (ptr) gf←c63136)+4)/* Problem←v5492 */  ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c63136)+156)/* var←c57696 */  ))+28)
    ) );
SOURCE(42325, 56)
   {
      word pd122;
      pd122 = (* (( (ptr) (* (( (ptr) gf←c63136)+157)/* var←c57728 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd122 ))))((* (( (ptr) gf←c63136)+87) ), (word) (( (bPt) gf←c63136)+536)/* var←c57344 */ , 0, 0, 0, pd122)
      ;
      };
   }

static void SetCaretAttractorEndpoint←P60(ggData←v6612, mapPoint←v6640, normal←v6668, testPoint←v6696, feature←v6724, hitData←v6752)
   word ggData←v6612;
   W2 mapPoint←v6640;
   W2 normal←v6668;
   W2 testPoint←v6696;
   word feature←v6724;
   word hitData←v6752;
   {
   register ptr gf←c63168 =  (ptr) &globalframe;
   /* SetCaretAttractorEndpoint: */ 
SOURCE(2676, 676)
SOURCE(2827, 525)
   if ((feature←v6724 == 0)) {
SOURCE(2847, 63)
      {
         word pd123;
         pd123 = (* (( (ptr) (* (( (ptr) gf←c63168)+158)/* var←c57760 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd123 ))))((* (( (ptr) ggData←v6612)+13) ), mapPoint←v6640, normal←v6668, 0, pd123);
         };
      }
   else {
SOURCE(2910, 444)
      {
         word shape←v9984;
SOURCE(2912, 30)
         shape←v9984 = (* (( (ptr) feature←v6724)+1) );
SOURCE(2944, 408)
         {
            word var←c57792;
            var←c57792 = (*  (ptr) feature←v6724 );
            if ((var←c57792 == 0)) {
SOURCE(2978, 303)
               {
                  W2 pos←v10040;
                  word sliceD←v10068;
                  word jointD←v10096 = 0;
SOURCE(2992, 39)
                  sliceD←v10068 = XR←Narrow(shape←v9984, (* (( (ptr) gf←c63168)+10) ));
SOURCE(3058, 94)
                  {
                     W5 var←c57856;
                     {
                        word pd124;
                        pd124 = (* (( (ptr) (* (( (ptr) gf←c63168)+159)/* var←c57824 */  ))+45) );
                        (void) ( *( (fPt) ((*  (ptr) pd124 ))))((word) &var←c57856, sliceD←v10068, mapPoint←v6640, testPoint←v6696, hitData←v6752, pd124)
                        ;
                        };
                     normal←v6668 = (*  (W2Pt) (( (ptr) &var←c57856)+3) );
                     pos←v10040 = (*  (W2Pt) (( (ptr) &var←c57856)+1) );
                     jointD←v10096 = var←c57856.f0;
                     };
SOURCE(3154, 66)
                  {
                     word pd125;
                     word x126;
                     word x128;
                     pd125 = (* (( (ptr) (* (( (ptr) gf←c63168)+160)/* var←c57888 */  ))+20) );
                     if (((
                        x126 = (word) ( *( (fPt) ((*  (ptr) pd125 ))))(normal←v6668, pd125),  *(float*)&x126
                        ) == (
                        x128 = (*  (ptr) &fc127 ),  *(float*)&x128
                        ))) {
SOURCE(3204, 16)
                        normal←v6668.f0 = (*  (ptr) &fc127 );
                        normal←v6668.f1 = (*  (ptr) &fc129 );
                        };
                     };
SOURCE(3224, 55)
                  {
                     word pd130;
                     pd130 = (* (( (ptr) (* (( (ptr) gf←c63168)+158)/* var←c57760 */  ))+12) );
                     (void) ( *( (fPt) ((*  (ptr) pd130 ))))((* (( (ptr) ggData←v6612)+13) ), pos←v10040, normal←v6668, jointD←v10096, pd130);
                     };
                  };
               }
            else {
SOURCE(3295, 57)
               {
                  word pd131;
                  pd131 = (* (( (ptr) (* (( (ptr) gf←c63168)+158)/* var←c57760 */  ))+12) );
                  (void) ( *( (fPt) ((*  (ptr) pd131 ))))((* (( (ptr) ggData←v6612)+13) ), mapPoint←v6640, normal←v6668, 0, pd131);
                  };
               };
            };
         };
      };
   }

static void SetStrokeColorRemote←P120(formal←c097, ggData←v6828, sliceD←v6856)
   word formal←c097;
   word ggData←v6828;
   word sliceD←v6856;
   {
   register ptr gf←c63200 =  (ptr) &globalframe;
   word doNormalBehavior←v6900;
   word done←v6928;
   word theirData←v10140;
   word theirScene←v10168 = 0;
   word ourColor←v10196 = 0;
   word success←v10224 = 0;
   /* SetStrokeColorRemote: */ 
SOURCE(3361, 804)
SOURCE(3361, 804)
   doNormalBehavior←v6900 = 0;
SOURCE(3361, 804)
   done←v6928 = 0;
SOURCE(3502, 45)
   {
      word pd132;
      pd132 = (* (( (ptr) (* (( (ptr) gf←c63200)+161)/* var←c57920 */  ))+8) );
      theirData←v10140 = (word) ( *( (fPt) ((*  (ptr) pd132 ))))(pd132);
      };
SOURCE(3615, 194)
   if ((theirData←v10140 == 0)) {
SOURCE(3641, 123)
      {
         word pd133;
         pd133 = (* (( (ptr) (* (( (ptr) gf←c63200)+156)/* var←c57696 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd133 ))))((* (( (ptr) ggData←v6828)+3) ), 0, (* (( (ptr) gf←c63200)+83) ), (* (( (ptr) gf←c63200)+80)
             ), pd133);
         };
SOURCE(3766, 6)
      goto lab←L100000;
      }
   else {
SOURCE(3781, 28)
      theirScene←v10168 = (* (( (ptr) theirData←v10140)+11) );
      };
SOURCE(3811, 75)
   {
      W2 var←c57952;
      {
         word pd134;
         pd134 = (* (( (ptr) (* (( (ptr) gf←c63200)+159)/* var←c57824 */  ))+60) );
         (void) ( *( (fPt) ((*  (ptr) pd134 ))))((word) &var←c57952, (*  (ptr) sliceD←v6856 ), (* (( (ptr) sliceD←v6856)+1) ), pd134)
         ;
         };
      success←v10224 = var←c57952.f1;
      ourColor←v10196 = var←c57952.f0;
      };
SOURCE(3888, 277)
   if ((0 != success←v10224)) {
SOURCE(3906, 87)
      {
         word var←c57984;
         {
            word pd135;
            pd135 = (* (( (ptr) (* (( (ptr) gf←c63200)+162)/* var←c58016 */  ))+5) );
            var←c57984 = (word) ( *( (fPt) ((*  (ptr) pd135 ))))(ourColor←v10196, pd135);
            };
         {
            word pd136;
            pd136 = (* (( (ptr) (* (( (ptr) gf←c63200)+163)/* var←c58048 */  ))+14) );
            (void) ( *( (fPt) ((*  (ptr) pd136 ))))(theirData←v10140, ourColor←v10196, var←c57984, 1, (* (( (ptr) gf←c63200)+74) ), pd136)
            ;
            };
         };
SOURCE(3995, 38)
      (void) SendColorToColorTool←P240(ggData←v6828, ourColor←v10196);
      }
   else {
SOURCE(4044, 121)
      {
         word pd137;
         pd137 = (* (( (ptr) (* (( (ptr) gf←c63200)+156)/* var←c57696 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd137 ))))((* (( (ptr) ggData←v6828)+3) ), 0, (* (( (ptr) gf←c63200)+83) ), (* (( (ptr) gf←c63200)+68)
             ), pd137);
         };
      };
   /* removed tail goto */ 
   lab←L100000: ;
   (*  (ptr) formal←c097 ) = doNormalBehavior←v6900;
   (* (( (ptr) formal←c097)+1) ) = done←v6928;
   return;
   }

static void SetFillColorRemote←P180(formal←c0109, ggData←v6988, sliceD←v7016)
   word formal←c0109;
   word ggData←v6988;
   word sliceD←v7016;
   {
   register ptr gf←c63232 =  (ptr) &globalframe;
   word doNormalBehavior←v7060;
   word done←v7088;
   word theirData←v10268;
   word theirScene←v10296 = 0;
   word ourColor←v10324 = 0;
   word success←v10352 = 0;
   /* SetFillColorRemote: */ 
SOURCE(4174, 801)
SOURCE(4174, 801)
   doNormalBehavior←v7060 = 0;
SOURCE(4174, 801)
   done←v7088 = 0;
SOURCE(4313, 45)
   {
      word pd138;
      pd138 = (* (( (ptr) (* (( (ptr) gf←c63232)+161)/* var←c57920 */  ))+8) );
      theirData←v10268 = (word) ( *( (fPt) ((*  (ptr) pd138 ))))(pd138);
      };
SOURCE(4426, 192)
   if ((theirData←v10268 == 0)) {
SOURCE(4452, 121)
      {
         word pd139;
         pd139 = (* (( (ptr) (* (( (ptr) gf←c63232)+156)/* var←c57696 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd139 ))))((* (( (ptr) ggData←v6988)+3) ), 0, (* (( (ptr) gf←c63232)+83) ), (* (( (ptr) gf←c63232)+51)
             ), pd139);
         };
SOURCE(4575, 6)
      goto lab←L100001;
      }
   else {
SOURCE(4590, 28)
      theirScene←v10296 = (* (( (ptr) theirData←v10268)+11) );
      };
SOURCE(4620, 73)
   {
      W2 var←c58080;
      {
         word pd140;
         pd140 = (* (( (ptr) (* (( (ptr) gf←c63232)+159)/* var←c57824 */  ))+62) );
         (void) ( *( (fPt) ((*  (ptr) pd140 ))))((word) &var←c58080, (*  (ptr) sliceD←v7016 ), (* (( (ptr) sliceD←v7016)+1) ), pd140)
         ;
         };
      success←v10352 = var←c58080.f1;
      ourColor←v10324 = var←c58080.f0;
      };
SOURCE(4695, 280)
   if ((0 != success←v10352)) {
SOURCE(4713, 87)
      {
         word var←c58112;
         {
            word pd141;
            pd141 = (* (( (ptr) (* (( (ptr) gf←c63232)+162)/* var←c58016 */  ))+5) );
            var←c58112 = (word) ( *( (fPt) ((*  (ptr) pd141 ))))(ourColor←v10324, pd141);
            };
         {
            word pd142;
            pd142 = (* (( (ptr) (* (( (ptr) gf←c63232)+163)/* var←c58048 */  ))+13) );
            (void) ( *( (fPt) ((*  (ptr) pd142 ))))(theirData←v10268, ourColor←v10324, var←c58112, 1, (* (( (ptr) gf←c63232)+74) ), pd142)
            ;
            };
         };
SOURCE(4802, 38)
      (void) SendColorToColorTool←P240(ggData←v6988, ourColor←v10324);
      }
   else {
SOURCE(4851, 124)
      {
         word pd143;
         pd143 = (* (( (ptr) (* (( (ptr) gf←c63232)+156)/* var←c57696 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd143 ))))((* (( (ptr) ggData←v6988)+3) ), 0, (* (( (ptr) gf←c63232)+83) ), (* (( (ptr) gf←c63232)+50)
             ), pd143);
         };
      };
   /* removed tail goto */ 
   lab←L100001: ;
   (*  (ptr) formal←c0109 ) = doNormalBehavior←v7060;
   (* (( (ptr) formal←c0109)+1) ) = done←v7088;
   return;
   }

static void SendColorToColorTool←P240(ggData←v7288, formal←c0590)
   word ggData←v7288;
   word formal←c0590;
   {
   W7 var←c63264;
   /* declaration of color←v7316 skipped */ 
   register ptr gf←c63296 =  (ptr) &globalframe;
   var←c63264.f4/* color←v7316 */  = formal←c0590;
   /* SendColorToColorTool: */ 
SOURCE(5178, 335)
SOURCE(5240, 273)
   if ((0 != (word) XR←IsBound((* ((( (ptr) (* (( (ptr) gf←c63296)+164)/* var←c58144 */  ))+8)) )))) {
SOURCE(5285, 228)
      if ((var←c63264.f4/* color←v7316 */  == 0)) {
SOURCE(5303, 98)
         {
            word pd144;
            pd144 = (* (( (ptr) (* (( (ptr) gf←c63296)+156)/* var←c57696 */  ))+12) );
            (void) ( *( (fPt) ((*  (ptr) pd144 ))))((* (( (ptr) ggData←v7288)+3) ), 0, (* (( (ptr) gf←c63296)+83) ), (* (( (ptr) gf←c63296)+49)
                ), pd144);
            };
         }
      else {
SOURCE(5401, 127)
         {
            /* declaration of noColorTool←v10396 skipped */ 
SOURCE(5403, 25)
            var←c63264.f5/* noColorTool←v10396 */  = 0;
SOURCE(5430, 83)
SOURCE(5430, 83)
            {
               /* declaration of var←c01 skipped */ 
               var←c63264.f6/* var←c01 */  = (* (( (ptr) (* (( (ptr) gf←c63296)+164)/* var←c58144 */  ))+8) );
               {
                  word var←c02;
                  {
                     word var←c0586;
                     var←c0586 = (word) &var←c63264;
                     var←c02 = (word) XR←Enable(( ((word)  (fPt) NoName←Q3204) ), ( ((word)  (fPt) NoName←Q3264) ), var←c0586);
                     };
                  /* removed trivial cond node */ 
                  };
               };
            };
         };
      };
   }

static word NoName←Q3204(formal←c0555)
   word formal←c0555;
   {
SOURCE(5430, 83)
   {
      word pd145;
      pd145 = (* (( (ptr) formal←c0555)+6) );
      (void) ( *( (fPt) ((*  (ptr) pd145 ))))((* (( (ptr) formal←c0555)+4) ), 0, pd145);
      };
   return(0);
   }

static word StartSelect←P300(input←v23300, ggData←v23328, worldPt←v23356)
   word input←v23300;
   word ggData←v23328;
   W2 worldPt←v23356;
   {
   register ptr gf←c63328 =  (ptr) &globalframe;
   word success←v23400;
   /* StartSelect: */ 
SOURCE(5538, 427)
SOURCE(5538, 427)
   success←v23400 = 1;
SOURCE(5572, 252)
   {
      word var←c58176;
      var←c58176 = (*  (ptr) input←v23300 );
      if ((var←c58176 == (* (( (ptr) gf←c63328)+38) ))) {
SOURCE(5617, 31)
         (* (( (ptr) (* (( (ptr) ggData←v23328)+16) ))+14) ) = 1;
         goto endif0146;
         };
      if ((var←c58176 == (* (( (ptr) gf←c63328)+37) ))) {
SOURCE(5673, 33)
         (* (( (ptr) (* (( (ptr) ggData←v23328)+16) ))+14) ) = 3;
         goto endif0146;
         };
      if ((var←c58176 == (* (( (ptr) gf←c63328)+22) ))) {
SOURCE(5734, 30)
         (* (( (ptr) (* (( (ptr) ggData←v23328)+16) ))+14) ) = 5;
         goto endif0146;
         };
      if ((var←c58176 == (* (( (ptr) gf←c63328)+23) ))) {
SOURCE(5790, 34)
         (* (( (ptr) (* (( (ptr) ggData←v23328)+16) ))+14) ) = 7;
         goto endif0146;
         };
SOURCE(5837, 5)
      (void) XR←RaiseUnnamedError();
      goto endif0146;
      endif0146: ;
      };
SOURCE(5844, 43)
   {
      word pd147;
      pd147 = (* (( (ptr) (* (( (ptr) gf←c63328)+165)/* var←c58208 */  ))+21) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd147 ))))(ggData←v23328, pd147))) {
SOURCE(5887, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(5894, 35)
   {
      word pd148;
      pd148 = (* (( (ptr) (* (( (ptr) gf←c63328)+166)/* var←c58240 */  ))+24) );
      (void) ( *( (fPt) ((*  (ptr) pd148 ))))(ggData←v23328, pd148);
      };
SOURCE(5931, 34)
   (void) DuringSelect←P360(0, ggData←v23328, worldPt←v23356);
SOURCE(5538, 427)
   return(success←v23400);
   }

static void DuringSelect←P360(input←v23460, ggData←v23488, worldPt←v23516)
   word input←v23460;
   word ggData←v23488;
   W2 worldPt←v23516;
   {
   register ptr gf←c63360 =  (ptr) &globalframe;
   W2 resultPoint←v10468;
   W2 normal←v10496;
   word feature←v10524 = 0;
   word hitData←v10552 = 0;
   /* DuringSelect: */ 
SOURCE(5971, 1521)
SOURCE(6116, 44)
   {
      word pd149;
      pd149 = (* (( (ptr) (* (( (ptr) gf←c63360)+167)/* var←c58272 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd149 ))))((* (( (ptr) gf←c63360)+25) ), (* (( (ptr) gf←c63360)+26) ), pd149);
      };
SOURCE(6162, 109)
   {
      word pd150;
      pd150 = (* (( (ptr) (* (( (ptr) gf←c63360)+165)/* var←c58208 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd150 ))))(ggData←v23488, 0, 1, 0, 0, 0
         , 1, 0, 1, 0, pd150);
      };
SOURCE(6273, 656)
   {
      word var←c58304;
      {
         word pd151;
         pd151 = (* (( (ptr) (* (( (ptr) gf←c63360)+161)/* var←c57920 */  ))+102) );
         var←c58304 = (word) ( *( (fPt) ((*  (ptr) pd151 ))))(ggData←v23488, pd151);
         };
      switch (var←c58304) {
         case 1: 
SOURCE(6324, 162)
            {
               W6 var←c58400;
               {
                  word pd152;
                  pd152 = (* (( (ptr) (* (( (ptr) gf←c63360)+169)/* var←c58368 */  ))+5) );
                  (void) ( *( (fPt) ((*  (ptr) pd152 ))))((word) &var←c58400, worldPt←v23516, (*  (ptr) (* (( (ptr) ggData←v23488)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63360)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23488)+18) ))+8) ), ggData←v23488
                     , 0, pd152);
                  };
               hitData←v10552 = var←c58400.f5;
               feature←v10524 = var←c58400.f4;
               normal←v10496 = (*  (W2Pt) (( (ptr) &var←c58400)+2) );
               resultPoint←v10468 = (*  (W2Pt) &var←c58400 );
               };
            break;
         case 3: case 4: 
SOURCE(6513, 154)
            {
               W6 var←c58432;
               {
                  word pd153;
                  pd153 = (* (( (ptr) (* (( (ptr) gf←c63360)+169)/* var←c58368 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd153 ))))((word) &var←c58432, worldPt←v23516, (*  (ptr) (* (( (ptr) ggData←v23488)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63360)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23488)+18) ))+8) ), ggData←v23488, pd153)
                  ;
                  };
               hitData←v10552 = var←c58432.f5;
               feature←v10524 = var←c58432.f4;
               normal←v10496 = (*  (W2Pt) (( (ptr) &var←c58432)+2) );
               resultPoint←v10468 = (*  (W2Pt) &var←c58432 );
               };
            break;
         case 5: case 7: case 6: 
SOURCE(6694, 154)
            {
               W6 var←c58464;
               {
                  word pd154;
                  pd154 = (* (( (ptr) (* (( (ptr) gf←c63360)+169)/* var←c58368 */  ))+7) );
                  (void) ( *( (fPt) ((*  (ptr) pd154 ))))((word) &var←c58464, worldPt←v23516, (*  (ptr) (* (( (ptr) ggData←v23488)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63360)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23488)+18) ))+8) ), ggData←v23488, pd154)
                  ;
                  };
               hitData←v10552 = var←c58464.f5;
               feature←v10524 = var←c58464.f4;
               normal←v10496 = (*  (W2Pt) (( (ptr) &var←c58464)+2) );
               resultPoint←v10468 = (*  (W2Pt) &var←c58464 );
               };
            break;
         case 8: 
SOURCE(6860, 21)
            resultPoint←v10468 = worldPt←v23516;
SOURCE(6883, 16)
            normal←v10496.f0 = (*  (ptr) &fc127 );
            normal←v10496.f1 = (*  (ptr) &fc129 );
SOURCE(6901, 13)
            feature←v10524 = 0;
SOURCE(6916, 13)
            hitData←v10552 = 0;
            break;
         default: 
SOURCE(6945, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(6952, 94)
   {
      word pd155;
      pd155 = (* (( (ptr) (* (( (ptr) gf←c63360)+166)/* var←c58240 */  ))+33) );
      (void) ( *( (fPt) ((*  (ptr) pd155 ))))(ggData←v23488, resultPoint←v10468, normal←v10496, worldPt←v23516, feature←v10524, hitData←v10552, pd155)
      ;
      };
SOURCE(7048, 42)
   {
      word pd156;
      pd156 = (* (( (ptr) (* (( (ptr) gf←c63360)+170)/* var←c58496 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd156 ))))((* (( (ptr) ggData←v23488)+11) ), 0, pd156);
      };
SOURCE(7092, 198)
   if ((feature←v10524 != 0)) {
SOURCE(7112, 96)
      {
         word var←c58528;
         var←c58528 = (word) SelectAndDescribeSlicePart←P840(feature←v10524, hitData←v10552, ggData←v23488, (* (( (ptr) (* (( (ptr) ggData←v23488)+16)
                ))+14) ), (* (( (ptr) gf←c63360)+24) ));
         };
      }
   else {
SOURCE(7208, 82)
      {
         W2 var←c58560;
         var←c58560.f0 = 11;
         var←c58560.f1 = (* (( (ptr) gf←c63360)+24) );
         {
            word pd157;
            pd157 = (* (( (ptr) (* (( (ptr) gf←c63360)+156)/* var←c57696 */  ))+14) );
            (void) ( *( (fPt) ((*  (ptr) pd157 ))))((* (( (ptr) ggData←v23488)+3) ), 0, (* (( (ptr) gf←c63360)+27) ), (* (( (ptr) gf←c63360)+28)
                ), var←c58560, pd157);
            };
         };
      };
SOURCE(7292, 155)
   {
      word pd158;
      pd158 = (* (( (ptr) (* (( (ptr) gf←c63360)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd158 ))))((* (( (ptr) gf←c63360)+25) ), ggData←v23488, 4, 0, 1, 1, pd158);
      };
SOURCE(7449, 43)
   {
      word pd159;
      pd159 = (* (( (ptr) (* (( (ptr) gf←c63360)+167)/* var←c58272 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd159 ))))((* (( (ptr) gf←c63360)+25) ), (* (( (ptr) gf←c63360)+26) ), pd159);
      };
   }

static void EndSelect←P420(input←v23576, ggData←v23604, worldPt←v23632)
   word input←v23576;
   word ggData←v23604;
   W2 worldPt←v23632;
   {
   register ptr gf←c63392 =  (ptr) &globalframe;
   W2 resultPoint←v10608;
   W2 normal←v10636;
   word feature←v10664 = 0;
   word hitData←v10692 = 0;
   word featureCycler←v10720 = 0;
   /* EndSelect: */ 
SOURCE(7518, 1199)
SOURCE(7674, 487)
   {
      word var←c58624;
      {
         word pd160;
         pd160 = (* (( (ptr) (* (( (ptr) gf←c63392)+161)/* var←c57920 */  ))+102) );
         var←c58624 = (word) ( *( (fPt) ((*  (ptr) pd160 ))))(ggData←v23604, pd160);
         };
      if ((var←c58624 == 1)) {
SOURCE(7725, 142)
         {
            word pd161;
            pd161 = (* (( (ptr) (* (( (ptr) gf←c63392)+169)/* var←c58368 */  ))+9) );
            featureCycler←v10720 = (word) ( *( (fPt) ((*  (ptr) pd161 ))))(worldPt←v23632, (*  (ptr) (* (( (ptr) ggData←v23604)+18) ) ), (*  (ptr) (* (
                  ( (ptr) (* (( (ptr) gf←c63392)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23604)+18) ))+8) ), ggData←v23604, 0
               , 1, pd161);
            };
         }
      else {
         if ((var←c58624 == 3)) {
SOURCE(7880, 134)
            {
               word pd162;
               pd162 = (* (( (ptr) (* (( (ptr) gf←c63392)+169)/* var←c58368 */  ))+10) );
               featureCycler←v10720 = (word) ( *( (fPt) ((*  (ptr) pd162 ))))(worldPt←v23632, (*  (ptr) (* (( (ptr) ggData←v23604)+18) ) ), (*  (ptr) (* (
                     ( (ptr) (* (( (ptr) gf←c63392)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23604)+18) ))+8) ), ggData←v23604, pd162)
               ;
               };
            }
         else {
SOURCE(8027, 134)
            {
               word pd163;
               pd163 = (* (( (ptr) (* (( (ptr) gf←c63392)+169)/* var←c58368 */  ))+11) );
               featureCycler←v10720 = (word) ( *( (fPt) ((*  (ptr) pd163 ))))(worldPt←v23632, (*  (ptr) (* (( (ptr) ggData←v23604)+18) ) ), (*  (ptr) (* (
                     ( (ptr) (* (( (ptr) gf←c63392)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23604)+18) ))+8) ), ggData←v23604, pd163)
               ;
               };
            };
         };
      };
SOURCE(8163, 49)
   {
      word pd164;
      pd164 = (* (( (ptr) (* (( (ptr) gf←c63392)+161)/* var←c57920 */  ))+109) );
      (void) ( *( (fPt) ((*  (ptr) pd164 ))))(ggData←v23604, featureCycler←v10720, pd164);
      };
SOURCE(8214, 84)
   {
      W6 var←c58656;
      {
         word pd165;
         pd165 = (* (( (ptr) (* (( (ptr) gf←c63392)+169)/* var←c58368 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd165 ))))((word) &var←c58656, featureCycler←v10720, pd165);
         };
      hitData←v10692 = var←c58656.f5;
      feature←v10664 = var←c58656.f4;
      normal←v10636 = (*  (W2Pt) (( (ptr) &var←c58656)+2) );
      resultPoint←v10608 = (*  (W2Pt) &var←c58656 );
      };
SOURCE(8300, 94)
   {
      word pd166;
      pd166 = (* (( (ptr) (* (( (ptr) gf←c63392)+166)/* var←c58240 */  ))+33) );
      (void) ( *( (fPt) ((*  (ptr) pd166 ))))(ggData←v23604, resultPoint←v10608, normal←v10636, worldPt←v23632, feature←v10664, hitData←v10692, pd166)
      ;
      };
SOURCE(8396, 28)
   {
      word pd167;
      pd167 = (* (( (ptr) (* (( (ptr) gf←c63392)+171)/* var←c58592 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd167 ))))(ggData←v23604, pd167);
      };
SOURCE(8426, 42)
   {
      word pd168;
      pd168 = (* (( (ptr) (* (( (ptr) gf←c63392)+170)/* var←c58496 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd168 ))))((* (( (ptr) ggData←v23604)+11) ), 0, pd168);
      };
SOURCE(8470, 121)
   {
      word var←c58688;
      var←c58688 = (word) RopeFromSelectMode←P540((* ((( (ptr) (* (( (ptr) ggData←v23604)+16) ))+14)) ));
      (void) EndSelectAux←P780(ggData←v23604, resultPoint←v10608, feature←v10664, hitData←v10692, (* (( (ptr) (* (( (ptr) ggData←v23604)+16)
             ))+14) ), var←c58688);
      };
SOURCE(8593, 124)
   {
      word pd169;
      pd169 = (* (( (ptr) (* (( (ptr) gf←c63392)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd169 ))))((* (( (ptr) gf←c63392)+29) ), ggData←v23604, 4, 0, 0, 0, pd169);
      };
   }

static word SelectModeFromAtom←P480(atom←v7376)
   word atom←v7376;
   {
   register ptr gf←c63424 =  (ptr) &globalframe;
   word selectMode←v7420;
   /* SelectModeFromAtom: */ 
SOURCE(8810, 177)
SOURCE(8885, 102)
   {
      word var←c58720;
      var←c58720 = atom←v7376;
      if ((var←c58720 == (* (( (ptr) gf←c63424)+30) ))) {
         selectMode←v7420 = 1;
         goto endif0170;
         };
      if ((var←c58720 == (* (( (ptr) gf←c63424)+31) ))) {
         selectMode←v7420 = 3;
         goto endif0170;
         };
      if ((var←c58720 == (* (( (ptr) gf←c63424)+32) ))) {
         selectMode←v7420 = 5;
         goto endif0170;
         };
      selectMode←v7420 = 7;
      goto endif0170;
      endif0170: ;
      };
SOURCE(8810, 177)
   return(selectMode←v7420);
   }

static word RopeFromSelectMode←P540(selectMode←v7480)
   word selectMode←v7480;
   {
   register ptr gf←c63456 =  (ptr) &globalframe;
   word rope←v7524;
   /* RopeFromSelectMode: */ 
SOURCE(8993, 186)
SOURCE(8993, 186)
   rope←v7524 = 0;
SOURCE(9068, 111)
   {
      word var←c58752;
      var←c58752 = selectMode←v7480;
      switch (var←c58752) {
         case 1: 
            rope←v7524 = (* (( (ptr) gf←c63456)+33) );
            break;
         case 3: 
            rope←v7524 = (* (( (ptr) gf←c63456)+34) );
            break;
         case 5: 
            rope←v7524 = (* (( (ptr) gf←c63456)+35) );
            break;
         default: 
            rope←v7524 = (* (( (ptr) gf←c63456)+36) );
            break;
         };
      };
SOURCE(8993, 186)
   return(rope←v7524);
   }

static void Select←P600(ggData←v23692, event←v23720)
   word ggData←v23692;
   word event←v23720;
   {
   register ptr gf←c63488 =  (ptr) &globalframe;
   W2 resultPoint←v10776;
   W2 normal←v10804;
   word feature←v10832 = 0;
   word hitData←v10860 = 0;
   word featureCycler←v10888 = 0;
   W2 worldPt←v10916;
   word selectMode←v10944 = 7;
   word gravExtent←v10972;
   word gravType←v11000;
   word gravTypeSpecified←v11028 = 0;
   word listIndex←v11056 = 0;
   /* Select: */ 
SOURCE(10923, 2624)
SOURCE(11086, 22)
   worldPt←v10916.f0 = (*  (ptr) &fc127 );
   worldPt←v10916.f1 = (*  (ptr) &fc127 );
SOURCE(11145, 35)
   gravExtent←v10972 = (*  (ptr) (* (( (ptr) ggData←v23692)+18) ) );
SOURCE(11182, 50)
   gravType←v11000 = (* (( (ptr) (* (( (ptr) ggData←v23692)+18) ))+11) );
SOURCE(11288, 625)
   {
      register word loe←v11112;
      loe←v11112 = event←v23720;
      lab←L100009: ;
      if ((loe←v11112 != 0)) {
         }
      else {
         goto lab←L100006;
         };
      {
         word el←v11252;
SOURCE(11344, 19)
         el←v11252 = (*  (ptr) loe←v11112 );
SOURCE(11365, 462)
         {
            word var←c58816;
            var←c58816 = listIndex←v11056;
            switch (var←c58816) {
               case 0: 
SOURCE(11392, 33)
                  if ((XR←Narrow(el←v11252, (* (( (ptr) gf←c63488)+9) )) != (* (( (ptr) gf←c63488)+87) ))) {
SOURCE(11425, 5)
                     (void) XR←RaiseUnnamedError();
                     };
                  break;
               case 1: 
SOURCE(11439, 76)
                  {
                     word var←c58848;
                     var←c58848 = el←v11252;
                     if ((var←c58848 == 0)) {
                        goto lab←L100010;
                        };
                     if (((* (( (ptr) gf←c63488)+21) ) == XR←GetReferentType(var←c58848))) {
                        {
                           word p←v11308;
                           p←v11308 = var←c58848;
SOURCE(11475, 12)
                           worldPt←v10916 = (*  (W2Pt) p←v11308 );
                           };
                        }
                     else {
                        lab←L100010: ;
SOURCE(11500, 15)
                        worldPt←v10916.f0 = (*  (ptr) &fc127 );
                        worldPt←v10916.f1 = (*  (ptr) &fc127 );
                        };
                     };
                  break;
               case 2: 
SOURCE(11527, 99)
                  {
                     word var←c58880;
                     var←c58880 = el←v11252;
                     if ((var←c58880 == 0)) {
                        goto lab←L100011;
                        };
                     if (((* (( (ptr) gf←c63488)+9) ) == XR←GetReferentType(var←c58880))) {
                        {
                           word a←v11364;
                           a←v11364 = var←c58880;
SOURCE(11558, 34)
                           selectMode←v10944 = (word) SelectModeFromAtom←P480(a←v11364);
                           };
                        }
                     else {
                        lab←L100011: ;
SOURCE(11605, 21)
                        selectMode←v10944 = 7;
                        };
                     };
                  break;
               case 3: 
SOURCE(11638, 87)
                  {
                     word var←c58912;
                     var←c58912 = el←v11252;
                     if ((var←c58912 == 0)) {
                        goto lab←L100012;
                        };
                     if (((* (( (ptr) gf←c63488)+9) ) == XR←GetReferentType(var←c58912))) {
                        {
                           word g←v11408;
                           g←v11408 = var←c58912;
SOURCE(11670, 30)
                           gravType←v11000 = (word) GravTypeFromAtom←P660(g←v11408);
SOURCE(11702, 23)
                           gravTypeSpecified←v11028 = 1;
                           };
                        }
                     else {
                        lab←L100012: ;
                        };
                     };
                  break;
               case 4: 
SOURCE(11777, 50)
                  {
                     word var←c58944;
                     var←c58944 = el←v11252;
                     if ((var←c58944 == 0)) {
                        goto lab←L100013;
                        };
                     if (((* (( (ptr) gf←c63488)+20) ) == XR←GetReferentType(var←c58944))) {
                        {
                           word r←v11452;
                           r←v11452 = var←c58944;
SOURCE(11812, 15)
                           gravExtent←v10972 = (*  (ptr) r←v11452 );
                           };
                        }
                     else {
                        lab←L100013: ;
                        };
                     };
                  break;
               default: 
SOURCE(11883, 4)
                  goto lab←L100007;
               };
            };
SOURCE(11889, 24)
         listIndex←v11056 = (listIndex←v11056 + 1);
         };
      loe←v11112 = (* (( (ptr) loe←v11112)+1) );
      goto lab←L100009;
      lab←L100006: ;
      lab←L100007: ;
      };
SOURCE(11925, 109)
   {
      word pd171;
      pd171 = (* (( (ptr) (* (( (ptr) gf←c63488)+165)/* var←c58208 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd171 ))))(ggData←v23692, 0, 1, 0, 0, 0
         , 1, 0, 1, 0, pd171);
      };
SOURCE(12037, 948)
   if ((0 != gravTypeSpecified←v11028)) {
SOURCE(12063, 472)
      {
         word var←c58976;
         var←c58976 = gravType←v11000;
         if ((var←c58976 == 1)) {
SOURCE(12103, 136)
            {
               word pd172;
               pd172 = (* (( (ptr) (* (( (ptr) gf←c63488)+169)/* var←c58368 */  ))+9) );
               featureCycler←v10888 = (word) ( *( (fPt) ((*  (ptr) pd172 ))))(worldPt←v10916, gravExtent←v10972, (*  (ptr) (* (( (ptr) (* (
                        ( (ptr) gf←c63488)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23692)+18) ))+8) ), ggData←v23692, 0
                  , 1, pd172);
               };
            }
         else {
            if ((var←c58976 == 0)) {
SOURCE(12259, 128)
               {
                  word pd173;
                  pd173 = (* (( (ptr) (* (( (ptr) gf←c63488)+169)/* var←c58368 */  ))+10) );
                  featureCycler←v10888 = (word) ( *( (fPt) ((*  (ptr) pd173 ))))(worldPt←v10916, gravExtent←v10972, (*  (ptr) (* (( (ptr) (* (
                           ( (ptr) gf←c63488)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23692)+18) ))+8) ), ggData←v23692, pd173)
                  ;
                  };
               }
            else {
SOURCE(12401, 134)
               {
                  word pd174;
                  pd174 = (* (( (ptr) (* (( (ptr) gf←c63488)+169)/* var←c58368 */  ))+11) );
                  featureCycler←v10888 = (word) ( *( (fPt) ((*  (ptr) pd174 ))))(worldPt←v10916, gravExtent←v10972, (*  (ptr) (* (( (ptr) (* (
                           ( (ptr) gf←c63488)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23692)+18) ))+8) ), ggData←v23692, pd174)
                  ;
                  };
               };
            };
         };
      }
   else {
SOURCE(12535, 450)
      {
         word var←c59008;
         var←c59008 = selectMode←v10944;
         if ((var←c59008 == 1)) {
SOURCE(12567, 136)
            {
               word pd175;
               pd175 = (* (( (ptr) (* (( (ptr) gf←c63488)+169)/* var←c58368 */  ))+9) );
               featureCycler←v10888 = (word) ( *( (fPt) ((*  (ptr) pd175 ))))(worldPt←v10916, gravExtent←v10972, (*  (ptr) (* (( (ptr) (* (
                        ( (ptr) gf←c63488)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23692)+18) ))+8) ), ggData←v23692, 0
                  , 1, pd175);
               };
            }
         else {
            if ((var←c59008 == 3)) {
SOURCE(12716, 128)
               {
                  word pd176;
                  pd176 = (* (( (ptr) (* (( (ptr) gf←c63488)+169)/* var←c58368 */  ))+10) );
                  featureCycler←v10888 = (word) ( *( (fPt) ((*  (ptr) pd176 ))))(worldPt←v10916, gravExtent←v10972, (*  (ptr) (* (( (ptr) (* (
                           ( (ptr) gf←c63488)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23692)+18) ))+8) ), ggData←v23692, pd176)
                  ;
                  };
               }
            else {
SOURCE(12857, 128)
               {
                  word pd177;
                  pd177 = (* (( (ptr) (* (( (ptr) gf←c63488)+169)/* var←c58368 */  ))+11) );
                  featureCycler←v10888 = (word) ( *( (fPt) ((*  (ptr) pd177 ))))(worldPt←v10916, gravExtent←v10972, (*  (ptr) (* (( (ptr) (* (
                           ( (ptr) gf←c63488)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23692)+18) ))+8) ), ggData←v23692, pd177)
                  ;
                  };
               };
            };
         };
      };
SOURCE(12987, 49)
   {
      word pd178;
      pd178 = (* (( (ptr) (* (( (ptr) gf←c63488)+161)/* var←c57920 */  ))+109) );
      (void) ( *( (fPt) ((*  (ptr) pd178 ))))(ggData←v23692, featureCycler←v10888, pd178);
      };
SOURCE(13038, 84)
   {
      W6 var←c59040;
      {
         word pd179;
         pd179 = (* (( (ptr) (* (( (ptr) gf←c63488)+169)/* var←c58368 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd179 ))))((word) &var←c59040, featureCycler←v10888, pd179);
         };
      hitData←v10860 = var←c59040.f5;
      feature←v10832 = var←c59040.f4;
      normal←v10804 = (*  (W2Pt) (( (ptr) &var←c59040)+2) );
      resultPoint←v10776 = (*  (W2Pt) &var←c59040 );
      };
SOURCE(13124, 94)
   {
      word pd180;
      pd180 = (* (( (ptr) (* (( (ptr) gf←c63488)+166)/* var←c58240 */  ))+33) );
      (void) ( *( (fPt) ((*  (ptr) pd180 ))))(ggData←v23692, resultPoint←v10776, normal←v10804, worldPt←v10916, feature←v10832, hitData←v10860, pd180)
      ;
      };
SOURCE(13220, 28)
   {
      word pd181;
      pd181 = (* (( (ptr) (* (( (ptr) gf←c63488)+171)/* var←c58592 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd181 ))))(ggData←v23692, pd181);
      };
SOURCE(13250, 42)
   {
      word pd182;
      pd182 = (* (( (ptr) (* (( (ptr) gf←c63488)+170)/* var←c58496 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd182 ))))((* (( (ptr) ggData←v23692)+11) ), 0, pd182);
      };
SOURCE(13294, 95)
   {
      word var←c59072;
      var←c59072 = (word) RopeFromSelectMode←P540(selectMode←v10944);
      (void) EndSelectAux←P780(ggData←v23692, resultPoint←v10776, feature←v10832, hitData←v10860, selectMode←v10944, var←c59072)
      ;
      };
SOURCE(13391, 156)
   {
      word pd183;
      pd183 = (* (( (ptr) (* (( (ptr) gf←c63488)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd183 ))))((* (( (ptr) gf←c63488)+25) ), ggData←v23692, 4, 0, 1, 0, pd183);
      };
   }

static word GravTypeFromAtom←P660(atom←v7584)
   word atom←v7584;
   {
   register ptr gf←c63520 =  (ptr) &globalframe;
   word gravType←v7628;
   /* GravTypeFromAtom: */ 
SOURCE(13633, 223)
SOURCE(13705, 151)
   {
      word var←c59104;
      var←c59104 = atom←v7584;
      if ((var←c59104 == (* (( (ptr) gf←c63520)+39) ))) {
         gravType←v7628 = 0;
         goto endif0184;
         };
      if ((var←c59104 == (* (( (ptr) gf←c63520)+40) ))) {
         gravType←v7628 = 1;
         goto endif0184;
         };
      if ((var←c59104 == (* (( (ptr) gf←c63520)+41) ))) {
         gravType←v7628 = 2;
         goto endif0184;
         };
      gravType←v7628 = 2;
      goto endif0184;
      endif0184: ;
      };
SOURCE(13633, 223)
   return(gravType←v7628);
   }

static void SelectFromFeature←P720(ggData←v7688, testPoint←v7716, point←v7744, normal←v7772, feature←v7800, hitData←v7828)
   word ggData←v7688;
   W2 testPoint←v7716;
   W2 point←v7744;
   W2 normal←v7772;
   word feature←v7800;
   word hitData←v7828;
   {
   register ptr gf←c63552 =  (ptr) &globalframe;
   /* SelectFromFeature: */ 
SOURCE(13863, 1182)
SOURCE(14001, 1044)
SOURCE(14003, 54)
   {
      word selectMode←v11508;
SOURCE(14003, 54)
      {
         word pd185;
         pd185 = (* (( (ptr) (* (( (ptr) gf←c63552)+161)/* var←c57920 */  ))+102) );
         selectMode←v11508 = (word) ( *( (fPt) ((*  (ptr) pd185 ))))(ggData←v7688, pd185);
         };
SOURCE(14059, 26)
      if ((selectMode←v11508 == 8)) {
SOURCE(14085, 17)
         goto lab←L100014;
         };
SOURCE(14104, 130)
      {
         word pd186;
         pd186 = (* (( (ptr) (* (( (ptr) gf←c63552)+165)/* var←c58208 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd186 ))))(ggData←v7688, 0, 1, 0, 1, 0
            , 1, 0, 1, 0, pd186);
         };
SOURCE(14236, 73)
      (void) SetCaretAttractorEndpoint←P60(ggData←v7688, point←v7744, normal←v7772, point←v7744, feature←v7800, hitData←v7828);
SOURCE(14311, 28)
      {
         word pd187;
         pd187 = (* (( (ptr) (* (( (ptr) gf←c63552)+171)/* var←c58592 */  ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd187 ))))(ggData←v7688, pd187);
         };
SOURCE(14341, 42)
      {
         word pd188;
         pd188 = (* (( (ptr) (* (( (ptr) gf←c63552)+170)/* var←c58496 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd188 ))))((* (( (ptr) ggData←v7688)+11) ), 0, pd188);
         };
SOURCE(14385, 325)
      {
         word var←c59136;
         var←c59136 = selectMode←v11508;
         switch (var←c59136) {
            case 1: 
SOURCE(14417, 61)
               (void) EndSelectAux←P780(ggData←v7688, point←v7744, feature←v7800, hitData←v7828, 1, (* (( (ptr) gf←c63552)+33) ));
               break;
            case 3: 
SOURCE(14491, 65)
               (void) EndSelectAux←P780(ggData←v7688, point←v7744, feature←v7800, hitData←v7828, 3, (* (( (ptr) gf←c63552)+34) ));
               break;
            case 5: 
SOURCE(14566, 65)
               (void) EndSelectAux←P780(ggData←v7688, point←v7744, feature←v7800, hitData←v7828, 5, (* (( (ptr) gf←c63552)+35) ));
               break;
            case 7: 
SOURCE(14645, 65)
               (void) EndSelectAux←P780(ggData←v7688, point←v7744, feature←v7800, hitData←v7828, 7, (* (( (ptr) gf←c63552)+36) ));
               break;
            default: 
SOURCE(14723, 5)
               (void) XR←RaiseUnnamedError();
               break;
            };
         };
SOURCE(14730, 153)
      {
         word pd189;
         pd189 = (* (( (ptr) (* (( (ptr) gf←c63552)+171)/* var←c58592 */  ))+4) );
         (void) ( *( (fPt) ((*  (ptr) pd189 ))))((* (( (ptr) gf←c63552)+42) ), ggData←v7688, 4, 0, 1, 0, pd189);
         };
      };
   goto lab←L100015;
   lab←L100014: ;
SOURCE(14909, 131)
   {
      word pd190;
      pd190 = (* (( (ptr) (* (( (ptr) gf←c63552)+156)/* var←c57696 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd190 ))))((* (( (ptr) ggData←v7688)+3) ), 0, (* (( (ptr) gf←c63552)+83) ), (* (( (ptr) gf←c63552)+43)
          ), pd190);
      };
   lab←L100015: ;
   }

static void EndSelectAux←P780(ggData←v7900, resultPoint←v7928, feature←v7956, hitData←v7984, mode←v8012, opName←v8040)
   word ggData←v7900;
   W2 resultPoint←v7928;
   word feature←v7956;
   word hitData←v7984;
   word mode←v8012;
   word opName←v8040;
   {
   register ptr gf←c63584 =  (ptr) &globalframe;
   /* EndSelectAux: */ 
SOURCE(15049, 1133)
SOURCE(15186, 996)
   if ((feature←v7956 == 0)) {
SOURCE(15210, 32)
      {
         word pd191;
         pd191 = (* (( (ptr) (* (( (ptr) gf←c63584)+158)/* var←c57760 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd191 ))))((* (( (ptr) ggData←v7900)+13) ), 0, pd191);
         };
SOURCE(15244, 86)
      {
         W2 var←c59168;
         var←c59168.f0 = 11;
         var←c59168.f1 = opName←v8040;
         {
            word pd192;
            pd192 = (* (( (ptr) (* (( (ptr) gf←c63584)+156)/* var←c57696 */  ))+14) );
            (void) ( *( (fPt) ((*  (ptr) pd192 ))))((* (( (ptr) ggData←v7900)+3) ), 0, (* (( (ptr) gf←c63584)+44) ), (* (( (ptr) gf←c63584)+45)
                ), var←c59168, pd192);
            };
         };
      }
   else {
SOURCE(15341, 216)
      {
         word var←c59200;
         var←c59200 = mode←v8012;
         switch (var←c59200) {
            case 1: 
SOURCE(15367, 36)
               {
                  word pd193;
                  pd193 = (* (( (ptr) (* (( (ptr) gf←c63584)+161)/* var←c57920 */  ))+105) );
                  (void) ( *( (fPt) ((*  (ptr) pd193 ))))(ggData←v7900, 1, pd193);
                  };
               break;
            case 3: 
SOURCE(15416, 43)
               {
                  word pd194;
                  pd194 = (* (( (ptr) (* (( (ptr) gf←c63584)+161)/* var←c57920 */  ))+105) );
                  (void) ( *( (fPt) ((*  (ptr) pd194 ))))(ggData←v7900, 4, pd194);
                  };
               break;
            case 5: 
SOURCE(15469, 35)
               {
                  word pd195;
                  pd195 = (* (( (ptr) (* (( (ptr) gf←c63584)+161)/* var←c57920 */  ))+105) );
                  (void) ( *( (fPt) ((*  (ptr) pd195 ))))(ggData←v7900, 5, pd195);
                  };
               break;
            case 7: 
SOURCE(15518, 39)
               {
                  word pd196;
                  pd196 = (* (( (ptr) (* (( (ptr) gf←c63584)+161)/* var←c57920 */  ))+105) );
                  (void) ( *( (fPt) ((*  (ptr) pd196 ))))(ggData←v7900, 7, pd196);
                  };
               break;
            default: 
SOURCE(15570, 5)
               (void) XR←RaiseUnnamedError();
               break;
            };
         };
SOURCE(15577, 607)
      {
         word sliceD←v11552;
         word featureCycler←v11580;
         word cycleCount←v11608;
         word sliceType←v11636;
SOURCE(15583, 73)
         sliceD←v11552 = (word) SelectSlicePart←P900(feature←v7956, hitData←v7984, ggData←v7900, mode←v8012);
SOURCE(15658, 65)
         {
            word pd197;
            pd197 = (* (( (ptr) (* (( (ptr) gf←c63584)+161)/* var←c57920 */  ))+108) );
            featureCycler←v11580 = (word) ( *( (fPt) ((*  (ptr) pd197 ))))(ggData←v7900, pd197);
            };
SOURCE(15725, 37)
         cycleCount←v11608 = (* (( (ptr) featureCycler←v11580)+1) );
SOURCE(15764, 50)
         {
            word pd198;
            pd198 = (* (( (ptr) (* (( (ptr) gf←c63584)+159)/* var←c57824 */  ))+6) );
            sliceType←v11636 = (word) ( *( (fPt) ((*  (ptr) pd198 ))))((*  (ptr) (sliceD←v11552) ), pd198);
            };
SOURCE(15816, 48)
         (void) SitTheCaret←P960((* (( (ptr) ggData←v7900)+13) ), sliceD←v11552, hitData←v7984, mode←v8012);
SOURCE(15866, 40)
         {
            word pd199;
            pd199 = (* (( (ptr) (* (( (ptr) gf←c63584)+161)/* var←c57920 */  ))+101) );
            (void) ( *( (fPt) ((*  (ptr) pd199 ))))(ggData←v7900, sliceD←v11552, pd199);
            };
SOURCE(15908, 274)
         if ((cycleCount←v11608 > 1)) {
SOURCE(15931, 145)
            {
               word var←c59232;
               {
                  word var←c59264;
                  {
                     word pd200;
                     pd200 = (* (( (ptr) (* (( (ptr) gf←c63584)+159)/* var←c57824 */  ))+23) );
                     var←c59264 = (word) ( *( (fPt) ((*  (ptr) pd200 ))))(sliceD←v11552, pd200);
                     };
                  {
                     word pd201;
                     pd201 = (* (( (ptr) (* (( (ptr) gf←c63584)+172)/* var←c59296 */  ))+6) );
                     var←c59232 = (word) ( *( (fPt) ((*  (ptr) pd201 ))))(var←c59264, (* (( (ptr) gf←c63584)+46) ), pd201);
                     };
                  };
               {
                  W2 var←c59328;
                  var←c59328.f0 = 5;
                  var←c59328.f1 = (cycleCount←v11608 - 1);
                  {
                     word pd202;
                     pd202 = (* (( (ptr) (* (( (ptr) gf←c63584)+156)/* var←c57696 */  ))+14) );
                     (void) ( *( (fPt) ((*  (ptr) pd202 ))))((* (( (ptr) ggData←v7900)+3) ), 0, (* (( (ptr) gf←c63584)+44) ), var←c59232, var←c59328, pd202)
                     ;
                     };
                  };
               };
            }
         else {
SOURCE(16076, 106)
            {
               word var←c59360;
               {
                  word var←c59392;
                  {
                     word pd203;
                     pd203 = (* (( (ptr) (* (( (ptr) gf←c63584)+159)/* var←c57824 */  ))+23) );
                     var←c59392 = (word) ( *( (fPt) ((*  (ptr) pd203 ))))(sliceD←v11552, pd203);
                     };
                  {
                     word pd204;
                     pd204 = (* (( (ptr) (* (( (ptr) gf←c63584)+172)/* var←c59296 */  ))+6) );
                     var←c59360 = (word) ( *( (fPt) ((*  (ptr) pd204 ))))(var←c59392, (* (( (ptr) gf←c63584)+47) ), pd204);
                     };
                  };
               {
                  word pd205;
                  pd205 = (* (( (ptr) (* (( (ptr) gf←c63584)+156)/* var←c57696 */  ))+12) );
                  (void) ( *( (fPt) ((*  (ptr) pd205 ))))((* (( (ptr) ggData←v7900)+3) ), 0, (* (( (ptr) gf←c63584)+44) ), var←c59360, pd205)
                  ;
                  };
               };
            };
         };
      };
   }

static word SelectAndDescribeSlicePart←P840(feature←v8112, hitData←v8140, ggData←v8168, mode←v8196, opRope←v8224)
   word feature←v8112;
   word hitData←v8140;
   word ggData←v8168;
   word mode←v8196;
   word opRope←v8224;
   {
   register ptr gf←c63616 =  (ptr) &globalframe;
   word selectedD←v8280;
   /* SelectAndDescribeSlicePart: */ 
SOURCE(16216, 350)
SOURCE(16216, 350)
   selectedD←v8280 = 0;
SOURCE(16383, 59)
   selectedD←v8280 = (word) SelectSlicePart←P900(feature←v8112, hitData←v8140, ggData←v8168, mode←v8196);
SOURCE(16444, 122)
   {
      word var←c59424;
      {
         word var←c59456;
         word var←c59488;
         var←c59456 = XR←NewObject(12, (* (( (ptr) gf←c63616)+19) ));
         var←c59488 = var←c59456;
         (*  (ptr) var←c59488 ) = 11;
         (* (( (ptr) var←c59488)+1) ) = opRope←v8224;
         (* (( (ptr) var←c59488)+2) ) = XR←NewObject(12, (* (( (ptr) gf←c63616)+19) ));
         var←c59488 = (* (( (ptr) var←c59488)+2) );
         (*  (ptr) var←c59488 ) = 11;
         {
            word pd206;
            pd206 = (* (( (ptr) (* (( (ptr) gf←c63616)+159)/* var←c57824 */  ))+23) );
            (* (( (ptr) var←c59488)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd206 ))))(selectedD←v8280, pd206);
            };
         var←c59424 = var←c59456;
         };
      {
         word pd207;
         pd207 = (* (( (ptr) (* (( (ptr) gf←c63616)+156)/* var←c57696 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd207 ))))((* (( (ptr) ggData←v8168)+3) ), 0, (* (( (ptr) gf←c63616)+44) ), (* (( (ptr) gf←c63616)+48)
             ), var←c59424, pd207);
         };
      };
SOURCE(16216, 350)
   return(selectedD←v8280);
   }

static word SelectSlicePart←P900(feature←v8340, hitData←v8368, ggData←v8396, mode←v8424)
   word feature←v8340;
   word hitData←v8368;
   word ggData←v8396;
   word mode←v8424;
   {
   register ptr gf←c63648 =  (ptr) &globalframe;
   word selectedD←v8480;
   /* SelectSlicePart: */ 
SOURCE(16572, 500)
SOURCE(16572, 500)
   selectedD←v8480 = 0;
SOURCE(16717, 355)
   {
      word var←c59552;
      var←c59552 = (*  (ptr) feature←v8340 );
      switch (var←c59552) {
         case 0: 
SOURCE(16751, 173)
            {
               word slice←v11680;
SOURCE(16753, 59)
               slice←v11680 = (*  (ptr) XR←Narrow((* (( (ptr) feature←v8340)+1) ), (* (( (ptr) gf←c63648)+10) )) );
SOURCE(16814, 53)
               {
                  word pd208;
                  pd208 = (* (( (ptr) (* (( (ptr) gf←c63648)+159)/* var←c57824 */  ))+29) );
                  selectedD←v8480 = (word) ( *( (fPt) ((*  (ptr) pd208 ))))(slice←v11680, hitData←v8368, mode←v8424, pd208);
                  };
SOURCE(16869, 53)
               {
                  word pd209;
                  pd209 = (* (( (ptr) (* (( (ptr) gf←c63648)+170)/* var←c58496 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd209 ))))(selectedD←v8480, (* (( (ptr) ggData←v8396)+11) ), 0, pd209);
                  };
               };
            break;
         case 2: case 3: case 1: case 6: case 5: case 7: 
SOURCE(17007, 5)
            (void) XR←RaiseUnnamedError();
            break;
         default: 
SOURCE(17025, 47)
            {
               word var←c0225;
               var←c0225 = (* (( (ptr) gf←c63648)+52) );
               (void) XR←RaiseError((* (( (ptr) gf←c63648)+4)/* Problem←v5492 */  ), (word) &var←c0225);
               };
            break;
         };
      };
SOURCE(16572, 500)
   return(selectedD←v8480);
   }

static void SitTheCaret←P960(caret←v8540, sliceD←v8568, hitData←v8596, mode←v8624)
   word caret←v8540;
   word sliceD←v8568;
   word hitData←v8596;
   word mode←v8624;
   {
   register ptr gf←c63680 =  (ptr) &globalframe;
   word childD←v11724 = 0;
   /* SitTheCaret: */ 
SOURCE(17078, 543)
SOURCE(17207, 119)
   {
      word pd210;
      pd210 = (* (( (ptr) (* (( (ptr) gf←c63680)+173)/* var←c59584 */  ))+62) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd210 ))))((*  (ptr) (sliceD←v8568) ), pd210))) {
SOURCE(17249, 77)
         {
            word pd211;
            pd211 = (* (( (ptr) (* (( (ptr) gf←c63680)+173)/* var←c59584 */  ))+78) );
            childD←v11724 = (word) ( *( (fPt) ((*  (ptr) pd211 ))))((*  (ptr) sliceD←v8568 ), (* (( (ptr) sliceD←v8568)+1) ), 1, (* (
                  ( (ptr) gf←c63680)+32) ), pd211);
            };
         };
      };
SOURCE(17331, 290)
   if ((childD←v11724 == 0)) {
SOURCE(17352, 31)
      {
         word pd212;
         pd212 = (* (( (ptr) (* (( (ptr) gf←c63680)+158)/* var←c57760 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd212 ))))(caret←v8540, 0, pd212);
         };
      }
   else {
SOURCE(17385, 236)
      {
         word var←c59616;
         var←c59616 = mode←v8624;
         switch (var←c59616) {
            case 1: 
SOURCE(17413, 28)
               {
                  word pd213;
                  pd213 = (* (( (ptr) (* (( (ptr) gf←c63680)+158)/* var←c57760 */  ))+9) );
                  (void) ( *( (fPt) ((*  (ptr) pd213 ))))(caret←v8540, sliceD←v8568, pd213);
                  };
               break;
            case 3: case 5: case 7: 
SOURCE(17473, 150)
               {
                  word jointD←v11768 = 0;
                  W5 var←c0233;
SOURCE(17500, 91)
                  {
                     word pd214;
                     pd214 = (* (( (ptr) (* (( (ptr) gf←c63680)+159)/* var←c57824 */  ))+45) );
                     (void) ( *( (fPt) ((*  (ptr) pd214 ))))((word) &var←c0233, sliceD←v8568, (*  (W2Pt) (( (ptr) caret←v8540)+1) ), (*  (W2Pt) (
                           ( (ptr) caret←v8540)+1) ), hitData←v8596, pd214);
                     };
                  jointD←v11768 = var←c0233.f0;
SOURCE(17593, 28)
                  {
                     word pd215;
                     pd215 = (* (( (ptr) (* (( (ptr) gf←c63680)+158)/* var←c57760 */  ))+9) );
                     (void) ( *( (fPt) ((*  (ptr) pd215 ))))(caret←v8540, jointD←v11768, pd215);
                     };
                  };
               break;
            default: 
SOURCE(17637, 5)
               (void) XR←RaiseUnnamedError();
               break;
            };
         };
      };
   }

static word StartDeselect←P1020(input←v23780, ggData←v23808, worldPt←v23836)
   word input←v23780;
   word ggData←v23808;
   W2 worldPt←v23836;
   {
   register ptr gf←c63712 =  (ptr) &globalframe;
   word success←v23880;
   /* StartDeselect: */ 
SOURCE(17650, 565)
SOURCE(17650, 565)
   success←v23880 = 1;
SOURCE(17686, 260)
   {
      word var←c59648;
      var←c59648 = (*  (ptr) input←v23780 );
      if ((var←c59648 == (* (( (ptr) gf←c63712)+53) ))) {
SOURCE(17733, 31)
         (* (( (ptr) (* (( (ptr) ggData←v23808)+16) ))+14) ) = 1;
         goto endif0216;
         };
      if ((var←c59648 == (* (( (ptr) gf←c63712)+54) ))) {
SOURCE(17791, 33)
         (* (( (ptr) (* (( (ptr) ggData←v23808)+16) ))+14) ) = 3;
         goto endif0216;
         };
      if ((var←c59648 == (* (( (ptr) gf←c63712)+55) ))) {
SOURCE(17854, 30)
         (* (( (ptr) (* (( (ptr) ggData←v23808)+16) ))+14) ) = 5;
         goto endif0216;
         };
      if ((var←c59648 == (* (( (ptr) gf←c63712)+56) ))) {
SOURCE(17912, 34)
         (* (( (ptr) (* (( (ptr) ggData←v23808)+16) ))+14) ) = 7;
         goto endif0216;
         };
SOURCE(17959, 5)
      (void) XR←RaiseUnnamedError();
      goto endif0216;
      endif0216: ;
      };
SOURCE(17966, 43)
   {
      word pd217;
      pd217 = (* (( (ptr) (* (( (ptr) gf←c63712)+165)/* var←c58208 */  ))+21) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd217 ))))(ggData←v23808, pd217))) {
SOURCE(18009, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(18039, 35)
   {
      word pd218;
      pd218 = (* (( (ptr) (* (( (ptr) gf←c63712)+166)/* var←c58240 */  ))+24) );
      (void) ( *( (fPt) ((*  (ptr) pd218 ))))(ggData←v23808, pd218);
      };
SOURCE(18076, 55)
   {
      word pd219;
      pd219 = (* (( (ptr) (* (( (ptr) gf←c63712)+174)/* var←c59680 */  ))+7) );
      (* (( (ptr) (* (( (ptr) ggData←v23808)+16) ))+13) ) = (word) ( *( (fPt) ((*  (ptr) pd219 ))))((*  (ptr) (&fc220) ), pd219)
      ;
      };
SOURCE(18179, 36)
   (void) DuringDeselect←P1080(0, ggData←v23808, worldPt←v23836);
SOURCE(17650, 565)
   return(success←v23880);
   }

static void DuringDeselect←P1080(input←v23940, ggData←v23968, worldPt←v23996)
   word input←v23940;
   word ggData←v23968;
   W2 worldPt←v23996;
   {
   register ptr gf←c63744 =  (ptr) &globalframe;
   W2 resultPoint←v11840;
   W2 normal←v11868;
   word feature←v11896 = 0;
   word hitData←v11924 = 0;
   /* DuringDeselect: */ 
SOURCE(18221, 1261)
SOURCE(18370, 34)
   (*  (W2Pt) (( (ptr) (* (( (ptr) ggData←v23968)+16) ))+8) ) = worldPt←v23996;
SOURCE(18406, 130)
   {
      word pd221;
      pd221 = (* (( (ptr) (* (( (ptr) gf←c63744)+165)/* var←c58208 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd221 ))))(ggData←v23968, 0, 1, 0, 1, 0
         , 1, 0, 1, 0, pd221);
      };
SOURCE(18538, 547)
   {
      word var←c59712;
      {
         word pd222;
         pd222 = (* (( (ptr) (* (( (ptr) gf←c63744)+161)/* var←c57920 */  ))+102) );
         var←c59712 = (word) ( *( (fPt) ((*  (ptr) pd222 ))))(ggData←v23968, pd222);
         };
      if ((var←c59712 == 1)) {
SOURCE(18589, 162)
         {
            W6 var←c59744;
            {
               word pd223;
               pd223 = (* (( (ptr) (* (( (ptr) gf←c63744)+169)/* var←c58368 */  ))+5) );
               (void) ( *( (fPt) ((*  (ptr) pd223 ))))((word) &var←c59744, worldPt←v23996, (*  (ptr) (* (( (ptr) ggData←v23968)+18) ) ), (*  (ptr) (* (
                     ( (ptr) (* (( (ptr) gf←c63744)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23968)+18) ))+8) ), ggData←v23968
                  , 0, pd223);
               };
            hitData←v11924 = var←c59744.f5;
            feature←v11896 = var←c59744.f4;
            normal←v11868 = (*  (W2Pt) (( (ptr) &var←c59744)+2) );
            resultPoint←v11840 = (*  (W2Pt) &var←c59744 );
            };
         }
      else {
         if ((var←c59712 == 3)) {
SOURCE(18764, 154)
            {
               W6 var←c59776;
               {
                  word pd224;
                  pd224 = (* (( (ptr) (* (( (ptr) gf←c63744)+169)/* var←c58368 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd224 ))))((word) &var←c59776, worldPt←v23996, (*  (ptr) (* (( (ptr) ggData←v23968)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63744)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23968)+18) ))+8) ), ggData←v23968, pd224)
                  ;
                  };
               hitData←v11924 = var←c59776.f5;
               feature←v11896 = var←c59776.f4;
               normal←v11868 = (*  (W2Pt) (( (ptr) &var←c59776)+2) );
               resultPoint←v11840 = (*  (W2Pt) &var←c59776 );
               };
            }
         else {
SOURCE(18931, 154)
            {
               W6 var←c59808;
               {
                  word pd225;
                  pd225 = (* (( (ptr) (* (( (ptr) gf←c63744)+169)/* var←c58368 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd225 ))))((word) &var←c59808, worldPt←v23996, (*  (ptr) (* (( (ptr) ggData←v23968)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63744)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v23968)+18) ))+8) ), ggData←v23968, pd225)
                  ;
                  };
               hitData←v11924 = var←c59808.f5;
               feature←v11896 = var←c59808.f4;
               normal←v11868 = (*  (W2Pt) (( (ptr) &var←c59808)+2) );
               resultPoint←v11840 = (*  (W2Pt) &var←c59808 );
               };
            };
         };
      };
SOURCE(19087, 39)
   {
      word pd226;
      pd226 = (* (( (ptr) (* (( (ptr) gf←c63744)+175)/* var←c59840 */  ))+51) );
      (void) ( *( (fPt) ((*  (ptr) pd226 ))))((* ((( (ptr) ggData←v23968)+11)) ), pd226);
      };
SOURCE(19128, 197)
   if ((feature←v11896 != 0)) {
SOURCE(19148, 95)
      (void) DuringDeselectAux←P1140(feature←v11896, hitData←v11924, resultPoint←v11840, ggData←v23968, (* (( (ptr) (* (( (ptr) ggData←v23968)+16)
             ))+14) ), (* (( (ptr) gf←c63744)+57) ));
      }
   else {
SOURCE(19243, 82)
      {
         W2 var←c59872;
         var←c59872.f0 = 11;
         var←c59872.f1 = (* (( (ptr) gf←c63744)+57) );
         {
            word pd227;
            pd227 = (* (( (ptr) (* (( (ptr) gf←c63744)+156)/* var←c57696 */  ))+14) );
            (void) ( *( (fPt) ((*  (ptr) pd227 ))))((* (( (ptr) ggData←v23968)+3) ), 0, (* (( (ptr) gf←c63744)+27) ), (* (( (ptr) gf←c63744)+28)
                ), var←c59872, pd227);
            };
         };
      };
SOURCE(19327, 155)
   {
      word pd228;
      pd228 = (* (( (ptr) (* (( (ptr) gf←c63744)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd228 ))))((* (( (ptr) gf←c63744)+25) ), ggData←v23968, 4, 0, 1, 1, pd228);
      };
   }

static void DuringDeselectAux←P1140(feature←v8696, hitData←v8724, caretPt←v8752, ggData←v8780, mode←v8808, opRope←v8836)
   word feature←v8696;
   word hitData←v8724;
   W2 caretPt←v8752;
   word ggData←v8780;
   word mode←v8808;
   word opRope←v8836;
   {
   register ptr gf←c63776 =  (ptr) &globalframe;
   word description←v11980 = 0;
   /* DuringDeselectAux: */ 
SOURCE(19510, 492)
SOURCE(19685, 317)
   {
      word var←c59904;
      var←c59904 = (*  (ptr) feature←v8696 );
      switch (var←c59904) {
         case 0: 
SOURCE(19719, 285)
            {
               word deselectedD←v12024;
SOURCE(19721, 86)
               deselectedD←v12024 = (word) SliceDeselectAux←P1200(feature←v8696, hitData←v8724, mode←v8808, (* (( (ptr) ggData←v8780)+11)
                   ));
SOURCE(19809, 85)
               {
                  word pd229;
                  if ((deselectedD←v12024 == 0)) {
                     description←v11980 = (* (( (ptr) gf←c63776)+58) );
                     }
                  else {
                     pd229 = (* (( (ptr) (* (( (ptr) gf←c63776)+159)/* var←c57824 */  ))+23) );
                     description←v11980 = (word) ( *( (fPt) ((*  (ptr) pd229 ))))(deselectedD←v12024, pd229);
                     };
                  };
SOURCE(19896, 106)
               {
                  word var←c59936;
                  {
                     word var←c59968;
                     word var←c60000;
                     var←c59968 = XR←NewObject(12, (* (( (ptr) gf←c63776)+19) ));
                     var←c60000 = var←c59968;
                     (*  (ptr) var←c60000 ) = 11;
                     (* (( (ptr) var←c60000)+1) ) = opRope←v8836;
                     (* (( (ptr) var←c60000)+2) ) = XR←NewObject(12, (* (( (ptr) gf←c63776)+19) ));
                     var←c60000 = (* (( (ptr) var←c60000)+2) );
                     (*  (ptr) var←c60000 ) = 11;
                     (* (( (ptr) var←c60000)+1) ) = description←v11980;
                     var←c59936 = var←c59968;
                     };
                  {
                     word pd230;
                     pd230 = (* (( (ptr) (* (( (ptr) gf←c63776)+156)/* var←c57696 */  ))+13) );
                     (void) ( *( (fPt) ((*  (ptr) pd230 ))))((* (( (ptr) ggData←v8780)+3) ), 0, (* (( (ptr) gf←c63776)+27) ), (* (( (ptr) gf←c63776)+48)
                         ), var←c59936, pd230);
                     };
                  };
               };
            break;
         case 2: case 3: case 1: case 6: case 5: case 7: 
SOURCE(20087, 5)
            (void) XR←RaiseUnnamedError();
            break;
         default: 
SOURCE(20105, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static word SliceDeselectAux←P1200(feature←v8908, hitData←v8936, mode←v8964, scene←v8992)
   word feature←v8908;
   word hitData←v8936;
   word mode←v8964;
   word scene←v8992;
   {
   register ptr gf←c63808 =  (ptr) &globalframe;
   word deselectedD←v9048;
   word shapeD←v12068;
   word sliceD←v12096;
   /* SliceDeselectAux: */ 
SOURCE(20116, 640)
SOURCE(20116, 640)
   deselectedD←v9048 = 0;
SOURCE(20268, 47)
   shapeD←v12068 = XR←Narrow((* (( (ptr) feature←v8908)+1) ), (* (( (ptr) gf←c63808)+10) ));
SOURCE(20317, 74)
   {
      word pd231;
      pd231 = (* (( (ptr) (* (( (ptr) gf←c63808)+170)/* var←c58496 */  ))+20) );
      sliceD←v12096 = (word) ( *( (fPt) ((*  (ptr) pd231 ))))((*  (ptr) shapeD←v12068 ), 0, pd231);
      };
SOURCE(20393, 363)
   if ((sliceD←v12096 != 0)) {
SOURCE(20412, 317)
      {
         word newD←v12140;
         word diffD←v12168;
SOURCE(20414, 72)
         {
            word pd232;
            pd232 = (* (( (ptr) (* (( (ptr) gf←c63808)+159)/* var←c57824 */  ))+29) );
            newD←v12140 = (word) ( *( (fPt) ((*  (ptr) pd232 ))))((*  (ptr) sliceD←v12096 ), hitData←v8936, mode←v8964, pd232);
            };
SOURCE(20488, 65)
         {
            word pd233;
            pd233 = (* (( (ptr) (* (( (ptr) gf←c63808)+159)/* var←c57824 */  ))+31) );
            diffD←v12168 = (word) ( *( (fPt) ((*  (ptr) pd233 ))))(sliceD←v12096, newD←v12140, pd233);
            };
SOURCE(20555, 65)
         {
            word pd234;
            pd234 = (* (( (ptr) (* (( (ptr) gf←c63808)+170)/* var←c58496 */  ))+15) );
            (void) ( *( (fPt) ((*  (ptr) pd234 ))))((*  (ptr) sliceD←v12096 ), (* (( (ptr) sliceD←v12096)+1) ), scene←v8992, 0, pd234)
            ;
            };
SOURCE(20622, 85)
         {
            word pd235;
            pd235 = (* (( (ptr) (* (( (ptr) gf←c63808)+159)/* var←c57824 */  ))+27) );
            if ((0 == (word) ( *( (fPt) ((*  (ptr) pd235 ))))(diffD←v12168, pd235))) {
SOURCE(20665, 42)
               {
                  word pd236;
                  pd236 = (* (( (ptr) (* (( (ptr) gf←c63808)+170)/* var←c58496 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd236 ))))(diffD←v12168, scene←v8992, 0, pd236);
                  };
               };
            };
SOURCE(20709, 18)
         deselectedD←v9048 = newD←v12140;
         };
      }
   else {
SOURCE(20736, 20)
      deselectedD←v9048 = shapeD←v12068;
      };
SOURCE(20116, 640)
   return(deselectedD←v9048);
   }

static void EndDeselect←P1260(input←v24056, ggData←v24084, worldPt←v24112)
   word input←v24056;
   word ggData←v24084;
   W2 worldPt←v24112;
   {
   register ptr gf←c63840 =  (ptr) &globalframe;
   W2 resultPoint←v12212;
   W2 normal←v12240;
   word feature←v12268 = 0;
   word hitData←v12296 = 0;
   /* EndDeselect: */ 
SOURCE(20819, 1040)
SOURCE(20930, 547)
   {
      word var←c60032;
      {
         word pd237;
         pd237 = (* (( (ptr) (* (( (ptr) gf←c63840)+161)/* var←c57920 */  ))+102) );
         var←c60032 = (word) ( *( (fPt) ((*  (ptr) pd237 ))))(ggData←v24084, pd237);
         };
      if ((var←c60032 == 1)) {
SOURCE(20981, 162)
         {
            W6 var←c60064;
            {
               word pd238;
               pd238 = (* (( (ptr) (* (( (ptr) gf←c63840)+169)/* var←c58368 */  ))+5) );
               (void) ( *( (fPt) ((*  (ptr) pd238 ))))((word) &var←c60064, worldPt←v24112, (*  (ptr) (* (( (ptr) ggData←v24084)+18) ) ), (*  (ptr) (* (
                     ( (ptr) (* (( (ptr) gf←c63840)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v24084)+18) ))+8) ), ggData←v24084
                  , 0, pd238);
               };
            hitData←v12296 = var←c60064.f5;
            feature←v12268 = var←c60064.f4;
            normal←v12240 = (*  (W2Pt) (( (ptr) &var←c60064)+2) );
            resultPoint←v12212 = (*  (W2Pt) &var←c60064 );
            };
         }
      else {
         if ((var←c60032 == 3)) {
SOURCE(21156, 154)
            {
               W6 var←c60096;
               {
                  word pd239;
                  pd239 = (* (( (ptr) (* (( (ptr) gf←c63840)+169)/* var←c58368 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd239 ))))((word) &var←c60096, worldPt←v24112, (*  (ptr) (* (( (ptr) ggData←v24084)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63840)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v24084)+18) ))+8) ), ggData←v24084, pd239)
                  ;
                  };
               hitData←v12296 = var←c60096.f5;
               feature←v12268 = var←c60096.f4;
               normal←v12240 = (*  (W2Pt) (( (ptr) &var←c60096)+2) );
               resultPoint←v12212 = (*  (W2Pt) &var←c60096 );
               };
            }
         else {
SOURCE(21323, 154)
            {
               W6 var←c60128;
               {
                  word pd240;
                  pd240 = (* (( (ptr) (* (( (ptr) gf←c63840)+169)/* var←c58368 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd240 ))))((word) &var←c60128, worldPt←v24112, (*  (ptr) (* (( (ptr) ggData←v24084)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63840)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v24084)+18) ))+8) ), ggData←v24084, pd240)
                  ;
                  };
               hitData←v12296 = var←c60128.f5;
               feature←v12268 = var←c60128.f4;
               normal←v12240 = (*  (W2Pt) (( (ptr) &var←c60128)+2) );
               resultPoint←v12212 = (*  (W2Pt) &var←c60128 );
               };
            };
         };
      };
SOURCE(21479, 380)
   {
      word var←c60160;
      var←c60160 = (* (( (ptr) (* (( (ptr) ggData←v24084)+16) ))+14) );
      switch (var←c60160) {
         case 1: 
SOURCE(21524, 69)
            (void) EndDeselectAux←P1320(ggData←v24084, resultPoint←v12212, feature←v12268, hitData←v12296, 1, (* (( (ptr) gf←c63840)+33)
                ));
            break;
         case 3: 
SOURCE(21606, 73)
            (void) EndDeselectAux←P1320(ggData←v24084, resultPoint←v12212, feature←v12268, hitData←v12296, 3, (* (( (ptr) gf←c63840)+34)
                ));
            break;
         case 5: 
SOURCE(21689, 73)
            (void) EndDeselectAux←P1320(ggData←v24084, resultPoint←v12212, feature←v12268, hitData←v12296, 5, (* (( (ptr) gf←c63840)+35)
                ));
            break;
         case 7: 
SOURCE(21776, 83)
            (void) EndDeselectAux←P1320(ggData←v24084, resultPoint←v12212, feature←v12268, hitData←v12296, 7, (* (( (ptr) gf←c63840)+59)
                ));
            break;
         default: 
SOURCE(21872, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static void EndDeselectAux←P1320(ggData←v9108, resultPoint←v9136, feature←v9164, hitData←v9192, mode←v9220, selectRope←v9248)
   word ggData←v9108;
   W2 resultPoint←v9136;
   word feature←v9164;
   word hitData←v9192;
   word mode←v9220;
   word selectRope←v9248;
   {
   register ptr gf←c63872 =  (ptr) &globalframe;
   /* EndDeselectAux: */ 
SOURCE(21883, 883)
SOURCE(22026, 32)
   {
      word pd241;
      pd241 = (* (( (ptr) (* (( (ptr) gf←c63872)+158)/* var←c57760 */  ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd241 ))))((* (( (ptr) ggData←v9108)+13) ), 0, pd241);
      };
SOURCE(22060, 509)
   if ((feature←v9164 == 0)) {
SOURCE(22084, 89)
      {
         W2 var←c60192;
         var←c60192.f0 = 11;
         var←c60192.f1 = selectRope←v9248;
         {
            word pd242;
            pd242 = (* (( (ptr) (* (( (ptr) gf←c63872)+156)/* var←c57696 */  ))+14) );
            (void) ( *( (fPt) ((*  (ptr) pd242 ))))((* (( (ptr) ggData←v9108)+3) ), 0, (* (( (ptr) gf←c63872)+44) ), (* (( (ptr) gf←c63872)+60)
                ), var←c60192, pd242);
            };
         };
      }
   else {
SOURCE(22184, 385)
      {
         word var←c60224;
         var←c60224 = (*  (ptr) feature←v9164 );
         if ((var←c60224 == 0)) {
SOURCE(22218, 242)
            {
               word gone←v12352;
SOURCE(22220, 78)
               gone←v12352 = (word) SliceDeselectAux←P1200(feature←v9164, hitData←v9192, mode←v9220, (* (( (ptr) ggData←v9108)+11) ));
SOURCE(22300, 158)
               if ( ( (gone←v12352 != 0) ? ((* (( (ptr) gone←v12352)+1) ) != 0) : 0 ) ) {
SOURCE(22336, 122)
                  {
                     word var←c60256;
                     {
                        word var←c60288;
                        word var←c60320;
                        var←c60288 = XR←NewObject(12, (* (( (ptr) gf←c63872)+19) ));
                        var←c60320 = var←c60288;
                        (*  (ptr) var←c60320 ) = 11;
                        {
                           word pd243;
                           pd243 = (* (( (ptr) (* (( (ptr) gf←c63872)+159)/* var←c57824 */  ))+23) );
                           (* (( (ptr) var←c60320)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd243 ))))(gone←v12352, pd243);
                           };
                        (* (( (ptr) var←c60320)+2) ) = XR←NewObject(12, (* (( (ptr) gf←c63872)+19) ));
                        var←c60320 = (* (( (ptr) var←c60320)+2) );
                        (*  (ptr) var←c60320 ) = 11;
                        (* (( (ptr) var←c60320)+1) ) = (* (( (ptr) gf←c63872)+61) );
                        var←c60256 = var←c60288;
                        };
                     {
                        word pd244;
                        pd244 = (* (( (ptr) (* (( (ptr) gf←c63872)+156)/* var←c57696 */  ))+13) );
                        (void) ( *( (fPt) ((*  (ptr) pd244 ))))((* (( (ptr) ggData←v9108)+3) ), 0, (* (( (ptr) gf←c63872)+44) ), (* (( (ptr) gf←c63872)+48)
                            ), var←c60256, pd244);
                        };
                     };
                  };
               };
            }
         else {
SOURCE(22474, 95)
            {
               word var←c60384;
               {
                  W2 var←c60416;
                  var←c60416.f0 = 11;
                  var←c60416.f1 = selectRope←v9248;
                  {
                     word pd245;
                     pd245 = (* (( (ptr) (* (( (ptr) gf←c63872)+176)/* var←c60448 */  ))+63) );
                     var←c60384 = (word) ( *( (fPt) ((*  (ptr) pd245 ))))((* (( (ptr) gf←c63872)+62) ), var←c60416, pd245);
                     };
                  };
               {
                  word var←c0304;
                  var←c0304 = var←c60384;
                  (void) (XR←RaiseSignal((* (( (ptr) gf←c63872)+4)/* Problem←v5492 */  ), 0, (word) &var←c0304));
                  };
               };
            };
         };
      };
SOURCE(22574, 160)
   {
      word pd246;
      pd246 = (* (( (ptr) (* (( (ptr) gf←c63872)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd246 ))))((* (( (ptr) gf←c63872)+63) ), ggData←v9108, 4, 0, 1, 0, pd246);
      };
SOURCE(22736, 30)
   (* (( (ptr) (* (( (ptr) ggData←v9108)+16) ))+14) ) = 8;
   }

static word StartExtendSelect←P1380(input←v24172, ggData←v24200, worldPt←v24228)
   word input←v24172;
   word ggData←v24200;
   W2 worldPt←v24228;
   {
   register ptr gf←c63904 =  (ptr) &globalframe;
   word success←v24272;
   /* StartExtendSelect: */ 
SOURCE(22815, 395)
SOURCE(22815, 395)
   success←v24272 = 1;
SOURCE(22855, 284)
   {
      word var←c60480;
      var←c60480 = (*  (ptr) input←v24172 );
      if ((var←c60480 == (* (( (ptr) gf←c63904)+64) ))) {
SOURCE(22903, 36)
         {
            word pd248;
            pd248 = (* (( (ptr) (* (( (ptr) gf←c63904)+161)/* var←c57920 */  ))+105) );
            (void) ( *( (fPt) ((*  (ptr) pd248 ))))(ggData←v24200, 1, pd248);
            };
         goto endif0247;
         };
      if ((var←c60480 == (* (( (ptr) gf←c63904)+65) ))) {
SOURCE(22967, 38)
         {
            word pd249;
            pd249 = (* (( (ptr) (* (( (ptr) gf←c63904)+161)/* var←c57920 */  ))+105) );
            (void) ( *( (fPt) ((*  (ptr) pd249 ))))(ggData←v24200, 3, pd249);
            };
         goto endif0247;
         };
      if ((var←c60480 == (* (( (ptr) gf←c63904)+66) ))) {
SOURCE(23036, 35)
         {
            word pd250;
            pd250 = (* (( (ptr) (* (( (ptr) gf←c63904)+161)/* var←c57920 */  ))+105) );
            (void) ( *( (fPt) ((*  (ptr) pd250 ))))(ggData←v24200, 5, pd250);
            };
         goto endif0247;
         };
      if ((var←c60480 == (* (( (ptr) gf←c63904)+67) ))) {
SOURCE(23100, 39)
         {
            word pd251;
            pd251 = (* (( (ptr) (* (( (ptr) gf←c63904)+161)/* var←c57920 */  ))+105) );
            (void) ( *( (fPt) ((*  (ptr) pd251 ))))(ggData←v24200, 7, pd251);
            };
         goto endif0247;
         };
SOURCE(23152, 5)
      (void) XR←RaiseUnnamedError();
      goto endif0247;
      endif0247: ;
      };
SOURCE(23159, 51)
   return((word) StartExtendSelection←P1440(input←v24172, ggData←v24200, worldPt←v24228));
   }

static word StartExtendSelection←P1440(input←v24332, ggData←v24360, worldPt←v24388)
   word input←v24332;
   word ggData←v24360;
   W2 worldPt←v24388;
   {
   register ptr gf←c63936 =  (ptr) &globalframe;
   word success←v24432;
   /* StartExtendSelection: */ 
SOURCE(23216, 339)
SOURCE(23216, 339)
   success←v24432 = 1;
SOURCE(23259, 43)
   {
      word pd252;
      pd252 = (* (( (ptr) (* (( (ptr) gf←c63936)+165)/* var←c58208 */  ))+21) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd252 ))))(ggData←v24360, pd252))) {
SOURCE(23302, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
SOURCE(23309, 35)
   {
      word pd253;
      pd253 = (* (( (ptr) (* (( (ptr) gf←c63936)+166)/* var←c58240 */  ))+24) );
      (void) ( *( (fPt) ((*  (ptr) pd253 ))))(ggData←v24360, pd253);
      };
SOURCE(23395, 34)
   (*  (W2Pt) (( (ptr) (* (( (ptr) ggData←v24360)+16) ))+8) ) = worldPt←v24388;
SOURCE(23431, 55)
   {
      word pd254;
      pd254 = (* (( (ptr) (* (( (ptr) gf←c63936)+174)/* var←c59680 */  ))+7) );
      (* (( (ptr) (* (( (ptr) ggData←v24360)+16) ))+13) ) = (word) ( *( (fPt) ((*  (ptr) pd254 ))))((*  (ptr) (&fc220) ), pd254)
      ;
      };
SOURCE(23488, 67)
   {
      word var←c60512;
      {
         word var←c60544;
         word var←c60576;
         var←c60544 = XR←NewObject(8, (* (( (ptr) gf←c63936)+16) ));
         var←c60576 = var←c60544;
         (*  (ptr) var←c60576 ) = (* (( (ptr) gf←c63936)+69) );
         var←c60512 = var←c60544;
         };
      (void) DuringExtendSelection←P1500(var←c60512, ggData←v24360, worldPt←v24388);
      };
SOURCE(23216, 339)
   return(success←v24432);
   }

static void DuringExtendSelection←P1500(input←v24492, ggData←v24520, worldPt←v24548)
   word input←v24492;
   word ggData←v24520;
   W2 worldPt←v24548;
   {
   register ptr gf←c63968 =  (ptr) &globalframe;
   word opRope←v12396;
   W2 resultPoint←v12424;
   W2 normal←v12452;
   word feature←v12480 = 0;
   word hitData←v12508 = 0;
   word extendMode←v12536;
   /* DuringExtendSelection: */ 
SOURCE(23561, 1676)
SOURCE(23604, 93)
   opRope←v12396 =  ( ((*  (ptr) input←v24492 ) == (* (( (ptr) gf←c63968)+70) )) ? (* (( (ptr) gf←c63968)+71) ) : (* (( (ptr) gf←c63968)+72)
    ) ) ;
SOURCE(23775, 54)
   {
      word pd255;
      pd255 = (* (( (ptr) (* (( (ptr) gf←c63968)+161)/* var←c57920 */  ))+104) );
      extendMode←v12536 = (word) ( *( (fPt) ((*  (ptr) pd255 ))))(ggData←v24520, pd255);
      };
SOURCE(23831, 109)
   {
      word pd256;
      pd256 = (* (( (ptr) (* (( (ptr) gf←c63968)+165)/* var←c58208 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd256 ))))(ggData←v24520, 0, 1, 0, 0, 0
         , 1, 0, 1, 0, pd256);
      };
SOURCE(23942, 637)
   {
      word var←c60608;
      var←c60608 = extendMode←v12536;
      switch (var←c60608) {
         case 1: 
SOURCE(23974, 162)
            {
               W6 var←c60640;
               {
                  word pd257;
                  pd257 = (* (( (ptr) (* (( (ptr) gf←c63968)+169)/* var←c58368 */  ))+5) );
                  (void) ( *( (fPt) ((*  (ptr) pd257 ))))((word) &var←c60640, worldPt←v24548, (*  (ptr) (* (( (ptr) ggData←v24520)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63968)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v24520)+18) ))+8) ), ggData←v24520
                     , 0, pd257);
                  };
               hitData←v12508 = var←c60640.f5;
               feature←v12480 = var←c60640.f4;
               normal←v12452 = (*  (W2Pt) (( (ptr) &var←c60640)+2) );
               resultPoint←v12424 = (*  (W2Pt) &var←c60640 );
               };
            break;
         case 3: case 4: 
SOURCE(24163, 154)
            {
               W6 var←c60672;
               {
                  word pd258;
                  pd258 = (* (( (ptr) (* (( (ptr) gf←c63968)+169)/* var←c58368 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd258 ))))((word) &var←c60672, worldPt←v24548, (*  (ptr) (* (( (ptr) ggData←v24520)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63968)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v24520)+18) ))+8) ), ggData←v24520, pd258)
                  ;
                  };
               hitData←v12508 = var←c60672.f5;
               feature←v12480 = var←c60672.f4;
               normal←v12452 = (*  (W2Pt) (( (ptr) &var←c60672)+2) );
               resultPoint←v12424 = (*  (W2Pt) &var←c60672 );
               };
            break;
         case 5: case 7: case 6: 
SOURCE(24344, 154)
            {
               W6 var←c60704;
               {
                  word pd259;
                  pd259 = (* (( (ptr) (* (( (ptr) gf←c63968)+169)/* var←c58368 */  ))+7) );
                  (void) ( *( (fPt) ((*  (ptr) pd259 ))))((word) &var←c60704, worldPt←v24548, (*  (ptr) (* (( (ptr) ggData←v24520)+18) ) ), (*  (ptr) (* (
                        ( (ptr) (* (( (ptr) gf←c63968)+168)/* var←c58336 */  ))+16) ) ), (* (( (ptr) (* (( (ptr) ggData←v24520)+18) ))+8) ), ggData←v24520, pd259)
                  ;
                  };
               hitData←v12508 = var←c60704.f5;
               feature←v12480 = var←c60704.f4;
               normal←v12452 = (*  (W2Pt) (( (ptr) &var←c60704)+2) );
               resultPoint←v12424 = (*  (W2Pt) &var←c60704 );
               };
            break;
         case 8: 
SOURCE(24510, 21)
            resultPoint←v12424 = worldPt←v24548;
SOURCE(24533, 16)
            normal←v12452.f0 = (*  (ptr) &fc127 );
            normal←v12452.f1 = (*  (ptr) &fc129 );
SOURCE(24551, 13)
            feature←v12480 = 0;
SOURCE(24566, 13)
            hitData←v12508 = 0;
            break;
         default: 
SOURCE(24595, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(24602, 81)
   (void) SetCaretAttractorEndpoint←P60(ggData←v24520, resultPoint←v12424, normal←v12452, worldPt←v24548, feature←v12480, hitData←v12508)
   ;
SOURCE(24685, 42)
   {
      word pd260;
      pd260 = (* (( (ptr) (* (( (ptr) gf←c63968)+170)/* var←c58496 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd260 ))))((* (( (ptr) ggData←v24520)+11) ), 0, pd260);
      };
SOURCE(24729, 39)
   {
      word pd261;
      pd261 = (* (( (ptr) (* (( (ptr) gf←c63968)+175)/* var←c59840 */  ))+51) );
      (void) ( *( (fPt) ((*  (ptr) pd261 ))))((* ((( (ptr) ggData←v24520)+11)) ), pd261);
      };
SOURCE(24770, 310)
   if ((feature←v12480 != 0)) {
SOURCE(24792, 148)
      {
         word var←c60736;
         var←c60736 = extendMode←v12536;
         switch (var←c60736) {
            case 1: case 3: case 4: case 5: case 7: 
SOURCE(24864, 76)
               (void) DuringExtendSelectionFeedback←P1560(feature←v12480, hitData←v12508, resultPoint←v12424, ggData←v24520, opRope←v12396)
               ;
               break;
            case 6: case 8: 
               break;
            default: 
SOURCE(24984, 5)
               (void) XR←RaiseUnnamedError();
               break;
            };
         };
      }
   else {
SOURCE(24998, 82)
      {
         W2 var←c60768;
         var←c60768.f0 = 11;
         var←c60768.f1 = opRope←v12396;
         {
            word pd262;
            pd262 = (* (( (ptr) (* (( (ptr) gf←c63968)+156)/* var←c57696 */  ))+14) );
            (void) ( *( (fPt) ((*  (ptr) pd262 ))))((* (( (ptr) ggData←v24520)+3) ), 0, (* (( (ptr) gf←c63968)+27) ), (* (( (ptr) gf←c63968)+28)
                ), var←c60768, pd262);
            };
         };
      };
SOURCE(25082, 155)
   {
      word pd263;
      pd263 = (* (( (ptr) (* (( (ptr) gf←c63968)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd263 ))))((* (( (ptr) gf←c63968)+25) ), ggData←v24520, 4, 0, 1, 1, pd263);
      };
   }

static void DuringExtendSelectionFeedback←P1560(feature←v9320, hitData←v9348, caretPt←v9376, ggData←v9404, opRope←v9432)
   word feature←v9320;
   word hitData←v9348;
   W2 caretPt←v9376;
   word ggData←v9404;
   word opRope←v9432;
   {
   register ptr gf←c64000 =  (ptr) &globalframe;
   word extendMode←v12592;
   /* DuringExtendSelectionFeedback: */ 
SOURCE(25272, 1829)
SOURCE(25404, 54)
   {
      word pd264;
      pd264 = (* (( (ptr) (* (( (ptr) gf←c64000)+161)/* var←c57920 */  ))+104) );
      extendMode←v12592 = (word) ( *( (fPt) ((*  (ptr) pd264 ))))(ggData←v9404, pd264);
      };
SOURCE(25460, 1641)
   {
      word var←c60800;
      var←c60800 = extendMode←v12592;
      switch (var←c60800) {
         case 1: case 3: case 5: case 7: 
SOURCE(25517, 77)
            {
               word var←c60832;
               var←c60832 = (word) SelectAndDescribeSlicePart←P840(feature←v9320, hitData←v9348, ggData←v9404, extendMode←v12592, opRope←v9432)
               ;
               };
            break;
         case 4: 
SOURCE(25612, 1489)
            {
               word var←c60864;
SOURCE(25614, 1303)
               var←c60864 = (* (( (ptr) feature←v9320)+1) );
               if ( ( (var←c60864 == 0) ? 1 : ((* (( (ptr) gf←c64000)+10) ) == XR←GetReferentType(var←c60864)) ) ) {
SOURCE(25661, 1296)
                  {
                     word sliceD←v12636;
                     word traj←v12664 = 0;
                     word trajToExtend←v12692 = 0;
                     word hitType←v12720;
                     word segNum←v12748;
                     word cpNum←v12776;
                     word jointNum←v12804;
                     word segToExtendNum←v12832;
                     W2 hitPoint←v12860;
SOURCE(25663, 47)
                     sliceD←v12636 = XR←Narrow((* (( (ptr) feature←v9320)+1) ), (* (( (ptr) gf←c64000)+10) ));
SOURCE(25869, 252)
                     {
                        word var←c60896;
                        {
                           word pd265;
                           pd265 = (* (( (ptr) (* (( (ptr) gf←c64000)+159)/* var←c57824 */  ))+6) );
                           var←c60896 = (word) ( *( (fPt) ((*  (ptr) pd265 ))))((*  (ptr) (sliceD←v12636) ), pd265);
                           };
                        if ((var←c60896 == (* (( (ptr) gf←c64000)+73) ))) {
SOURCE(25926, 85)
                           {
/*1*/   W7 var←c60960;
/*1*/   {
/*1*/      word pd266;
/*1*/      pd266 = (* (( (ptr) (* (( (ptr) gf←c64000)+177)/* var←c60928 */  ))+15) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd266 ))))((word) &var←c60960, hitData←v9348, pd266);
/*1*/      };
/*1*/   hitPoint←v12860 = (*  (W2Pt) (( (ptr) &var←c60960)+5) );
/*1*/   jointNum←v12804 = var←c60960.f4;
/*1*/   cpNum←v12776 = var←c60960.f3;
/*1*/   segNum←v12748 = var←c60960.f2;
/*1*/   hitType←v12720 = var←c60960.f1;
/*1*/   traj←v12664 = var←c60960.f0;
/*1*/   };
                           }
                        else {
                           if ((var←c60896 == (* (( (ptr) gf←c64000)+32) ))) {
SOURCE(26024, 19)
/*1*/   traj←v12664 = (*  (ptr) sliceD←v12636 );
SOURCE(26045, 76)
/*1*/   {
/*1*/      W6 var←c61024;
/*1*/      {
/*1*/         word pd267;
/*1*/         pd267 = (* (( (ptr) (* (( (ptr) gf←c64000)+178)/* var←c60992 */  ))+53) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd267 ))))((word) &var←c61024, hitData←v9348, pd267);
/*1*/         };
/*1*/      hitPoint←v12860 = (*  (W2Pt) (( (ptr) &var←c61024)+4) );
/*1*/      jointNum←v12804 = var←c61024.f3;
/*1*/      cpNum←v12776 = var←c61024.f2;
/*1*/      segNum←v12748 = var←c61024.f1;
/*1*/      hitType←v12720 = var←c61024.f0;
/*1*/      };
/*1*/   }
                           else {
SOURCE(26137, 27)
/*1*/   goto lab←L100016;
/*1*/   };
                           };
                        };
SOURCE(26166, 751)
                     if ((hitType←v12720 == 3) || (hitType←v12720 == 2)) {
SOURCE(26222, 103)
                        {
                           W2 var←c61088;
                           {
/*1*/   word var←c61056;
/*1*/   {
/*1*/      word pd268;
/*1*/      pd268 = (* (( (ptr) (* (( (ptr) gf←c64000)+161)/* var←c57920 */  ))+100) );
/*1*/      var←c61056 = (word) ( *( (fPt) ((*  (ptr) pd268 ))))(ggData←v9404, pd268);
/*1*/      };
/*1*/   {
/*1*/      word pd269;
/*1*/      pd269 = (* (( (ptr) (* (( (ptr) gf←c64000)+177)/* var←c60928 */  ))+16) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd269 ))))((word) &var←c61088, var←c61056, pd269);
/*1*/      };
/*1*/   };
                           segToExtendNum←v12832 = var←c61088.f1;
                           trajToExtend←v12692 = var←c61088.f0;
                           };
SOURCE(26327, 590)
                        if ( ( (trajToExtend←v12692 != 0) ? ((*  (ptr) trajToExtend←v12692 ) == traj←v12664) : 0 ) ) {
SOURCE(26382, 387)
                           {
/*1*/   word seq←v12904;
SOURCE(26435, 89)
/*1*/   {
/*1*/      word var←c61120;
/*1*/      var←c61120 = XR←Narrow((* (( (ptr) traj←v12664)+1) ), (* (( (ptr) gf←c64000)+15) ));
/*1*/      {
/*1*/         word pd270;
/*1*/         pd270 = (* (( (ptr) (* (( (ptr) gf←c64000)+179)/* var←c61152 */  ))+4) );
/*1*/         seq←v12904 = (word) ( *( (fPt) ((*  (ptr) pd270 ))))(var←c61120, SGNCK(segToExtendNum←v12832), SGNCK(segNum←v12748), pd270)
/*1*/         ;
/*1*/         };
/*1*/      };
SOURCE(26526, 82)
/*1*/   {
/*1*/      word var←c61184;
/*1*/      {
/*1*/         word pd271;
/*1*/         pd271 = (* (( (ptr) (* (( (ptr) gf←c64000)+180)/* var←c61216 */  ))+8) );
/*1*/         var←c61184 = (word) ( *( (fPt) ((*  (ptr) pd271 ))))(traj←v12664, seq←v12904, pd271);
/*1*/         };
/*1*/      {
/*1*/         word pd272;
/*1*/         pd272 = (* (( (ptr) (* (( (ptr) gf←c64000)+170)/* var←c58496 */  ))+6) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd272 ))))(var←c61184, (* (( (ptr) ggData←v9404)+11) ), 0, pd272);
/*1*/         };
/*1*/      };
SOURCE(26632, 135)
/*1*/   {
/*1*/      word var←c61248;
/*1*/      {
/*1*/         word var←c61280;
/*1*/         word var←c61312;
/*1*/         var←c61280 = XR←NewObject(12, (* (( (ptr) gf←c64000)+19) ));
/*1*/         var←c61312 = var←c61280;
/*1*/         (*  (ptr) var←c61312 ) = 11;
/*1*/         (* (( (ptr) var←c61312)+1) ) = opRope←v9432;
/*1*/         (* (( (ptr) var←c61312)+2) ) = XR←NewObject(12, (* (( (ptr) gf←c64000)+19) ));
/*1*/         var←c61312 = (* (( (ptr) var←c61312)+2) );
/*1*/         (*  (ptr) var←c61312 ) = 11;
/*1*/         {
/*1*/            word pd273;
/*1*/            pd273 = (* (( (ptr) (* (( (ptr) gf←c64000)+181)/* var←c61376 */  ))+44) );
/*1*/            (* (( (ptr) var←c61312)+1) ) = (word) ( *( (fPt) ((*  (ptr) pd273 ))))(traj←v12664, SGNCK(segNum←v12748), pd273);
/*1*/            };
/*1*/         var←c61248 = var←c61280;
/*1*/         };
/*1*/      {
/*1*/         word pd274;
/*1*/         pd274 = (* (( (ptr) (* (( (ptr) gf←c64000)+156)/* var←c57696 */  ))+13) );
/*1*/         (void) ( *( (fPt) ((*  (ptr) pd274 ))))((* (( (ptr) ggData←v9404)+3) ), 0, (* (( (ptr) gf←c64000)+27) ), (* (( (ptr) gf←c64000)+48)
/*1*/             ), var←c61248, pd274);
/*1*/         };
/*1*/      };
/*1*/   };
                           }
                        else {
SOURCE(26814, 103)
                           {
/*1*/   word var←c61408;
/*1*/   var←c61408 = (word) SelectAndDescribeSlicePart←P840(feature←v9320, hitData←v9348, ggData←v9404, 3, opRope←v9432);
/*1*/   {
/*1*/      word pd275;
/*1*/      pd275 = (* (( (ptr) (* (( (ptr) gf←c64000)+161)/* var←c57920 */  ))+101) );
/*1*/      (void) ( *( (fPt) ((*  (ptr) pd275 ))))(ggData←v9404, var←c61408, pd275);
/*1*/      };
/*1*/   };
                           };
                        }
                     else {
SOURCE(26928, 27)
                        goto lab←L100016;
                        };
                     };
                  }
               else {
SOURCE(26964, 27)
                  goto lab←L100016;
                  };
               goto lab←L100017;
               lab←L100016: ;
SOURCE(27025, 74)
               {
                  word var←c61440;
                  var←c61440 = (word) SelectAndDescribeSlicePart←P840(feature←v9320, hitData←v9348, ggData←v9404, 3, opRope←v9432);
                  };
               lab←L100017: ;
               };
            break;
         default: 
SOURCE(27115, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static void EndExtendSelection←P1620(input←v24608, ggData←v24636, worldPt←v24664)
   word input←v24608;
   word ggData←v24636;
   W2 worldPt←v24664;
   {
   register ptr gf←c64032 =  (ptr) &globalframe;
   /* EndExtendSelection: */ 
SOURCE(27184, 232)
SOURCE(27225, 65)
   {
      word var←c61472;
      {
         word var←c61504;
         word var←c61536;
         var←c61504 = XR←NewObject(8, (* (( (ptr) gf←c64032)+16) ));
         var←c61536 = var←c61504;
         (*  (ptr) var←c61536 ) = (* (( (ptr) gf←c64032)+70) );
         var←c61472 = var←c61504;
         };
      (void) DuringExtendSelection←P1500(var←c61472, ggData←v24636, worldPt←v24664);
      };
SOURCE(27292, 124)
   {
      word pd276;
      pd276 = (* (( (ptr) (* (( (ptr) gf←c64032)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd276 ))))((* (( (ptr) gf←c64032)+29) ), ggData←v24636, 4, 0, 0, 0, pd276);
      };
   }

static word StartAddBezier←P1680(input←v24724, ggData←v24752, worldPt←v24780)
   word input←v24724;
   word ggData←v24752;
   W2 worldPt←v24780;
   {
   register ptr gf←c64064 =  (ptr) &globalframe;
   word success←v24824;
   /* StartAddBezier: */ 
SOURCE(27495, 1365)
SOURCE(27495, 1365)
   success←v24824 = 1;
SOURCE(27533, 1327)
   {
      word pd277;
      pd277 = (* (( (ptr) (* (( (ptr) gf←c64064)+158)/* var←c57760 */  ))+7) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd277 ))))((* ((( (ptr) ggData←v24752)+13)) ), pd277))) {
SOURCE(27570, 1170)
         {
            word caret←v12948 = 0;
            word oldTraj←v12976 = 0;
            word newTraj←v13004 = 0;
            word ancestor←v13032 = 0;
            word oldOutline←v13060 = 0;
            word trajEnd←v13088;
            word newNormalD←v13116 = 0;
            word newHotD←v13144 = 0;
            word startBox←v13172;
SOURCE(27695, 106)
            {
               word pd278;
               pd278 = (* (( (ptr) (* (( (ptr) gf←c64064)+165)/* var←c58208 */  ))+13) );
               startBox←v13172 = (word) ( *( (fPt) ((*  (ptr) pd278 ))))(ggData←v24752, 1, 0, 0, 0, 0
                  , 1, 0, 0, 0, 0, pd278);
               };
SOURCE(27856, 49)
            {
               word pd279;
               pd279 = (* (( (ptr) (* (( (ptr) gf←c64064)+182)/* var←c61568 */  ))+7) );
               (void) ( *( (fPt) ((*  (ptr) pd279 ))))((* (( (ptr) gf←c64064)+75) ), ggData←v24752, pd279);
               };
SOURCE(27938, 20)
            caret←v12948 = (* (( (ptr) ggData←v24752)+13) );
SOURCE(27960, 35)
            {
               word pd280;
               pd280 = (* (( (ptr) (* (( (ptr) gf←c64064)+166)/* var←c58240 */  ))+24) );
               (void) ( *( (fPt) ((*  (ptr) pd280 ))))(ggData←v24752, pd280);
               };
SOURCE(28015, 118)
            {
               W4 var←c61600;
               (void) UpdateSceneForAddBezier←P1740((word) &var←c61600, (* (( (ptr) ggData←v24752)+11) ), worldPt←v24780, caret←v12948, (* (
                     ( (ptr) ggData←v24752)+30) ), ggData←v24752);
               ancestor←v13032 = var←c61600.f3;
               trajEnd←v13088 = var←c61600.f2;
               newTraj←v13004 = var←c61600.f1;
               oldTraj←v12976 = var←c61600.f0;
               };
SOURCE(28135, 79)
            {
               word pd281;
               if ((oldTraj←v12976 == 0)) {
                  oldOutline←v13060 = 0;
                  }
               else {
                  pd281 = (* (( (ptr) (* (( (ptr) gf←c64064)+173)/* var←c59584 */  ))+65) );
                  oldOutline←v13060 = (word) ( *( (fPt) ((*  (ptr) pd281 ))))(oldTraj←v12976, pd281);
                  };
               };
SOURCE(28216, 100)
            {
               W2 var←c61632;
               {
                  word pd282;
                  pd282 = (* (( (ptr) (* (( (ptr) gf←c64064)+166)/* var←c58240 */  ))+25) );
                  (void) ( *( (fPt) ((*  (ptr) pd282 ))))((word) &var←c61632, (* (( (ptr) ggData←v24752)+11) ), oldTraj←v12976, newTraj←v13004, trajEnd←v13088, pd282)
                  ;
                  };
               newHotD←v13144 = var←c61632.f1;
               newNormalD←v13116 = var←c61632.f0;
               };
SOURCE(28318, 68)
            {
               word pd283;
               pd283 = (* (( (ptr) (* (( (ptr) gf←c64064)+166)/* var←c58240 */  ))+26) );
               (void) ( *( (fPt) ((*  (ptr) pd283 ))))(caret←v12948, ancestor←v13032, newNormalD←v13116, worldPt←v24780, pd283);
               };
SOURCE(28388, 70)
            {
               word var←c61664;
               word pd284;
               pd284 = (* (( (ptr) (* (( (ptr) gf←c64064)+168)/* var←c58336 */  ))+32) );
               var←c61664 = (word) ( *( (fPt) ((*  (ptr) pd284 ))))(oldOutline←v13060, newNormalD←v13116, trajEnd←v13088, ggData←v24752, pd284)
               ;
               };
SOURCE(28476, 171)
            {
               word var←c61696;
               word pd285;
               pd285 = (* (( (ptr) (* (( (ptr) gf←c64064)+166)/* var←c58240 */  ))+27) );
               var←c61696 = (word) ( *( (fPt) ((*  (ptr) pd285 ))))(ggData←v24752, (* (( (ptr) gf←c64064)+76) ), (* (( (ptr) gf←c64064)+77)
                   ), worldPt←v24780, 0, 0
                  , 1, 1, startBox←v13172, pd285);
               };
SOURCE(28674, 38)
            (void) DuringBezierDrag←P1800(0, ggData←v24752, worldPt←v24780);
            };
         }
      else {
SOURCE(28747, 113)
         {
            word pd286;
            pd286 = (* (( (ptr) (* (( (ptr) gf←c64064)+156)/* var←c57696 */  ))+12) );
            (void) ( *( (fPt) ((*  (ptr) pd286 ))))((* (( (ptr) ggData←v24752)+3) ), 0, (* (( (ptr) gf←c64064)+83) ), (* (( (ptr) gf←c64064)+78)
                ), pd286);
            };
         };
      };
SOURCE(27495, 1365)
   return(success←v24824);
   }

static void UpdateSceneForAddBezier←P1740(formal←c0442, scene←v9504, worldPt←v9532, caret←v9560, defaults←v9588, ggData←v9616)
   word formal←c0442;
   word scene←v9504;
   W2 worldPt←v9532;
   word caret←v9560;
   word defaults←v9588;
   word ggData←v9616;
   {
   register ptr gf←c64096 =  (ptr) &globalframe;
   word oldTraj←v9660;
   word newTraj←v9688;
   word trajEnd←v9716;
   word newOutline←v9744;
   W2 caretPoint←v13216;
   W2 newCaretPoint←v13244;
   word jointNum←v13272;
   word newSeg←v13300 = 0;
   word extendFromSeg←v13328 = 0;
   word newBezier←v13356 = 0;
   word chair←v13384 = 0;
   word thisTraj←v13412 = 0;
   word thisTrajParts←v13440 = 0;
   word thisTrajData←v13468 = 0;
   word thisOutlineSlice←v13496 = 0;
   word addToBezier←v13524 = 0;
   word sliceDesc←v13552;
   /* UpdateSceneForAddBezier: */ 
SOURCE(28866, 4147)
SOURCE(28866, 4147)
   oldTraj←v9660 = 0;
SOURCE(28866, 4147)
   newTraj←v9688 = 0;
SOURCE(28866, 4147)
   newOutline←v9744 = 0;
SOURCE(29300, 86)
   {
      word pd287;
      pd287 = (* (( (ptr) (* (( (ptr) gf←c64096)+175)/* var←c59840 */  ))+37) );
      sliceDesc←v13552 = (word) ( *( (fPt) ((*  (ptr) pd287 ))))(scene←v9504, 1, 0, (* (( (ptr) gf←c64096)+73) ), pd287);
      };
SOURCE(29388, 36)
   {
      word pd288;
      pd288 = (* (( (ptr) (* (( (ptr) gf←c64096)+158)/* var←c57760 */  ))+15) );
      (void) ( *( (fPt) ((*  (ptr) pd288 ))))((word) &caretPoint←v13216, caret←v9560, pd288);
      };
SOURCE(29426, 71)
   {
      word pd289;
      pd289 = (* (( (ptr) (* (( (ptr) gf←c64096)+166)/* var←c58240 */  ))+28) );
      (void) ( *( (fPt) ((*  (ptr) pd289 ))))((word) &newCaretPoint←v13244, worldPt←v9532, ggData←v9616, (* (( (ptr) gf←c64096)+79)
          ), pd289);
      };
SOURCE(29499, 709)
   if ((sliceDesc←v13552 != 0)) {
      {
         word var←c61728;
         word var←c61760;
         word var←c0587;
SOURCE(29557, 34)
         thisOutlineSlice←v13496 = (*  (ptr) sliceDesc←v13552 );
SOURCE(29593, 86)
         {
            word pd290;
            pd290 = (* (( (ptr) (* (( (ptr) gf←c64096)+173)/* var←c59584 */  ))+78) );
            thisTraj←v13412 = (word) ( *( (fPt) ((*  (ptr) pd290 ))))((*  (ptr) sliceDesc←v13552 ), (* (( (ptr) sliceDesc←v13552)+1) ), 0, (* (
                  ( (ptr) gf←c64096)+32) ), pd290);
            };
SOURCE(29681, 38)
         thisTrajParts←v13440 = XR←Narrow((* (( (ptr) thisTraj←v13412)+1) ), (* (( (ptr) gf←c64096)+14) ));
SOURCE(29721, 42)
         thisTrajData←v13468 = XR←Narrow((* (( (ptr) (*  (ptr) thisTraj←v13412 ))+1) ), (* (( (ptr) gf←c64096)+15) ));
SOURCE(29765, 443)
         {
            word tc291;
            word pd292;
            if (((*  (ptr) thisTrajData←v13468 ) == 2)) {
               pd292 = (* (( (ptr) (* (( (ptr) gf←c64096)+179)/* var←c61152 */  ))+29) );
               tc291 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd292 ))))(thisTrajParts←v13440, 0, pd292));
               }
            else {
               tc291 =  (word) 0;
               };
            if (tc291) {
SOURCE(29847, 102)
               {
                  word pd293;
                  pd293 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+29) );
                  if (((*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd293 ))))((*  (ptr) thisTraj←v13412 ), 0, pd293) ) ) == (* (( (ptr) gf←c64096)+81)
                   ))) {
SOURCE(29917, 12)
                     trajEnd←v9716 = 0;
SOURCE(29931, 18)
                     addToBezier←v13524 = 1;
                     };
                  };
               }
            else {
SOURCE(29964, 244)
               {
                  word tc294;
                  word pd296;
                  if (((*  (ptr) thisTrajData←v13468 ) == 2)) {
                     {
                        word pd295;
                        pd295 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+39) );
                        var←c61728 = (word) ( *( (fPt) ((*  (ptr) pd295 ))))((*  (ptr) (thisTraj←v13412) ), pd295);
                        };
                     pd296 = (* (( (ptr) (* (( (ptr) gf←c64096)+179)/* var←c61152 */  ))+29) );
                     tc294 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd296 ))))(thisTrajParts←v13440, var←c61728, pd296));
                     }
                  else {
                     tc294 =  (word) 0;
                     };
                  if (tc294) {
SOURCE(30075, 133)
                     {
                        word pd298;
                        {
                           word pd297;
                           pd297 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+37) );
                           var←c61760 = (word) ( *( (fPt) ((*  (ptr) pd297 ))))((*  (ptr) (thisTraj←v13412) ), pd297);
                           };
                        pd298 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+29) );
                        var←c0587 = (*  (ptr) (*  (ptr) ( *( (fPt) ((*  (ptr) pd298 ))))((*  (ptr) thisTraj←v13412 ), var←c61760, pd298) ) );
                        };
                     if ((var←c0587 == (* (( (ptr) gf←c64096)+81) ))) {
SOURCE(30176, 12)
                        trajEnd←v9716 = 1;
SOURCE(30190, 18)
                        addToBezier←v13524 = 1;
                        };
                     };
                  };
               };
            };
         };
      };
SOURCE(30222, 2791)
   if ( ( (0 != addToBezier←v13524) ? ((* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+17) ) != 0) : 0 ) ) {
SOURCE(30281, 1482)
      {
         W2 oldCtrlPt←v13596;
         W2 newCtrlPt←v13624;
SOURCE(30358, 34)
         {
            word var←c61792;
            var←c61792 = (*  (ptr) thisTraj←v13412 );
            newTraj←v9688 = var←c61792;
            oldTraj←v9660 = var←c61792;
            };
SOURCE(30434, 97)
         {
            word var←c61824;
            {
               word pd299;
               if ((trajEnd←v9716 == 0)) {
                  var←c61824 = 0;
                  }
               else {
                  pd299 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+37) );
                  var←c61824 = (word) ( *( (fPt) ((*  (ptr) pd299 ))))(newTraj←v9688, pd299);
                  };
               };
            {
               word pd300;
               pd300 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+29) );
               extendFromSeg←v13328 = (word) ( *( (fPt) ((*  (ptr) pd300 ))))(newTraj←v9688, var←c61824, pd300);
               };
            };
SOURCE(30533, 592)
         if ((trajEnd←v9716 == 0)) {
SOURCE(30556, 65)
            {
               word pd301;
               pd301 = (* (( (ptr) (*  (ptr) extendFromSeg←v13328 ))+16) );
               (void) ( *( (fPt) ((*  (ptr) pd301 ))))((word) &oldCtrlPt←v13596, extendFromSeg←v13328, 0, pd301);
               };
SOURCE(30623, 100)
            {
               W2 var←c61856;
               {
                  word pd302;
                  pd302 = (* (( (ptr) (* (( (ptr) gf←c64096)+160)/* var←c57888 */  ))+22) );
                  (void) ( *( (fPt) ((*  (ptr) pd302 ))))((word) &var←c61856, oldCtrlPt←v13596, (*  (W2Pt) (( (ptr) extendFromSeg←v13328)+9)
                      ), pd302);
                  };
               {
                  W2 var←c0427;
                  {
                     word pd303;
                     pd303 = (* (( (ptr) (* (( (ptr) gf←c64096)+160)/* var←c57888 */  ))+10) );
                     (void) ( *( (fPt) ((*  (ptr) pd303 ))))((word) &var←c0427, (*  (W2Pt) (( (ptr) extendFromSeg←v13328)+9) ), var←c61856, pd303)
                     ;
                     };
                  newCtrlPt←v13624 = var←c0427;
                  };
               };
SOURCE(30725, 96)
            {
               word pd304;
               pd304 = (* (( (ptr) (* (( (ptr) gf←c64096)+183)/* var←c61888 */  ))+6) );
               newBezier←v13356 = (word) ( *( (fPt) ((*  (ptr) pd304 ))))((*  (W2Pt) (( (ptr) extendFromSeg←v13328)+9) ), newCtrlPt←v13624, newCaretPoint←v13244, newCaretPoint←v13244, 0, pd304)
               ;
               };
            }
         else {
SOURCE(30860, 65)
            {
               word pd305;
               pd305 = (* (( (ptr) (*  (ptr) extendFromSeg←v13328 ))+16) );
               (void) ( *( (fPt) ((*  (ptr) pd305 ))))((word) &oldCtrlPt←v13596, extendFromSeg←v13328, 1, pd305);
               };
SOURCE(30927, 100)
            {
               W2 var←c61920;
               {
                  word pd306;
                  pd306 = (* (( (ptr) (* (( (ptr) gf←c64096)+160)/* var←c57888 */  ))+22) );
                  (void) ( *( (fPt) ((*  (ptr) pd306 ))))((word) &var←c61920, oldCtrlPt←v13596, (*  (W2Pt) (( (ptr) extendFromSeg←v13328)+11)
                      ), pd306);
                  };
               {
                  W2 var←c0431;
                  {
                     word pd307;
                     pd307 = (* (( (ptr) (* (( (ptr) gf←c64096)+160)/* var←c57888 */  ))+10) );
                     (void) ( *( (fPt) ((*  (ptr) pd307 ))))((word) &var←c0431, (*  (W2Pt) (( (ptr) extendFromSeg←v13328)+11) ), var←c61920, pd307)
                     ;
                     };
                  newCtrlPt←v13624 = var←c0431;
                  };
               };
SOURCE(31029, 96)
            {
               word pd308;
               pd308 = (* (( (ptr) (* (( (ptr) gf←c64096)+183)/* var←c61888 */  ))+6) );
               newBezier←v13356 = (word) ( *( (fPt) ((*  (ptr) pd308 ))))((*  (W2Pt) (( (ptr) extendFromSeg←v13328)+11) ), newCtrlPt←v13624, newCaretPoint←v13244, newCaretPoint←v13244, 0, pd308)
               ;
               };
            };
SOURCE(31131, 56)
         {
            word pd309;
            pd309 = (* (( (ptr) (* (( (ptr) gf←c64096)+183)/* var←c61888 */  ))+5) );
            newSeg←v13300 = (word) ( *( (fPt) ((*  (ptr) pd309 ))))(newCaretPoint←v13244, worldPt←v9532, 0, pd309);
            };
SOURCE(31206, 39)
         {
            word pd310;
            pd310 = (* (( (ptr) (* (( (ptr) gf←c64096)+183)/* var←c61888 */  ))+16) );
            (void) ( *( (fPt) ((*  (ptr) pd310 ))))(newSeg←v13300, defaults←v9588, pd310);
            };
SOURCE(31247, 45)
         {
            word pd311;
            pd311 = (* (( (ptr) (* (( (ptr) gf←c64096)+183)/* var←c61888 */  ))+18) );
            (void) ( *( (fPt) ((*  (ptr) pd311 ))))(extendFromSeg←v13328, newBezier←v13356, pd311);
            };
SOURCE(31294, 22)
         (* (( (ptr) newSeg←v13300)+2) ) = (*  (ptr) &fc220 );
SOURCE(31318, 55)
         {
            word var←c61952;
            word pd312;
            pd312 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+6) );
            var←c61952 = (word) ( *( (fPt) ((*  (ptr) pd312 ))))(newTraj←v9688, trajEnd←v9716, newBezier←v13356, 0, pd312);
            };
SOURCE(31375, 52)
         {
            word var←c61984;
            word pd313;
            pd313 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+6) );
            var←c61984 = (word) ( *( (fPt) ((*  (ptr) pd313 ))))(newTraj←v9688, trajEnd←v9716, newSeg←v13300, 0, pd313);
            };
SOURCE(31430, 44)
         (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+18) ) = 1;
SOURCE(31476, 40)
         (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+19) ) = trajEnd←v9716;
SOURCE(31518, 90)
         {
            word var←c62016;
            {
               word tc314;
               word pd315;
               word idx316;
               if ((trajEnd←v9716 == 0)) {
                  tc314 =  (word) 1;
                  }
               else {
                  pd315 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+37) );
                  tc314 =  (word) ((word) ( *( (fPt) ((*  (ptr) pd315 ))))(newTraj←v9688, pd315) - 1);
                  };
               var←c62016 = (
                  idx316 = (word) tc314,
                  SGNCK(idx316)
                  );
               };
            (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+20) ) = var←c62016;
            };
SOURCE(31610, 37)
         (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+21) ) = newTraj←v9688;
SOURCE(31649, 54)
         (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+22) ) = thisOutlineSlice←v13496;
SOURCE(31705, 29)
         newOutline←v9744 = thisOutlineSlice←v13496;
         };
      }
   else {
SOURCE(31864, 53)
      {
         word pd317;
         pd317 = (* (( (ptr) (* (( (ptr) gf←c64096)+183)/* var←c61888 */  ))+5) );
         newSeg←v13300 = (word) ( *( (fPt) ((*  (ptr) pd317 ))))(caretPoint←v13216, worldPt←v9532, 0, pd317);
         };
SOURCE(31949, 39)
      {
         word pd318;
         pd318 = (* (( (ptr) (* (( (ptr) gf←c64096)+183)/* var←c61888 */  ))+16) );
         (void) ( *( (fPt) ((*  (ptr) pd318 ))))(newSeg←v13300, defaults←v9588, pd318);
         };
SOURCE(31990, 22)
      (* (( (ptr) newSeg←v13300)+2) ) = (*  (ptr) &fc220 );
SOURCE(32014, 746)
      {
         word pd319;
         pd319 = (* (( (ptr) (* (( (ptr) gf←c64096)+158)/* var←c57760 */  ))+11) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd319 ))))(caret←v9560, pd319))) {
SOURCE(32073, 67)
            {
               W3 var←c62048;
               {
                  word pd320;
                  pd320 = (* (( (ptr) (* (( (ptr) gf←c64096)+166)/* var←c58240 */  ))+29) );
                  (void) ( *( (fPt) ((*  (ptr) pd320 ))))((word) &var←c62048, caret←v9560, pd320);
                  };
               jointNum←v13272 = var←c62048.f2;
               newTraj←v9688 = var←c62048.f1;
               chair←v13384 = var←c62048.f0;
               };
SOURCE(32142, 17)
            oldTraj←v9660 = newTraj←v9688;
SOURCE(32161, 87)
            {
               word var←c62080;
               var←c62080 = jointNum←v13272;
               {
                  word pd321;
                  if ((var←c62080 == 0)) {
                     trajEnd←v9716 = 0;
                     }
                  else {
                     pd321 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+39) );
                     if ((var←c62080 == (word) ( *( (fPt) ((*  (ptr) pd321 ))))(newTraj←v9688, pd321))) {
                        trajEnd←v9716 = 1;
                        }
                     else {
                        trajEnd←v9716 =  (unsigned) (
                           XR←RaiseUnnamedError(), 0
                           );
                        };
                     };
                  };
               };
SOURCE(32250, 97)
            {
               word var←c62112;
               {
                  word pd322;
                  if ((trajEnd←v9716 == 0)) {
                     var←c62112 = 0;
                     }
                  else {
                     pd322 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+37) );
                     var←c62112 = (word) ( *( (fPt) ((*  (ptr) pd322 ))))(newTraj←v9688, pd322);
                     };
                  };
               {
                  word pd323;
                  pd323 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+29) );
                  extendFromSeg←v13328 = (word) ( *( (fPt) ((*  (ptr) pd323 ))))(newTraj←v9688, var←c62112, pd323);
                  };
               };
SOURCE(32349, 52)
            {
               word var←c62144;
               word pd324;
               pd324 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+6) );
               var←c62144 = (word) ( *( (fPt) ((*  (ptr) pd324 ))))(newTraj←v9688, trajEnd←v9716, newSeg←v13300, 0, pd324);
               };
SOURCE(32403, 24)
            newOutline←v9744 = (*  (ptr) chair←v13384 );
            }
         else {
SOURCE(32462, 13)
            oldTraj←v9660 = 0;
SOURCE(32477, 12)
            trajEnd←v9716 = 1;
SOURCE(32491, 39)
            {
               word pd325;
               pd325 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+4) );
               newTraj←v9688 = (word) ( *( (fPt) ((*  (ptr) pd325 ))))(caretPoint←v13216, pd325);
               };
SOURCE(32532, 66)
            {
               word pd326;
               pd326 = (* (( (ptr) (* (( (ptr) gf←c64096)+159)/* var←c57824 */  ))+57) );
               (void) ( *( (fPt) ((*  (ptr) pd326 ))))(newTraj←v9688, 0, (* (( (ptr) defaults←v9588)+1) ), 0, pd326);
               };
SOURCE(32600, 52)
            {
               word var←c62176;
               word pd327;
               pd327 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+6) );
               var←c62176 = (word) ( *( (fPt) ((*  (ptr) pd327 ))))(newTraj←v9688, trajEnd←v9716, newSeg←v13300, 0, pd327);
               };
SOURCE(32654, 65)
            {
               word pd328;
               pd328 = (* (( (ptr) (* (( (ptr) gf←c64096)+177)/* var←c60928 */  ))+5) );
               newOutline←v9744 = (word) ( *( (fPt) ((*  (ptr) pd328 ))))(newTraj←v9688, (* (( (ptr) defaults←v9588)+8) ), pd328);
               };
SOURCE(32721, 39)
            {
               word pd329;
               pd329 = (* (( (ptr) (* (( (ptr) gf←c64096)+175)/* var←c59840 */  ))+9) );
               (void) ( *( (fPt) ((*  (ptr) pd329 ))))(scene←v9504, newOutline←v9744,  (word) -1, pd329);
               };
            };
         };
SOURCE(32765, 40)
      (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+19) ) = trajEnd←v9716;
SOURCE(32838, 86)
      {
         word var←c62208;
         {
            word pd330;
            if ((trajEnd←v9716 == 0)) {
               var←c62208 = 0;
               }
            else {
               pd330 = (* (( (ptr) (* (( (ptr) gf←c64096)+178)/* var←c60992 */  ))+37) );
               var←c62208 = (word) ( *( (fPt) ((*  (ptr) pd330 ))))(newTraj←v9688, pd330);
               };
            };
         (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+20) ) = var←c62208;
         };
SOURCE(32926, 37)
      (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+21) ) = newTraj←v9688;
SOURCE(32965, 48)
      (* (( (ptr) (* (( (ptr) ggData←v9616)+16) ))+22) ) = newOutline←v9744;
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0442 ) = oldTraj←v9660;
   (* (( (ptr) formal←c0442)+1) ) = newTraj←v9688;
   (* (( (ptr) formal←c0442)+2) ) = trajEnd←v9716;
   (* (( (ptr) formal←c0442)+3) ) = newOutline←v9744;
   return;
   }

static void DuringBezierDrag←P1800(input←v24884, ggData←v24912, worldPt←v24940)
   word input←v24884;
   word ggData←v24912;
   W2 worldPt←v24940;
   {
   register ptr gf←c64128 =  (ptr) &globalframe;
   W2 totalDragVector←v13668;
   W2 mapPoint←v13696;
   /* DuringBezierDrag: */ 
SOURCE(33022, 959)
SOURCE(33104, 66)
   {
      word pd331;
      pd331 = (* (( (ptr) (* (( (ptr) gf←c64128)+166)/* var←c58240 */  ))+28) );
      (void) ( *( (fPt) ((*  (ptr) pd331 ))))((word) &mapPoint←v13696, worldPt←v24940, ggData←v24912, (* (( (ptr) gf←c64128)+79)
          ), pd331);
      };
SOURCE(33172, 65)
   {
      word pd332;
      pd332 = (* (( (ptr) (* (( (ptr) gf←c64128)+160)/* var←c57888 */  ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd332 ))))((word) &totalDragVector←v13668, mapPoint←v13696, (*  (W2Pt) (( (ptr) (* (( (ptr) ggData←v24912)+16)
             ))+2) ), pd332);
      };
SOURCE(33239, 94)
   {
      W2 var←c62240;
      var←c62240.f0 = totalDragVector←v13668.f0;
      var←c62240.f1 = totalDragVector←v13668.f1;
      {
         word pd333;
         pd333 = (* (( (ptr) (* (( (ptr) gf←c64128)+174)/* var←c59680 */  ))+10) );
         (* (( (ptr) (* (( (ptr) ggData←v24912)+16) ))+13) ) = (word) ( *( (fPt) ((*  (ptr) pd333 ))))(var←c62240, pd333);
         };
      };
SOURCE(33335, 511)
   if ((0 != (* (( (ptr) (* (( (ptr) ggData←v24912)+16) ))+18) ))) {
SOURCE(33381, 467)
      {
         W2 newCP←v13740;
         W2 dragCP←v13768;
         word bezier←v13796;
SOURCE(33413, 100)
         {
            word pd334;
            pd334 = (* (( (ptr) (* (( (ptr) gf←c64128)+178)/* var←c60992 */  ))+29) );
            bezier←v13796 = (word) ( *( (fPt) ((*  (ptr) pd334 ))))((* (( (ptr) (* (( (ptr) ggData←v24912)+16) ))+21) ), (* (( (ptr) (* (
                     ( (ptr) ggData←v24912)+16) ))+20) ), pd334);
            };
SOURCE(33515, 226)
         if (((* (( (ptr) (* (( (ptr) ggData←v24912)+16) ))+19) ) == 0)) {
SOURCE(33561, 43)
            {
               word pd335;
               pd335 = (* (( (ptr) (* (( (ptr) gf←c64128)+160)/* var←c57888 */  ))+11) );
               (void) ( *( (fPt) ((*  (ptr) pd335 ))))((word) &dragCP←v13768, mapPoint←v13696, (*  (W2Pt) (( (ptr) bezier←v13796)+9) ), pd335)
               ;
               };
SOURCE(33606, 41)
            {
               word pd336;
               pd336 = (* (( (ptr) (* (( (ptr) gf←c64128)+160)/* var←c57888 */  ))+11) );
               (void) ( *( (fPt) ((*  (ptr) pd336 ))))((word) &newCP←v13740, (*  (W2Pt) (( (ptr) bezier←v13796)+9) ), dragCP←v13768, pd336)
               ;
               };
            }
         else {
SOURCE(33656, 43)
            {
               word pd337;
               pd337 = (* (( (ptr) (* (( (ptr) gf←c64128)+160)/* var←c57888 */  ))+11) );
               (void) ( *( (fPt) ((*  (ptr) pd337 ))))((word) &dragCP←v13768, mapPoint←v13696, (*  (W2Pt) (( (ptr) bezier←v13796)+11) ), pd337)
               ;
               };
SOURCE(33701, 40)
            {
               word pd338;
               pd338 = (* (( (ptr) (* (( (ptr) gf←c64128)+160)/* var←c57888 */  ))+11) );
               (void) ( *( (fPt) ((*  (ptr) pd338 ))))((word) &newCP←v13740, (*  (W2Pt) (( (ptr) bezier←v13796)+11) ), dragCP←v13768, pd338)
               ;
               };
            };
SOURCE(33746, 100)
         {
            word pd339;
            pd339 = (* (( (ptr) (* (( (ptr) gf←c64128)+183)/* var←c61888 */  ))+33) );
            (void) ( *( (fPt) ((*  (ptr) pd339 ))))(bezier←v13796, newCP←v13740,  ( ((* (( (ptr) (* (( (ptr) ggData←v24912)+16) ))+19)
                ) == 0) ? 0 : 1 ) , pd339);
            };
         };
      };
SOURCE(33852, 129)
   {
      word pd340;
      pd340 = (* (( (ptr) (* (( (ptr) gf←c64128)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd340 ))))((* (( (ptr) gf←c64128)+82) ), ggData←v24912, 4, 0, 0, 1, pd340);
      };
   }

static word ContinueBezierAdd←P1860(input←v25000, ggData←v25028, worldPt←v25056)
   word input←v25000;
   word ggData←v25028;
   W2 worldPt←v25056;
   {
   register ptr gf←c64160 =  (ptr) &globalframe;
   word success←v25100;
   W2 bezierSetCP←v13840;
   W2 bezierSetJoint←v13868;
   W2 caretPoint←v13896;
   W2 newCaretPoint←v13924;
   word trajEnd←v13952;
   word extendFromSeg←v13980 = 0;
   word newBezier←v14008 = 0;
   word newSeg←v14036 = 0;
   word oldTraj←v14064;
   word tangentSeg←v14092 = 0;
   word thisTraj←v14120 = 0;
   word hiSegNum←v14148;
   word priority←v14176;
   word newNormal←v14204 = 0;
   word newHot←v14232 = 0;
   word delSeq←v14260 = 0;
   word newOutlines←v14288 = 0;
   word thisOutlineSlice←v14316 = 0;
   word oldOutlineSlice←v14344 = 0;
   word thisOutline←v14372 = 0;
   word ancestorD←v14400 = 0;
   /* ContinueBezierAdd: */ 
SOURCE(34011, 4072)
SOURCE(34011, 4072)
   success←v25100 = 1;
SOURCE(34175, 43)
   oldTraj←v14064 = (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+21) );
SOURCE(34257, 41)
   {
      word pd341;
      pd341 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+37) );
      hiSegNum←v14148 = (word) ( *( (fPt) ((*  (ptr) pd341 ))))(oldTraj←v14064, pd341);
      };
   {
      word var←c62304;
      W2 var←c0487;
SOURCE(34498, 109)
      {
         word pd342;
         pd342 = (* (( (ptr) (* (( (ptr) gf←c64160)+166)/* var←c58240 */  ))+30) );
         (void) ( *( (fPt) ((*  (ptr) pd342 ))))((* (( (ptr) ggData←v25028)+11) ), (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+13)
             ), (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+17) ), 0, pd342);
         };
SOURCE(34722, 29)
      {
         word pd343;
         pd343 = (* (( (ptr) (* (( (ptr) gf←c64160)+182)/* var←c61568 */  ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd343 ))))(ggData←v25028, pd343);
         };
SOURCE(34803, 41)
      {
         word pd344;
         pd344 = (* (( (ptr) (* (( (ptr) gf←c64160)+165)/* var←c58208 */  ))+20) );
         (void) ( *( (fPt) ((*  (ptr) pd344 ))))(ggData←v25028, pd344);
         };
SOURCE(34846, 28)
      {
         word pd345;
         pd345 = (* (( (ptr) (* (( (ptr) gf←c64160)+171)/* var←c58592 */  ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd345 ))))(ggData←v25028, pd345);
         };
SOURCE(34876, 35)
      {
         word pd346;
         pd346 = (* (( (ptr) (* (( (ptr) gf←c64160)+166)/* var←c58240 */  ))+24) );
         (void) ( *( (fPt) ((*  (ptr) pd346 ))))(ggData←v25028, pd346);
         };
SOURCE(34932, 71)
      {
         word pd347;
         pd347 = (* (( (ptr) (* (( (ptr) gf←c64160)+166)/* var←c58240 */  ))+28) );
         (void) ( *( (fPt) ((*  (ptr) pd347 ))))((word) &newCaretPoint←v13924, worldPt←v25056, ggData←v25028, (* (( (ptr) gf←c64160)+79)
             ), pd347);
         };
SOURCE(35030, 43)
      {
         word pd348;
         pd348 = (* (( (ptr) (* (( (ptr) gf←c64160)+158)/* var←c57760 */  ))+15) );
         (void) ( *( (fPt) ((*  (ptr) pd348 ))))((word) &caretPoint←v13896, (* (( (ptr) ggData←v25028)+13) ), pd348);
         };
SOURCE(35076, 305)
      if ((0 != (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+18) ))) {
SOURCE(35124, 173)
         if (((* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+19) ) == 1)) {
SOURCE(35168, 85)
            {
               word pd349;
               pd349 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+29) );
               tangentSeg←v14092 = (word) ( *( (fPt) ((*  (ptr) pd349 ))))(oldTraj←v14064, ((* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+20)
                   ) + 1), pd349);
               };
            }
         else {
SOURCE(35253, 44)
            {
               word pd350;
               pd350 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+29) );
               tangentSeg←v14092 = (word) ( *( (fPt) ((*  (ptr) pd350 ))))(oldTraj←v14064, 0, pd350);
               };
            };
         }
      else {
SOURCE(35306, 75)
         {
            word pd351;
            pd351 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+29) );
            tangentSeg←v14092 = (word) ( *( (fPt) ((*  (ptr) pd351 ))))(oldTraj←v14064, (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+20)
                ), pd351);
            };
         };
SOURCE(35384, 360)
      if (((* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+19) ) == 1)) {
SOURCE(35430, 12)
         trajEnd←v13952 = 1;
SOURCE(35444, 30)
         bezierSetJoint←v13868 = (*  (W2Pt) (( (ptr) tangentSeg←v14092)+9) );
SOURCE(35476, 27)
         bezierSetCP←v13840 = (*  (W2Pt) (( (ptr) tangentSeg←v14092)+11) );
SOURCE(35505, 80)
         if ((hiSegNum←v14148 != 0)) {
SOURCE(35528, 57)
            {
               word pd352;
               pd352 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+29) );
               extendFromSeg←v13980 = (word) ( *( (fPt) ((*  (ptr) pd352 ))))(oldTraj←v14064, SGNCK((hiSegNum←v14148 - 1)), pd352);
               };
            };
         }
      else {
SOURCE(35599, 12)
         trajEnd←v13952 = 0;
SOURCE(35613, 30)
         bezierSetJoint←v13868 = (*  (W2Pt) (( (ptr) tangentSeg←v14092)+11) );
SOURCE(35645, 27)
         bezierSetCP←v13840 = (*  (W2Pt) (( (ptr) tangentSeg←v14092)+9) );
SOURCE(35674, 70)
         if ((hiSegNum←v14148 != 0)) {
SOURCE(35697, 47)
            {
               word pd353;
               pd353 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+29) );
               extendFromSeg←v13980 = (word) ( *( (fPt) ((*  (ptr) pd353 ))))(oldTraj←v14064, 1, pd353);
               };
            };
         };
SOURCE(35752, 53)
      oldOutlineSlice←v14344 = (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+22) );
SOURCE(35807, 75)
      {
         word pd354;
         pd354 = (* (( (ptr) (* (( (ptr) gf←c64160)+175)/* var←c59840 */  ))+21) );
         priority←v14176 = (word) ( *( (fPt) ((*  (ptr) pd354 ))))((* (( (ptr) ggData←v25028)+11) ), oldOutlineSlice←v14344, pd354)
         ;
         };
SOURCE(35884, 96)
      {
         word pd355;
         pd355 = (* (( (ptr) (* (( (ptr) gf←c64160)+183)/* var←c61888 */  ))+6) );
         newBezier←v14008 = (word) ( *( (fPt) ((*  (ptr) pd355 ))))(bezierSetJoint←v13868, bezierSetCP←v13840, newCaretPoint←v13924, newCaretPoint←v13924, 0, pd355)
         ;
         };
SOURCE(35982, 56)
      {
         word pd356;
         pd356 = (* (( (ptr) (* (( (ptr) gf←c64160)+183)/* var←c61888 */  ))+5) );
         newSeg←v14036 = (word) ( *( (fPt) ((*  (ptr) pd356 ))))(newCaretPoint←v13924, worldPt←v25056, 0, pd356);
         };
SOURCE(36040, 176)
      if ((hiSegNum←v14148 != 0)) {
SOURCE(36115, 45)
         {
            word pd357;
            pd357 = (* (( (ptr) (* (( (ptr) gf←c64160)+183)/* var←c61888 */  ))+18) );
            (void) ( *( (fPt) ((*  (ptr) pd357 ))))(extendFromSeg←v13980, newBezier←v14008, pd357);
            };
         }
      else {
SOURCE(36167, 49)
         {
            word pd358;
            pd358 = (* (( (ptr) (* (( (ptr) gf←c64160)+183)/* var←c61888 */  ))+16) );
            (void) ( *( (fPt) ((*  (ptr) pd358 ))))(newBezier←v14008, (* (( (ptr) ggData←v25028)+30) ), pd358);
            };
         };
SOURCE(36218, 46)
      {
         word pd359;
         pd359 = (* (( (ptr) (* (( (ptr) gf←c64160)+183)/* var←c61888 */  ))+16) );
         (void) ( *( (fPt) ((*  (ptr) pd359 ))))(newSeg←v14036, (* (( (ptr) ggData←v25028)+30) ), pd359);
         };
SOURCE(36266, 22)
      (* (( (ptr) newSeg←v14036)+2) ) = (*  (ptr) &fc220 );
SOURCE(36290, 109)
      {
         word var←c62272;
         var←c62272 = XR←Narrow((* (( (ptr) (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+21) ))+1) ), (* (( (ptr) gf←c64160)+15) ))
         ;
         {
            word pd360;
            pd360 = (* (( (ptr) (* (( (ptr) gf←c64160)+179)/* var←c61152 */  ))+33) );
            delSeq←v14260 = (word) ( *( (fPt) ((*  (ptr) pd360 ))))(var←c62272, (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+19) ), pd360)
            ;
            };
         };
SOURCE(36426, 128)
      {
         word pd361;
         pd361 = (* (( (ptr) (* (( (ptr) gf←c64160)+180)/* var←c61216 */  ))+8) );
         var←c62304 = (word) ( *( (fPt) ((*  (ptr) pd361 ))))((* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+21) ), delSeq←v14260, pd361)
         ;
         };
      {
         word pd362;
         pd362 = (* (( (ptr) (* (( (ptr) gf←c64160)+175)/* var←c59840 */  ))+15) );
         (void) ( *( (fPt) ((*  (ptr) pd362 ))))((word) &var←c0487, var←c62304, (* (( (ptr) ggData←v25028)+11) ), pd362);
         };
      newOutlines←v14288 = var←c0487.f1;
SOURCE(36556, 124)
      {
         word var←c62336;
         {
            word pd363;
            pd363 = (* (( (ptr) (* (( (ptr) gf←c64160)+180)/* var←c61216 */  ))+8) );
            var←c62336 = (word) ( *( (fPt) ((*  (ptr) pd363 ))))((* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+21) ), delSeq←v14260, pd363)
            ;
            };
         {
            word pd364;
            pd364 = (* (( (ptr) (* (( (ptr) gf←c64160)+173)/* var←c59584 */  ))+84) );
            ancestorD←v14400 = (word) ( *( (fPt) ((*  (ptr) pd364 ))))(var←c62336, pd364);
            };
         };
SOURCE(36682, 686)
      if ((newOutlines←v14288 == 0)) {
SOURCE(36752, 42)
         {
            word pd365;
            pd365 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+4) );
            thisTraj←v14120 = (word) ( *( (fPt) ((*  (ptr) pd365 ))))((*  (W2Pt) ((( (ptr) newBezier←v14008)+9)) ), pd365);
            };
SOURCE(36796, 79)
         {
            word pd366;
            pd366 = (* (( (ptr) (* (( (ptr) gf←c64160)+177)/* var←c60928 */  ))+5) );
            thisOutlineSlice←v14316 = (word) ( *( (fPt) ((*  (ptr) pd366 ))))(thisTraj←v14120, (* (( (ptr) (* (( (ptr) ggData←v25028)+30)
                   ))+8) ), pd366);
            };
SOURCE(36877, 74)
         {
            word pd367;
            pd367 = (* (( (ptr) (* (( (ptr) gf←c64160)+159)/* var←c57824 */  ))+57) );
            (void) ( *( (fPt) ((*  (ptr) pd367 ))))(thisTraj←v14120, 0, (* (( (ptr) (* (( (ptr) ggData←v25028)+30) ))+1) ), 0, pd367)
            ;
            };
SOURCE(36953, 56)
         {
            word var←c62368;
            word pd368;
            pd368 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+6) );
            var←c62368 = (word) ( *( (fPt) ((*  (ptr) pd368 ))))(thisTraj←v14120, trajEnd←v13952, newBezier←v14008, 0, pd368);
            };
SOURCE(37011, 53)
         {
            word var←c62400;
            word pd369;
            pd369 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+6) );
            var←c62400 = (word) ( *( (fPt) ((*  (ptr) pd369 ))))(thisTraj←v14120, trajEnd←v13952, newSeg←v14036, 0, pd369);
            };
SOURCE(37066, 58)
         {
            word pd370;
            pd370 = (* (( (ptr) (* (( (ptr) gf←c64160)+175)/* var←c59840 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd370 ))))((* (( (ptr) ggData←v25028)+11) ), thisOutlineSlice←v14316, priority←v14176, pd370)
            ;
            };
         }
      else {
SOURCE(37135, 36)
         thisOutlineSlice←v14316 = (*  (ptr) newOutlines←v14288 );
SOURCE(37173, 43)
         thisOutline←v14372 = XR←Narrow((* (( (ptr) thisOutlineSlice←v14316)+1) ), (* (( (ptr) gf←c64160)+11) ));
SOURCE(37218, 37)
         thisTraj←v14120 = (*  (ptr) (* (( (ptr) thisOutline←v14372)+4) ) );
SOURCE(37257, 56)
         {
            word var←c62432;
            word pd371;
            pd371 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+6) );
            var←c62432 = (word) ( *( (fPt) ((*  (ptr) pd371 ))))(thisTraj←v14120, trajEnd←v13952, newBezier←v14008, 0, pd371);
            };
SOURCE(37315, 53)
         {
            word var←c62464;
            word pd372;
            pd372 = (* (( (ptr) (* (( (ptr) gf←c64160)+178)/* var←c60992 */  ))+6) );
            var←c62464 = (word) ( *( (fPt) ((*  (ptr) pd372 ))))(thisTraj←v14120, trajEnd←v13952, newSeg←v14036, 0, pd372);
            };
         };
SOURCE(37373, 44)
      (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+18) ) = 1;
SOURCE(37419, 69)
      if ((trajEnd←v13952 == 0)) {
         (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+20) ) = 1;
         }
      else {
         (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+20) ) = hiSegNum←v14148;
         };
SOURCE(37490, 38)
      (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+21) ) = thisTraj←v14120;
SOURCE(37530, 54)
      (* (( (ptr) (* (( (ptr) ggData←v25028)+16) ))+22) ) = thisOutlineSlice←v14316;
SOURCE(37587, 49)
      {
         word pd373;
         pd373 = (* (( (ptr) (* (( (ptr) gf←c64160)+182)/* var←c61568 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd373 ))))((* (( (ptr) gf←c64160)+75) ), ggData←v25028, pd373);
         };
SOURCE(37670, 99)
      {
         W2 var←c62496;
         {
            word pd374;
            pd374 = (* (( (ptr) (* (( (ptr) gf←c64160)+166)/* var←c58240 */  ))+25) );
            (void) ( *( (fPt) ((*  (ptr) pd374 ))))((word) &var←c62496, (* (( (ptr) ggData←v25028)+11) ), oldTraj←v14064, thisTraj←v14120, trajEnd←v13952, pd374)
            ;
            };
         newHot←v14232 = var←c62496.f1;
         newNormal←v14204 = var←c62496.f0;
         };
SOURCE(37771, 82)
      {
         word pd375;
         pd375 = (* (( (ptr) (* (( (ptr) gf←c64160)+166)/* var←c58240 */  ))+26) );
         (void) ( *( (fPt) ((*  (ptr) pd375 ))))((* (( (ptr) ggData←v25028)+13) ), thisOutlineSlice←v14316, newNormal←v14204, worldPt←v25056, pd375)
         ;
         };
SOURCE(37855, 74)
      {
         word var←c62528;
         word pd376;
         pd376 = (* (( (ptr) (* (( (ptr) gf←c64160)+168)/* var←c58336 */  ))+32) );
         var←c62528 = (word) ( *( (fPt) ((*  (ptr) pd376 ))))(oldOutlineSlice←v14344, ancestorD←v14400, trajEnd←v13952, ggData←v25028, pd376)
         ;
         };
SOURCE(37931, 112)
      {
         word var←c62560;
         word pd377;
         pd377 = (* (( (ptr) (* (( (ptr) gf←c64160)+166)/* var←c58240 */  ))+31) );
         var←c62560 = (word) ( *( (fPt) ((*  (ptr) pd377 ))))(ggData←v25028, (* (( (ptr) gf←c64160)+76) ), (* (( (ptr) gf←c64160)+77)
             ), worldPt←v25056, 0, pd377);
         };
SOURCE(38045, 38)
      (void) DuringBezierDrag←P1800(0, ggData←v25028, worldPt←v25056);
      };
SOURCE(34011, 4072)
   return(success←v25100);
   }

static void EndBezierAdd←P1920(input←v25160, ggData←v25188, worldPt←v25216)
   word input←v25160;
   word ggData←v25188;
   W2 worldPt←v25216;
   {
   register ptr gf←c64192 =  (ptr) &globalframe;
   word delSeq←v14528 = 0;
   word newOutlines←v14556 = 0;
   W2 point←v14584;
   W2 normal←v14612;
   word newEndJoint←v14640;
   /* EndBezierAdd: */ 
SOURCE(38115, 2094)
SOURCE(38246, 44)
   {
      word pd378;
      pd378 = (* (( (ptr) (* (( (ptr) gf←c64192)+167)/* var←c58272 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd378 ))))((* (( (ptr) gf←c64192)+84) ), (* (( (ptr) gf←c64192)+26) ), pd378);
      };
SOURCE(38292, 132)
   {
      word var←c62592;
      var←c62592 = (* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+19) );
      if ((var←c62592 == 0)) {
SOURCE(38341, 15)
         newEndJoint←v14640 = 1;
         }
      else {
         if ((var←c62592 == 1)) {
SOURCE(38364, 60)
            {
               word pd379;
               word idx380;
               pd379 = (* (( (ptr) (* (( (ptr) gf←c64192)+178)/* var←c60992 */  ))+39) );
               newEndJoint←v14640 = (
                  idx380 = (word) ((word) ( *( (fPt) ((*  (ptr) pd379 ))))((* ((( (ptr) (* (( (ptr) ggData←v25188)+16) ))+21)) ), pd379) - 1),
                  SGNCK(idx380)
                  );
               };
            };
         };
      };
SOURCE(38435, 70)
   {
      word pd381;
      pd381 = (* (( (ptr) (* (( (ptr) gf←c64192)+178)/* var←c60992 */  ))+32) );
      (void) ( *( (fPt) ((*  (ptr) pd381 ))))((word) &point←v14584, (* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+21) ), newEndJoint←v14640, pd381)
      ;
      };
SOURCE(38507, 74)
   {
      word pd382;
      pd382 = (* (( (ptr) (* (( (ptr) gf←c64192)+178)/* var←c60992 */  ))+34) );
      (void) ( *( (fPt) ((*  (ptr) pd382 ))))((word) &normal←v14612, (* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+21) ), newEndJoint←v14640, pd382)
      ;
      };
SOURCE(38583, 109)
   {
      word var←c62624;
      var←c62624 = XR←Narrow((* (( (ptr) (* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+21) ))+1) ), (* (( (ptr) gf←c64192)+15) ))
      ;
      {
         word pd383;
         pd383 = (* (( (ptr) (* (( (ptr) gf←c64192)+179)/* var←c61152 */  ))+33) );
         delSeq←v14528 = (word) ( *( (fPt) ((*  (ptr) pd383 ))))(var←c62624, (* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+19) ), pd383)
         ;
         };
      };
SOURCE(38719, 124)
   {
      W2 var←c62688;
      {
         word var←c62656;
         {
            word pd384;
            pd384 = (* (( (ptr) (* (( (ptr) gf←c64192)+180)/* var←c61216 */  ))+8) );
            var←c62656 = (word) ( *( (fPt) ((*  (ptr) pd384 ))))((* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+21) ), delSeq←v14528, pd384)
            ;
            };
         {
            word pd385;
            pd385 = (* (( (ptr) (* (( (ptr) gf←c64192)+175)/* var←c59840 */  ))+15) );
            (void) ( *( (fPt) ((*  (ptr) pd385 ))))((word) &var←c62688, var←c62656, (* (( (ptr) ggData←v25188)+11) ), pd385);
            };
         };
      newOutlines←v14556 = var←c62688.f1;
      };
SOURCE(38845, 709)
   if ((newOutlines←v14556 == 0)) {
SOURCE(38904, 32)
      {
         word pd386;
         pd386 = (* (( (ptr) (* (( (ptr) gf←c64192)+158)/* var←c57760 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd386 ))))((* (( (ptr) ggData←v25188)+13) ), 0, pd386);
         };
      }
   else {
SOURCE(38945, 611)
      {
         word jointParts←v14768 = 0;
         word jointD←v14796 = 0;
         word outD←v14824 = 0;
         word shortOutline←v14852 = 0;
         word shortTraj←v14880 = 0;
SOURCE(39039, 32)
         shortOutline←v14852 = (*  (ptr) newOutlines←v14556 );
SOURCE(39073, 59)
         {
            word pd387;
            pd387 = (* (( (ptr) (* (( (ptr) gf←c64192)+173)/* var←c59584 */  ))+77) );
            shortTraj←v14880 = (word) ( *( (fPt) ((*  (ptr) pd387 ))))(shortOutline←v14852, 0, (* (( (ptr) gf←c64192)+32) ), pd387);
            };
SOURCE(39134, 127)
         {
            word var←c62720;
            var←c62720 = XR←Narrow((* (( (ptr) shortTraj←v14880)+1) ), (* (( (ptr) gf←c64192)+15) ));
            {
               word pd388;
               pd388 = (* (( (ptr) (* (( (ptr) gf←c64192)+179)/* var←c61152 */  ))+8) );
               jointParts←v14768 = (word) ( *( (fPt) ((*  (ptr) pd388 ))))(var←c62720,  ( ((* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+19)
                   ) == 0) ? 0 : newEndJoint←v14640 ) , pd388);
               };
            };
SOURCE(39263, 59)
         {
            word pd389;
            pd389 = (* (( (ptr) (* (( (ptr) gf←c64192)+180)/* var←c61216 */  ))+8) );
            jointD←v14796 = (word) ( *( (fPt) ((*  (ptr) pd389 ))))(shortTraj←v14880, jointParts←v14768, pd389);
            };
SOURCE(39380, 61)
         {
            word pd390;
            pd390 = (* (( (ptr) (* (( (ptr) gf←c64192)+173)/* var←c59584 */  ))+84) );
            outD←v14824 = (word) ( *( (fPt) ((*  (ptr) pd390 ))))(jointD←v14796, pd390);
            };
SOURCE(39443, 33)
         {
            word pd391;
            pd391 = (* (( (ptr) (* (( (ptr) gf←c64192)+158)/* var←c57760 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd391 ))))((* (( (ptr) ggData←v25188)+13) ), outD←v14824, pd391);
            };
SOURCE(39478, 76)
         {
            word pd392;
            pd392 = (* (( (ptr) (* (( (ptr) gf←c64192)+170)/* var←c58496 */  ))+6) );
            (void) ( *( (fPt) ((*  (ptr) pd392 ))))(outD←v14824, (* (( (ptr) ggData←v25188)+11) ), 0, pd392);
            };
         };
      };
SOURCE(39559, 54)
   {
      word pd393;
      pd393 = (* (( (ptr) (* (( (ptr) gf←c64192)+158)/* var←c57760 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd393 ))))((* (( (ptr) ggData←v25188)+13) ), point←v14584, normal←v14612, 0, pd393);
      };
SOURCE(39615, 30)
   {
      word pd394;
      pd394 = (* (( (ptr) (* (( (ptr) gf←c64192)+165)/* var←c58208 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd394 ))))(ggData←v25188, pd394);
      };
SOURCE(39647, 91)
   {
      word var←c62752;
      {
         word pd395;
         pd395 = (* (( (ptr) (* (( (ptr) gf←c64192)+159)/* var←c57824 */  ))+7) );
         var←c62752 = (word) ( *( (fPt) ((*  (ptr) pd395 ))))((* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+21) ), 0, pd395);
         };
      {
         word pd396;
         pd396 = (* (( (ptr) (* (( (ptr) gf←c64192)+165)/* var←c58208 */  ))+11) );
         (void) ( *( (fPt) ((*  (ptr) pd396 ))))(ggData←v25188, var←c62752, 0, pd396);
         };
      };
SOURCE(39740, 45)
   (* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+18) ) = 0;
SOURCE(39787, 41)
   (* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+22) ) = 0;
SOURCE(39830, 33)
   (* (( (ptr) (* (( (ptr) ggData←v25188)+16) ))+21) ) = 0;
SOURCE(39866, 29)
   {
      word pd397;
      pd397 = (* (( (ptr) (* (( (ptr) gf←c64192)+182)/* var←c61568 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd397 ))))(ggData←v25188, pd397);
      };
SOURCE(39937, 41)
   {
      word pd398;
      pd398 = (* (( (ptr) (* (( (ptr) gf←c64192)+165)/* var←c58208 */  ))+20) );
      (void) ( *( (fPt) ((*  (ptr) pd398 ))))(ggData←v25188, pd398);
      };
SOURCE(39980, 28)
   {
      word pd399;
      pd399 = (* (( (ptr) (* (( (ptr) gf←c64192)+171)/* var←c58592 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd399 ))))(ggData←v25188, pd399);
      };
SOURCE(40010, 154)
   {
      word pd400;
      pd400 = (* (( (ptr) (* (( (ptr) gf←c64192)+171)/* var←c58592 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd400 ))))((* (( (ptr) gf←c64192)+85) ), ggData←v25188, 0, 1, 0, 0, pd400);
      };
SOURCE(40166, 43)
   {
      word pd401;
      pd401 = (* (( (ptr) (* (( (ptr) gf←c64192)+167)/* var←c58272 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd401 ))))((* (( (ptr) gf←c64192)+84) ), (* (( (ptr) gf←c64192)+26) ), pd401);
      };
   }

static void AbortBezierAdd←P1980(input←v9804, ggData←v9832, worldPt←v9860)
   word input←v9804;
   word ggData←v9832;
   W2 worldPt←v9860;
   {
   register ptr gf←c64224 =  (ptr) &globalframe;
   word delSeq←v14924 = 0;
   word partSeq←v14952 = 0;
   word delD←v14980 = 0;
   word newOutlines←v15008 = 0;
   word newEndJoint←v15036;
   /* AbortBezierAdd: */ 
SOURCE(40235, 2084)
SOURCE(40422, 132)
   {
      word var←c62784;
      var←c62784 = (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+19) );
      if ((var←c62784 == 0)) {
SOURCE(40471, 15)
         newEndJoint←v15036 = 1;
         }
      else {
         if ((var←c62784 == 1)) {
SOURCE(40494, 60)
            {
               word pd402;
               word idx403;
               pd402 = (* (( (ptr) (* (( (ptr) gf←c64224)+178)/* var←c60992 */  ))+39) );
               newEndJoint←v15036 = (
                  idx403 = (word) ((word) ( *( (fPt) ((*  (ptr) pd402 ))))((* ((( (ptr) (* (( (ptr) ggData←v9832)+16) ))+21)) ), pd402) - 1),
                  SGNCK(idx403)
                  );
               };
            };
         };
      };
SOURCE(40565, 109)
   {
      word var←c62816;
      var←c62816 = XR←Narrow((* (( (ptr) (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+21) ))+1) ), (* (( (ptr) gf←c64224)+15) ))
      ;
      {
         word pd404;
         pd404 = (* (( (ptr) (* (( (ptr) gf←c64224)+179)/* var←c61152 */  ))+33) );
         delSeq←v14924 = (word) ( *( (fPt) ((*  (ptr) pd404 ))))(var←c62816, (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+19) ), pd404)
         ;
         };
      };
SOURCE(40701, 71)
   {
      word pd405;
      pd405 = (* (( (ptr) (* (( (ptr) gf←c64224)+180)/* var←c61216 */  ))+8) );
      delD←v14980 = (word) ( *( (fPt) ((*  (ptr) pd405 ))))((* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+21) ), delSeq←v14924, pd405)
      ;
      };
SOURCE(40774, 442)
   if ((0 != (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+18) ))) {
SOURCE(40849, 45)
      (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+18) ) = 0;
SOURCE(40896, 114)
      {
         word var←c62848;
         var←c62848 = XR←Narrow((* (( (ptr) (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+21) ))+1) ), (* (( (ptr) gf←c64224)+15) ))
         ;
         {
            word pd406;
            pd406 = (* (( (ptr) (* (( (ptr) gf←c64224)+179)/* var←c61152 */  ))+9) );
            partSeq←v14952 = (word) ( *( (fPt) ((*  (ptr) pd406 ))))(var←c62848, (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+20) ), pd406)
            ;
            };
         };
SOURCE(41012, 96)
      {
         word var←c62880;
         {
            word pd407;
            pd407 = (* (( (ptr) (* (( (ptr) gf←c64224)+180)/* var←c61216 */  ))+8) );
            var←c62880 = (word) ( *( (fPt) ((*  (ptr) pd407 ))))((* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+21) ), partSeq←v14952, pd407)
            ;
            };
         {
            word pd408;
            pd408 = (* (( (ptr) (* (( (ptr) gf←c64224)+179)/* var←c61152 */  ))+20) );
            delD←v14980 = (word) ( *( (fPt) ((*  (ptr) pd408 ))))(delD←v14980, var←c62880, pd408);
            };
         };
SOURCE(41110, 106)
      if (((* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+19) ) == 1)) {
SOURCE(41154, 34)
         newEndJoint←v15036 = SGNCK((newEndJoint←v15036 - 1));
         }
      else {
SOURCE(41188, 28)
         newEndJoint←v15036 = (newEndJoint←v15036 + 1);
         };
      };
SOURCE(41222, 64)
   {
      W2 var←c62912;
      {
         word pd409;
         pd409 = (* (( (ptr) (* (( (ptr) gf←c64224)+175)/* var←c59840 */  ))+15) );
         (void) ( *( (fPt) ((*  (ptr) pd409 ))))((word) &var←c62912, delD←v14980, (* (( (ptr) ggData←v9832)+11) ), pd409);
         };
      newOutlines←v15008 = var←c62912.f1;
      };
SOURCE(41288, 744)
   if ((newOutlines←v15008 == 0)) {
SOURCE(41347, 32)
      {
         word pd410;
         pd410 = (* (( (ptr) (* (( (ptr) gf←c64224)+158)/* var←c57760 */  ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd410 ))))((* (( (ptr) ggData←v9832)+13) ), 0, pd410);
         };
      }
   else {
SOURCE(41388, 646)
      {
         word jointParts←v15164 = 0;
         word jointD←v15192 = 0;
         word outD←v15220 = 0;
         word shortOutline←v15248 = 0;
         word shortTraj←v15276 = 0;
SOURCE(41482, 70)
         if (((* (( (ptr) newOutlines←v15008)+1) ) != 0)) {
SOURCE(41513, 39)
            {
               word var←c0538;
               var←c0538 = (* (( (ptr) gf←c64224)+86) );
               (void) (XR←RaiseSignal((* (( (ptr) gf←c64224)+4)/* Problem←v5492 */  ), 0, (word) &var←c0538));
               };
            };
SOURCE(41554, 32)
         shortOutline←v15248 = (*  (ptr) newOutlines←v15008 );
SOURCE(41588, 59)
         {
            word pd411;
            pd411 = (* (( (ptr) (* (( (ptr) gf←c64224)+173)/* var←c59584 */  ))+77) );
            shortTraj←v15276 = (word) ( *( (fPt) ((*  (ptr) pd411 ))))(shortOutline←v15248, 0, (* (( (ptr) gf←c64224)+32) ), pd411);
            };
SOURCE(41649, 127)
         {
            word var←c62944;
            var←c62944 = XR←Narrow((* (( (ptr) shortTraj←v15276)+1) ), (* (( (ptr) gf←c64224)+15) ));
            {
               word pd412;
               pd412 = (* (( (ptr) (* (( (ptr) gf←c64224)+179)/* var←c61152 */  ))+8) );
               jointParts←v15164 = (word) ( *( (fPt) ((*  (ptr) pd412 ))))(var←c62944,  ( ((* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+19)
                   ) == 0) ? 0 : newEndJoint←v15036 ) , pd412);
               };
            };
SOURCE(41778, 59)
         {
            word pd413;
            pd413 = (* (( (ptr) (* (( (ptr) gf←c64224)+180)/* var←c61216 */  ))+8) );
            jointD←v15192 = (word) ( *( (fPt) ((*  (ptr) pd413 ))))(shortTraj←v15276, jointParts←v15164, pd413);
            };
SOURCE(41858, 61)
         {
            word pd414;
            pd414 = (* (( (ptr) (* (( (ptr) gf←c64224)+173)/* var←c59584 */  ))+84) );
            outD←v15220 = (word) ( *( (fPt) ((*  (ptr) pd414 ))))(jointD←v15192, pd414);
            };
SOURCE(41921, 33)
         {
            word pd415;
            pd415 = (* (( (ptr) (* (( (ptr) gf←c64224)+158)/* var←c57760 */  ))+9) );
            (void) ( *( (fPt) ((*  (ptr) pd415 ))))((* (( (ptr) ggData←v9832)+13) ), outD←v15220, pd415);
            };
SOURCE(41956, 76)
         {
            word pd416;
            pd416 = (* (( (ptr) (* (( (ptr) gf←c64224)+170)/* var←c58496 */  ))+6) );
            (void) ( *( (fPt) ((*  (ptr) pd416 ))))(outD←v15220, (* (( (ptr) ggData←v9832)+11) ), 0, pd416);
            };
         };
      };
SOURCE(42037, 170)
   {
      W2 var←c62976;
      W2 var←c63008;
      {
         word pd417;
         pd417 = (* (( (ptr) (* (( (ptr) gf←c64224)+178)/* var←c60992 */  ))+32) );
         (void) ( *( (fPt) ((*  (ptr) pd417 ))))((word) &var←c62976, (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+21) ), newEndJoint←v15036, pd417)
         ;
         };
      {
         word pd418;
         pd418 = (* (( (ptr) (* (( (ptr) gf←c64224)+178)/* var←c60992 */  ))+34) );
         (void) ( *( (fPt) ((*  (ptr) pd418 ))))((word) &var←c63008, (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+21) ), newEndJoint←v15036, pd418)
         ;
         };
      {
         word pd419;
         pd419 = (* (( (ptr) (* (( (ptr) gf←c64224)+158)/* var←c57760 */  ))+12) );
         (void) ( *( (fPt) ((*  (ptr) pd419 ))))((* (( (ptr) ggData←v9832)+13) ), var←c62976, var←c63008, 0, pd419);
         };
      };
SOURCE(42209, 41)
   (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+22) ) = 0;
SOURCE(42252, 33)
   (* (( (ptr) (* (( (ptr) ggData←v9832)+16) ))+21) ) = 0;
SOURCE(42287, 32)
   {
      word pd420;
      pd420 = (* (( (ptr) (* (( (ptr) gf←c64224)+166)/* var←c58240 */  ))+32) );
      (void) ( *( (fPt) ((*  (ptr) pd420 ))))(ggData←v9832, pd420);
      };
   }

static void NoName←Q3264(formal←c0548, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
   word formal←c0548;
   word formal←c200000;
   word formal←c200001;
   word formal←c200002;
   word formal←c200003;
   {
   register ptr gf←c0585 =  (ptr) &globalframe;
   if ((formal←c200001 == (* (( (ptr) (* (( (ptr) gf←c0585)+164)/* var←c58144 */  ))+10) ))) {
SOURCE(5495, 18)
      (* (( (ptr) formal←c200000)+5) ) = 1;
SOURCE(5515, 9)
      (*  (ptr) formal←c0548 ) = 2;
      (* (( (ptr) formal←c0548)+1) ) = 2;
      return;
      };
   (*  (ptr) formal←c0548 ) = 0;
   (* (( (ptr) formal←c0548)+1) ) = 0;
   return;
   }

/* file: GGMouseEventImplB, module: GGMouseEventImplB, compiled at: July 13, 1993 1:29:59 pm PDT */ 
extern void XR←install←GGMouseEventImplB() {
   NoName←Q3144();
   }
extern void XR←run←GGMouseEventImplB() { XR←Start(&globalframe); }