/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 6, 1993 9:24:13 am PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: DecomposerRegistryImpl, module: DecomposerRegistryImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2383660275,3905436150] DecomposerRegistryImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static void NoName←Q1308();
static void DecomposerRegistryImpl←P0();
static void Register←P60();
static void UnRegister←P120();
static word Lookup←P180();
static word Enumerate←P240();
static word MakeBoolVal←P300();
static word MakeCardVal←P360();
static word MakeIntVal←P420();
static word MakeTimeVal←P480();
static word MakeTextVal←P540();
static word MakeSeqVal1←P600();
static word MakeSeqVal2←P660();
static word MakeSeqValList←P720();
static struct {unsigned f; char r[48];} string1 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\125\320\113\245\300\331\322\350\010\102\014\005\004\162\145\163\164\214\216\257\300\125\320\113\245\300\331\322\350\010\102\014\261\000\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\125\320\113\245\300\331\322\350\010\100\274\000\000"};
static struct {unsigned f; char r[16];} string4 = {786444, "\007\000\040\007\000\000\000\000\003\001\000\013\000\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\125\320\113\245\300\331\322\350\010\101\064\000\000"};
static struct {unsigned f; char r[12];} string6 = {524296, "\011\000\004\000\040\000\004\001\000\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\216\023\304\363\300\350\310\071\366\100\150\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\003\010\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\125\320\113\245\300\331\322\350\010\100\150\000\000"};
static struct {
   word f0[15]; 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[2]; 
   } globalframe = {
   {0}, (word) MakeSeqValList←P720, 0, (word) MakeSeqVal2←P660, 
   0, (word) MakeSeqVal1←P600, 0, (word) MakeTextVal←P540, 
   0, (word) MakeTimeVal←P480, 0, (word) MakeIntVal←P420, 
   0, (word) MakeCardVal←P360, 0, (word) MakeBoolVal←P300, 
   0, (word) Enumerate←P240, 0, (word) Lookup←P180, 
   0, (word) UnRegister←P120, 0, (word) Register←P60, 
   0, (word) DecomposerRegistryImpl←P0, {0}
   };

static void NoName←Q1308()
   {
   register ptr gf←c073 =  (ptr) &globalframe;
   word var←c7908;
   (* (( (ptr) gf←c073)+10) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c073)+11) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c073)+13) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (void) XR←DeclareGlobalFrame((word) "DecomposerRegistryImpl", &globalframe, (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8)
      , (word) (( (bPt) gf←c073)+156)/* var←c7076 */ );
   var←c7908 = (word) XR←ExportInterface((word) "DecomposerRegistry", (word) XR←GetTypeIndexS((word) (&string9)), 12);
   (* (( (ptr) gf←c073)+41)/* var←c7876 */  ) = var←c7908;
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+148)/* var←c7044 */ , 262145, (word) "Register");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+140)/* var←c7012 */ , 262401, (word) "UnRegister");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+132)/* var←c6980 */ , 67371521, (word) "Lookup");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+124)/* var←c6948 */ , 67109632, (word) "Enumerate");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+116)/* var←c6916 */ , 67372033, (word) "MakeBoolVal");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+108)/* var←c6884 */ , 67372289, (word) "MakeCardVal");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+100)/* var←c6852 */ , 67372545, (word) "MakeIntVal");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+92)/* var←c6820 */ , 67372801, (word) "MakeTimeVal");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+84)/* var←c6788 */ , 67373057, (word) "MakeTextVal");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+76)/* var←c6756 */ , 67373313, (word) "MakeSeqVal1");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+68)/* var←c6724 */ , 67635714, (word) "MakeSeqVal2");
   (void) XR←ExportProcS(var←c7908, (word) (( (bPt) gf←c073)+60)/* var←c6692 */ , 67373825, (word) "MakeSeqValList");
   }

static void DecomposerRegistryImpl←P0(formal←c020, formal←c019)
   word formal←c020;
   word formal←c019;
   {
   /* DecomposerRegistryImpl: */ 
   }

static void Register←P60(data←v3020)
   word data←v3020;
   {
   register ptr gf←c7940 =  (ptr) &globalframe;
   /* Register: */ 
SOURCE(223, 275)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c7940)+16)/* LOCK←v2464 */ ));
SOURCE(278, 220)
   if ((data←v3020 != 0)) {
SOURCE(299, 156)
      {
         register word each←v4300;
         each←v4300 = (* (( (ptr) gf←c7940)+8)/* registry←v2520 */  );
         lab←L100003: ;
         if ((each←v4300 != 0)) {
            }
         else {
            goto lab←L100000;
            };
         {
            word first←v4344;
SOURCE(364, 34)
            first←v4344 = (*  (ptr) each←v4300 );
SOURCE(400, 55)
            if (((*  (ptr) first←v4344 ) == (*  (ptr) data←v3020 ))) {
SOURCE(430, 17)
               (*  (ptr) each←v4300 ) = data←v3020;
SOURCE(449, 6)
               (void) (XR←MonitorExit((word) (( (bPt) gf←c7940)+16)/* LOCK←v2464 */ ));
               return;
               };
            };
         each←v4300 = (* (( (ptr) each←v4300)+1) );
         goto lab←L100003;
         lab←L100000: ;
         };
SOURCE(467, 31)
      {
         word var←c7108;
         var←c7108 = XR←NewObject(8, (* (( (ptr) gf←c7940)+10) ));
         (*  (ptr) var←c7108 ) = data←v3020;
         (* (( (ptr) var←c7108)+1) ) = (* (( (ptr) gf←c7940)+8)/* registry←v2520 */  );
         (* (( (ptr) gf←c7940)+8)/* registry←v2520 */  ) = var←c7108;
         };
      };
SOURCE(223, 275)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c7940)+16)/* LOCK←v2464 */ ));
   return;
   }

static void UnRegister←P120(data←v3080)
   word data←v3080;
   {
   register ptr gf←c7972 =  (ptr) &globalframe;
   /* UnRegister: */ 
SOURCE(506, 319)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c7972)+16)/* LOCK←v2464 */ ));
SOURCE(563, 262)
   if ((data←v3080 != 0)) {
SOURCE(582, 254)
      {
         word lag←v4388 = 0;
SOURCE(609, 216)
         {
            register word each←v4432;
            each←v4432 = (* (( (ptr) gf←c7972)+8)/* registry←v2520 */  );
            lab←L100007: ;
            if ((each←v4432 != 0)) {
               }
            else {
               goto lab←L100004;
               };
            {
               word first←v4476;
SOURCE(674, 34)
               first←v4476 = (*  (ptr) each←v4432 );
SOURCE(710, 100)
               if (((*  (ptr) each←v4432 ) == data←v3080)) {
SOURCE(738, 64)
                  if ((lag←v4388 == 0)) {
SOURCE(756, 26)
                     (* (( (ptr) gf←c7972)+8)/* registry←v2520 */  ) = (* (( (ptr) each←v4432)+1) );
                     }
                  else {
SOURCE(782, 20)
                     (* (( (ptr) lag←v4388)+1) ) = (* (( (ptr) each←v4432)+1) );
                     };
SOURCE(804, 6)
                  (void) (XR←MonitorExit((word) (( (bPt) gf←c7972)+16)/* LOCK←v2464 */ ));
                  return;
                  };
SOURCE(815, 10)
               lag←v4388 = each←v4432;
               };
            each←v4432 = (* (( (ptr) each←v4432)+1) );
            goto lab←L100007;
            lab←L100004: ;
            };
         };
      };
SOURCE(506, 319)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c7972)+16)/* LOCK←v2464 */ ));
   return;
   }

static word Lookup←P180(key←v3140)
   word key←v3140;
   {
   register ptr gf←c8004 =  (ptr) &globalframe;
   word var←c3184;
   /* Lookup: */ 
SOURCE(843, 229)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c8004)+16)/* LOCK←v2464 */ ));
SOURCE(910, 139)
   {
      register word each←v4520;
      each←v4520 = (* (( (ptr) gf←c8004)+8)/* registry←v2520 */  );
      lab←L100011: ;
      if ((each←v4520 != 0)) {
         }
      else {
         goto lab←L100008;
         };
      {
         word first←v4564;
SOURCE(975, 34)
         first←v4564 = (*  (ptr) each←v4520 );
SOURCE(1011, 38)
         if (((*  (ptr) first←v4564 ) == key←v3140)) {
SOURCE(1035, 14)
            (void) (XR←MonitorExit((word) (( (bPt) gf←c8004)+16)/* LOCK←v2464 */ ));
            return(first←v4564);
            };
         };
      each←v4520 = (* (( (ptr) each←v4520)+1) );
      goto lab←L100011;
      lab←L100008: ;
      };
SOURCE(1060, 12)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c8004)+16)/* LOCK←v2464 */ ));
   return(0);
   }

static word Enumerate←P240()
   {
   register ptr gf←c8036 =  (ptr) &globalframe;
   word var←c3244;
   word head←v4608 = 0;
   word tail←v4636 = 0;
   /* Enumerate: */ 
SOURCE(1077, 307)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c8036)+16)/* LOCK←v2464 */ ));
SOURCE(1195, 165)
   {
      register word each←v4680;
      each←v4680 = (* (( (ptr) gf←c8036)+8)/* registry←v2520 */  );
      lab←L100015: ;
      if ((each←v4680 != 0)) {
         }
      else {
         goto lab←L100012;
         };
      {
         word new←v4724;
SOURCE(1260, 36)
         new←v4724 = XR←NewObject(8, (* (( (ptr) gf←c8036)+10) ));
         {
            word var←c7172;
            var←c7172 = new←v4724;
            (*  (ptr) var←c7172 ) = (*  (ptr) each←v4680 );
            };
SOURCE(1298, 50)
         if ((tail←v4636 == 0)) {
SOURCE(1317, 16)
            head←v4608 = new←v4724;
            }
         else {
SOURCE(1333, 15)
            (* (( (ptr) tail←v4636)+1) ) = new←v4724;
            };
SOURCE(1350, 10)
         tail←v4636 = new←v4724;
         };
      each←v4680 = (* (( (ptr) each←v4680)+1) );
      goto lab←L100015;
      lab←L100012: ;
      };
SOURCE(1371, 13)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c8036)+16)/* LOCK←v2464 */ ));
   return(head←v4608);
   }

static word MakeBoolVal←P300(b←v3388)
   word b←v3388;
   {
   register ptr gf←c8068 =  (ptr) &globalframe;
   word var←c3432;
   /* MakeBoolVal: */ 
SOURCE(1390, 100)
SOURCE(1445, 45)
   {
      word var←c7236;
      var←c7236 = XR←NewObject(8, (* (( (ptr) gf←c8068)+11) ));
      (*  (ptr) var←c7236 ) = 2;
      (* (( (ptr) var←c7236)+1) ) = b←v3388;
      return(var←c7236);
      };
   }

static word MakeCardVal←P360(c←v3492)
   word c←v3492;
   {
   register ptr gf←c8100 =  (ptr) &globalframe;
   word var←c3536;
   /* MakeCardVal: */ 
SOURCE(1496, 104)
SOURCE(1553, 47)
   {
      word var←c7300;
      var←c7300 = XR←NewObject(8, (* (( (ptr) gf←c8100)+11) ));
      (* (( (ptr) var←c7300)+1) ) = c←v3492;
      return(var←c7300);
      };
   }

static word MakeIntVal←P420(i←v3596)
   word i←v3596;
   {
   register ptr gf←c8132 =  (ptr) &globalframe;
   word var←c3640;
   /* MakeIntVal: */ 
SOURCE(1606, 100)
SOURCE(1661, 45)
   {
      word var←c7364;
      var←c7364 = XR←NewObject(8, (* (( (ptr) gf←c8132)+11) ));
      (*  (ptr) var←c7364 ) = 1;
      (* (( (ptr) var←c7364)+1) ) = i←v3596;
      return(var←c7364);
      };
   }

static word MakeTimeVal←P480(gmt←v3700)
   word gmt←v3700;
   {
   register ptr gf←c8164 =  (ptr) &globalframe;
   word var←c3744;
   /* MakeTimeVal: */ 
SOURCE(1712, 107)
SOURCE(1778, 41)
   {
      word var←c7428;
      var←c7428 = XR←NewObject(8, (* (( (ptr) gf←c8164)+11) ));
      (*  (ptr) var←c7428 ) = 5;
      (* (( (ptr) var←c7428)+1) ) = gmt←v3700;
      return(var←c7428);
      };
   }

static word MakeTextVal←P540(rope←v3804)
   word rope←v3804;
   {
   register ptr gf←c8196 =  (ptr) &globalframe;
   word var←c3848;
   /* MakeTextVal: */ 
SOURCE(1825, 105)
SOURCE(1888, 42)
   {
      word var←c7492;
      var←c7492 = XR←NewObject(8, (* (( (ptr) gf←c8196)+11) ));
      (*  (ptr) var←c7492 ) = 4;
      (* (( (ptr) var←c7492)+1) ) = rope←v3804;
      return(var←c7492);
      };
   }

static word MakeSeqVal1←P600(val←v3908)
   word val←v3908;
   {
   register ptr gf←c8228 =  (ptr) &globalframe;
   word var←c3952;
   word seq←v4768;
   /* MakeSeqVal1: */ 
SOURCE(1936, 158)
SOURCE(1994, 35)
   seq←v4768 = XR←NewObject(8, (* (( (ptr) gf←c8228)+13) ));
   (*  (ptr) seq←v4768 ) = 1;
SOURCE(2031, 12)
   {
      word limit10;
      (* ((( (ptr) seq←v4768)+1)+(
            limit10 = (*  (ptr) seq←v4768 ),
            BCK(0, limit10)
            )) ) = val←v3908;
      };
SOURCE(2045, 49)
   {
      word var←c7588;
      var←c7588 = XR←NewObject(8, (* (( (ptr) gf←c8228)+11) ));
      (*  (ptr) var←c7588 ) = 6;
      (* (( (ptr) var←c7588)+1) ) = seq←v4768;
      return(var←c7588);
      };
   }

static word MakeSeqVal2←P660(val1←v4012, val2←v4040)
   word val1←v4012;
   word val2←v4040;
   {
   register ptr gf←c8260 =  (ptr) &globalframe;
   word var←c4084;
   word seq←v4812;
   /* MakeSeqVal2: */ 
SOURCE(2100, 181)
SOURCE(2165, 35)
   seq←v4812 = XR←NewObject(12, (* (( (ptr) gf←c8260)+13) ));
   (*  (ptr) seq←v4812 ) = 2;
SOURCE(2202, 13)
   {
      word limit11;
      (* ((( (ptr) seq←v4812)+1)+(
            limit11 = (*  (ptr) seq←v4812 ),
            BCK(0, limit11)
            )) ) = val1←v4012;
      };
SOURCE(2217, 13)
   {
      word limit12;
      (* ((( (ptr) seq←v4812)+1)+(
            limit12 = (*  (ptr) seq←v4812 ),
            BCK(1, limit12)
            )) ) = val2←v4040;
      };
SOURCE(2232, 49)
   {
      word var←c7684;
      var←c7684 = XR←NewObject(8, (* (( (ptr) gf←c8260)+11) ));
      (*  (ptr) var←c7684 ) = 6;
      (* (( (ptr) var←c7684)+1) ) = seq←v4812;
      return(var←c7684);
      };
   }

static word MakeSeqValList←P720(list←v4144)
   word list←v4144;
   {
   register ptr gf←c8292 =  (ptr) &globalframe;
   word var←c4272;
   word seq←v4856 = 0;
   word n←v4884 = 0;
   /* MakeSeqValList: */ 
SOURCE(2287, 371)
SOURCE(2390, 71)
   {
      register word each←v4928;
      each←v4928 = list←v4144;
      lab←L100019: ;
      if ((each←v4928 != 0)) {
         }
      else {
         goto lab←L100016;
         };
SOURCE(2452, 9)
      n←v4884 = (n←v4884 + 1);
      each←v4928 = (* (( (ptr) each←v4928)+1) );
      goto lab←L100019;
      lab←L100016: ;
      };
SOURCE(2472, 25)
   {
      word var←c7716;
      word var←c7748;
      word var←c7780;
      var←c7716 = BCK(n←v4884, 67108863);
      var←c7748 = ((word) var←c7716 << 2);
      var←c7780 = XR←NewObject((4 + var←c7748), (* (( (ptr) gf←c8292)+13) ));
      (*  (ptr) var←c7780 ) = var←c7716;
      seq←v4856 = var←c7780;
      };
SOURCE(2499, 5)
   n←v4884 = 0;
SOURCE(2506, 92)
   {
      register word each←v5056;
      each←v5056 = list←v4144;
      lab←L100023: ;
      if ((each←v5056 != 0)) {
         }
      else {
         goto lab←L100020;
         };
SOURCE(2568, 19)
      {
         word limit13;
         (* ((( (ptr) seq←v4856)+1)+(
               limit13 = (*  (ptr) seq←v4856 ),
               BCK(n←v4884, limit13)
               )) ) = (*  (ptr) each←v5056 );
         };
SOURCE(2589, 9)
      n←v4884 = (n←v4884 + 1);
      each←v5056 = (* (( (ptr) each←v5056)+1) );
      goto lab←L100023;
      lab←L100020: ;
      };
SOURCE(2609, 49)
   {
      word var←c7844;
      var←c7844 = XR←NewObject(8, (* (( (ptr) gf←c8292)+11) ));
      (*  (ptr) var←c7844 ) = 6;
      (* (( (ptr) var←c7844)+1) ) = seq←v4856;
      return(var←c7844);
      };
   }

/* file: DecomposerRegistryImpl, module: DecomposerRegistryImpl, compiled at: July 6, 1993 9:24:13 am PDT */ 
extern void XR←install←DecomposerRegistryImpl() {
   NoName←Q1308();
   }
extern void XR←run←DecomposerRegistryImpl() { XR←Start(&globalframe); }