/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 21, 1992 4:39:30 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: ConvertUnsafeImpl, module: ConvertUnsafeImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2426916631,1004263386] ConvertUnsafeImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2;} W3;
typedef struct {unsigned u1:1, f:15;} * P15x1h;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static void NoName←Q1212();
static void ConvertUnsafeImpl←P0();
static void AppendRefText←P60();
static void AppendRope←P120();
static void AppendSubString←P180();
static void AppendSubStringToRefText←P240();
static word ToRefText←P300();
static word EqualSubStrings←P360();
static word SubStringToRope←P420();
static word ToRope←P480();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\220\247\317\027\300\073\333\327\332\100\164\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\332\223\177\020\300\304\076\102\260\100\164\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[12];} string4 = {720908, "\257\300\036\351\345\237\244\150\210\100\150"};
static struct {
   word f0[4]; word f4; word f5; word f6; 
   word f7; word f8; word f9; word f10; 
   word f11; word f12; word f13; word f14; 
   word f15; word f16; word f17; word f18; 
   word f19; word f20; word f21[4]; 
   } globalframe = {
   {0}, (word) ToRope←P480, 0, (word) SubStringToRope←P420, 
   0, (word) EqualSubStrings←P360, 0, (word) ToRefText←P300, 
   0, (word) AppendSubStringToRefText←P240, 0, (word) AppendSubString←P180, 
   0, (word) AppendRope←P120, 0, (word) AppendRefText←P60, 
   0, (word) ConvertUnsafeImpl←P0, {0}
   };

static void NoName←Q1212()
   {
   register ptr gf←c070 =  (ptr) &globalframe;
   word var←c8464;
   (void) XR←DeclareGlobalFrame((word) "ConvertUnsafeImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (
         ( (bPt) gf←c070)+80)/* var←c7888 */ );
   var←c8464 = (word) XR←ImportInterface((word) "RefText", (word) XR←GetTypeIndexS((word) (&string2)), 26);
   (* (( (ptr) gf←c070)+23)/* var←c8176 */  ) = var←c8464;
   (void) XR←ImportProcS(var←c8464, 67371009);
   var←c8464 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string3)), 43);
   (* (( (ptr) gf←c070)+22)/* var←c7952 */  ) = var←c8464;
   (void) XR←ImportProcS(var←c8464, 67378689);
   (void) XR←ImportProcS(var←c8464, 67634434);
   (void) XR←ImportProcS(var←c8464, 67373825);
   var←c8464 = (word) XR←ExportInterface((word) "ConvertUnsafe", (word) XR←GetTypeIndexS((word) (&string4)), 8);
   (* (( (ptr) gf←c070)+24)/* var←c8496 */  ) = var←c8464;
   (void) XR←ExportProcS(var←c8464, (word) (( (bPt) gf←c070)+72)/* var←c7856 */ , 524290);
   (void) XR←ExportProcS(var←c8464, (word) (( (bPt) gf←c070)+64)/* var←c7824 */ , 524546);
   (void) XR←ExportProcS(var←c8464, (word) (( (bPt) gf←c070)+56)/* var←c7792 */ , 1049090);
   (void) XR←ExportProcS(var←c8464, (word) (( (bPt) gf←c070)+48)/* var←c7760 */ , 1049346);
   (void) XR←ExportProcS(var←c8464, (word) (( (bPt) gf←c070)+40)/* var←c7728 */ , 67372033);
   (void) XR←ExportProcS(var←c8464, (word) (( (bPt) gf←c070)+16)/* var←c7632 */ , 67372289);
   (void) XR←ExportProcS(var←c8464, (word) (( (bPt) gf←c070)+24)/* var←c7664 */ , 67896833);
   (void) XR←ExportProcS(var←c8464, (word) (( (bPt) gf←c070)+32)/* var←c7696 */ , 68945667);
   }

static void ConvertUnsafeImpl←P0(formal←c015, formal←c014)
   word formal←c015;
   word formal←c014;
   {
   /* ConvertUnsafeImpl: */ 
   }

static void AppendRefText←P60(to←v2912, from←v2940)
   word to←v2912;
   word from←v2940;
   {
   word len←v3740;
   /* AppendRefText: */ 
SOURCE(356, 206)
SOURCE(438, 25)
   len←v3740 = (*  (hPt) to←v2912 );
SOURCE(465, 71)
   {
      register word i←v3784 = 0;
      register word noName←c7920;
      noName←c7920 = (*  (hPt) from←v2940 );
      if ((i←v3784 >= noName←c7920)) {
         goto lab←L100000;
         };
      lab←L100003: ;
SOURCE(504, 17)
      {
         word limit5;
         word limit6;
         (* ((( (bPt) to←v2912)+4)+(
               limit5 = (word) (* (( (hPt) to←v2912)+1) ),
               BCK(len←v3740, limit5)
               )) ) = (word) (* ((( (bPt) from←v2940)+4)+(
               limit6 = (word) (* (( (hPt) from←v2940)+1) ),
               BCK(i←v3784, limit6)
               )) );
         };
SOURCE(523, 13)
      len←v3740 = (len←v3740 + 1);
      i←v3784 = (i←v3784 + 1);
      if ((i←v3784 < noName←c7920)) {
         goto lab←L100003;
         };
      lab←L100000: ;
      };
SOURCE(547, 15)
   (*  (hPt) to←v2912 ) = BCK(len←v3740, 65536);
   }

static void AppendRope←P120(to←v3012, from←v3040)
   word to←v3012;
   word from←v3040;
   {
   register ptr gf←c8528 =  (ptr) &globalframe;
   word len←v3828;
   /* AppendRope: */ 
SOURCE(568, 190)
SOURCE(634, 25)
   len←v3828 = (*  (hPt) to←v3012 );
SOURCE(661, 71)
   {
      register word i←v3872 = 0;
      register word noName←c7984;
      {
         word pd7;
         pd7 = (* (( (ptr) (* (( (ptr) gf←c8528)+22)/* var←c7952 */  ))+15) );
         noName←c7984 = (word) ( *( (fPt) ((*  (ptr) pd7 ))))(from←v3040, pd7);
         };
      if (( (int)i←v3872 >=  (int)noName←c7984)) {
         goto lab←L100004;
         };
      lab←L100007: ;
SOURCE(694, 23)
      {
         word var←c8016;
         {
            word pd8;
            pd8 = (* (( (ptr) (* (( (ptr) gf←c8528)+22)/* var←c7952 */  ))+9) );
            var←c8016 = (word) ( *( (fPt) ((*  (ptr) pd8 ))))(from←v3040, i←v3872, pd8);
            };
         {
            word limit9;
            (* ((( (bPt) to←v3012)+4)+(
                  limit9 = (word) (* (( (hPt) to←v3012)+1) ),
                  BCK(len←v3828, limit9)
                  )) ) = var←c8016;
            };
         };
SOURCE(719, 13)
      len←v3828 = (len←v3828 + 1);
      i←v3872 = (i←v3872 + 1);
      if (( (int)i←v3872 <  (int)noName←c7984)) {
         goto lab←L100007;
         };
      lab←L100004: ;
      };
SOURCE(743, 15)
   (*  (hPt) to←v3012 ) = BCK(len←v3828, 65536);
   }

static void AppendSubString←P180(to←v3100, from←v3128)
   word to←v3100;
   W3 from←v3128;
   {
   word len←v3916;
   /* AppendSubString: */ 
SOURCE(764, 214)
SOURCE(840, 25)
   len←v3916 = (*  (hPt) to←v3100 );
SOURCE(867, 85)
   {
      register word i←v3960 = 0;
      register word noName←c8048;
      {
         word idx10;
         noName←c8048 = (
            idx10 = (word) from←v3128.f2,
            SGNCK(idx10)
            );
         };
      if (( (int)i←v3960 >=  (int)noName←c8048)) {
         goto lab←L100008;
         };
      lab←L100011: ;
SOURCE(901, 36)
      {
         word var←c8080;
         var←c8080 = (from←v3128.f1 + i←v3960);
         {
            word limit11;
            word limit12;
            (* ((( (bPt) to←v3100)+4)+(
                  limit11 = (word) (* (( (hPt) to←v3100)+1) ),
                  BCK(len←v3916, limit11)
                  )) ) = (word) (* ((( (bPt) from←v3128.f0)+4)+(
                  limit12 = (word) (* (( (hPt) from←v3128.f0)+1) ),
                  BCK(var←c8080, limit12)
                  )) );
            };
         };
SOURCE(939, 13)
      len←v3916 = (len←v3916 + 1);
      i←v3960 = (i←v3960 + 1);
      if (( (int)i←v3960 <  (int)noName←c8048)) {
         goto lab←L100011;
         };
      lab←L100008: ;
      };
SOURCE(963, 15)
   (*  (hPt) to←v3100 ) = BCK(len←v3916, 65536);
   }

static void AppendSubStringToRefText←P240(to←v3188, from←v3216)
   word to←v3188;
   W3 from←v3216;
   {
   word len←v4004;
   /* AppendSubStringToRefText: */ 
SOURCE(984, 220)
SOURCE(1066, 25)
   len←v4004 = (*  (hPt) to←v3188 );
SOURCE(1093, 85)
   {
      register word i←v4048 = 0;
      register word noName←c8112;
      {
         word idx13;
         noName←c8112 = (
            idx13 = (word) from←v3216.f2,
            SGNCK(idx13)
            );
         };
      if (( (int)i←v4048 >=  (int)noName←c8112)) {
         goto lab←L100012;
         };
      lab←L100015: ;
SOURCE(1127, 36)
      {
         word var←c8144;
         var←c8144 = (from←v3216.f1 + i←v4048);
         {
            word limit14;
            word limit15;
            (* ((( (bPt) to←v3188)+4)+(
                  limit14 = (word) (* (( (hPt) to←v3188)+1) ),
                  BCK(len←v4004, limit14)
                  )) ) = (word) (* ((( (bPt) from←v3216.f0)+4)+(
                  limit15 = (word) (* (( (hPt) from←v3216.f0)+1) ),
                  BCK(var←c8144, limit15)
                  )) );
            };
         };
SOURCE(1165, 13)
      len←v4004 = (len←v4004 + 1);
      i←v4048 = (i←v4048 + 1);
      if (( (int)i←v4048 <  (int)noName←c8112)) {
         goto lab←L100015;
         };
      lab←L100012: ;
      };
SOURCE(1189, 15)
   (*  (hPt) to←v3188 ) = BCK(len←v4004, 32768);
   }

static word ToRefText←P300(from←v3288)
   word from←v3288;
   {
   register ptr gf←c8560 =  (ptr) &globalframe;
   word var←c3332;
   word len←v4092;
   word rt←v4120;
   /* ToRefText: */ 
SOURCE(1210, 317)
SOURCE(1275, 53)
   {
      word tc16;
      if ((from←v3288 == 0)) {
         tc16 =  (word) 0;
         }
      else {
         tc16 =  (word) (*  (hPt) from←v3288 );
         };
      len←v4092 = tc16;
      };
SOURCE(1330, 31)
   {
      word pd17;
      pd17 = (* (( (ptr) (* (( (ptr) gf←c8560)+23)/* var←c8176 */  ))+4) );
      rt←v4120 = (word) ( *( (fPt) ((*  (ptr) pd17 ))))(BCK(len←v4092, 32768), pd17);
      };
SOURCE(1363, 150)
   {
      word var←c8208;
      word var←c8272;
      {
         word text←v7584;
         text←v7584 = rt←v4120;
         var←c8208 = (text←v7584 + 4);
         };
      {
         word p←v7536;
         p←v7536 = from←v3288;
         var←c8272 = (p←v7536 + 4);
         };
      {
         word var←c8336;
         var←c8336 = BCK(len←v4092, 32768);
         (*  (hPt) rt←v4120 ) = var←c8336;
         (void) Basics←CopyBytes(var←c8208, 0, var←c8272, 0, var←c8336);
         };
      };
SOURCE(1515, 12)
   return(rt←v4120);
   }

static word EqualSubStrings←P360(s1←v3404, s2←v3432, case←v3460)
   W3 s1←v3404;
   W3 s2←v3432;
   word case←v3460;
   {
   word ans←v3504;
   word i1←v4176;
   word i2←v4204;
   register word n←v4232;
   word b1←v4260;
   word b2←v4288;
   /* EqualSubStrings: */ 
SOURCE(1531, 430)
SOURCE(1531, 430)
   ans←v3504 = 1;
SOURCE(1671, 43)
   if ((s1←v3404.f2 != s2←v3432.f2)) {
SOURCE(1701, 13)
      return(0);
      };
SOURCE(1716, 12)
   b1←v4260 = s1←v3404.f0;
SOURCE(1730, 14)
   i1←v4176 = s1←v3404.f1;
SOURCE(1746, 12)
   b2←v4288 = s2←v3432.f0;
SOURCE(1760, 14)
   i2←v4204 = s2←v3432.f1;
SOURCE(1776, 185)
   n←v4232 = s1←v3404.f2;
   lab←L100021: ;
   if ((n←v4232 > 0)) {
      }
   else {
      goto lab←L100018;
      };
   {
      word c1←v4332;
      word c2←v4360;
SOURCE(1816, 17)
      {
         word limit18;
         c1←v4332 = (word) (* ((( (bPt) b1←v4260)+4)+(
               limit18 = (word) (* (( (hPt) b1←v4260)+1) ),
               BCK(i1←v4176, limit18)
               )) );
         };
SOURCE(1835, 17)
      {
         word limit19;
         c2←v4360 = (word) (* ((( (bPt) b2←v4288)+4)+(
               limit19 = (word) (* (( (hPt) b2←v4288)+1) ),
               BCK(i2←v4204, limit19)
               )) );
         };
SOURCE(1854, 78)
      if ((c1←v4332 != c2←v4360)) {
SOURCE(1870, 62)
         if ((0 != case←v3460) || ( ( ((c1←v4332 - 65) <= 25) ? (c1←v4332 + 32) : c1←v4332 )  !=  ( ((c2←v4360 - 65) <= 25) ? (c2←v4360 + 
         32) : c2←v4360 ) )) {
SOURCE(1918, 14)
            return(0);
            };
         };
SOURCE(1937, 11)
      i1←v4176 = (i1←v4176 + 1);
SOURCE(1950, 11)
      i2←v4204 = (i2←v4204 + 1);
      };
   n←v4232 = (n←v4232 - 1);
   goto lab←L100021;
   lab←L100018: ;
SOURCE(1531, 430)
   return(ans←v3504);
   }

static word SubStringToRope←P420(from←v3564)
   W3 from←v3564;
   {
   register ptr gf←c8592 =  (ptr) &globalframe;
   word rt←v3608;
   word len←v4404;
   /* SubStringToRope: */ 
SOURCE(1976, 239)
SOURCE(1976, 239)
   rt←v3608 = 0;
SOURCE(2054, 58)
   len←v4404 =  ( (from←v3564.f0 == 0) ? 0 : from←v3564.f2 ) ;
SOURCE(2114, 17)
   {
      word pd20;
      pd20 = (* (( (ptr) (* (( (ptr) gf←c8592)+22)/* var←c7952 */  ))+34) );
      rt←v3608 = (word) ( *( (fPt) ((*  (ptr) pd20 ))))(BCK(len←v4404, 32768), pd20);
      };
SOURCE(2133, 15)
   ((P15x1h) rt←v3608)->f = BCK(len←v4404, 32768);
SOURCE(2150, 65)
   {
      register word i←v4448 = 0;
      if ((i←v4448 >= len←v4404)) {
         goto lab←L100022;
         };
      lab←L100025: ;
SOURCE(2181, 34)
      {
         word var←c8368;
         var←c8368 = (from←v3564.f1 + i←v4448);
         {
            word limit21;
            word limit22;
            (* ((( (bPt) rt←v3608)+4)+(
                  limit21 = (word) ( (((unsigned)(* (( (hPt) rt←v3608)+1) ) << 17) >> 17) ),
                  BCK(i←v4448, limit21)
                  )) ) = (word) (* ((( (bPt) from←v3564.f0)+4)+(
                  limit22 = (word) (* (( (hPt) from←v3564.f0)+1) ),
                  BCK(var←c8368, limit22)
                  )) );
            };
         };
      i←v4448 = (i←v4448 + 1);
      if ((i←v4448 < len←v4404)) {
         goto lab←L100025;
         };
      lab←L100022: ;
      };
SOURCE(1976, 239)
   return(rt←v3608);
   }

static word ToRope←P480(from←v3668)
   word from←v3668;
   {
   register ptr gf←c8624 =  (ptr) &globalframe;
   word var←c3712;
   word len←v4492;
   word rt←v4520;
   /* ToRope: */ 
SOURCE(2230, 292)
SOURCE(2288, 53)
   {
      word tc23;
      if ((from←v3668 == 0)) {
         tc23 =  (word) 0;
         }
      else {
         tc23 =  (word) (*  (hPt) from←v3668 );
         };
      len←v4492 = tc23;
      };
SOURCE(2343, 23)
   {
      word pd24;
      pd24 = (* (( (ptr) (* (( (ptr) gf←c8624)+22)/* var←c7952 */  ))+34) );
      rt←v4520 = (word) ( *( (fPt) ((*  (ptr) pd24 ))))(BCK(len←v4492, 32768), pd24);
      };
SOURCE(2368, 140)
   {
      word var←c8400;
      {
         word p←v7488;
         p←v7488 = from←v3668;
         var←c8400 = (p←v7488 + 4);
         };
      (void) Basics←CopyBytes((rt←v4520 + 4), 0, var←c8400, 0, len←v4492);
      };
SOURCE(2510, 12)
   return(rt←v4520);
   }

/* file: ConvertUnsafeImpl, module: ConvertUnsafeImpl, compiled at: February 21, 1992 4:39:29 pm PST */ 
extern void XR←install←ConvertUnsafeImpl() {
   NoName←Q1212();
   }
extern void XR←run←ConvertUnsafeImpl() { XR←Start(&globalframe); }