/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 21, 1992 11:10:13 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: PropImpl, module: PropImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [3789305198,1054607122] PropImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef W2 *W2Pt;
typedef word (*fPt)();
#define SOURCE(p, l) /* source p, l */
static void NoName←Q504();
static void PropImpl←P0();
static word Zap←P60();
static word Get←P120();
static word Put←P180();
static word Rem←P240();
static word Map←P300();
static struct {unsigned f; char r[44];} string1 = {2752556, "\260\006\005\146\151\162\163\164\257\300\240\236\274\171\300\344\000\142\023\100\200\005\004\162\145\163\164\214\257\300\240\236\274\171\300\344\000\142\023\100\200\261\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\007\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\341\334\065\156\300\076\334\007\022\100\150\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\240\236\274\171\300\344\000\142\023\100\150\000\000"};
static struct {
   word f0[6]; word f6; word f7; word f8; 
   word f9; word f10; word f11; word f12; 
   word f13; word f14; word f15; word f16; 
   word f17[2]; 
   } globalframe = {
   {0}, (word) Map←P300, 0, (word) Rem←P240, 
   0, (word) Put←P180, 0, (word) Get←P120, 
   0, (word) Zap←P60, 0, (word) PropImpl←P0, 
   {0}
   };

static void NoName←Q504()
   {
   register ptr gf←c035 =  (ptr) &globalframe;
   word var←c4468;
   (* (( (ptr) gf←c035)+4) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (void) XR←DeclareGlobalFrame((word) "PropImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string3)), (word) (( (bPt) gf←c035)+64)
      /* var←c4276 */ );
   var←c4468 = (word) XR←ExportInterface((word) "Prop", (word) XR←GetTypeIndexS((word) (&string4)), 4);
   (* (( (ptr) gf←c035)+18)/* var←c4436 */  ) = var←c4468;
   (void) XR←ExportProcS(var←c4468, (word) (( (bPt) gf←c035)+40)/* var←c4180 */ , 67895299);
   (void) XR←ExportProcS(var←c4468, (word) (( (bPt) gf←c035)+48)/* var←c4212 */ , 67633410);
   (void) XR←ExportProcS(var←c4468, (word) (( (bPt) gf←c035)+32)/* var←c4148 */ , 67633666);
   (void) XR←ExportProcS(var←c4468, (word) (( (bPt) gf←c035)+24)/* var←c4116 */ , 67633922);
   }

static void PropImpl←P0(formal←c011, formal←c010)
   word formal←c011;
   word formal←c010;
   {
   /* PropImpl: */ 
   }

static word Zap←P60(propList←v2600, key←v2628)
   word propList←v2600;
   word key←v2628;
   {
   register ptr gf←c4500 =  (ptr) &globalframe;
   word var←c2688;
   /* Zap: */ 
SOURCE(102, 310)
SOURCE(166, 246)
   if ((propList←v2600 == 0)) {
SOURCE(187, 18)
      return(0);
      }
   else {
SOURCE(207, 205)
      if (((*  (ptr) propList←v2600 ) == key←v2628)) {
SOURCE(238, 28)
         return((* (( (ptr) propList←v2600)+2) ));
         }
      else {
SOURCE(266, 148)
         {
            word remRest←v3332;
SOURCE(268, 43)
            remRest←v3332 = (word) Zap←P60((* (( (ptr) propList←v2600)+2) ), key←v2628);
SOURCE(313, 30)
            if (((* (( (ptr) propList←v2600)+2) ) == remRest←v3332)) {
SOURCE(343, 5)
               (void) XR←RaiseUnnamedError();
               };
SOURCE(374, 38)
            {
               word var←c4340;
               var←c4340 = XR←NewObject(12, (* (( (ptr) gf←c4500)+4) ));
               (*  (W2Pt) var←c4340 ) = (*  (W2Pt) propList←v2600 );
               (* (( (ptr) var←c4340)+2) ) = remRest←v3332;
               return(var←c4340);
               };
            };
         };
      };
   }

static word Get←P120(propList←v2748, key←v2776)
   word propList←v2748;
   word key←v2776;
   {
   word val←v2832;
   /* Get: */ 
SOURCE(424, 201)
SOURCE(424, 201)
   val←v2832 = 0;
SOURCE(495, 108)
   {
      register word list←v3376;
      list←v3376 = propList←v2748;
      lab←L100003: ;
      if ((list←v3376 != 0)) {
         }
      else {
         goto lab←L100000;
         };
SOURCE(554, 49)
      if (((*  (ptr) list←v3376 ) == key←v2776)) {
SOURCE(581, 22)
         return((* (( (ptr) list←v3376)+1) ));
         };
      list←v3376 = (* (( (ptr) list←v3376)+2) );
      goto lab←L100003;
      lab←L100000: ;
      };
SOURCE(614, 11)
   return(0);
   }

static word Put←P180(propList←v2904, key←v2932, val←v2960)
   word propList←v2904;
   word key←v2932;
   word val←v2960;
   {
   register ptr gf←c4532 =  (ptr) &globalframe;
   word var←c3028;
   word old←v3420;
   /* Put: */ 
SOURCE(631, 326)
SOURCE(712, 29)
   old←v3420 = (word) Get←P120(propList←v2904, key←v2932);
SOURCE(743, 33)
   if ((val←v2960 == old←v3420)) {
SOURCE(759, 17)
      return(propList←v2904);
      };
SOURCE(803, 45)
   if ((old←v3420 != 0)) {
SOURCE(819, 29)
      propList←v2904 = (word) Zap←P60(propList←v2904, key←v2932);
      };
SOURCE(864, 63)
   if ((val←v2960 != 0)) {
SOURCE(880, 47)
      {
         word var←c4372;
         var←c4372 = XR←NewObject(12, (* (( (ptr) gf←c4532)+4) ));
         (*  (ptr) var←c4372 ) = key←v2932;
         (* (( (ptr) var←c4372)+1) ) = val←v2960;
         (* (( (ptr) var←c4372)+2) ) = propList←v2904;
         propList←v2904 = var←c4372;
         };
      };
SOURCE(940, 17)
   return(propList←v2904);
   }

static word Rem←P240(propList←v3088, key←v3116)
   word propList←v3088;
   word key←v3116;
   {
   word var←c3172;
   word old←v3476;
   /* Rem: */ 
SOURCE(963, 158)
SOURCE(1034, 29)
   old←v3476 = (word) Get←P120(propList←v3088, key←v3116);
SOURCE(1065, 56)
   if ((old←v3476 == 0)) {
      return(propList←v3088);
      }
   else {
      return((word) Zap←P60(propList←v3088, key←v3116));
      };
   }

static word Map←P300(propList←v3232, action←v3260)
   word propList←v3232;
   word action←v3260;
   {
   word var←c3304;
   /* Map: */ 
SOURCE(1127, 219)
SOURCE(1202, 119)
   {
      register word list←v3532;
      list←v3532 = propList←v3232;
      lab←L100007: ;
      if ((list←v3532 != 0)) {
         }
      else {
         goto lab←L100004;
         };
SOURCE(1261, 60)
      if ((0 != (word) ( *( (fPt) ((*  (ptr) action←v3260 ))))((*  (ptr) list←v3532 ), (* (( (ptr) list←v3532)+1) ), action←v3260)
      )) {
SOURCE(1308, 13)
         return(1);
         };
      list←v3532 = (* (( (ptr) list←v3532)+2) );
      goto lab←L100007;
      lab←L100004: ;
      };
SOURCE(1332, 14)
   return(0);
   }

/* file: PropImpl, module: PropImpl, compiled at: February 21, 1992 11:10:13 pm PST */ 
extern void XR←install←PropImpl() {
   NoName←Q504();
   }
extern void XR←run←PropImpl() { XR←Start(&globalframe); }