/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: June 15, 1992 10:05:18 pm PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: XTkFastAccessPrivateImpl, module: XTkFastAccessPrivateImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2280355483,466151353] XTkFastAccessPrivateImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef W8 *W8Pt;
typedef struct {word f0, f1;} W2;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q756();
static void XTkFastAccessPrivateImpl←P0();
static word New←P60();
static void Free←P120();
static word Include←P180();
static void Synchronize←P240();
static void Init←P348();
static word Check←P408();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\207\353\166\233\300\033\310\347\271\100\200\000\000"};
static struct {unsigned f; char r[12];} string2 = {720907, "\006\003\000\004\100\377\040\013\100\104\001"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\207\353\166\233\300\033\310\347\271\100\164\000\000"};
static struct {unsigned f; char r[4];} string4 = {131074, "\003\010\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\212\174\364\337\300\361\376\000\156\100\150\000\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\240\236\274\315\300\111\163\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\351\276\264\273\300\115\104\320\264\100\164\000\000"};
static struct {unsigned f; char r[20];} string8 = {1179668, "\211\006\005\124\121\122\145\160\300\351\276\264\273\300\115\104\320\264\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\276\357\323\042\300\311\135\170\244\100\164\000\000"};
static struct {unsigned f; char r[20];} string10 = {1179666, "\006\006\060\001\064\001\100\160\001\100\164\001\100\214\001\100\224\001\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\314\010\357\126\300\054\306\061\322\100\150\000\000"};
static struct {unsigned f; char r[24];} string12 = {1376280, "\211\011\010\124\121\123\145\164\122\145\160\300\314\010\357\126\300\054\306\061\322\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[4]; 
   } globalframe = {
   {0}, (word) Synchronize←P240, 0, (word) Include←P180, 
   0, (word) Free←P120, 0, (word) New←P60, 
   0, (word) XTkFastAccessPrivateImpl←P0, {0}
   };

static void NoName←Q756()
   {
   register ptr gf←c035 =  (ptr) &globalframe;
   word var←c6092;
   (* (( (ptr) gf←c035)+11) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (void) XR←DeclareGlobalFrame((word) "XTkFastAccessPrivateImpl", &globalframe, (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4)
      , (word) (( (bPt) gf←c035)+92)/* var←c5900 */ );
   var←c6092 = (word) XR←ImportInterface((word) "BasicTime", (word) XR←GetTypeIndexS((word) (&string5)), 24);
   (* (( (ptr) gf←c035)+25)/* var←c5932 */  ) = var←c6092;
   (void) XR←ImportProcS(var←c6092, 67109632);
   (void) XR←ImportProcS(var←c6092, 67372545);
   var←c6092 = (word) XR←ImportInterface((word) "Process", (word) XR←GetTypeIndexS((word) (&string6)), 22);
   (* (( (ptr) gf←c035)+26)/* var←c6060 */  ) = var←c6092;
   (void) XR←ImportProcS(var←c6092, 266497);
   (void) XR←ImportProcS(var←c6092, 4864);
   var←c6092 = (word) XR←ExportInterface((word) "Xl", (word) XR←GetTypeIndexS((word) (&string7)), 218);
   (* (( (ptr) gf←c035)+27)/* var←c6124 */  ) = var←c6092;
   (void) XR←ExportType((word) "TQRep", (word) XR←GetTypeIndexS((word) (&string8)), (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10)
      );
   var←c6092 = (word) XR←ExportInterface((word) "XTkFastAccessPrivate", (word) XR←GetTypeIndexS((word) (&string11)), 3);
   (* (( (ptr) gf←c035)+27)/* var←c6124 */  ) = var←c6092;
   (void) XR←ExportType((word) "TQSetRep", (word) XR←GetTypeIndexS((word) (&string12)), (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2)
      );
   (void) XR←ExportProcS(var←c6092, (word) (( (bPt) gf←c035)+68)/* var←c5804 */ , 67633410);
   (void) XR←ExportProcS(var←c6092, (word) (( (bPt) gf←c035)+60)/* var←c5772 */ , 262657);
   }

static void XTkFastAccessPrivateImpl←P0(formal←c015, formal←c014)
   word formal←c015;
   word formal←c014;
   {
   register ptr gf←c6156 =  (ptr) &globalframe;
   /* XTkFastAccessPrivateImpl: */ 
SOURCE(176, 2478)
SOURCE(1401, 65)
   {
      word pd13;
      pd13 = (* (( (ptr) (* (( (ptr) gf←c6156)+25)/* var←c5932 */  ))+10) );
      (* (( (ptr) gf←c6156)+9)/* limit←v2860 */  ) = (word) ( *( (fPt) ((*  (ptr) pd13 ))))(5000000, pd13);
      };
   }

static word New←P60(link←v3192)
   word link←v3192;
   {
   register ptr gf←c6188 =  (ptr) &globalframe;
   word s←v3236;
   /* New: */ 
SOURCE(758, 177)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c6188)+16)/* LOCK←v2580 */ ));
SOURCE(758, 177)
   s←v3236 = 0;
SOURCE(817, 12)
   s←v3236 = (* (( (ptr) gf←c6188)+8)/* freeList←v2748 */  );
SOURCE(831, 58)
   if ((s←v3236 != 0)) {
SOURCE(846, 26)
      (* (( (ptr) gf←c6188)+8)/* freeList←v2748 */  ) = (* (( (ptr) s←v3236)+17) );
      }
   else {
SOURCE(872, 17)
      s←v3236 = XR←NewObject(72, (* (( (ptr) gf←c6188)+11) ));
      };
SOURCE(891, 25)
   (* (( (ptr) s←v3236)+16) ) = 1;
SOURCE(918, 17)
   (* (( (ptr) s←v3236)+17) ) = link←v3192;
SOURCE(758, 177)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c6188)+16)/* LOCK←v2580 */ ));
   return(s←v3236);
   }

static void Free←P120(s←v3296)
   word s←v3296;
   {
   register ptr gf←c6220 =  (ptr) &globalframe;
   /* Free: */ 
SOURCE(939, 108)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c6220)+16)/* LOCK←v2580 */ ));
SOURCE(971, 19)
   XR←FillWords(&(* (W8Pt) (s←v3296)), 8, 0);
SOURCE(992, 18)
   XR←FillWords(&(* (W8Pt) ((( (ptr) s←v3296)+8))), 8, 0);
SOURCE(1012, 20)
   (* (( (ptr) s←v3296)+17) ) = (* (( (ptr) gf←c6220)+8)/* freeList←v2748 */  );
SOURCE(1034, 13)
   (* (( (ptr) gf←c6220)+8)/* freeList←v2748 */  ) = s←v3296;
SOURCE(939, 108)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c6220)+16)/* LOCK←v2580 */ ));
   return;
   }

static word Include←P180(set←v3356, tq←v3384)
   word set←v3356;
   word tq←v3384;
   {
   word s←v3428;
   /* Include: */ 
SOURCE(1051, 336)
SOURCE(1051, 336)
   s←v3428 = 0;
SOURCE(1119, 27)
   if ((set←v3356 == 0)) {
SOURCE(1135, 11)
      set←v3356 = (word) New←P60(0);
      };
SOURCE(1148, 7)
   s←v3428 = set←v3356;
SOURCE(1157, 28)
   if ((0 == (* (( (ptr) s←v3428)+16) ))) {
SOURCE(1185, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(1230, 157)
   lab←L100002: ;
SOURCE(1233, 132)
   {
      register word idx←v3516 = 0;
      lab←L100006: ;
SOURCE(1278, 31)
      if (((* (( (ptr) s←v3428)+idx←v3516) ) == tq←v3384)) {
SOURCE(1303, 6)
         return(s←v3428);
         };
SOURCE(1312, 53)
      if (((* (( (ptr) s←v3428)+idx←v3516) ) == 0)) {
SOURCE(1339, 18)
         (* (( (ptr) s←v3428)+idx←v3516) ) = tq←v3384;
SOURCE(1359, 6)
         return(s←v3428);
         };
      if ((idx←v3516 >= 7)) {
         goto lab←L100003;
         };
      idx←v3516 = (idx←v3516 + 1);
      goto lab←L100006;
      lab←L100003: ;
      };
SOURCE(1377, 10)
   s←v3428 = (word) New←P60(s←v3428);
   goto lab←L100002;
   }

static void Synchronize←P240(set←v3488)
   word set←v3488;
   {
   W8 var←c6252;
   register ptr gf←c6284 =  (ptr) &globalframe;
   /* declaration of var←c5996 skipped */ 
   /* declaration of var←c6028 skipped */ 
   /* Synchronize: */ 
SOURCE(1469, 1185)
   {
      word tmpAddr14;
      tmpAddr14 = (word) (( (ptr) &var←c6252)+4)/* var←c5996 */ ;
      (*  (ptr) tmpAddr14 ) = ( ((word)  (fPt) Check←P408) );
      (* (( (ptr) tmpAddr14) + 1) ) = 1;
      };
   {
      word tmpAddr15;
      tmpAddr15 = (word) (( (ptr) &var←c6252)+6)/* var←c6028 */ ;
      (*  (ptr) tmpAddr15 ) = ( ((word)  (fPt) Init←P348) );
      (* (( (ptr) tmpAddr15) + 1) ) = 1;
      };
SOURCE(2291, 363)
   if ((set←v3488 != 0)) {
SOURCE(2307, 420)
      {
         word pulses←v3816;
SOURCE(2335, 9)
         (void) Init←P348(set←v3488, (word) (( (bPt) &var←c6252)+24)/* var←c6028 */ );
SOURCE(2346, 15)
         {
            word pd16;
            pd16 = (* (( (ptr) (* (( (ptr) gf←c6284)+26)/* var←c6060 */  ))+23) );
            (void) ( *( (fPt) ((*  (ptr) pd16 ))))(pd16);
            };
SOURCE(2363, 253)
         if ((0 != (word) Check←P408(set←v3488, (word) (( (bPt) &var←c6252)+16)/* var←c5996 */ ))) {
SOURCE(2391, 251)
            {
               word start←v3860;
SOURCE(2393, 52)
               {
                  word pd17;
                  pd17 = (* (( (ptr) (* (( (ptr) gf←c6284)+25)/* var←c5932 */  ))+7) );
                  start←v3860 = (word) ( *( (fPt) ((*  (ptr) pd17 ))))(pd17);
                  };
SOURCE(2447, 169)
               lab←L100009: ;
SOURCE(2450, 16)
               {
                  word pd18;
                  pd18 = (* (( (ptr) (* (( (ptr) gf←c6284)+26)/* var←c6060 */  ))+21) );
                  (void) ( *( (fPt) ((*  (ptr) pd18 ))))(5, pd18);
                  };
SOURCE(2468, 16)
               {
                  word pd19;
                  pd19 = (* (( (ptr) (* (( (ptr) gf←c6284)+26)/* var←c6060 */  ))+21) );
                  (void) ( *( (fPt) ((*  (ptr) pd19 ))))(5, pd19);
                  };
SOURCE(2486, 35)
               if ((0 == (word) Check←P408(set←v3488, (word) (( (bPt) &var←c6252)+16)/* var←c5996 */ ))) {
SOURCE(2515, 6)
                  return;
                  };
SOURCE(2525, 35)
               {
                  word pd20;
                  pd20 = (* (( (ptr) (* (( (ptr) gf←c6284)+25)/* var←c5932 */  ))+7) );
                  pulses←v3816 = (word) ( *( (fPt) ((*  (ptr) pd20 ))))(pd20);
                  };
SOURCE(2562, 54)
               if (((pulses←v3816 - start←v3860) > (* (( (ptr) gf←c6284)+9)/* limit←v2860 */  ))) {
SOURCE(2616, 4)
                  goto lab←L100008;
                  };
               goto lab←L100009;
               lab←L100008: ;
               };
            };
SOURCE(2645, 9)
         (void) Free←P120(set←v3488);
         };
      };
   }

static void Init←P348(set←v3684, formal←c6316)
   word set←v3684;
   word formal←c6316;
   {
   formal←c6316 = (formal←c6316 - 24);
   /* Init: */ 
SOURCE(1511, 345)
SOURCE(1539, 317)
   lab←L100012: ;
   if ((set←v3684 != 0)) {
      }
   else {
      goto lab←L100010;
      };
SOURCE(1556, 28)
   (* (( (ptr) set←v3684)+16) ) = 0;
SOURCE(1586, 239)
   {
      register word i←v3904 = 0;
      lab←L100016: ;
      {
         word t←v3968;
SOURCE(1629, 21)
         t←v3968 = (* (( (ptr) set←v3684)+i←v3904) );
SOURCE(1652, 173)
         if ((t←v3968 != 0)) {
SOURCE(1668, 157)
            if ( ( ((* (( (ptr) t←v3968)+28) ) == 0) ? ((* (( (ptr) t←v3968)+10) ) == 0) : 0 ) ) {
SOURCE(1778, 26)
               (* (( (ptr) set←v3684)+i←v3904) ) = 0;
               }
            else {
SOURCE(1804, 21)
               (* ((( (ptr) set←v3684)+8)+i←v3904) ) = (* (( (ptr) t←v3968)+28) );
               };
            };
         };
      if ((i←v3904 >= 7)) {
         goto lab←L100013;
         };
      i←v3904 = (i←v3904 + 1);
      goto lab←L100016;
      lab←L100013: ;
      };
SOURCE(1839, 17)
   set←v3684 = (* (( (ptr) set←v3684)+17) );
   goto lab←L100012;
   lab←L100010: ;
   }

static word Check←P408(set←v3744, formal←c6348)
   word set←v3744;
   word formal←c6348;
   {
   word mustWait←v3788;
   formal←c6348 = (formal←c6348 - 16);
   /* Check: */ 
SOURCE(1870, 407)
SOURCE(1870, 407)
   mustWait←v3788 = 0;
SOURCE(1932, 345)
   lab←L100019: ;
   if ((set←v3744 != 0)) {
      }
   else {
      goto lab←L100017;
      };
SOURCE(1949, 293)
   {
      register word i←v4012 = 0;
      lab←L100023: ;
      {
         word t←v4076;
SOURCE(1992, 21)
         t←v4076 = (* (( (ptr) set←v3744)+i←v4012) );
SOURCE(2015, 227)
         if ((t←v4076 != 0)) {
SOURCE(2031, 211)
            if ( ( ((* (( (ptr) t←v4076)+28) ) == 0) ? ((* (( (ptr) t←v4076)+10) ) == 0) : 0 ) ) {
SOURCE(2134, 26)
               (* (( (ptr) set←v3744)+i←v4012) ) = 0;
               }
            else {
SOURCE(2162, 80)
               if (((* ((( (ptr) set←v3744)+8)+i←v4012) ) != (* (( (ptr) t←v4076)+28) ))) {
SOURCE(2192, 26)
                  (* (( (ptr) set←v3744)+i←v4012) ) = 0;
                  }
               else {
SOURCE(2219, 15)
                  mustWait←v3788 = 1;
SOURCE(2236, 6)
                  return(mustWait←v3788);
                  };
               };
            };
         };
      if ((i←v4012 >= 7)) {
         goto lab←L100020;
         };
      i←v4012 = (i←v4012 + 1);
      goto lab←L100023;
      lab←L100020: ;
      };
SOURCE(2260, 17)
   set←v3744 = (* (( (ptr) set←v3744)+17) );
   goto lab←L100019;
   lab←L100017: ;
SOURCE(1870, 407)
   return(mustWait←v3788);
   }

/* file: XTkFastAccessPrivateImpl, module: XTkFastAccessPrivateImpl, compiled at: June 15, 1992 10:05:18 pm PDT */ 
extern void XR←install←XTkFastAccessPrivateImpl() {
   NoName←Q756();
   }
extern void XR←run←XTkFastAccessPrivateImpl() { XR←Start(&globalframe); }