/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: July 21, 1992 2:26:28 pm PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: FinalizeImpl, module: FinalizeImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [3676287681,1793344293] FinalizeImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q780();
static void FinalizeImpl←P0();
static word IsHandle←P60();
static word NarrowHandle←P120();
static word NewFQ←P180();
static word FQEmpty←P240();
static word FQNextNoAbort←P300();
static word FQNext←P360();
static word EnableFinalization←P420();
static word DisableFinalization←P480();
static word ReenableFinalization←P540();
static word GetFinalizationState←P600();
static word HandleToObject←P660();
static word GetClientData←P720();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\333\037\262\301\300\152\344\103\045\100\164\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\034\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\333\037\262\301\300\152\344\103\045\100\150\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\250\013\333\033\300\120\151\334\170\100\150\000\000"};
static struct {unsigned f; char r[32];} string5 = {1966112, "\211\022\021\106\151\156\141\154\151\172\141\142\154\145\117\142\152\145\143\164\300\250\013\333\033\300\120\151\334\170\000"};
static struct {unsigned f; char r[36];} string6 = {2162724, "\211\025\024\106\151\156\141\154\151\172\141\164\151\157\156\121\165\145\165\145\122\145\160\300\250\013\333\033\300\120\151\334\170\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\333\037\262\301\300\152\344\103\045\100\200\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\004\003\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[2]; 
   } globalframe = {
   {0}, (word) GetClientData←P720, 0, (word) HandleToObject←P660, 
   0, (word) GetFinalizationState←P600, 0, (word) ReenableFinalization←P540, 
   0, (word) DisableFinalization←P480, 0, (word) EnableFinalization←P420, 
   0, (word) FQNext←P360, 0, (word) FQNextNoAbort←P300, 
   0, (word) FQEmpty←P240, 0, (word) NewFQ←P180, 
   0, (word) NarrowHandle←P120, 0, (word) IsHandle←P60, 
   0, (word) FinalizeImpl←P0, {0}
   };

static void NoName←Q780()
   {
   register ptr gf←c046 =  (ptr) &globalframe;
   word var←c6644;
   (* (( (ptr) gf←c046)+4) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (void) XR←DeclareGlobalFrame((word) "FinalizeImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string3)), (word) (( (bPt) gf←c046)+120)
      /* var←c6292 */ );
   var←c6644 = (word) XR←ExportInterface((word) "Finalize", (word) XR←GetTypeIndexS((word) (&string4)), 14);
   (* (( (ptr) gf←c046)+32)/* var←c6612 */  ) = var←c6644;
   (void) XR←ExportType((word) "FinalizableObject", (word) XR←GetTypeIndexS((word) (&string5)), (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2)
      );
   (void) XR←ExportType((word) "FinalizationQueueRep", (word) XR←GetTypeIndexS((word) (&string6)), (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8)
      );
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+112)/* var←c6260 */ , 67371521);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+104)/* var←c6228 */ , 67371777);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+64)/* var←c6068 */ , 67896323);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+56)/* var←c6036 */ , 67372289);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+48)/* var←c6004 */ , 67634690);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+40)/* var←c5972 */ , 67372801);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+32)/* var←c5940 */ , 67373057);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+24)/* var←c5908 */ , 67373313);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+96)/* var←c6196 */ , 67111424);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+72)/* var←c6100 */ , 67373825);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+80)/* var←c6132 */ , 67374081);
   (void) XR←ExportProcS(var←c6644, (word) (( (bPt) gf←c046)+88)/* var←c6164 */ , 67374337);
   }

static void FinalizeImpl←P0(formal←c018, formal←c017)
   word formal←c018;
   word formal←c017;
   {
   /* FinalizeImpl: */ 
   }

static word IsHandle←P60(x←v3260)
   word x←v3260;
   {
   register ptr gf←c6676 =  (ptr) &globalframe;
   word var←c3316;
   /* IsHandle: */ 
SOURCE(531, 93)
SOURCE(581, 43)
   {
      word tc9;
      if ((x←v3260 == 0)) {
         tc9 =  (word) 1;
         }
      else {
         tc9 =  (word) ((* (( (ptr) gf←c6676)+4) ) == XR←GetReferentType(x←v3260));
         };
      return(tc9);
      };
   }

static word NarrowHandle←P120(x←v3376)
   word x←v3376;
   {
   register ptr gf←c6708 =  (ptr) &globalframe;
   word var←c3432;
   /* NarrowHandle: */ 
SOURCE(628, 99)
SOURCE(684, 43)
   return(XR←Narrow(x←v3376, (* (( (ptr) gf←c6708)+4) )));
   }

static word NewFQ←P180()
   {
   word var←c3492;
   /* NewFQ: */ 
SOURCE(731, 151)
SOURCE(863, 19)
   return((word) XR←NewFQ());
   }

static word FQEmpty←P240(fq←v3552)
   word fq←v3552;
   {
   word var←c3596;
   /* FQEmpty: */ 
SOURCE(888, 182)
SOURCE(1046, 24)
   return((word) XR←FQEmpty(fq←v3552));
   }

static word FQNextNoAbort←P300(fq←v3760)
   word fq←v3760;
   {
   word handle←v3804;
   /* FQNextNoAbort: */ 
SOURCE(1194, 109)
SOURCE(1194, 109)
   handle←v3804 = 0;
SOURCE(1273, 30)
   return((word) XR←FQNextNoAbort(fq←v3760));
   }

static word FQNext←P360(fq←v3864)
   word fq←v3864;
   {
   word handle←v3908;
   /* FQNext: */ 
SOURCE(1309, 142)
SOURCE(1309, 142)
   handle←v3908 = 0;
SOURCE(1387, 28)
   handle←v3908 = (word) XR←FQNextNoAbort(fq←v3864);
SOURCE(1417, 34)
   if ((handle←v3908 == 0)) {
SOURCE(1438, 13)
      (void) XR←RaiseError(XR←Aborted, 0);
      };
SOURCE(1309, 142)
   return(handle←v3908);
   }

static word EnableFinalization←P420(object←v3968, fq←v3996, clientData←v4024)
   word object←v3968;
   word fq←v3996;
   word clientData←v4024;
   {
   register ptr gf←c6740 =  (ptr) &globalframe;
   word handle←v4092;
   /* EnableFinalization: */ 
SOURCE(1456, 357)
SOURCE(1456, 357)
   handle←v4092 = 0;
SOURCE(1709, 62)
   {
      word var←c6452;
      var←c6452 = XR←NewObject(20, (* (( (ptr) gf←c6740)+4) ));
      (* (( (ptr) var←c6452)+2) ) = fq←v3996;
      (* (( (ptr) var←c6452)+4) ) = clientData←v4024;
      handle←v4092 = var←c6452;
      };
SOURCE(1773, 40)
   (void) XR←EnableFinalization(object←v3968, fq←v3996, handle←v4092);
SOURCE(1456, 357)
   return(handle←v4092);
   }

static word DisableFinalization←P480(handle←v4152)
   word handle←v4152;
   {
   word oldState←v4196;
   /* DisableFinalization: */ 
SOURCE(1819, 267)
SOURCE(2047, 39)
   return((word) XR←DisableFinalization(handle←v4152));
   }

static word ReenableFinalization←P540(handle←v4256, fq←v4284)
   word handle←v4256;
   word fq←v4284;
   {
   word oldState←v4328;
   /* ReenableFinalization: */ 
SOURCE(2092, 321)
SOURCE(2369, 44)
   return((word) XR←ReenableFinalization(handle←v4256, fq←v4284));
   }

static word GetFinalizationState←P600(handle←v4388)
   word handle←v4388;
   {
   word state←v4432;
   /* GetFinalizationState: */ 
SOURCE(2419, 265)
SOURCE(2644, 40)
   return((word) XR←GetFinalizationState(handle←v4388));
   }

static word HandleToObject←P660(handle←v4492)
   word handle←v4492;
   {
   word object←v4536;
   /* HandleToObject: */ 
SOURCE(2690, 215)
SOURCE(2690, 215)
   object←v4536 = 0;
SOURCE(2871, 34)
   return((word) XR←HandleToObject(handle←v4492));
   }

static word GetClientData←P720(handle←v4608)
   word handle←v4608;
   {
   word var←c4652;
   /* GetClientData: */ 
SOURCE(2911, 89)
SOURCE(2973, 27)
   return((* (( (ptr) handle←v4608)+4) ));
   }

/* file: FinalizeImpl, module: FinalizeImpl, compiled at: July 21, 1992 2:26:28 pm PDT */ 
extern void XR←install←FinalizeImpl() {
   NoName←Q780();
   }
extern void XR←run←FinalizeImpl() { XR←Start(&globalframe); }