/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 22, 1992 0:02:58 am PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: ChecksumImpl, module: ChecksumImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1147330776,1533280433] ChecksumImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q216();
static void ChecksumImpl←P0();
static word ComputeChecksum←P60();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\104\142\340\330\300\133\144\000\261\100\150\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\122\171\164\025\300\243\020\252\320\100\164\000\000"};
static struct {
   word f0[4]; word f4; word f5; word f6; 
   word f7[2]; 
   } globalframe = {
   {0}, (word) ComputeChecksum←P60, 0, (word) ChecksumImpl←P0, 
   {0}
   };

static void NoName←Q216()
   {
   register ptr gf←c016 =  (ptr) &globalframe;
   word var←c4052;
   (void) XR←DeclareGlobalFrame((word) "ChecksumImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c016)+24)
      /* var←c3924 */ );
   var←c4052 = (word) XR←ExportInterface((word) "Checksum", (word) XR←GetTypeIndexS((word) (&string2)), 3);
   (* (( (ptr) gf←c016)+8)/* var←c4020 */  ) = var←c4052;
   (void) XR←ExportProcS(var←c4052, (word) (( (bPt) gf←c016)+16)/* var←c3892 */ , 68157444);
   }

static void ChecksumImpl←P0(formal←c06, formal←c05)
   word formal←c06;
   word formal←c05;
   {
   /* ChecksumImpl: */ 
   }

static word ComputeChecksum←P60(cs←v2516, nHalfWords←v2544, p←v2572, offset←v2600)
   word cs←v2516;
   word nHalfWords←v2544;
   word p←v2572;
   word offset←v2600;
   {
   word checksum←v2656;
   word phw←v2712;
   /* ComputeChecksum: */ 
SOURCE(118, 462)
SOURCE(336, 42)
   phw←v2712 = p←v2572;
SOURCE(380, 145)
   {
      register word i←v2860;
      register word noName←c3956;
      i←v2860 = offset←v2600;
      noName←c3956 = (nHalfWords←v2544 + offset←v2600);
      if ((i←v2860 >= noName←c3956)) {
         goto lab←L100000;
         };
      lab←L100003: ;
      {
         word t←v2904;
SOURCE(430, 40)
         t←v2904 = (cs←v2516 + (word) (* (( (hPt) phw←v2712)+i←v2860) ));
SOURCE(472, 22)
         t←v2904 = ((( (((unsigned)t←v2904 << 16) >> 16) ) + ((unsigned)t←v2904 >> 16)) << 1);
SOURCE(496, 18)
         t←v2904 = (( (((unsigned)t←v2904 << 16) >> 16) ) + ((unsigned)t←v2904 >> 16));
SOURCE(516, 9)
         cs←v2516 = ( (((unsigned)t←v2904 << 16) >> 16) );
         };
      i←v2860 = (i←v2860 + 1);
      if ((i←v2860 < noName←c3956)) {
         goto lab←L100003;
         };
      lab←L100000: ;
      };
SOURCE(536, 31)
   if ((cs←v2516 == 65535)) {
SOURCE(561, 6)
      cs←v2516 = 0;
      };
SOURCE(569, 11)
   return(cs←v2516);
   }

/* file: ChecksumImpl, module: ChecksumImpl, compiled at: February 22, 1992 0:02:58 am PST */ 
extern void XR←install←ChecksumImpl() {
   NoName←Q216();
   }
extern void XR←run←ChecksumImpl() { XR←Start(&globalframe); }