/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: April 9, 1992 11:41:10 pm PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: GGCubic2Impl, module: GGCubic2Impl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2901984797,4123673133] GGCubic2Impl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1;} W2;
typedef word (*fPt)();
typedef W8 *W8Pt;
typedef W2 *W2Pt;
typedef struct {W8 f; W8 r;} W16;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W8 f; W3 r;} W11;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef W6 *W6Pt;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc15 = 0.0;
static float fc20 = 1.0;
static float fc34 = 10E6;
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define FMIN(x, y, tx, ty)  ( (tx=((float) x)) <= (ty=((float) y)) ? tx : ty )
#define FMAX(x, y, tx, ty)  ( (tx=((float) x)) >= (ty=((float) y)) ? tx : ty )
static float fc90 = 100.0;
static float fc95 = 2.0;
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
static void NoName←Q1272();
static void GGCubic2Impl←P0();
static void WalkPath←P60();
static word subdivide←P420();
static void ClosestPointSubdivide←P120();
static word test←P672();
static void CheapRealRootsInInterval←P180();
static word RootBetween←P240();
static word NewtonStep←P972();
static void Evaluate←P300();
static word AsPolyline←P360();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\254\073\314\103\300\064\024\167\046\102\220\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\254\370\306\035\300\365\312\102\055\100\164\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\176\067\335\331\300\021\260\123\113\100\150\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\355\363\234\160\300\023\117\014\141\100\150\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\247\031\224\326\300\123\162\224\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\335\021\351\270\300\210\237\013\247\100\150\000\000"};
static struct {
   word f0[5]; word f5; word f6; word f7; 
   word f8; word f9; word f10; word f11; 
   word f12; word f13; word f14; word f15; 
   word f16; word f17; word f18[5]; 
   } globalframe = {
   {0}, (word) AsPolyline←P360, 0, (word) Evaluate←P300, 
   0, (word) RootBetween←P240, 0, (word) CheapRealRootsInInterval←P180, 
   0, (word) ClosestPointSubdivide←P120, 0, (word) WalkPath←P60, 
   0, (word) GGCubic2Impl←P0, {0}
   };

static void NoName←Q1272()
   {
   register ptr gf←c0123 =  (ptr) &globalframe;
   word var←c10260;
   (* (( (ptr) gf←c0123)+4) ) = (word) XR←GetTypeIndexS((word) (&string1));
   (void) XR←DeclareGlobalFrame((word) "GGCubic2Impl", &globalframe, (word) XR←GetTypeIndexS((word) (&string2)), (word) (( (bPt) gf←c0123)+68)
      /* var←c9300 */ );
   var←c10260 = (word) XR←ImportInterface((word) "Cubic2", (word) XR←GetTypeIndexS((word) (&string3)), 5);
   (* (( (ptr) gf←c0123)+19)/* var←c9492 */  ) = var←c10260;
   (void) XR←ImportProcS(var←c10260, 1075839489);
   (void) XR←ImportProcS(var←c10260, 69469186);
   var←c10260 = (word) XR←ImportInterface((word) "Polynomial", (word) XR←GetTypeIndexS((word) (&string4)), 26);
   (* (( (ptr) gf←c0123)+21)/* var←c9812 */  ) = var←c10260;
   (void) XR←ImportProcS(var←c10260, 67638274);
   (void) XR←ImportProcS(var←c10260, 67633666);
   (void) XR←ImportProcS(var←c10260, 266753);
   (void) XR←ImportProcS(var←c10260, 67371265);
   var←c10260 = (word) XR←ImportInterface((word) "Vector2", (word) XR←GetTypeIndexS((word) (&string5)), 22);
   (* (( (ptr) gf←c0123)+20)/* var←c9556 */  ) = var←c10260;
   (void) XR←ImportProcS(var←c10260, 67637761);
   (void) XR←ImportProcS(var←c10260, 135005698);
   (void) XR←ImportProcS(var←c10260, 135266306);
   (void) XR←ImportProcS(var←c10260, 135266818);
   (void) XR←ImportProcS(var←c10260, 67638273);
   var←c10260 = (word) XR←ExportInterface((word) "GGCubic2", (word) XR←GetTypeIndexS((word) (&string6)), 3);
   (* (( (ptr) gf←c0123)+22)/* var←c10292 */  ) = var←c10260;
   (void) XR←ExportProcS(var←c10260, (word) (( (bPt) gf←c0123)+52)/* var←c9236 */ , 202637316);
   (void) XR←ExportProcS(var←c10260, (word) (( (bPt) gf←c0123)+44)/* var←c9204 */ , 403439875);
   (void) XR←ExportProcS(var←c10260, (word) (( (bPt) gf←c0123)+20)/* var←c9108 */ , 69468674);
   }

static void GGCubic2Impl←P0(formal←c015, formal←c014)
   word formal←c015;
   word formal←c014;
   {
   /* GGCubic2Impl: */ 
   }

static void WalkPath←P60(path←v3080, formal←c0142, formal←c0143)
   word path←v3080;
   word formal←c0142;
   word formal←c0143;
   {
   W8 var←c10324;
   /* declaration of epsilon←v3108 skipped */ 
   /* declaration of proc←v3136 skipped */ 
   /* declaration of var←c9332 skipped */ 
   word var←c9364;
   W2 var←c0133;
   var←c10324.f4/* epsilon←v3108 */  = formal←c0142;
   var←c10324.f5/* proc←v3136 */  = formal←c0143;
   /* WalkPath: */ 
SOURCE(462, 823)
   {
      word tmpAddr7;
      tmpAddr7 = (word) (( (ptr) &var←c10324)+6)/* var←c9332 */ ;
      (*  (ptr) tmpAddr7 ) = ( ((word)  (fPt) subdivide←P420) );
      (* (( (ptr) tmpAddr7) + 1) ) = 1;
      };
SOURCE(1178, 107)
   {
      word pd9;
      {
         word limit8;
         var←c9364 = (* (( (ptr) path←v3080)+4) );
         var←c0133 = (*  (W2Pt) (( (W8Pt) (( (ptr) var←c9364)+1))+(
               limit8 = (*  (ptr) var←c9364 ),
               BCK(0, limit8)
               )) );
         };
      pd9 = (word) (var←c10324.f5/* proc←v3136 */ );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd9 ))))(var←c0133, pd9))) {
SOURCE(1214, 71)
         {
            register word i←v4308 = 0;
            register word noName←c9396;
            noName←c9396 = (*  (ptr) (* (( (ptr) path←v3080)+4) ) );
            if ((i←v4308 >= noName←c9396)) {
               goto lab←L100000;
               };
            lab←L100003: ;
SOURCE(1255, 30)
            {
               word var←c9460;
               {
                  word var←c9428;
                  W8 var←c0134;
                  var←c9428 = (* (( (ptr) path←v3080)+4) );
                  {
                     word limit10;
                     var←c0134 = (* (( (W8Pt) (( (ptr) var←c9428)+1))+(
                           limit10 = (*  (ptr) var←c9428 ),
                           BCK(i←v4308, limit10)
                           )) );
                     };
                  var←c9460 = (word) subdivide←P420(var←c0134, (word) (( (bPt) &var←c10324)+24)/* var←c9332 */ );
                  };
               };
            i←v4308 = (i←v4308 + 1);
            if ((i←v4308 < noName←c9396)) {
               goto lab←L100003;
               };
            lab←L100000: ;
            };
         };
      };
   }

static word subdivide←P420(bezier←v4236, formal←c10388)
   W8 bezier←v4236;
   word formal←c10388;
   {
   register ptr gf←c10356 =  (ptr) &globalframe;
   word quit←v4280;
   formal←c10388 = (formal←c10388 - 24);
   /* subdivide: */ 
SOURCE(533, 637)
SOURCE(600, 12)
   quit←v4280 = 0;
SOURCE(614, 556)
   {
      word pd11;
      pd11 = (* (( (ptr) (* (( (ptr) gf←c10356)+19)/* var←c9492 */  ))+8) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd11 ))))(bezier←v4236, (* (( (ptr) formal←c10388)+4) ), pd11))) {
SOURCE(651, 418)
         {
            word len←v4352;
SOURCE(653, 61)
            {
               W2 var←c9524;
               {
                  word pd12;
                  pd12 = (* (( (ptr) (* (( (ptr) gf←c10356)+20)/* var←c9556 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd12 ))))((word) &var←c9524, (*  (W2Pt) &bezier←v4236 ), (*  (W2Pt) (( (ptr) &bezier←v4236)+6)
                      ), pd12);
                  };
               {
                  word pd13;
                  pd13 = (* (( (ptr) (* (( (ptr) gf←c10356)+20)/* var←c9556 */  ))+24) );
                  len←v4352 = (word) ( *( (fPt) ((*  (ptr) pd13 ))))(var←c9524, pd13);
                  };
               };
SOURCE(716, 339)
            {
               word x14;
               word x16;
               if (((
                  x14 = len←v4352,  *(float*)&x14
                  ) > (
                  x16 = (*  (ptr) &fc15 ),  *(float*)&x16
                  ))) {
SOURCE(732, 294)
                  {
                     word alphaStep←v4396;
                     word alpha←v4424;
                     W2 pt←v4452;
SOURCE(734, 29)
                     {
                        word x17;
                        word x18;
                        *(float*)&alphaStep←v4396 = (
                           x17 = (* (( (ptr) formal←c10388)+4) ),  *(float*)&x17
                           ) / (
                           x18 = len←v4352,  *(float*)&x18
                           );
                        };
SOURCE(819, 23)
                     alpha←v4424 = alphaStep←v4396;
SOURCE(853, 162)
                     lab←L100006: ;
                     {
                        word x19;
                        word x21;
                        if (((
                           x19 = alpha←v4424,  *(float*)&x19
                           ) <= (
                           x21 = (*  (ptr) &fc20 ),  *(float*)&x21
                           ))) {
                           }
                        else {
                           goto lab←L100004;
                           };
                        };
SOURCE(872, 80)
                     {
                        W2 var←c9588;
                        W2 var←c9620;
                        {
                           word pd22;
                           word x23;
                           word x24;
                           float tf25;
                           pd22 = (* (( (ptr) (* (( (ptr) gf←c10356)+20)/* var←c9556 */  ))+10) );
                           (void) ( *( (fPt) ((*  (ptr) pd22 ))))((word) &var←c9588, (*  (W2Pt) &bezier←v4236 ), (
/*1*/      tf25 = (
/*1*/         x23 = (*  (ptr) &fc20 ),  *(float*)&x23
/*1*/         ) - (
/*1*/         x24 = alpha←v4424,  *(float*)&x24
/*1*/         ),  *(word*)&tf25
/*1*/      ), pd22);
                           };
                        {
                           word pd26;
                           pd26 = (* (( (ptr) (* (( (ptr) gf←c10356)+20)/* var←c9556 */  ))+10) );
                           (void) ( *( (fPt) ((*  (ptr) pd26 ))))((word) &var←c9620, (*  (W2Pt) (( (ptr) &bezier←v4236)+6) ), alpha←v4424, pd26);
                           };
                        {
                           W2 var←c037;
                           {
/*1*/   word pd27;
/*1*/   pd27 = (* (( (ptr) (* (( (ptr) gf←c10356)+20)/* var←c9556 */  ))+4) );
/*1*/   (void) ( *( (fPt) ((*  (ptr) pd27 ))))((word) &var←c037, var←c9588, var←c9620, pd27);
/*1*/   };
                           pt←v4452 = var←c037;
                           };
                        };
SOURCE(954, 29)
                     {
                        word pd28;
                        pd28 = (* (( (ptr) formal←c10388)+5) );
                        if ((0 != (word) ( *( (fPt) ((*  (ptr) pd28 ))))(pt←v4452, pd28))) {
SOURCE(972, 11)
                           quit←v4280 = 1;
SOURCE(985, 4)
                           goto lab←L100005;
                           };
                        };
SOURCE(992, 23)
                     {
                        word x29;
                        word x30;
                        *(float*)&alpha←v4424 = (
                           x29 = alpha←v4424,  *(float*)&x29
                           ) + (
                           x30 = alphaStep←v4396,  *(float*)&x30
                           );
                        };
                     goto lab←L100006;
                     lab←L100004: ;
                     lab←L100005: ;
                     };
                  }
               else {
SOURCE(1033, 22)
                  {
                     word pd31;
                     pd31 = (* (( (ptr) formal←c10388)+5) );
                     quit←v4280 = (word) ( *( (fPt) ((*  (ptr) pd31 ))))((*  (W2Pt) ((( (ptr) &bezier←v4236)+6)) ), pd31);
                     };
                  };
               };
SOURCE(1057, 12)
            return(quit←v4280);
            };
         }
      else {
SOURCE(1076, 96)
         {
            W8 b1←v4496;
            W8 b2←v4524;
SOURCE(1094, 30)
            {
               W16 var←c9652;
               {
                  word pd32;
                  pd32 = (* (( (ptr) (* (( (ptr) gf←c10356)+19)/* var←c9492 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd32 ))))((word) &var←c9652, bezier←v4236, pd32);
                  };
               b2←v4524 = (*  (W8Pt) (( (ptr) &var←c9652)+8) );
               b1←v4496 = (*  (W8Pt) &var←c9652 );
               };
SOURCE(1126, 44)
            if ((0 == (word) subdivide←P420(b1←v4496, (word) (( (bPt) formal←c10388)+24)))) {
SOURCE(1152, 18)
               {
                  word var←c9684;
                  var←c9684 = (word) subdivide←P420(b2←v4524, (word) (( (bPt) formal←c10388)+24));
                  };
               };
            };
         };
      };
SOURCE(533, 637)
   return(quit←v4280);
   }

static void ClosestPointSubdivide←P120(formal←c052, formal←c0144, path←v3224, epsilon←v3252, tolerance←v3280)
   word formal←c052;
   W2 formal←c0144;
   word path←v3224;
   word epsilon←v3252;
   word tolerance←v3280;
   {
   W11 var←c10420;
   /* declaration of pt←v3196 skipped */ 
   /* declaration of closest←v3324 skipped */ 
   word success←v3352;
   /* declaration of var←c9716 skipped */ 
   /* declaration of minD←v4596 skipped */ 
   (*  (W2Pt) (( (ptr) &var←c10420)+4)/* pt←v3196 */  ) = formal←c0144;
   /* ClosestPointSubdivide: */ 
SOURCE(1301, 361)
   {
      word tmpAddr33;
      tmpAddr33 = (word) (( (ptr) &var←c10420)+8)/* var←c9716 */ ;
      (*  (ptr) tmpAddr33 ) = ( ((word)  (fPt) test←P672) );
      (* (( (ptr) tmpAddr33) + 1) ) = 1;
      };
SOURCE(1301, 361)
   success←v3352 = 1;
SOURCE(1571, 17)
   (* (( (ptr) &var←c10420)+10)/* minD←v4596 */  ) = (*  (ptr) &fc34 );
   {
      word var←c9748;
SOURCE(1604, 27)
      {
         word limit35;
         var←c9748 = (* (( (ptr) path←v3224)+4) );
         (*  (W2Pt) (( (ptr) &var←c10420)+6)/* closest←v3324 */  ) = (*  (W2Pt) (( (W8Pt) (( (ptr) var←c9748)+1))+(
               limit35 = (*  (ptr) var←c9748 ),
               BCK(0, limit35)
               )) );
         };
SOURCE(1633, 29)
      (void) WalkPath←P60(path←v3224, epsilon←v3252, (word) (( (bPt) &var←c10420)+32)/* var←c9716 */ );
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c052 ) = (*  (W2Pt) (( (ptr) &var←c10420)+6)/* closest←v3324 */  );
   (* (( (ptr) formal←c052)+2) ) = success←v3352;
   return;
   }

static word test←P672(p←v7800, formal←c10484)
   W2 p←v7800;
   word formal←c10484;
   {
   register ptr gf←c10452 =  (ptr) &globalframe;
   word stop←v7844;
   word thisD←v4640;
   formal←c10484 = (formal←c10484 - 32);
   /* test: */ 
SOURCE(1448, 117)
SOURCE(1448, 117)
   stop←v7844 = 0;
SOURCE(1468, 48)
   {
      W2 var←c9780;
      {
         word pd36;
         pd36 = (* (( (ptr) (* (( (ptr) gf←c10452)+20)/* var←c9556 */  ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd36 ))))((word) &var←c9780, p←v7800, (*  (W2Pt) (( (ptr) formal←c10484)+4) ), pd36);
         };
      {
         word pd37;
         pd37 = (* (( (ptr) (* (( (ptr) gf←c10452)+20)/* var←c9556 */  ))+22) );
         thisD←v4640 = (word) ( *( (fPt) ((*  (ptr) pd37 ))))(var←c9780, pd37);
         };
      };
SOURCE(1518, 47)
   {
      word x38;
      word x39;
      if (((
         x38 = thisD←v4640,  *(float*)&x38
         ) < (
         x39 = (* (( (ptr) formal←c10484)+10) ),  *(float*)&x39
         ))) {
SOURCE(1540, 11)
         (*  (W2Pt) (( (ptr) formal←c10484)+6) ) = p←v7800;
SOURCE(1553, 12)
         (* (( (ptr) formal←c10484)+10) ) = thisD←v4640;
         };
      };
SOURCE(1448, 117)
   return(stop←v7844);
   }

static void CheapRealRootsInInterval←P180(formal←c073, poly←v3412, lo←v3440, hi←v3468)
   word formal←c073;
   word poly←v3412;
   word lo←v3440;
   word hi←v3468;
   {
   register ptr gf←c10516 =  (ptr) &globalframe;
   W6 roots←v3512;
   word d←v4684;
   /* CheapRealRootsInInterval: */ 
SOURCE(1668, 1133)
SOURCE(1781, 32)
   {
      word pd40;
      pd40 = (* (( (ptr) (* (( (ptr) gf←c10516)+21)/* var←c9812 */  ))+5) );
      d←v4684 = (word) ( *( (fPt) ((*  (ptr) pd40 ))))(poly←v3412, pd40);
      };
SOURCE(1815, 16)
   roots←v3512.f0 = 0;
SOURCE(1833, 968)
   if ((d←v4684 <= 1)) {
SOURCE(1848, 67)
      if ((d←v4684 == 1)) {
SOURCE(1861, 16)
         roots←v3512.f0 = 1;
SOURCE(1879, 36)
         {
            word limit41;
            word x42;
            word limit43;
            word x44;
            *(float*)&roots←v3512.f1 = ( - (
               x42 = (* ((( (ptr) poly←v3412)+1)+(
                     limit41 = (*  (ptr) poly←v3412 ),
                     BCK(0, limit41)
                     )) ),  *(float*)&x42
               )) / (
               x44 = (* ((( (ptr) poly←v3412)+1)+(
                     limit43 = (*  (ptr) poly←v3412 ),
                     BCK(1, limit43)
                     )) ),  *(float*)&x44
               );
            };
         };
      }
   else {
SOURCE(1924, 886)
      {
         W6 savedCoeff←v4728;
SOURCE(1960, 55)
         {
            register word i←v4808 = 0;
            register word noName←c9844;
            noName←c9844 = d←v4684;
            if ((i←v4808 > noName←c9844)) {
               goto lab←L100009;
               };
            lab←L100012: ;
SOURCE(1984, 31)
            {
               word limit45;
               (* (( (ptr) &savedCoeff←v4728)+BCK(i←v4808, 6)) ) = (* ((( (ptr) poly←v3412)+1)+(
                     limit45 = (*  (ptr) poly←v3412 ),
                     BCK(i←v4808, limit45)
                     )) );
               };
            if ((i←v4808 >= noName←c9844)) {
               goto lab←L100009;
               };
            i←v4808 = (i←v4808 + 1);
            goto lab←L100012;
            lab←L100009: ;
            };
SOURCE(2017, 30)
         {
            word pd46;
            pd46 = (* (( (ptr) (* (( (ptr) gf←c10516)+21)/* var←c9812 */  ))+22) );
            (void) ( *( (fPt) ((*  (ptr) pd46 ))))(poly←v3412, pd46);
            };
SOURCE(2049, 757)
         {
            W6 extrema←v4852;
            word x←v4880;
SOURCE(2055, 66)
            (void) CheapRealRootsInInterval←P180((word) &extrema←v4852, poly←v3412, lo←v3440, hi←v3468);
SOURCE(2132, 55)
            {
               register word i←v4924 = 0;
               register word noName←c9876;
               noName←c9876 = d←v4684;
               if ((i←v4924 > noName←c9876)) {
                  goto lab←L100013;
                  };
               lab←L100016: ;
SOURCE(2156, 31)
               {
                  word limit47;
                  (* ((( (ptr) poly←v3412)+1)+(
                        limit47 = (*  (ptr) poly←v3412 ),
                        BCK(i←v4924, limit47)
                        )) ) = (* (( (ptr) &savedCoeff←v4728)+BCK(i←v4924, 6)) );
                  };
               if ((i←v4924 >= noName←c9876)) {
                  goto lab←L100013;
                  };
               i←v4924 = (i←v4924 + 1);
               goto lab←L100016;
               lab←L100013: ;
               };
SOURCE(2189, 612)
            if ((extrema←v4852.f0 > 0)) {
SOURCE(2216, 46)
               x←v4880 = (word) RootBetween←P240(poly←v3412, lo←v3440, extrema←v4852.f1);
SOURCE(2264, 72)
               {
                  word x48;
                  word x49;
                  if (((
                     x48 = x←v4880,  *(float*)&x48
                     ) <= (
                     x49 = extrema←v4852.f1,  *(float*)&x49
                     ))) {
SOURCE(2297, 16)
                     roots←v3512.f0 = 1;
SOURCE(2315, 21)
                     roots←v3512.f1 = x←v4880;
                     };
                  };
SOURCE(2339, 207)
               {
                  register word i←v4968 = 0;
                  register word noName←c9908;
                  {
                     word idx50;
                     noName←c9908 = (
                        idx50 = (word) (extrema←v4852.f0 - 1),
                        SGNCK(idx50)
                        );
                     };
                  if ((i←v4968 >= noName←c9908)) {
                     goto lab←L100017;
                     };
                  lab←L100020: ;
SOURCE(2378, 65)
                  x←v4880 = (word) RootBetween←P240(poly←v3412, (* ((( (ptr) &extrema←v4852)+1)+BCK(i←v4968, 5)) ), (* ((( (ptr) &extrema←v4852)+1)
                        +BCK((i←v4968 + 1), 5)) ));
SOURCE(2445, 101)
                  {
                     word x51;
                     word x52;
                     if (((
                        x51 = x←v4880,  *(float*)&x51
                        ) <= (
                        x52 = (* ((( (ptr) &extrema←v4852)+1)+BCK((i←v4968 + 1), 5)) ),  *(float*)&x52
                        ))) {
SOURCE(2481, 32)
                        {
                           word idx53;
                           (* ((( (ptr) &roots←v3512)+1)+(
/*1*/      idx53 = (word) roots←v3512.f0,
/*1*/      BCK(idx53, 5)
/*1*/      )) ) = x←v4880;
                           };
SOURCE(2515, 31)
                        roots←v3512.f0 = (roots←v3512.f0 + 1);
                        };
                     };
                  i←v4968 = (i←v4968 + 1);
                  if ((i←v4968 < noName←c9908)) {
                     goto lab←L100020;
                     };
                  lab←L100017: ;
                  };
SOURCE(2558, 61)
               {
                  word idx54;
                  x←v4880 = (word) RootBetween←P240(poly←v3412, (* ((( (ptr) &extrema←v4852)+1)+(
                           idx54 = (word) (extrema←v4852.f0 - 1),
                           BCK(idx54, 5)
                           )) ), hi←v3468);
                  };
SOURCE(2621, 82)
               {
                  word x55;
                  word x56;
                  if (((
                     x55 = x←v4880,  *(float*)&x55
                     ) <= (
                     x56 = hi←v3468,  *(float*)&x56
                     ))) {
SOURCE(2638, 32)
                     {
                        word idx57;
                        (* ((( (ptr) &roots←v3512)+1)+(
/*1*/   idx57 = (word) roots←v3512.f0,
/*1*/   BCK(idx57, 5)
/*1*/   )) ) = x←v4880;
                        };
SOURCE(2672, 31)
                     roots←v3512.f0 = (roots←v3512.f0 + 1);
                     };
                  };
               }
            else {
SOURCE(2714, 29)
               x←v4880 = (word) RootBetween←P240(poly←v3412, lo←v3440, hi←v3468);
SOURCE(2745, 56)
               {
                  word x58;
                  word x59;
                  if (((
                     x58 = x←v4880,  *(float*)&x58
                     ) <= (
                     x59 = hi←v3468,  *(float*)&x59
                     ))) {
SOURCE(2762, 21)
                     roots←v3512.f1 = x←v4880;
SOURCE(2785, 16)
                     roots←v3512.f0 = 1;
                     };
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   (*  (W6Pt) formal←c073 ) = roots←v3512;
   return;
   }

static word RootBetween←P240(formal←c0145, x0←v3600, x1←v3628)
   word formal←c0145;
   word x0←v3600;
   word x1←v3628;
   {
   W11 var←c10548;
   /* declaration of poly←v3572 skipped */ 
   register ptr gf←c10580 =  (ptr) &globalframe;
   word x←v3672;
   /* declaration of var←c9940 skipped */ 
   word y0←v5012;
   word y1←v5040;
   word xx←v5068;
   /* declaration of xx0←v5096 skipped */ 
   /* declaration of xx1←v5124 skipped */ 
   /* declaration of yy0←v5152 skipped */ 
   /* declaration of yy1←v5180 skipped */ 
   (* (( (ptr) &var←c10548)+4)/* poly←v3572 */  ) = formal←c0145;
   /* RootBetween: */ 
SOURCE(2817, 1379)
   {
      word tmpAddr60;
      tmpAddr60 = (word) (( (ptr) &var←c10548)+5)/* var←c9940 */ ;
      (*  (ptr) tmpAddr60 ) = ( ((word)  (fPt) NewtonStep←P972) );
      (* (( (ptr) tmpAddr60) + 1) ) = 1;
      };
SOURCE(2915, 35)
   {
      word pd61;
      pd61 = (* (( (ptr) (* (( (ptr) gf←c10580)+21)/* var←c9812 */  ))+6) );
      y0←v5012 = (word) ( *( (fPt) ((*  (ptr) pd61 ))))((* (( (ptr) &var←c10548)+4)/* poly←v3572 */  ), x0←v3600, pd61);
      };
SOURCE(2952, 35)
   {
      word pd62;
      pd62 = (* (( (ptr) (* (( (ptr) gf←c10580)+21)/* var←c9812 */  ))+6) );
      y1←v5040 = (word) ( *( (fPt) ((*  (ptr) pd62 ))))((* (( (ptr) &var←c10548)+4)/* poly←v3572 */  ), x1←v3628, pd62);
      };
SOURCE(2999, 36)
   {
      word x63;
      word x64;
      (* (( (ptr) &var←c10548)+7)/* xx0←v5096 */  ) =  ( ((
         x63 = y0←v5012,  *(float*)&x63
         ) < (
         x64 = y1←v5040,  *(float*)&x64
         )) ? x0←v3600 : x1←v3628 ) ;
      };
SOURCE(3037, 36)
   {
      word x65;
      word x66;
      (* (( (ptr) &var←c10548)+8)/* xx1←v5124 */  ) =  ( ((
         x65 = y0←v5012,  *(float*)&x65
         ) < (
         x66 = y1←v5040,  *(float*)&x66
         )) ? x1←v3628 : x0←v3600 ) ;
      };
SOURCE(3075, 22)
   {
      word x67;
      float tf68;
      float tf69;
      word x70;
      float tf71;
      (* (( (ptr) &var←c10548)+9)/* yy0←v5152 */  ) = (
         tf71 = FMIN((
               x67 = y0←v5012,  *(float*)&x67
               ), (
               x70 = y1←v5040,  *(float*)&x70
               ), tf68, tf69),  *(word*)&tf71
         );
      };
SOURCE(3099, 22)
   {
      word x72;
      float tf73;
      float tf74;
      word x75;
      float tf76;
      (* (( (ptr) &var←c10548)+10)/* yy1←v5180 */  ) = (
         tf76 = FMAX((
               x72 = y0←v5012,  *(float*)&x72
               ), (
               x75 = y1←v5040,  *(float*)&x75
               ), tf73, tf74),  *(word*)&tf76
         );
      };
SOURCE(3403, 23)
   {
      word x77;
      word x78;
      if (((
         x77 = y0←v5012,  *(float*)&x77
         ) == (
         x78 = (*  (ptr) &fc15 ),  *(float*)&x78
         ))) {
SOURCE(3416, 10)
         return(x0←v3600);
         };
      };
SOURCE(3428, 23)
   {
      word x79;
      word x80;
      if (((
         x79 = y1←v5040,  *(float*)&x79
         ) == (
         x80 = (*  (ptr) &fc15 ),  *(float*)&x80
         ))) {
SOURCE(3441, 10)
         return(x1←v3628);
         };
      };
SOURCE(3453, 66)
   {
      word x81;
      word x82;
      word x83;
      word x84;
      word x85;
      word x86;
      word x87;
      word x88;
      if ( ( ((
         x81 = y0←v5012,  *(float*)&x81
         ) > (
         x82 = (*  (ptr) &fc15 ),  *(float*)&x82
         )) ? ((
         x83 = y1←v5040,  *(float*)&x83
         ) > (
         x84 = (*  (ptr) &fc15 ),  *(float*)&x84
         )) : 0 )  ||  ( ((
         x85 = y0←v5012,  *(float*)&x85
         ) < (
         x86 = (*  (ptr) &fc15 ),  *(float*)&x86
         )) ? ((
         x87 = y1←v5040,  *(float*)&x87
         ) < (
         x88 = (*  (ptr) &fc15 ),  *(float*)&x88
         )) : 0 ) ) {
SOURCE(3504, 15)
         {
            word x89;
            word x91;
            float tf92;
            return((
               tf92 = (
                  x89 = x1←v3628,  *(float*)&x89
                  ) + (
                  x91 = (*  (ptr) &fc90 ),  *(float*)&x91
                  ),  *(word*)&tf92
               ));
            };
         };
      };
SOURCE(3521, 18)
   {
      word var←c9972;
      {
         word x93;
         word x94;
         word x96;
         *(float*)&var←c9972 = ((
            x93 = x0←v3600,  *(float*)&x93
            ) + (
            x94 = x1←v3628,  *(float*)&x94
            )) / (
            x96 = (*  (ptr) &fc95 ),  *(float*)&x96
            );
         };
      x←v3672 = var←c9972;
      xx←v5068 = var←c9972;
      };
SOURCE(3541, 129)
   lab←L100023: ;
   {
      word x97;
      word x98;
      word x99;
      word x100;
      if ( ( ((
         x97 = x←v3672,  *(float*)&x97
         ) >= (
         x98 = x0←v3600,  *(float*)&x98
         )) ? ((
         x99 = x←v3672,  *(float*)&x99
         ) <= (
         x100 = x1←v3628,  *(float*)&x100
         )) : 0 ) ) {
         }
      else {
         goto lab←L100021;
         };
      };
   {
      word newx←v5356;
SOURCE(3564, 25)
      newx←v5356 = (word) NewtonStep←P972(x←v3672, (word) (( (bPt) &var←c10548)+20)/* var←c9940 */ );
SOURCE(3591, 21)
      {
         word x101;
         word x102;
         if (((
            x101 = x←v3672,  *(float*)&x101
            ) == (
            x102 = newx←v5356,  *(float*)&x102
            ))) {
SOURCE(3606, 6)
            return(x←v3672);
            };
         };
SOURCE(3614, 20)
      x←v3672 = (word) NewtonStep←P972(newx←v5356, (word) (( (bPt) &var←c10548)+20)/* var←c9940 */ );
SOURCE(3636, 19)
      xx←v5068 = (word) NewtonStep←P972(xx←v5068, (word) (( (bPt) &var←c10548)+20)/* var←c9940 */ );
SOURCE(3657, 13)
      {
         word x103;
         word x104;
         if (((
            x103 = xx←v5068,  *(float*)&x103
            ) == (
            x104 = x←v3672,  *(float*)&x104
            ))) {
SOURCE(3670, 4)
            goto lab←L100022;
            };
         };
      };
   goto lab←L100023;
   lab←L100021: ;
   lab←L100022: ;
SOURCE(3685, 86)
   {
      word x105;
      word x106;
      word x107;
      word x108;
      word x109;
      word x110;
      word x111;
      word x112;
      if ( (  ( ((
         x105 = (* (( (ptr) &var←c10548)+7)/* xx0←v5096 */  ),  *(float*)&x105
         ) >= (
         x106 = x0←v3600,  *(float*)&x106
         )) ? ((
         x107 = (* (( (ptr) &var←c10548)+7)/* xx0←v5096 */  ),  *(float*)&x107
         ) <= (
         x108 = x1←v3628,  *(float*)&x108
         )) : 0 )  ?  ( ((
         x109 = (* (( (ptr) &var←c10548)+8)/* xx1←v5124 */  ),  *(float*)&x109
         ) >= (
         x110 = x0←v3600,  *(float*)&x110
         )) ? ((
         x111 = (* (( (ptr) &var←c10548)+8)/* xx1←v5124 */  ),  *(float*)&x111
         ) <= (
         x112 = x1←v3628,  *(float*)&x112
         )) : 0 )  : 0 ) ) {
SOURCE(3735, 17)
         {
            word x113;
            float tf114;
            float tf115;
            word x116;
            float tf117;
            x0←v3600 = (
               tf117 = FMIN((
                     x113 = (* (( (ptr) &var←c10548)+7)/* xx0←v5096 */  ),  *(float*)&x113
                     ), (
                     x116 = (* (( (ptr) &var←c10548)+8)/* xx1←v5124 */  ),  *(float*)&x116
                     ), tf114, tf115),  *(word*)&tf117
               );
            };
SOURCE(3754, 17)
         {
            word x118;
            float tf119;
            float tf120;
            word x121;
            float tf122;
            x1←v3628 = (
               tf122 = FMAX((
                     x118 = (* (( (ptr) &var←c10548)+7)/* xx0←v5096 */  ),  *(float*)&x118
                     ), (
                     x121 = (* (( (ptr) &var←c10548)+8)/* xx1←v5124 */  ),  *(float*)&x121
                     ), tf119, tf120),  *(word*)&tf122
               );
            };
         };
      };
SOURCE(3778, 29)
   {
      word pd123;
      pd123 = (* (( (ptr) (* (( (ptr) gf←c10580)+21)/* var←c9812 */  ))+6) );
      y0←v5012 = (word) ( *( (fPt) ((*  (ptr) pd123 ))))((* (( (ptr) &var←c10548)+4)/* poly←v3572 */  ), x0←v3600, pd123);
      };
SOURCE(3809, 29)
   {
      word pd124;
      pd124 = (* (( (ptr) (* (( (ptr) gf←c10580)+21)/* var←c9812 */  ))+6) );
      y1←v5040 = (word) ( *( (fPt) ((*  (ptr) pd124 ))))((* (( (ptr) &var←c10548)+4)/* poly←v3572 */  ), x1←v3628, pd124);
      };
SOURCE(3840, 356)
   {
      register word noName←c10004 = 0;
      if ((noName←c10004 > 499)) {
         goto lab←L100024;
         };
      lab←L100027: ;
      {
         word y←v5400;
SOURCE(3860, 46)
         {
            word var←c0135;
            {
               word x125;
               word x126;
               word x127;
               *(float*)&x←v3672 = ((
                  x125 = x0←v3600,  *(float*)&x125
                  ) + (
                  x126 = x1←v3628,  *(float*)&x126
                  )) / (
                  x127 = (*  (ptr) &fc95 ),  *(float*)&x127
                  );
               };
            var←c0135 = x←v3672;
            {
               word pd128;
               pd128 = (* (( (ptr) (* (( (ptr) gf←c10580)+21)/* var←c9812 */  ))+6) );
               y←v5400 = (word) ( *( (fPt) ((*  (ptr) pd128 ))))((* (( (ptr) &var←c10548)+4)/* poly←v3572 */  ), var←c0135, pd128);
               };
            };
SOURCE(3908, 74)
         {
            word x129;
            word x130;
            word x131;
            word x132;
            if (((
               x129 = x←v3672,  *(float*)&x129
               ) == (
               x130 = x0←v3600,  *(float*)&x130
               )) || ((
               x131 = x←v3672,  *(float*)&x131
               ) == (
               x132 = x1←v3628,  *(float*)&x132
               ))) {
SOURCE(3930, 52)
               {
                  float tf133;
                  word x134;
                  float tf135;
                  word x136;
                  if ((FABS((
                        x134 = y0←v5012,  *(float*)&x134
                        ), tf133) < FABS((
                        x136 = y1←v5040,  *(float*)&x136
                        ), tf135))) {
SOURCE(3956, 16)
                     return(x0←v3600);
                     }
                  else {
SOURCE(3972, 10)
                     return(x1←v3628);
                     };
                  };
               };
            };
SOURCE(3985, 86)
         {
            word x137;
            word x138;
            word x139;
            word x140;
            word x141;
            word x142;
            word x143;
            word x144;
            if ( ( ((
               x137 = y←v5400,  *(float*)&x137
               ) > (
               x138 = (*  (ptr) &fc15 ),  *(float*)&x138
               )) ? ((
               x139 = y0←v5012,  *(float*)&x139
               ) < (
               x140 = (*  (ptr) &fc15 ),  *(float*)&x140
               )) : 0 )  ||  ( ((
               x141 = y←v5400,  *(float*)&x141
               ) < (
               x142 = (*  (ptr) &fc15 ),  *(float*)&x142
               )) ? ((
               x143 = y0←v5012,  *(float*)&x143
               ) > (
               x144 = (*  (ptr) &fc15 ),  *(float*)&x144
               )) : 0 ) ) {
SOURCE(4035, 6)
               x1←v3628 = x←v3672;
SOURCE(4043, 6)
               y1←v5040 = y←v5400;
               }
            else {
SOURCE(4057, 6)
               x0←v3600 = x←v3672;
SOURCE(4065, 6)
               y0←v5012 = y←v5400;
               };
            };
SOURCE(4074, 122)
         {
            word x145;
            word x146;
            word x147;
            word x148;
            word x149;
            word x150;
            word x151;
            word x152;
            word x153;
            word x154;
            word x155;
            word x156;
            if (( ( ((
               x145 = y0←v5012,  *(float*)&x145
               ) > (
               x146 = (*  (ptr) &fc15 ),  *(float*)&x146
               )) ? ((
               x147 = y1←v5040,  *(float*)&x147
               ) > (
               x148 = (*  (ptr) &fc15 ),  *(float*)&x148
               )) : 0 )  ||  ( ((
               x149 = y0←v5012,  *(float*)&x149
               ) < (
               x150 = (*  (ptr) &fc15 ),  *(float*)&x150
               )) ? ((
               x151 = y1←v5040,  *(float*)&x151
               ) < (
               x152 = (*  (ptr) &fc15 ),  *(float*)&x152
               )) : 0 ) ) ||  ( ((
               x153 = y0←v5012,  *(float*)&x153
               ) == (
               x154 = (*  (ptr) &fc15 ),  *(float*)&x154
               )) ? 1 : ((
               x155 = y1←v5040,  *(float*)&x155
               ) == (
               x156 = (*  (ptr) &fc15 ),  *(float*)&x156
               )) ) ) {
SOURCE(4144, 52)
               {
                  float tf157;
                  word x158;
                  float tf159;
                  word x160;
                  if ((FABS((
                        x158 = y0←v5012,  *(float*)&x158
                        ), tf157) < FABS((
                        x160 = y1←v5040,  *(float*)&x160
                        ), tf159))) {
SOURCE(4170, 16)
                     return(x0←v3600);
                     }
                  else {
SOURCE(4186, 10)
                     return(x1←v3628);
                     };
                  };
               };
            };
         };
      if ((noName←c10004 >= 499)) {
         goto lab←L100024;
         };
      noName←c10004 = (noName←c10004 + 1);
      goto lab←L100027;
      lab←L100024: ;
      };
SOURCE(4207, 5)
   (void) XR←RaiseUnnamedError();
   }

static word NewtonStep←P972(x←v5284, formal←c10644)
   word x←v5284;
   word formal←c10644;
   {
   register ptr gf←c10612 =  (ptr) &globalframe;
   word newx←v5328;
   word y←v5444;
   word deriv←v5472;
   formal←c10644 = (formal←c10644 - 20);
   /* NewtonStep: */ 
SOURCE(3123, 273)
SOURCE(3178, 34)
   {
      word pd161;
      pd161 = (* (( (ptr) (* (( (ptr) gf←c10612)+21)/* var←c9812 */  ))+6) );
      y←v5444 = (word) ( *( (fPt) ((*  (ptr) pd161 ))))((* (( (ptr) formal←c10644)+4) ), x←v5284, pd161);
      };
SOURCE(3214, 43)
   {
      word pd162;
      pd162 = (* (( (ptr) (* (( (ptr) gf←c10612)+21)/* var←c9812 */  ))+24) );
      deriv←v5472 = (word) ( *( (fPt) ((*  (ptr) pd162 ))))((* (( (ptr) formal←c10644)+4) ), x←v5284, pd162);
      };
SOURCE(3259, 44)
   {
      word x163;
      word x164;
      if (((
         x163 = y←v5444,  *(float*)&x163
         ) < (
         x164 = (*  (ptr) &fc15 ),  *(float*)&x164
         ))) {
SOURCE(3272, 31)
         {
            word x165;
            word x166;
            if (((
               x165 = y←v5444,  *(float*)&x165
               ) > (
               x166 = (* (( (ptr) formal←c10644)+9) ),  *(float*)&x166
               ))) {
SOURCE(3287, 7)
               (* (( (ptr) formal←c10644)+7) ) = x←v5284;
SOURCE(3296, 7)
               (* (( (ptr) formal←c10644)+9) ) = y←v5444;
               };
            };
         };
      };
SOURCE(3307, 44)
   {
      word x167;
      word x168;
      if (((
         x167 = y←v5444,  *(float*)&x167
         ) > (
         x168 = (*  (ptr) &fc15 ),  *(float*)&x168
         ))) {
SOURCE(3320, 31)
         {
            word x169;
            word x170;
            if (((
               x169 = y←v5444,  *(float*)&x169
               ) < (
               x170 = (* (( (ptr) formal←c10644)+10) ),  *(float*)&x170
               ))) {
SOURCE(3335, 7)
               (* (( (ptr) formal←c10644)+8) ) = x←v5284;
SOURCE(3344, 7)
               (* (( (ptr) formal←c10644)+10) ) = y←v5444;
               };
            };
         };
      };
SOURCE(3355, 41)
   {
      word x171;
      word x172;
      word x173;
      word x174;
      word x175;
      word x176;
      word x177;
      if (((
         x171 = deriv←v5472,  *(float*)&x171
         ) == (
         x172 = (*  (ptr) &fc15 ),  *(float*)&x172
         ))) {
         *(float*)&newx←v5328 = (
            x173 = x←v5284,  *(float*)&x173
            ) + (
            x174 = y←v5444,  *(float*)&x174
            );
         }
      else {
         *(float*)&newx←v5328 = (
            x175 = x←v5284,  *(float*)&x175
            ) - ((
            x176 = y←v5444,  *(float*)&x176
            ) / (
            x177 = deriv←v5472,  *(float*)&x177
            ));
         };
      };
SOURCE(3123, 273)
   return(newx←v5328);
   }

static void Evaluate←P300(formal←c0104, a3←v3732, a2←v3760, a1←v3788, a0←v3816, b3←v3844, b2←v3872, b1←v3900, b0←v3928, u←v3956)
   word formal←c0104;
   word a3←v3732;
   word a2←v3760;
   word a1←v3788;
   word a0←v3816;
   word b3←v3844;
   word b2←v3872;
   word b1←v3900;
   word b0←v3928;
   word u←v3956;
   {
   W2 pt←v4000;
   /* Evaluate: */ 
SOURCE(4220, 159)
SOURCE(4305, 36)
   {
      word x178;
      word x179;
      word x180;
      word x181;
      word x182;
      word x183;
      word x184;
      *(float*)&pt←v4000.f0 = ((((((
         x178 = a3←v3732,  *(float*)&x178
         ) * (
         x179 = u←v3956,  *(float*)&x179
         )) + (
         x180 = a2←v3760,  *(float*)&x180
         )) * (
         x181 = u←v3956,  *(float*)&x181
         )) + (
         x182 = a1←v3788,  *(float*)&x182
         )) * (
         x183 = u←v3956,  *(float*)&x183
         )) + (
         x184 = a0←v3816,  *(float*)&x184
         );
      };
SOURCE(4343, 36)
   {
      word x185;
      word x186;
      word x187;
      word x188;
      word x189;
      word x190;
      word x191;
      *(float*)&pt←v4000.f1 = ((((((
         x185 = b3←v3844,  *(float*)&x185
         ) * (
         x186 = u←v3956,  *(float*)&x186
         )) + (
         x187 = b2←v3872,  *(float*)&x187
         )) * (
         x188 = u←v3956,  *(float*)&x188
         )) + (
         x189 = b1←v3900,  *(float*)&x189
         )) * (
         x190 = u←v3956,  *(float*)&x190
         )) + (
         x191 = b0←v3928,  *(float*)&x191
         );
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0104 ) = pt←v4000;
   return;
   }

static word AsPolyline←P360(bezier←v4060, tolerance←v4088)
   W8 bezier←v4060;
   word tolerance←v4088;
   {
   register ptr gf←c10676 =  (ptr) &globalframe;
   word polyline←v4132;
   /* AsPolyline: */ 
SOURCE(4435, 779)
SOURCE(4435, 779)
   polyline←v4132 = 0;
SOURCE(4530, 684)
   {
      word pd192;
      pd192 = (* (( (ptr) (* (( (ptr) gf←c10676)+19)/* var←c9492 */  ))+8) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd192 ))))(bezier←v4060, tolerance←v4088, pd192))) {
SOURCE(4571, 49)
         {
            word var←c10036;
            var←c10036 = XR←NewObject(24, (* (( (ptr) gf←c10676)+4) ));
            (* (( (ptr) var←c10036)+1) ) = 2;
            polyline←v4132 = var←c10036;
            };
SOURCE(4622, 19)
         (*  (ptr) polyline←v4132 ) = 2;
SOURCE(4643, 23)
         {
            word limit193;
            (* (( (W2Pt) (( (ptr) polyline←v4132)+2))+(
                  limit193 = (* (( (ptr) polyline←v4132)+1) ),
                  BCK(0, limit193)
                  )) ) = (*  (W2Pt) &bezier←v4060 );
            };
SOURCE(4668, 23)
         {
            word limit194;
            (* (( (W2Pt) (( (ptr) polyline←v4132)+2))+(
                  limit194 = (* (( (ptr) polyline←v4132)+1) ),
                  BCK(1, limit194)
                  )) ) = (*  (W2Pt) (( (ptr) &bezier←v4060)+6) );
            };
SOURCE(4693, 6)
         return(polyline←v4132);
         }
      else {
SOURCE(4708, 517)
         {
            W8 bezier1←v5516;
            W8 bezier2←v5544;
            word totalLength←v5572;
            word poly1←v5600 = 0;
            word poly2←v5628 = 0;
SOURCE(4782, 41)
            {
               W16 var←c10068;
               {
                  word pd195;
                  pd195 = (* (( (ptr) (* (( (ptr) gf←c10676)+19)/* var←c9492 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd195 ))))((word) &var←c10068, bezier←v4060, pd195);
                  };
               bezier2←v5544 = (*  (W8Pt) (( (ptr) &var←c10068)+8) );
               bezier1←v5516 = (*  (W8Pt) &var←c10068 );
               };
SOURCE(4825, 38)
            poly1←v5600 = (word) AsPolyline←P360(bezier1←v5516, tolerance←v4088);
SOURCE(4865, 38)
            poly2←v5628 = (word) AsPolyline←P360(bezier2←v5544, tolerance←v4088);
SOURCE(4905, 41)
            {
               word idx196;
               totalLength←v5572 = (
                  idx196 = (word) (((*  (ptr) poly1←v5600 ) + (*  (ptr) poly2←v5628 )) - 1),
                  SGNCK(idx196)
                  );
               };
SOURCE(4948, 59)
            {
               word var←c10100;
               word var←c10132;
               var←c10100 = (totalLength←v5572 << 3);
               var←c10132 = XR←NewObject((8 + var←c10100), (* (( (ptr) gf←c10676)+4) ));
               (* (( (ptr) var←c10132)+1) ) = totalLength←v5572;
               polyline←v4132 = var←c10132;
               };
SOURCE(5009, 29)
            (*  (ptr) polyline←v4132 ) = totalLength←v5572;
SOURCE(5040, 57)
            {
               register word i←v5672 = 0;
               register word noName←c10164;
               noName←c10164 = (*  (ptr) poly1←v5600 );
               if ((i←v5672 >= noName←c10164)) {
                  goto lab←L100029;
                  };
               lab←L100032: ;
SOURCE(5075, 22)
               {
                  word limit197;
                  word limit198;
                  (* (( (W2Pt) (( (ptr) polyline←v4132)+2))+(
                        limit197 = (* (( (ptr) polyline←v4132)+1) ),
                        BCK(i←v5672, limit197)
                        )) ) = (* (( (W2Pt) (( (ptr) poly1←v5600)+2))+(
                        limit198 = (* (( (ptr) poly1←v5600)+1) ),
                        BCK(i←v5672, limit198)
                        )) );
                  };
               i←v5672 = (i←v5672 + 1);
               if ((i←v5672 < noName←c10164)) {
                  goto lab←L100032;
                  };
               lab←L100029: ;
               };
SOURCE(5108, 106)
            {
               register word i←v5716 = 1;
               register word noName←c10196;
               noName←c10196 = (*  (ptr) poly2←v5628 );
               if ((i←v5716 >= noName←c10196)) {
                  goto lab←L100033;
                  };
               lab←L100036: ;
SOURCE(5177, 37)
               {
                  word var←c10228;
                  var←c10228 = ((i←v5716 - 1) + (*  (ptr) poly1←v5600 ));
                  {
                     word limit199;
                     word limit200;
                     (* (( (W2Pt) (( (ptr) polyline←v4132)+2))+(
                           limit199 = (* (( (ptr) polyline←v4132)+1) ),
                           BCK(var←c10228, limit199)
                           )) ) = (* (( (W2Pt) (( (ptr) poly2←v5628)+2))+(
                           limit200 = (* (( (ptr) poly2←v5628)+1) ),
                           BCK(i←v5716, limit200)
                           )) );
                     };
                  };
               i←v5716 = (i←v5716 + 1);
               if ((i←v5716 < noName←c10196)) {
                  goto lab←L100036;
                  };
               lab←L100033: ;
               };
            };
         };
      };
SOURCE(4435, 779)
   return(polyline←v4132);
   }

/* file: GGCubic2Impl, module: GGCubic2Impl, compiled at: April 9, 1992 11:41:10 pm PDT */ 
extern void XR←install←GGCubic2Impl() {
   NoName←Q1272();
   }
extern void XR←run←GGCubic2Impl() { XR←Start(&globalframe); }