/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: September 24, 1992 9:38:50 pm PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: RegisterRefLiteralImpl, module: RegisterRefLiteralImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [460647230,78684980] RegisterRefLiteralImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef word (*fPt)();
#define SOURCE(p, l) /* source p, l */
static void NoName←Q576();
static void RegisterRefLiteralImpl←P0();
extern void XR←RegisterRefLiteralCreator();
static word Uninit←P120();
static void LookupType←P180();
extern word XR←GetRefLiteral();
static word CreateTEXT←P300();
static word CreateROPE←P360();
static word CreateATOM←P420();
static struct {unsigned f; char r[16];} string1 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string3 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\105\014\000"};
static struct {unsigned f; char r[44];} string4 = {2818092, "\216\260\007\006\154\145\156\147\164\150\210\241\000\200\177\377\005\004\164\145\170\164\254\206\012\011\155\141\170\114\145\156\147\164\150\210\241\000\200\177\377\243\261"};
static struct {unsigned f; char r[4];} string5 = {131076, "\216\251\000"};
static struct {unsigned f; char r[44];} string6 = {2752556, "\260\006\005\146\151\162\163\164\257\300\033\164\353\076\300\004\260\243\064\100\214\005\004\162\145\163\164\214\257\300\033\164\353\076\300\004\260\243\064\100\214\261\000"};
static struct {unsigned f; char r[4];} string7 = {131074, "\003\002\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\033\164\353\076\300\004\260\243\064\100\164\000\000"};
static struct {unsigned f; char r[4];} string9 = {131074, "\003\010\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\374\377\221\350\300\202\044\047\115\100\150\000\000"};
static struct {unsigned f; char r[12];} string11 = {720908, "\257\300\036\351\345\237\244\150\210\100\150"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\340\371\234\150\300\366\276\257\130\100\150\000\000"};
static struct {
   word f0[16]; 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[4]; 
   } globalframe = {
   {0}, (word) CreateATOM←P420, 0, (word) CreateROPE←P360, 
   0, (word) CreateTEXT←P300, 0, (word) XR←GetRefLiteral, 
   0, (word) LookupType←P180, 0, (word) Uninit←P120, 
   0, (word) XR←RegisterRefLiteralCreator, 0, (word) RegisterRefLiteralImpl←P0, 
   {0}
   };

static void NoName←Q576()
   {
   register ptr gf←c048 =  (ptr) &globalframe;
   word var←c6384;
   (* (( (ptr) gf←c048)+10) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c048)+11) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string2);
   (* (( (ptr) gf←c048)+12) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string2);
   (* (( (ptr) gf←c048)+13) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string2);
   (* (( (ptr) gf←c048)+14) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (void) XR←DeclareGlobalFrame((word) "RegisterRefLiteralImpl", &globalframe, (word) XR←GetTypeIndex((word) &string8, 0, (word) &string9)
      , (word) (( (bPt) gf←c048)+120)/* var←c6000 */ );
   var←c6384 = (word) XR←ImportInterface((word) "AtomPrivate", (word) XR←GetTypeIndexS((word) (&string10)), 2);
   (* (( (ptr) gf←c048)+33)/* var←c6352 */  ) = var←c6384;
   (void) XR←ImportProcS(var←c6384, 67371265);
   var←c6384 = (word) XR←ImportInterface((word) "ConvertUnsafe", (word) XR←GetTypeIndexS((word) (&string11)), 8);
   (* (( (ptr) gf←c048)+32)/* var←c6256 */  ) = var←c6384;
   (void) XR←ImportProcS(var←c6384, 67372289);
   (void) XR←ImportProcS(var←c6384, 67372033);
   var←c6384 = (word) XR←ExportInterface((word) "RegisterRefLiteral", (word) XR←GetTypeIndexS((word) (&string12)), 3);
   (* (( (ptr) gf←c048)+34)/* var←c6416 */  ) = var←c6384;
   (void) XR←ExportVar(var←c6384, 0, (word) (( (bPt) gf←c048)+60)/* var←c5744 */ );
   (void) XR←ExportProcS(var←c6384, (word) (( (bPt) gf←c048)+112)/* var←c5968 */ , 524546);
   (void) XR←ExportProcS(var←c6384, (word) (( (bPt) gf←c048)+88)/* var←c5872 */ , 67633666);
   }

static void RegisterRefLiteralImpl←P0(formal←c018, formal←c017)
   word formal←c018;
   word formal←c017;
   {
   register ptr gf←c6448 =  (ptr) &globalframe;
   /* RegisterRefLiteralImpl: */ 
SOURCE(79, 1988)
SOURCE(1903, 41)
   (void) XR←RegisterRefLiteralCreator((word) (( (bPt) gf←c6448)+72)/* var←c5808 */ , (* (( (ptr) gf←c6448)+10) ));
SOURCE(1946, 41)
   (void) XR←RegisterRefLiteralCreator((word) (( (bPt) gf←c6448)+72)/* var←c5808 */ , (* (( (ptr) gf←c6448)+11) ));
SOURCE(1989, 40)
   (void) XR←RegisterRefLiteralCreator((word) (( (bPt) gf←c6448)+80)/* var←c5840 */ , (* (( (ptr) gf←c6448)+12) ));
SOURCE(2031, 36)
   (void) XR←RegisterRefLiteralCreator((word) (( (bPt) gf←c6448)+64)/* var←c5776 */ , (* (( (ptr) gf←c6448)+13) ));
   }

extern void XR←RegisterRefLiteralCreator(p←v4268, type←v4296)
   word p←v4268;
   word type←v4296;
   {
   register ptr gf←c6480 =  (ptr) &globalframe;
   /* RegisterType: */ 
SOURCE(631, 236)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c6480)+16)/* LOCK←v2580 */ ));
SOURCE(708, 109)
   {
      register word l←v3632;
      l←v3632 = (* (( (ptr) gf←c6480)+8)/* tab←v2608 */  );
      lab←L100003: ;
      if ((l←v3632 != 0)) {
         }
      else {
         goto lab←L100000;
         };
SOURCE(764, 53)
      if (((*  (ptr) l←v3632 ) == type←v4296)) {
SOURCE(793, 16)
         (* (( (ptr) l←v3632)+1) ) = XR←CheckProc(p←v4268);
SOURCE(811, 6)
         (void) (XR←MonitorExit((word) (( (bPt) gf←c6480)+16)/* LOCK←v2580 */ ));
         return;
         };
      l←v3632 = (* (( (ptr) l←v3632)+2) );
      goto lab←L100003;
      lab←L100000: ;
      };
SOURCE(829, 38)
   {
      word var←c6032;
      var←c6032 = XR←NewObject(12, (* (( (ptr) gf←c6480)+14) ));
      (*  (ptr) var←c6032 ) = type←v4296;
      (* (( (ptr) var←c6032)+1) ) = XR←CheckProc(p←v4268);
      (* (( (ptr) var←c6032)+2) ) = (* (( (ptr) gf←c6480)+8)/* tab←v2608 */  );
      (* (( (ptr) gf←c6480)+8)/* tab←v2608 */  ) = var←c6032;
      };
SOURCE(631, 236)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c6480)+16)/* LOCK←v2580 */ ));
   return;
   }

static word Uninit←P120(string←v4356)
   word string←v4356;
   {
   word var←c4400;
   /* Uninit: */ 
SOURCE(873, 44)
SOURCE(919, 5)
   (void) XR←RaiseUnnamedError();
   }

static void LookupType←P180(formal←c030, type←v3372)
   word formal←c030;
   word type←v3372;
   {
   register ptr gf←c6512 =  (ptr) &globalframe;
   word found←v3416;
   word p←v3444;
   /* LookupType: */ 
SOURCE(930, 259)
SOURCE(930, 259)
   p←v3444 = 0;
SOURCE(1045, 111)
   {
      register word l←v3760;
      l←v3760 = (* (( (ptr) gf←c6512)+8)/* tab←v2608 */  );
      lab←L100008: ;
      if ((l←v3760 != 0)) {
         }
      else {
         goto lab←L100005;
         };
SOURCE(1101, 55)
      if (((*  (ptr) l←v3760 ) == type←v3372)) {
SOURCE(1130, 26)
         p←v3444 = XR←CheckProc(* (( (ptr) l←v3760)+1) );
         found←v3416 = 1;
         goto lab←L100004;
         };
      l←v3760 = (* (( (ptr) l←v3760)+2) );
      goto lab←L100008;
      lab←L100005: ;
      };
SOURCE(1168, 21)
   found←v3416 = 0;
   p←v3444 = (word) (( (bPt) gf←c6512)+104)/* var←c5936 */ ;
   /* removed tail goto */ 
   lab←L100004: ;
   (*  (ptr) formal←c030 ) = found←v3416;
   (* (( (ptr) formal←c030)+1) ) = p←v3444;
   return;
   }

extern word XR←GetRefLiteral(type←v4460, string←v4488)
   word type←v4460;
   word string←v4488;
   {
   register ptr gf←c6544 =  (ptr) &globalframe;
   word var←c6160;
   W2 var←c6192;
   word var←c4532;
   word found←v3888;
   word p←v3916 = 0;
   /* Create: */ 
SOURCE(1278, 220)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c6544)+16)/* LOCK←v2580 */ ));
SOURCE(1386, 29)
   {
      W2 var←c6096;
      (void) LookupType←P180((word) &var←c6096, type←v4460);
      p←v3916 = XR←CheckProc(var←c6096.f1);
      found←v3888 = var←c6096.f0;
      };
SOURCE(1417, 81)
   if ((0 != found←v3888)) {
SOURCE(1431, 22)
      {
         word var←c6128;
         var←c6128 = (word) ( *( (fPt) ((*  (ptr) p←v3916 ))))(string←v4488, p←v3916);
         (void) (XR←MonitorExit((word) (( (bPt) gf←c6544)+16)/* LOCK←v2580 */ ));
         return(var←c6128);
         };
      }
   else {
SOURCE(1455, 43)
      var←c6160 = (word) (( (bPt) gf←c6544)+60)/* var←c5744 */ ;
      (*  (ptr) (word) &var←c6192 ) = type←v4460;
      (* (( (ptr) (word) &var←c6192) + 1) ) = string←v4488;
      (void) (XR←MonitorExit((word) (( (bPt) gf←c6544)+16)/* LOCK←v2580 */ ));
      goto lab←L100009;
      };
   /* c2c skipped dead code */ 
   lab←L100009: ;
SOURCE(1455, 43)
   {
      W2 var←c041;
      var←c041 = var←c6192;
      (void) XR←RaiseError(var←c6160, (word) &var←c041);
      };
   }

static word CreateTEXT←P300(string←v4592)
   word string←v4592;
   {
   register ptr gf←c6576 =  (ptr) &globalframe;
   word var←c4636;
   /* CreateTEXT: */ 
SOURCE(1507, 129)
SOURCE(1565, 71)
   {
      word pd13;
      if ((string←v4592 == 0)) {
         return(0);
         }
      else {
         pd13 = (* (( (ptr) (* (( (ptr) gf←c6576)+32)/* var←c6256 */  ))+8) );
         return((word) ( *( (fPt) ((*  (ptr) pd13 ))))(string←v4592, pd13));
         };
      };
   }

static word CreateROPE←P360(string←v4696)
   word string←v4696;
   {
   register ptr gf←c6608 =  (ptr) &globalframe;
   word var←c4740;
   /* CreateROPE: */ 
SOURCE(1640, 126)
SOURCE(1698, 68)
   {
      word pd14;
      if ((string←v4696 == 0)) {
         return(0);
         }
      else {
         pd14 = (* (( (ptr) (* (( (ptr) gf←c6608)+32)/* var←c6256 */  ))+9) );
         return((word) ( *( (fPt) ((*  (ptr) pd14 ))))(string←v4696, pd14));
         };
      };
   }

static word CreateATOM←P420(string←v4800)
   word string←v4800;
   {
   register ptr gf←c6640 =  (ptr) &globalframe;
   word var←c4844;
   /* CreateATOM: */ 
SOURCE(1770, 112)
SOURCE(1828, 54)
   {
      word pd15;
      pd15 = (* (( (ptr) (* (( (ptr) gf←c6640)+33)/* var←c6352 */  ))+5) );
      return((word) ( *( (fPt) ((*  (ptr) pd15 ))))(string←v4800, pd15));
      };
   }

/* file: RegisterRefLiteralImpl, module: RegisterRefLiteralImpl, compiled at: September 24, 1992 9:38:50 pm PDT */ 
extern void XR←install←RegisterRefLiteralImpl() {
   NoName←Q576();
   }
extern void XR←run←RegisterRefLiteralImpl() { XR←Start(&globalframe); }