/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 28, 1993 10:27:54 am PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: SFImpl, module: SFImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [3322475147,2659602298] SFImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W2 *W2Pt;
#define SOURCE(p, l) /* source p, l */
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define INEG(x)  ( (word) ( - ((int) (word) (x)) ) )
#define MIN(cast, x, y)  ( ( cast x) < ( cast y) ? (x) : (y) )
#define MAX(cast, x, y)  ( ( cast x) > ( cast y) ? (x) : (y) )
static void NoName←Q2736();
static void SFImpl←P0();
static void NonNegative←P60();
static void Neg←P120();
static void Add←P180();
static void Sub←P240();
static void Min←P300();
static void Min3←P360();
static void Max←P420();
static void Max3←P480();
static word Eq←P540();
static word Nonempty←P600();
static word Empty←P660();
static void Intersect←P720();
static word Disjoint←P780();
static word SizeF←P840();
static word SizeS←P900();
static void Size←P960();
static word Inside←P1020();
static void Displace←P1080();
static word In←P1140();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\306\010\362\213\300\236\206\117\172\100\164\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\243\162\130\311\300\344\000\142\023\100\150\000\000"};
static struct {
   word f0[4]; word f4; 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; 
   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[2]; 
   } globalframe = {
   {0}, (word) In←P1140, 0, (word) Displace←P1080, 
   0, (word) Inside←P1020, 0, (word) Size←P960, 
   0, (word) SizeS←P900, 0, (word) SizeF←P840, 
   0, (word) Disjoint←P780, 0, (word) Intersect←P720, 
   0, (word) Empty←P660, 0, (word) Nonempty←P600, 
   0, (word) Eq←P540, 0, (word) Max3←P480, 
   0, (word) Max←P420, 0, (word) Min3←P360, 
   0, (word) Min←P300, 0, (word) Sub←P240, 
   0, (word) Add←P180, 0, (word) Neg←P120, 
   0, (word) NonNegative←P60, 0, (word) SFImpl←P0, 
   {0}
   };

static void NoName←Q2736()
   {
   register ptr gf←c092 =  (ptr) &globalframe;
   word var←c13744;
   (void) XR←DeclareGlobalFrame((word) "SFImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c092)+168)
      /* var←c13200 */ );
   var←c13744 = (word) XR←ExportInterface((word) "SF", (word) XR←GetTypeIndexS((word) (&string2)), 19);
   (* (( (ptr) gf←c092)+44)/* var←c13712 */  ) = var←c13744;
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+160)/* var←c13168 */ , 134742017, (word) "NonNegative");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+152)/* var←c13136 */ , 134742273, (word) "Neg");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+144)/* var←c13104 */ , 135266818, (word) "Add");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+136)/* var←c13072 */ , 135267074, (word) "Sub");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+128)/* var←c13040 */ , 135267330, (word) "Min");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+120)/* var←c13008 */ , 135791875, (word) "Min3");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+112)/* var←c12976 */ , 135267842, (word) "Max");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+104)/* var←c12944 */ , 135792387, (word) "Max3");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+96)/* var←c12912 */ , 68159490, (word) "Eq");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+88)/* var←c12880 */ , 68159745, (word) "Nonempty");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+80)/* var←c12848 */ , 68160001, (word) "Empty");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+72)/* var←c12816 */ , 270535426, (word) "Intersect");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+64)/* var←c12784 */ , 69209090, (word) "Disjoint");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+56)/* var←c12752 */ , 68160769, (word) "SizeF");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+48)/* var←c12720 */ , 68161025, (word) "SizeS");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+40)/* var←c12688 */ , 135270145, (word) "Size");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+24)/* var←c12624 */ , 270012418, (word) "Displace");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+32)/* var←c12656 */ , 69210370, (word) "Inside");
   (void) XR←ExportProcS(var←c13744, (word) (( (bPt) gf←c092)+16)/* var←c12592 */ , 68686338, (word) "In");
   }

static void SFImpl←P0(formal←c024, formal←c023)
   word formal←c024;
   word formal←c023;
   {
   /* SFImpl: */ 
   }

static void NonNegative←P60(formal←c027, v←v3136)
   word formal←c027;
   W2 v←v3136;
   {
   word var←c093;
   word var←c094;
   /* NonNegative: */ 
SOURCE(151, 85)
   /* Return var split */ 
SOURCE(203, 33)
   {
      word idx3;
      var←c093 = (
         idx3 = (word) v←v3136.f0,
         SGNCK(idx3)
         );
      };
   {
      word idx4;
      var←c094 = (
         idx4 = (word) v←v3136.f1,
         SGNCK(idx4)
         );
      };
   /* removed tail goto */ 
   (* (( (ptr) formal←c027)+1) ) = var←c094;
   (*  (ptr) formal←c027 ) = var←c093;
   return;
   }

static void Neg←P120(formal←c030, v←v3240)
   word formal←c030;
   W2 v←v3240;
   {
   word var←c095;
   word var←c096;
   /* Neg: */ 
SOURCE(240, 69)
   /* Return var split */ 
SOURCE(284, 25)
   var←c095 = INEG(v←v3240.f0);
   var←c096 = INEG(v←v3240.f1);
   /* removed tail goto */ 
   (* (( (ptr) formal←c030)+1) ) = var←c096;
   (*  (ptr) formal←c030 ) = var←c095;
   return;
   }

static void Add←P180(formal←c034, v1←v3344, v2←v3372)
   word formal←c034;
   W2 v1←v3344;
   W2 v2←v3372;
   {
   word var←c097;
   word var←c098;
   /* Add: */ 
SOURCE(313, 79)
   /* Return var split */ 
SOURCE(362, 30)
   var←c097 = (v1←v3344.f0 + v2←v3372.f0);
   var←c098 = (v1←v3344.f1 + v2←v3372.f1);
   /* removed tail goto */ 
   (* (( (ptr) formal←c034)+1) ) = var←c098;
   (*  (ptr) formal←c034 ) = var←c097;
   return;
   }

static void Sub←P240(formal←c038, v1←v3476, v2←v3504)
   word formal←c038;
   W2 v1←v3476;
   W2 v2←v3504;
   {
   word var←c099;
   word var←c0100;
   /* Sub: */ 
SOURCE(396, 79)
   /* Return var split */ 
SOURCE(445, 30)
   var←c099 = (v1←v3476.f0 - v2←v3504.f0);
   var←c0100 = (v1←v3476.f1 - v2←v3504.f1);
   /* removed tail goto */ 
   (* (( (ptr) formal←c038)+1) ) = var←c0100;
   (*  (ptr) formal←c038 ) = var←c099;
   return;
   }

static void Min←P300(formal←c042, v1←v3608, v2←v3636)
   word formal←c042;
   W2 v1←v3608;
   W2 v2←v3636;
   {
   word var←c0101;
   word var←c0102;
   /* Min: */ 
SOURCE(479, 79)
   /* Return var split */ 
SOURCE(528, 30)
   if (( (int)v1←v3608.f0 <=  (int)v2←v3636.f0)) {
      var←c0101 = v1←v3608.f0;
      }
   else {
      var←c0101 = v2←v3636.f0;
      };
   if (( (int)v1←v3608.f1 <=  (int)v2←v3636.f1)) {
      var←c0102 = v1←v3608.f1;
      }
   else {
      var←c0102 = v2←v3636.f1;
      };
   /* removed tail goto */ 
   (* (( (ptr) formal←c042)+1) ) = var←c0102;
   (*  (ptr) formal←c042 ) = var←c0101;
   return;
   }

static void Min3←P360(formal←c047, v1←v3740, v2←v3768, v3←v3796)
   word formal←c047;
   W2 v1←v3740;
   W2 v2←v3768;
   W2 v3←v3796;
   {
   word var←c0103;
   word var←c0104;
   /* Min3: */ 
SOURCE(562, 89)
   /* Return var split */ 
SOURCE(616, 35)
   {
      word x5;
      word x6;
      word x7;
      word x8;
      var←c0103 = (x5 = v1←v3740.f0,
         x6 = v2←v3768.f0,
         x7 = MIN((int)(word), x5, x6),
         x8 = v3←v3796.f0,
         MIN((int)(word), x7, x8));
      };
   {
      word x9;
      word x10;
      word x11;
      word x12;
      var←c0104 = (x9 = v1←v3740.f1,
         x10 = v2←v3768.f1,
         x11 = MIN((int)(word), x9, x10),
         x12 = v3←v3796.f1,
         MIN((int)(word), x11, x12));
      };
   /* removed tail goto */ 
   (* (( (ptr) formal←c047)+1) ) = var←c0104;
   (*  (ptr) formal←c047 ) = var←c0103;
   return;
   }

static void Max←P420(formal←c051, v1←v3900, v2←v3928)
   word formal←c051;
   W2 v1←v3900;
   W2 v2←v3928;
   {
   word var←c0105;
   word var←c0106;
   /* Max: */ 
SOURCE(655, 79)
   /* Return var split */ 
SOURCE(704, 30)
   if (( (int)v2←v3928.f0 >=  (int)v1←v3900.f0)) {
      var←c0105 = v2←v3928.f0;
      }
   else {
      var←c0105 = v1←v3900.f0;
      };
   if (( (int)v2←v3928.f1 >=  (int)v1←v3900.f1)) {
      var←c0106 = v2←v3928.f1;
      }
   else {
      var←c0106 = v1←v3900.f1;
      };
   /* removed tail goto */ 
   (* (( (ptr) formal←c051)+1) ) = var←c0106;
   (*  (ptr) formal←c051 ) = var←c0105;
   return;
   }

static void Max3←P480(formal←c056, v1←v4032, v2←v4060, v3←v4088)
   word formal←c056;
   W2 v1←v4032;
   W2 v2←v4060;
   W2 v3←v4088;
   {
   word var←c0107;
   word var←c0108;
   /* Max3: */ 
SOURCE(738, 89)
   /* Return var split */ 
SOURCE(792, 35)
   {
      word x13;
      word x14;
      word x15;
      word x16;
      var←c0107 = (x13 = v1←v4032.f0,
         x14 = v2←v4060.f0,
         x15 = MAX((int)(word), x13, x14),
         x16 = v3←v4088.f0,
         MAX((int)(word), x15, x16));
      };
   {
      word x17;
      word x18;
      word x19;
      word x20;
      var←c0108 = (x17 = v1←v4032.f1,
         x18 = v2←v4060.f1,
         x19 = MAX((int)(word), x17, x18),
         x20 = v3←v4088.f1,
         MAX((int)(word), x19, x20));
      };
   /* removed tail goto */ 
   (* (( (ptr) formal←c056)+1) ) = var←c0108;
   (*  (ptr) formal←c056 ) = var←c0107;
   return;
   }

static word Eq←P540(v1←v4192, v2←v4220)
   W2 v1←v4192;
   W2 v2←v4220;
   {
   word var←c4264;
   /* Eq: */ 
SOURCE(831, 78)
SOURCE(880, 29)
   return( (unsigned) XR←EqualWords(&v1←v4192, &v2←v4220, 2));
   }

static word Nonempty←P600(box←v4324)
   W4 box←v4324;
   {
   word var←c4368;
   /* Nonempty: */ 
SOURCE(912, 84)
SOURCE(964, 32)
   {
      word tc21;
      if (( (int)box←v4324.f0 <  (int)box←v4324.f2)) {
         tc21 =  (word)  (unsigned) ( (int)box←v4324.f1 <  (int)box←v4324.f3);
         }
      else {
         tc21 =  (word)  (unsigned) 0;
         };
      return(tc21);
      };
   }

static word Empty←P660(box←v4428)
   W4 box←v4428;
   {
   word var←c4472;
   /* Empty: */ 
SOURCE(1000, 78)
SOURCE(1049, 29)
   {
      word tc22;
      if (( (int)box←v4428.f0 >=  (int)box←v4428.f2)) {
         tc22 =  (word)  (unsigned) 1;
         }
      else {
         tc22 =  (word)  (unsigned) ( (int)box←v4428.f1 >=  (int)box←v4428.f3);
         };
      return(tc22);
      };
   }

static void Intersect←P720(formal←c071, box1←v4532, box2←v4560)
   word formal←c071;
   W4 box1←v4532;
   W4 box2←v4560;
   {
   word var←c0109;
   word var←c0110;
   word var←c0111;
   word var←c0112;
   /* Intersect: */ 
SOURCE(1082, 99)
   /* Return var split */ 
SOURCE(1141, 40)
   {
      W2 v1←v10048;
      W2 v2←v10080;
      v1←v10048 = (*  (W2Pt) &box2←v4560 );
      v2←v10080 = (*  (W2Pt) &box1←v4532 );
      if (( (int)v2←v10080.f0 >=  (int)v1←v10048.f0)) {
         var←c0109 = v2←v10080.f0;
         }
      else {
         var←c0109 = v1←v10048.f0;
         };
      if (( (int)v2←v10080.f1 >=  (int)v1←v10048.f1)) {
         var←c0110 = v2←v10080.f1;
         }
      else {
         var←c0110 = v1←v10048.f1;
         };
      };
   {
      W2 v1←v10340;
      W2 v2←v10372;
      v1←v10340 = (*  (W2Pt) (( (ptr) &box1←v4532)+2) );
      v2←v10372 = (*  (W2Pt) (( (ptr) &box2←v4560)+2) );
      if (( (int)v1←v10340.f0 <=  (int)v2←v10372.f0)) {
         var←c0111 = v1←v10340.f0;
         }
      else {
         var←c0111 = v2←v10372.f0;
         };
      if (( (int)v1←v10340.f1 <=  (int)v2←v10372.f1)) {
         var←c0112 = v1←v10340.f1;
         }
      else {
         var←c0112 = v2←v10372.f1;
         };
      };
   /* removed tail goto */ 
   (* (( (ptr) formal←c071)+3) ) = var←c0112;
   (* (( (ptr) formal←c071)+2) ) = var←c0111;
   (* (( (ptr) formal←c071)+1) ) = var←c0110;
   (*  (ptr) formal←c071 ) = var←c0109;
   return;
   }

static word Disjoint←P780(box1←v4664, box2←v4692)
   W4 box1←v4664;
   W4 box2←v4692;
   {
   word var←c4736;
   /* Disjoint: */ 
SOURCE(1185, 98)
SOURCE(1244, 39)
   {
      word tc23;
      if ((( (int)box1←v4664.f2 <=  (int)box2←v4692.f0) || ( (int)box2←v4692.f2 <=  (int)box1←v4664.f0)) || ( (int)box1←v4664.f3 <=  (int)box2←v4692.f1)) {
         tc23 =  (word)  (unsigned) 1;
         }
      else {
         tc23 =  (word)  (unsigned) ( (int)box2←v4692.f3 <=  (int)box1←v4664.f1);
         };
      return(tc23);
      };
   }

static word SizeF←P840(box←v4796)
   W4 box←v4796;
   {
   word var←c4840;
   /* SizeF: */ 
SOURCE(1287, 82)
SOURCE(1340, 29)
   if (( (int)box←v4796.f1 <  (int)box←v4796.f3)) {
      return((box←v4796.f3 - box←v4796.f1));
      }
   else {
      return(0);
      };
   }

static word SizeS←P900(box←v4900)
   W4 box←v4900;
   {
   word var←c4944;
   /* SizeS: */ 
SOURCE(1373, 82)
SOURCE(1426, 29)
   if (( (int)box←v4900.f0 <  (int)box←v4900.f2)) {
      return((box←v4900.f2 - box←v4900.f0));
      }
   else {
      return(0);
      };
   }

static void Size←P960(formal←c081, box←v5004)
   word formal←c081;
   W4 box←v5004;
   {
   word var←c0113;
   word var←c0114;
   /* Size: */ 
SOURCE(1459, 75)
   /* Return var split */ 
SOURCE(1506, 28)
   {
      word x24;
      var←c0113 = (x24 = (box←v5004.f2 - box←v5004.f0),
         MAX((int)(word), x24, 0));
      };
   {
      word x25;
      var←c0114 = (x25 = (box←v5004.f3 - box←v5004.f1),
         MAX((int)(word), x25, 0));
      };
   /* removed tail goto */ 
   (* (( (ptr) formal←c081)+1) ) = var←c0114;
   (*  (ptr) formal←c081 ) = var←c0113;
   return;
   }

static word Inside←P1020(inner←v5108, outer←v5136)
   W4 inner←v5108;
   W4 outer←v5136;
   {
   word var←c5180;
   /* Inside: */ 
SOURCE(1538, 98)
SOURCE(1597, 39)
   {
      word tc26;
      if ( (  ( ( (int)inner←v5108.f0 >=  (int)outer←v5136.f0) ? ( (int)inner←v5108.f1 >=  (int)outer←v5136.f1) : 0 )  ? ( (int)inner←v5108.f2 <=  (int)outer←v5136.f2) : 0 ) ) {
         tc26 =  (word)  (unsigned) ( (int)inner←v5108.f3 <=  (int)outer←v5136.f3);
         }
      else {
         tc26 =  (word)  (unsigned) 0;
         };
      return(tc26);
      };
   }

static void Displace←P1080(formal←c088, box←v5240, t←v5268)
   word formal←c088;
   W4 box←v5240;
   W2 t←v5268;
   {
   word var←c0115;
   word var←c0116;
   word var←c0117;
   word var←c0118;
   /* Displace: */ 
SOURCE(1640, 94)
   /* Return var split */ 
SOURCE(1699, 35)
   var←c0115 = (box←v5240.f0 + t←v5268.f0);
   var←c0116 = (box←v5240.f1 + t←v5268.f1);
   var←c0117 = (box←v5240.f2 + t←v5268.f0);
   var←c0118 = (box←v5240.f3 + t←v5268.f1);
   /* removed tail goto */ 
   (* (( (ptr) formal←c088)+3) ) = var←c0118;
   (* (( (ptr) formal←c088)+2) ) = var←c0117;
   (* (( (ptr) formal←c088)+1) ) = var←c0116;
   (*  (ptr) formal←c088 ) = var←c0115;
   return;
   }

static word In←P1140(vec←v5372, box←v5400)
   W2 vec←v5372;
   W4 box←v5400;
   {
   word var←c5444;
   /* In: */ 
SOURCE(1738, 87)
SOURCE(1794, 31)
   {
      word tc27;
      if ( ( ( (int)vec←v5372.f0 >=  (int)box←v5400.f0) ? ( (int)vec←v5372.f0 <  (int)box←v5400.f2) : 0 ) ) {
         if (( (int)vec←v5372.f1 >=  (int)box←v5400.f1)) {
            tc27 =  (word)  (unsigned) ( (int)vec←v5372.f1 <  (int)box←v5400.f3);
            }
         else {
            tc27 =  (word)  (unsigned) 0;
            };
         }
      else {
         tc27 =  (word)  (unsigned) 0;
         };
      return(tc27);
      };
   }

/* file: SFImpl, module: SFImpl, compiled at: July 28, 1993 10:27:54 am PDT */ 
extern void XR←install←SFImpl() {
   NoName←Q2736();
   }
extern void XR←run←SFImpl() { XR←Start(&globalframe); }