/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: April 21, 1992 1:09:49 pm PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: XlCutBuffersImpl, module: XlCutBuffersImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1198714572,1874738201] XlCutBuffersImpl";
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;} W6;
typedef struct {word f0, f1;} W2;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q696();
static void XlCutBuffersImpl←P0();
static void RegisterGetProc←P60();
static void RegisterPutProc←P120();
static word Get←P180();
static word GetGet←P480();
static void Put←P240();
static word GetPut←P588();
static void OldCutBufferPut←P300();
static word OldCutBufferGet←P360();
static void Init←P420();
static struct {unsigned f; char r[52];} string1 = {3342388, "\262\260\002\001\143\216\257\300\351\276\264\273\300\115\104\320\264\126\304\013\012\143\157\156\166\145\156\164\151\157\156\216\251\261\260\000\216\257\300\363\223\326\161\300\017\164\046\072\104\350\261"};
static struct {unsigned f; char r[60];} string2 = {3670076, "\262\260\002\001\143\216\257\300\351\276\264\273\300\115\104\320\264\126\304\005\004\144\141\164\141\216\257\300\363\223\326\161\300\017\164\046\072\104\350\013\012\143\157\156\166\145\156\164\151\157\156\216\251\261\260\261\000\000\000"};
static struct {unsigned f; char r[4];} string3 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string4 = {65537, "\001\000\000"};
static struct {unsigned f; char r[12];} string5 = {655372, "CutBuffer0\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\107\162\356\314\300\157\276\074\031\100\164\000\000"};
static struct {unsigned f; char r[8];} string7 = {262148, "\004\200\203\000\000\000\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\055\153\222\376\300\327\164\352\142\100\150\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\247\161\001\072\300\014\124\006\340\100\150\000\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\130\354\167\377\300\226\325\031\150\100\150\000\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\220\371\032\047\300\235\243\341\006\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) Init←P420, 0, (word) OldCutBufferGet←P360, 
   0, (word) OldCutBufferPut←P300, 0, (word) Put←P240, 
   0, (word) Get←P180, 0, (word) RegisterPutProc←P120, 
   0, (word) RegisterGetProc←P60, 0, (word) XlCutBuffersImpl←P0, 
   {0}
   };

static void NoName←Q696()
   {
   register ptr gf←c052 =  (ptr) &globalframe;
   word var←c6548;
   (* (( (ptr) gf←c052)+11) ) = (word) XR←GetTypeIndexS((word) (&string1));
   (* (( (ptr) gf←c052)+12) ) = (word) XR←GetTypeIndexS((word) (&string2));
   (* (( (ptr) gf←c052)+13) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (*  (ptr) (( (bPt) gf←c052)+60) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c052)+13) ), (word) &string5);
   (void) XR←DeclareGlobalFrame((word) "XlCutBuffersImpl", &globalframe, (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7)
      , (word) (( (bPt) gf←c052)+120)/* var←c6132 */ );
   var←c6548 = (word) XR←ImportInterface((word) "Atom", (word) XR←GetTypeIndexS((word) (&string8)), 16);
   (* (( (ptr) gf←c052)+32)/* var←c6228 */  ) = var←c6548;
   (void) XR←ImportProcS(var←c6548, 67635202);
   (void) XR←ImportProcS(var←c6548, 67897859);
   var←c6548 = (word) XR←ImportInterface((word) "XlConventions", (word) XR←GetTypeIndexS((word) (&string9)), 12);
   (* (( (ptr) gf←c052)+33)/* var←c6484 */  ) = var←c6548;
   (void) XR←ImportProcS(var←c6548, 67373313);
   (void) XR←ImportProcS(var←c6548, 788995);
   var←c6548 = (word) XR←ExportInterface((word) "XlCutBuffers", (word) XR←GetTypeIndexS((word) (&string10)), 2);
   (* (( (ptr) gf←c052)+34)/* var←c6580 */  ) = var←c6548;
   (void) XR←ExportProcS(var←c6548, (word) (( (bPt) gf←c052)+96)/* var←c6036 */ , 67633154);
   (void) XR←ExportProcS(var←c6548, (word) (( (bPt) gf←c052)+88)/* var←c6004 */ , 786691);
   var←c6548 = (word) XR←ExportInterface((word) "XlCutBuffersBackdoor", (word) XR←GetTypeIndexS((word) (&string11)), 2);
   (* (( (ptr) gf←c052)+34)/* var←c6580 */  ) = var←c6548;
   (void) XR←ExportProcS(var←c6548, (word) (( (bPt) gf←c052)+104)/* var←c6068 */ , 524290);
   (void) XR←ExportProcS(var←c6548, (word) (( (bPt) gf←c052)+112)/* var←c6100 */ , 524546);
   }

static void XlCutBuffersImpl←P0(formal←c019, formal←c018)
   word formal←c019;
   word formal←c018;
   {
   /* XlCutBuffersImpl: */ 
SOURCE(80, 1580)
SOURCE(1654, 6)
   (void) Init←P420();
   }

static void RegisterGetProc←P60(convention←v2940, get←v2968)
   word convention←v2940;
   word get←v2968;
   {
   register ptr gf←c6612 =  (ptr) &globalframe;
   /* RegisterGetProc: */ 
SOURCE(277, 146)
SOURCE(343, 80)
   if ((get←v2968 != 0)) {
SOURCE(360, 63)
      {
         word var←c6164;
         {
            word var←c6196;
            var←c6196 = XR←NewObject(4, (* (( (ptr) gf←c6612)+11) ));
            (*  (ptr) var←c6196 ) = XR←CheckProc(get←v2968);
            var←c6164 = var←c6196;
            };
         {
            word pd12;
            pd12 = (* (( (ptr) (* (( (ptr) gf←c6612)+32)/* var←c6228 */  ))+14) );
            (* (( (ptr) gf←c6612)+9)/* gets←v2664 */  ) = (word) ( *( (fPt) ((*  (ptr) pd12 ))))((* (( (ptr) gf←c6612)+9)/* gets←v2664 */  ), convention←v2940, var←c6164, pd12)
            ;
            };
         };
      };
   }

static void RegisterPutProc←P120(convention←v3028, put←v3056)
   word convention←v3028;
   word put←v3056;
   {
   register ptr gf←c6644 =  (ptr) &globalframe;
   /* RegisterPutProc: */ 
SOURCE(429, 146)
SOURCE(495, 80)
   if ((put←v3056 != 0)) {
SOURCE(512, 63)
      {
         word var←c6260;
         {
            word var←c6292;
            var←c6292 = XR←NewObject(4, (* (( (ptr) gf←c6644)+12) ));
            (*  (ptr) var←c6292 ) = XR←CheckProc(put←v3056);
            var←c6260 = var←c6292;
            };
         {
            word pd13;
            pd13 = (* (( (ptr) (* (( (ptr) gf←c6644)+32)/* var←c6228 */  ))+14) );
            (* (( (ptr) gf←c6644)+8)/* puts←v2636 */  ) = (word) ( *( (fPt) ((*  (ptr) pd13 ))))((* (( (ptr) gf←c6644)+8)/* puts←v2636 */  ), convention←v3028, var←c6260, pd13)
            ;
            };
         };
      };
   }

static word Get←P180(c←v3116, convention←v3144)
   word c←v3116;
   word convention←v3144;
   {
   W6 var←c6676;
   word var←c3188;
   /* declaration of var←c6324 skipped */ 
   word get←v3376;
   /* Get: */ 
SOURCE(581, 367)
   {
      word tmpAddr14;
      tmpAddr14 = (word) (( (ptr) &var←c6676)+4)/* var←c6324 */ ;
      (*  (ptr) tmpAddr14 ) = ( ((word)  (fPt) GetGet←P480) );
      (* (( (ptr) tmpAddr14) + 1) ) = 1;
      };
SOURCE(581, 367)
   var←c3188 = 0;
SOURCE(835, 33)
   get←v3376 = (word) GetGet←P480(convention←v3144, (word) (( (bPt) &var←c6676)+16)/* var←c6324 */ );
SOURCE(870, 33)
   if ((get←v3376 == 0)) {
SOURCE(886, 17)
      get←v3376 = XR←CheckProc((word) GetGet←P480(0, (word) (( (bPt) &var←c6676)+16)/* var←c6324 */ ));
      };
SOURCE(905, 43)
   if ((get←v3376 != 0)) {
SOURCE(921, 27)
      return((word) ( *( (fPt) ((*  (ptr) get←v3376 ))))(c←v3116, convention←v3144, get←v3376));
      };
SOURCE(581, 367)
   return(var←c3188);
   }

static word GetGet←P480(convention←v3452, formal←c6740)
   word convention←v3452;
   word formal←c6740;
   {
   register ptr gf←c6708 =  (ptr) &globalframe;
   word var←c3496;
   formal←c6740 = (formal←c6740 - 16);
   /* GetGet: */ 
SOURCE(661, 155)
SOURCE(661, 155)
   var←c3496 = 0;
SOURCE(721, 95)
   {
      word var←c6388;
      {
         word pd15;
         pd15 = (* (( (ptr) (* (( (ptr) gf←c6708)+32)/* var←c6228 */  ))+12) );
         var←c6388 = (word) ( *( (fPt) ((*  (ptr) pd15 ))))((* (( (ptr) gf←c6708)+9)/* gets←v2664 */  ), convention←v3452, pd15);
         };
      if ((var←c6388 == 0)) {
         goto lab←L100000;
         };
      if (((* (( (ptr) gf←c6708)+11) ) == XR←GetReferentType(var←c6388))) {
         {
            word refGet←v3524;
            refGet←v3524 = var←c6388;
SOURCE(800, 16)
            return(XR←CheckProc(*  (ptr) refGet←v3524 ));
            };
         }
      else {
         lab←L100000: ;
         };
      };
SOURCE(661, 155)
   return(var←c3496);
   }

static void Put←P240(c←v3248, data←v3276, convention←v3304)
   word c←v3248;
   word data←v3276;
   word convention←v3304;
   {
   W6 var←c6772;
   /* declaration of var←c6420 skipped */ 
   word put←v3608;
   /* Put: */ 
SOURCE(954, 357)
   {
      word tmpAddr16;
      tmpAddr16 = (word) (( (ptr) &var←c6772)+4)/* var←c6420 */ ;
      (*  (ptr) tmpAddr16 ) = ( ((word)  (fPt) GetPut←P588) );
      (* (( (ptr) tmpAddr16) + 1) ) = 1;
      };
SOURCE(1201, 33)
   put←v3608 = (word) GetPut←P588(convention←v3304, (word) (( (bPt) &var←c6772)+16)/* var←c6420 */ );
SOURCE(1236, 33)
   if ((put←v3608 == 0)) {
SOURCE(1252, 17)
      put←v3608 = XR←CheckProc((word) GetPut←P588(0, (word) (( (bPt) &var←c6772)+16)/* var←c6420 */ ));
      };
SOURCE(1271, 40)
   if ((put←v3608 != 0)) {
SOURCE(1287, 24)
      (void) ( *( (fPt) ((*  (ptr) put←v3608 ))))(c←v3248, data←v3276, convention←v3304, put←v3608);
      };
   }

static word GetPut←P588(convention←v3684, formal←c6836)
   word convention←v3684;
   word formal←c6836;
   {
   register ptr gf←c6804 =  (ptr) &globalframe;
   word var←c3728;
   formal←c6836 = (formal←c6836 - 16);
   /* GetPut: */ 
SOURCE(1027, 155)
SOURCE(1027, 155)
   var←c3728 = 0;
SOURCE(1087, 95)
   {
      word var←c6452;
      {
         word pd17;
         pd17 = (* (( (ptr) (* (( (ptr) gf←c6804)+32)/* var←c6228 */  ))+12) );
         var←c6452 = (word) ( *( (fPt) ((*  (ptr) pd17 ))))((* (( (ptr) gf←c6804)+8)/* puts←v2636 */  ), convention←v3684, pd17);
         };
      if ((var←c6452 == 0)) {
         goto lab←L100001;
         };
      if (((* (( (ptr) gf←c6804)+12) ) == XR←GetReferentType(var←c6452))) {
         {
            word refPut←v3756;
            refPut←v3756 = var←c6452;
SOURCE(1166, 16)
            return(XR←CheckProc(*  (ptr) refPut←v3756 ));
            };
         }
      else {
         lab←L100001: ;
         };
      };
SOURCE(1027, 155)
   return(var←c3728);
   }

static void OldCutBufferPut←P300(c←v4760, data←v4788, convention←v4816)
   word c←v4760;
   word data←v4788;
   word convention←v4816;
   {
   register ptr gf←c6868 =  (ptr) &globalframe;
   /* OldCutBufferPut: */ 
SOURCE(1316, 65)
SOURCE(1345, 36)
   {
      word pd18;
      pd18 = (* (( (ptr) (* (( (ptr) gf←c6868)+33)/* var←c6484 */  ))+14) );
      (void) ( *( (fPt) ((*  (ptr) pd18 ))))(c←v4760, data←v4788, 0, pd18);
      };
   }

static word OldCutBufferGet←P360(c←v4876, convention←v4904)
   word c←v4876;
   word convention←v4904;
   {
   register ptr gf←c6900 =  (ptr) &globalframe;
   word var←c4948;
   /* OldCutBufferGet: */ 
SOURCE(1387, 67)
SOURCE(1416, 38)
   {
      word pd19;
      pd19 = (* (( (ptr) (* (( (ptr) gf←c6900)+33)/* var←c6484 */  ))+13) );
      return((word) ( *( (fPt) ((*  (ptr) pd19 ))))(c←v4876, pd19));
      };
   }

static void Init←P420()
   {
   register ptr gf←c6932 =  (ptr) &globalframe;
   /* Init: */ 
SOURCE(1460, 188)
SOURCE(1478, 37)
   (void) RegisterPutProc←P120(0, (word) (( (bPt) gf←c6932)+80)/* var←c5972 */ );
SOURCE(1517, 45)
   (void) RegisterPutProc←P120((* (( (ptr) gf←c6932)+15) ), (word) (( (bPt) gf←c6932)+80)/* var←c5972 */ );
SOURCE(1564, 37)
   (void) RegisterGetProc←P60(0, (word) (( (bPt) gf←c6932)+72)/* var←c5940 */ );
SOURCE(1603, 45)
   (void) RegisterGetProc←P60((* (( (ptr) gf←c6932)+15) ), (word) (( (bPt) gf←c6932)+72)/* var←c5940 */ );
   }

/* file: XlCutBuffersImpl, module: XlCutBuffersImpl, compiled at: April 21, 1992 1:09:48 pm PDT */ 
extern void XR←install←XlCutBuffersImpl() {
   NoName←Q696();
   }
extern void XR←run←XlCutBuffersImpl() { XR←Start(&globalframe); }