/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: July 22, 1992 10:02:06 am PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: UnsafeStorageImpl, module: UnsafeStorageImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [428995076,2903964516] UnsafeStorageImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
#define SOURCE(p, l) /* source p, l */
static void NoName←Q420();
static void UnsafeStorageImpl←P0();
static word GetSystemUZone←P60();
static word GetUZone←P120();
static word New←P180();
static void Free←P240();
static word NewUObject←P300();
static word GetTransientPageUZone←P360();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\031\221\362\004\300\255\026\373\144\100\150\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\311\270\056\075\300\372\060\276\203\100\150\000\000"};
static struct {
   word f0[7]; 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[2]; 
   } globalframe = {
   {0}, (word) GetTransientPageUZone←P360, 0, (word) NewUObject←P300, 
   0, (word) Free←P240, 0, (word) New←P180, 
   0, (word) GetUZone←P120, 0, (word) GetSystemUZone←P60, 
   0, (word) UnsafeStorageImpl←P0, {0}
   };

static void NoName←Q420()
   {
   register ptr gf←c030 =  (ptr) &globalframe;
   word var←c4584;
   (void) XR←DeclareGlobalFrame((word) "UnsafeStorageImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (
         ( (bPt) gf←c030)+76)/* var←c4488 */ );
   var←c4584 = (word) XR←ExportInterface((word) "UnsafeStorage", (word) XR←GetTypeIndexS((word) (&string2)), 4);
   (* (( (ptr) gf←c030)+21)/* var←c4552 */  ) = var←c4584;
   (void) XR←ExportProcS(var←c4584, (word) (( (bPt) gf←c030)+36)/* var←c4328 */ , 67633154);
   (void) XR←ExportProcS(var←c4584, (word) (( (bPt) gf←c030)+68)/* var←c4456 */ , 67109120);
   (void) XR←ExportProcS(var←c4584, (word) (( (bPt) gf←c030)+28)/* var←c4296 */ , 67109376);
   (void) XR←ExportVar(var←c4584, 3, (word) (( (bPt) gf←c030)+24));
   }

static void UnsafeStorageImpl←P0(formal←c013, formal←c012)
   word formal←c013;
   word formal←c012;
   {
   register ptr gf←c4616 =  (ptr) &globalframe;
   /* UnsafeStorageImpl: */ 
SOURCE(27, 1301)
SOURCE(350, 49)
   (* (( (ptr) gf←c4616)+4)/* systemUZone←v2520 */  ) = (word) GetUZone←P120((word) (( (bPt) gf←c4616)+52)/* var←c4392 */ , (word) (
         ( (bPt) gf←c4616)+44)/* var←c4360 */ );
   }

static word GetSystemUZone←P60()
   {
   register ptr gf←c4648 =  (ptr) &globalframe;
   word var←c3188;
   /* GetSystemUZone: */ 
SOURCE(402, 76)
SOURCE(459, 19)
   return((* (( (ptr) gf←c4648)+4)/* systemUZone←v2520 */  ));
   }

static word GetUZone←P120(new←v3256, free←v3284)
   word new←v3256;
   word free←v3284;
   {
   word var←c3328;
   word uZone←v3672;
   /* GetUZone: */ 
SOURCE(482, 173)
SOURCE(565, 43)
   uZone←v3672 = (word) ( *( (fPt) ((*  (ptr) new←v3256 ))))(0, 8, new←v3256);
SOURCE(610, 20)
   (*  (ptr) uZone←v3672 ) = new←v3256;
   (* (( (ptr) uZone←v3672)+1) ) = free←v3284;
SOURCE(632, 23)
   return(uZone←v3672);
   }

static word New←P180(self←v4060, units←v4088)
   word self←v4060;
   word units←v4088;
   {
   word var←c4132;
   word ptr←v3744;
   /* New: */ 
SOURCE(760, 178)
SOURCE(861, 39)
   ptr←v3744 = (word) GC←malloc((units←v4088 + 8));
SOURCE(902, 36)
   return((ptr←v3744 + 8));
   }

static void Free←P240(self←v4192, object←v4220)
   word self←v4192;
   word object←v4220;
   {
   word ptr←v3920;
   /* Free: */ 
SOURCE(944, 159)
SOURCE(1026, 56)
   ptr←v3920 = (object←v4220 - 8);
SOURCE(1084, 19)
   (void) GC←free(ptr←v3920);
   }

static word NewUObject←P300(size←v3396, zone←v3424)
   word size←v3396;
   word zone←v3424;
   {
   word var←c3476;
   /* NewUObject: */ 
SOURCE(1111, 139)
SOURCE(1209, 41)
   return((word) New←P180(zone←v3424, size←v3396));
   }

static word GetTransientPageUZone←P360()
   {
   register ptr gf←c4680 =  (ptr) &globalframe;
   word var←c3548;
   /* GetTransientPageUZone: */ 
SOURCE(1256, 72)
SOURCE(1319, 9)
   (void) XR←RaiseError((word) (( (bPt) gf←c4680)+20), 0);
   }

/* file: UnsafeStorageImpl, module: UnsafeStorageImpl, compiled at: July 22, 1992 10:02:05 am PDT */ 
extern void XR←install←UnsafeStorageImpl() {
   NoName←Q420();
   }
extern void XR←run←UnsafeStorageImpl() { XR←Start(&globalframe); }