/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 7, 1992 11:40:27 am PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: SHSImpl, module: SHSImpl */ 
/* switches: bhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
#define XRM←BITXOR(x, y) ((x) ↑ (y))
#define XRM←BITLSHIFT(x, y) ((x) << (y))
#define XRM←BITRSHIFT(x, y) ((x) >> (y))
#define XRM←BITOR(x, y) ((x) | (y))
#define XRM←BITAND(x, y) ((x) & (y))
#define XRM←BITNOT(x) (~(x))
static char versionStamp[] = "@(#)mob←version [3449244369,3931438650] SHSImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; W8 r;} W16;
typedef struct {W16 f; W16 r;} W32;
typedef struct {W32 f; W32 r;} W64;
typedef struct {W64 f; W16 r;} W80;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef W5 *W5Pt;
typedef word (*fPt)();
#define SOURCE(p, l) /* source p, l */
static void NoName←Q1092();
static void SHSImpl←P0();
static word WholeMessage16←P60();
static void OneM←P180();
static word S5←P240();
static word S30←P300();
static word F0←P360();
static word F1←P420();
static word F2←P480();
static word Example1←P540();
static word Eq←P600();
static struct {unsigned f; char r[8];} string1 = {393224, "\205\210\242\000\004\241\000"};
static struct {unsigned f; char r[8];} string2 = {393224, "\205\210\242\000\017\241\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\315\227\112\321\300\352\124\376\072\100\164\000\000"};
static struct {
   word f0[166]; word f166; word f167; word f168; 
   word f169; word f170; word f171; word f172; 
   word f173; word f174; word f175; word f176; 
   word f177; word f178; word f179; word f180; 
   word f181; word f182; word f183; word f184; 
   word f185; 
   } globalframe = {
   {0}, (word) Eq←P600, 0, (word) Example1←P540, 
   0, (word) F2←P480, 0, (word) F1←P420, 
   0, (word) F0←P360, 0, (word) S30←P300, 
   0, (word) S5←P240, 0, (word) OneM←P180, 
   0, (word) WholeMessage16←P60, 0, (word) SHSImpl←P0, 
   0
   };

static void NoName←Q1092()
   {
   register ptr gf←c076 =  (ptr) &globalframe;
   (* (( (ptr) gf←c076)+164) ) = (word) XR←GetTypeIndexS((word) (&string1));
   (* (( (ptr) gf←c076)+165) ) = (word) XR←GetTypeIndexS((word) (&string2));
   (void) XR←DeclareGlobalFrame((word) "SHSImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string3)), (word) (( (bPt) gf←c076)+736)
      /* var←c6408 */ );
   }

static void SHSImpl←P0(formal←c018, formal←c014)
   word formal←c018;
   word formal←c014;
   {
   register ptr gf←c7464 =  (ptr) &globalframe;
   /* SHSImpl: */ 
SOURCE(22, 2291)
SOURCE(2029, 284)
   {
      register word i←v4016 = 0;
      lab←L100003: ;
SOURCE(2058, 112)
      {
         word var←c6440;
         var←c6440 = i←v4016;
         if ((var←c6440 <= 19)) {
            (* ((( (ptr) gf←c7464)+4)/* F←v2664 */ +i←v4016) ) = XR←CheckProc((word) (( (bPt) gf←c7464)+696)/* var←c6248 */ );
            goto endif04;
            };
         if (((var←c6440 - 20) <= 19)) {
            (* ((( (ptr) gf←c7464)+4)/* F←v2664 */ +i←v4016) ) = XR←CheckProc((word) (( (bPt) gf←c7464)+688)/* var←c6216 */ );
            goto endif04;
            };
         if (((var←c6440 - 40) <= 19)) {
            (* ((( (ptr) gf←c7464)+4)/* F←v2664 */ +i←v4016) ) = XR←CheckProc((word) (( (bPt) gf←c7464)+680)/* var←c6184 */ );
            goto endif04;
            };
         if (((var←c6440 - 60) <= 19)) {
            (* ((( (ptr) gf←c7464)+4)/* F←v2664 */ +i←v4016) ) = XR←CheckProc((word) (( (bPt) gf←c7464)+688)/* var←c6216 */ );
            goto endif04;
            };
         (* ((( (ptr) gf←c7464)+4)/* F←v2664 */ +i←v4016) ) = XR←CheckProc(
            XR←RaiseUnnamedError(), 0
            );
         goto endif04;
         endif04: ;
         };
SOURCE(2172, 141)
      {
         word var←c6472;
         var←c6472 = i←v4016;
         if ((var←c6472 <= 19)) {
            (* ((( (ptr) gf←c7464)+84)/* K←v2692 */ +i←v4016) ) = 1518500249;
            goto endif05;
            };
         if (((var←c6472 - 20) <= 19)) {
            (* ((( (ptr) gf←c7464)+84)/* K←v2692 */ +i←v4016) ) = 1859775393;
            goto endif05;
            };
         if (((var←c6472 - 40) <= 19)) {
            (* ((( (ptr) gf←c7464)+84)/* K←v2692 */ +i←v4016) ) = 2400959708;
            goto endif05;
            };
         if (((var←c6472 - 60) <= 19)) {
            (* ((( (ptr) gf←c7464)+84)/* K←v2692 */ +i←v4016) ) = 3395469782;
            goto endif05;
            };
         (* ((( (ptr) gf←c7464)+84)/* K←v2692 */ +i←v4016) ) = (
            XR←RaiseUnnamedError(), 0
            );
         goto endif05;
         endif05: ;
         };
      if ((i←v4016 >= 79)) {
         goto lab←L100000;
         };
      i←v4016 = (i←v4016 + 1);
      goto lab←L100003;
      lab←L100000: ;
      };
   }

static word WholeMessage16←P60(m←v2996)
   word m←v2996;
   {
   register ptr gf←c7496 =  (ptr) &globalframe;
   word var←c3040;
   word h←v4080;
   /* WholeMessage16: */ 
SOURCE(69, 176)
SOURCE(131, 91)
   h←v4080 = XR←NewObject(20, (* (( (ptr) gf←c7496)+164) ));
   (*  (ptr) h←v4080 ) = 1732584193;
   (* (( (ptr) h←v4080)+1) ) = 4023233417;
   (* (( (ptr) h←v4080)+2) ) = 2562383102;
   (* (( (ptr) h←v4080)+3) ) = 271733878;
   (* (( (ptr) h←v4080)+4) ) = 3285377520;
SOURCE(224, 10)
   (void) OneM←P180(m←v2996, h←v4080);
SOURCE(236, 9)
   return(h←v4080);
   }

static void OneM←P180(m←v3364, h←v3392)
   word m←v3364;
   word h←v3392;
   {
   register ptr gf←c7528 =  (ptr) &globalframe;
   W80 w←v4124;
   word temp←v4152;
   W5 A←v4180;
   /* OneM: */ 
SOURCE(545, 441)
SOURCE(621, 20)
   A←v4180 = (*  (W5Pt) h←v3392 );
SOURCE(643, 36)
   {
      register word i←v4224 = 0;
      if (( (int)i←v4224 >  (int)15)) {
         goto lab←L100004;
         };
      lab←L100007: ;
SOURCE(668, 11)
      (* (( (ptr) &w←v4124)+i←v4224) ) = (* (( (ptr) m←v3364)+i←v4224) );
      if (( (int)i←v4224 >=  (int)15)) {
         goto lab←L100004;
         };
      i←v4224 = (i←v4224 + 1);
      goto lab←L100007;
      lab←L100004: ;
      };
SOURCE(690, 80)
   {
      register word t←v4268 = 16;
      if (( (int)t←v4268 >  (int)79)) {
         goto lab←L100008;
         };
      lab←L100011: ;
SOURCE(716, 54)
      {
         word var←c6536;
         {
            word var←c6568;
            word x←v5892;
            word y←v5920;
            x←v5892 = (* (( (ptr) &w←v4124)+(t←v4268 - 3)) );
            {
               word x←v5968;
               word y←v5996;
               x←v5968 = (* (( (ptr) &w←v4124)+(t←v4268 - 8)) );
               {
                  word x←v6044;
                  word y←v6072;
                  x←v6044 = (* (( (ptr) &w←v4124)+(t←v4268 - 14)) );
                  y←v6072 = (* (( (ptr) &w←v4124)+(t←v4268 - 16)) );
SOURCE(300, 27)
                  y←v5996 = (word) XRM←BITXOR(x←v6044, y←v6072);
                  };
SOURCE(300, 27)
               y←v5920 = (word) XRM←BITXOR(x←v5968, y←v5996);
               };
SOURCE(300, 27)
            var←c6568 = (word) XRM←BITXOR(x←v5892, y←v5920);
            var←c6536 = var←c6568;
            };
         (* (( (ptr) &w←v4124)+t←v4268) ) = var←c6536;
         };
      if (( (int)t←v4268 >=  (int)79)) {
         goto lab←L100008;
         };
      t←v4268 = (t←v4268 + 1);
      goto lab←L100011;
      lab←L100008: ;
      };
SOURCE(781, 154)
   {
      register word t←v4312 = 0;
      if (( (int)t←v4312 >  (int)79)) {
         goto lab←L100015;
         };
      lab←L100018: ;
SOURCE(806, 59)
      {
         word pd6;
         pd6 = (* ((( (ptr) gf←c7528)+4)/* F←v2664 */ +t←v4312) );
         temp←v4152 = (((((word) S5←P240(A←v4180.f0) + (word) ( *( (fPt) ((*  (ptr) pd6 ))))(A←v4180.f1, A←v4180.f2, A←v4180.f3, pd6)
         ) + A←v4180.f4) + (* (( (ptr) &w←v4124)+t←v4312) )) + (* ((( (ptr) gf←c7528)+84)/* K←v2692 */ +t←v4312) ));
         };
SOURCE(867, 11)
      A←v4180.f4 = A←v4180.f3;
SOURCE(880, 11)
      A←v4180.f3 = A←v4180.f2;
SOURCE(893, 16)
      {
         word var←c6760;
         var←c6760 = (word) S30←P300(A←v4180.f1);
         A←v4180.f2 = var←c6760;
         };
SOURCE(911, 11)
      A←v4180.f1 = A←v4180.f0;
SOURCE(924, 11)
      A←v4180.f0 = temp←v4152;
      if (( (int)t←v4312 >=  (int)79)) {
         goto lab←L100015;
         };
      t←v4312 = (t←v4312 + 1);
      goto lab←L100018;
      lab←L100015: ;
      };
SOURCE(946, 40)
   {
      register word i←v4356 = 0;
      if (( (int)i←v4356 >  (int)4)) {
         goto lab←L100019;
         };
      lab←L100022: ;
SOURCE(970, 16)
      (* (( (ptr) h←v3392)+i←v4356) ) = ((* (( (ptr) h←v3392)+i←v4356) ) + (* (( (ptr) &A←v4180)+i←v4356) ));
      if (( (int)i←v4356 >=  (int)4)) {
         goto lab←L100019;
         };
      i←v4356 = (i←v4356 + 1);
      goto lab←L100022;
      lab←L100019: ;
      };
   }

static word S5←P240(x←v3488)
   word x←v3488;
   {
   word var←c3532;
   /* S5: */ 
SOURCE(1048, 109)
SOURCE(1084, 73)
   {
      word var←c6824;
      word var←c6856;
      var←c6824 = (word) XRM←BITLSHIFT(x←v3488, 5);
      var←c6856 = (word) XRM←BITRSHIFT(x←v3488, 27);
      return((word) XRM←BITOR(var←c6824, var←c6856));
      };
   }

static word S30←P300(x←v3592)
   word x←v3592;
   {
   word var←c3636;
   /* S30: */ 
SOURCE(1162, 112)
SOURCE(1199, 75)
   {
      word var←c6920;
      word var←c6952;
      var←c6920 = (word) XRM←BITLSHIFT(x←v3592, 30);
      var←c6952 = (word) XRM←BITRSHIFT(x←v3592, 2);
      return((word) XRM←BITOR(var←c6920, var←c6952));
      };
   }

static word F0←P360(x←v4564, y←v4592, z←v4620)
   word x←v4564;
   word y←v4592;
   word z←v4620;
   {
   word var←c4664;
   /* F0: */ 
SOURCE(1336, 98)
SOURCE(1354, 80)
   {
      word var←c7016;
      word var←c7048;
      word var←c7080;
      var←c7016 = (word) XRM←BITAND(x←v4564, y←v4592);
      var←c7080 = (word) XRM←BITNOT(x←v4564);
      var←c7048 = (word) XRM←BITAND(var←c7080, z←v4620);
      return((word) XRM←BITOR(var←c7016, var←c7048));
      };
   }

static word F1←P420(x←v4724, y←v4752, z←v4780)
   word x←v4724;
   word y←v4752;
   word z←v4780;
   {
   word var←c4824;
   /* F1: */ 
SOURCE(1439, 69)
SOURCE(1457, 51)
   {
      word var←c7144;
      var←c7144 = (word) XRM←BITXOR(y←v4752, z←v4780);
      return((word) XRM←BITXOR(x←v4724, var←c7144));
      };
   }

static word F2←P480(x←v4884, y←v4912, z←v4940)
   word x←v4884;
   word y←v4912;
   word z←v4940;
   {
   word var←c4984;
   /* F2: */ 
SOURCE(1514, 117)
SOURCE(1532, 99)
   {
      word var←c7208;
      word var←c7240;
      word var←c7272;
      word var←c7304;
      var←c7208 = (word) XRM←BITAND(x←v4884, y←v4912);
      var←c7272 = (word) XRM←BITAND(x←v4884, z←v4940);
      var←c7304 = (word) XRM←BITAND(y←v4912, z←v4940);
      var←c7240 = (word) XRM←BITOR(var←c7272, var←c7304);
      return((word) XRM←BITOR(var←c7208, var←c7240));
      };
   }

static word Example1←P540()
   {
   register ptr gf←c7560 =  (ptr) &globalframe;
   word var←c3856;
   word m←v4400;
   word ans←v4428;
   /* Example1: */ 
SOURCE(1637, 255)
SOURCE(1674, 47)
   m←v4400 = XR←NewObject(64, (* (( (ptr) gf←c7560)+165) ));
SOURCE(1723, 93)
   ans←v4428 = XR←NewObject(20, (* (( (ptr) gf←c7560)+164) ));
   (*  (ptr) ans←v4428 ) = 23378089;
   (* (( (ptr) ans←v4428)+1) ) = 348990046;
   (* (( (ptr) ans←v4428)+2) ) = 1959065599;
   (* (( (ptr) ans←v4428)+3) ) = 137121175;
   (* (( (ptr) ans←v4428)+4) ) = 4058904704;
SOURCE(1818, 16)
   (*  (ptr) m←v4400 ) = 1633837952;
SOURCE(1836, 17)
   (* (( (ptr) m←v4400)+15) ) = 24;
SOURCE(1855, 37)
   {
      word var←c7432;
      var←c7432 = (word) WholeMessage16←P60(m←v4400);
      return((word) Eq←P600(var←c7432, ans←v4428));
      };
   }

static word Eq←P600(d1←v3916, d2←v3944)
   word d1←v3916;
   word d2←v3944;
   {
   word var←c3988;
   /* Eq: */ 
SOURCE(1897, 127)
SOURCE(1945, 65)
   {
      register word i←v4472 = 0;
      if (( (int)i←v4472 >  (int)4)) {
         goto lab←L100023;
         };
      lab←L100026: ;
SOURCE(1969, 41)
      if (((* (( (ptr) d1←v3916)+i←v4472) ) != (* (( (ptr) d2←v3944)+i←v4472) ))) {
SOURCE(1989, 21)
         return(0);
         };
      if (( (int)i←v4472 >=  (int)4)) {
         goto lab←L100023;
         };
      i←v4472 = (i←v4472 + 1);
      goto lab←L100026;
      lab←L100023: ;
      };
SOURCE(2012, 12)
   return(1);
   }

/* file: SHSImpl, module: SHSImpl, compiled at: February 7, 1992 11:40:27 am PST */ 
extern void XR←install←SHSImpl() {
   NoName←Q1092();
   }
extern void XR←run←SHSImpl() { XR←Start(&globalframe); }