/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: September 14, 1993 4:28:38 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: XlServiceImpl, module: XlServiceImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1772547236,2611638505] XlServiceImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {word f0, f1, f2, f3, f4;} W5;
#define SOURCE(p, l) /* source p, l */
#define IOP2(op, x, y)  ( (word) ((x) op (y)) )
#define MAX(cast, x, y)  ( ( cast x) > ( cast y) ? (x) : (y) )
static void NoName←Q1224();
static void XlServiceImpl←P0();
static void InitServiceStuff←P60();
static word EntryDefineService←P120();
static word NoName←Q1284();
static void ReleaseService←P180();
static word NoName←Q1344();
static word GetService←P240();
static void PutProp←P300();
static word GetProp←P360();
static void PutServiceProp←P420();
static word GetServiceProp←P480();
static word GetServicePropAndInit←P540();
static word WrapInit←P792();
static void NoName←Q1404();
static void NoName←Q1464();
static struct {unsigned f; char r[4];} string1 = {65540, "\251\000\000"};
static struct {unsigned f; char r[4];} string2 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string3 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\351\276\264\273\300\115\104\320\264\126\304\000\000"};
static struct {unsigned f; char r[60];} string5 = {3735609, "\006\023\040\001\070\001\100\100\001\100\104\001\100\110\001\100\140\001\100\144\001\100\150\001\100\154\001\100\160\001\100\164\001\100\170\001\100\174\001\100\200\001\100\224\001\100\234\001\100\240\001\100\244\001\100\250\001\000\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\104\304\000\000"};
static struct {unsigned f; char r[24];} string7 = {1376277, "\007\000\001\002\007\020\001\002\000\007\036\002\004\003\002\004\014\016\015\003\001\000\000"};
static struct {unsigned f; char r[16];} string8 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\151\246\354\244\300\233\252\160\351\100\200\000\000"};
static struct {unsigned f; char r[4];} string10 = {131074, "\004\006\000"};
static struct {unsigned f; char r[44];} string11 = {2752556, "\260\006\005\146\151\162\163\164\257\300\015\277\004\146\300\034\367\146\045\112\114\005\004\162\145\163\164\214\257\300\015\277\004\146\300\034\367\146\045\112\114\261\000"};
static struct {unsigned f; char r[28];} string12 = {1572888, "\006\002\000\007\000\040\016\000\003\001\000\000\000\000\014\014\000\014\014\014\014\000\010\001\000\000\000"};
static struct {unsigned f; char r[12];} string13 = {524300, "%g %g %g\000\000\000"};
static struct {unsigned f; char r[20];} string14 = {1179668, "hack serviceKey %g\000"};
static struct {unsigned f; char r[24];} string15 = {1376280, "←Cedar←ServiceVersion\000\000"};
static struct {unsigned f; char r[4];} string16 = {65540, " \000\000"};
static struct {unsigned f; char r[20];} string17 = {1179668, "trustedServiceProp\000"};
static struct {unsigned f; char r[4];} string18 = {65540, "x\000\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\151\246\354\244\300\233\252\160\351\100\164\000\000"};
static struct {unsigned f; char r[16];} string20 = {786444, "\006\004\040\001\044\001\050\001\100\124\004\077\000\000\000"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\015\277\004\146\300\034\367\146\045\100\164\000\000"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\256\042\060\232\300\060\151\325\207\100\150\000\000"};
static struct {unsigned f; char r[16];} string23 = {851984, "\257\300\242\215\274\036\300\123\155\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string24 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string25 = {851984, "\257\300\072\337\114\355\300\232\070\352\142\100\150\000\000"};
static struct {unsigned f; char r[12];} string26 = {720908, "\257\300kte\023\205\204\320@h"};
static unsigned string27 = 1483472896;
static struct {unsigned f; char r[16];} string28 = {851984, "\257\300\351\276\264\273\300\115\104\320\264\100\164\000\000"};
static struct {unsigned f; char r[16];} string29 = {851984, "\257\300\212\174\364\337\300\361\376\000\156\100\150\000\000"};
static struct {unsigned f; char r[24];} string30 = {1507352, "\211\013\012\123\145\162\166\151\143\145\122\145\160\300\351\276\264\273\300\115\104\320\264"};
static struct {unsigned f; char r[16];} string31 = {851984, "\257\300\234\252\236\205\300\126\010\241\274\100\150\000\000"};
static struct {unsigned f; char r[16];} string32 = {851984, "\257\300\126\372\175\303\300\214\014\321\126\100\150\000\000"};
static struct {
   word f0[28]; 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; word f41; word f42; 
   word f43; word f44; word f45; word f46; 
   word f47[11]; 
   } globalframe = {
   {0}, (word) GetServicePropAndInit←P540, 0, (word) GetServiceProp←P480, 
   0, (word) PutServiceProp←P420, 0, (word) GetProp←P360, 
   0, (word) PutProp←P300, 0, (word) GetService←P240, 
   0, (word) ReleaseService←P180, 0, (word) EntryDefineService←P120, 
   0, (word) InitServiceStuff←P60, 0, (word) XlServiceImpl←P0, 
   {0}
   };

static void NoName←Q1224()
   {
   register ptr gf←c0108 =  (ptr) &globalframe;
   word var←c20732;
   (* (( (ptr) gf←c0108)+11) ) = (word) XR←GetTypeIndexS((word) (&string1));
   (* (( (ptr) gf←c0108)+12) ) = (word) XR←GetTypeIndex((word) &string2, 0, (word) &string3);
   (* (( (ptr) gf←c0108)+13) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5);
   (* (( (ptr) gf←c0108)+15) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (* (( (ptr) gf←c0108)+16) ) = (word) XR←GetTypeIndex((word) &string8, 0, (word) &string3);
   (* (( (ptr) gf←c0108)+18) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c0108)+19) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string12);
   (*  (ptr) (( (bPt) gf←c0108)+84) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0108)+16) ), (word) &string13);
   (*  (ptr) (( (bPt) gf←c0108)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0108)+16) ), (word) &string14);
   (*  (ptr) (( (bPt) gf←c0108)+92) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0108)+16) ), (word) &string15);
   (*  (ptr) (( (bPt) gf←c0108)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0108)+16) ), (word) &string16);
   (*  (ptr) (( (bPt) gf←c0108)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0108)+12) ), (word) &string17);
   (*  (ptr) (( (bPt) gf←c0108)+104) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0108)+12) ), (word) &string18);
   (void) XR←DeclareGlobalFrame((word) "XlServiceImpl", &globalframe, (word) XR←GetTypeIndex((word) &string19, 0, (word) &string20)
      , (word) (( (bPt) gf←c0108)+184)/* var←c19388 */ );
   var←c20732 = (word) XR←ImportInterface((word) "IO", (word) XR←GetTypeIndexS((word) (&string21)), 103);
   (* (( (ptr) gf←c0108)+50)/* var←c19612 */  ) = var←c20732;
   (void) XR←ImportProcS(var←c20732, 67648770);
   (void) XR←ImportProcS(var←c20732, 67910402);
   var←c20732 = (word) XR←ImportInterface((word) "PropList", (word) XR←GetTypeIndexS((word) (&string22)), 13);
   (* (( (ptr) gf←c0108)+55)/* var←c20348 */  ) = var←c20732;
   (void) XR←ImportProcS(var←c20732, 135268612);
   (void) XR←ImportProcS(var←c20732, 67634434);
   (void) XR←ImportProcS(var←c20732, 67896835);
   (void) XR←ImportProcS(var←c20732, 67109632);
   var←c20732 = (word) XR←ImportInterface((word) "Random", (word) XR←GetTypeIndexS((word) (&string23)), 4);
   (* (( (ptr) gf←c0108)+53)/* var←c20092 */  ) = var←c20732;
   (void) XR←ImportProcS(var←c20732, 67371265);
   var←c20732 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string24)), 43);
   (* (( (ptr) gf←c0108)+54)/* var←c20156 */  ) = var←c20732;
   (void) XR←ImportProcS(var←c20732, 67633666);
   (void) XR←ImportProcS(var←c20732, 67373569);
   var←c20732 = (word) XR←ImportInterface((word) "SymTab", (word) XR←GetTypeIndexS((word) (&string25)), 13);
   (* (( (ptr) gf←c0108)+48)/* var←c19452 */  ) = var←c20732;
   (void) XR←ImportProcS(var←c20732, 67635202);
   (void) XR←ImportProcS(var←c20732, 134742786);
   (void) XR←ImportProcS(var←c20732, 67897091);
   (void) XR←ImportProcS(var←c20732, 67633410);
   var←c20732 = (word) XR←ImportInterface((word) "SystemNames", (word) XR←GetTypeIndexS((word) (&string26)), 9);
   (* (( (ptr) gf←c0108)+52)/* var←c19964 */  ) = var←c20732;
   (void) XR←ImportProcS(var←c20732, 67109120);
   var←c20732 = (word) XR←ImportInterface((word) &string27, (word) XR←GetTypeIndexS((word) (&string28)), 218);
   (* (( (ptr) gf←c0108)+51)/* var←c19644 */  ) = var←c20732;
   (void) XR←ImportProcS(var←c20732, 67639298);
   (void) XR←ImportProcS(var←c20732, 792323);
   (void) XR←ImportProcS(var←c20732, 535042);
   (void) XR←ImportProcS(var←c20732, 2371849);
   (void) XR←ImportProcS(var←c20732, 534786);
   (void) XR←ImportProcS(var←c20732, 270545672);
   (void) XR←ImportProcS(var←c20732, 67375105);
   (void) XR←ImportProcS(var←c20732, 67644930);
   var←c20732 = (word) XR←ImportInterface((word) "BasicTime", (word) XR←GetTypeIndexS((word) (&string29)), 24);
   (* (( (ptr) gf←c0108)+49)/* var←c19548 */  ) = var←c20732;
   (void) XR←ImportProcS(var←c20732, 67111424);
   var←c20732 = (word) XR←ExportInterface((word) &string27, (word) XR←GetTypeIndexS((word) (&string28)), 218);
   (* (( (ptr) gf←c0108)+56)/* var←c20764 */  ) = var←c20732;
   (void) XR←ExportType((word) "ServiceRep", (word) XR←GetTypeIndexS((word) (&string30)), (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10)
      );
   var←c20732 = (word) XR←ExportInterface((word) "XlPrivateSplit", (word) XR←GetTypeIndexS((word) (&string31)), 7);
   (* (( (ptr) gf←c0108)+57)/* var←c20796 */  ) = var←c20732;
   (void) XR←ExportProcS(var←c20732, (word) (( (bPt) gf←c0108)+176)/* var←c19356 */ , 262145, (word) "InitServiceStuff");
   (void) XR←ExportProcS(var←c20732, (word) (( (bPt) gf←c0108)+160)/* var←c19292 */ , 263169, (word) "ReleaseService");
   var←c20732 = (word) XR←ExportInterface((word) "XlService", (word) XR←GetTypeIndexS((word) (&string32)), 6);
   (* (( (ptr) gf←c0108)+57)/* var←c20796 */  ) = var←c20732;
   (void) XR←ExportProcS(var←c20732, (word) (( (bPt) gf←c0108)+152)/* var←c19260 */ , 67371009, (word) "GetService");
   (void) XR←ExportProcS(var←c20732, (word) (( (bPt) gf←c0108)+144)/* var←c19228 */ , 786691, (word) "PutProp");
   (void) XR←ExportProcS(var←c20732, (word) (( (bPt) gf←c0108)+136)/* var←c19196 */ , 67633666, (word) "GetProp");
   (void) XR←ExportProcS(var←c20732, (word) (( (bPt) gf←c0108)+128)/* var←c19164 */ , 787203, (word) "PutServiceProp");
   (void) XR←ExportProcS(var←c20732, (word) (( (bPt) gf←c0108)+120)/* var←c19132 */ , 67634178, (word) "GetServiceProp");
   (void) XR←ExportProcS(var←c20732, (word) (( (bPt) gf←c0108)+112)/* var←c19100 */ , 67896579, (word) "GetServicePropAndInit")
   ;
   }

static void XlServiceImpl←P0(formal←c034, formal←c029)
   word formal←c034;
   word formal←c029;
   {
   register ptr gf←c20828 =  (ptr) &globalframe;
   /* XlServiceImpl: */ 
SOURCE(104, 3878)
SOURCE(311, 62)
   {
      word var←c19420;
      var←c19420 = XR←NewObject(4, (* (( (ptr) gf←c20828)+12) ));
      (*  (ptr) var←c19420 ) = (* (( (ptr) gf←c20828)+25) );
      (* (( (ptr) gf←c20828)+8)/* trustedServiceProp←v2944 */  ) = var←c19420;
      };
SOURCE(464, 41)
   {
      word pd33;
      pd33 = (* (( (ptr) (* (( (ptr) gf←c20828)+48)/* var←c19452 */  ))+5) );
      (* (( (ptr) gf←c20828)+9)/* serviceTab←v3000 */  ) = (word) ( *( (fPt) ((*  (ptr) pd33 ))))(3, 1, pd33);
      };
SOURCE(916, 67)
   {
      W2 var←c19484;
      {
         W2 var←c19516;
         word v←v19020;
         {
            word pd34;
            pd34 = (* (( (ptr) (* (( (ptr) gf←c20828)+49)/* var←c19548 */  ))+14) );
            v←v19020 = (word) ( *( (fPt) ((*  (ptr) pd34 ))))(pd34);
            };
         var←c19516.f0 = 13;
         var←c19516.f1 = v←v19020;
         var←c19484 = var←c19516;
         };
      {
         word pd35;
         pd35 = (* (( (ptr) (* (( (ptr) gf←c20828)+50)/* var←c19612 */  ))+63) );
         (* (( (ptr) gf←c20828)+10)/* debuggingHackKey←v3140 */  ) = (word) ( *( (fPt) ((*  (ptr) pd35 ))))((* (( (ptr) gf←c20828)+22)
             ), var←c19484, pd35);
         };
      };
   }

static void InitServiceStuff←P60(c←v3612)
   word c←v3612;
   {
   register ptr gf←c20860 =  (ptr) &globalframe;
   word serviceKey←v4752 = 0;
   word atom←v4780;
   word rootWindow←v4808;
   W4 ret←v4836;
   /* InitServiceStuff: */ 
SOURCE(986, 985)
SOURCE(1055, 41)
   {
      word pd36;
      pd36 = (* (( (ptr) (* (( (ptr) gf←c20860)+51)/* var←c19644 */  ))+50) );
      atom←v4780 = (word) ( *( (fPt) ((*  (ptr) pd36 ))))(c←v3612, (* (( (ptr) gf←c20860)+23) ), pd36);
      };
SOURCE(1098, 33)
   {
      word pd37;
      pd37 = (* (( (ptr) (* (( (ptr) gf←c20860)+51)/* var←c19644 */  ))+20) );
      rootWindow←v4808 = (word) ( *( (fPt) ((*  (ptr) pd37 ))))(c←v3612, pd37);
      };
SOURCE(1133, 22)
   ret←v4836.f0 = 0;
   ret←v4836.f1 = 0;
   ret←v4836.f2 = 0;
   ret←v4836.f3 = 0;
SOURCE(1243, 73)
   {
      word pd38;
      pd38 = (* (( (ptr) (* (( (ptr) gf←c20860)+51)/* var←c19644 */  ))+55) );
      (void) ( *( (fPt) ((*  (ptr) pd38 ))))((word) &ret←v4836, c←v3612, rootWindow←v4808, atom←v4780, 0, 0
         , 0, 2147483647, 8, pd38);
      };
SOURCE(1318, 575)
   if (((ret←v4836.f1 != 8) || (ret←v4836.f0 != atom←v4780)) || (ret←v4836.f2 == 0)) {
SOURCE(1373, 522)
      {
         word tentativeKey←v4880;
SOURCE(1376, 122)
         {
            word var←c19708;
            {
               word var←c19740;
               word var←c19772;
               var←c19740 = XR←NewObject(12, (* (( (ptr) gf←c20860)+19) ));
               var←c19772 = var←c19740;
               {
                  W2 var←c19836;
                  word v←v18972;
                  {
                     word pd39;
                     pd39 = (* (( (ptr) (* (( (ptr) gf←c20860)+49)/* var←c19548 */  ))+14) );
                     v←v18972 = (word) ( *( (fPt) ((*  (ptr) pd39 ))))(pd39);
                     };
                  var←c19836.f0 = 13;
                  var←c19836.f1 = v←v18972;
                  (*  (W2Pt) var←c19772 ) = var←c19836;
                  };
               (* (( (ptr) var←c19772)+2) ) = XR←NewObject(12, (* (( (ptr) gf←c20860)+19) ));
               var←c19772 = (* (( (ptr) var←c19772)+2) );
               {
                  W2 var←c19932;
                  word v←v18876;
                  {
                     word pd40;
                     pd40 = (* (( (ptr) (* (( (ptr) gf←c20860)+52)/* var←c19964 */  ))+5) );
                     v←v18876 = (word) ( *( (fPt) ((*  (ptr) pd40 ))))(pd40);
                     };
                  var←c19932.f0 = 11;
                  var←c19932.f1 = v←v18876;
                  (*  (W2Pt) var←c19772 ) = var←c19932;
                  };
               (* (( (ptr) var←c19772)+2) ) = XR←NewObject(12, (* (( (ptr) gf←c20860)+19) ));
               var←c19772 = (* (( (ptr) var←c19772)+2) );
               {
                  W2 var←c20060;
                  word v←v18924;
                  {
                     word pd41;
                     pd41 = (* (( (ptr) (* (( (ptr) gf←c20860)+53)/* var←c20092 */  ))+5) );
                     v←v18924 = (word) ( *( (fPt) ((*  (ptr) pd41 ))))(0, pd41);
                     };
                  var←c20060.f0 = 5;
                  var←c20060.f1 = v←v18924;
                  (*  (W2Pt) var←c19772 ) = var←c20060;
                  };
               var←c19708 = var←c19740;
               };
            {
               word pd42;
               pd42 = (* (( (ptr) (* (( (ptr) gf←c20860)+50)/* var←c19612 */  ))+65) );
               tentativeKey←v4880 = (word) ( *( (fPt) ((*  (ptr) pd42 ))))((* (( (ptr) gf←c20860)+21) ), var←c19708, pd42);
               };
            };
SOURCE(1543, 90)
         lab←L100006: ;
         {
            word pd43;
            pd43 = (* (( (ptr) (* (( (ptr) gf←c20860)+54)/* var←c20156 */  ))+14) );
            if (( (int)IOP2( % ,  (int)(word) ( *( (fPt) ((*  (ptr) pd43 ))))(tentativeKey←v4880, pd43),  (int)4) !=  (int)0)) {
               }
            else {
               goto lab←L100004;
               };
            };
SOURCE(1588, 45)
         {
            word pd44;
            pd44 = (* (( (ptr) (* (( (ptr) gf←c20860)+54)/* var←c20156 */  ))+6) );
            tentativeKey←v4880 = (word) ( *( (fPt) ((*  (ptr) pd44 ))))(tentativeKey←v4880, (* (( (ptr) gf←c20860)+24) ), pd44);
            };
         goto lab←L100006;
         lab←L100004: ;
SOURCE(1649, 13)
         {
            word pd45;
            pd45 = (* (( (ptr) (* (( (ptr) gf←c20860)+51)/* var←c19644 */  ))+45) );
            (void) ( *( (fPt) ((*  (ptr) pd45 ))))(c←v3612, 0, pd45);
            };
SOURCE(1664, 73)
         {
            word pd46;
            pd46 = (* (( (ptr) (* (( (ptr) gf←c20860)+51)/* var←c19644 */  ))+55) );
            (void) ( *( (fPt) ((*  (ptr) pd46 ))))((word) &ret←v4836, c←v3612, rootWindow←v4808, atom←v4780, 0, 0
               , 0, 2147483647, 8, pd46);
            };
SOURCE(1739, 134)
         if (((ret←v4836.f1 != 8) || (ret←v4836.f0 != atom←v4780)) || (ret←v4836.f2 == 0)) {
SOURCE(1796, 77)
            {
               word var←c20188;
               var←c20188 = tentativeKey←v4880;
               serviceKey←v4752 = tentativeKey←v4880;
               {
                  word pd47;
                  pd47 = (* (( (ptr) (* (( (ptr) gf←c20860)+51)/* var←c19644 */  ))+53) );
                  (void) ( *( (fPt) ((*  (ptr) pd47 ))))(c←v3612, rootWindow←v4808, atom←v4780, atom←v4780, 0, var←c20188
                     , 0, 2147483647, 0, pd47);
                  };
               };
            };
SOURCE(1878, 15)
         {
            word pd48;
            pd48 = (* (( (ptr) (* (( (ptr) gf←c20860)+51)/* var←c19644 */  ))+46) );
            (void) ( *( (fPt) ((*  (ptr) pd48 ))))(c←v3612, 0, pd48);
            };
         };
      };
SOURCE(1898, 30)
   {
      word var←c20252;
      var←c20252 = XR←Narrow(ret←v4836.f2, (* (( (ptr) gf←c20860)+15) ));
      if ((var←c20252 == 0)) {
         goto lab←L100007;
         };
      if (( (unsigned) (*(int*)var←c20252<0) == 0)) {
         goto lab←L100007;
         };
      (void) XR←RaiseError(XR←NarrowFault, 0);
      lab←L100007: ;
      serviceKey←v4752 = var←c20252;
      };
SOURCE(1933, 38)
   {
      word var←c20284;
      var←c20284 = (word) EntryDefineService←P120(c←v3612, serviceKey←v4752);
      };
   }

static word EntryDefineService←P120(formal←c0135, formal←c0136)
   word formal←c0135;
   word formal←c0136;
   {
   W7 var←c20892;
   /* declaration of c←v3672 skipped */ 
   /* declaration of serviceKey←v3700 skipped */ 
   register ptr gf←c20924 =  (ptr) &globalframe;
   /* declaration of service←v3744 skipped */ 
   var←c20892.f4/* c←v3672 */  = formal←c0135;
   var←c20892.f5/* serviceKey←v3700 */  = formal←c0136;
   /* EntryDefineService: */ 
SOURCE(1977, 513)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c20924)+16)/* LOCK←v2860 */ ));
SOURCE(1977, 513)
   var←c20892.f6/* service←v3744 */  = 0;
SOURCE(2073, 417)
   {
      word var←c0126;
      var←c0126 = (word) &var←c20892;
       (void) (word) XR←Enable(( ((word)  (fPt) NoName←Q1284) ), ( ((word)  (fPt) NoName←Q1464) ), var←c0126);
      };
SOURCE(1977, 513)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c20924)+16)/* LOCK←v2860 */ ));
   return(var←c20892.f6/* service←v3744 */ );
   }

static word NoName←Q1284(formal←c0113)
   word formal←c0113;
   {
   register ptr gf←c0112 =  (ptr) &globalframe;
SOURCE(2096, 110)
   {
      word var←c20316;
      word var←c20380;
      {
         word pd49;
         pd49 = (* (( (ptr) (* (( (ptr) gf←c0112)+55)/* var←c20348 */  ))+7) );
         var←c20316 = (word) ( *( (fPt) ((*  (ptr) pd49 ))))(pd49);
         };
      var←c20380 = XR←NewObject(12, (* (( (ptr) gf←c0112)+18) ));
      (* (( (ptr) var←c20380)+1) ) = var←c20316;
      (* (( (ptr) var←c20380)+2) ) = (* (( (ptr) formal←c0113)+5) );
      (* (( (ptr) formal←c0113)+6) ) = var←c20380;
      };
SOURCE(2208, 115)
   {
      word pd50;
      pd50 = (* (( (ptr) (* (( (ptr) gf←c0112)+48)/* var←c19452 */  ))+11) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd50 ))))((* (( (ptr) gf←c0112)+9)/* serviceTab←v3000 */  ), (* (( (ptr) formal←c0113)+5)
          ), (* (( (ptr) formal←c0113)+6) ), pd50))) {
SOURCE(2265, 58)
         {
            W2 var←c061;
            word var←c0127;
            {
               word pd51;
               pd51 = (* (( (ptr) (* (( (ptr) gf←c0112)+48)/* var←c19452 */  ))+7) );
               (void) ( *( (fPt) ((*  (ptr) pd51 ))))((word) &var←c061, (* (( (ptr) gf←c0112)+9)/* serviceTab←v3000 */  ), (* (( (ptr) formal←c0113)+5)
                   ), pd51);
               };
            var←c0127 = var←c061.f1;
            (* (( (ptr) formal←c0113)+6) ) = XR←Narrow(var←c0127, (* (( (ptr) gf←c0112)+18) ));
            };
         };
      };
SOURCE(2325, 53)
   (*  (ptr) (* (( (ptr) formal←c0113)+6) ) ) = ((*  (ptr) (* (( (ptr) formal←c0113)+6) ) ) + 1);
SOURCE(2380, 19)
   (* (( (ptr) (* (( (ptr) formal←c0113)+4) ))+28) ) = (* (( (ptr) formal←c0113)+6) );
SOURCE(2401, 38)
   (* (( (ptr) (* (( (ptr) formal←c0113)+4) ))+30) ) = (* (( (ptr) (* (( (ptr) formal←c0113)+6) ))+1) );
SOURCE(2441, 49)
   {
      word pd52;
      pd52 = (* (( (ptr) (* (( (ptr) gf←c0112)+51)/* var←c19644 */  ))+27) );
      (void) ( *( (fPt) ((*  (ptr) pd52 ))))((* (( (ptr) formal←c0113)+4) ), (* (( (ptr) gf←c0112)+8)/* trustedServiceProp←v2944 */  ), (* (
            ( (ptr) formal←c0113)+6) ), pd52);
      };
   return(0);
   }

static void ReleaseService←P180(formal←c0137)
   word formal←c0137;
   {
   W5 var←c20956;
   /* declaration of c←v3804 skipped */ 
   register ptr gf←c20988 =  (ptr) &globalframe;
   var←c20956.f4/* c←v3804 */  = formal←c0137;
   /* ReleaseService: */ 
SOURCE(2496, 431)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c20988)+16)/* LOCK←v2860 */ ));
SOURCE(2550, 377)
   {
      word var←c0128;
      var←c0128 = (word) &var←c20956;
       (void) (word) XR←Enable(( ((word)  (fPt) NoName←Q1344) ), ( ((word)  (fPt) NoName←Q1404) ), var←c0128);
      };
SOURCE(2496, 431)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c20988)+16)/* LOCK←v2860 */ ));
   return;
   }

static word NoName←Q1344(formal←c0116)
   word formal←c0116;
   {
   register ptr gf←c0115 =  (ptr) &globalframe;
SOURCE(2573, 354)
   if (((* (( (ptr) formal←c0116)+4) ) != 0)) {
SOURCE(2587, 345)
      {
         word service←v4924;
SOURCE(2589, 28)
         service←v4924 = (* (( (ptr) (* (( (ptr) formal←c0116)+4) ))+28) );
SOURCE(2619, 308)
         {
            word tc53;
            word pd54;
            if ((service←v4924 != 0)) {
               pd54 = (* (( (ptr) (* (( (ptr) gf←c0115)+51)/* var←c19644 */  ))+28) );
               tc53 =  (word) ((word) ( *( (fPt) ((*  (ptr) pd54 ))))((* (( (ptr) formal←c0116)+4) ), (* (( (ptr) gf←c0115)+8)/* trustedServiceProp←v2944 */  ), pd54)
                == service←v4924);
               }
            else {
               tc53 =  (word) 0;
               };
            if (tc53) {
SOURCE(2694, 45)
               {
                  word pd55;
                  pd55 = (* (( (ptr) (* (( (ptr) gf←c0115)+51)/* var←c19644 */  ))+27) );
                  (void) ( *( (fPt) ((*  (ptr) pd55 ))))((* (( (ptr) formal←c0116)+4) ), (* (( (ptr) gf←c0115)+8)/* trustedServiceProp←v2944 */  ), 0, pd55)
                  ;
                  };
SOURCE(2780, 61)
               {
                  word x56;
                  (*  (ptr) service←v4924 ) = (x56 = ((*  (ptr) service←v4924 ) - 1),
                     MAX((int)(word), x56, 0));
                  };
SOURCE(2843, 84)
               if (( (int)(*  (ptr) service←v4924 ) ==  (int)0)) {
SOURCE(2877, 50)
                  {
                     word var←c20412;
                     word pd57;
                     pd57 = (* (( (ptr) (* (( (ptr) gf←c0115)+48)/* var←c19452 */  ))+12) );
                     var←c20412 = (word) ( *( (fPt) ((*  (ptr) pd57 ))))((* (( (ptr) gf←c0115)+9)/* serviceTab←v3000 */  ), (* (( (ptr) service←v4924)+2)
                         ), pd57);
                     };
                  };
               };
            };
         };
      };
   return(0);
   }

static word GetService←P240(c←v3864)
   word c←v3864;
   {
   word service←v3908;
   /* GetService: */ 
SOURCE(2939, 87)
SOURCE(2939, 87)
   service←v3908 = 0;
SOURCE(3006, 20)
   service←v3908 = (* (( (ptr) c←v3864)+28) );
SOURCE(2939, 87)
   return(service←v3908);
   }

static void PutProp←P300(service←v3984, key←v4012, val←v4040)
   word service←v3984;
   word key←v4012;
   word val←v4040;
   {
   register ptr gf←c21020 =  (ptr) &globalframe;
   word var←c20508;
   /* PutProp: */ 
SOURCE(3030, 209)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c21020)+16)/* LOCK←v2860 */ ));
SOURCE(3102, 137)
   {
      word var←c20444;
      var←c20444 = service←v3984;
      if ((var←c20444 == 0)) {
         goto lab←L100012;
         };
      if (((* (( (ptr) gf←c21020)+18) ) == XR←GetReferentType(var←c20444))) {
         {
            word sr←v4968;
            sr←v4968 = var←c20444;
SOURCE(3153, 44)
            {
               word var←c20476;
               word pd58;
               pd58 = (* (( (ptr) (* (( (ptr) gf←c21020)+55)/* var←c20348 */  ))+10) );
               var←c20476 = (word) ( *( (fPt) ((*  (ptr) pd58 ))))((* (( (ptr) sr←v4968)+1) ), key←v4012, val←v4040, pd58);
               };
            };
         }
      else {
         lab←L100012: ;
SOURCE(3210, 29)
         var←c20508 = (word) (( (bPt) gf←c21020)+108)/* var←c19068 */ ;
         (void) (XR←MonitorExit((word) (( (bPt) gf←c21020)+16)/* LOCK←v2860 */ ));
         goto lab←L100013;
         };
      };
SOURCE(3030, 209)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c21020)+16)/* LOCK←v2860 */ ));
   return;
   /* c2c skipped dead code */ 
   lab←L100013: ;
SOURCE(3210, 29)
   (void) XR←RaiseError(var←c20508, 0);
   }

static word GetProp←P360(service←v4136, key←v4164)
   word service←v4136;
   word key←v4164;
   {
   register ptr gf←c21052 =  (ptr) &globalframe;
   word var←c20604;
   word val←v4232;
   /* GetProp: */ 
SOURCE(3243, 219)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c21052)+16)/* LOCK←v2860 */ ));
SOURCE(3243, 219)
   val←v4232 = 0;
SOURCE(3324, 138)
   {
      word var←c20540;
      var←c20540 = service←v4136;
      if ((var←c20540 == 0)) {
         goto lab←L100015;
         };
      if (((* (( (ptr) gf←c21052)+18) ) == XR←GetReferentType(var←c20540))) {
         {
            word sr←v5024;
            sr←v5024 = var←c20540;
SOURCE(3375, 45)
            {
               word var←c20572;
               {
                  word pd59;
                  pd59 = (* (( (ptr) (* (( (ptr) gf←c21052)+55)/* var←c20348 */  ))+9) );
                  var←c20572 = (word) ( *( (fPt) ((*  (ptr) pd59 ))))((* (( (ptr) sr←v5024)+1) ), key←v4164, pd59);
                  };
               (void) (XR←MonitorExit((word) (( (bPt) gf←c21052)+16)/* LOCK←v2860 */ ));
               return(var←c20572);
               };
            };
         }
      else {
         lab←L100015: ;
SOURCE(3433, 29)
         var←c20604 = (word) (( (bPt) gf←c21052)+108)/* var←c19068 */ ;
         (void) (XR←MonitorExit((word) (( (bPt) gf←c21052)+16)/* LOCK←v2860 */ ));
         goto lab←L100016;
         };
      };
   /* c2c skipped dead code */ 
   lab←L100016: ;
SOURCE(3433, 29)
   (void) XR←RaiseError(var←c20604, 0);
   }

static void PutServiceProp←P420(c←v4304, key←v4332, val←v4360)
   word c←v4304;
   word key←v4332;
   word val←v4360;
   {
   register ptr gf←c21084 =  (ptr) &globalframe;
   /* PutServiceProp: */ 
SOURCE(3466, 127)
SOURCE(3540, 53)
   {
      word var←c20636;
      word pd60;
      pd60 = (* (( (ptr) (* (( (ptr) gf←c21084)+55)/* var←c20348 */  ))+10) );
      var←c20636 = (word) ( *( (fPt) ((*  (ptr) pd60 ))))((* (( (ptr) c←v4304)+30) ), key←v4332, val←v4360, pd60);
      };
   }

static word GetServiceProp←P480(c←v4444, key←v4472)
   word c←v4444;
   word key←v4472;
   {
   register ptr gf←c21116 =  (ptr) &globalframe;
   word val←v4528;
   /* GetServiceProp: */ 
SOURCE(3597, 126)
SOURCE(3597, 126)
   val←v4528 = 0;
SOURCE(3674, 49)
   {
      word pd61;
      pd61 = (* (( (ptr) (* (( (ptr) gf←c21116)+55)/* var←c20348 */  ))+9) );
      val←v4528 = (word) ( *( (fPt) ((*  (ptr) pd61 ))))((* (( (ptr) c←v4444)+30) ), key←v4472, pd61);
      };
SOURCE(3597, 126)
   return(val←v4528);
   }

static word GetServicePropAndInit←P540(c←v4600, key←v4628, formal←c0138)
   word c←v4600;
   word key←v4628;
   word formal←c0138;
   {
   W7 var←c21148;
   /* declaration of init←v4656 skipped */ 
   register ptr gf←c21180 =  (ptr) &globalframe;
   word val←v4712;
   /* declaration of var←c20668 skipped */ 
   W2 var←c093;
   var←c21148.f4/* init←v4656 */  = formal←c0138;
   /* GetServicePropAndInit: */ 
SOURCE(3727, 255)
   {
      word tmpAddr62;
      tmpAddr62 = (word) (( (ptr) &var←c21148)+5)/* var←c20668 */ ;
      (*  (ptr) tmpAddr62 ) = ( ((word)  (fPt) WrapInit←P792) );
      (* (( (ptr) tmpAddr62) + 1) ) = 1;
      };
SOURCE(3727, 255)
   val←v4712 = 0;
SOURCE(3910, 72)
   {
      word pd63;
      pd63 = (* (( (ptr) (* (( (ptr) gf←c21180)+55)/* var←c20348 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd63 ))))((word) &var←c093, (* (( (ptr) c←v4600)+30) ), key←v4628, (word) (( (bPt) &var←c21148)+20)
         /* var←c20668 */ , c←v4600, pd63);
      };
   val←v4712 = var←c093.f0;
SOURCE(3727, 255)
   return(val←v4712);
   }

static word WrapInit←P792(data←v15908, key←v15936, formal←c21244)
   word data←v15908;
   word key←v15936;
   word formal←c21244;
   {
   register ptr gf←c21212 =  (ptr) &globalframe;
   word val←v15980;
   formal←c21244 = (formal←c21244 - 20);
   /* WrapInit: */ 
SOURCE(3837, 70)
SOURCE(3837, 70)
   val←v15980 = (* (( (ptr) gf←c21212)+26) );
SOURCE(3878, 29)
   {
      word var←c20700;
      var←c20700 = XR←Narrow(data←v15908, (* (( (ptr) gf←c21212)+13) ));
      {
         word pd64;
         pd64 = (* (( (ptr) formal←c21244)+4) );
         val←v15980 = (word) ( *( (fPt) ((*  (ptr) pd64 ))))(var←c20700, key←v15936, pd64);
         };
      };
SOURCE(3837, 70)
   return(val←v15980);
   }

static void NoName←Q1404(formal←c0102, formal←c200004, formal←c200005, formal←c200006, formal←c200007)
   word formal←c0102;
   word formal←c200004;
   word formal←c200005;
   word formal←c200006;
   word formal←c200007;
   {
   register ptr gf←c0124 =  (ptr) &globalframe;
   if ((formal←c200005 == XR←Unwind)) {
      (void) (XR←MonitorExit((word) (( (bPt) gf←c0124)+16)/* LOCK←v2860 */ ));
      };
   (*  (ptr) formal←c0102 ) = 0;
   (* (( (ptr) formal←c0102)+1) ) = 0;
   return;
   }

static void NoName←Q1464(formal←c0107, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
   word formal←c0107;
   word formal←c200000;
   word formal←c200001;
   word formal←c200002;
   word formal←c200003;
   {
   register ptr gf←c0125 =  (ptr) &globalframe;
   if ((formal←c200001 == XR←Unwind)) {
      (void) (XR←MonitorExit((word) (( (bPt) gf←c0125)+16)/* LOCK←v2860 */ ));
      };
   (*  (ptr) formal←c0107 ) = 0;
   (* (( (ptr) formal←c0107)+1) ) = 0;
   return;
   }

/* file: XlServiceImpl, module: XlServiceImpl, compiled at: September 14, 1993 4:28:38 pm PDT */ 
extern void XR←install←XlServiceImpl() {
   NoName←Q1224();
   }
extern void XR←run←XlServiceImpl() { XR←Start(&globalframe); }