/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: February 3, 1993 12:09:36 pm PST */
/* C2C version: January 29, 1993 (sun4) */
/* ref-counting: off */
/* file: XlFinalizePrivateImpl, module: XlFinalizePrivateImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [3297806125,2302362170] XlFinalizePrivateImpl";
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←Q696();
static void XlFinalizePrivateImpl←P0();
static void Init←P60();
static word FinalizationStuff←P120();
static void IncRefCount←P180();
static void DecRefCount←P240();
static void TryCloseConnection←P300();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\304\220\207\055\300\211\073\102\072\100\200\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\007\000"};
static struct {unsigned f; char r[4];} string3 = {65540, "\241\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\351\276\264\273\300\115\104\320\264\123\320\000\000"};
static struct {unsigned f; char r[60];} string7 = {3801146, "\007\100\200\040\047\004\100\354\004\200\140\054\004\014\015\015\015\015\015\015\015\015\004\140\014\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\013\004\100\114\004\102\354\004\100\314\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\304\220\207\055\300\211\073\102\072\100\164\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\055\153\222\376\300\327\164\352\142\100\150\000\000"};
static unsigned string10 = 1483472896;
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\351\276\264\273\300\115\104\320\264\100\164\000\000"};
static struct {unsigned f; char r[32];} string12 = {1966112, "\211\022\021\103\157\156\156\145\143\164\151\157\156\120\162\151\166\141\164\145\300\351\276\264\273\300\115\104\320\264\000"};
static struct {unsigned f; char r[16];} string13 = {851984, "\257\300\012\063\155\016\300\130\140\234\375\100\164\000\000"};
static struct {unsigned f; char r[40];} string14 = {2424869, "\006\016\000\001\004\001\010\001\014\001\020\001\024\001\030\001\034\001\040\001\044\001\060\001\070\010\000\004\100\100\001\101\070\001\101\074\001\000\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\012\063\155\016\300\130\140\234\375\100\150\000\000"};
static struct {unsigned f; char r[32];} string16 = {1835040, "\211\020\017\106\151\156\141\154\151\172\141\164\151\157\156\122\145\160\300\012\063\155\016\300\130\140\234\375\000\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\156\242\124\004\300\131\031\215\125\100\150\000\000"};
static struct {
   word f0[17]; word f17; word f18; word f19; 
   word f20; word f21; word f22; word f23; 
   word f24; word f25; word f26; word f27; 
   word f28[5]; 
   } globalframe = {
   {0}, (word) TryCloseConnection←P300, 0, (word) DecRefCount←P240, 
   0, (word) IncRefCount←P180, 0, (word) FinalizationStuff←P120, 
   0, (word) Init←P60, 0, (word) XlFinalizePrivateImpl←P0, 
   {0}
   };

static void NoName←Q696()
   {
   register ptr gf←c048 =  (ptr) &globalframe;
   word var←c21296;
   (* (( (ptr) gf←c048)+9) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c048)+10) ) = (word) XR←GetTypeIndexS((word) (&string3));
   (* (( (ptr) gf←c048)+11) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5);
   (* (( (ptr) gf←c048)+12) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (void) XR←DeclareGlobalFrame((word) "XlFinalizePrivateImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string8)), (word) (
         ( (bPt) gf←c048)+108)/* var←c20912 */ );
   var←c21296 = (word) XR←ImportInterface((word) "Atom", (word) XR←GetTypeIndexS((word) (&string9)), 16);
   (* (( (ptr) gf←c048)+30)/* var←c21136 */  ) = var←c21296;
   (void) XR←ImportProcS(var←c21296, 67636226);
   (void) XR←ImportProcS(var←c21296, 67635202);
   (void) XR←ImportProcS(var←c21296, 67897859);
   var←c21296 = (word) XR←ImportInterface((word) &string10, (word) XR←GetTypeIndexS((word) (&string11)), 218);
   (* (( (ptr) gf←c048)+29)/* var←c21008 */  ) = var←c21296;
   (void) XR←ImportProcS(var←c21296, 271873);
   (void) XR←ImportProcS(var←c21296, 1063940);
   (void) XR←ImportProcS(var←c21296, 67910403);
   var←c21296 = (word) XR←ExportInterface((word) &string10, (word) XR←GetTypeIndexS((word) (&string11)), 218);
   (* (( (ptr) gf←c048)+31)/* var←c21328 */  ) = var←c21296;
   (void) XR←ExportProcS(var←c21296, (word) (( (bPt) gf←c048)+84)/* var←c20816 */ , 533506);
   (void) XR←ExportProcS(var←c21296, (word) (( (bPt) gf←c048)+76)/* var←c20784 */ , 533762);
   (void) XR←ExportType((word) "ConnectionPrivate", (word) XR←GetTypeIndexS((word) (&string12)), (word) XR←GetTypeIndex((word) &string13, 0, (word) &string14)
      );
   var←c21296 = (word) XR←ExportInterface((word) "XlPrivateTypes", (word) XR←GetTypeIndexS((word) (&string15)), 7);
   (* (( (ptr) gf←c048)+32)/* var←c21360 */  ) = var←c21296;
   (void) XR←ExportType((word) "FinalizationRep", (word) XR←GetTypeIndexS((word) (&string16)), (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2)
      );
   var←c21296 = (word) XR←ExportInterface((word) "XlFinalizePrivate", (word) XR←GetTypeIndexS((word) (&string17)), 1);
   (* (( (ptr) gf←c048)+31)/* var←c21328 */  ) = var←c21296;
   (void) XR←ExportProcS(var←c21296, (word) (( (bPt) gf←c048)+100)/* var←c20880 */ , 524290);
   }

static void XlFinalizePrivateImpl←P0(formal←c015, formal←c014)
   word formal←c015;
   word formal←c014;
   {
   /* XlFinalizePrivateImpl: */ 
   }

static void Init←P60(c←v2956, finalMatch←v2984)
   word c←v2956;
   word finalMatch←v2984;
   {
   register ptr gf←c21392 =  (ptr) &globalframe;
   word cPriv←v3332;
   /* Init: */ 
SOURCE(443, 293)
SOURCE(512, 60)
   cPriv←v3332 = (* (( (ptr) c←v2956)+24) );
SOURCE(574, 162)
   {
      word var←c20944;
      {
         word var←c20976;
         word var←c21040;
         word var←c21168;
         {
            word pd18;
            pd18 = (* (( (ptr) (* (( (ptr) gf←c21392)+29)/* var←c21008 */  ))+63) );
            var←c20976 = (word) ( *( (fPt) ((*  (ptr) pd18 ))))(0, 0, 0, pd18);
            };
         {
            word var←c21072;
            {
               word var←c21104;
               var←c21104 = XR←NewObject(4, (* (( (ptr) gf←c21392)+10) ));
               (*  (ptr) var←c21104 ) = 1;
               var←c21072 = var←c21104;
               };
            {
               word pd19;
               pd19 = (* (( (ptr) (* (( (ptr) gf←c21392)+30)/* var←c21136 */  ))+14) );
               var←c21040 = (word) ( *( (fPt) ((*  (ptr) pd19 ))))(0, 0, var←c21072, pd19);
               };
            };
         var←c21168 = XR←NewObject(12, (* (( (ptr) gf←c21392)+9) ));
         (*  (ptr) var←c21168 ) = finalMatch←v2984;
         (* (( (ptr) var←c21168)+1) ) = var←c20976;
         (* (( (ptr) var←c21168)+2) ) = var←c21040;
         var←c20944 = var←c21168;
         };
      (* (( (ptr) cPriv←v3332)+7) ) = var←c20944;
      };
   }

static word FinalizationStuff←P120(c←v3044)
   word c←v3044;
   {
   word var←c3088;
   /* FinalizationStuff: */ 
SOURCE(741, 211)
SOURCE(741, 211)
   var←c3088 = 0;
SOURCE(824, 128)
   if ((c←v3044 != 0)) {
SOURCE(838, 116)
      {
         word cPriv←v3388;
SOURCE(840, 60)
         cPriv←v3388 = (* (( (ptr) c←v3044)+24) );
SOURCE(902, 50)
         if ((cPriv←v3388 != 0)) {
SOURCE(920, 32)
            return((* (( (ptr) cPriv←v3388)+7) ));
            };
         };
      };
SOURCE(741, 211)
   return(var←c3088);
   }

static void IncRefCount←P180(c←v3160, object←v3188)
   word c←v3160;
   word object←v3188;
   {
   register ptr gf←c21424 =  (ptr) &globalframe;
   word finalizationStuff←v3444;
   /* IncRefCount: */ 
SOURCE(961, 395)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c21424)+16)/* LOCK←v2552 */ ));
SOURCE(1034, 61)
   finalizationStuff←v3444 = (word) FinalizationStuff←P120(c←v3160);
SOURCE(1097, 259)
   if ((finalizationStuff←v3444 != 0)) {
SOURCE(1127, 231)
      {
         word count←v3500;
SOURCE(1129, 83)
         {
            word pd20;
            pd20 = (* (( (ptr) (* (( (ptr) gf←c21424)+30)/* var←c21136 */  ))+12) );
            count←v3500 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd20 ))))((* (( (ptr) finalizationStuff←v3444)+2) ), object←v3188, pd20)
               , (* (( (ptr) gf←c21424)+10) ));
            };
SOURCE(1214, 142)
         if ((count←v3500 != 0)) {
SOURCE(1233, 23)
            (*  (ptr) count←v3500 ) = ((*  (ptr) count←v3500 ) + 1);
            }
         else {
SOURCE(1256, 100)
            {
               word var←c21200;
               {
                  word var←c21232;
                  var←c21232 = XR←NewObject(4, (* (( (ptr) gf←c21424)+10) ));
                  (*  (ptr) var←c21232 ) = 1;
                  var←c21200 = var←c21232;
                  };
               {
                  word pd21;
                  pd21 = (* (( (ptr) (* (( (ptr) gf←c21424)+30)/* var←c21136 */  ))+14) );
                  (* (( (ptr) finalizationStuff←v3444)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd21 ))))((* (( (ptr) finalizationStuff←v3444)+2)
                      ), object←v3188, var←c21200, pd21);
                  };
               };
            };
         };
      };
SOURCE(961, 395)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c21424)+16)/* LOCK←v2552 */ ));
   return;
   }

static void DecRefCount←P240(c←v3264, object←v3292)
   word c←v3264;
   word object←v3292;
   {
   register ptr gf←c21456 =  (ptr) &globalframe;
   word finalizationStuff←v3556;
   /* DecRefCount: */ 
SOURCE(1364, 668)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c21456)+16)/* LOCK←v2552 */ ));
SOURCE(1437, 61)
   finalizationStuff←v3556 = (word) FinalizationStuff←P120(c←v3264);
SOURCE(1500, 532)
   if ((finalizationStuff←v3556 != 0)) {
SOURCE(1530, 507)
      {
         word count←v3612;
SOURCE(1532, 83)
         {
            word pd22;
            pd22 = (* (( (ptr) (* (( (ptr) gf←c21456)+30)/* var←c21136 */  ))+12) );
            count←v3612 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd22 ))))((* (( (ptr) finalizationStuff←v3556)+2) ), object←v3292, pd22)
               , (* (( (ptr) gf←c21456)+10) ));
            };
SOURCE(1617, 150)
         if ((count←v3612 != 0)) {
SOURCE(1637, 130)
            if (((*  (ptr) count←v3612 ) != 1)) {
SOURCE(1655, 25)
               (*  (ptr) count←v3612 ) = ((*  (ptr) count←v3612 ) - 1);
               }
            else {
SOURCE(1680, 87)
               {
                  word pd23;
                  pd23 = (* (( (ptr) (* (( (ptr) gf←c21456)+30)/* var←c21136 */  ))+16) );
                  (* (( (ptr) finalizationStuff←v3556)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd23 ))))((* (( (ptr) finalizationStuff←v3556)+2)
                      ), object←v3292, pd23);
                  };
               };
            };
SOURCE(1773, 259)
         if (((* (( (ptr) finalizationStuff←v3556)+2) ) == 0)) {
SOURCE(1813, 221)
            {
               word tq←v3668 = 0;
               word finalMatch←v3696;
SOURCE(1827, 51)
               finalMatch←v3696 = (*  (ptr) finalizationStuff←v3556 );
SOURCE(1880, 41)
               if ((finalMatch←v3696 != 0)) {
SOURCE(1903, 18)
                  tq←v3668 = (* (( (ptr) finalMatch←v3696)+2) );
                  };
SOURCE(1924, 52)
               if ((tq←v3668 == 0)) {
SOURCE(1939, 37)
                  tq←v3668 = (* (( (ptr) finalizationStuff←v3556)+1) );
                  };
SOURCE(1979, 53)
               {
                  word pd24;
                  pd24 = (* (( (ptr) (* (( (ptr) gf←c21456)+29)/* var←c21008 */  ))+64) );
                  (void) ( *( (fPt) ((*  (ptr) pd24 ))))(tq←v3668, (word) (( (bPt) gf←c21456)+68)/* var←c20752 */ , c←v3264, 0, pd24);
                  };
               };
            };
         };
      };
SOURCE(1364, 668)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c21456)+16)/* LOCK←v2552 */ ));
   return;
   }

static void TryCloseConnection←P300(event←v6380, clientData←v6408, tq←v6436)
   word event←v6380;
   word clientData←v6408;
   word tq←v6436;
   {
   register ptr gf←c21488 =  (ptr) &globalframe;
   word c←v3740;
   word finalizationStuff←v3768;
   /* TryCloseConnection: */ 
SOURCE(2044, 546)
SOURCE(2085, 37)
   c←v3740 = XR←Narrow(clientData←v6408, (* (( (ptr) gf←c21488)+11) ));
SOURCE(2124, 61)
   finalizationStuff←v3768 = (word) FinalizationStuff←P120(c←v3740);
SOURCE(2187, 403)
   if (((* (( (ptr) finalizationStuff←v3768)+2) ) == 0)) {
SOURCE(2227, 365)
      {
         word finalMatch←v3824;
SOURCE(2230, 51)
         finalMatch←v3824 = (*  (ptr) finalizationStuff←v3768 );
SOURCE(2283, 238)
         if ((finalMatch←v3824 != 0)) {
SOURCE(2306, 220)
            {
               word proc←v3868;
SOURCE(2308, 40)
               proc←v3868 = (*  (ptr) finalMatch←v3824 );
SOURCE(2350, 171)
               if ((proc←v3868 != 0)) {
SOURCE(2367, 156)
                  {
                     word event←v3912;
SOURCE(2369, 63)
                     event←v3912 = XR←NewObject(28, (* (( (ptr) gf←c21488)+12) ));
                     (* (( (ptr) event←v3912)+4) ) = 36;
SOURCE(2434, 20)
                     (* (( (ptr) event←v3912)+2) ) = c←v3740;
SOURCE(2456, 31)
                     (* (( (ptr) event←v3912)+5) ) = 1;
SOURCE(2489, 32)
                     (void) ( *( (fPt) ((*  (ptr) proc←v3868 ))))(event←v3912, (* (( (ptr) finalMatch←v3824)+3) ), tq←v6436, proc←v3868);
                     };
                  };
               };
            };
SOURCE(2529, 61)
         if (((* (( (ptr) finalizationStuff←v3768)+2) ) == 0)) {
SOURCE(2569, 21)
            {
               word pd25;
               pd25 = (* (( (ptr) (* (( (ptr) gf←c21488)+29)/* var←c21008 */  ))+42) );
               (void) ( *( (fPt) ((*  (ptr) pd25 ))))(c←v3740, pd25);
               };
            };
         };
      };
   }

/* file: XlFinalizePrivateImpl, module: XlFinalizePrivateImpl, compiled at: February 3, 1993 12:09:35 pm PST */ 
extern void XR←install←XlFinalizePrivateImpl() {
   NoName←Q696();
   }
extern void XR←run←XlFinalizePrivateImpl() { XR←Start(&globalframe); }