/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: May 6, 1993 5:03:05 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: DSupportImpl, module: DSupportImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1390064766,3091302834] DSupportImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef word (*fPt)();
#define SOURCE(p, l) /* source p, l */
static void NoName←Q3204();
static void DSupportImpl←P0();
static void ConversionError←P60();
static void Overflow←P120();
extern void XR←D64SetTestMode();
extern void XR←DCardCard();
extern void XR←DCardInt();
extern void XR←DCardDIntI();
extern void XR←DIntCard();
extern void XR←DIntInt();
extern void XR←DIntDCardI();
extern word XR←CardDIntI();
extern word XR←CardDCardI();
extern word XR←IntDIntI();
extern word XR←IntDCardI();
extern void XR←DCardAddI();
extern void XR←DCardSubI();
extern void XR←DCardMulI();
static void Div2←P1020();
extern void XR←DCardDivI();
extern void XR←DCardModI();
extern void XR←DCardPwrI();
static void MixedPwr←P2856();
extern word XR←DCardGtI();
extern word XR←DCardGeI();
extern word XR←DEqI();
extern void XR←DCardMinI();
extern void XR←DCardMaxI();
static void XDIntNeg←P1620();
static void Neg64←P1680();
extern void XR←DIntNegI();
extern void XR←DIntAddI();
extern void XR←DIntSubI();
extern void XR←DIntMulI();
extern void XR←DIntDivI();
extern void XR←DIntModI();
extern void XR←DIntPwrI();
extern word XR←DIntGtI();
extern word XR←DIntGeI();
extern void XR←DIntAbsI();
extern void XR←DIntMinI();
extern void XR←DIntMaxI();
extern void XR←DFloatDCardI();
extern void XR←DFloatDIntI();
extern word XR←FloatDCardI();
extern word XR←FloatDIntI();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\122\332\264\176\300\270\101\211\262\100\164\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\321\335\027\212\300\103\063\273\041\100\150\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\275\320\070\317\300\004\110\363\366\100\150\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\233\213\041\256\300\330\147\331\041\100\150\000\000"};
static struct {
   word f0[6]; 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; word f19; word f20; 
   word f21; word f22; word f23; word f24; 
   word f25; word f26; word f27; word f28; 
   word f29; word f30; word f31; word f32; 
   word f33; word f34; word f35; word f36; 
   word f37; word f38; word f39; word f40; 
   word f41; word f42; word f43; word f44; 
   word f45; word f46; word f47; word f48; 
   word f49; word f50; word f51; word f52; 
   word f53; word f54; word f55; word f56; 
   word f57; word f58; word f59; word f60; 
   word f61; word f62; word f63; word f64; 
   word f65; word f66; word f67; word f68; 
   word f69; word f70; word f71; word f72; 
   word f73; word f74; word f75; word f76; 
   word f77; word f78; word f79; word f80; 
   word f81; word f82; word f83; word f84; 
   word f85; word f86; word f87; word f88; 
   word f89; word f90; word f91; word f92; 
   word f93[4]; 
   } globalframe = {
   {0}, (word) XR←FloatDIntI, 0, (word) XR←FloatDCardI, 
   0, (word) XR←DFloatDIntI, 0, (word) XR←DFloatDCardI, 
   0, (word) XR←DIntMaxI, 0, (word) XR←DIntMinI, 
   0, (word) XR←DIntAbsI, 0, (word) XR←DIntGeI, 
   0, (word) XR←DIntGtI, 0, (word) XR←DIntPwrI, 
   0, (word) XR←DIntModI, 0, (word) XR←DIntDivI, 
   0, (word) XR←DIntMulI, 0, (word) XR←DIntSubI, 
   0, (word) XR←DIntAddI, 0, (word) XR←DIntNegI, 
   0, (word) Neg64←P1680, 0, (word) XDIntNeg←P1620, 
   0, (word) XR←DCardMaxI, 0, (word) XR←DCardMinI, 
   0, (word) XR←DEqI, 0, (word) XR←DCardGeI, 
   0, (word) XR←DCardGtI, 0, (word) XR←DCardPwrI, 
   0, (word) XR←DCardModI, 0, (word) XR←DCardDivI, 
   0, (word) Div2←P1020, 0, (word) XR←DCardMulI, 
   0, (word) XR←DCardSubI, 0, (word) XR←DCardAddI, 
   0, (word) XR←IntDCardI, 0, (word) XR←IntDIntI, 
   0, (word) XR←CardDCardI, 0, (word) XR←CardDIntI, 
   0, (word) XR←DIntDCardI, 0, (word) XR←DIntInt, 
   0, (word) XR←DIntCard, 0, (word) XR←DCardDIntI, 
   0, (word) XR←DCardInt, 0, (word) XR←DCardCard, 
   0, (word) XR←D64SetTestMode, 0, (word) Overflow←P120, 
   0, (word) ConversionError←P60, 0, (word) DSupportImpl←P0, 
   {0}
   };

static void NoName←Q3204()
   {
   register ptr gf←c0224 =  (ptr) &globalframe;
   word var←c14092;
   (void) XR←DeclareGlobalFrame((word) "DSupportImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c0224)+368)
      /* var←c13356 */ );
   var←c14092 = (word) XR←ImportInterface((word) "RealSupport", (word) XR←GetTypeIndexS((word) (&string2)), 24);
   (* (( (ptr) gf←c0224)+96)/* var←c14060 */  ) = var←c14092;
   (void) XR←ImportProcS(var←c14092, 67371777);
   (void) XR←ImportProcS(var←c14092, 67634690);
   var←c14092 = (word) XR←ImportInterface((word) "RuntimeError", (word) XR←GetTypeIndexS((word) (&string3)), 27);
   (* (( (ptr) gf←c0224)+94)/* var←c13388 */  ) = var←c14092;
   var←c14092 = (word) XR←ImportInterface((word) "DRealSupport", (word) XR←GetTypeIndexS((word) (&string4)), 26);
   (* (( (ptr) gf←c0224)+95)/* var←c13964 */  ) = var←c14092;
   (void) XR←ImportProcS(var←c14092, 134480897);
   (void) XR←ImportProcS(var←c14092, 135006210);
   }

static void DSupportImpl←P0(formal←c052, formal←c051)
   word formal←c052;
   word formal←c051;
   {
   /* DSupportImpl: */ 
   }

static void ConversionError←P60()
   {
   register ptr gf←c14124 =  (ptr) &globalframe;
   /* ConversionError: */ 
SOURCE(1934, 85)
SOURCE(1989, 30)
   (void) XR←RaiseError((* (( (ptr) (* (( (ptr) gf←c14124)+94)/* var←c13388 */  ))+8) ), 0);
   }

static void Overflow←P120()
   {
   register ptr gf←c14156 =  (ptr) &globalframe;
   /* Overflow: */ 
SOURCE(2025, 70)
SOURCE(2047, 48)
   if ((0 != (* (( (ptr) gf←c14156)+4)/* overFlowTests64←v2664 */  ))) {
SOURCE(2071, 24)
      (void) (XR←RaiseSignal((word) (( (bPt) gf←c14156)+20)/* var←c11948 */ , 0, 0));
      };
   }

extern void XR←D64SetTestMode(c←v4976)
   word c←v4976;
   {
   register ptr gf←c14188 =  (ptr) &globalframe;
   /* D64SetTestMode: */ 
SOURCE(2101, 72)
SOURCE(2151, 22)
   (* (( (ptr) gf←c14188)+4)/* overFlowTests64←v2664 */  ) =  (unsigned) (c←v4976 != 0);
   }

extern void XR←DCardCard(res←v5036, c←v5064)
   word res←v5036;
   word c←v5064;
   {
   /* DCardCard: */ 
SOURCE(2178, 88)
SOURCE(2240, 12)
   (* (( (ptr) res←v5036)+1) ) = c←v5064;
SOURCE(2254, 12)
   (*  (ptr) res←v5036 ) = 0;
   }

extern void XR←DCardInt(res←v5124, i←v5152)
   word res←v5124;
   word i←v5152;
   {
   /* DCardInt: */ 
SOURCE(2272, 117)
SOURCE(2332, 29)
   if (( (int)i←v5152 <  (int)0)) {
SOURCE(2344, 17)
      (void) ConversionError←P60();
      };
SOURCE(2363, 12)
   (* (( (ptr) res←v5124)+1) ) = i←v5152;
SOURCE(2377, 12)
   (*  (ptr) res←v5124 ) = 0;
   }

extern void XR←DCardDIntI(res←v5212, dint←v5240)
   word res←v5212;
   word dint←v5240;
   {
   /* DCardDInt: */ 
SOURCE(2395, 108)
SOURCE(2452, 37)
   if (( (int)(*  (ptr) dint←v5240 ) <  (int)0)) {
SOURCE(2472, 17)
      (void) ConversionError←P60();
      };
SOURCE(2491, 12)
   (*  (W2Pt) res←v5212 ) = (*  (W2Pt) dint←v5240 );
   }

extern void XR←DIntCard(res←v5300, c←v5328)
   word res←v5300;
   word c←v5328;
   {
   /* DIntCard: */ 
SOURCE(2510, 87)
SOURCE(2571, 12)
   (*  (ptr) res←v5300 ) = 0;
SOURCE(2585, 12)
   (* (( (ptr) res←v5300)+1) ) = c←v5328;
   }

extern void XR←DIntInt(res←v5388, i←v5416)
   word res←v5388;
   word i←v5416;
   {
   /* DIntInt: */ 
SOURCE(2603, 117)
SOURCE(2662, 44)
   if (( (int)i←v5416 >=  (int)0)) {
SOURCE(2675, 18)
      (*  (ptr) res←v5388 ) = 0;
      }
   else {
SOURCE(2693, 13)
      (*  (ptr) res←v5388 ) =  (word) -1;
      };
SOURCE(2708, 12)
   (* (( (ptr) res←v5388)+1) ) = i←v5416;
   }

extern void XR←DIntDCardI(res←v5476, dcard←v5504)
   word res←v5476;
   word dcard←v5504;
   {
   /* DIntDCard: */ 
SOURCE(2726, 112)
SOURCE(2785, 38)
   if (( (int)(*  (ptr) dcard←v5504 ) <  (int)0)) {
SOURCE(2806, 17)
      (void) ConversionError←P60();
      };
SOURCE(2825, 13)
   (*  (W2Pt) res←v5476 ) = (*  (W2Pt) dcard←v5504 );
   }

extern word XR←CardDIntI(dint←v5564)
   word dint←v5564;
   {
   word var←c5608;
   /* CardDInt: */ 
SOURCE(2845, 125)
SOURCE(2913, 37)
   if (((*  (ptr) dint←v5564 ) != 0)) {
SOURCE(2933, 17)
      (void) ConversionError←P60();
      };
SOURCE(2952, 18)
   return((* (( (ptr) dint←v5564)+1) ));
   }

extern word XR←CardDCardI(dcard←v5668)
   word dcard←v5668;
   {
   word var←c5712;
   /* CardDCard: */ 
SOURCE(2976, 130)
SOURCE(3047, 38)
   if (((*  (ptr) dcard←v5668 ) != 0)) {
SOURCE(3068, 17)
      (void) ConversionError←P60();
      };
SOURCE(3087, 19)
   return((* (( (ptr) dcard←v5668)+1) ));
   }

extern word XR←IntDIntI(dint←v5772)
   word dint←v5772;
   {
   word var←c5816;
   /* IntDInt: */ 
SOURCE(3113, 234)
SOURCE(3179, 148)
   {
      word var←c13420;
      var←c13420 = (*  (ptr) dint←v5772 );
      if ((var←c13420 == 0)) {
SOURCE(3206, 37)
         if (( (int)(* (( (ptr) dint←v5772)+1) ) <  (int)0)) {
SOURCE(3226, 17)
            (void) ConversionError←P60();
            };
         }
      else {
         if ((var←c13420 ==  (word) -1)) {
SOURCE(3259, 38)
            if (( (int)(* (( (ptr) dint←v5772)+1) ) >=  (int)0)) {
SOURCE(3280, 17)
               (void) ConversionError←P60();
               };
            }
         else {
SOURCE(3310, 17)
            (void) ConversionError←P60();
            };
         };
      };
SOURCE(3329, 18)
   return((* (( (ptr) dint←v5772)+1) ));
   }

extern word XR←IntDCardI(dcard←v5876)
   word dcard←v5876;
   {
   word var←c5920;
   /* IntDCard: */ 
SOURCE(3353, 143)
SOURCE(3421, 54)
   if (((*  (ptr) dcard←v5876 ) != 0) || ( (int)(* (( (ptr) dcard←v5876)+1) ) <  (int)0)) {
SOURCE(3458, 17)
      (void) ConversionError←P60();
      };
SOURCE(3477, 19)
   return((* (( (ptr) dcard←v5876)+1) ));
   }

extern void XR←DCardAddI(res←v5980, a←v6008, b←v6036)
   word res←v5980;
   word a←v6008;
   word b←v6036;
   {
   word over←v9512;
   /* DCardAdd: */ 
SOURCE(3504, 281)
SOURCE(3560, 60)
   over←v9512 =  ( (( (word) -1 - (* (( (ptr) a←v6008)+1) )) < (* (( (ptr) b←v6036)+1) )) ? 1 : 0 ) ;
SOURCE(3622, 97)
   if ((( (word) -1 - (*  (ptr) a←v6008 )) <= (*  (ptr) b←v6036 ))) {
SOURCE(3662, 57)
      if ((( (word) -1 - (*  (ptr) a←v6008 )) < (*  (ptr) b←v6036 )) || (over←v9512 != 0)) {
SOURCE(3709, 10)
         (void) Overflow←P120();
         };
      };
SOURCE(3724, 26)
   (* (( (ptr) res←v5980)+1) ) = ((* (( (ptr) a←v6008)+1) ) + (* (( (ptr) b←v6036)+1) ));
SOURCE(3752, 33)
   (*  (ptr) res←v5980 ) = (((*  (ptr) a←v6008 ) + (*  (ptr) b←v6036 )) + over←v9512);
   }

extern void XR←DCardSubI(res←v6096, a←v6124, b←v6152)
   word res←v6096;
   word a←v6124;
   word b←v6152;
   {
   word over←v9556;
   /* DCardSub: */ 
SOURCE(3791, 236)
SOURCE(3847, 45)
   over←v9556 =  ( ((* (( (ptr) a←v6124)+1) ) < (* (( (ptr) b←v6152)+1) )) ? 1 : 0 ) ;
SOURCE(3894, 67)
   if (((*  (ptr) a←v6124 ) <= (*  (ptr) b←v6152 ))) {
SOURCE(3919, 42)
      if (((*  (ptr) a←v6124 ) < (*  (ptr) b←v6152 )) || (over←v9556 != 0)) {
SOURCE(3951, 10)
         (void) Overflow←P120();
         };
      };
SOURCE(3966, 26)
   (* (( (ptr) res←v6096)+1) ) = ((* (( (ptr) a←v6124)+1) ) - (* (( (ptr) b←v6152)+1) ));
SOURCE(3994, 33)
   (*  (ptr) res←v6096 ) = (((*  (ptr) a←v6124 ) - (*  (ptr) b←v6152 )) - over←v9556);
   }

extern void XR←DCardMulI(res←v6212, a←v6240, b←v6268)
   word res←v6212;
   word a←v6240;
   word b←v6268;
   {
   word r0←v9628;
   word r1←v9656;
   word r2←v9684;
   word r3←v9712;
   word carry3←v9740;
   word p1a←v9768;
   word p1b←v9796;
   word p2a←v9824;
   word p2b←v9852;
   word p2c←v9880;
   word p3a←v9908;
   word p3b←v9936;
   word p3c←v9964;
   word p3d←v9992;
   /* DCardMul: */ 
SOURCE(4033, 1088)
SOURCE(4205, 14)
   r0←v9628 = ( (unsigned) (* (( (hPt) a←v6240)+3) ) *  (unsigned) (* (( (hPt) b←v6268)+3) ));
SOURCE(4221, 15)
   p1a←v9768 = ( (unsigned) (* (( (hPt) a←v6240)+2) ) *  (unsigned) (* (( (hPt) b←v6268)+3) ));
SOURCE(4238, 15)
   p1b←v9796 = ( (unsigned) (* (( (hPt) a←v6240)+3) ) *  (unsigned) (* (( (hPt) b←v6268)+2) ));
SOURCE(4255, 46)
   if ((( (word) -1 - p1a←v9768) < p1b←v9796)) {
      carry3←v9740 = 1;
      }
   else {
      carry3←v9740 = 0;
      };
SOURCE(4303, 14)
   r1←v9656 = (p1a←v9768 + p1b←v9796);
SOURCE(4319, 15)
   p2a←v9824 = ( (unsigned) (* (( (hPt) a←v6240)+1) ) *  (unsigned) (* (( (hPt) b←v6268)+3) ));
SOURCE(4337, 15)
   p2b←v9852 = ( (unsigned) (* (( (hPt) a←v6240)+2) ) *  (unsigned) (* (( (hPt) b←v6268)+2) ));
SOURCE(4354, 15)
   p2c←v9880 = ( (unsigned) (* (( (hPt) a←v6240)+3) ) *  (unsigned) (* (( (hPt) b←v6268)+1) ));
SOURCE(4371, 39)
   if ((( (word) -1 - p2a←v9824) < p2b←v9852)) {
SOURCE(4400, 10)
      (void) Overflow←P120();
      };
SOURCE(4412, 14)
   r2←v9684 = (p2a←v9824 + p2b←v9852);
SOURCE(4428, 38)
   if ((( (word) -1 - r2←v9684) < p2c←v9880)) {
SOURCE(4456, 10)
      (void) Overflow←P120();
      };
SOURCE(4468, 13)
   r2←v9684 = (r2←v9684 + p2c←v9880);
SOURCE(4483, 24)
   p3a←v9908 = (( (unsigned) (*  (hPt) a←v6240 ) *  (unsigned) (* (( (hPt) b←v6268)+3) )) + carry3←v9740);
SOURCE(4526, 15)
   p3b←v9936 = ( (unsigned) (* (( (hPt) a←v6240)+1) ) *  (unsigned) (* (( (hPt) b←v6268)+2) ));
SOURCE(4543, 15)
   p3c←v9964 = ( (unsigned) (* (( (hPt) a←v6240)+2) ) *  (unsigned) (* (( (hPt) b←v6268)+1) ));
SOURCE(4560, 15)
   p3d←v9992 = ( (unsigned) (* (( (hPt) a←v6240)+3) ) *  (unsigned) (*  (hPt) b←v6268 ));
SOURCE(4577, 63)
   if ((((p3a←v9908 > 65536) || (p3b←v9936 > 65536)) || (p3c←v9964 > 65536)) || (p3d←v9992 > 65536)) {
SOURCE(4630, 10)
      (void) Overflow←P120();
      };
SOURCE(4642, 26)
   r3←v9712 = (((p3a←v9908 + p3b←v9936) + p3c←v9964) + p3d←v9992);
SOURCE(4673, 20)
   (* (( (hPt) res←v6212)+3) ) = ( (((unsigned)r0←v9628 << 16) >> 16) );
SOURCE(4695, 12)
   r0←v9628 = ((word) r0←v9628 >> 16);
SOURCE(4712, 44)
   if ((( (word) -1 - r1←v9656) < r0←v9628)) {
      carry3←v9740 = 1;
      }
   else {
      carry3←v9740 = 0;
      };
SOURCE(4758, 12)
   r1←v9656 = (r1←v9656 + r0←v9628);
SOURCE(4773, 20)
   (* (( (hPt) res←v6212)+2) ) = ( (((unsigned)r1←v9656 << 16) >> 16) );
SOURCE(4795, 12)
   r1←v9656 = ((word) r1←v9656 >> 16);
SOURCE(4812, 37)
   if ((( (word) -1 - r2←v9684) < r1←v9656)) {
SOURCE(4839, 10)
      (void) Overflow←P120();
      };
SOURCE(4851, 12)
   r2←v9684 = (r2←v9684 + r1←v9656);
SOURCE(4866, 20)
   (* (( (hPt) res←v6212)+1) ) = ( (((unsigned)r2←v9684 << 16) >> 16) );
SOURCE(4888, 12)
   r2←v9684 = ((word) r2←v9684 >> 16);
SOURCE(4905, 26)
   if ((r3←v9712 > 65536)) {
SOURCE(4921, 10)
      (void) Overflow←P120();
      };
SOURCE(4933, 21)
   r3←v9712 = ((r3←v9712 + r2←v9684) + carry3←v9740);
SOURCE(4981, 20)
   (*  (hPt) res←v6212 ) = ( (((unsigned)r3←v9712 << 16) >> 16) );
SOURCE(5003, 118)
   {
      word tc6;
      word tc7;
      word tc8;
      if ((r3←v9712 >= 65536)) { goto then05;};
      if (( (unsigned) (*  (hPt) a←v6240 ) > 0)) {
         tc6 =  (word) ((( (unsigned) (* (( (hPt) b←v6268)+2) ) +  (unsigned) (* (( (hPt) b←v6268)+1) )) +  (unsigned) (*  (hPt) b←v6268 )) > 0);
         }
      else {
         tc6 =  (word) 0;
         };
      if (tc6) { goto then05;};
      if (( (unsigned) (*  (hPt) b←v6268 ) > 0)) {
         tc7 =  (word) (( (unsigned) (* (( (hPt) a←v6240)+2) ) +  (unsigned) (* (( (hPt) a←v6240)+1) )) > 0);
         }
      else {
         tc7 =  (word) 0;
         };
      if (tc7) { goto then05;};
      if (( (unsigned) (* (( (hPt) a←v6240)+1) ) > 0)) {
         tc8 =  (word) ( (unsigned) (* (( (hPt) b←v6268)+1) ) > 0);
         }
      else {
         tc8 =  (word) 0;
         };
      if (tc8) {
         then05: ;
SOURCE(5111, 10)
         (void) Overflow←P120();
         };
      };
   }

static void Div2←P1020(formal←c0102, a←v6328)
   word formal←c0102;
   word a←v6328;
   {
   W2 res←v6372;
   /* Div2: */ 
SOURCE(5127, 138)
SOURCE(5187, 54)
   res←v6372.f1 = ((((*  (ptr) a←v6328 ) & 1) << 31) + ((* (( (ptr) a←v6328)+1) ) >> 1));
SOURCE(5243, 22)
   res←v6372.f0 = ((*  (ptr) a←v6328 ) >> 1);
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0102 ) = res←v6372;
   return;
   }

extern void XR←DCardDivI(res←v6536, a←v6564, b←v6592)
   word res←v6536;
   word a←v6564;
   word b←v6592;
   {
   register ptr gf←c14220 =  (ptr) &globalframe;
   /* DCardDiv: */ 
SOURCE(5366, 583)
SOURCE(5422, 527)
   if (XR←DCardGtI(b←v6592, a←v6564)) {
SOURCE(5442, 17)
      {
         W2 D9;
         XR←DCardCard(&D9, 0);
         (*  (W2Pt) res←v6536 ) = D9;
         };
      }
   else {
SOURCE(5459, 490)
      if ( ( ((*  (ptr) b←v6592 ) == 0) ? ((* (( (ptr) b←v6592)+1) ) <= 2) : 0 ) ) {
SOURCE(5492, 92)
         {
            word var←c13452;
            var←c13452 = (* (( (ptr) b←v6592)+1) );
            switch (var←c13452) {
               case 2: 
SOURCE(5516, 14)
                  (void) Div2←P1020((word) res←v6536, a←v6564);
                  break;
               case 1: 
SOURCE(5537, 9)
                  (*  (W2Pt) res←v6536 ) = (*  (W2Pt) a←v6564 );
                  break;
               case 0: 
SOURCE(5553, 31)
                  (void) (XR←RaiseSignal((* (( (ptr) (* (( (ptr) gf←c14220)+94)/* var←c13388 */  ))+27) ), 0, 0));
                  break;
               default: 
SOURCE(5597, 5)
                  (void) XR←RaiseUnnamedError();
                  break;
               };
            };
         }
      else {
SOURCE(5611, 340)
         {
            W2 result←v10036;
            W2 d←v10064;
            word count←v10092 = 1;
            W2 rest←v10120;
SOURCE(5613, 26)
            {
               W2 D10;
               XR←DCardCard(&D10, 0);
               result←v10036 = D10;
               };
SOURCE(5641, 15)
            d←v10064 = (*  (W2Pt) b←v6592 );
SOURCE(5674, 23)
            (void) Div2←P1020((word) &rest←v10120, a←v6564);
SOURCE(5699, 64)
            lab←L100003: ;
            if (XR←DCardGeI(&rest←v10120, &d←v10064)) {
               }
            else {
               goto lab←L100001;
               };
SOURCE(5724, 12)
            {
               W2 var←c13516;
               W2 res←v11900;
SOURCE(5338, 24)
               {
                  W2 D11;
                  XR←DCardAddI(&D11, &d←v10064, &d←v10064);
                  res←v11900 = D11;
                  };
SOURCE(5271, 91)
               var←c13516 = res←v11900;
               d←v10064 = var←c13516;
               };
SOURCE(5738, 25)
            count←v10092 = (count←v10092 + 1);
            goto lab←L100003;
            lab←L100001: ;
SOURCE(5765, 9)
            rest←v10120 = (*  (W2Pt) a←v6564 );
SOURCE(5776, 148)
            {
               register word i←v10164 = 0;
               register word noName←c13548;
               noName←c13548 = count←v10092;
               if ((i←v10164 >= noName←c13548)) {
                  goto lab←L100005;
                  };
               lab←L100008: ;
SOURCE(5804, 22)
               {
                  W2 var←c13580;
                  W2 res←v11852;
SOURCE(5338, 24)
                  {
                     W2 D12;
                     XR←DCardAddI(&D12, &result←v10036, &result←v10036);
                     res←v11852 = D12;
                     };
SOURCE(5271, 91)
                  var←c13580 = res←v11852;
                  result←v10036 = var←c13580;
                  };
SOURCE(5828, 81)
               if (XR←DCardGeI(&rest←v10120, &d←v10064)) {
SOURCE(5853, 27)
                  {
                     W2 D13;
                     XR←DCardSubI(&D13, &rest←v10120, &d←v10064);
                     rest←v10120 = D13;
                     };
SOURCE(5882, 27)
                  {
                     W2 D14;
                     W2 D15;
                     XR←DCardCard(&D15, 1);
                     XR←DCardAddI(&D14, &result←v10036, &D15);
                     result←v10036 = D14;
                     };
                  };
SOURCE(5912, 12)
               (void) Div2←P1020((word) &d←v10064, (word) &d←v10064);
               i←v10164 = (i←v10164 + 1);
               if ((i←v10164 < noName←c13548)) {
                  goto lab←L100008;
                  };
               lab←L100005: ;
               };
SOURCE(5936, 13)
            (*  (W2Pt) res←v6536 ) = result←v10036;
            };
         };
      };
   }

extern void XR←DCardModI(res←v6652, a←v6680, b←v6708)
   word res←v6652;
   word a←v6680;
   word b←v6708;
   {
   /* DCardMod: */ 
SOURCE(5958, 97)
SOURCE(6014, 41)
   {
      W2 D16;
      W2 D17;
      W2 D18;
      XR←DCardDivI(&D18, a←v6680, b←v6708);
      XR←DCardMulI(&D17, &D18, b←v6708);
      XR←DCardSubI(&D16, a←v6680, &D17);
      (*  (W2Pt) res←v6652 ) = D16;
      };
   }

extern void XR←DCardPwrI(res←v6768, a←v6796, b←v6824)
   word res←v6768;
   word a←v6796;
   word b←v6824;
   {
   W6 var←c14252;
   /* declaration of var←c13612 skipped */ 
   /* DCardPwr: */ 
SOURCE(6061, 463)
   {
      word tmpAddr19;
      tmpAddr19 = (word) (( (ptr) &var←c14252)+4)/* var←c13612 */ ;
      (*  (ptr) tmpAddr19 ) = ( ((word)  (fPt) MixedPwr←P2856) );
      (* (( (ptr) tmpAddr19) + 1) ) = 1;
      };
SOURCE(6344, 141)
   if (((*  (ptr) b←v6824 ) > 0)) {
SOURCE(6363, 114)
      if (((*  (ptr) a←v6796 ) > 0)) {
SOURCE(6381, 16)
         (void) Overflow←P120();
         }
      else {
SOURCE(6397, 80)
         {
            word var←c13644;
            var←c13644 = (* (( (ptr) a←v6796)+1) );
            if ((var←c13644 == 0)) {
SOURCE(6421, 11)
               {
                  W2 D20;
                  XR←DCardCard(&D20, 0);
                  (*  (W2Pt) res←v6768 ) = D20;
                  };
               }
            else {
               if ((var←c13644 == 1)) {
SOURCE(6439, 15)
                  (*  (W2Pt) res←v6768 ) = (*  (W2Pt) a←v6796 );
                  }
               else {
SOURCE(6467, 10)
                  (void) Overflow←P120();
                  };
               };
            };
         };
SOURCE(6479, 6)
      return;
      };
SOURCE(6490, 34)
   (void) MixedPwr←P2856((word) res←v6768, (*  (W2Pt) a←v6796 ), (* (( (ptr) b←v6824)+1) ), (word) (( (bPt) &var←c14252)+16)
      /* var←c13612 */ );
   }

static void MixedPwr←P2856(formal←c0137, x←v10284, y←v10312, formal←c14284)
   word formal←c0137;
   W2 x←v10284;
   word y←v10312;
   word formal←c14284;
   {
   W2 var←c10356;
   formal←c14284 = (formal←c14284 - 16);
   /* MixedPwr: */ 
SOURCE(6117, 221)
SOURCE(6191, 147)
   {
      word var←c13676;
      var←c13676 = y←v10312;
      if ((var←c13676 == 0)) {
SOURCE(6210, 10)
         {
            W2 D21;
            XR←DCardCard(&D21, 1);
            var←c10356 = D21;
            };
         /* removed tail goto */ 
         }
      else {
         if ((var←c13676 == 1)) {
SOURCE(6227, 10)
            var←c10356 = x←v10284;
            /* removed tail goto */ 
            }
         else {
SOURCE(6250, 88)
            if (((y←v10312 & 1) != 0)) {
SOURCE(6270, 39)
               {
                  W2 var←c13740;
                  {
                     W2 var←c0134;
                     {
                        W2 D22;
                        XR←DCardMulI(&D22, &x←v10284, &x←v10284);
                        (void) MixedPwr←P2856((word) &var←c0134, D22, ((word) y←v10312 >> 1), (word) (( (bPt) formal←c14284)+16));
                        };
                     {
                        W2 D23;
                        XR←DCardMulI(&D23, &x←v10284, &var←c0134);
                        var←c13740 = D23;
                        };
                     };
                  var←c10356 = var←c13740;
                  /* removed tail goto */ 
                  };
               }
            else {
SOURCE(6309, 29)
               {
                  W2 var←c13804;
                  {
                     W2 D24;
                     XR←DCardMulI(&D24, &x←v10284, &x←v10284);
                     (void) MixedPwr←P2856((word) &var←c13804, D24, ((word) y←v10312 >> 1), (word) (( (bPt) formal←c14284)+16));
                     };
                  var←c10356 = var←c13804;
                  /* removed tail goto */ 
                  };
               };
            };
         };
      };
   (*  (W2Pt) formal←c0137 ) = var←c10356;
   return;
   }

extern word XR←DCardGtI(a←v6884, b←v6912)
   word a←v6884;
   word b←v6912;
   {
   word var←c6956;
   /* DCardGt: */ 
SOURCE(6528, 181)
   if (((*  (ptr) a←v6884 ) > (*  (ptr) b←v6912 ))) {
SOURCE(6627, 13)
      return(1);
      }
   else {
      if (((*  (ptr) a←v6884 ) < (*  (ptr) b←v6912 ))) {
SOURCE(6659, 14)
         return(0);
         }
      else {
SOURCE(6686, 23)
         return( (unsigned) ((* (( (ptr) a←v6884)+1) ) > (* (( (ptr) b←v6912)+1) )));
         };
      };
   }

extern word XR←DCardGeI(a←v7016, b←v7044)
   word a←v7016;
   word b←v7044;
   {
   word var←c7088;
   /* DCardGe: */ 
SOURCE(6713, 182)
   if (((*  (ptr) a←v7016 ) > (*  (ptr) b←v7044 ))) {
SOURCE(6812, 13)
      return(1);
      }
   else {
      if (((*  (ptr) a←v7016 ) < (*  (ptr) b←v7044 ))) {
SOURCE(6844, 14)
         return(0);
         }
      else {
SOURCE(6871, 24)
         return( (unsigned) ((* (( (ptr) a←v7016)+1) ) >= (* (( (ptr) b←v7044)+1) )));
         };
      };
   }

extern word XR←DEqI(a←v7148, b←v7176)
   word a←v7148;
   word b←v7176;
   {
   word var←c7220;
   /* DEq: */ 
SOURCE(6899, 102)
SOURCE(6960, 41)
   {
      word tc25;
      if (((* (( (ptr) a←v7148)+1) ) == (* (( (ptr) b←v7176)+1) ))) {
         tc25 =  (word)  (unsigned) ((*  (ptr) a←v7148 ) == (*  (ptr) b←v7176 ));
         }
      else {
         tc25 =  (word)  (unsigned) 0;
         };
      return(tc25);
      };
   }

extern void XR←DCardMinI(res←v7280, a←v7308, b←v7336)
   word res←v7280;
   word a←v7308;
   word b←v7336;
   {
   /* DCardMin: */ 
SOURCE(7005, 103)
SOURCE(7061, 47)
   if ((0 != (word) XR←DCardGtI(a←v7308, b←v7336))) {
SOURCE(7083, 15)
      (*  (W2Pt) res←v7280 ) = (*  (W2Pt) b←v7336 );
      }
   else {
SOURCE(7098, 10)
      (*  (W2Pt) res←v7280 ) = (*  (W2Pt) a←v7308 );
      };
   }

extern void XR←DCardMaxI(res←v7396, a←v7424, b←v7452)
   word res←v7396;
   word a←v7424;
   word b←v7452;
   {
   /* DCardMax: */ 
SOURCE(7112, 103)
SOURCE(7168, 47)
   if ((0 != (word) XR←DCardGtI(a←v7424, b←v7452))) {
SOURCE(7190, 15)
      (*  (W2Pt) res←v7396 ) = (*  (W2Pt) a←v7424 );
      }
   else {
SOURCE(7205, 10)
      (*  (W2Pt) res←v7396 ) = (*  (W2Pt) b←v7452 );
      };
   }

static void XDIntNeg←P1620(res←v7512, a←v7540)
   word res←v7512;
   word a←v7540;
   {
   W2 n1←v10384;
   W2 p1←v10412;
   W2 t←v10440;
   /* XDIntNeg: */ 
SOURCE(7220, 183)
SOURCE(7273, 47)
   n1←v10384.f0 =  (word) -1;
   n1←v10384.f1 =  (word) -1;
SOURCE(7322, 25)
   p1←v10412.f0 = 0;
   p1←v10412.f1 = 1;
SOURCE(7361, 19)
   (void) XR←DIntSubI((word) &t←v10440, (word) &n1←v10384, a←v7540);
SOURCE(7382, 21)
   (void) XR←DIntSubI(res←v7512, (word) &t←v10440, (word) &p1←v10412);
   }

static void Neg64←P1680(res←v7600, n←v7628)
   word res←v7600;
   word n←v7628;
   {
   /* Neg64: */ 
SOURCE(7409, 219)
SOURCE(7459, 32)
   (* (( (ptr) res←v7600)+1) ) = ( (word) -1 - (* (( (ptr) n←v7628)+1) ));
SOURCE(7493, 32)
   (*  (ptr) res←v7600 ) = ( (word) -1 - (*  (ptr) n←v7628 ));
SOURCE(7527, 101)
   if (((* (( (ptr) res←v7600)+1) ) ==  (word) -1)) {
SOURCE(7559, 23)
      (*  (ptr) res←v7600 ) = ((*  (ptr) res←v7600 ) + 1);
SOURCE(7584, 12)
      (* (( (ptr) res←v7600)+1) ) = 0;
      }
   else {
SOURCE(7603, 25)
      (* (( (ptr) res←v7600)+1) ) = ((* (( (ptr) res←v7600)+1) ) + 1);
      };
   }

extern void XR←DIntNegI(res←v7792, a←v7820)
   word res←v7792;
   word a←v7820;
   {
   /* DIntNeg: */ 
SOURCE(7745, 100)
SOURCE(7797, 33)
   if ( ( ((* (( (ptr) a←v7820)+1) ) == 0) ? ( (int)(*  (ptr) a←v7820 ) ==  (int)2147483648) : 0 ) ) {
SOURCE(7820, 10)
      (void) Overflow←P120();
      };
SOURCE(7832, 13)
   (void) Neg64←P1680(res←v7792, a←v7820);
   }

extern void XR←DIntAddI(res←v7880, a←v7908, b←v7936)
   word res←v7880;
   word a←v7908;
   word b←v7936;
   {
   word over←v10484;
   word h←v10512;
   /* DIntAdd: */ 
SOURCE(7851, 320)
SOURCE(7906, 60)
   over←v10484 =  ( (( (word) -1 - (* (( (ptr) a←v7908)+1) )) < (* (( (ptr) b←v7936)+1) )) ? 1 : 0 ) ;
SOURCE(7968, 34)
   h←v10512 = (((*  (ptr) a←v7908 ) + (*  (ptr) b←v7936 )) + over←v10484);
SOURCE(8004, 124)
   if ( (  ( ( (int)h←v10512 <  (int)0) ? ( (int)(*  (ptr) a←v7908 ) >=  (int)0) : 0 )  ? ( (int)(*  (ptr) b←v7936 ) >=  (int)0) : 0 )  ||  (  ( ( (int)h←v10512 >=  (int)0) ? ( (int)(*  (ptr) a←v7908 ) <  (int)0) : 0 )  ? ( (int)(*  (ptr) b←v7936 ) <  (int)0) : 0 ) ) {
SOURCE(8118, 10)
      (void) Overflow←P120();
      };
SOURCE(8131, 26)
   (* (( (ptr) res←v7880)+1) ) = ((* (( (ptr) a←v7908)+1) ) + (* (( (ptr) b←v7936)+1) ));
SOURCE(8159, 12)
   (*  (ptr) res←v7880 ) = h←v10512;
   }

extern void XR←DIntSubI(res←v7996, a←v8024, b←v8052)
   word res←v7996;
   word a←v8024;
   word b←v8052;
   {
   word over←v10556;
   word h←v10584;
   /* DIntSub: */ 
SOURCE(8177, 305)
SOURCE(8232, 45)
   over←v10556 =  ( ((* (( (ptr) a←v8024)+1) ) < (* (( (ptr) b←v8052)+1) )) ? 1 : 0 ) ;
SOURCE(8279, 34)
   h←v10584 = (((*  (ptr) a←v8024 ) - (*  (ptr) b←v8052 )) - over←v10556);
SOURCE(8315, 124)
   if ( (  ( ( (int)(*  (ptr) a←v8024 ) <  (int)0) ? ( (int)h←v10584 >=  (int)0) : 0 )  ? ( (int)(*  (ptr) b←v8052 ) >=  (int)0) : 0 )  ||  (  ( ( (int)(*  (ptr) a←v8024 ) >=  (int)0) ? ( (int)h←v10584 <  (int)0) : 0 )  ? ( (int)(*  (ptr) b←v8052 ) <  (int)0) : 0 ) ) {
SOURCE(8429, 10)
      (void) Overflow←P120();
      };
SOURCE(8442, 26)
   (* (( (ptr) res←v7996)+1) ) = ((* (( (ptr) a←v8024)+1) ) - (* (( (ptr) b←v8052)+1) ));
SOURCE(8470, 12)
   (*  (ptr) res←v7996 ) = h←v10584;
   }

extern void XR←DIntMulI(res←v8112, a←v8140, b←v8168)
   word res←v8112;
   word a←v8140;
   word b←v8168;
   {
   W2 x←v10628;
   W2 y←v10656;
   word invert←v10684 = 0;
   /* DIntMul: */ 
SOURCE(8488, 323)
SOURCE(8580, 66)
   if (( (int)(*  (ptr) a←v8140 ) >=  (int)0)) {
SOURCE(8599, 13)
      x←v10628 = (*  (W2Pt) a←v8140 );
      }
   else {
SOURCE(8613, 12)
      (void) Neg64←P1680((word) &x←v10628, a←v8140);
SOURCE(8627, 19)
      invert←v10684 =  (unsigned) (0 == invert←v10684);
      };
SOURCE(8649, 66)
   if (( (int)(*  (ptr) b←v8168 ) >=  (int)0)) {
SOURCE(8668, 13)
      y←v10656 = (*  (W2Pt) b←v8168 );
      }
   else {
SOURCE(8682, 12)
      (void) Neg64←P1680((word) &y←v10656, b←v8168);
SOURCE(8696, 19)
      invert←v10684 =  (unsigned) (0 == invert←v10684);
      };
SOURCE(8718, 19)
   {
      W2 D26;
      XR←DCardMulI(&D26, &x←v10628, &y←v10656);
      x←v10628 = D26;
      };
SOURCE(8739, 27)
   if (( (int)x←v10628.f0 <  (int)0)) {
SOURCE(8756, 10)
      (void) Overflow←P120();
      };
SOURCE(8768, 43)
   if ((0 != invert←v10684)) {
SOURCE(8783, 20)
      (void) Neg64←P1680(res←v8112, (word) &x←v10628);
      }
   else {
SOURCE(8803, 8)
      (*  (W2Pt) res←v8112 ) = x←v10628;
      };
   }

extern void XR←DIntDivI(res←v8228, a←v8256, b←v8284)
   word res←v8228;
   word a←v8256;
   word b←v8284;
   {
   W2 x←v10728;
   W2 y←v10756;
   word invert←v10784 = 0;
   /* DIntDiv: */ 
SOURCE(8817, 325)
SOURCE(8909, 66)
   if (( (int)(*  (ptr) a←v8256 ) >=  (int)0)) {
SOURCE(8928, 13)
      x←v10728 = (*  (W2Pt) a←v8256 );
      }
   else {
SOURCE(8942, 12)
      (void) Neg64←P1680((word) &x←v10728, a←v8256);
SOURCE(8956, 19)
      invert←v10784 =  (unsigned) (0 == invert←v10784);
      };
SOURCE(8978, 66)
   if (( (int)(*  (ptr) b←v8284 ) >=  (int)0)) {
SOURCE(8997, 13)
      y←v10756 = (*  (W2Pt) b←v8284 );
      }
   else {
SOURCE(9011, 12)
      (void) Neg64←P1680((word) &y←v10756, b←v8284);
SOURCE(9025, 19)
      invert←v10784 =  (unsigned) (0 == invert←v10784);
      };
SOURCE(9047, 21)
   {
      W2 D27;
      XR←DCardDivI(&D27, &x←v10728, &y←v10756);
      x←v10728 = D27;
      };
SOURCE(9070, 27)
   if (( (int)x←v10728.f0 <  (int)0)) {
SOURCE(9087, 10)
      (void) Overflow←P120();
      };
SOURCE(9099, 43)
   if ((0 != invert←v10784)) {
SOURCE(9114, 20)
      (void) Neg64←P1680(res←v8228, (word) &x←v10728);
      }
   else {
SOURCE(9134, 8)
      (*  (W2Pt) res←v8228 ) = x←v10728;
      };
   }

extern void XR←DIntModI(res←v8344, a←v8372, b←v8400)
   word res←v8344;
   word a←v8372;
   word b←v8400;
   {
   /* DIntMod: */ 
SOURCE(9148, 472)
SOURCE(9203, 417)
   if (( (int)(*  (ptr) b←v8400 ) >=  (int)0)) {
SOURCE(9224, 174)
      if (( (int)(*  (ptr) a←v8372 ) >=  (int)0)) {
SOURCE(9244, 26)
         {
            W2 D28;
            XR←DCardModI(&D28, a←v8372, b←v8400);
            (*  (W2Pt) res←v8344 ) = D28;
            };
         }
      else {
SOURCE(9277, 121)
         {
            W2 m←v10828;
SOURCE(9291, 12)
            (void) Neg64←P1680((word) &m←v10828, a←v8372);
SOURCE(9305, 23)
            {
               W2 D29;
               XR←DCardModI(&D29, &m←v10828, b←v8400);
               m←v10828 = D29;
               };
SOURCE(9330, 68)
            if ( ( (m←v10828.f0 == 0) ? (m←v10828.f1 == 0) : 0 ) ) {
SOURCE(9360, 14)
               (*  (W2Pt) res←v8344 ) = m←v10828;
               }
            else {
SOURCE(9374, 24)
               {
                  W2 D30;
                  XR←DCardSubI(&D30, b←v8400, &m←v10828);
                  (*  (W2Pt) res←v8344 ) = D30;
                  };
               };
            };
         };
      }
   else {
SOURCE(9407, 215)
      {
         W2 bb←v10872;
         W2 m←v10900;
SOURCE(9426, 13)
         (void) Neg64←P1680((word) &bb←v10872, b←v8400);
SOURCE(9441, 179)
         if (( (int)(*  (ptr) a←v8372 ) >=  (int)0)) {
SOURCE(9461, 24)
            {
               W2 D31;
               XR←DCardModI(&D31, a←v8372, &bb←v10872);
               m←v10900 = D31;
               };
SOURCE(9487, 69)
            if ( ( (m←v10900.f0 == 0) ? (m←v10900.f1 == 0) : 0 ) ) {
SOURCE(9517, 14)
               (*  (W2Pt) res←v8344 ) = m←v10900;
               }
            else {
SOURCE(9531, 25)
               {
                  W2 D32;
                  XR←DCardSubI(&D32, &m←v10900, &bb←v10872);
                  (*  (W2Pt) res←v8344 ) = D32;
                  };
               };
            }
         else {
SOURCE(9565, 12)
            (void) Neg64←P1680((word) &m←v10900, a←v8372);
SOURCE(9579, 24)
            {
               W2 D33;
               XR←DCardModI(&D33, &m←v10900, &bb←v10872);
               m←v10900 = D33;
               };
SOURCE(9605, 15)
            (void) Neg64←P1680(res←v8344, (word) &m←v10900);
            };
         };
      };
   }

extern void XR←DIntPwrI(res←v8460, a←v8488, b←v8516)
   word res←v8460;
   word a←v8488;
   word b←v8516;
   {
   W2 x←v10944;
   /* DIntPwr: */ 
SOURCE(9628, 301)
SOURCE(9696, 27)
   if (( (int)(*  (ptr) b←v8516 ) <  (int)0)) {
SOURCE(9713, 10)
      (void) Overflow←P120();
      };
SOURCE(9725, 190)
   if (( (int)(*  (ptr) a←v8488 ) >=  (int)0)) {
SOURCE(9746, 22)
      {
         W2 D34;
         XR←DCardPwrI(&D34, a←v8488, b←v8516);
         x←v10944 = D34;
         };
SOURCE(9771, 28)
      if (( (int)x←v10944.f0 <  (int)0)) {
SOURCE(9788, 11)
         (void) Overflow←P120();
         };
      }
   else {
SOURCE(9808, 12)
      (void) Neg64←P1680((word) &x←v10944, a←v8488);
SOURCE(9823, 22)
      {
         W2 D35;
         XR←DCardPwrI(&D35, &x←v10944, b←v8516);
         x←v10944 = D35;
         };
SOURCE(9848, 27)
      if (( (int)x←v10944.f0 <  (int)0)) {
SOURCE(9865, 10)
         (void) Overflow←P120();
         };
SOURCE(9877, 38)
      if ((((* (( (ptr) b←v8516)+1) ) & 1) != 0)) {
SOURCE(9902, 13)
         (void) Neg64←P1680((word) &x←v10944, (word) &x←v10944);
         };
      };
SOURCE(9921, 8)
   (*  (W2Pt) res←v8460 ) = x←v10944;
   }

extern word XR←DIntGtI(a←v8576, b←v8604)
   word a←v8576;
   word b←v8604;
   {
   word var←c8648;
   /* DIntGt: */ 
SOURCE(9935, 216)
   if (( (int)(*  (ptr) a←v8576 ) >  (int)(*  (ptr) b←v8604 ))) {
SOURCE(10033, 13)
      return(1);
      }
   else {
      if (( (int)(*  (ptr) a←v8576 ) <  (int)(*  (ptr) b←v8604 ))) {
SOURCE(10065, 14)
         return(0);
         }
      else {
         if (( (int)(*  (ptr) a←v8576 ) <  (int)0)) {
SOURCE(10093, 22)
            return( (unsigned) ((* (( (ptr) a←v8576)+1) ) < (* (( (ptr) b←v8604)+1) )));
            }
         else {
SOURCE(10128, 23)
            return( (unsigned) ((* (( (ptr) a←v8576)+1) ) > (* (( (ptr) b←v8604)+1) )));
            };
         };
      };
   }

extern word XR←DIntGeI(a←v8708, b←v8736)
   word a←v8708;
   word b←v8736;
   {
   word var←c8780;
   /* DIntGe: */ 
SOURCE(10155, 218)
   if (( (int)(*  (ptr) a←v8708 ) >  (int)(*  (ptr) b←v8736 ))) {
SOURCE(10253, 13)
      return(1);
      }
   else {
      if (( (int)(*  (ptr) a←v8708 ) <  (int)(*  (ptr) b←v8736 ))) {
SOURCE(10285, 14)
         return(0);
         }
      else {
         if (( (int)(*  (ptr) a←v8708 ) <  (int)0)) {
SOURCE(10313, 23)
            return( (unsigned) ((* (( (ptr) a←v8708)+1) ) <= (* (( (ptr) b←v8736)+1) )));
            }
         else {
SOURCE(10349, 24)
            return( (unsigned) ((* (( (ptr) a←v8708)+1) ) >= (* (( (ptr) b←v8736)+1) )));
            };
         };
      };
   }

extern void XR←DIntAbsI(res←v8840, a←v8868)
   word res←v8840;
   word a←v8868;
   {
   /* DIntAbs: */ 
SOURCE(10377, 127)
SOURCE(10429, 75)
   if (( (int)(*  (ptr) a←v8868 ) >=  (int)0)) {
SOURCE(10448, 15)
      (*  (W2Pt) res←v8840 ) = (*  (W2Pt) a←v8868 );
      }
   else {
SOURCE(10463, 41)
      (void) Neg64←P1680(res←v8840, a←v8868);
      };
   }

extern void XR←DIntMinI(res←v8928, a←v8956, b←v8984)
   word res←v8928;
   word a←v8956;
   word b←v8984;
   {
   /* DIntMin: */ 
SOURCE(10508, 101)
SOURCE(10563, 46)
   if ((0 != (word) XR←DIntGtI(a←v8956, b←v8984))) {
SOURCE(10584, 15)
      (*  (W2Pt) res←v8928 ) = (*  (W2Pt) b←v8984 );
      }
   else {
SOURCE(10599, 10)
      (*  (W2Pt) res←v8928 ) = (*  (W2Pt) a←v8956 );
      };
   }

extern void XR←DIntMaxI(res←v9044, a←v9072, b←v9100)
   word res←v9044;
   word a←v9072;
   word b←v9100;
   {
   /* DIntMax: */ 
SOURCE(10613, 101)
SOURCE(10668, 46)
   if ((0 != (word) XR←DIntGtI(a←v9072, b←v9100))) {
SOURCE(10689, 15)
      (*  (W2Pt) res←v9044 ) = (*  (W2Pt) a←v9072 );
      }
   else {
SOURCE(10704, 10)
      (*  (W2Pt) res←v9044 ) = (*  (W2Pt) b←v9100 );
      };
   }

extern void XR←DFloatDCardI(res←v9160, a←v9188)
   word res←v9160;
   word a←v9188;
   {
   register ptr gf←c14316 =  (ptr) &globalframe;
   /* DFloatDCard: */ 
SOURCE(10719, 159)
SOURCE(10775, 103)
   {
      W2 var←c13900;
      {
         W2 var←c13932;
         W2 var←c0213;
         W2 var←c0232;
         W2 var←c0214;
         {
            word pd36;
            pd36 = (* (( (ptr) (* (( (ptr) gf←c14316)+95)/* var←c13964 */  ))+8) );
            (void) ( *( (fPt) ((*  (ptr) pd36 ))))((word) &var←c13932, (*  (ptr) a←v9188 ), pd36);
            };
         {
            word pd37;
            pd37 = (* (( (ptr) (* (( (ptr) gf←c14316)+95)/* var←c13964 */  ))+12) );
            (void) ( *( (fPt) ((*  (ptr) pd37 ))))((word) &var←c0213, var←c13932, 32, pd37);
            };
         var←c0232 = var←c0213;
         {
            word pd38;
            pd38 = (* (( (ptr) (* (( (ptr) gf←c14316)+95)/* var←c13964 */  ))+8) );
            (void) ( *( (fPt) ((*  (ptr) pd38 ))))((word) &var←c0214, (* (( (ptr) a←v9188)+1) ), pd38);
            };
         XR←DRealAddI(&var←c13900, &var←c0232, &var←c0214);
         };
      (*  (W2Pt) res←v9160 ) = var←c13900;
      };
   }

extern void XR←DFloatDIntI(res←v9248, a←v9276)
   word res←v9248;
   word a←v9276;
   {
   /* DFloatDInt: */ 
SOURCE(10882, 170)
SOURCE(10947, 105)
   if (( (int)(*  (ptr) a←v9276 ) >=  (int)0)) {
SOURCE(10965, 21)
      {
         W2 D39;
         XR←DFloatDCardI(&D39, (a←v9276));
         (*  (W2Pt) res←v9248 ) = D39;
         };
      }
   else {
SOURCE(10986, 66)
      {
         W2 aa←v10988;
SOURCE(11001, 13)
         (void) Neg64←P1680((word) &aa←v10988, a←v9276);
SOURCE(11016, 15)
         {
            W2 D40;
            XR←DFloatDCardI(&D40, (&aa←v10988));
            aa←v10988 = D40;
            };
SOURCE(11034, 18)
         XR←DRealNegI(&(* (W2Pt) (res←v9248)), &aa←v10988);
         };
      };
   }

extern word XR←FloatDCardI(dcard←v9336)
   word dcard←v9336;
   {
   register ptr gf←c14348 =  (ptr) &globalframe;
   word var←c9380;
   /* FloatDCard: */ 
SOURCE(11059, 174)
SOURCE(11128, 105)
   {
      word var←c0234;
      {
         word var←c14028;
         word var←c0233;
         {
            word pd41;
            pd41 = (* (( (ptr) (* (( (ptr) gf←c14348)+96)/* var←c14060 */  ))+7) );
            var←c14028 = (word) ( *( (fPt) ((*  (ptr) pd41 ))))((*  (ptr) (dcard←v9336) ), pd41);
            };
         {
            word pd42;
            pd42 = (* (( (ptr) (* (( (ptr) gf←c14348)+96)/* var←c14060 */  ))+10) );
            var←c0233 = (word) ( *( (fPt) ((*  (ptr) pd42 ))))(var←c14028, 32, pd42);
            };
         {
            word x43;
            word pd44;
            word x45;
            pd44 = (* (( (ptr) (* (( (ptr) gf←c14348)+96)/* var←c14060 */  ))+7) );
            *(float*)&var←c0234 = (
               x43 = var←c0233,  *(float*)&x43
               ) + (
               x45 = (word) ( *( (fPt) ((*  (ptr) pd44 ))))((* ((( (ptr) dcard←v9336)+1)) ), pd44),  *(float*)&x45
               );
            };
         };
      return(var←c0234);
      };
   }

extern word XR←FloatDIntI(dint←v9440)
   word dint←v9440;
   {
   word r←v9484;
   /* FloatDInt: */ 
SOURCE(11237, 162)
SOURCE(11307, 92)
   if (( (int)(*  (ptr) dint←v9440 ) >=  (int)0)) {
SOURCE(11328, 18)
      r←v9484 = XR←FloatDCardI(dint←v9440);
      }
   else {
SOURCE(11346, 53)
      {
         W2 aa←v11032;
SOURCE(11361, 16)
         (void) Neg64←P1680((word) &aa←v11032, dint←v9440);
SOURCE(11379, 10)
         r←v9484 = XR←FloatDCardI(&aa←v11032);
SOURCE(11392, 7)
         {
            word x46;
            *(float*)&r←v9484 =  - (
               x46 = r←v9484,  *(float*)&x46
               );
            };
         };
      };
SOURCE(11237, 162)
   return(r←v9484);
   }

/* file: DSupportImpl, module: DSupportImpl, compiled at: May 6, 1993 5:03:04 pm PDT */ 
extern void XR←install←DSupportImpl() {
   NoName←Q3204();
   }
extern void XR←run←DSupportImpl() { XR←Start(&globalframe); }