/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 21, 1992 9:06:01 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: FloatingPointImpl, module: FloatingPointImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [3788192068,898228856] FloatingPointImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q420();
static void FloatingPointImpl←P0();
static word SetState←P60();
static void FloatingSignalHandler←P120();
static word SupportedExceptionErrors←P180();
static word SupportedStickyFlags←P240();
static word GetStickyFlags←P300();
static word SetStickyFlags←P360();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\341\313\071\104\300\065\211\342\170\100\150\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\150\261\123\070\300\276\161\220\062\100\150\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\161\243\131\157\300\276\230\231\046\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[2]; 
   } globalframe = {
   {0}, (word) SetStickyFlags←P360, 0, (word) GetStickyFlags←P300, 
   0, (word) SupportedStickyFlags←P240, 0, (word) SupportedExceptionErrors←P180, 
   0, (word) FloatingSignalHandler←P120, 0, (word) SetState←P60, 
   0, (word) FloatingPointImpl←P0, {0}
   };

static void NoName←Q420()
   {
   register ptr gf←c024 =  (ptr) &globalframe;
   word var←c4124;
   (void) XR←DeclareGlobalFrame((word) "FloatingPointImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (
         ( (bPt) gf←c024)+72)/* var←c4060 */ );
   var←c4124 = (word) XR←ExportInterface((word) "FloatingPointCommon", (word) XR←GetTypeIndexS((word) (&string2)), 5);
   (* (( (ptr) gf←c024)+20)/* var←c4092 */  ) = var←c4124;
   (void) XR←ExportVar(var←c4124, 0, (word) (( (bPt) gf←c024)+20)/* var←c3836 */ );
   (void) XR←ExportProcS(var←c4124, (word) (( (bPt) gf←c024)+48)/* var←c3964 */ , 67109120);
   (void) XR←ExportProcS(var←c4124, (word) (( (bPt) gf←c024)+40)/* var←c3932 */ , 67109376);
   (void) XR←ExportProcS(var←c4124, (word) (( (bPt) gf←c024)+32)/* var←c3900 */ , 67109632);
   (void) XR←ExportProcS(var←c4124, (word) (( (bPt) gf←c024)+24)/* var←c3868 */ , 67372033);
   var←c4124 = (word) XR←ExportInterface((word) "FloatingPointPrivate", (word) XR←GetTypeIndexS((word) (&string3)), 2);
   (* (( (ptr) gf←c024)+20)/* var←c4092 */  ) = var←c4124;
   (void) XR←ExportVar(var←c4124, 0, (word) (( (bPt) gf←c024)+16)/* currentState←v2436 */ );
   (void) XR←ExportProcS(var←c4124, (word) (( (bPt) gf←c024)+64)/* var←c4028 */ , 67371265);
   }

static void FloatingPointImpl←P0(formal←c013, formal←c012)
   word formal←c013;
   word formal←c012;
   {
   /* FloatingPointImpl: */ 
   }

static word SetState←P60(new←v2740)
   word new←v2740;
   {
   register ptr gf←c4156 =  (ptr) &globalframe;
   word old←v2784;
   /* SetState: */ 
SOURCE(240, 250)
SOURCE(472, 18)
   old←v2784 = (* (( (ptr) gf←c4156)+4)/* currentState←v2436 */  );
SOURCE(240, 250)
   return(old←v2784);
   }

static void FloatingSignalHandler←P120(code←v3664)
   word code←v3664;
   {
   register ptr gf←c4188 =  (ptr) &globalframe;
   /* FloatingSignalHandler: */ 
SOURCE(766, 73)
SOURCE(822, 17)
   {
      word var←c017;
      var←c017 = code←v3664;
      (void) XR←RaiseError((word) (( (bPt) gf←c4188)+20)/* var←c3836 */ , (word) &var←c017);
      };
   }

static word SupportedExceptionErrors←P180()
   {
   register ptr gf←c4220 =  (ptr) &globalframe;
   word var←c2964;
   word flags←v3364 = 0;
   /* SupportedExceptionErrors: */ 
SOURCE(890, 241)
SOURCE(995, 117)
   if (((* (( (ptr) gf←c4220)+4)/* currentState←v2436 */  ) != 0)) {
SOURCE(1028, 30)
      flags←v3364 = (flags←v3364 & 4294967263) | (((1)) << 5);
SOURCE(1060, 22)
      flags←v3364 = (flags←v3364 & 4294967279) | (((1)) << 4);
SOURCE(1084, 28)
      flags←v3364 = (flags←v3364 & 4294967287) | (((1)) << 3);
      };
SOURCE(1117, 14)
   return(flags←v3364);
   }

static word SupportedStickyFlags←P240()
   {
   word var←c3024;
   /* SupportedStickyFlags: */ 
SOURCE(1136, 84)
SOURCE(1199, 21)
   return(0);
   }

static word GetStickyFlags←P300()
   {
   word var←c3084;
   /* GetStickyFlags: */ 
SOURCE(1226, 78)
SOURCE(1283, 21)
   return(0);
   }

static word SetStickyFlags←P360(new←v3144)
   word new←v3144;
   {
   word old←v3188;
   /* SetStickyFlags: */ 
SOURCE(1310, 120)
SOURCE(1310, 120)
   old←v3188 = 0;
SOURCE(1409, 21)
   return(0);
   }

/* file: FloatingPointImpl, module: FloatingPointImpl, compiled at: February 21, 1992 9:06:01 pm PST */ 
extern void XR←install←FloatingPointImpl() {
   NoName←Q420();
   }
extern void XR←run←FloatingPointImpl() { XR←Start(&globalframe); }