/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 21, 1992 7:40:16 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: UnixTrapToMesaErrorImpl, module: UnixTrapToMesaErrorImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1569650615,4096767984] UnixTrapToMesaErrorImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef W2 *W2Pt;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q300();
static void UnixTrapToMesaErrorImpl←P0();
static void UnixHandler←P60();
static void NotifyStackOverflow←P120();
static void RipVanWinkle←P180();
static void DecodeTrap←P240();
static word NoName←Q360();
static struct {unsigned f; char r[44];} string1 = {2818092, "\216\260\007\006\154\145\156\147\164\150\210\241\000\200\177\377\005\004\164\145\170\164\254\206\012\011\155\141\170\114\145\156\147\164\150\210\241\000\200\177\377\243\261"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[48];} string3 = {3014704, "Thread stack overflow occurred in some thread.\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\135\216\367\267\300\364\057\267\360\100\164\000\000"};
static struct {unsigned f; char r[4];} string5 = {131074, "\003\013\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\064\321\106\155\300\242\071\325\060\100\150\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\240\236\274\315\300\111\163\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\354\241\072\167\300\017\164\046\072\100\164\000\000"};
static struct {
   word f0[14]; word f14; word f15; word f16; 
   word f17; word f18; word f19; word f20; 
   word f21; word f22; word f23[4]; 
   } globalframe = {
   {0}, (word) DecodeTrap←P240, 0, (word) RipVanWinkle←P180, 
   0, (word) NotifyStackOverflow←P120, 0, (word) UnixHandler←P60, 
   0, (word) UnixTrapToMesaErrorImpl←P0, {0}
   };

static void NoName←Q300()
   {
   register ptr gf←c036 =  (ptr) &globalframe;
   word var←c5736;
   (* (( (ptr) gf←c036)+9) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (*  (ptr) (( (bPt) gf←c036)+44) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c036)+9) ), (word) &string3);
   (void) XR←DeclareGlobalFrame((word) "UnixTrapToMesaErrorImpl", &globalframe, (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5)
      , (word) (( (bPt) gf←c036)+88)/* var←c5448 */ );
   var←c5736 = (word) XR←ImportInterface((word) "PreDebug", (word) XR←GetTypeIndexS((word) (&string6)), 5);
   (* (( (ptr) gf←c036)+24)/* var←c5480 */  ) = var←c5736;
   (void) XR←ImportProcS(var←c5736, 786691);
   var←c5736 = (word) XR←ImportInterface((word) "Process", (word) XR←GetTypeIndexS((word) (&string7)), 22);
   (* (( (ptr) gf←c036)+25)/* var←c5608 */  ) = var←c5736;
   (void) XR←ImportProcS(var←c5736, 134219776);
   (void) XR←ImportProcS(var←c5736, 526081);
   var←c5736 = (word) XR←ImportInterface((word) "VM", (word) XR←GetTypeIndexS((word) (&string8)), 19);
   (* (( (ptr) gf←c036)+26)/* var←c5704 */  ) = var←c5736;
   }

static void UnixTrapToMesaErrorImpl←P0(formal←c015, formal←c014)
   word formal←c015;
   word formal←c014;
   {
   register ptr gf←c5768 =  (ptr) &globalframe;
   /* UnixTrapToMesaErrorImpl: */ 
SOURCE(59, 1645)
SOURCE(1533, 59)
SOURCE(1535, 57)
   (void) XR←RegisterHandler((*  (ptr) ((( (bPt) gf←c5768)+80)/* var←c5416 */ ) ));
SOURCE(1595, 109)
   {
      word pd9;
      pd9 = (* (( (ptr) (* (( (ptr) gf←c5768)+24)/* var←c5480 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd9 ))))((word) (( (bPt) gf←c5768)+52), 0, (* (( (ptr) gf←c5768)+11) ), pd9);
      };
   }

static void UnixHandler←P60(handlee←v3476, which←v3504, arg←v3532)
   word handlee←v3476;
   word which←v3504;
   word arg←v3532;
   {
   register ptr gf←c5800 =  (ptr) &globalframe;
   /* UnixHandler: */ 
SOURCE(652, 285)
SOURCE(729, 208)
   {
      word var←c5512;
      var←c5512 = which←v3504;
      switch (var←c5512) {
         case 2: case 3: 
SOURCE(784, 25)
            (void) DecodeTrap←P240(arg←v3532);
            break;
         case 1023: 
SOURCE(850, 87)
SOURCE(853, 64)
            {
               W2 var←c5544;
               {
                  W2 var←c5576;
                  {
                     word pd10;
                     pd10 = (* (( (ptr) (* (( (ptr) gf←c5800)+25)/* var←c5608 */  ))+12) );
                     (void) ( *( (fPt) ((*  (ptr) pd10 ))))((word) (&var←c5576), pd10);
                     };
                  {
                     W2 var←c024;
                     word var←c023;
                     var←c023 = XR←ExtensionAlloc(6);
                     {
                        word tmpAddr11;
                        tmpAddr11 = (word) var←c023;
                        (*  (ptr) tmpAddr11 ) = ( ((word)  (fPt) NoName←Q360) );
                        (* (( (ptr) tmpAddr11) + 1) ) = 0;
                        (* (( (ptr) tmpAddr11) + 2) ) = (word) (( (bPt) gf←c5800)+72)/* var←c5384 */ ;
                        (* (( (ptr) tmpAddr11) + 3) ) = 0;
                        (*  (W2Pt) (( (ptr) tmpAddr11) + 4) ) = var←c5576;
                        };
                     (void) XR←Fork((word) &var←c024, var←c023);
                     var←c5544 = var←c024;
                     };
                  };
               {
                  word pd12;
                  pd12 = (* (( (ptr) (* (( (ptr) gf←c5800)+25)/* var←c5608 */  ))+11) );
                  (void) ( *( (fPt) ((*  (ptr) pd12 ))))(var←c5544, pd12);
                  };
               };
SOURCE(920, 14)
            (void) RipVanWinkle←P180();
            break;
         default: 
SOURCE(951, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
   }

static void NotifyStackOverflow←P120(process←v3680)
   W2 process←v3680;
   {
   register ptr gf←c5832 =  (ptr) &globalframe;
   /* NotifyStackOverflow: */ 
SOURCE(1022, 96)
SOURCE(1082, 36)
   {
      W2 var←c029;
      var←c029 = process←v3680;
      (void) XR←RaiseError((word) (( (bPt) gf←c5832)+52), (word) &var←c029);
      };
   }

static void RipVanWinkle←P180()
   {
   /* RipVanWinkle: */ 
SOURCE(1124, 54)
SOURCE(1161, 17)
   lab←L100002: ;
SOURCE(1164, 14)
   (void) XR←CallDebugger();
   goto lab←L100002;
   }

static void DecodeTrap←P240(trapInfo←v3772)
   word trapInfo←v3772;
   {
   register ptr gf←c5864 =  (ptr) &globalframe;
   word sig←v3812;
   /* DecodeTrap: */ 
SOURCE(1193, 326)
SOURCE(1254, 46)
   sig←v3812 = (*  (ptr) trapInfo←v3772 );
SOURCE(1302, 217)
   {
      word var←c5640;
      var←c5640 = sig←v3812;
      if ((var←c5640 == 11)) {
SOURCE(1329, 156)
         {
            word var←c5672;
            var←c5672 = (* (( (ptr) trapInfo←v3772)+1) );
            if (( (int)var←c5672 ==  (int)3)) {
SOURCE(1364, 36)
               {
                  word var←c034;
                  var←c034 = (* (( (ptr) trapInfo←v3772)+3) );
                  (void) XR←RaiseError((* (( (ptr) (* (( (ptr) gf←c5864)+26)/* var←c5704 */  ))+9) ), (word) &var←c034);
                  };
               }
            else {
               if (( (int)var←c5672 ==  (int)4)) {
SOURCE(1410, 41)
                  {
                     word var←c035;
                     var←c035 = (* (( (ptr) trapInfo←v3772)+3) );
                     (void) XR←RaiseError((* (( (ptr) (* (( (ptr) gf←c5864)+26)/* var←c5704 */  ))+10) ), (word) &var←c035);
                     };
                  }
               else {
SOURCE(1464, 21)
                  (void) XR←RaiseError((word) (( (bPt) gf←c5864)+48), 0);
                  };
               };
            };
         }
      else {
SOURCE(1498, 21)
         (void) XR←RaiseError((word) (( (bPt) gf←c5864)+48), 0);
         };
      };
   }

static word NoName←Q360(formal←c025)
   word formal←c025;
   {
   W2 var←c027;
   word var←c026;
   /* intermediary proc for a FORK, nArgs: 2, nRets: 0 */ 
   var←c027 = (*  (W2Pt) (( (ptr) formal←c025)+4) );
   var←c026 = (* (( (ptr) formal←c025)+2) );
   formal←c025 = XR←ExtensionFree(formal←c025);
   (void) ( *( (fPt) ((*  (ptr) var←c026 ))))((*  (W2Pt) (&var←c027) ), var←c026);
   return(0);
   }

/* file: UnixTrapToMesaErrorImpl, module: UnixTrapToMesaErrorImpl, compiled at: February 21, 1992 7:40:16 pm PST */ 
extern void XR←install←UnixTrapToMesaErrorImpl() {
   NoName←Q300();
   }
extern void XR←run←UnixTrapToMesaErrorImpl() { XR←Start(&globalframe); }