#include <stdio.h>
#include "prescheme.h"
long goto_arg1K0;
long goto_arg1K4;
long goto_arg1K3;
long goto_arg1K2;
long goto_arg1K1;
unsigned char goto_arg0K0;
long Sminimum_recovered_spaceS;
long Sinterrupt_templateS;
long Spending_interruptsS;
long Sdynamic_stateS;
long Sinterrupt_handlersS;
long Sexception_handlerS;
long Senabled_interruptsS;
long SvalS;
long SnargsS;
long Scode_pointerS;
long StemplateS;
long SenvS;
unsigned char Sexception_space_usedPS;
long ScontS;
long Sbottom_of_stackS;
long Sstack_limitS;
long SstackS;
long Sstack_endS;
long Sstack_beginS;
long *Sopen_vm_portsS;
FILE * *Sopen_portsS;
long Snumber_of_portsS;
long Sweak_pointer_limitS;
long Sweak_pointer_hpS;
long Ssaved_limitS;
long Ssaved_hpS;
long Sgc_countS;
unsigned char Simpure_area_countS;
unsigned char Spure_area_countS;
long *Simpure_sizesS;
long *Spure_sizesS;
long *Simpure_areasS;
long *Spure_areasS;
long Soldspace_endS;
long Soldspace_beginS;
long Snewspace_endS;
long Snewspace_beginS;
long SlimitS;
long ShpS;
FILE * Scurrent_output_portS;
FILE * Scurrent_input_portS;

unsigned char hoistD0(long start_0X, long end_1X, long type_2X)
{
  extern FILE * Scurrent_output_portS;
  extern long SlimitS;
  extern long ShpS;
  long arg1K0;
  long addr_3X;
  long d_4X;

 {arg1K0 = start_0X;
  goto L10156;}
 L10156: {
  addr_3X = arg1K0;
  if ((addr_3X < end_1X)) {
    d_4X = *((long *) addr_3X);
    if ((2 == (3 & d_4X))) {
      if ((type_2X == (31 & (((d_4X)>>2))))) {
        if (((16 + (ShpS)) < (SlimitS))) {
          *((long *) (ShpS)) = (7 + addr_3X);
          ShpS = (4 + (ShpS));
          arg1K0 = (4 + (addr_3X + (-4 & (3 + ((long)(((unsigned long)d_4X)>>8))))));
          goto L10156;}
        else {
          return(0);}}
      else {
        arg1K0 = (4 + (addr_3X + (-4 & (3 + ((long)(((unsigned long)d_4X)>>8))))));
        goto L10156;}}
    else {
      fputs("heap is in an inconsistent state.", (Scurrent_output_portS));
      return(0);}}
  else {
    return(1);}}}

unsigned char hoistD1(long start_5X, long end_6X, long x_7X)
{
  extern FILE * Scurrent_output_portS;
  extern long SlimitS;
  extern long ShpS;
  long arg1K1;
  long arg1K0;
  long i_8X;
  long h_9X;
  long bucket_10X;
  long index_11X;
  long b_12X;
  long new_13X;
  long addr_14X;
  long d_15X;
  long obj_16X;
  long v_17X;
  long s_18X;
  long n_19X;

 {arg1K0 = start_5X;
  goto L17328;}
 L13673: {
  i_8X = arg1K0;
  h_9X = arg1K1;
  if ((i_8X < n_19X)) {
    arg1K0 = (1 + i_8X);
    arg1K1 = (h_9X + ((long)((((long)(*((unsigned char *) ((-3 + s_18X) + i_8X))))))));
    goto L13673;}
  else {
    index_11X = h_9X & (-1 + v_17X);
    bucket_10X = *((long *) ((-3 + x_7X) + (((index_11X)<<2))));
    arg1K0 = bucket_10X;
    goto L13571;}}
 L13571: {
  b_12X = arg1K0;
  if ((25 == b_12X)) {
    *((long *) (ShpS)) = 2050;
    ShpS = (4 + (ShpS));
    new_13X = 3 + (ShpS);
    ShpS = (8 + (ShpS));
    *((long *) (-4 + (ShpS))) = 0;
    *((long *) (-3 + new_13X)) = obj_16X;
    *((long *) (1 + new_13X)) = bucket_10X;
    *((long *) ((-3 + x_7X) + (((index_11X)<<2)))) = new_13X;
    arg1K0 = (4 + (addr_14X + (-4 & (3 + ((long)(((unsigned long)d_15X)>>8))))));
    goto L17328;}
  else {
    if ((obj_16X == (*((long *) (-3 + b_12X))))) {
      arg1K0 = (4 + (addr_14X + (-4 & (3 + ((long)(((unsigned long)d_15X)>>8))))));
      goto L17328;}
    else {
      arg1K0 = (*((long *) (1 + b_12X)));
      goto L13571;}}}
 L17328: {
  addr_14X = arg1K0;
  if ((addr_14X < end_6X)) {
    d_15X = *((long *) addr_14X);
    if ((2 == (3 & d_15X))) {
      if ((1 == (31 & (((d_15X)>>2))))) {
        if (((12 + (ShpS)) < (SlimitS))) {
          obj_16X = 7 + addr_14X;
          v_17X = (((3 + ((long)(((unsigned long)(*((long *) (-7 + x_7X))))>>8))))>>2);
          s_18X = *((long *) (-3 + obj_16X));
          n_19X = -1 + ((long)(((unsigned long)(*((long *) (-7 + s_18X))))>>8));
          arg1K0 = 0;
          arg1K1 = 0;
          goto L13673;}
        else {
          return(0);}}
      else {
        arg1K0 = (4 + (addr_14X + (-4 & (3 + ((long)(((unsigned long)d_15X)>>8))))));
        goto L17328;}}
    else {
      fputs("heap is in an inconsistent state.", (Scurrent_output_portS));
      return(0);}}
  else {
    return(1);}}}

long Tinterpret()
{
  extern void really_write_number(long, FILE *);
  extern FILE * Scurrent_output_portS;
  extern long copy_weak_pointer(long);
  extern long Sinterrupt_templateS;
  extern unsigned char Sexception_space_usedPS;
  extern long extended_vm(long, long);
  extern long ps_real_time();
  extern long ps_run_time();
  extern long ps_ticks_per_second();
  extern unsigned char lookup_external_name(long, long);
  extern long ps_schedule_interrupt(long);
  extern long Sinterrupt_handlersS;
  extern long Sexception_handlerS;
  extern long Sdynamic_stateS;
  extern long *Simpure_sizesS;
  extern long *Simpure_areasS;
  extern unsigned char hoistD0(long, long, long);
  extern long *Spure_sizesS;
  extern long *Spure_areasS;
  extern unsigned char hoistD1(long, long, long);
  extern long Sgc_countS;
  extern long Sminimum_recovered_spaceS;
  extern unsigned char Spure_area_countS;
  extern unsigned char Simpure_area_countS;
  extern long Sweak_pointer_hpS;
  extern void do_gc();
  extern long Snewspace_endS;
  extern long Ssaved_limitS;
  extern long Ssaved_hpS;
  extern long Snewspace_beginS;
  extern long Soldspace_beginS;
  extern long Soldspace_endS;
  extern FILE * *Sopen_portsS;
  extern long Snumber_of_portsS;
  extern long *Sopen_vm_portsS;
  extern long Senabled_interruptsS;
  extern long Spending_interruptsS;
  extern long Sbottom_of_stackS;
  extern long ScontS;
  extern long Sstack_beginS;
  extern long StemplateS;
  extern long SenvS;
  extern long Sstack_limitS;
  extern long SstackS;
  extern long Sstack_endS;
  extern long SlimitS;
  extern long ShpS;
  extern long SvalS;
  extern long Scode_pointerS;
  extern long SnargsS;
  extern long Tinterpret();
  unsigned char arg3K3;
  unsigned char arg3K0;
  FILE * arg2K0;
  unsigned char arg0K0;
  long arg1K2;
  long arg1K1;
  long arg1K0;
  unsigned char merged_arg0K0;
  unsigned char merged_arg0K1;
  unsigned char merged_arg0K3;
  FILE * merged_arg2K1;
  long merged_arg1K4;
  long merged_arg1K3;
  long merged_arg1K2;
  long merged_arg1K1;
  long merged_arg1K0;
  long RSenvS = SenvS;
  long RSstackS = SstackS;
  long RSvalS = SvalS;
  long RScode_pointerS = Scode_pointerS;

  int extract_string_return_tag;
  unsigned char *extract_string_return_value;
  int stob_equalP_return_tag;
  unsigned char stob_equalP_return_value;
  int write_number_return_tag;
  int close_port_return_tag;
  int close_untraced_portsB_return_tag;
  unsigned char close_untraced_portsB_return_value;
  int copy_object_return_tag;
  long copy_object_return_value;
  int copy_next_return_tag;
  long copy_next_return_value;
  int collect_saving_temp_return_tag;
  long collect_saving_temp_return_value;
  int pop_args_list_return_tag;
  long pop_args_list_return_value;
  int push_continuationB_return_tag;
  int push_exception_continuationB_return_tag;
  int copy_stob_return_tag;
  long copy_stob_return_value;
  int save_env_in_heap_return_tag;
  long save_env_in_heap_return_value;
  int copy_continuation_from_heap_return_tag;
  long copy_continuation_from_heap_return_value;
  int preserve_continuation_return_tag;
  long preserve_continuation_return_value;
  int copy_stack_into_heap_return_tag;
  unsigned char b_20X;
  unsigned char b_21X;
  long space_22X;
  long v_23X;
  unsigned char b_24X;
  long env_25X;
  unsigned char b_26X;
  long location_27X;
  unsigned char b_28X;
  long location_29X;
  unsigned char b_30X;
  unsigned char b_31X;
  long space_32X;
  long v_33X;
  long cont_34X;
  long list_35X;
  long proc_36X;
  long v_37X;
  long cont_38X;
  long pc_39X;
  long tem_40X;
  long cont_41X;
  long tem_42X;
  unsigned char b_43X;
  long tem_44X;
  unsigned char b_45X;
  unsigned char b_46X;
  unsigned char b_47X;
  unsigned char b_48X;
  unsigned char b_49X;
  long val_50X;
  long z_51X;
  long x_52X;
  long arg2_53X;
  long arg2_54X;
  long arg2_55X;
  long x_56X;
  long arg2_57X;
  long arg2_58X;
  long arg2_59X;
  long x_60X;
  long arg2_61X;
  long arg2_62X;
  long arg2_63X;
  long arg2_64X;
  long arg2_65X;
  long arg2_66X;
  long x_67X;
  long result_68X;
  long x_69X;
  long value_70X;
  long count_71X;
  long x_72X;
  long x_73X;
  unsigned char b_74X;
  long x_75X;
  long space_76X;
  unsigned char b_77X;
  unsigned char b_78X;
  long x_79X;
  long arg2_80X;
  long temp_81X;
  long size_82X;
  unsigned char b_83X;
  long len_84X;
  long x_85X;
  long len_86X;
  unsigned char b_87X;
  long index_88X;
  long len_89X;
  unsigned char b_90X;
  long index_91X;
  long x_92X;
  long size_93X;
  long len_94X;
  long init_95X;
  long obj_96X;
  long arg2_97X;
  long arg3_98X;
  long arg2_99X;
  long obj_100X;
  long arg2_101X;
  long descriptor_102X;
  long x_103X;
  long obj_104X;
  long x_105X;
  long p_106X;
  unsigned char Kchar_107X;
  long c_108X;
  long x_109X;
  unsigned char b_110X;
  long p_111X;
  long arg2_112X;
  long p_113X;
  long a_114X;
  long old_115X;
  long arg2_116X;
  unsigned char v_117X;
  long start_hp_118X;
  long x_119X;
  long obj_120X;
  unsigned char v_121X;
  long start_hp_122X;
  long type_123X;
  long obj_124X;
  long obj_125X;
  long tem_126X;
  unsigned char v_127X;
  long name_128X;
  long value_129X;
  long x_130X;
  long obj_131X;
  long n_132X;
  long n_133X;
  long arg2_134X;
  long return_value_135X;
  long key_136X;
  long x_137X;
  long n_138X;
  long x_139X;
  long obj_140X;
  unsigned char b_141X;
  long space_142X;
  long arg2_143X;
  long obj_144X;
  unsigned char x_145X;
  long arg2_146X;
  long arg2_147X;
  long x_148X;
  long key_149X;
  long n_150X;
  long proc_151X;
  long p_152X;
  long n_153X;
  long temp_154X;
  long *areas_155X;
  long *sizes_156X;
  unsigned char count_157X;
  long *areas_158X;
  long *sizes_159X;
  unsigned char count_160X;
  long x_161X;
  long key_162X;
  long arg2_163X;
  long arg3_164X;
  long obj_165X;
  long x_166X;
  unsigned char *spec_167X;
  FILE * port_168X;
  long b_169X;
  long e_170X;
  long v_171X;
  long arg2_172X;
  long p_173X;
  long p_174X;
  long x_175X;
  long x_176X;
  long p_177X;
  FILE * v_178X;
  long x_179X;
  long c_180X;
  unsigned char Kchar_181X;
  long x_182X;
  long x_183X;
  long obj_184X;
  long x_185X;
  long arg2_186X;
  long x_187X;
  long arg2_188X;
  long arg3_189X;
  unsigned char Kchar_190X;
  long index_191X;
  long len_192X;
  long index_193X;
  long len_194X;
  long arg2_195X;
  unsigned char init_196X;
  long len_197X;
  long size_198X;
  long value_199X;
  long index_200X;
  long len_201X;
  long index_202X;
  long len_203X;
  long arg2_204X;
  long arg2_205X;
  long arg3_206X;
  long arg2_207X;
  long arg2_208X;
  long x_209X;
  unsigned char b_210X;
  unsigned char b_211X;
  long x_212X;
  unsigned char b_213X;
  long x_214X;
  long arg2_215X;
  long x_216X;
  long arg2_217X;
  long x_218X;
  long x_219X;
  long arg2_220X;
  long x_221X;
  long x_222X;
  long x_223X;
  long a_224X;
  long b_225X;
  long x_226X;
  long a_227X;
  long b_228X;
  long x_229X;
  long arg2_230X;
  long x_231X;
  long a_232X;
  long b_233X;
  long x_234X;
  long z_235X;
  long x_236X;
  long a_237X;
  long b_238X;
  long arg2_239X;
  long x_240X;
  long x_241X;
  long x_242X;
  long x_243X;
  long x_244X;
  long arg2_245X;
  long x_246X;
  unsigned char b_247X;
  unsigned char b_248X;
  unsigned char b_249X;
  unsigned char b_250X;
  long consumer_251X;
  long start_arg_252X;
  long start_loc_253X;
  unsigned char b_254X;
  unsigned char b_255X;
  unsigned char b_256X;
  long space_257X;
  unsigned char b_258X;
  long p_259X;
  long env_260X;
  unsigned char b_261X;
  long env_262X;
  unsigned char b_263X;
  long env_264X;
  unsigned char b_265X;
  unsigned char b_266X;
  long env_267X;
  unsigned char b_268X;
  long v_269X;
  unsigned char count_270X;
  long space_271X;
  long vector_272X;
  long i_273X;
  unsigned char v_274X;
  long *areas_275X;
  long *sizes_276X;
  unsigned char count_277X;
  long i_278X;
  unsigned char v_279X;
  long h_280X;
  long addr_281X;
  long h_282X;
  long d_283X;
  long sym_284X;
  long v_285X;
  long val_286X;
  long i_287X;
  long h_288X;
  long bucket_289X;
  long index_290X;
  long new_291X;
  long new_292X;
  long b_293X;
  unsigned char v_294X;
  long new_295X;
  long stob_296X;
  long from_297X;
  long from_298X;
  long to_299X;
  long arg2_300X;
  long obj_301X;
  long table_302X;
  long v_303X;
  long n_304X;
  long arg2_305X;
  long n_306X;
  long new_307X;
  long len_308X;
  long obj_309X;
  long l_310X;
  long i_311X;
  long i_312X;
  long h_313X;
  unsigned char v_314X;
  long i_315X;
  unsigned char v_316X;
  long resume_proc_317X;
  long size_318X;
  long b_319X;
  long e_320X;
  unsigned char v_321X;
  long val_322X;
  long c_323X;
  long val_324X;
  long key_325X;
  long arg2_326X;
  long mode_327X;
  long i_328X;
  long i_329X;
  long i_330X;
  long i_331X;
  long index_332X;
  long new_count_333X;
  long old_count_334X;
  FILE * *new_ports_335X;
  long *new_vm_ports_336X;
  FILE * port_337X;
  long new_338X;
  long index_339X;
  long filename_340X;
  unsigned char *spec_341X;
  unsigned char *spec_342X;
  long filename_343X;
  unsigned char v_344X;
  long new_345X;
  long len_346X;
  long string_347X;
  long i_348X;
  long new_349X;
  long code_vector_350X;
  long i_351X;
  long val_352X;
  long i_353X;
  unsigned char okayP_354X;
  long init_355X;
  long new_356X;
  long len_357X;
  long new_358X;
  long len_359X;
  unsigned char b_360X;
  unsigned char b_361X;
  long new_362X;
  long i_363X;
  long n_364X;
  long b_365X;
  long c_366X;
  long a_367X;
  long b_368X;
  long c_369X;
  long a_370X;
  long n_371X;
  long b_372X;
  long c_373X;
  long a_374X;
  long q_375X;
  long a_376X;
  long b_377X;
  long b_378X;
  long c_379X;
  long a_380X;
  long b_381X;
  long lo_a_382X;
  long lo_b_383X;
  long hi_a_384X;
  long hi_b_385X;
  long lo_c_386X;
  long mid_c_387X;
  long c_388X;
  long a_389X;
  long offset_390X;
  long list_391X;
  long a_392X;
  long new_393X;
  long l_394X;
  long last_395X;
  long new_396X;
  long a_397X;
  long i_398X;
  long l_399X;
  long space_400X;
  long overflow_401X;
  long args_402X;
  long fast_403X;
  long len_404X;
  long slow_405X;
  unsigned char move_slowP_406X;
  long nargs_407X;
  long args_408X;
  long args_409X;
  long loc_410X;
  long arg_411X;
  long v_412X;
  long key_413X;
  long v_414X;
  long space_415X;
  long key_416X;
  long p_417X;
  long v_418X;
  long env_419X;
  unsigned char b_420X;
  long a_421X;
  long new_422X;
  long env_423X;
  long i_424X;
  unsigned char b_425X;
  long env_426X;
  long i_427X;
  unsigned char b_428X;
  long args_429X;
  long new_430X;
  long len_431X;
  unsigned char b_432X;
  unsigned char b_433X;
  long v_434X;
  unsigned char v_435X;
  unsigned char v_436X;
  unsigned char v_437X;
  unsigned char v_438X;
  unsigned char v_439X;
  unsigned char v_440X;
  unsigned char v_441X;
  unsigned char v_442X;
  long r_443X;
  unsigned char v_444X;
  unsigned char v_445X;
  unsigned char v_446X;
  unsigned char v_447X;
  long v_448X;
  long key_449X;
  long v_450X;
  long cont_451X;
  long tem_452X;
  long pc_453X;
  long args_454X;
  long v_455X;
  long v_456X;
  long cont_457X;
  long v_458X;
  unsigned char next_op_459X;
  long v_460X;
  long next_461X;
  long cont_462X;
  long tem_463X;
  long pc_464X;
  long args_465X;
  long v_466X;
  long v_467X;
  long args_468X;
  long a1_469X;
  long obj_470X;
  long space_471X;
  long v_472X;
  unsigned char x_473X;
  long tem_474X;
  long obj_475X;
  long space_476X;
  long obj_477X;
  long i_478X;
  long m_479X;
  long obj_480X;
  long tem_481X;
  long v_482X;
  long key_483X;
  long n_484X;
  long i_485X;
  long i_486X;
  long vec_487X;
  long p_488X;
  long i_489X;
  long new_490X;
  long len_491X;
  long p_492X;
  long v_493X;
  long cont_494X;
  long previous_495X;
  long v_496X;
  long cont_497X;
  long p_498X;
  long new_499X;
  long v_500X;
  long end_501X;
  long top_502X;
  long new_cont_503X;
  long v_504X;
  long from_505X;
  long from_506X;
  long to_507X;
  long new_508X;
  long env_509X;
  long p_510X;
  long env_511X;
  long new_512X;
  long cont_513X;
  long env_514X;
  long new_515X;
  long len_516X;
  long from_517X;
  long to_518X;
  long new_519X;
  long bytes_520X;
  long from_521X;
  long p_522X;
  long i_523X;
  long key_524X;
  long pc_525X;
  long template_526X;
  long cont_527X;
  long space_528X;
  long args_529X;
  long count_530X;
  long a_531X;
  long new_532X;
  long v_533X;
  long value_534X;
  long pc_535X;
  long e_536X;
  long b_537X;
  long a_538X;
  long value_539X;
  long i_540X;
  long a_541X;
  long v_542X;
  long start_543X;
  long end_544X;
  long addr_545X;
  long v_546X;
  long cont_547X;
  long last_env_548X;
  long env_549X;
  long end_550X;
  long *areas_551X;
  long *sizes_552X;
  unsigned char count_553X;
  long env_554X;
  long end_555X;
  long addr_556X;
  long v_557X;
  long addr_558X;
  long v_559X;
  long addr_560X;
  long v_561X;
  long env_562X;
  long start_563X;
  long end_564X;
  long v_565X;
  long v_566X;
  long value_567X;
  long a_568X;
  long v_569X;
  long v_570X;
  long value_571X;
  long a_572X;
  long v_573X;
  long v_574X;
  long value_575X;
  long a_576X;
  long v_577X;
  long v_578X;
  long value_579X;
  long a_580X;
  long v_581X;
  long v_582X;
  long value_583X;
  long a_584X;
  long tem_585X;
  long v_586X;
  long value_587X;
  long a_588X;
  long next_589X;
  long thing_590X;
  long value_591X;
  long a_592X;
  long a_593X;
  long h_594X;
  long descriptor_595X;
  long v_596X;
  long o_597X;
  long new_598X;
  long x1_599X;
  long i_600X;
  long port_601X;
  long header_602X;
  long header_603X;
  long new_604X;
  long string_605X;
  FILE * port_606X;
  long mode_607X;
  long index_608X;

  long v_609X;
  long z1_610X;
  long z2_611X;
  long i_612X;
  long z_613X;
  unsigned char *v_614X;
  long i_615X;
  unsigned char *c_616X;
  long string_617X;
  unsigned char c_618X;
  long stob1_619X;
  long stob2_620X;
  long x_621X;
  FILE * port_622X;
  long vm_port_623X;
  unsigned char c_624X;
  long c_625X;
  long thing_626X;
  long c_627X;
  long addr_628X;
  long c_629X;
  long value_630X;
  long c_631X;
  long start_632X;
  long count_633X;
  long code_pointer_634X;
  long size_635X;
  long c_636X;
  long old_stob_637X;
  long c_638X;
  long env_639X;
  long cont_640X;
  long key_641X;
  long c_642X;
  long cont_643X;
  long c_644X;
  long key_645X;
  unsigned char reason_646X;
  long key_647X;
  unsigned char c_648X;
  unsigned char c_649X;
  unsigned char bytes_consumed_650X;
  unsigned char c_651X;
  unsigned char nargs_652X;
  unsigned char c_653X;
  unsigned char byte_args_654X;
  unsigned char c_655X;
  unsigned char args_656X;
  long a1_657X;
  long a2_658X;
  long a3_659X;
  long a4_660X;
  unsigned char c_661X;
  unsigned char args_662X;
  long a1_663X;
  long a2_664X;
  long a3_665X;
  unsigned char c_666X;
  unsigned char args_667X;
  long a1_668X;
  long a2_669X;
  unsigned char c_670X;
  unsigned char args_671X;
  long a1_672X;
  unsigned char c_673X;
  long nargs_674X;
  unsigned char c_675X;
  unsigned char args_676X;
 START: {
  b_141X = *((unsigned char *) (RScode_pointerS));
  RScode_pointerS = (1 + (RScode_pointerS));
  switch (b_141X) {
    case 0 : {
      b_20X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if (((SnargsS) == ((long)b_20X))) {
        goto START;}
      else {
        merged_arg0K0 = 1;
        goto application_exception;}}
      break;
    case 1 : {
      b_21X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if (((SnargsS) < ((long)b_21X))) {
        merged_arg0K0 = 1;
        goto application_exception;}
      else {
        goto START;}}
      break;
    case 2 : {
      RSvalS = ((((SnargsS))<<2));
      goto START;}
      break;
    case 3 : {
      count_270X = *((unsigned char *) (RScode_pointerS));
      if (((Sstack_limitS) < (-8 + ((RSstackS) - (((((long)count_270X))<<2)))))) {
        goto L27800;}
      else {
        space_271X = 1 + (((((Sstack_endS) - (RSstackS)))>>2));
        if ((((ShpS) + (((space_271X)<<2))) < (SlimitS))) {
          arg1K0 = 0;
          goto L27833;}
        else {
          merged_arg1K0 = 0;
          collect_saving_temp_return_tag = 0;
          goto collect_saving_temp;
         collect_saving_temp_return_0:
          if ((((ShpS) + (((space_271X)<<2))) < (SlimitS))) {
            arg1K0 = 0;
            goto L27833;}
          else {
            TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
            arg1K0 = 0;
            goto L27833;}}}}
      break;
    case 4 : {
      space_22X = 2 + ((long)(*((unsigned char *) (RScode_pointerS))));
      if ((((ShpS) + (((space_22X)<<2))) < (SlimitS))) {
        goto L27866;}
      else {
        merged_arg1K0 = 0;
        collect_saving_temp_return_tag = 1;
        goto collect_saving_temp;
       collect_saving_temp_return_1:
        if ((((ShpS) + (((space_22X)<<2))) < (SlimitS))) {
          goto L27866;}
        else {
          TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
          goto L27866;}}}
      break;
    case 5 : {
      RSenvS = (*((long *) (-3 + (RSenvS))));
      goto START;}
      break;
    case 6 : {
      b_268X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if ((64 == (SnargsS))) {
        RSstackS = (4 + (RSstackS));
        merged_arg1K0 = (*((long *) (RSstackS)));
        merged_arg1K1 = ((-1 + (SnargsS)) - ((long)b_268X));
        pop_args_list_return_tag = 0;
        goto pop_args_list;
       pop_args_list_return_0:
        v_23X = pop_args_list_return_value;
        arg1K0 = v_23X;
        goto L27934;}
      else {
        merged_arg1K0 = 25;
        merged_arg1K1 = ((SnargsS) - ((long)b_268X));
        pop_args_list_return_tag = 1;
        goto pop_args_list;
       pop_args_list_return_1:
        v_269X = pop_args_list_return_value;
        arg1K0 = v_269X;
        goto L27934;}}
      break;
    case 7 : {
      b_24X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      RSvalS = (*((long *) ((-3 + (StemplateS)) + (((((long)b_24X))<<2)))));
      goto START;}
      break;
    case 8 : {
      b_266X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      env_267X = RSenvS;
      arg1K0 = env_267X;
      arg1K1 = ((long)b_266X);
      goto L27698;}
      break;
    case 9 : {
      env_264X = RSenvS;
      b_265X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      RSvalS = (*((long *) ((-3 + env_264X) + (((((long)b_265X))<<2)))));
      if ((529 == (RSvalS))) {
        merged_arg0K0 = 1;
        goto raise_exception;}
      else {
        goto START;}}
      break;
    case 10 : {
      env_262X = *((long *) (-3 + (RSenvS)));
      b_263X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      RSvalS = (*((long *) ((-3 + env_262X) + (((((long)b_263X))<<2)))));
      if ((529 == (RSvalS))) {
        merged_arg0K0 = 1;
        goto raise_exception;}
      else {
        goto START;}}
      break;
    case 11 : {
      env_260X = *((long *) (-3 + (*((long *) (-3 + (RSenvS))))));
      b_261X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      RSvalS = (*((long *) ((-3 + env_260X) + (((((long)b_261X))<<2)))));
      if ((529 == (RSvalS))) {
        merged_arg0K0 = 1;
        goto raise_exception;}
      else {
        goto START;}}
      break;
    case 12 : {
      b_26X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      env_25X = RSenvS;
      arg1K0 = env_25X;
      arg1K1 = ((long)b_26X);
      goto L28006;}
      break;
    case 13 : {
      b_28X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      location_27X = *((long *) ((-3 + (StemplateS)) + (((((long)b_28X))<<2))));
      RSvalS = (*((long *) (-3 + location_27X)));
      if ((17 == (255 & (RSvalS)))) {
        merged_arg0K0 = 1;
        merged_arg1K1 = location_27X;
        goto raise_exception1;}
      else {
        goto START;}}
      break;
    case 14 : {
      b_30X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      location_29X = *((long *) ((-3 + (StemplateS)) + (((((long)b_30X))<<2))));
      if ((273 == (*((long *) (-3 + location_29X))))) {
        merged_arg0K0 = 1;
        merged_arg1K1 = location_29X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}
      else {
        *((long *) (-3 + location_29X)) = (RSvalS);
        RSvalS = 13;
        goto START;}}
      break;
    case 15 : {
      p_259X = RSenvS;
      if ((p_259X < (Sstack_beginS))) {
        arg1K0 = 0;
        goto L28104;}
      else {
        if (((Sstack_endS) < p_259X)) {
          arg1K0 = 0;
          goto L28104;}
        else {
          arg1K0 = ((Sstack_endS) - (Sstack_beginS));
          goto L28104;}}}
      break;
    case 16 : {
      *((long *) (RSstackS)) = (RSvalS);
      RSstackS = (-4 + (RSstackS));
      goto START;}
      break;
    case 17 : {
      RSstackS = (4 + (RSstackS));
      RSvalS = (*((long *) (RSstackS)));
      goto START;}
      break;
    case 18 : {
      b_31X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      RSvalS = (*((long *) (4 + ((RSstackS) + (((((long)b_31X))<<2))))));
      goto START;}
      break;
    case 19 : {
      b_258X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      *((long *) (4 + ((RSstackS) + (((((long)b_258X))<<2))))) = (RSvalS);
      goto START;}
      break;
    case 20 : {
      b_254X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      b_255X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      b_256X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if (((Sstack_limitS) < (-276 + (RSstackS)))) {
        arg1K0 = 0;
        goto L28247;}
      else {
        space_257X = 1 + (((((Sstack_endS) - (RSstackS)))>>2));
        if ((((ShpS) + (((space_257X)<<2))) < (SlimitS))) {
          arg1K0 = 0;
          goto L28264;}
        else {
          merged_arg1K0 = 0;
          collect_saving_temp_return_tag = 2;
          goto collect_saving_temp;
         collect_saving_temp_return_2:
          if ((((ShpS) + (((space_257X)<<2))) < (SlimitS))) {
            arg1K0 = 0;
            goto L28264;}
          else {
            TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
            arg1K0 = 0;
            goto L28264;}}}}
      break;
    case 21 : {
      space_32X = 1 + (((((Sstack_endS) - (RSstackS)))>>2));
      if ((((ShpS) + (((space_32X)<<2))) < (SlimitS))) {
        arg1K0 = 0;
        goto L29948;}
      else {
        merged_arg1K0 = 0;
        collect_saving_temp_return_tag = 3;
        goto collect_saving_temp;
       collect_saving_temp_return_3:
        if ((((ShpS) + (((space_32X)<<2))) < (SlimitS))) {
          arg1K0 = 0;
          goto L29948;}
        else {
          TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
          arg1K0 = 0;
          goto L29948;}}}
      break;
    case 22 : {
      cont_34X = *((long *) (-3 + (Sbottom_of_stackS)));
      if ((1 == cont_34X)) {
        if ((0 == (3 & (RSvalS)))) {
          RSvalS = ((((RSvalS))>>2));
          SvalS = RSvalS;
          SstackS = RSstackS;
          Scode_pointerS = RScode_pointerS;
          SenvS = RSenvS;
          TTreturn_value = 0;
          return(0L);}
        else {
          RSstackS = (-11 + (Sbottom_of_stackS));
          *((long *) (-3 + (Sbottom_of_stackS))) = 1;
          merged_arg0K0 = 0;
          merged_arg1K1 = (RSvalS);
          goto raise_exception1;}}
      else {
        if ((1 == cont_34X)) {
          RSstackS = (-11 + (Sbottom_of_stackS));
          *((long *) (-3 + (Sbottom_of_stackS))) = 1;
          arg1K0 = (Sbottom_of_stackS);
          goto L28365;}
        else {
          merged_arg1K0 = cont_34X;
          copy_continuation_from_heap_return_tag = 0;
          goto copy_continuation_from_heap;
         copy_continuation_from_heap_return_0:
          v_33X = copy_continuation_from_heap_return_value;
          arg1K0 = v_33X;
          goto L28365;}}}
      break;
    case 23 : {
      SnargsS = ((long)(*((unsigned char *) (RScode_pointerS))));
      merged_arg0K0 = 0;
      goto perform_application;}
      break;
    case 24 : {
      SnargsS = ((long)(*((unsigned char *) (RScode_pointerS))));
      start_arg_252X = (RSstackS) + ((((SnargsS))<<2));
      start_loc_253X = -11 + (ScontS);
      if ((start_arg_252X < start_loc_253X)) {
        arg1K0 = start_loc_253X;
        arg1K1 = start_arg_252X;
        goto L15929;}
      else {
        goto L15912;}}
      break;
    case 25 : {
      RSstackS = (4 + (RSstackS));
      proc_36X = *((long *) (RSstackS));
      list_35X = RSvalS;
      arg1K0 = list_35X;
      arg1K1 = 0;
      arg1K2 = list_35X;
      arg3K3 = 0;
      goto L25376;}
      break;
    case 26 : {
      RSstackS = (4 + (RSstackS));
      cont_38X = *((long *) (RSstackS));
      if ((1 == cont_38X)) {
        RSstackS = (-11 + (Sbottom_of_stackS));
        *((long *) (-3 + (Sbottom_of_stackS))) = 1;
        arg1K0 = (Sbottom_of_stackS);
        goto L29978;}
      else {
        merged_arg1K0 = cont_38X;
        copy_continuation_from_heap_return_tag = 1;
        goto copy_continuation_from_heap;
       copy_continuation_from_heap_return_1:
        v_37X = copy_continuation_from_heap_return_value;
        arg1K0 = v_37X;
        goto L29978;}}
      break;
    case 27 : {
      RSstackS = (4 + (RSstackS));
      consumer_251X = *((long *) (RSstackS));
      *((long *) (RSstackS)) = (RSvalS);
      RSstackS = (-4 + (RSstackS));
      RSvalS = consumer_251X;
      SnargsS = 1;
      merged_arg0K0 = 0;
      goto perform_application;}
      break;
    case 28 : {
      cont_41X = ScontS;
      tem_40X = *((long *) (5 + cont_41X));
      pc_39X = *((long *) (1 + cont_41X));
      StemplateS = tem_40X;
      RScode_pointerS = ((-3 + (*((long *) (-3 + tem_40X)))) + (((pc_39X)>>2)));
      RSenvS = (*((long *) (9 + cont_41X)));
      ScontS = (*((long *) (-3 + cont_41X)));
      RSstackS = (9 + cont_41X);
      goto START;}
      break;
    case 29 : {
      merged_arg1K0 = (SnargsS);
      goto return_values;}
      break;
    case 30 : {
      merged_arg1K0 = ((long)(*((unsigned char *) (RScode_pointerS))));
      goto return_values;}
      break;
    case 31 : {
      goto START;}
      break;
    case 32 : {
      b_43X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      tem_42X = *((long *) ((-3 + (StemplateS)) + (((((long)b_43X))<<2))));
      StemplateS = tem_42X;
      RScode_pointerS = (-3 + (*((long *) (-3 + tem_42X))));
      goto START;}
      break;
    case 33 : {
      b_46X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      SnargsS = ((long)b_46X);
      b_45X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      tem_44X = *((long *) ((-3 + (StemplateS)) + (((((long)b_45X))<<2))));
      StemplateS = tem_44X;
      RScode_pointerS = (-3 + (*((long *) (-3 + tem_44X))));
      if ((0 == ((Spending_interruptsS) & (Senabled_interruptsS)))) {
        goto START;}
      else {
        goto handle_interrupt;}}
      break;
    case 34 : {
      b_48X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      b_47X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if ((1 == (RSvalS))) {
        RScode_pointerS = ((RScode_pointerS) + ((((((long)b_48X))<<8)) + ((long)b_47X)));
        goto START;}
      else {
        goto START;}}
      break;
    case 35 : {
      b_249X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      b_250X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      RScode_pointerS = ((RScode_pointerS) + ((((((long)b_249X))<<8)) + ((long)b_250X)));
      goto START;}
      break;
    case 36 : {
      if ((0 == (3 & (RSvalS)))) {
        val_50X = (((RSvalS))>>2);
        b_49X = *((unsigned char *) (RScode_pointerS));
        RScode_pointerS = (1 + (RScode_pointerS));
        if ((val_50X < 0)) {
          arg1K0 = (((((long)b_49X))<<1));
          goto L28572;}
        else {
          if ((val_50X < ((long)b_49X))) {
            RScode_pointerS = ((RScode_pointerS) + (((val_50X)<<1)));
            b_247X = *((unsigned char *) (RScode_pointerS));
            RScode_pointerS = (1 + (RScode_pointerS));
            b_248X = *((unsigned char *) (RScode_pointerS));
            RScode_pointerS = (1 + (RScode_pointerS));
            arg1K0 = ((((((long)b_247X))<<8)) + ((long)b_248X));
            goto L28572;}
          else {
            arg1K0 = (((((long)b_49X))<<1));
            goto L28572;}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 37 : {
      RSstackS = (4 + (RSstackS));
      arg2_245X = *((long *) (RSstackS));
      x_246X = RSvalS;
      if ((arg2_245X == x_246X)) {
        arg0K0 = 5;
        goto L30099;}
      else {
        arg0K0 = 1;
        goto L30099;}}
      break;
    case 38 : {
      x_244X = RSvalS;
      if ((0 == (3 & x_244X))) {
        arg0K0 = 5;
        goto L30113;}
      else {
        if ((3 == (3 & x_244X))) {
          if ((9 == (31 & ((((*((long *) (-7 + x_244X))))>>2))))) {
            arg0K0 = 5;
            goto L30113;}
          else {
            arg0K0 = 1;
            goto L30113;}}
        else {
          arg0K0 = 1;
          goto L30113;}}}
      break;
    case 39 : {
      x_243X = RSvalS;
      if ((0 == (3 & x_243X))) {
        RSvalS = 5;
        goto START;}
      else {
        if ((3 == (3 & x_243X))) {
          if ((9 == (31 & ((((*((long *) (-7 + x_243X))))>>2))))) {
            merged_arg0K0 = 0;
            merged_arg1K1 = x_243X;
            goto raise_exception1;}
          else {
            goto L30131;}}
        else {
          goto L30131;}}}
      break;
    case 40 : {
      x_242X = RSvalS;
      if ((0 == (3 & x_242X))) {
        RSvalS = 5;
        goto START;}
      else {
        if ((3 == (3 & x_242X))) {
          if ((9 == (31 & ((((*((long *) (-7 + x_242X))))>>2))))) {
            merged_arg0K0 = 0;
            merged_arg1K1 = x_242X;
            goto raise_exception1;}
          else {
            goto L30158;}}
        else {
          goto L30158;}}}
      break;
    case 41 : {
      x_241X = RSvalS;
      if ((0 == (3 & x_241X))) {
        RSvalS = 5;
        goto START;}
      else {
        if ((3 == (3 & x_241X))) {
          if ((9 == (31 & ((((*((long *) (-7 + x_241X))))>>2))))) {
            merged_arg0K0 = 0;
            merged_arg1K1 = x_241X;
            goto raise_exception1;}
          else {
            goto L30185;}}
        else {
          goto L30185;}}}
      break;
    case 42 : {
      x_240X = RSvalS;
      if ((0 == (3 & x_240X))) {
        RSvalS = 5;
        goto START;}
      else {
        if ((3 == (3 & x_240X))) {
          if ((9 == (31 & ((((*((long *) (-7 + x_240X))))>>2))))) {
            merged_arg0K0 = 0;
            merged_arg1K1 = x_240X;
            goto raise_exception1;}
          else {
            goto L30212;}}
        else {
          goto L30212;}}}
      break;
    case 43 : {
      if ((0 == (3 & (RSvalS)))) {
        RSvalS = 5;
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 44 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 45 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 46 : {
      RSstackS = (4 + (RSstackS));
      arg2_239X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_239X | (RSvalS))))) {
        x_52X = RSvalS;
        z_51X = (((arg2_239X)>>2)) + (((x_52X)>>2));
        if ((536870911 < z_51X)) {
          goto L24263;}
        else {
          if ((z_51X < -536870912)) {
            goto L24263;}
          else {
            RSvalS = (((z_51X)<<2));
            goto START;}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_239X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 47 : {
      RSstackS = (4 + (RSstackS));
      arg2_53X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_53X | (RSvalS))))) {
        x_236X = RSvalS;
        a_237X = ((arg2_53X)>>2);
        b_238X = ((x_236X)>>2);
        if ((a_237X < 0)) {
          arg1K0 = (0 - a_237X);
          goto L24057;}
        else {
          arg1K0 = a_237X;
          goto L24057;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_53X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 48 : {
      RSstackS = (4 + (RSstackS));
      arg2_54X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_54X | (RSvalS))))) {
        x_234X = RSvalS;
        z_235X = (((arg2_54X)>>2)) - (((x_234X)>>2));
        if ((536870911 < z_235X)) {
          goto L23940;}
        else {
          if ((z_235X < -536870912)) {
            goto L23940;}
          else {
            RSvalS = (((z_235X)<<2));
            goto START;}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_54X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 49 : {
      RSstackS = (4 + (RSstackS));
      arg2_55X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_55X | (RSvalS))))) {
        x_231X = RSvalS;
        if ((0 == x_231X)) {
          merged_arg0K0 = 0;
          merged_arg1K1 = arg2_55X;
          merged_arg1K2 = x_231X;
          goto raise_exception2;}
        else {
          a_232X = ((arg2_55X)>>2);
          b_233X = ((x_231X)>>2);
          if ((a_232X < 0)) {
            arg1K0 = (0 - a_232X);
            goto L23734;}
          else {
            arg1K0 = a_232X;
            goto L23734;}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_55X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 50 : {
      RSstackS = (4 + (RSstackS));
      arg2_230X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_230X | (RSvalS))))) {
        x_56X = RSvalS;
        if ((arg2_230X == x_56X)) {
          arg0K0 = 5;
          goto L30295;}
        else {
          arg0K0 = 1;
          goto L30295;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_230X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 51 : {
      RSstackS = (4 + (RSstackS));
      arg2_57X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_57X | (RSvalS))))) {
        x_229X = RSvalS;
        if ((arg2_57X < x_229X)) {
          arg0K0 = 5;
          goto L30319;}
        else {
          arg0K0 = 1;
          goto L30319;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_57X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 52 : {
      RSstackS = (4 + (RSstackS));
      arg2_58X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_58X | (RSvalS))))) {
        x_226X = RSvalS;
        if ((0 == x_226X)) {
          merged_arg0K0 = 0;
          merged_arg1K1 = arg2_58X;
          merged_arg1K2 = x_226X;
          goto raise_exception2;}
        else {
          a_227X = ((arg2_58X)>>2);
          b_228X = ((x_226X)>>2);
          if ((a_227X < 0)) {
            arg1K0 = (0 - a_227X);
            goto L23399;}
          else {
            arg1K0 = a_227X;
            goto L23399;}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_58X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 53 : {
      RSstackS = (4 + (RSstackS));
      arg2_59X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_59X | (RSvalS))))) {
        x_223X = RSvalS;
        if ((0 == x_223X)) {
          merged_arg0K0 = 0;
          merged_arg1K1 = arg2_59X;
          merged_arg1K2 = x_223X;
          goto raise_exception2;}
        else {
          a_224X = ((arg2_59X)>>2);
          b_225X = ((x_223X)>>2);
          if ((a_224X < 0)) {
            arg1K0 = (0 - a_224X);
            goto L23268;}
          else {
            arg1K0 = a_224X;
            goto L23268;}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_59X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 54 : {
      if ((0 == (3 & (RSvalS)))) {
        RSvalS = (RSvalS);
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 55 : {
      if ((0 == (3 & (RSvalS)))) {
        RSvalS = (RSvalS);
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 56 : {
      if ((0 == (3 & (RSvalS)))) {
        RSvalS = 4;
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 57 : {
      if ((0 == (3 & (RSvalS)))) {
        RSvalS = (RSvalS);
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 58 : {
      if ((0 == (3 & (RSvalS)))) {
        RSvalS = 0;
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 59 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 60 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 61 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 62 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 63 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 64 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 65 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 66 : {
      if ((0 == (3 & (RSvalS)))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 67 : {
      if ((0 == (3 & (RSvalS)))) {
        x_60X = RSvalS;
        if ((x_60X < 0)) {
          merged_arg0K0 = 0;
          merged_arg1K1 = x_60X;
          goto raise_exception1;}
        else {
          RSvalS = 0;
          goto START;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 68 : {
      if ((0 == (3 & (RSvalS)))) {
        x_222X = RSvalS;
        if ((x_222X < 0)) {
          arg1K0 = (0 - x_222X);
          goto L30507;}
        else {
          arg1K0 = x_222X;
          goto L30507;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 69 : {
      RSstackS = (4 + (RSstackS));
      arg2_61X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_61X | (RSvalS))))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_61X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_61X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 70 : {
      RSstackS = (4 + (RSstackS));
      arg2_62X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_62X | (RSvalS))))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_62X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_62X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 71 : {
      RSstackS = (4 + (RSstackS));
      arg2_63X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_63X | (RSvalS))))) {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_63X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_63X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 72 : {
      if ((0 == (3 & (RSvalS)))) {
        RSvalS = ((((~ ((((RSvalS))>>2))))<<2));
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 73 : {
      RSstackS = (4 + (RSstackS));
      arg2_64X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_64X | (RSvalS))))) {
        RSvalS = (((((((arg2_64X)>>2)) & ((((RSvalS))>>2))))<<2));
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_64X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 74 : {
      RSstackS = (4 + (RSstackS));
      arg2_65X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_65X | (RSvalS))))) {
        RSvalS = (((((((arg2_65X)>>2)) | ((((RSvalS))>>2))))<<2));
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_65X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 75 : {
      RSstackS = (4 + (RSstackS));
      arg2_66X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_66X | (RSvalS))))) {
        RSvalS = (((((((arg2_66X)>>2)) ^ ((((RSvalS))>>2))))<<2));
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_66X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 76 : {
      RSstackS = (4 + (RSstackS));
      arg2_220X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_220X | (RSvalS))))) {
        x_72X = RSvalS;
        count_71X = ((x_72X)>>2);
        value_70X = ((arg2_220X)>>2);
        if ((count_71X < 0)) {
          PS_SHIFT_RIGHT(value_70X, (0 - count_71X), x_221X)
          RSvalS = (((x_221X)<<2));
          goto START;}
        else {
          PS_SHIFT_LEFT(value_70X, count_71X, x_69X)
          result_68X = (((((x_69X)<<2)))>>2);
          PS_SHIFT_RIGHT(result_68X, count_71X, x_67X)
          if ((value_70X == x_67X)) {
            if ((value_70X < 0)) {
              if ((result_68X < 0)) {
                goto L22717;}
              else {
                goto L22714;}}
            else {
              if ((result_68X < 0)) {
                goto L22714;}
              else {
                goto L22717;}}}
          else {
            goto L22714;}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_220X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 77 : {
      x_219X = RSvalS;
      if ((9 == (255 & x_219X))) {
        arg0K0 = 5;
        goto L30635;}
      else {
        arg0K0 = 1;
        goto L30635;}}
      break;
    case 78 : {
      RSstackS = (4 + (RSstackS));
      arg2_217X = *((long *) (RSstackS));
      if ((9 == (255 & arg2_217X))) {
        if ((9 == (255 & (RSvalS)))) {
          x_218X = RSvalS;
          if ((arg2_217X == x_218X)) {
            arg0K0 = 5;
            goto L30662;}
          else {
            arg0K0 = 1;
            goto L30662;}}
        else {
          goto L30650;}}
      else {
        goto L30650;}}
      break;
    case 79 : {
      RSstackS = (4 + (RSstackS));
      arg2_215X = *((long *) (RSstackS));
      if ((9 == (255 & arg2_215X))) {
        if ((9 == (255 & (RSvalS)))) {
          x_216X = RSvalS;
          if ((arg2_215X < x_216X)) {
            arg0K0 = 5;
            goto L30691;}
          else {
            arg0K0 = 1;
            goto L30691;}}
        else {
          goto L30679;}}
      else {
        goto L30679;}}
      break;
    case 80 : {
      if ((9 == (255 & (RSvalS)))) {
        RSvalS = (((((long)((((((RSvalS))>>8))))))<<2));
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 81 : {
      if ((0 == (3 & (RSvalS)))) {
        x_73X = (((RSvalS))>>2);
        if ((255 < x_73X)) {
          goto L30722;}
        else {
          if ((x_73X < 0)) {
            goto L30722;}
          else {
            RSvalS = (9 + (((((long)((x_73X))))<<8)));
            goto START;}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 82 : {
      x_214X = RSvalS;
      if ((21 == x_214X)) {
        arg0K0 = 5;
        goto L30744;}
      else {
        arg0K0 = 1;
        goto L30744;}}
      break;
    case 83 : {
      x_75X = RSvalS;
      b_74X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if ((3 == (3 & x_75X))) {
        if (((31 & ((((*((long *) (-7 + x_75X))))>>2))) == ((long)b_74X))) {
          arg0K0 = 5;
          goto L30762;}
        else {
          arg0K0 = 1;
          goto L30762;}}
      else {
        arg0K0 = 1;
        goto L30762;}}
      break;
    case 84 : {
      x_212X = RSvalS;
      b_213X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if ((3 == (3 & x_212X))) {
        if (((31 & ((((*((long *) (-7 + x_212X))))>>2))) == ((long)b_213X))) {
          RSvalS = (-4 & (3 + ((long)(((unsigned long)(*((long *) (-7 + x_212X))))>>8))));
          goto START;}
        else {
          goto L22430;}}
      else {
        goto L22430;}}
      break;
    case 85 : {
      space_76X = 4 + (((((long)(*((unsigned char *) (RScode_pointerS)))))<<2));
      if ((((ShpS) + (((space_76X)<<2))) < (SlimitS))) {
        goto L16631;}
      else {
        merged_arg1K0 = 0;
        collect_saving_temp_return_tag = 4;
        goto collect_saving_temp;
       collect_saving_temp_return_4:
        if ((((ShpS) + (((space_76X)<<2))) < (SlimitS))) {
          goto L16631;}
        else {
          TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
          goto L16631;}}}
      break;
    case 86 : {
      x_209X = RSvalS;
      b_210X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      b_211X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if ((3 == (3 & x_209X))) {
        if (((31 & ((((*((long *) (-7 + x_209X))))>>2))) == ((long)b_210X))) {
          RSvalS = (*((long *) ((-3 + x_209X) + (((((long)b_211X))<<2)))));
          goto START;}
        else {
          goto L25259;}}
      else {
        goto L25259;}}
      break;
    case 87 : {
      RSstackS = (4 + (RSstackS));
      arg2_80X = *((long *) (RSstackS));
      x_79X = RSvalS;
      b_78X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      b_77X = *((unsigned char *) (RScode_pointerS));
      RScode_pointerS = (1 + (RScode_pointerS));
      if ((3 == (3 & arg2_80X))) {
        if (((31 & ((((*((long *) (-7 + arg2_80X))))>>2))) == ((long)b_78X))) {
          if ((3 == (3 & arg2_80X))) {
            if ((0 == (128 & (*((long *) (-7 + arg2_80X)))))) {
              *((long *) ((-3 + arg2_80X) + (((((long)b_77X))<<2)))) = x_79X;
              RSvalS = 13;
              goto START;}
            else {
              goto L25732;}}
          else {
            goto L25732;}}
        else {
          goto L25732;}}
      else {
        goto L25732;}}
      break;
    case 88 : {
      RSstackS = (4 + (RSstackS));
      arg2_208X = *((long *) (RSstackS));
      if ((0 == (3 & arg2_208X))) {
        x_85X = RSvalS;
        len_84X = ((arg2_208X)>>2);
        b_83X = *((unsigned char *) (RScode_pointerS));
        RScode_pointerS = (1 + (RScode_pointerS));
        size_82X = 1 + len_84X;
        if ((len_84X < 0)) {
          goto L25022;}
        else {
          if ((4194304 < size_82X)) {
            goto L25022;}
          else {
            if ((((ShpS) + (((size_82X)<<2))) < (SlimitS))) {
              arg3K0 = 1;
              arg1K1 = x_85X;
              goto L25027;}
            else {
              merged_arg1K0 = x_85X;
              collect_saving_temp_return_tag = 5;
              goto collect_saving_temp;
             collect_saving_temp_return_5:
              temp_81X = collect_saving_temp_return_value;
              arg3K0 = (((ShpS) + (((size_82X)<<2))) < (SlimitS));
              arg1K1 = temp_81X;
              goto L25027;}}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_208X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 89 : {
      RSstackS = (4 + (RSstackS));
      arg2_207X = *((long *) (RSstackS));
      if ((0 == (3 & (RSvalS)))) {
        index_88X = (((RSvalS))>>2);
        b_87X = *((unsigned char *) (RScode_pointerS));
        RScode_pointerS = (1 + (RScode_pointerS));
        if ((3 == (3 & arg2_207X))) {
          if (((31 & ((((*((long *) (-7 + arg2_207X))))>>2))) == ((long)b_87X))) {
            len_86X = (((3 + ((long)(((unsigned long)(*((long *) (-7 + arg2_207X))))>>8))))>>2);
            if ((index_88X < 0)) {
              goto L24845;}
            else {
              if ((index_88X < len_86X)) {
                RSvalS = (*((long *) ((-3 + arg2_207X) + (((index_88X)<<2)))));
                goto START;}
              else {
                goto L24845;}}}
          else {
            goto L24845;}}
        else {
          goto L24845;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_207X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 90 : {
      RSstackS = (4 + (RSstackS));
      arg2_205X = *((long *) (RSstackS));
      RSstackS = (4 + (RSstackS));
      arg3_206X = *((long *) (RSstackS));
      if ((0 == (3 & arg2_205X))) {
        x_92X = RSvalS;
        index_91X = ((arg2_205X)>>2);
        b_90X = *((unsigned char *) (RScode_pointerS));
        RScode_pointerS = (1 + (RScode_pointerS));
        if ((3 == (3 & arg3_206X))) {
          if (((31 & ((((*((long *) (-7 + arg3_206X))))>>2))) == ((long)b_90X))) {
            len_89X = (((3 + ((long)(((unsigned long)(*((long *) (-7 + arg3_206X))))>>8))))>>2);
            if ((index_91X < 0)) {
              goto L25476;}
            else {
              if ((index_91X < len_89X)) {
                if ((3 == (3 & arg3_206X))) {
                  if ((0 == (128 & (*((long *) (-7 + arg3_206X)))))) {
                    *((long *) ((-3 + arg3_206X) + (((index_91X)<<2)))) = x_92X;
                    RSvalS = 13;
                    goto START;}
                  else {
                    goto L25476;}}
                else {
                  goto L25476;}}
              else {
                goto L25476;}}}
          else {
            goto L25476;}}
        else {
          goto L25476;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg3_206X;
        merged_arg1K2 = arg2_205X;
        merged_arg1K3 = (RSvalS);
        goto raise_exception3;}}
      break;
    case 91 : {
      RSstackS = (4 + (RSstackS));
      arg2_204X = *((long *) (RSstackS));
      if ((0 == (3 & (arg2_204X | (RSvalS))))) {
        init_95X = (((RSvalS))>>2);
        len_94X = ((arg2_204X)>>2);
        size_93X = 1 + ((((3 + len_94X))>>2));
        if ((len_94X < 0)) {
          goto L22178;}
        else {
          if ((4194304 < size_93X)) {
            goto L22178;}
          else {
            if ((((ShpS) + (((size_93X)<<2))) < (SlimitS))) {
              goto L22270;}
            else {
              merged_arg1K0 = 0;
              collect_saving_temp_return_tag = 6;
              goto collect_saving_temp;
             collect_saving_temp_return_6:
              if ((((ShpS) + (((size_93X)<<2))) < (SlimitS))) {
                goto L22270;}
              else {
                merged_arg0K0 = 0;
                merged_arg1K1 = (((len_94X)<<2));
                merged_arg1K2 = (((init_95X)<<2));
                goto raise_exception2;}}}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_204X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 92 : {
      obj_96X = RSvalS;
      if ((3 == (3 & obj_96X))) {
        if ((16 == (31 & ((((*((long *) (-7 + obj_96X))))>>2))))) {
          RSvalS = (((((long)(((unsigned long)(*((long *) (-7 + (RSvalS)))))>>8)))<<2));
          goto START;}
        else {
          goto L30809;}}
      else {
        goto L30809;}}
      break;
    case 93 : {
      RSstackS = (4 + (RSstackS));
      arg2_97X = *((long *) (RSstackS));
      if ((3 == (3 & arg2_97X))) {
        if ((16 == (31 & ((((*((long *) (-7 + arg2_97X))))>>2))))) {
          if ((0 == (3 & (RSvalS)))) {
            index_202X = (((RSvalS))>>2);
            len_203X = (long)(((unsigned long)(*((long *) (-7 + arg2_97X))))>>8);
            if ((index_202X < 0)) {
              goto L22028;}
            else {
              if ((index_202X < len_203X)) {
                RSvalS = (((((long)(*((unsigned char *) ((-3 + arg2_97X) + index_202X)))))<<2));
                goto START;}
              else {
                goto L22028;}}}
          else {
            goto L22033;}}
        else {
          goto L22033;}}
      else {
        goto L22033;}}
      break;
    case 94 : {
      RSstackS = (4 + (RSstackS));
      arg2_99X = *((long *) (RSstackS));
      RSstackS = (4 + (RSstackS));
      arg3_98X = *((long *) (RSstackS));
      if ((3 == (3 & arg3_98X))) {
        if ((16 == (31 & ((((*((long *) (-7 + arg3_98X))))>>2))))) {
          if ((0 == (3 & (arg2_99X | (RSvalS))))) {
            value_199X = (((RSvalS))>>2);
            index_200X = ((arg2_99X)>>2);
            len_201X = (long)(((unsigned long)(*((long *) (-7 + arg3_98X))))>>8);
            if ((index_200X < 0)) {
              goto L24671;}
            else {
              if ((index_200X < len_201X)) {
                *((unsigned char *) ((-3 + arg3_98X) + index_200X)) = ((unsigned char)value_199X);
                RSvalS = 13;
                goto START;}
              else {
                goto L24671;}}}
          else {
            goto L24678;}}
        else {
          goto L24678;}}
      else {
        goto L24678;}}
      break;
    case 95 : {
      RSstackS = (4 + (RSstackS));
      arg2_195X = *((long *) (RSstackS));
      if ((0 == (3 & arg2_195X))) {
        if ((9 == (255 & (RSvalS)))) {
          init_196X = ((((RSvalS))>>8));
          len_197X = ((arg2_195X)>>2);
          size_198X = 1 + ((((4 + len_197X))>>2));
          if ((len_197X < 0)) {
            goto L21763;}
          else {
            if ((4194304 < size_198X)) {
              goto L21763;}
            else {
              if ((((ShpS) + (((size_198X)<<2))) < (SlimitS))) {
                goto L21857;}
              else {
                merged_arg1K0 = 0;
                collect_saving_temp_return_tag = 7;
                goto collect_saving_temp;
               collect_saving_temp_return_7:
                if ((((ShpS) + (((size_198X)<<2))) < (SlimitS))) {
                  goto L21857;}
                else {
                  merged_arg0K0 = 0;
                  merged_arg1K1 = (((len_197X)<<2));
                  merged_arg1K2 = (9 + (((((long)(init_196X)))<<8)));
                  goto raise_exception2;}}}}}
        else {
          goto L21806;}}
      else {
        goto L21806;}}
      break;
    case 96 : {
      obj_100X = RSvalS;
      if ((3 == (3 & obj_100X))) {
        if ((15 == (31 & ((((*((long *) (-7 + obj_100X))))>>2))))) {
          RSvalS = (-4 + (((((long)(((unsigned long)(*((long *) (-7 + (RSvalS)))))>>8)))<<2)));
          goto START;}
        else {
          goto L30840;}}
      else {
        goto L30840;}}
      break;
    case 97 : {
      RSstackS = (4 + (RSstackS));
      arg2_101X = *((long *) (RSstackS));
      if ((3 == (3 & arg2_101X))) {
        if ((15 == (31 & ((((*((long *) (-7 + arg2_101X))))>>2))))) {
          if ((0 == (3 & (RSvalS)))) {
            index_193X = (((RSvalS))>>2);
            len_194X = -1 + ((long)(((unsigned long)(*((long *) (-7 + arg2_101X))))>>8));
            if ((index_193X < 0)) {
              goto L21613;}
            else {
              if ((index_193X < len_194X)) {
                RSvalS = (9 + (((((long)((((long)(*((unsigned char *) ((-3 + arg2_101X) + index_193X))))))))<<8)));
                goto START;}
              else {
                goto L21613;}}}
          else {
            goto L21618;}}
        else {
          goto L21618;}}
      else {
        goto L21618;}}
      break;
    case 98 : {
      RSstackS = (4 + (RSstackS));
      arg2_188X = *((long *) (RSstackS));
      RSstackS = (4 + (RSstackS));
      arg3_189X = *((long *) (RSstackS));
      if ((3 == (3 & arg3_189X))) {
        if ((15 == (31 & ((((*((long *) (-7 + arg3_189X))))>>2))))) {
          if ((0 == (3 & arg2_188X))) {
            if ((9 == (255 & (RSvalS)))) {
              Kchar_190X = ((((RSvalS))>>8));
              index_191X = ((arg2_188X)>>2);
              len_192X = -1 + ((long)(((unsigned long)(*((long *) (-7 + arg3_189X))))>>8));
              if ((index_191X < 0)) {
                goto L24497;}
              else {
                if ((index_191X < len_192X)) {
                  *((unsigned char *) ((-3 + arg3_189X) + index_191X)) = ((unsigned char)((long)(Kchar_190X)));
                  RSvalS = 13;
                  goto START;}
                else {
                  goto L24497;}}}
            else {
              goto L24504;}}
          else {
            goto L24504;}}
        else {
          goto L24504;}}
      else {
        goto L24504;}}
      break;
    case 99 : {
      obj_104X = RSvalS;
      if ((3 == (3 & obj_104X))) {
        if ((4 == (31 & ((((*((long *) (-7 + obj_104X))))>>2))))) {
          x_103X = RSvalS;
          descriptor_102X = *((long *) (-3 + x_103X));
          if ((17 == (255 & descriptor_102X))) {
            if ((529 == (*((long *) (-3 + x_103X))))) {
              arg0K0 = 5;
              goto L18264;}
            else {
              arg0K0 = 1;
              goto L18264;}}
          else {
            arg0K0 = 5;
            goto L18264;}}
        else {
          goto L18255;}}
      else {
        goto L18255;}}
      break;
    case 100 : {
      RSstackS = (4 + (RSstackS));
      arg2_186X = *((long *) (RSstackS));
      if ((3 == (3 & arg2_186X))) {
        if ((4 == (31 & ((((*((long *) (-7 + arg2_186X))))>>2))))) {
          x_187X = RSvalS;
          if ((1 == x_187X)) {
            goto L21413;}
          else {
            if ((5 == x_187X)) {
              goto L21413;}
            else {
              goto L21441;}}}
        else {
          goto L21441;}}
      else {
        goto L21441;}}
      break;
    case 101 : {
      x_105X = RSvalS;
      if ((3 == (3 & x_105X))) {
        if ((0 == (128 & (*((long *) (-7 + x_105X)))))) {
          arg0K0 = 1;
          goto L30876;}
        else {
          arg0K0 = 5;
          goto L30876;}}
      else {
        arg0K0 = 5;
        goto L30876;}}
      break;
    case 102 : {
      x_185X = RSvalS;
      if ((3 == (3 & x_185X))) {
        if ((0 == (128 & (*((long *) (-7 + x_185X)))))) {
          *((long *) (-7 + x_185X)) = (128 | (*((long *) (-7 + x_185X))));
          goto L30891;}
        else {
          goto L30891;}}
      else {
        goto L30891;}}
      break;
    case 103 : {
      if (((20 + (ShpS)) < (SlimitS))) {
        arg1K0 = 0;
        goto L21131;}
      else {
        merged_arg1K0 = 0;
        collect_saving_temp_return_tag = 8;
        goto collect_saving_temp;
       collect_saving_temp_return_8:
        if (((20 + (ShpS)) < (SlimitS))) {
          arg1K0 = 0;
          goto L21131;}
        else {
          TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
          arg1K0 = 0;
          goto L21131;}}}
      break;
    case 104 : {
      obj_184X = RSvalS;
      if ((3 == (3 & obj_184X))) {
        if ((5 == (31 & ((((*((long *) (-7 + obj_184X))))>>2))))) {
          merged_arg1K0 = (RSvalS);
          close_port_return_tag = 0;
          goto close_port;
         close_port_return_0:
          RSvalS = 13;
          goto START;}
        else {
          goto L30912;}}
      else {
        goto L30912;}}
      break;
    case 105 : {
      x_183X = RSvalS;
      if ((3 == (3 & x_183X))) {
        if ((5 == (31 & ((((*((long *) (-7 + x_183X))))>>2))))) {
          if ((4 == (*((long *) (-3 + x_183X))))) {
            arg0K0 = 5;
            goto L30934;}
          else {
            arg0K0 = 1;
            goto L30934;}}
        else {
          arg0K0 = 1;
          goto L30934;}}
      else {
        arg0K0 = 1;
        goto L30934;}}
      break;
    case 106 : {
      x_182X = RSvalS;
      if ((3 == (3 & x_182X))) {
        if ((5 == (31 & ((((*((long *) (-7 + x_182X))))>>2))))) {
          if ((8 == (*((long *) (-3 + x_182X))))) {
            arg0K0 = 5;
            goto L30952;}
          else {
            arg0K0 = 1;
            goto L30952;}}
        else {
          arg0K0 = 1;
          goto L30952;}}
      else {
        arg0K0 = 1;
        goto L30952;}}
      break;
    case 107 : {
      p_106X = RSvalS;
      if ((3 == (3 & p_106X))) {
        if ((5 == (31 & ((((*((long *) (-7 + p_106X))))>>2))))) {
          if ((4 == (*((long *) (-3 + p_106X))))) {
            if (((*((long *) (1 + p_106X))) < 0)) {
              goto L17836;}
            else {
              x_179X = RSvalS;
              c_180X = *((long *) (5 + x_179X));
              if ((1 == c_180X)) {
                { int TTchar;
                  PS_GETC((*((Sopen_portsS) + ((((*((long *) (1 + x_179X))))>>2)))), TTchar);
                  if (EOF == TTchar) {
                    arg1K0 = 21;
                    goto L17833;}
                  else {
                    unsigned char Kchar_181X = TTchar;
                    arg1K0 = (9 + (((((long)(Kchar_181X)))<<8)));
                    goto L17833;}}}
              else {
                *((long *) (5 + x_179X)) = 1;
                arg1K0 = c_180X;
                goto L17833;}}}
          else {
            goto L17836;}}
        else {
          goto L17836;}}
      else {
        goto L17836;}}
      break;
    case 108 : {
      p_177X = RSvalS;
      if ((3 == (3 & p_177X))) {
        if ((5 == (31 & ((((*((long *) (-7 + p_177X))))>>2))))) {
          if ((4 == (*((long *) (-3 + p_177X))))) {
            if (((*((long *) (1 + p_177X))) < 0)) {
              goto L17718;}
            else {
              x_109X = RSvalS;
              c_108X = *((long *) (5 + x_109X));
              if ((1 == c_108X)) {
                v_178X = *((Sopen_portsS) + ((((*((long *) (1 + x_109X))))>>2)));
                { int TTchar;
                  PS_GETC(v_178X, TTchar);
                  if (EOF == TTchar) {
                    arg1K0 = 21;
                    goto L17710;}
                  else {
                    unsigned char Kchar_107X = TTchar;
                    arg1K0 = (9 + (((((long)(Kchar_107X)))<<8)));
                    goto L17710;}}}
              else {
                arg1K0 = c_108X;
                goto L17715;}}}
          else {
            goto L17718;}}
        else {
          goto L17718;}}
      else {
        goto L17718;}}
      break;
    case 109 : {
      p_111X = RSvalS;
      if ((3 == (3 & p_111X))) {
        if ((5 == (31 & ((((*((long *) (-7 + p_111X))))>>2))))) {
          if ((4 == (*((long *) (-3 + p_111X))))) {
            if (((*((long *) (1 + p_111X))) < 0)) {
              goto L17565;}
            else {
              x_175X = RSvalS;
              x_176X = *((long *) (5 + x_175X));
              if ((1 == x_176X)) {
                b_110X = char_ready_p((*((Sopen_portsS) + ((((*((long *) (1 + x_175X))))>>2)))));
                if (b_110X) {
                  arg0K0 = 5;
                  goto L17562;}
                else {
                  arg0K0 = 1;
                  goto L17562;}}
              else {
                arg0K0 = 5;
                goto L17562;}}}
          else {
            goto L17565;}}
        else {
          goto L17565;}}
      else {
        goto L17565;}}
      break;
    case 110 : {
      RSstackS = (4 + (RSstackS));
      arg2_112X = *((long *) (RSstackS));
      if ((9 == (255 & arg2_112X))) {
        p_174X = RSvalS;
        if ((3 == (3 & p_174X))) {
          if ((5 == (31 & ((((*((long *) (-7 + p_174X))))>>2))))) {
            if ((8 == (*((long *) (-3 + p_174X))))) {
              if (((*((long *) (1 + p_174X))) < 0)) {
                goto L21040;}
              else {
                putc(((((arg2_112X)>>8))), (*((Sopen_portsS) + ((((*((long *) (1 + (RSvalS)))))>>2)))));
                RSvalS = 13;
                goto START;}}
            else {
              goto L21040;}}
          else {
            goto L21040;}}
        else {
          goto L21040;}}
      else {
        goto L21040;}}
      break;
    case 111 : {
      RSstackS = (4 + (RSstackS));
      arg2_172X = *((long *) (RSstackS));
      if ((3 == (3 & arg2_172X))) {
        if ((15 == (31 & ((((*((long *) (-7 + arg2_172X))))>>2))))) {
          p_173X = RSvalS;
          if ((3 == (3 & p_173X))) {
            if ((5 == (31 & ((((*((long *) (-7 + p_173X))))>>2))))) {
              if ((8 == (*((long *) (-3 + p_173X))))) {
                if (((*((long *) (1 + p_173X))) < 0)) {
                  goto L20904;}
                else {
                  fwrite((void *)(-3 + arg2_172X), sizeof(char), (-1 + ((long)(((unsigned long)(*((long *) (-7 + arg2_172X))))>>8))), (*((Sopen_portsS) + ((((*((long *) (1 + (RSvalS)))))>>2)))));
                  RSvalS = 13;
                  goto START;}}
              else {
                goto L20904;}}
            else {
              goto L20904;}}
          else {
            goto L20904;}}
        else {
          goto L20904;}}
      else {
        goto L20904;}}
      break;
    case 112 : {
      p_113X = RSvalS;
      if ((3 == (3 & p_113X))) {
        if ((5 == (31 & ((((*((long *) (-7 + p_113X))))>>2))))) {
          if ((8 == (*((long *) (-3 + p_113X))))) {
            if (((*((long *) (1 + p_113X))) < 0)) {
              goto L17473;}
            else {
              fflush((*((Sopen_portsS) + ((((*((long *) (1 + (RSvalS)))))>>2)))));
              RSvalS = 13;
              goto START;}}
          else {
            goto L17473;}}
        else {
          goto L17473;}}
      else {
        goto L17473;}}
      break;
    case 113 : {
      RSvalS = 529;
      goto START;}
      break;
    case 114 : {
      RSvalS = 13;
      goto START;}
      break;
    case 115 : {
      merged_arg0K0 = 0;
      merged_arg1K1 = (RSvalS);
      goto raise_exception1;}
      break;
    case 116 : {
      RSvalS = 1;
      goto START;}
      break;
    case 117 : {
      RSstackS = (4 + (RSstackS));
      arg2_163X = *((long *) (RSstackS));
      RSstackS = (4 + (RSstackS));
      arg3_164X = *((long *) (RSstackS));
      if ((3 == (3 & arg3_164X))) {
        if ((15 == (31 & ((((*((long *) (-7 + arg3_164X))))>>2))))) {
          obj_165X = RSvalS;
          if ((3 == (3 & obj_165X))) {
            if ((15 == (31 & ((((*((long *) (-7 + obj_165X))))>>2))))) {
              x_166X = RSvalS;
              if ((0 == ((long)(Spure_area_countS)))) {
                if ((0 == ((long)(Simpure_area_countS)))) {
                  merged_arg1K0 = arg3_164X;
                  extract_string_return_tag = 0;
                  goto extract_string;
                 extract_string_return_0:
                  spec_167X = extract_string_return_value;
                  port_168X = ps_open(spec_167X, "wb");
                  if ((NULL == port_168X)) {
                    merged_arg0K0 = 0;
                    merged_arg1K1 = arg3_164X;
                    merged_arg1K2 = arg2_163X;
                    goto raise_exception2;}
                  else {
                    fwrite((void *)(-3 + x_166X), sizeof(char), (-1 + ((long)(((unsigned long)(*((long *) (-7 + x_166X))))>>8))), port_168X);
                    b_169X = Snewspace_beginS;
                    Snewspace_beginS = (Soldspace_beginS);
                    Soldspace_beginS = b_169X;
                    e_170X = Snewspace_endS;
                    Snewspace_endS = (Soldspace_endS);
                    Soldspace_endS = e_170X;
                    Ssaved_limitS = (SlimitS);
                    Ssaved_hpS = (ShpS);
                    SlimitS = (Snewspace_endS);
                    ShpS = (Snewspace_beginS);
                    Sweak_pointer_hpS = -1;
                    if ((3 == (3 & arg2_163X))) {
                      a_114X = -3 + arg2_163X;
                      if ((a_114X < (Soldspace_beginS))) {
                        arg1K0 = arg2_163X;
                        goto L28742;}
                      else {
                        if ((a_114X < (Soldspace_endS))) {
                          merged_arg1K0 = arg2_163X;
                          copy_object_return_tag = 0;
                          goto copy_object;
                         copy_object_return_0:
                          v_171X = copy_object_return_value;
                          arg1K0 = v_171X;
                          goto L28742;}
                        else {
                          arg1K0 = arg2_163X;
                          goto L28742;}}}
                    else {
                      arg1K0 = arg2_163X;
                      goto L28742;}}}
                else {
                  goto L28827;}}
              else {
                goto L28827;}}
            else {
              goto L28758;}}
          else {
            goto L28758;}}
        else {
          goto L28758;}}
      else {
        goto L28758;}}
      break;
    case 118 : {
      RSvalS = 13;
      merged_arg1K0 = 0;
      collect_saving_temp_return_tag = 9;
      goto collect_saving_temp;
     collect_saving_temp_return_9:
      RSvalS = 13;
      goto START;}
      break;
    case 119 : {
      RSstackS = (4 + (RSstackS));
      arg2_116X = *((long *) (RSstackS));
      if ((0 == (3 & arg2_116X))) {
        x_161X = RSvalS;
        key_162X = ((arg2_116X)>>2);
        if ((0 == key_162X)) {
          RSvalS = (-4 & ((SlimitS) - (ShpS)));
          goto START;}
        else {
          if ((1 == key_162X)) {
            RSvalS = (-4 & (3 + ((Snewspace_endS) - (Snewspace_beginS))));
            goto START;}
          else {
            if ((2 == key_162X)) {
              RSvalS = (((((Sstack_endS) - (Sstack_beginS)))<<2));
              goto START;}
            else {
              if ((3 == key_162X)) {
                if ((0 == (3 & x_161X))) {
                  old_115X = Sminimum_recovered_spaceS;
                  Sminimum_recovered_spaceS = (((x_161X)>>2));
                  RSvalS = (((old_115X)<<2));
                  goto START;}
                else {
                  merged_arg0K0 = 0;
                  merged_arg1K1 = (((key_162X)<<2));
                  merged_arg1K2 = x_161X;
                  goto raise_exception2;}}
              else {
                if ((4 == key_162X)) {
                  RSvalS = ((((Sgc_countS))<<2));
                  goto START;}
                else {
                  merged_arg0K0 = 0;
                  merged_arg1K1 = (((key_162X)<<2));
                  merged_arg1K2 = x_161X;
                  goto raise_exception2;}}}}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_116X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 120 : {
      obj_120X = RSvalS;
      if ((3 == (3 & obj_120X))) {
        if ((2 == (31 & ((((*((long *) (-7 + obj_120X))))>>2))))) {
          x_119X = RSvalS;
          start_hp_118X = ShpS;
          SvalS = RSvalS;
          SstackS = RSstackS;
          Scode_pointerS = RScode_pointerS;
          SenvS = RSenvS;
          v_117X = hoistD1((Snewspace_beginS), (ShpS), x_119X);
          RSvalS = SvalS;
          RSstackS = SstackS;
          RScode_pointerS = Scode_pointerS;
          RSenvS = SenvS;
          if (v_117X) {
            areas_158X = Spure_areasS;
            sizes_159X = Spure_sizesS;
            count_160X = Spure_area_countS;
            arg1K0 = 0;
            goto L17365;}
          else {
            goto L17350;}}
        else {
          goto L17297;}}
      else {
        goto L17297;}}
      break;
    case 121 : {
      if ((0 == (3 & (RSvalS)))) {
        type_123X = (((RSvalS))>>2);
        start_hp_122X = ShpS;
        *((long *) (ShpS)) = 0;
        ShpS = (4 + (ShpS));
        SvalS = RSvalS;
        SstackS = RSstackS;
        Scode_pointerS = RScode_pointerS;
        SenvS = RSenvS;
        v_121X = hoistD0((Snewspace_beginS), start_hp_122X, type_123X);
        RSvalS = SvalS;
        RSstackS = SstackS;
        RScode_pointerS = Scode_pointerS;
        RSenvS = SenvS;
        if (v_121X) {
          areas_155X = Simpure_areasS;
          sizes_156X = Simpure_sizesS;
          count_157X = Simpure_area_countS;
          arg1K0 = 0;
          goto L10089;}
        else {
          goto L10027;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 122 : {
      RSvalS = (Sdynamic_stateS);
      goto START;}
      break;
    case 123 : {
      Sdynamic_stateS = (RSvalS);
      RSvalS = 13;
      goto START;}
      break;
    case 124 : {
      obj_124X = RSvalS;
      if ((3 == (3 & obj_124X))) {
        if ((3 == (31 & ((((*((long *) (-7 + obj_124X))))>>2))))) {
          Sexception_handlerS = (RSvalS);
          goto START;}
        else {
          goto L31073;}}
      else {
        goto L31073;}}
      break;
    case 125 : {
      obj_125X = RSvalS;
      if ((3 == (3 & obj_125X))) {
        if ((2 == (31 & ((((*((long *) (-7 + obj_125X))))>>2))))) {
          if ((((((3 + ((long)(((unsigned long)(*((long *) (-7 + (RSvalS)))))>>8))))>>2)) < 3)) {
            goto L31092;}
          else {
            Sinterrupt_handlersS = (RSvalS);
            goto START;}}
        else {
          goto L31092;}}
      else {
        goto L31092;}}
      break;
    case 126 : {
      temp_154X = Senabled_interruptsS;
      Senabled_interruptsS = ((((RSvalS))>>2));
      RSvalS = (((temp_154X)<<2));
      goto START;}
      break;
    case 127 : {
      RSstackS = (4 + (RSstackS));
      Senabled_interruptsS = ((((*((long *) (RSstackS))))>>2));
      RSstackS = (4 + (RSstackS));
      SnargsS = ((((*((long *) (RSstackS))))>>2));
      RSstackS = (4 + (RSstackS));
      RSenvS = (*((long *) (RSstackS)));
      RSstackS = (4 + (RSstackS));
      tem_126X = *((long *) (RSstackS));
      StemplateS = tem_126X;
      RScode_pointerS = (-3 + (*((long *) (-3 + tem_126X))));
      RSstackS = (4 + (RSstackS));
      RSvalS = (*((long *) (RSstackS)));
      goto START;}
      break;
    case 128 : {
      if ((0 == (3 & (RSvalS)))) {
        p_152X = RSvalS;
        Spending_interruptsS = (-2 & (Spending_interruptsS));
        SvalS = RSvalS;
        SstackS = RSstackS;
        Scode_pointerS = RScode_pointerS;
        SenvS = RSenvS;
        n_153X = ps_schedule_interrupt((((p_152X)>>2)));
        RSvalS = SvalS;
        RSstackS = SstackS;
        RScode_pointerS = Scode_pointerS;
        RSenvS = SenvS;
        RSvalS = (((n_153X)<<2));
        goto START;}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = (RSvalS);
        goto raise_exception1;}}
      break;
    case 129 : {
      obj_131X = RSvalS;
      if ((3 == (3 & obj_131X))) {
        if ((12 == (31 & ((((*((long *) (-7 + obj_131X))))>>2))))) {
          x_130X = RSvalS;
          value_129X = *((long *) (1 + x_130X));
          name_128X = *((long *) (-3 + x_130X));
          if ((3 == (3 & name_128X))) {
            if ((15 == (31 & ((((*((long *) (-7 + name_128X))))>>2))))) {
              if ((3 == (3 & value_129X))) {
                if ((16 == (31 & ((((*((long *) (-7 + value_129X))))>>2))))) {
                  SvalS = RSvalS;
                  SstackS = RSstackS;
                  Scode_pointerS = RScode_pointerS;
                  SenvS = RSenvS;
                  v_127X = lookup_external_name((-3 + name_128X), (-3 + value_129X));
                  RSvalS = SvalS;
                  RSstackS = SstackS;
                  RScode_pointerS = Scode_pointerS;
                  RSenvS = SenvS;
                  if (v_127X) {
                    RSvalS = 13;
                    goto START;}
                  else {
                    goto L16974;}}
                else {
                  goto L16974;}}
              else {
                goto L16974;}}
            else {
              goto L16974;}}
          else {
            goto L16974;}}
        else {
          goto L16977;}}
      else {
        goto L16977;}}
      break;
    case 130 : {
      proc_151X = *((long *) ((RSstackS) + ((((SnargsS))<<2))));
      if ((3 == (3 & proc_151X))) {
        if ((12 == (31 & ((((*((long *) (-7 + proc_151X))))>>2))))) {
          SnargsS = (-1 + (SnargsS));
          RSvalS = proc_151X;
          SvalS = RSvalS;
          SstackS = RSstackS;
          Scode_pointerS = RScode_pointerS;
          SenvS = RSenvS;
          TTreturn_value = 1;
          return(0L);}
        else {
          goto L31145;}}
      else {
        goto L31145;}}
      break;
    case 131 : {
      RSstackS = (4 + (RSstackS));
      arg2_134X = *((long *) (RSstackS));
      if ((0 == (3 & arg2_134X))) {
        x_148X = RSvalS;
        key_149X = ((arg2_134X)>>2);
        if ((0 == key_149X)) {
          SvalS = RSvalS;
          SstackS = RSstackS;
          Scode_pointerS = RScode_pointerS;
          SenvS = RSenvS;
          n_132X = ps_ticks_per_second();
          RSvalS = SvalS;
          RSstackS = SstackS;
          RScode_pointerS = Scode_pointerS;
          RSenvS = SenvS;
          RSvalS = (((n_132X)<<2));
          goto START;}
        else {
          if ((1 == key_149X)) {
            SvalS = RSvalS;
            SstackS = RSstackS;
            Scode_pointerS = RScode_pointerS;
            SenvS = RSenvS;
            n_150X = ps_run_time();
            RSvalS = SvalS;
            RSstackS = SstackS;
            RScode_pointerS = Scode_pointerS;
            RSenvS = SenvS;
            RSvalS = (((n_150X)<<2));
            goto START;}
          else {
            if ((2 == key_149X)) {
              SvalS = RSvalS;
              SstackS = RSstackS;
              Scode_pointerS = RScode_pointerS;
              SenvS = RSenvS;
              n_133X = ps_real_time();
              RSvalS = SvalS;
              RSstackS = SstackS;
              RScode_pointerS = Scode_pointerS;
              RSenvS = SenvS;
              RSvalS = (((n_133X)<<2));
              goto START;}
            else {
              merged_arg0K0 = 0;
              merged_arg1K1 = (((key_149X)<<2));
              merged_arg1K2 = x_148X;
              goto raise_exception2;}}}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_134X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 132 : {
      RSstackS = (4 + (RSstackS));
      arg2_147X = *((long *) (RSstackS));
      if ((0 == (3 & arg2_147X))) {
        x_137X = RSvalS;
        key_136X = ((arg2_147X)>>2);
        SvalS = RSvalS;
        SstackS = RSstackS;
        Scode_pointerS = RScode_pointerS;
        SenvS = RSenvS;
        return_value_135X = extended_vm(key_136X, x_137X);
        RSvalS = SvalS;
        RSstackS = SstackS;
        RScode_pointerS = Scode_pointerS;
        RSenvS = SenvS;
        if ((17 == (255 & return_value_135X))) {
          merged_arg0K0 = 0;
          merged_arg1K1 = (((key_136X)<<2));
          merged_arg1K2 = x_137X;
          goto raise_exception2;}
        else {
          RSvalS = return_value_135X;
          goto START;}}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_147X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 133 : {
      RSstackS = (4 + (RSstackS));
      arg2_146X = *((long *) (RSstackS));
      if ((0 == (3 & arg2_146X))) {
        RSvalS = (RSvalS);
        SvalS = RSvalS;
        SstackS = RSstackS;
        Scode_pointerS = RScode_pointerS;
        SenvS = RSenvS;
        TTreturn_value = 0;
        return(0L);}
      else {
        merged_arg0K0 = 0;
        merged_arg1K1 = arg2_146X;
        merged_arg1K2 = (RSvalS);
        goto raise_exception2;}}
      break;
    case 134 : {
      RSstackS = (4 + (RSstackS));
      arg2_143X = *((long *) (RSstackS));
      if ((3 == (3 & arg2_143X))) {
        if ((15 == (31 & ((((*((long *) (-7 + arg2_143X))))>>2))))) {
          obj_144X = RSvalS;
          if ((3 == (3 & obj_144X))) {
            if ((15 == (31 & ((((*((long *) (-7 + obj_144X))))>>2))))) {
              merged_arg1K0 = arg2_143X;
              merged_arg1K1 = (RSvalS);
              stob_equalP_return_tag = 0;
              goto stob_equalP;
             stob_equalP_return_0:
              x_145X = stob_equalP_return_value;
              if (x_145X) {
                arg0K0 = 5;
                goto L20298;}
              else {
                arg0K0 = 1;
                goto L20298;}}
            else {
              goto L20289;}}
          else {
            goto L20289;}}
        else {
          goto L20289;}}
      else {
        goto L20289;}}
      break;
    case 135 : {
      obj_140X = RSvalS;
      if ((3 == (3 & obj_140X))) {
        if ((15 == (31 & ((((*((long *) (-7 + obj_140X))))>>2))))) {
          x_139X = RSvalS;
          n_138X = -1 + ((long)(((unsigned long)(*((long *) (-7 + x_139X))))>>8));
          arg1K0 = 0;
          arg1K1 = 0;
          goto L16824;}
        else {
          goto L16802;}}
      else {
        goto L16802;}}
      break;
    case 136 : {
      space_142X = 1 + ((((4 + (RSvalS)))>>2));
      if ((((ShpS) + (((space_142X)<<2))) < (SlimitS))) {
        goto L20018;}
      else {
        merged_arg1K0 = 0;
        collect_saving_temp_return_tag = 10;
        goto collect_saving_temp;
       collect_saving_temp_return_10:
        if ((((ShpS) + (((space_142X)<<2))) < (SlimitS))) {
          goto L20018;}
        else {
          TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
          goto L20018;}}}
      break;
    case 137 : {
      if (((20 + (ShpS)) < (SlimitS))) {
        goto L19900;}
      else {
        merged_arg1K0 = 0;
        collect_saving_temp_return_tag = 11;
        goto collect_saving_temp;
       collect_saving_temp_return_11:
        if (((20 + (ShpS)) < (SlimitS))) {
          goto L19900;}
        else {
          TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
          goto L19900;}}}
      break;
  }}
 L31042: {
  vector_272X = arg1K0;
  if ((1 == vector_272X)) {
    merged_arg0K0 = 0;
    merged_arg1K1 = (((type_123X)<<2));
    goto raise_exception1;}
  else {
    RSvalS = vector_272X;
    goto START;}}
 L10027: {
  ShpS = start_hp_122X;
  arg1K0 = 1;
  goto L31042;}
 L10089: {
  i_273X = arg1K0;
  if ((i_273X < ((long)count_157X))) {
    SvalS = RSvalS;
    SstackS = RSstackS;
    Scode_pointerS = RScode_pointerS;
    SenvS = RSenvS;
    v_274X = hoistD0((*(areas_155X + i_273X)), ((*(areas_155X + i_273X)) + (*(sizes_156X + i_273X))), type_123X);
    RSvalS = SvalS;
    RSstackS = SstackS;
    RScode_pointerS = Scode_pointerS;
    RSenvS = SenvS;
    if (v_274X) {
      arg1K0 = (1 + i_273X);
      goto L10089;}
    else {
      goto L10027;}}
  else {
    areas_275X = Spure_areasS;
    sizes_276X = Spure_sizesS;
    count_277X = Spure_area_countS;
    arg1K0 = 0;
    goto L10068;}}
 L10068: {
  i_278X = arg1K0;
  if ((i_278X < ((long)count_277X))) {
    SvalS = RSvalS;
    SstackS = RSstackS;
    Scode_pointerS = RScode_pointerS;
    SenvS = RSenvS;
    v_279X = hoistD0((*(areas_275X + i_278X)), ((*(areas_275X + i_278X)) + (*(sizes_276X + i_278X))), type_123X);
    RSvalS = SvalS;
    RSstackS = SstackS;
    RScode_pointerS = Scode_pointerS;
    RSenvS = SenvS;
    if (v_279X) {
      arg1K0 = (1 + i_278X);
      goto L10068;}
    else {
      goto L10027;}}
  else {
    *((long *) start_hp_122X) = (-1014 + (((((ShpS) - start_hp_122X))<<8)));
    arg1K0 = (7 + start_hp_122X);
    goto L31042;}}
 L8859: {
  h_280X = arg1K0;
  arg1K0 = (4 + (addr_281X + (-4 & (3 + ((long)(((unsigned long)h_280X)>>8))))));
  goto L8837;}
 L8837: {
  addr_281X = arg1K0;
  if ((addr_281X < (ShpS))) {
    d_283X = *((long *) addr_281X);
    if ((2 == (3 & d_283X))) {
      arg1K0 = d_283X;
      goto L8859;}
    else {
      h_282X = *((long *) (-7 + d_283X));
      *((long *) addr_281X) = h_282X;
      arg1K0 = h_282X;
      goto L8859;}}
  else {
    RSvalS = (((size_318X)<<2));
    goto START;}}
 L13271: {
  sym_284X = arg1K0;
  if ((3 == (3 & sym_284X))) {
    if ((0 == (128 & (*((long *) (-7 + sym_284X)))))) {
      *((long *) (-7 + sym_284X)) = (128 | (*((long *) (-7 + sym_284X))));
      arg1K0 = sym_284X;
      goto L13213;}
    else {
      arg1K0 = sym_284X;
      goto L13213;}}
  else {
    arg1K0 = sym_284X;
    goto L13213;}}
 L28114: {
  v_285X = arg1K0;
  RSvalS = v_285X;
  goto START;}
 L19922: {
  val_286X = arg1K0;
  RSvalS = val_286X;
  goto START;}
 L13315: {
  i_287X = arg1K0;
  h_288X = arg1K1;
  if ((i_287X < n_304X)) {
    arg1K0 = (1 + i_287X);
    arg1K1 = (h_288X + ((long)((((long)(*((unsigned char *) ((-3 + arg2_300X) + i_287X))))))));
    goto L13315;}
  else {
    index_290X = h_288X & (-1 + v_303X);
    bucket_289X = *((long *) ((-3 + table_302X) + (((index_290X)<<2))));
    arg1K0 = bucket_289X;
    goto L13205;}}
 L13213: {
  new_291X = arg1K0;
  *((long *) (ShpS)) = 2050;
  ShpS = (4 + (ShpS));
  new_292X = 3 + (ShpS);
  ShpS = (8 + (ShpS));
  *((long *) (-4 + (ShpS))) = 0;
  *((long *) (-3 + new_292X)) = new_291X;
  *((long *) (1 + new_292X)) = bucket_289X;
  *((long *) ((-3 + table_302X) + (((index_290X)<<2)))) = new_292X;
  arg1K0 = new_291X;
  goto L19922;}
 L13205: {
  b_293X = arg1K0;
  if ((25 == b_293X)) {
    *((long *) (ShpS)) = 1030;
    ShpS = (4 + (ShpS));
    new_295X = 3 + (ShpS);
    ShpS = (4 + (ShpS));
    *((long *) (-4 + (ShpS))) = 0;
    *((long *) (-3 + new_295X)) = arg2_300X;
    if ((3 == (3 & new_295X))) {
      if ((0 == (128 & (*((long *) (-7 + new_295X)))))) {
        *((long *) (-7 + new_295X)) = (128 | (*((long *) (-7 + new_295X))));
        arg1K0 = new_295X;
        goto L13271;}
      else {
        arg1K0 = new_295X;
        goto L13271;}}
    else {
      arg1K0 = new_295X;
      goto L13271;}}
  else {
    merged_arg1K0 = arg2_300X;
    merged_arg1K1 = (*((long *) (-3 + (*((long *) (-3 + b_293X))))));
    stob_equalP_return_tag = 1;
    goto stob_equalP;
   stob_equalP_return_1:
    v_294X = stob_equalP_return_value;
    if (v_294X) {
      arg1K0 = (*((long *) (-3 + b_293X)));
      goto L19922;}
    else {
      arg1K0 = (*((long *) (1 + b_293X)));
      goto L13205;}}}
 L9754: {
  stob_296X = arg1K0;
  from_297X = 4 + (RSstackS);
  arg1K0 = from_297X;
  arg1K1 = (1 + stob_296X);
  goto L9793;}
 L9793: {
  from_298X = arg1K0;
  to_299X = arg1K1;
  if ((from_298X < (from_297X + (((((long)b_432X))<<2))))) {
    *((long *) to_299X) = (*((long *) from_298X));
    arg1K0 = (4 + from_298X);
    arg1K1 = (4 + to_299X);
    goto L9793;}
  else {
    RSstackS = ((RSstackS) - ((((0 - ((long)b_432X)))<<2)));
    *((long *) (-3 + stob_296X)) = (RSenvS);
    RSenvS = stob_296X;
    goto START;}}
 L19900: {
  RSstackS = (4 + (RSstackS));
  arg2_300X = *((long *) (RSstackS));
  if ((3 == (3 & arg2_300X))) {
    if ((15 == (31 & ((((*((long *) (-7 + arg2_300X))))>>2))))) {
      obj_301X = RSvalS;
      if ((3 == (3 & obj_301X))) {
        if ((2 == (31 & ((((*((long *) (-7 + obj_301X))))>>2))))) {
          table_302X = RSvalS;
          v_303X = (((3 + ((long)(((unsigned long)(*((long *) (-7 + table_302X))))>>8))))>>2);
          n_304X = -1 + ((long)(((unsigned long)(*((long *) (-7 + arg2_300X))))>>8));
          arg1K0 = 0;
          arg1K1 = 0;
          goto L13315;}
        else {
          goto L19925;}}
      else {
        goto L19925;}}
    else {
      goto L19925;}}
  else {
    goto L19925;}}
 L19925: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_300X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L20018: {
  RSstackS = (4 + (RSstackS));
  arg2_305X = *((long *) (RSstackS));
  if ((0 == (3 & (RSvalS)))) {
    n_306X = (((RSvalS))>>2);
    if ((3 == (3 & arg2_305X))) {
      if ((0 == (31 & ((((*((long *) (-7 + arg2_305X))))>>2))))) {
        goto L20144;}
      else {
        goto L20046;}}
    else {
      goto L20046;}}
  else {
    merged_arg0K0 = 0;
    merged_arg1K1 = arg2_305X;
    merged_arg1K2 = (RSvalS);
    goto raise_exception2;}}
 L20046: {
  if ((25 == arg2_305X)) {
    goto L20144;}
  else {
    merged_arg0K0 = 0;
    merged_arg1K1 = arg2_305X;
    merged_arg1K2 = (((n_306X)<<2));
    goto raise_exception2;}}
 L20144: {
  len_308X = 1 + n_306X;
  *((long *) (ShpS)) = (62 + (((len_308X)<<8)));
  ShpS = (4 + (ShpS));
  new_307X = 3 + (ShpS);
  ShpS = ((ShpS) + (-4 & (3 + len_308X)));
  if ((0 < len_308X)) {
    *((long *) (-4 + (ShpS))) = 0;
    arg1K0 = new_307X;
    goto L20063;}
  else {
    arg1K0 = new_307X;
    goto L20063;}}
 L20063: {
  obj_309X = arg1K0;
  arg1K0 = arg2_305X;
  arg1K1 = (-1 + n_306X);
  goto L20065;}
 L20065: {
  l_310X = arg1K0;
  i_311X = arg1K1;
  if ((i_311X < 0)) {
    RSvalS = obj_309X;
    goto START;}
  else {
    *((unsigned char *) ((-3 + obj_309X) + i_311X)) = ((unsigned char)((long)((((((*((long *) (-3 + l_310X))))>>8))))));
    arg1K0 = (*((long *) (1 + l_310X)));
    arg1K1 = (-1 + i_311X);
    goto L20065;}}
 L16802: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L16824: {
  i_312X = arg1K0;
  h_313X = arg1K1;
  if ((i_312X < n_138X)) {
    arg1K0 = (1 + i_312X);
    arg1K1 = (h_313X + ((long)((((long)(*((unsigned char *) ((-3 + x_139X) + i_312X))))))));
    goto L16824;}
  else {
    RSvalS = (((h_313X)<<2));
    goto START;}}
 L20289: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_143X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L20298: {
  v_314X = arg0K0;
  RSvalS = ((long)v_314X);
  goto START;}
 L16977: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L16974: {
  merged_arg0K0 = 0;
  merged_arg1K1 = x_130X;
  goto raise_exception1;}
 L17297: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L17365: {
  i_315X = arg1K0;
  if ((i_315X < ((long)count_160X))) {
    SvalS = RSvalS;
    SstackS = RSstackS;
    Scode_pointerS = RScode_pointerS;
    SenvS = RSenvS;
    v_316X = hoistD1((*(areas_158X + i_315X)), ((*(areas_158X + i_315X)) + (*(sizes_159X + i_315X))), x_119X);
    RSvalS = SvalS;
    RSstackS = SstackS;
    RScode_pointerS = Scode_pointerS;
    RSenvS = SenvS;
    if (v_316X) {
      arg1K0 = (1 + i_315X);
      goto L17365;}
    else {
      goto L17350;}}
  else {
    RSvalS = 13;
    goto START;}}
 L17350: {
  ShpS = start_hp_118X;
  merged_arg0K0 = 0;
  goto raise_exception;}
 L28758: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg3_164X;
  merged_arg1K2 = arg2_163X;
  merged_arg1K3 = (RSvalS);
  goto raise_exception3;}
 L28827: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg3_164X;
  merged_arg1K2 = arg2_163X;
  goto raise_exception2;}
 L28742: {
  resume_proc_317X = arg1K0;
  SvalS = RSvalS;
  SstackS = RSstackS;
  Scode_pointerS = RScode_pointerS;
  SenvS = RSenvS;
  do_gc();
  RSvalS = SvalS;
  RSstackS = SstackS;
  RScode_pointerS = Scode_pointerS;
  RSenvS = SenvS;
  /* Do NOT put a call to the scsh I/O gc hook post_gc_fdports() here.
  ** This GC is not for real -- it's for writing images, and will be
  ** aborted. But the part of post_gc_fdports that updates the fdports[]
  ** elements to point into new-space *won't* be aborted, and oops, we're
  ** pointing into hyperspace. This whole thing is a mess; we need to port
  ** to a newer Scheme 48 release that gives us structured GC hooks.
  **     -Olin
  */
  close_untraced_portsB_return_tag = 0;
  goto close_untraced_portsB;
 close_untraced_portsB_return_0:
  fputs("This is a Scheme48 heap image file.", port_168X);
  putc(10, port_168X);
  putc(12, port_168X);
  putc(10, port_168X);
  merged_arg1K0 = 15;
  merged_arg2K1 = port_168X;
  write_number_return_tag = 0;
  goto write_number;
 write_number_return_0:
  merged_arg1K0 = 4;
  merged_arg2K1 = port_168X;
  write_number_return_tag = 1;
  goto write_number;
 write_number_return_1:
  merged_arg1K0 = ((((Snewspace_beginS))>>2));
  merged_arg2K1 = port_168X;
  write_number_return_tag = 2;
  goto write_number;
 write_number_return_2:
  merged_arg1K0 = ((((ShpS))>>2));
  merged_arg2K1 = port_168X;
  write_number_return_tag = 3;
  goto write_number;
 write_number_return_3:
  merged_arg1K0 = resume_proc_317X;
  merged_arg2K1 = port_168X;
  write_number_return_tag = 4;
  goto write_number;
 write_number_return_4:
  putc(12, port_168X);
  *((long *) (ShpS)) = 1;
  fwrite((void *)(ShpS), sizeof(char), ((4 + (ShpS)) - (ShpS)), port_168X);
  fwrite((void *)(Snewspace_beginS), sizeof(char), ((ShpS) - (Snewspace_beginS)), port_168X);
  size_318X = (ShpS) - (Snewspace_beginS);
  fclose(port_168X);
  b_319X = Snewspace_beginS;
  Snewspace_beginS = (Soldspace_beginS);
  Soldspace_beginS = b_319X;
  e_320X = Snewspace_endS;
  Snewspace_endS = (Soldspace_endS);
  Soldspace_endS = e_320X;
  SlimitS = (Ssaved_limitS);
  ShpS = (Ssaved_hpS);
  arg1K0 = (Snewspace_beginS);
  goto L8837;}
 L17473: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L20904: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_172X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L21040: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_112X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L17565: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L17562: {
  v_321X = arg0K0;
  RSvalS = ((long)v_321X);
  goto START;}
 L17718: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L17715: {
  val_322X = arg1K0;
  RSvalS = val_322X;
  goto START;}
 L17710: {
  c_323X = arg1K0;
  *((long *) (5 + x_109X)) = c_323X;
  arg1K0 = c_323X;
  goto L17715;}
 L17836: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L17833: {
  val_324X = arg1K0;
  RSvalS = val_324X;
  goto START;}
 L21131: {
  key_325X = arg1K0;
  RSstackS = (4 + (RSstackS));
  arg2_326X = *((long *) (RSstackS));
  if ((3 == (3 & arg2_326X))) {
    if ((15 == (31 & ((((*((long *) (-7 + arg2_326X))))>>2))))) {
      if ((0 == (3 & (RSvalS)))) {
        mode_327X = (((RSvalS))>>2);
        arg1K0 = 0;
        goto L21318;}
      else {
        goto L21169;}}
    else {
      goto L21169;}}
  else {
    goto L21169;}}
 L21169: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_326X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L21318: {
  i_328X = arg1K0;
  if ((i_328X < (Snumber_of_portsS))) {
    if ((1 == (*((Sopen_vm_portsS) + i_328X)))) {
      arg1K0 = i_328X;
      arg1K1 = arg2_326X;
      goto L21205;}
    else {
      arg1K0 = (1 + i_328X);
      goto L21318;}}
  else {
    arg1K0 = -1;
    arg1K1 = arg2_326X;
    goto L21205;}}
 L21307: {
  i_329X = arg1K0;
  if ((i_329X < (Snumber_of_portsS))) {
    if ((1 == (*((Sopen_vm_portsS) + i_329X)))) {
      arg1K0 = i_329X;
      goto L21249;}
    else {
      arg1K0 = (1 + i_329X);
      goto L21307;}}
  else {
    arg1K0 = -1;
    goto L21249;}}
 L21277: {
  i_330X = arg1K0;
  if ((i_330X < (Snumber_of_portsS))) {
    *(new_ports_335X + i_330X) = (*((Sopen_portsS) + i_330X));
    *(new_vm_ports_336X + i_330X) = (*((Sopen_vm_portsS) + i_330X));
    arg1K0 = (1 + i_330X);
    goto L21277;}
  else {
    free((Sopen_portsS));
    free((Sopen_vm_portsS));
    Sopen_portsS = new_ports_335X;
    Sopen_vm_portsS = new_vm_ports_336X;
    Snumber_of_portsS = new_count_333X;
    arg1K0 = old_count_334X;
    arg1K1 = filename_343X;
    goto L21205;}}
 L21271: {
  i_331X = arg1K0;
  if ((i_331X < new_count_333X)) {
    *(new_vm_ports_336X + i_331X) = 1;
    arg1K0 = (1 + i_331X);
    goto L21271;}
  else {
    arg1K0 = 0;
    goto L21277;}}
 L21260: {
  merged_arg0K0 = 0;
  merged_arg1K1 = filename_343X;
  merged_arg1K2 = (((key_325X)<<2));
  goto raise_exception2;}
 L21249: {
  index_332X = arg1K0;
  if ((index_332X < 0)) {
    new_count_333X = 8 + (Snumber_of_portsS);
    old_count_334X = Snumber_of_portsS;
    new_ports_335X = (FILE **)malloc(sizeof(FILE *) * new_count_333X);
    new_vm_ports_336X = (long*)malloc(sizeof(long) * new_count_333X);
    if ((NULL == new_ports_335X)) {
      goto L21260;}
    else {
      if ((NULL == new_vm_ports_336X)) {
        goto L21260;}
      else {
        arg1K0 = 0;
        goto L21271;}}}
  else {
    arg1K0 = index_332X;
    arg1K1 = filename_343X;
    goto L21205;}}
 L21208: {
  port_337X = arg2K0;
  if ((NULL == port_337X)) {
    RSvalS = 1;
    goto START;}
  else {
    *((long *) (ShpS)) = 4118;
    ShpS = (4 + (ShpS));
    new_338X = 3 + (ShpS);
    ShpS = (16 + (ShpS));
    *((long *) (-4 + (ShpS))) = 0;
    *((long *) (-3 + new_338X)) = (((mode_327X)<<2));
    *((long *) (1 + new_338X)) = (((index_339X)<<2));
    *((long *) (5 + new_338X)) = 1;
    *((long *) (9 + new_338X)) = filename_340X;
    *((Sopen_portsS) + index_339X) = port_337X;
    *((Sopen_vm_portsS) + index_339X) = new_338X;
    RSvalS = new_338X;
    goto START;}}
 L21205: {
  index_339X = arg1K0;
  filename_340X = arg1K1;
  if ((index_339X < 0)) {
    merged_arg1K0 = filename_340X;
    collect_saving_temp_return_tag = 12;
    goto collect_saving_temp;
   collect_saving_temp_return_12:
    filename_343X = collect_saving_temp_return_value;
    arg1K0 = 0;
    goto L21307;}
  else {
    if ((2 == mode_327X)) {
      merged_arg1K0 = filename_340X;
      extract_string_return_tag = 1;
      goto extract_string;
     extract_string_return_1:
      spec_341X = extract_string_return_value;
      arg2K0 = (ps_open(spec_341X, "wb"));
      goto L21208;}
    else {
      merged_arg1K0 = filename_340X;
      extract_string_return_tag = 2;
      goto extract_string;
     extract_string_return_2:
      spec_342X = extract_string_return_value;
      arg2K0 = (ps_open(spec_342X, "rb"));
      goto L21208;}}}
 L21413: {
  if ((1 == (RSvalS))) {
    *((long *) (-3 + arg2_186X)) = 273;
    goto L21438;}
  else {
    if ((17 == (255 & (*((long *) (-3 + arg2_186X)))))) {
      *((long *) (-3 + arg2_186X)) = 529;
      goto L21438;}
    else {
      goto L21438;}}}
 L21441: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_186X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L21438: {
  RSvalS = 13;
  goto START;}
 L18255: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L18264: {
  v_344X = arg0K0;
  RSvalS = ((long)v_344X);
  goto START;}
 L24504: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg3_189X;
  merged_arg1K2 = arg2_188X;
  merged_arg1K3 = (RSvalS);
  goto raise_exception3;}
 L24497: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg3_189X;
  merged_arg1K2 = (((index_191X)<<2));
  merged_arg1K3 = (9 + (((((long)(Kchar_190X)))<<8)));
  goto raise_exception3;}
 L21618: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_101X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L21613: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_101X;
  merged_arg1K2 = (((index_193X)<<2));
  goto raise_exception2;}
 L21857: {
  len_346X = 1 + len_197X;
  *((long *) (ShpS)) = (62 + (((len_346X)<<8)));
  ShpS = (4 + (ShpS));
  new_345X = 3 + (ShpS);
  ShpS = ((ShpS) + (-4 & (3 + len_346X)));
  if ((0 < len_346X)) {
    *((long *) (-4 + (ShpS))) = 0;
    arg1K0 = new_345X;
    goto L21781;}
  else {
    arg1K0 = new_345X;
    goto L21781;}}
 L21806: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_195X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L21763: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (((len_197X)<<2));
  merged_arg1K2 = (9 + (((((long)(init_196X)))<<8)));
  goto raise_exception2;}
 L21781: {
  string_347X = arg1K0;
  arg1K0 = (-1 + len_197X);
  goto L21783;}
 L21783: {
  i_348X = arg1K0;
  if ((i_348X < 0)) {
    RSvalS = string_347X;
    goto START;}
  else {
    *((unsigned char *) ((-3 + string_347X) + i_348X)) = ((unsigned char)((long)(init_196X)));
    arg1K0 = (-1 + i_348X);
    goto L21783;}}
 L24678: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg3_98X;
  merged_arg1K2 = arg2_99X;
  merged_arg1K3 = (RSvalS);
  goto raise_exception3;}
 L24671: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg3_98X;
  merged_arg1K2 = (((index_200X)<<2));
  merged_arg1K3 = (((value_199X)<<2));
  goto raise_exception3;}
 L22033: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_97X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L22028: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_97X;
  merged_arg1K2 = (((index_202X)<<2));
  goto raise_exception2;}
 L22270: {
  *((long *) (ShpS)) = (66 + (((len_94X)<<8)));
  ShpS = (4 + (ShpS));
  new_349X = 3 + (ShpS);
  ShpS = ((ShpS) + (-4 & (3 + len_94X)));
  if ((0 < len_94X)) {
    *((long *) (-4 + (ShpS))) = 0;
    arg1K0 = new_349X;
    goto L22196;}
  else {
    arg1K0 = new_349X;
    goto L22196;}}
 L22178: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (((len_94X)<<2));
  merged_arg1K2 = (((init_95X)<<2));
  goto raise_exception2;}
 L22196: {
  code_vector_350X = arg1K0;
  arg1K0 = (-1 + len_94X);
  goto L22198;}
 L22198: {
  i_351X = arg1K0;
  if ((i_351X < 0)) {
    RSvalS = code_vector_350X;
    goto START;}
  else {
    *((unsigned char *) ((-3 + code_vector_350X) + i_351X)) = ((unsigned char)init_95X);
    arg1K0 = (-1 + i_351X);
    goto L22198;}}
 L25476: {
  merged_arg0K0 = 1;
  merged_arg1K1 = arg3_206X;
  merged_arg1K2 = (((((long)b_90X))<<2));
  merged_arg1K3 = (((index_91X)<<2));
  merged_arg1K4 = x_92X;
  goto raise_exception4;}
 L24845: {
  merged_arg0K0 = 1;
  merged_arg1K1 = arg2_207X;
  merged_arg1K2 = (((((long)b_87X))<<2));
  merged_arg1K3 = (((index_88X)<<2));
  goto raise_exception3;}
 L25022: {
  merged_arg0K0 = 1;
  merged_arg1K1 = (((((long)b_83X))<<2));
  merged_arg1K2 = (((len_84X)<<2));
  merged_arg1K3 = x_85X;
  goto raise_exception3;}
 L25038: {
  val_352X = arg1K0;
  arg1K0 = (-1 + len_84X);
  goto L25040;}
 L25040: {
  i_353X = arg1K0;
  if ((i_353X < 0)) {
    RSvalS = val_352X;
    goto START;}
  else {
    *((long *) ((-3 + val_352X) + (((i_353X)<<2)))) = init_355X;
    arg1K0 = (-1 + i_353X);
    goto L25040;}}
 L25027: {
  okayP_354X = arg3K0;
  init_355X = arg1K1;
  if (okayP_354X) {
    len_357X = ((len_84X)<<2);
    *((long *) (ShpS)) = (2 + (((((((len_357X)<<6)) + ((long)b_83X)))<<2)));
    ShpS = (4 + (ShpS));
    new_356X = 3 + (ShpS);
    ShpS = ((ShpS) + (-4 & (3 + len_357X)));
    if ((0 < len_357X)) {
      *((long *) (-4 + (ShpS))) = 0;
      arg1K0 = new_356X;
      goto L25038;}
    else {
      arg1K0 = new_356X;
      goto L25038;}}
  else {
    merged_arg0K0 = 1;
    merged_arg1K1 = (((((long)b_83X))<<2));
    merged_arg1K2 = (((len_84X)<<2));
    merged_arg1K3 = init_355X;
    goto raise_exception3;}}
 L25732: {
  merged_arg0K0 = 2;
  merged_arg1K1 = arg2_80X;
  merged_arg1K2 = (((((long)b_78X))<<2));
  merged_arg1K3 = (((((long)b_77X))<<2));
  merged_arg1K4 = x_79X;
  goto raise_exception4;}
 L25259: {
  merged_arg0K0 = 2;
  merged_arg1K1 = x_209X;
  merged_arg1K2 = (((((long)b_210X))<<2));
  merged_arg1K3 = (((((long)b_211X))<<2));
  goto raise_exception3;}
 L16631: {
  b_361X = *((unsigned char *) (RScode_pointerS));
  RScode_pointerS = (1 + (RScode_pointerS));
  b_360X = *((unsigned char *) (RScode_pointerS));
  RScode_pointerS = (1 + (RScode_pointerS));
  len_359X = ((((long)b_361X))<<2);
  *((long *) (ShpS)) = (2 + (((((((len_359X)<<6)) + ((long)b_360X)))<<2)));
  ShpS = (4 + (ShpS));
  new_358X = 3 + (ShpS);
  ShpS = ((ShpS) + (-4 & (3 + len_359X)));
  if ((0 < len_359X)) {
    *((long *) (-4 + (ShpS))) = 0;
    arg1K0 = new_358X;
    goto L16639;}
  else {
    arg1K0 = new_358X;
    goto L16639;}}
 L16639: {
  new_362X = arg1K0;
  if ((((long)b_361X) < 1)) {
    goto L16670;}
  else {
    *((long *) (-7 + (new_362X + (((((long)b_361X))<<2))))) = (RSvalS);
    arg1K0 = (-2 + ((long)b_361X));
    goto L16648;}}
 L16670: {
  RSvalS = new_362X;
  goto START;}
 L16648: {
  i_363X = arg1K0;
  if ((i_363X < 0)) {
    goto L16670;}
  else {
    RSstackS = (4 + (RSstackS));
    *((long *) ((-3 + new_362X) + (((i_363X)<<2)))) = (*((long *) (RSstackS)));
    arg1K0 = (-1 + i_363X);
    goto L16648;}}
 L22430: {
  merged_arg0K0 = 1;
  merged_arg1K1 = x_212X;
  merged_arg1K2 = (((((long)b_213X))<<2));
  goto raise_exception2;}
 L22717: {
  RSvalS = (((result_68X)<<2));
  goto START;}
 L22714: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_220X;
  merged_arg1K2 = x_72X;
  goto raise_exception2;}
 L23274: {
  n_364X = arg1K0;
  RSvalS = (((n_364X)<<2));
  goto START;}
 L23270: {
  b_365X = arg1K0;
  c_366X = a_367X % b_365X;
  if ((a_224X < 0)) {
    arg1K0 = (0 - c_366X);
    goto L23274;}
  else {
    arg1K0 = c_366X;
    goto L23274;}}
 L23268: {
  a_367X = arg1K0;
  if ((b_225X < 0)) {
    arg1K0 = (0 - b_225X);
    goto L23270;}
  else {
    arg1K0 = b_225X;
    goto L23270;}}
 L23407: {
  if ((536870911 < c_369X)) {
    merged_arg0K0 = 0;
    merged_arg1K1 = arg2_58X;
    merged_arg1K2 = x_226X;
    goto raise_exception2;}
  else {
    RSvalS = (((c_369X)<<2));
    goto START;}}
 L23404: {
  RSvalS = ((((0 - c_369X))<<2));
  goto START;}
 L23401: {
  b_368X = arg1K0;
  c_369X = a_370X / b_368X;
  if ((a_227X < 0)) {
    if ((b_228X < 0)) {
      goto L23407;}
    else {
      goto L23404;}}
  else {
    if ((b_228X < 0)) {
      goto L23404;}
    else {
      goto L23407;}}}
 L23399: {
  a_370X = arg1K0;
  if ((b_228X < 0)) {
    arg1K0 = (0 - b_228X);
    goto L23401;}
  else {
    arg1K0 = b_228X;
    goto L23401;}}
 L23777: {
  if ((536870911 < c_379X)) {
    merged_arg0K0 = 0;
    merged_arg1K1 = arg2_55X;
    merged_arg1K2 = x_231X;
    goto raise_exception2;}
  else {
    arg1K0 = (((c_379X)<<2));
    goto L23740;}}
 L23753: {
  n_371X = arg1K0;
  if ((0 == (((n_371X)<<2)))) {
    RSvalS = q_375X;
    goto START;}
  else {
    merged_arg0K0 = 0;
    merged_arg1K1 = arg2_55X;
    merged_arg1K2 = x_231X;
    goto raise_exception2;}}
 L23749: {
  b_372X = arg1K0;
  c_373X = a_374X % b_372X;
  if ((a_376X < 0)) {
    arg1K0 = (0 - c_373X);
    goto L23753;}
  else {
    arg1K0 = c_373X;
    goto L23753;}}
 L23747: {
  a_374X = arg1K0;
  if ((b_377X < 0)) {
    arg1K0 = (0 - b_377X);
    goto L23749;}
  else {
    arg1K0 = b_377X;
    goto L23749;}}
 L23740: {
  q_375X = arg1K0;
  if ((0 == x_231X)) {
    merged_arg0K0 = 0;
    merged_arg1K1 = arg2_55X;
    merged_arg1K2 = x_231X;
    goto raise_exception2;}
  else {
    a_376X = ((arg2_55X)>>2);
    b_377X = ((x_231X)>>2);
    if ((a_376X < 0)) {
      arg1K0 = (0 - a_376X);
      goto L23747;}
    else {
      arg1K0 = a_376X;
      goto L23747;}}}
 L23736: {
  b_378X = arg1K0;
  c_379X = a_380X / b_378X;
  if ((a_232X < 0)) {
    if ((b_233X < 0)) {
      goto L23777;}
    else {
      arg1K0 = ((((0 - c_379X))<<2));
      goto L23740;}}
  else {
    if ((b_233X < 0)) {
      arg1K0 = ((((0 - c_379X))<<2));
      goto L23740;}
    else {
      goto L23777;}}}
 L23734: {
  a_380X = arg1K0;
  if ((b_233X < 0)) {
    arg1K0 = (0 - b_233X);
    goto L23736;}
  else {
    arg1K0 = b_233X;
    goto L23736;}}
 L23940: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_54X;
  merged_arg1K2 = x_234X;
  goto raise_exception2;}
 L24090: {
  if ((536870911 < c_388X)) {
    merged_arg0K0 = 0;
    merged_arg1K1 = arg2_53X;
    merged_arg1K2 = x_236X;
    goto raise_exception2;}
  else {
    RSvalS = (((c_388X)<<2));
    goto START;}}
 L24083: {
  if ((536870912 < c_388X)) {
    merged_arg0K0 = 0;
    merged_arg1K1 = arg2_53X;
    merged_arg1K2 = x_236X;
    goto raise_exception2;}
  else {
    RSvalS = ((((0 - c_388X))<<2));
    goto START;}}
 L24079: {
  if ((536870911 < lo_c_386X)) {
    goto L24074;}
  else {
    if ((lo_c_386X < 0)) {
      goto L24074;}
    else {
      if ((8192 < mid_c_387X)) {
        goto L24074;}
      else {
        if ((a_237X < 0)) {
          if ((b_238X < 0)) {
            goto L24090;}
          else {
            goto L24083;}}
        else {
          if ((b_238X < 0)) {
            goto L24083;}
          else {
            goto L24090;}}}}}}
 L24074: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_53X;
  merged_arg1K2 = x_236X;
  goto raise_exception2;}
 L24059: {
  b_381X = arg1K0;
  lo_a_382X = 65535 & a_389X;
  lo_b_383X = 65535 & b_381X;
  hi_a_384X = 65535 & (((a_389X)>>16));
  hi_b_385X = 65535 & (((b_381X)>>16));
  lo_c_386X = PS_SMALL_MULTIPLY(lo_a_382X, lo_b_383X);
  mid_c_387X = (PS_SMALL_MULTIPLY(lo_a_382X, hi_b_385X)) + (PS_SMALL_MULTIPLY(lo_b_383X, hi_a_384X));
  c_388X = lo_c_386X + (((mid_c_387X)<<16));
  if ((0 < hi_a_384X)) {
    if ((0 < hi_b_385X)) {
      goto L24074;}
    else {
      goto L24079;}}
  else {
    goto L24079;}}
 L24057: {
  a_389X = arg1K0;
  if ((b_238X < 0)) {
    arg1K0 = (0 - b_238X);
    goto L24059;}
  else {
    arg1K0 = b_238X;
    goto L24059;}}
 L24263: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_239X;
  merged_arg1K2 = x_52X;
  goto raise_exception2;}
 L28572: {
  offset_390X = arg1K0;
  RScode_pointerS = ((RScode_pointerS) + offset_390X);
  goto START;}
 L25344: {
  RSvalS = proc_36X;
  merged_arg0K0 = 0;
  goto perform_application;}
 L15148: {
  RSstackS = (4 + (RSstackS));
  list_391X = *((long *) (RSstackS));
  a_392X = *((long *) (-3 + list_391X));
  *((long *) (ShpS)) = 2050;
  ShpS = (4 + (ShpS));
  new_393X = 3 + (ShpS);
  ShpS = (8 + (ShpS));
  *((long *) (-4 + (ShpS))) = 0;
  *((long *) (-3 + new_393X)) = a_392X;
  *((long *) (1 + new_393X)) = 25;
  arg1K0 = (*((long *) (1 + list_391X)));
  arg1K1 = new_393X;
  goto L15158;}
 L15158: {
  l_394X = arg1K0;
  last_395X = arg1K1;
  if ((25 == l_394X)) {
    *((long *) (RSstackS)) = new_393X;
    RSstackS = (-4 + (RSstackS));
    SnargsS = 64;
    goto L25344;}
  else {
    a_397X = *((long *) (-3 + l_394X));
    *((long *) (ShpS)) = 2050;
    ShpS = (4 + (ShpS));
    new_396X = 3 + (ShpS);
    ShpS = (8 + (ShpS));
    *((long *) (-4 + (ShpS))) = 0;
    *((long *) (-3 + new_396X)) = a_397X;
    *((long *) (1 + new_396X)) = 25;
    *((long *) (1 + last_395X)) = new_396X;
    arg1K0 = (*((long *) (1 + l_394X)));
    arg1K1 = new_396X;
    goto L15158;}}
 L15374: {
  i_398X = arg1K0;
  l_399X = arg1K1;
  if ((0 < i_398X)) {
    *((long *) (RSstackS)) = (*((long *) (-3 + l_399X)));
    RSstackS = (-4 + (RSstackS));
    arg1K0 = (-1 + i_398X);
    arg1K1 = (*((long *) (1 + l_399X)));
    goto L15374;}
  else {
    if ((0 == overflow_401X)) {
      SnargsS = nargs_407X;
      goto L25344;}
    else {
      *((long *) (RSstackS)) = l_399X;
      RSstackS = (-4 + (RSstackS));
      space_400X = 3 * overflow_401X;
      if ((((ShpS) + (((space_400X)<<2))) < (SlimitS))) {
        goto L15148;}
      else {
        merged_arg1K0 = 0;
        collect_saving_temp_return_tag = 13;
        goto collect_saving_temp;
       collect_saving_temp_return_13:
        if ((((ShpS) + (((space_400X)<<2))) < (SlimitS))) {
          goto L15148;}
        else {
          TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
          goto L15148;}}}}}
 L15338: {
  overflow_401X = arg1K0;
  arg1K0 = (len_404X - overflow_401X);
  arg1K1 = args_408X;
  goto L15374;}
 L25378: {
  merged_arg1K0 = 25;
  merged_arg1K1 = ((long)(*((unsigned char *) (RScode_pointerS))));
  pop_args_list_return_tag = 2;
  goto pop_args_list;
 pop_args_list_return_2:
  args_402X = pop_args_list_return_value;
  merged_arg0K0 = 0;
  merged_arg1K1 = proc_36X;
  merged_arg1K2 = args_402X;
  merged_arg1K3 = (RSvalS);
  goto raise_exception3;}
 L25376: {
  fast_403X = arg1K0;
  len_404X = arg1K1;
  slow_405X = arg1K2;
  move_slowP_406X = arg3K3;
  if ((25 == fast_403X)) {
    args_408X = RSvalS;
    nargs_407X = len_404X + ((long)(*((unsigned char *) (RScode_pointerS))));
    if ((63 < nargs_407X)) {
      arg1K0 = (-63 + nargs_407X);
      goto L15338;}
    else {
      arg1K0 = 0;
      goto L15338;}}
  else {
    if ((3 == (3 & fast_403X))) {
      if ((0 == (31 & ((((*((long *) (-7 + fast_403X))))>>2))))) {
        if (move_slowP_406X) {
          if ((fast_403X == slow_405X)) {
            merged_arg1K0 = 25;
            merged_arg1K1 = ((long)(*((unsigned char *) (RScode_pointerS))));
            pop_args_list_return_tag = 3;
            goto pop_args_list;
           pop_args_list_return_3:
            args_409X = pop_args_list_return_value;
            merged_arg0K0 = 0;
            merged_arg1K1 = proc_36X;
            merged_arg1K2 = args_409X;
            merged_arg1K3 = (RSvalS);
            goto raise_exception3;}
          else {
            arg1K0 = (*((long *) (1 + fast_403X)));
            arg1K1 = (1 + len_404X);
            arg1K2 = (*((long *) (1 + slow_405X)));
            arg3K3 = 0;
            goto L25376;}}
        else {
          arg1K0 = (*((long *) (1 + fast_403X)));
          arg1K1 = (1 + len_404X);
          arg1K2 = slow_405X;
          arg3K3 = 1;
          goto L25376;}}
      else {
        goto L25378;}}
    else {
      goto L25378;}}}
 L15912: {
  merged_arg0K0 = 0;
  goto perform_application;}
 L15929: {
  loc_410X = arg1K0;
  arg_411X = arg1K1;
  if (((RSstackS) < arg_411X)) {
    *((long *) loc_410X) = (*((long *) arg_411X));
    arg1K0 = (-4 + loc_410X);
    arg1K1 = (-4 + arg_411X);
    goto L15929;}
  else {
    RSstackS = loc_410X;
    goto L15912;}}
 L28365: {
  v_412X = arg1K0;
  ScontS = v_412X;
  goto START;}
 L28247: {
  key_413X = arg1K0;
  merged_arg1K0 = ((RScode_pointerS) + ((((((long)b_254X))<<8)) + ((long)b_255X)));
  merged_arg1K1 = ((long)b_256X);
  merged_arg1K2 = key_413X;
  push_continuationB_return_tag = 0;
  goto push_continuationB;
 push_continuationB_return_0:
  goto START;}
 L28264: {
  v_414X = arg1K0;
  merged_arg1K0 = v_414X;
  copy_stack_into_heap_return_tag = 0;
  goto copy_stack_into_heap;
 copy_stack_into_heap_return_0:
  arg1K0 = 0;
  goto L28247;}
 L28104: {
  space_415X = arg1K0;
  if ((((ShpS) + (((space_415X)<<2))) < (SlimitS))) {
    arg1K0 = 0;
    goto L28106;}
  else {
    merged_arg1K0 = 0;
    collect_saving_temp_return_tag = 14;
    goto collect_saving_temp;
   collect_saving_temp_return_14:
    if ((((ShpS) + (((space_415X)<<2))) < (SlimitS))) {
      arg1K0 = 0;
      goto L28106;}
    else {
      TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
      arg1K0 = 0;
      goto L28106;}}}
 L28106: {
  key_416X = arg1K0;
  p_417X = RSenvS;
  if ((p_417X < (Sstack_beginS))) {
    arg1K0 = (RSenvS);
    goto L28108;}
  else {
    if (((Sstack_endS) < p_417X)) {
      arg1K0 = (RSenvS);
      goto L28108;}
    else {
      merged_arg1K0 = (RSenvS);
      merged_arg1K1 = (ScontS);
      merged_arg1K2 = key_416X;
      merged_arg0K3 = 0;
      save_env_in_heap_return_tag = 0;
      goto save_env_in_heap;
     save_env_in_heap_return_0:
      v_418X = save_env_in_heap_return_value;
      RSenvS = v_418X;
      arg1K0 = (RSenvS);
      goto L28108;}}}
 L28108: {
  env_419X = arg1K0;
  if (((12 + (ShpS)) < (SlimitS))) {
    goto L28110;}
  else {
    merged_arg1K0 = 0;
    collect_saving_temp_return_tag = 15;
    goto collect_saving_temp;
   collect_saving_temp_return_15:
    if (((12 + (ShpS)) < (SlimitS))) {
      goto L28110;}
    else {
      TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
      goto L28110;}}}
 L28110: {
  b_420X = *((unsigned char *) (RScode_pointerS));
  RScode_pointerS = (1 + (RScode_pointerS));
  a_421X = *((long *) ((-3 + (StemplateS)) + (((((long)b_420X))<<2))));
  *((long *) (ShpS)) = 2062;
  ShpS = (4 + (ShpS));
  new_422X = 3 + (ShpS);
  ShpS = (8 + (ShpS));
  *((long *) (-4 + (ShpS))) = 0;
  *((long *) (-3 + new_422X)) = a_421X;
  *((long *) (1 + new_422X)) = env_419X;
  if ((3 == (3 & new_422X))) {
    if ((0 == (128 & (*((long *) (-7 + new_422X)))))) {
      *((long *) (-7 + new_422X)) = (128 | (*((long *) (-7 + new_422X))));
      arg1K0 = new_422X;
      goto L28114;}
    else {
      arg1K0 = new_422X;
      goto L28114;}}
  else {
    arg1K0 = new_422X;
    goto L28114;}}
 L28006: {
  env_423X = arg1K0;
  i_424X = arg1K1;
  if ((0 == i_424X)) {
    b_425X = *((unsigned char *) (RScode_pointerS));
    RScode_pointerS = (1 + (RScode_pointerS));
    *((long *) ((-3 + env_423X) + (((((long)b_425X))<<2)))) = (RSvalS);
    RSvalS = 13;
    goto START;}
  else {
    arg1K0 = (*((long *) (-3 + env_423X)));
    arg1K1 = (-1 + i_424X);
    goto L28006;}}
 L27698: {
  env_426X = arg1K0;
  i_427X = arg1K1;
  if ((0 == i_427X)) {
    b_428X = *((unsigned char *) (RScode_pointerS));
    RScode_pointerS = (1 + (RScode_pointerS));
    RSvalS = (*((long *) ((-3 + env_426X) + (((((long)b_428X))<<2)))));
    if ((529 == (RSvalS))) {
      merged_arg0K0 = 2;
      goto raise_exception;}
    else {
      goto START;}}
  else {
    arg1K0 = (*((long *) (-3 + env_426X)));
    arg1K1 = (-1 + i_427X);
    goto L27698;}}
 L27934: {
  args_429X = arg1K0;
  RSvalS = args_429X;
  SnargsS = (1 + ((long)b_268X));
  goto START;}
 L27866: {
  b_432X = *((unsigned char *) (RScode_pointerS));
  RScode_pointerS = (1 + (RScode_pointerS));
  len_431X = 4 + (((((long)b_432X))<<2));
  *((long *) (ShpS)) = (10 + (((len_431X)<<8)));
  ShpS = (4 + (ShpS));
  new_430X = 3 + (ShpS);
  ShpS = ((ShpS) + (-4 & (3 + len_431X)));
  if ((0 < len_431X)) {
    *((long *) (-4 + (ShpS))) = 0;
    arg1K0 = new_430X;
    goto L9754;}
  else {
    arg1K0 = new_430X;
    goto L9754;}}
 L27800: {
  b_433X = *((unsigned char *) (RScode_pointerS));
  RScode_pointerS = (1 + (RScode_pointerS));
  *((long *) (RSstackS)) = (RSenvS);
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = (1034 + (((((long)b_433X))<<10)));
  RSstackS = (-4 + (RSstackS));
  RSenvS = (11 + (RSstackS));
  goto START;}
 L27833: {
  v_434X = arg1K0;
  merged_arg1K0 = v_434X;
  copy_stack_into_heap_return_tag = 1;
  goto copy_stack_into_heap;
 copy_stack_into_heap_return_1:
  goto L27800;}
 L31145: {
  merged_arg0K0 = 0;
  merged_arg1K1 = proc_151X;
  goto raise_exception1;}
 L31092: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L31073: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L30952: {
  v_435X = arg0K0;
  RSvalS = ((long)v_435X);
  goto START;}
 L30934: {
  v_436X = arg0K0;
  RSvalS = ((long)v_436X);
  goto START;}
 L30912: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L30891: {
  RSvalS = x_185X;
  goto START;}
 L30876: {
  v_437X = arg0K0;
  RSvalS = ((long)v_437X);
  goto START;}
 L30840: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L30809: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (RSvalS);
  goto raise_exception1;}
 L30762: {
  v_438X = arg0K0;
  RSvalS = ((long)v_438X);
  goto START;}
 L30744: {
  v_439X = arg0K0;
  RSvalS = ((long)v_439X);
  goto START;}
 L30722: {
  merged_arg0K0 = 0;
  merged_arg1K1 = (((x_73X)<<2));
  goto raise_exception1;}
 L30691: {
  v_440X = arg0K0;
  RSvalS = ((long)v_440X);
  goto START;}
 L30679: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_215X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L30662: {
  v_441X = arg0K0;
  RSvalS = ((long)v_441X);
  goto START;}
 L30650: {
  merged_arg0K0 = 0;
  merged_arg1K1 = arg2_217X;
  merged_arg1K2 = (RSvalS);
  goto raise_exception2;}
 L30635: {
  v_442X = arg0K0;
  RSvalS = ((long)v_442X);
  goto START;}
 L30507: {
  r_443X = arg1K0;
  if ((536870911 < r_443X)) {
    merged_arg0K0 = 0;
    merged_arg1K1 = x_222X;
    goto raise_exception1;}
  else {
    RSvalS = (((r_443X)<<2));
    goto START;}}
 L30319: {
  v_444X = arg0K0;
  RSvalS = ((long)v_444X);
  goto START;}
 L30295: {
  v_445X = arg0K0;
  RSvalS = ((long)v_445X);
  goto START;}
 L30212: {
  RSvalS = 1;
  goto START;}
 L30185: {
  RSvalS = 1;
  goto START;}
 L30158: {
  RSvalS = 1;
  goto START;}
 L30131: {
  RSvalS = 1;
  goto START;}
 L30113: {
  v_446X = arg0K0;
  RSvalS = ((long)v_446X);
  goto START;}
 L30099: {
  v_447X = arg0K0;
  RSvalS = ((long)v_447X);
  goto START;}
 L29978: {
  v_448X = arg1K0;
  ScontS = v_448X;
  SnargsS = 0;
  merged_arg0K0 = 0;
  goto perform_application;}
 L29948: {
  key_449X = arg1K0;
  merged_arg1K0 = key_449X;
  merged_arg0K1 = 2;
  preserve_continuation_return_tag = 0;
  goto preserve_continuation;
 preserve_continuation_return_0:
  v_450X = preserve_continuation_return_value;
  RSvalS = v_450X;
  goto START;}
 raise_exception: {
  args_676X = merged_arg0K0;{
  push_exception_continuationB_return_tag = 0;
  goto push_exception_continuationB;
 push_exception_continuationB_return_0:
  *((long *) (RSstackS)) = (((((long)(*((unsigned char *) (-1 + ((RScode_pointerS) - ((long)args_676X)))))))<<2));
  RSstackS = (-4 + (RSstackS));
  merged_arg0K0 = 0;
  goto raise;}}

 return_values: {
  nargs_674X = merged_arg1K0;{
  if ((1 == nargs_674X)) {
    RSstackS = (4 + (RSstackS));
    RSvalS = (*((long *) (RSstackS)));
    cont_451X = ScontS;
    tem_452X = *((long *) (5 + cont_451X));
    pc_453X = *((long *) (1 + cont_451X));
    StemplateS = tem_452X;
    RScode_pointerS = ((-3 + (*((long *) (-3 + tem_452X)))) + (((pc_453X)>>2)));
    RSenvS = (*((long *) (9 + cont_451X)));
    ScontS = (*((long *) (-3 + cont_451X)));
    RSstackS = (9 + cont_451X);
    goto START;}
  else {
    if (((ScontS) == (Sbottom_of_stackS))) {
      arg1K0 = (*((long *) (-3 + (Sbottom_of_stackS))));
      goto L27410;}
    else {
      arg1K0 = (ScontS);
      goto L27410;}}}
 L27360: {
  args_465X = arg1K0;
  merged_arg0K0 = 0;
  merged_arg1K1 = args_465X;
  goto raise_exception1;}
 L27307: {
  SnargsS = nargs_674X;
  RSvalS = (*((long *) (13 + cont_457X)));
  merged_arg0K0 = 0;
  goto perform_application;}
 L27410: {
  cont_457X = arg1K0;
  if ((3 == (3 & cont_457X))) {
    if ((8 == (31 & ((((*((long *) (-7 + cont_457X))))>>2))))) {
      next_op_459X = *((unsigned char *) ((-3 + (*((long *) (-3 + (*((long *) (5 + cont_457X))))))) + ((((*((long *) (1 + cont_457X))))>>2))));
      if ((31 == ((long)next_op_459X))) {
        cont_462X = ScontS;
        tem_463X = *((long *) (5 + cont_462X));
        pc_464X = *((long *) (1 + cont_462X));
        StemplateS = tem_463X;
        RScode_pointerS = ((-3 + (*((long *) (-3 + tem_463X)))) + (((pc_464X)>>2)));
        RSenvS = (*((long *) (9 + cont_462X)));
        ScontS = (*((long *) (-3 + cont_462X)));
        RSstackS = (9 + cont_462X);
        goto START;}
      else {
        if ((27 == ((long)next_op_459X))) {
          next_461X = *((long *) (-3 + (ScontS)));
          if (((ScontS) == (Sbottom_of_stackS))) {
            *((long *) (-3 + (ScontS))) = (*((long *) (-3 + next_461X)));
            goto L27307;}
          else {
            ScontS = next_461X;
            goto L27307;}}
        else {
          if ((64 == nargs_674X)) {
            RSstackS = (4 + (RSstackS));
            merged_arg1K0 = (*((long *) (RSstackS)));
            merged_arg1K1 = 63;
            pop_args_list_return_tag = 4;
            goto pop_args_list;
           pop_args_list_return_4:
            v_458X = pop_args_list_return_value;
            arg1K0 = v_458X;
            goto L27360;}
          else {
            merged_arg1K0 = 25;
            merged_arg1K1 = nargs_674X;
            pop_args_list_return_tag = 5;
            goto pop_args_list;
           pop_args_list_return_5:
            v_460X = pop_args_list_return_value;
            arg1K0 = v_460X;
            goto L27360;}}}}
    else {
      goto L27418;}}
  else {
    goto L27418;}}
 L27418: {
  if ((64 == nargs_674X)) {
    RSstackS = (4 + (RSstackS));
    merged_arg1K0 = (*((long *) (RSstackS)));
    merged_arg1K1 = 63;
    pop_args_list_return_tag = 6;
    goto pop_args_list;
   pop_args_list_return_6:
    v_456X = pop_args_list_return_value;
    arg1K0 = v_456X;
    goto L27448;}
  else {
    merged_arg1K0 = 25;
    merged_arg1K1 = nargs_674X;
    pop_args_list_return_tag = 7;
    goto pop_args_list;
   pop_args_list_return_7:
    v_455X = pop_args_list_return_value;
    arg1K0 = v_455X;
    goto L27448;}}
 L27448: {
  args_454X = arg1K0;
  merged_arg0K0 = 0;
  merged_arg1K1 = args_454X;
  goto raise_exception1;}}

 raise_exception1: {
  args_671X = merged_arg0K0;
  a1_672X = merged_arg1K1;{
  push_exception_continuationB_return_tag = 1;
  goto push_exception_continuationB;
 push_exception_continuationB_return_1:
  *((long *) (RSstackS)) = (((((long)(*((unsigned char *) (-1 + ((RScode_pointerS) - ((long)args_671X)))))))<<2));
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a1_672X;
  RSstackS = (-4 + (RSstackS));
  merged_arg0K0 = 1;
  goto raise;}}

 raise_exception2: {
  args_667X = merged_arg0K0;
  a1_668X = merged_arg1K1;
  a2_669X = merged_arg1K2;{
  push_exception_continuationB_return_tag = 2;
  goto push_exception_continuationB;
 push_exception_continuationB_return_2:
  *((long *) (RSstackS)) = (((((long)(*((unsigned char *) (-1 + ((RScode_pointerS) - ((long)args_667X)))))))<<2));
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a1_668X;
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a2_669X;
  RSstackS = (-4 + (RSstackS));
  merged_arg0K0 = 2;
  goto raise;}}

 raise_exception3: {
  args_662X = merged_arg0K0;
  a1_663X = merged_arg1K1;
  a2_664X = merged_arg1K2;
  a3_665X = merged_arg1K3;{
  push_exception_continuationB_return_tag = 3;
  goto push_exception_continuationB;
 push_exception_continuationB_return_3:
  *((long *) (RSstackS)) = (((((long)(*((unsigned char *) (-1 + ((RScode_pointerS) - ((long)args_662X)))))))<<2));
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a1_663X;
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a2_664X;
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a3_665X;
  RSstackS = (-4 + (RSstackS));
  merged_arg0K0 = 3;
  goto raise;}}

 raise_exception4: {
  args_656X = merged_arg0K0;
  a1_657X = merged_arg1K1;
  a2_658X = merged_arg1K2;
  a3_659X = merged_arg1K3;
  a4_660X = merged_arg1K4;{
  push_exception_continuationB_return_tag = 4;
  goto push_exception_continuationB;
 push_exception_continuationB_return_4:
  *((long *) (RSstackS)) = (((((long)(*((unsigned char *) (-1 + ((RScode_pointerS) - ((long)args_656X)))))))<<2));
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a1_657X;
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a2_658X;
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a3_659X;
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a4_660X;
  RSstackS = (-4 + (RSstackS));
  merged_arg0K0 = 4;
  goto raise;}}

 application_exception: {
  byte_args_654X = merged_arg0K0;{
  if ((64 == (SnargsS))) {
    RSstackS = (4 + (RSstackS));
    merged_arg1K0 = (*((long *) (RSstackS)));
    merged_arg1K1 = 63;
    pop_args_list_return_tag = 8;
    goto pop_args_list;
   pop_args_list_return_8:
    v_467X = pop_args_list_return_value;
    arg1K0 = v_467X;
    goto L24425;}
  else {
    merged_arg1K0 = 25;
    merged_arg1K1 = (SnargsS);
    pop_args_list_return_tag = 9;
    goto pop_args_list;
   pop_args_list_return_9:
    v_466X = pop_args_list_return_value;
    arg1K0 = v_466X;
    goto L24425;}}
 L24425: {
  args_468X = arg1K0;
  a1_469X = RSvalS;
  *((long *) (RSstackS)) = (((((long)(*((unsigned char *) (-1 + ((RScode_pointerS) - ((long)byte_args_654X)))))))<<2));
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = a1_469X;
  RSstackS = (-4 + (RSstackS));
  *((long *) (RSstackS)) = args_468X;
  RSstackS = (-4 + (RSstackS));
  merged_arg0K0 = 2;
  goto raise;}}

 raise: {
  nargs_652X = merged_arg0K0;{
  SnargsS = (1 + ((long)nargs_652X));
  RSvalS = (Sexception_handlerS);
  obj_470X = RSvalS;
  if ((3 == (3 & obj_470X))) {
    if ((3 == (31 & ((((*((long *) (-7 + obj_470X))))>>2))))) {
      goto L15972;}
    else {
      goto L16034;}}
  else {
    goto L16034;}}
 L16034: {
  TTerror("exception handler is not a closure", 0, 0, 0, 0);
  goto L15972;}
 L15974: {
  if ((Sexception_space_usedPS)) {
    x_473X = (Sstack_limitS) < (-296 + (RSstackS));
    if (x_473X) {
      goto L15987;}
    else {
      TTerror("no space on stack to reserve exception space", 0, 0, 0, 0);
      goto L15987;}}
  else {
    goto L15976;}}
 L16008: {
  v_472X = arg1K0;
  merged_arg1K0 = v_472X;
  copy_stack_into_heap_return_tag = 2;
  goto copy_stack_into_heap;
 copy_stack_into_heap_return_2:
  goto L15974;}
 L15976: {
  merged_arg0K0 = 0;
  goto perform_application;}
 L15987: {
  Sstack_limitS = (296 + (Sstack_beginS));
  Sexception_space_usedPS = 0;
  goto L15976;}
 L15972: {
  if (((Sstack_limitS) < (-296 + (RSstackS)))) {
    goto L15974;}
  else {
    space_471X = 1 + (((((Sstack_endS) - (RSstackS)))>>2));
    if ((((ShpS) + (((space_471X)<<2))) < (SlimitS))) {
      arg1K0 = 0;
      goto L16008;}
    else {
      merged_arg1K0 = 0;
      collect_saving_temp_return_tag = 16;
      goto collect_saving_temp;
     collect_saving_temp_return_16:
      if ((((ShpS) + (((space_471X)<<2))) < (SlimitS))) {
        arg1K0 = 0;
        goto L16008;}
      else {
        TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
        arg1K0 = 0;
        goto L16008;}}}}}

 perform_application: {
  bytes_consumed_650X = merged_arg0K0;{
  obj_475X = RSvalS;
  if ((3 == (3 & obj_475X))) {
    if ((3 == (31 & ((((*((long *) (-7 + obj_475X))))>>2))))) {
      RSenvS = (*((long *) (1 + (RSvalS))));
      tem_474X = *((long *) (-3 + (RSvalS)));
      StemplateS = tem_474X;
      RScode_pointerS = (-3 + (*((long *) (-3 + tem_474X))));
      if ((0 == ((Spending_interruptsS) & (Senabled_interruptsS)))) {
        goto START;}
      else {
        goto handle_interrupt;}}
    else {
      goto L15787;}}
  else {
    goto L15787;}}
 L15787: {
  merged_arg0K0 = bytes_consumed_650X;
  goto application_exception;}}

 handle_interrupt: {
{ if (((Sstack_limitS) < (-276 + (RSstackS)))) {
    arg1K0 = 0;
    goto L16076;}
  else {
    space_476X = 1 + (((((Sstack_endS) - (RSstackS)))>>2));
    if ((((ShpS) + (((space_476X)<<2))) < (SlimitS))) {
      arg1K0 = 0;
      goto L16316;}
    else {
      merged_arg1K0 = 0;
      collect_saving_temp_return_tag = 17;
      goto collect_saving_temp;
     collect_saving_temp_return_17:
      if ((((ShpS) + (((space_476X)<<2))) < (SlimitS))) {
        arg1K0 = 0;
        goto L16316;}
      else {
        TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
        arg1K0 = 0;
        goto L16316;}}}}
 L16076: {
  key_483X = arg1K0;
  n_484X = (Spending_interruptsS) & (Senabled_interruptsS);
  arg1K0 = 0;
  arg1K1 = 1;
  goto L16304;}
 L16316: {
  v_482X = arg1K0;
  merged_arg1K0 = v_482X;
  copy_stack_into_heap_return_tag = 3;
  goto copy_stack_into_heap;
 copy_stack_into_heap_return_3:
  arg1K0 = 0;
  goto L16076;}
 L16304: {
  i_478X = arg1K0;
  m_479X = arg1K1;
  if ((0 == (n_484X & m_479X))) {
    arg1K0 = (1 + i_478X);
    arg1K1 = (((m_479X)<<1));
    goto L16304;}
  else {
    Spending_interruptsS = (n_484X & (~ m_479X));
    *((long *) (RSstackS)) = (RSvalS);
    RSstackS = (-4 + (RSstackS));
    *((long *) (RSstackS)) = (StemplateS);
    RSstackS = (-4 + (RSstackS));
    *((long *) (RSstackS)) = (RSenvS);
    RSstackS = (-4 + (RSstackS));
    *((long *) (RSstackS)) = ((((SnargsS))<<2));
    RSstackS = (-4 + (RSstackS));
    *((long *) (RSstackS)) = ((((Senabled_interruptsS))<<2));
    RSstackS = (-4 + (RSstackS));
    tem_481X = Sinterrupt_templateS;
    StemplateS = tem_481X;
    RScode_pointerS = (-3 + (*((long *) (-3 + tem_481X))));
    merged_arg1K0 = (RScode_pointerS);
    merged_arg1K1 = (5 + (SnargsS));
    merged_arg1K2 = key_483X;
    push_continuationB_return_tag = 1;
    goto push_continuationB;
   push_continuationB_return_1:
    *((long *) (RSstackS)) = ((((Senabled_interruptsS))<<2));
    RSstackS = (-4 + (RSstackS));
    SnargsS = 1;
    obj_480X = Sinterrupt_handlersS;
    if ((3 == (3 & obj_480X))) {
      if ((2 == (31 & ((((*((long *) (-7 + obj_480X))))>>2))))) {
        goto L16118;}
      else {
        goto L16194;}}
    else {
      goto L16194;}}}
 L16194: {
  TTerror("interrupt handler is not a vector", 0, 0, 0, 0);
  goto L16118;}
 L16146: {
  TTerror("interrupt handler is not a closure", 1, i_478X, 0, 0);
  goto L16136;}
 L16136: {
  merged_arg0K0 = 0;
  goto perform_application;}
 L16118: {
  RSvalS = (*((long *) ((-3 + (Sinterrupt_handlersS)) + (((i_478X)<<2)))));
  Senabled_interruptsS = 0;
  obj_477X = RSvalS;
  if ((3 == (3 & obj_477X))) {
    if ((3 == (31 & ((((*((long *) (-7 + obj_477X))))>>2))))) {
      goto L16136;}
    else {
      goto L16146;}}
  else {
    goto L16146;}}}

 copy_stack_into_heap: {
  key_647X = merged_arg1K0;{
  arg1K0 = (4 + (RSstackS));
  arg1K1 = 0;
  goto L15036;}
 L15036: {
  p_488X = arg1K0;
  i_489X = arg1K1;
  if ((2 == (3 & (*((long *) p_488X))))) {
    len_491X = ((i_489X)<<2);
    *((long *) (ShpS)) = (10 + (((len_491X)<<8)));
    ShpS = (4 + (ShpS));
    new_490X = 3 + (ShpS);
    ShpS = ((ShpS) + (-4 & (3 + len_491X)));
    if ((0 < len_491X)) {
      *((long *) (-4 + (ShpS))) = 0;
      arg1K0 = new_490X;
      goto L14900;}
    else {
      arg1K0 = new_490X;
      goto L14900;}}
  else {
    arg1K0 = (4 + p_488X);
    arg1K1 = (1 + i_489X);
    goto L15036;}}
 L14900: {
  vec_487X = arg1K0;
  arg1K0 = (-1 + i_489X);
  goto L14902;}
 L14926: {
  i_486X = arg1K0;
  if ((i_486X < i_489X)) {
    *((long *) (RSstackS)) = (*((long *) ((-3 + vec_487X) + (((i_486X)<<2)))));
    RSstackS = (-4 + (RSstackS));
    arg1K0 = (1 + i_486X);
    goto L14926;}
  else {
    goto copy_stack_into_heap_return;}}
 L14902: {
  i_485X = arg1K0;
  if ((-1 < i_485X)) {
    RSstackS = (4 + (RSstackS));
    *((long *) ((-3 + vec_487X) + (((i_485X)<<2)))) = (*((long *) (RSstackS)));
    arg1K0 = (-1 + i_485X);
    goto L14902;}
  else {
    merged_arg1K0 = key_647X;
    merged_arg0K1 = 1;
    preserve_continuation_return_tag = 1;
    goto preserve_continuation;
   preserve_continuation_return_1:
    arg1K0 = 0;
    goto L14926;}}
 copy_stack_into_heap_return:
  switch (copy_stack_into_heap_return_tag) {
  case 0: goto copy_stack_into_heap_return_0;
  case 1: goto copy_stack_into_heap_return_1;
  case 2: goto copy_stack_into_heap_return_2;
  case 3: goto copy_stack_into_heap_return_3;
  }}

 preserve_continuation: {
  key_645X = merged_arg1K0;
  reason_646X = merged_arg0K1;{
  p_492X = RSenvS;
  if ((p_492X < (Sstack_beginS))) {
    goto L14645;}
  else {
    if (((Sstack_endS) < p_492X)) {
      goto L14645;}
    else {
      merged_arg1K0 = (RSenvS);
      merged_arg1K1 = (ScontS);
      merged_arg1K2 = key_645X;
      merged_arg0K3 = reason_646X;
      save_env_in_heap_return_tag = 1;
      goto save_env_in_heap;
     save_env_in_heap_return_1:
      v_493X = save_env_in_heap_return_value;
      RSenvS = v_493X;
      goto L14645;}}}
 L14645: {
  end_501X = *((long *) (-3 + (Sbottom_of_stackS)));
  arg1K0 = (ScontS);
  arg1K1 = (Sbottom_of_stackS);
  goto L14650;}
 L14703: {
  v_500X = arg1K0;
  ScontS = v_500X;
  preserve_continuation_return_value = cont_497X;
  goto preserve_continuation_return;}
 L14672: {
  merged_arg1K0 = cont_494X;
  merged_arg1K1 = key_645X;
  copy_stob_return_tag = 0;
  goto copy_stob;
 copy_stob_return_0:
  new_499X = copy_stob_return_value;
  *((long *) (-3 + previous_495X)) = new_499X;
  arg1K0 = (*((long *) (-3 + new_499X)));
  arg1K1 = new_499X;
  goto L14650;}
 L14650: {
  cont_494X = arg1K0;
  previous_495X = arg1K1;
  if ((cont_494X == (Sbottom_of_stackS))) {
    *((long *) (-3 + previous_495X)) = end_501X;
    cont_497X = *((long *) (-3 + (Sbottom_of_stackS)));
    if ((1 == cont_497X)) {
      arg1K0 = (Sbottom_of_stackS);
      goto L14703;}
    else {
      merged_arg1K0 = cont_497X;
      copy_continuation_from_heap_return_tag = 2;
      goto copy_continuation_from_heap;
     copy_continuation_from_heap_return_2:
      v_496X = copy_continuation_from_heap_return_value;
      arg1K0 = v_496X;
      goto L14703;}}
  else {
    p_498X = *((long *) (9 + cont_494X));
    if ((p_498X < (Sstack_beginS))) {
      goto L14672;}
    else {
      if (((Sstack_endS) < p_498X)) {
        goto L14672;}
      else {
        merged_arg1K0 = (*((long *) (9 + cont_494X)));
        merged_arg1K1 = cont_494X;
        merged_arg1K2 = key_645X;
        merged_arg0K3 = reason_646X;
        save_env_in_heap_return_tag = 2;
        goto save_env_in_heap;
       save_env_in_heap_return_2:
        goto L14672;}}}}
 preserve_continuation_return:
  switch (preserve_continuation_return_tag) {
  case 0: goto preserve_continuation_return_0;
  case 1: goto preserve_continuation_return_1;
  }}

 copy_continuation_from_heap: {
  cont_643X = merged_arg1K0;{
  top_502X = (-11 + (Sbottom_of_stackS)) - (-4 & (3 + ((long)(((unsigned long)(*((long *) (-7 + cont_643X))))>>8))));
  new_cont_503X = 7 + top_502X;
  RSstackS = (-4 + top_502X);
  v_504X = (((3 + ((long)(((unsigned long)(*((long *) (-7 + cont_643X))))>>8))))>>2);
  from_505X = -7 + cont_643X;
  arg1K0 = from_505X;
  arg1K1 = top_502X;
  goto L12892;}
 L12892: {
  from_506X = arg1K0;
  to_507X = arg1K1;
  if ((from_506X < (4 + (from_505X + (((v_504X)<<2)))))) {
    *((long *) to_507X) = (*((long *) from_506X));
    arg1K0 = (4 + from_506X);
    arg1K1 = (4 + to_507X);
    goto L12892;}
  else {
    *((long *) (-3 + (Sbottom_of_stackS))) = (*((long *) (-3 + new_cont_503X)));
    *((long *) (-3 + new_cont_503X)) = (Sbottom_of_stackS);
    copy_continuation_from_heap_return_value = new_cont_503X;
    goto copy_continuation_from_heap_return;}}
 copy_continuation_from_heap_return:
  switch (copy_continuation_from_heap_return_tag) {
  case 0: goto copy_continuation_from_heap_return_0;
  case 1: goto copy_continuation_from_heap_return_1;
  case 2: goto copy_continuation_from_heap_return_2;
  }}

 save_env_in_heap: {
  env_639X = merged_arg1K0;
  cont_640X = merged_arg1K1;
  key_641X = merged_arg1K2;{
  merged_arg1K0 = env_639X;
  merged_arg1K1 = key_641X;
  copy_stob_return_tag = 1;
  goto copy_stob;
 copy_stob_return_1:
  new_508X = copy_stob_return_value;
  *((long *) (-7 + env_639X)) = new_508X;
  arg1K0 = new_508X;
  goto L14174;}
 L14198: {
  arg1K0 = cont_640X;
  goto L14200;}
 L14200: {
  cont_513X = arg1K0;
  env_514X = *((long *) (9 + cont_513X));
  if ((3 == (3 & env_514X))) {
    if ((3 == (3 & (*((long *) (-7 + env_514X)))))) {
      *((long *) (9 + cont_513X)) = (*((long *) (-7 + env_514X)));
      arg1K0 = (*((long *) (-3 + cont_513X)));
      goto L14200;}
    else {
      save_env_in_heap_return_value = new_508X;
      goto save_env_in_heap_return;}}
  else {
    save_env_in_heap_return_value = new_508X;
    goto save_env_in_heap_return;}}
 L14174: {
  env_509X = arg1K0;
  p_510X = *((long *) (-3 + env_509X));
  if ((p_510X < (Sstack_beginS))) {
    goto L14198;}
  else {
    if (((Sstack_endS) < p_510X)) {
      goto L14198;}
    else {
      env_511X = *((long *) (-3 + env_509X));
      merged_arg1K0 = env_511X;
      merged_arg1K1 = key_641X;
      copy_stob_return_tag = 2;
      goto copy_stob;
     copy_stob_return_2:
      new_512X = copy_stob_return_value;
      *((long *) (-7 + env_511X)) = new_512X;
      *((long *) (-3 + env_509X)) = new_512X;
      arg1K0 = new_512X;
      goto L14174;}}}
 save_env_in_heap_return:
  switch (save_env_in_heap_return_tag) {
  case 0: goto save_env_in_heap_return_0;
  case 1: goto save_env_in_heap_return_1;
  case 2: goto save_env_in_heap_return_2;
  }}

 copy_stob: {
  old_stob_637X = merged_arg1K0;{
  len_516X = (long)(((unsigned long)(*((long *) (-7 + old_stob_637X))))>>8);
  *((long *) (ShpS)) = (66 + (((len_516X)<<8)));
  ShpS = (4 + (ShpS));
  new_515X = 3 + (ShpS);
  ShpS = ((ShpS) + (-4 & (3 + len_516X)));
  if ((0 < len_516X)) {
    *((long *) (-4 + (ShpS))) = 0;
    arg1K0 = new_515X;
    goto L9136;}
  else {
    arg1K0 = new_515X;
    goto L9136;}}
 L9136: {
  new_519X = arg1K0;
  *((long *) (-7 + new_519X)) = (*((long *) (-7 + old_stob_637X)));
  bytes_520X = (long)(((unsigned long)(*((long *) (-7 + old_stob_637X))))>>8);
  from_521X = -3 + old_stob_637X;
  arg1K0 = from_521X;
  arg1K1 = (-3 + new_519X);
  goto L9161;}
 L9161: {
  from_517X = arg1K0;
  to_518X = arg1K1;
  if ((from_517X < (from_521X + (-4 & (3 + bytes_520X))))) {
    *((long *) to_518X) = (*((long *) from_517X));
    arg1K0 = (4 + from_517X);
    arg1K1 = (4 + to_518X);
    goto L9161;}
  else {
    copy_stob_return_value = new_519X;
    goto copy_stob_return;}}
 copy_stob_return:
  switch (copy_stob_return_tag) {
  case 0: goto copy_stob_return_0;
  case 1: goto copy_stob_return_1;
  case 2: goto copy_stob_return_2;
  }}

 push_exception_continuationB: {
{ if (((Sstack_limitS) < (-296 + (RSstackS)))) {
    arg1K0 = 0;
    goto L14138;}
  else {
    Sstack_limitS = (Sstack_beginS);
    Sexception_space_usedPS = 1;
    if (((Sstack_limitS) < (-296 + (RSstackS)))) {
      arg1K0 = 0;
      goto L14138;}
    else {
      TTerror("insufficient space on stack for exception frame", 0, 0, 0, 0);
      arg1K0 = 0;
      goto L14138;}}}
 L14138: {
  key_524X = arg1K0;
  arg1K0 = (4 + (RSstackS));
  arg1K1 = 0;
  goto L14150;}
 L14150: {
  p_522X = arg1K0;
  i_523X = arg1K1;
  if ((2 == (3 & (*((long *) p_522X))))) {
    merged_arg1K0 = (RScode_pointerS);
    merged_arg1K1 = i_523X;
    merged_arg1K2 = key_524X;
    push_continuationB_return_tag = 2;
    goto push_continuationB;
   push_continuationB_return_2:
    goto push_exception_continuationB_return;}
  else {
    arg1K0 = (4 + p_522X);
    arg1K1 = (1 + i_523X);
    goto L14150;}}
 push_exception_continuationB_return:
  switch (push_exception_continuationB_return_tag) {
  case 0: goto push_exception_continuationB_return_0;
  case 1: goto push_exception_continuationB_return_1;
  case 2: goto push_exception_continuationB_return_2;
  case 3: goto push_exception_continuationB_return_3;
  case 4: goto push_exception_continuationB_return_4;
  }}

 push_continuationB: {
  code_pointer_634X = merged_arg1K0;
  size_635X = merged_arg1K1;{
  pc_525X = 12 + ((((code_pointer_634X - (*((long *) (-3 + (StemplateS))))))<<2));
  template_526X = StemplateS;
  RSstackS = (-20 + (RSstackS));
  *((long *) (4 + (RSstackS))) = (128 | (4130 + (((size_635X)<<10))));
  cont_527X = 11 + (RSstackS);
  *((long *) (1 + cont_527X)) = pc_525X;
  *((long *) (5 + cont_527X)) = template_526X;
  *((long *) (9 + cont_527X)) = (RSenvS);
  *((long *) (-3 + cont_527X)) = (ScontS);
  ScontS = cont_527X;
  goto push_continuationB_return;}
 push_continuationB_return:
  switch (push_continuationB_return_tag) {
  case 0: goto push_continuationB_return_0;
  case 1: goto push_continuationB_return_1;
  case 2: goto push_continuationB_return_2;
  }}

 pop_args_list: {
  start_632X = merged_arg1K0;
  count_633X = merged_arg1K1;{
  space_528X = 3 * (SnargsS);
  if ((((ShpS) + (((space_528X)<<2))) < (SlimitS))) {
    goto L15054;}
  else {
    merged_arg1K0 = 0;
    collect_saving_temp_return_tag = 18;
    goto collect_saving_temp;
   collect_saving_temp_return_18:
    if ((((ShpS) + (((space_528X)<<2))) < (SlimitS))) {
      goto L15054;}
    else {
      TTerror("Scheme48 heap overflow", 0, 0, 0, 0);
      goto L15054;}}}
 L15054: {
  arg1K0 = start_632X;
  arg1K1 = count_633X;
  goto L15056;}
 L15056: {
  args_529X = arg1K0;
  count_530X = arg1K1;
  if ((0 < count_530X)) {
    RSstackS = (4 + (RSstackS));
    a_531X = *((long *) (RSstackS));
    *((long *) (ShpS)) = 2050;
    ShpS = (4 + (ShpS));
    new_532X = 3 + (ShpS);
    ShpS = (8 + (ShpS));
    *((long *) (-4 + (ShpS))) = 0;
    *((long *) (-3 + new_532X)) = a_531X;
    *((long *) (1 + new_532X)) = args_529X;
    arg1K0 = new_532X;
    arg1K1 = (-1 + count_530X);
    goto L15056;}
  else {
    pop_args_list_return_value = args_529X;
    goto pop_args_list_return;}}
 pop_args_list_return:
  switch (pop_args_list_return_tag) {
  case 0: goto pop_args_list_return_0;
  case 1: goto pop_args_list_return_1;
  case 2: goto pop_args_list_return_2;
  case 3: goto pop_args_list_return_3;
  case 4: goto pop_args_list_return_4;
  case 5: goto pop_args_list_return_5;
  case 6: goto pop_args_list_return_6;
  case 7: goto pop_args_list_return_7;
  case 8: goto pop_args_list_return_8;
  case 9: goto pop_args_list_return_9;
  }}

 collect_saving_temp: {
  value_630X = merged_arg1K0;{
  b_537X = Snewspace_beginS;
  Snewspace_beginS = (Soldspace_beginS);
  Soldspace_beginS = b_537X;
  e_536X = Snewspace_endS;
  Snewspace_endS = (Soldspace_endS);
  Soldspace_endS = e_536X;
  Ssaved_limitS = (SlimitS);
  Ssaved_hpS = (ShpS);
  SlimitS = (Snewspace_endS);
  ShpS = (Snewspace_beginS);
  Sweak_pointer_hpS = -1;
  pc_535X = 12 + (((((RScode_pointerS) - (*((long *) (-3 + (StemplateS))))))<<2));
  value_534X = StemplateS;
  if ((3 == (3 & value_534X))) {
    a_538X = -3 + value_534X;
    if ((a_538X < (Soldspace_beginS))) {
      arg1K0 = value_534X;
      goto L13915;}
    else {
      if ((a_538X < (Soldspace_endS))) {
        merged_arg1K0 = value_534X;
        copy_object_return_tag = 1;
        goto copy_object;
       copy_object_return_1:
        v_533X = copy_object_return_value;
        arg1K0 = v_533X;
        goto L13915;}
      else {
        arg1K0 = value_534X;
        goto L13915;}}}
  else {
    arg1K0 = value_534X;
    goto L13915;}}
 L13915: {
  tem_585X = arg1K0;
  StemplateS = tem_585X;
  RScode_pointerS = ((-3 + (*((long *) (-3 + tem_585X)))) + (((pc_535X)>>2)));
  value_587X = RSvalS;
  if ((3 == (3 & value_587X))) {
    a_588X = -3 + value_587X;
    if ((a_588X < (Soldspace_beginS))) {
      arg1K0 = value_587X;
      goto L13919;}
    else {
      if ((a_588X < (Soldspace_endS))) {
        merged_arg1K0 = value_587X;
        copy_object_return_tag = 2;
        goto copy_object;
       copy_object_return_2:
        v_586X = copy_object_return_value;
        arg1K0 = v_586X;
        goto L13919;}
      else {
        arg1K0 = value_587X;
        goto L13919;}}}
  else {
    arg1K0 = value_587X;
    goto L13919;}}
 L13919: {
  v_581X = arg1K0;
  RSvalS = v_581X;
  value_583X = Sdynamic_stateS;
  if ((3 == (3 & value_583X))) {
    a_584X = -3 + value_583X;
    if ((a_584X < (Soldspace_beginS))) {
      arg1K0 = value_583X;
      goto L13923;}
    else {
      if ((a_584X < (Soldspace_endS))) {
        merged_arg1K0 = value_583X;
        copy_object_return_tag = 3;
        goto copy_object;
       copy_object_return_3:
        v_582X = copy_object_return_value;
        arg1K0 = v_582X;
        goto L13923;}
      else {
        arg1K0 = value_583X;
        goto L13923;}}}
  else {
    arg1K0 = value_583X;
    goto L13923;}}
 L13923: {
  v_577X = arg1K0;
  Sdynamic_stateS = v_577X;
  value_579X = Sexception_handlerS;
  if ((3 == (3 & value_579X))) {
    a_580X = -3 + value_579X;
    if ((a_580X < (Soldspace_beginS))) {
      arg1K0 = value_579X;
      goto L13927;}
    else {
      if ((a_580X < (Soldspace_endS))) {
        merged_arg1K0 = value_579X;
        copy_object_return_tag = 4;
        goto copy_object;
       copy_object_return_4:
        v_578X = copy_object_return_value;
        arg1K0 = v_578X;
        goto L13927;}
      else {
        arg1K0 = value_579X;
        goto L13927;}}}
  else {
    arg1K0 = value_579X;
    goto L13927;}}
 L13927: {
  v_573X = arg1K0;
  Sexception_handlerS = v_573X;
  value_575X = Sinterrupt_handlersS;
  if ((3 == (3 & value_575X))) {
    a_576X = -3 + value_575X;
    if ((a_576X < (Soldspace_beginS))) {
      arg1K0 = value_575X;
      goto L13931;}
    else {
      if ((a_576X < (Soldspace_endS))) {
        merged_arg1K0 = value_575X;
        copy_object_return_tag = 5;
        goto copy_object;
       copy_object_return_5:
        v_574X = copy_object_return_value;
        arg1K0 = v_574X;
        goto L13931;}
      else {
        arg1K0 = value_575X;
        goto L13931;}}}
  else {
    arg1K0 = value_575X;
    goto L13931;}}
 L13931: {
  v_569X = arg1K0;
  Sinterrupt_handlersS = v_569X;
  value_571X = Sinterrupt_templateS;
  if ((3 == (3 & value_571X))) {
    a_572X = -3 + value_571X;
    if ((a_572X < (Soldspace_beginS))) {
      arg1K0 = value_571X;
      goto L13935;}
    else {
      if ((a_572X < (Soldspace_endS))) {
        merged_arg1K0 = value_571X;
        copy_object_return_tag = 6;
        goto copy_object;
       copy_object_return_6:
        v_570X = copy_object_return_value;
        arg1K0 = v_570X;
        goto L13935;}
      else {
        arg1K0 = value_571X;
        goto L13935;}}}
  else {
    arg1K0 = value_571X;
    goto L13935;}}
 L13935: {
  v_565X = arg1K0;
  Sinterrupt_templateS = v_565X;
  value_567X = RSenvS;
  if ((3 == (3 & value_567X))) {
    a_568X = -3 + value_567X;
    if ((a_568X < (Soldspace_beginS))) {
      arg1K0 = value_567X;
      goto L13941;}
    else {
      if ((a_568X < (Soldspace_endS))) {
        merged_arg1K0 = value_567X;
        copy_object_return_tag = 7;
        goto copy_object;
       copy_object_return_7:
        v_566X = copy_object_return_value;
        arg1K0 = v_566X;
        goto L13941;}
      else {
        arg1K0 = value_567X;
        goto L13941;}}}
  else {
    arg1K0 = value_567X;
    goto L13941;}}
 L13941: {
  env_562X = arg1K0;
  RSenvS = env_562X;
  start_563X = 4 + (RSstackS);
  end_564X = -7 + (ScontS);
  arg1K0 = start_563X;
  goto L14017;}
 L14017: {
  addr_560X = arg1K0;
  if ((addr_560X < end_564X)) {
    merged_arg1K0 = addr_560X;
    copy_next_return_tag = 0;
    goto copy_next;
   copy_next_return_0:
    v_561X = copy_next_return_value;
    arg1K0 = v_561X;
    goto L14017;}
  else {
    arg1K0 = (ScontS);
    arg1K1 = 0;
    goto L13956;}}
 L14003: {
  addr_558X = arg1K0;
  if ((addr_558X < end_550X)) {
    merged_arg1K0 = addr_558X;
    copy_next_return_tag = 1;
    goto copy_next;
   copy_next_return_1:
    v_559X = copy_next_return_value;
    arg1K0 = v_559X;
    goto L14003;}
  else {
    if ((env_549X == last_env_548X)) {
      goto L13961;}
    else {
      arg1K0 = env_549X;
      goto L13971;}}}
 L13989: {
  addr_556X = arg1K0;
  if ((addr_556X < end_555X)) {
    merged_arg1K0 = addr_556X;
    copy_next_return_tag = 2;
    goto copy_next;
   copy_next_return_2:
    v_557X = copy_next_return_value;
    arg1K0 = v_557X;
    goto L13989;}
  else {
    arg1K0 = (*((long *) (-3 + env_554X)));
    goto L13971;}}
 L13971: {
  env_554X = arg1K0;
  if ((env_554X < (Sstack_beginS))) {
    goto L13961;}
  else {
    if (((Sstack_endS) < env_554X)) {
      goto L13961;}
    else {
      end_555X = (-3 + env_554X) + (-4 & (3 + ((long)(((unsigned long)(*((long *) (-7 + env_554X))))>>8))));
      arg1K0 = (-3 + env_554X);
      goto L13989;}}}
 L13961: {
  if ((cont_547X == (Sbottom_of_stackS))) {
    areas_551X = Simpure_areasS;
    sizes_552X = Simpure_sizesS;
    count_553X = Simpure_area_countS;
    arg1K0 = 0;
    goto L14490;}
  else {
    arg1K0 = (*((long *) (-3 + cont_547X)));
    arg1K1 = env_549X;
    goto L13956;}}
 L13956: {
  cont_547X = arg1K0;
  last_env_548X = arg1K1;
  env_549X = *((long *) (9 + cont_547X));
  end_550X = (-3 + cont_547X) + (-4 & (3 + ((long)(((unsigned long)(*((long *) (-7 + cont_547X))))>>8))));
  arg1K0 = (-3 + cont_547X);
  goto L14003;}
 L14500: {
  addr_545X = arg1K0;
  if ((addr_545X < end_544X)) {
    merged_arg1K0 = addr_545X;
    copy_next_return_tag = 3;
    goto copy_next;
   copy_next_return_3:
    v_546X = copy_next_return_value;
    arg1K0 = v_546X;
    goto L14500;}
  else {
    arg1K0 = (1 + i_540X);
    goto L14490;}}
 L14490: {
  i_540X = arg1K0;
  if ((i_540X < ((long)count_553X))) {
    start_543X = *(areas_551X + i_540X);
    end_544X = (*(areas_551X + i_540X)) + (*(sizes_552X + i_540X));
    arg1K0 = start_543X;
    goto L14500;}
  else {
    if ((3 == (3 & value_630X))) {
      a_541X = -3 + value_630X;
      if ((a_541X < (Soldspace_beginS))) {
        arg1K0 = value_630X;
        goto L14416;}
      else {
        if ((a_541X < (Soldspace_endS))) {
          merged_arg1K0 = value_630X;
          copy_object_return_tag = 8;
          goto copy_object;
         copy_object_return_8:
          v_542X = copy_object_return_value;
          arg1K0 = v_542X;
          goto L14416;}
        else {
          arg1K0 = value_630X;
          goto L14416;}}}
    else {
      arg1K0 = value_630X;
      goto L14416;}}}
 L14416: {
  value_539X = arg1K0;
  SvalS = RSvalS;
  SstackS = RSstackS;
  Scode_pointerS = RScode_pointerS;
  SenvS = RSenvS;
  do_gc();
  RSvalS = SvalS;
  RSstackS = SstackS;
  RScode_pointerS = Scode_pointerS;
  RSenvS = SenvS;
  post_gc_fdports(); /* Hack for scsh's i/o system. Olin. */
  Sgc_countS = (1 + (Sgc_countS));
  close_untraced_portsB_return_tag = 1;
  goto close_untraced_portsB;
 close_untraced_portsB_return_1:
  if ((((ShpS) + ((((Sminimum_recovered_spaceS))<<2))) < (SlimitS))) {
    collect_saving_temp_return_value = value_539X;
    goto collect_saving_temp_return;}
  else {
    Spending_interruptsS = (4 | (Spending_interruptsS));
    collect_saving_temp_return_value = value_539X;
    goto collect_saving_temp_return;}}
 collect_saving_temp_return:
  switch (collect_saving_temp_return_tag) {
  case 0: goto collect_saving_temp_return_0;
  case 1: goto collect_saving_temp_return_1;
  case 2: goto collect_saving_temp_return_2;
  case 3: goto collect_saving_temp_return_3;
  case 4: goto collect_saving_temp_return_4;
  case 5: goto collect_saving_temp_return_5;
  case 6: goto collect_saving_temp_return_6;
  case 7: goto collect_saving_temp_return_7;
  case 8: goto collect_saving_temp_return_8;
  case 9: goto collect_saving_temp_return_9;
  case 10: goto collect_saving_temp_return_10;
  case 11: goto collect_saving_temp_return_11;
  case 12: goto collect_saving_temp_return_12;
  case 13: goto collect_saving_temp_return_13;
  case 14: goto collect_saving_temp_return_14;
  case 15: goto collect_saving_temp_return_15;
  case 16: goto collect_saving_temp_return_16;
  case 17: goto collect_saving_temp_return_17;
  case 18: goto collect_saving_temp_return_18;
  }}

 copy_next: {
  addr_628X = merged_arg1K0;{
  next_589X = 4 + addr_628X;
  thing_590X = *((long *) addr_628X);
  if ((2 == (3 & thing_590X))) {
    if (((31 & (((thing_590X)>>2))) < 15)) {
      goto L11536;}
    else {
      copy_next_return_value = (next_589X + (-4 & (3 + ((long)(((unsigned long)thing_590X)>>8)))));
      goto copy_next_return;}}
  else {
    goto L11536;}}
 L11536: {
  if ((3 == (3 & thing_590X))) {
    a_592X = -3 + thing_590X;
    if ((a_592X < (Soldspace_beginS))) {
      copy_next_return_value = next_589X;
      goto copy_next_return;}
    else {
      if ((a_592X < (Soldspace_endS))) {
        merged_arg1K0 = thing_590X;
        copy_object_return_tag = 9;
        goto copy_object;
       copy_object_return_9:
        value_591X = copy_object_return_value;
        *((long *) addr_628X) = value_591X;
        copy_next_return_value = next_589X;
        goto copy_next_return;}
      else {
        copy_next_return_value = next_589X;
        goto copy_next_return;}}}
  else {
    copy_next_return_value = next_589X;
    goto copy_next_return;}}
 copy_next_return:
  switch (copy_next_return_tag) {
  case 0: goto copy_next_return_0;
  case 1: goto copy_next_return_1;
  case 2: goto copy_next_return_2;
  case 3: goto copy_next_return_3;
  }}

 copy_object: {
  thing_626X = merged_arg1K0;{
  h_594X = *((long *) (-7 + thing_626X));
  if ((3 == (3 & h_594X))) {
    copy_object_return_value = h_594X;
    goto copy_object_return;}
  else {
    if ((1070 == h_594X)) {
      descriptor_595X = *((long *) (-3 + thing_626X));
      if ((3 == (3 & descriptor_595X))) {
        a_593X = -3 + descriptor_595X;
        if ((a_593X < (Soldspace_beginS))) {
          goto L9586;}
        else {
          if ((a_593X < (Soldspace_endS))) {
            SvalS = RSvalS;
            SstackS = RSstackS;
            Scode_pointerS = RScode_pointerS;
            SenvS = RSenvS;
            v_596X = copy_weak_pointer(thing_626X);
            RSvalS = SvalS;
            RSstackS = SstackS;
            RScode_pointerS = Scode_pointerS;
            RSenvS = SenvS;
            copy_object_return_value = v_596X;
            goto copy_object_return;}
          else {
            goto L9586;}}}
      else {
        goto L9586;}}
    else {
      goto L9586;}}}
 L9586: {
  *((long *) (ShpS)) = h_594X;
  ShpS = (4 + (ShpS));
  new_598X = 3 + (ShpS);
  *((long *) (-7 + thing_626X)) = new_598X;
  x1_599X = ShpS;
  arg1K0 = (-3 + thing_626X);
  goto L9600;}
 L9600: {
  o_597X = arg1K0;
  if (((ShpS) < (x1_599X + (-4 & (3 + ((long)(((unsigned long)h_594X)>>8))))))) {
    *((long *) (ShpS)) = (*((long *) o_597X));
    ShpS = (4 + (ShpS));
    arg1K0 = (4 + o_597X);
    goto L9600;}
  else {
    copy_object_return_value = new_598X;
    goto copy_object_return;}}
 copy_object_return:
  switch (copy_object_return_tag) {
  case 0: goto copy_object_return_0;
  case 1: goto copy_object_return_1;
  case 2: goto copy_object_return_2;
  case 3: goto copy_object_return_3;
  case 4: goto copy_object_return_4;
  case 5: goto copy_object_return_5;
  case 6: goto copy_object_return_6;
  case 7: goto copy_object_return_7;
  case 8: goto copy_object_return_8;
  case 9: goto copy_object_return_9;
  }}

 close_untraced_portsB: {
{ arg1K0 = 2;
  goto L13688;}
 L13734: {
  merged_arg1K0 = port_601X;
  close_port_return_tag = 1;
  goto close_port;
 close_port_return_1:
  fputs("Port closed: ", (Scurrent_output_portS));
  string_605X = *((long *) (9 + port_601X));
  fwrite((void *)(-3 + string_605X), sizeof(char), (-1 + ((long)(((unsigned long)(*((long *) (-7 + string_605X))))>>8))), (Scurrent_output_portS));
  putc(10, (Scurrent_output_portS));
  arg1K0 = 1;
  goto L13714;}
 L13719: {
  arg1K0 = (1 + i_600X);
  goto L13688;}
 L13714: {
  new_604X = arg1K0;
  *((Sopen_vm_portsS) + i_600X) = new_604X;
  goto L13719;}
 L13688: {
  i_600X = arg1K0;
  if ((i_600X == (Snumber_of_portsS))) {
    close_untraced_portsB_return_value = 0;
    goto close_untraced_portsB_return;}
  else {
    port_601X = *((Sopen_vm_portsS) + i_600X);
    if ((1 == port_601X)) {
      goto L13719;}
    else {
      header_602X = *((long *) (-7 + port_601X));
      if ((3 == (3 & header_602X))) {
        arg1K0 = header_602X;
        goto L13714;}
      else {
        header_603X = *((long *) (-7 + (*((long *) (9 + port_601X)))));
        if ((3 == (3 & header_603X))) {
          goto L13734;}
        else {
          goto L13734;}}}}}
 close_untraced_portsB_return:
  switch (close_untraced_portsB_return_tag) {
  case 0: goto close_untraced_portsB_return_0;
  case 1: goto close_untraced_portsB_return_1;
  }}

 close_port: {
  vm_port_623X = merged_arg1K0;{
  if (((*((long *) (1 + vm_port_623X))) < 0)) {
    goto close_port_return;}
  else {
    index_608X = (((*((long *) (1 + vm_port_623X))))>>2);
    if ((0 == index_608X)) {
      goto close_port_return;}
    else {
      if ((1 == index_608X)) {
        goto close_port_return;}
      else {
        mode_607X = (((*((long *) (-3 + vm_port_623X))))>>2);
        port_606X = *((Sopen_portsS) + ((((*((long *) (1 + vm_port_623X))))>>2)));
        if ((1 == mode_607X)) {
          fclose(port_606X);
          goto L11193;}
        else {
          if ((2 == mode_607X)) {
            fclose(port_606X);
            goto L11193;}
          else {
            TTerror("this shouldn't happen when closing a port", 0, 0, 0, 0);
            goto L11193;}}}}}}
 L11193: {
  *((long *) (-3 + vm_port_623X)) = 0;
  *((long *) (1 + vm_port_623X)) = -4;
  *((Sopen_vm_portsS) + index_608X) = 1;
  goto close_port_return;}
 close_port_return:
  switch (close_port_return_tag) {
  case 0: goto close_port_return_0;
  case 1: goto close_port_return_1;
  }}

 write_number: {
  x_621X = merged_arg1K0;
  port_622X = merged_arg2K1;{
  if ((x_621X < 0)) {
    putc(45, port_622X);
    arg1K0 = (0 - x_621X);
    goto L29338;}
  else {
    arg1K0 = x_621X;
    goto L29338;}}
 L29338: {
  v_609X = arg1K0;
  SvalS = RSvalS;
  SstackS = RSstackS;
  Scode_pointerS = RScode_pointerS;
  SenvS = RSenvS;
  really_write_number(v_609X, port_622X);
  RSvalS = SvalS;
  RSstackS = SstackS;
  RScode_pointerS = Scode_pointerS;
  RSenvS = SenvS;
  putc(10, port_622X);
  goto write_number_return;}
 write_number_return:
  switch (write_number_return_tag) {
  case 0: goto write_number_return_0;
  case 1: goto write_number_return_1;
  case 2: goto write_number_return_2;
  case 3: goto write_number_return_3;
  case 4: goto write_number_return_4;
  }}

 stob_equalP: {
  stob1_619X = merged_arg1K0;
  stob2_620X = merged_arg1K1;{
  z2_611X = *((long *) (-7 + stob2_620X));
  z1_610X = *((long *) (-7 + stob1_619X));
  if (((128 | z1_610X) == (128 | z2_611X))) {
    arg1K0 = 0;
    goto L8355;}
  else {
    stob_equalP_return_value = 0;
    goto stob_equalP_return;}}
 L8355: {
  i_612X = arg1K0;
  if ((i_612X < ((((3 + ((long)(((unsigned long)z1_610X)>>8))))>>2)))) {
    if (((*((long *) ((-3 + stob1_619X) + (((i_612X)<<2))))) == (*((long *) ((-3 + stob2_620X) + (((i_612X)<<2))))))) {
      arg1K0 = (1 + i_612X);
      goto L8355;}
    else {
      stob_equalP_return_value = 0;
      goto stob_equalP_return;}}
  else {
    stob_equalP_return_value = 1;
    goto stob_equalP_return;}}
 stob_equalP_return:
  switch (stob_equalP_return_tag) {
  case 0: goto stob_equalP_return_0;
  case 1: goto stob_equalP_return_1;
  }}

 extract_string: {
  string_617X = merged_arg1K0;{
  z_613X = -1 + ((long)(((unsigned long)(*((long *) (-7 + string_617X))))>>8));
  v_614X = (unsigned char *)calloc( 1, 1 + z_613X);
  arg1K0 = 0;
  goto L10873;}
 L10873: {
  i_615X = arg1K0;
  if ((i_615X < z_613X)) {
    *(v_614X + i_615X) = (((long)(*((unsigned char *) ((-3 + string_617X) + i_615X)))));
    arg1K0 = (1 + i_615X);
    goto L10873;}
  else {
    extract_string_return_value = v_614X;
    goto extract_string_return;}}
 extract_string_return:
  switch (extract_string_return_tag) {
  case 0: goto extract_string_return_0;
  case 1: goto extract_string_return_1;
  case 2: goto extract_string_return_2;
  }}
}

long enter_string(unsigned char *string_677X)
{
  extern long ShpS;
  long arg1K0;
  long new_678X;
  long len_679X;
  long z_680X;
  long s_681X;
  long i_682X;

 {z_680X = strlen(string_677X);
  len_679X = 1 + z_680X;
  *((long *) (ShpS)) = (62 + (((len_679X)<<8)));
  ShpS = (4 + (ShpS));
  new_678X = 3 + (ShpS);
  ShpS = ((ShpS) + (-4 & (3 + len_679X)));
  if ((0 < len_679X)) {
    *((long *) (-4 + (ShpS))) = 0;
    arg1K0 = new_678X;
    goto L11945;}
  else {
    arg1K0 = new_678X;
    goto L11945;}}
 L11945: {
  s_681X = arg1K0;
  arg1K0 = 0;
  goto L11947;}
 L11947: {
  i_682X = arg1K0;
  if ((i_682X < z_680X)) {
    *((unsigned char *) ((-3 + s_681X) + i_682X)) = ((unsigned char)((long)((*(string_677X + i_682X)))));
    arg1K0 = (1 + i_682X);
    goto L11947;}
  else {
    return(s_681X);}}}

long copy_weak_pointer(long weak_683X)
{
  extern long ShpS;
  extern long Sweak_pointer_limitS;
  extern long Sweak_pointer_hpS;
  unsigned char tempWW552_684X;
  long old_685X;
  long new_686X;

 {tempWW552_684X = -1 == (Sweak_pointer_hpS);
  if (tempWW552_684X) {
    goto L8005;}
  else {
    if (((Sweak_pointer_hpS) < (Sweak_pointer_limitS))) {
      goto L8010;}
    else {
      goto L8005;}}}
 L8005: {
  old_685X = Sweak_pointer_hpS;
  Sweak_pointer_hpS = (ShpS);
  ShpS = (1024 + (ShpS));
  Sweak_pointer_limitS = (ShpS);
  *((long *) (Sweak_pointer_hpS)) = 261186;
  *((long *) (8 + (Sweak_pointer_hpS))) = old_685X;
  goto L8010;}
 L8010: {
  new_686X = 7 + (Sweak_pointer_hpS);
  *((long *) (4 + (Sweak_pointer_hpS))) = (*((long *) (-3 + weak_683X)));
  Sweak_pointer_hpS = (8 + (Sweak_pointer_hpS));
  *((long *) (-7 + weak_683X)) = new_686X;
  return(new_686X);}}

void really_write_number(long x_687X, FILE * port_688X)
{
  extern void really_write_number(long, FILE *);
  long v_689X;
  long v_690X;

 {if ((x_687X < 10)) {
    goto L29300;}
  else {
    v_689X = x_687X / 10;
    really_write_number(v_689X, port_688X);
    goto L29300;}}
 L29300: {
  v_690X = x_687X % 10;
  putc(((48 + v_690X)), port_688X);
  return;}}

long read_number(FILE * port_691X)
{
  long arg1K0;
  unsigned char arg4K1;
  unsigned char arg4K0;
  unsigned char ch_692X;
  long r_693X;
  unsigned char ch_694X;
  long r_695X;
  unsigned char Kchar_696X;
  unsigned char ch_697X;
  unsigned char Kchar_698X;
  unsigned char ch_699X;

 {goto L4913;}
 L4942: {
  ch_692X = arg4K0;
  arg1K0 = 0;
  arg4K1 = ch_692X;
  goto L4944;}
 L4944: {
  r_693X = arg1K0;
  ch_694X = arg4K1;
  r_695X = (-48 + ((long)(ch_694X))) + (10 * r_693X);
  { int TTchar;
    PS_GETC(port_691X, TTchar);
    if (EOF == TTchar) {
      return(r_695X);}
    else {
      unsigned char Kchar_696X = TTchar;
      ch_697X = Kchar_696X;
      if ((((long)ch_697X) < 48)) {
        return(r_695X);}
      else {
        if ((57 < ((long)ch_697X))) {
          return(r_695X);}
        else {
          arg1K0 = r_695X;
          arg4K1 = Kchar_696X;
          goto L4944;}}}}}
 L4913: {
  { int TTchar;
    PS_GETC(port_691X, TTchar);
    if (EOF == TTchar) {
      arg4K0 = -1;
      goto L4942;}
    else {
      unsigned char Kchar_698X = TTchar;
      ch_699X = Kchar_698X;
      if ((((long)ch_699X) < 48)) {
        goto L4913;}
      else {
        if ((57 < ((long)ch_699X))) {
          goto L4913;}
        else {
          arg4K0 = Kchar_698X;
          goto L4942;}}}}}}

long call_startup_procedure(long startup_proc_700X, unsigned char **startup_vector_701X, long startup_vector_length_702X)
{
  extern long Sbottom_of_stackS;
  extern long SenvS;
  extern long Sinterrupt_templateS;
  extern long StemplateS;
  extern long Sdynamic_stateS;
  extern long Sexception_handlerS;
  extern long Sinterrupt_handlersS;
  extern long Senabled_interruptsS;
  extern long Spending_interruptsS;
  extern long *Sopen_vm_portsS;
  extern long Scode_pointerS;
  extern long Tinterpret();
  extern long SnargsS;
  extern long SvalS;
  extern long SstackS;
  extern long Sstack_beginS;
  extern long Sstack_limitS;
  extern unsigned char Sexception_space_usedPS;
  extern long enter_string(unsigned char*);
  extern long ShpS;
  long arg1K0;
  long new_703X;
  long len_704X;
  long tem_705X;
  long new_706X;
  long v_707X;
  unsigned char option_708X;
  long vector_709X;
  long i_710X;
  unsigned char x_711X;
  long val_712X;

 {len_704X = ((startup_vector_length_702X)<<2);
  *((long *) (ShpS)) = (10 + (((len_704X)<<8)));
  ShpS = (4 + (ShpS));
  new_703X = 3 + (ShpS);
  ShpS = ((ShpS) + (-4 & (3 + len_704X)));
  if ((0 < len_704X)) {
    *((long *) (-4 + (ShpS))) = 0;
    arg1K0 = new_703X;
    goto L15473;}
  else {
    arg1K0 = new_703X;
    goto L15473;}}
 L12652: {
  SenvS = 13;
  tem_705X = Sinterrupt_templateS;
  StemplateS = tem_705X;
  Scode_pointerS = (-3 + (*((long *) (-3 + tem_705X))));
  SnargsS = 0;
  SvalS = 13;
  Sdynamic_stateS = 25;
  Sexception_handlerS = 25;
  Sinterrupt_handlersS = 25;
  Senabled_interruptsS = 0;
  Spending_interruptsS = 0;
  *((long *) (SstackS)) = vector_709X;
  SstackS = (-4 + (SstackS));
  *((long *) (SstackS)) = (*((Sopen_vm_portsS) + 0));
  SstackS = (-4 + (SstackS));
  *((long *) (SstackS)) = (*((Sopen_vm_portsS) + 1));
  SstackS = (-4 + (SstackS));
  *((long *) (ShpS)) = 578;
  ShpS = (4 + (ShpS));
  new_706X = 3 + (ShpS);
  ShpS = (4 + (ShpS));
  *((long *) (-4 + (ShpS))) = 0;
  *((unsigned char *) (-3 + new_706X)) = 23;
  *((unsigned char *) (-2 + new_706X)) = 3;
  Scode_pointerS = (-3 + new_706X);
  SvalS = startup_proc_700X;
  goto L15407;}
 L12697: {
  Sstack_limitS = (296 + (Sstack_beginS));
  Sexception_space_usedPS = 0;
  goto L12652;}
 L15407: {
  option_708X = TTrun_machine((long)Tinterpret);
  if ((0 == ((long)option_708X))) {
    return((SvalS));}
  else {
    if ((1 == ((long)option_708X))) {
      v_707X = ((long(*)())(*((long *) (-3 + (*((long *) (1 + (SvalS))))))))((SnargsS), (4 + (SstackS)));
      SvalS = v_707X;
      SstackS = ((SstackS) - ((((-1 - (SnargsS)))<<2)));
      goto L15407;}
    else {
      TTerror("unkown VM return option", 1, ((long)option_708X), 0, 0);
      return(-1);}}}
 L15473: {
  vector_709X = arg1K0;
  arg1K0 = 0;
  goto L15475;}
 L15475: {
  i_710X = arg1K0;
  if ((i_710X < startup_vector_length_702X)) {
    val_712X = enter_string((*(startup_vector_701X + i_710X)));
    *((long *) ((-3 + vector_709X) + (((i_710X)<<2)))) = val_712X;
    arg1K0 = (1 + i_710X);
    goto L15475;}
  else {
    SstackS = (-11 + (Sbottom_of_stackS));
    *((long *) (-3 + (Sbottom_of_stackS))) = 1;
    if ((Sexception_space_usedPS)) {
      x_711X = (Sstack_limitS) < (-296 + (SstackS));
      if (x_711X) {
        goto L12697;}
      else {
        TTerror("no space on stack to reserve exception space", 0, 0, 0, 0);
        goto L12697;}}
    else {
      goto L12652;}}}}

void initialize_vm(long memory_begin_713X, long memory_size_714X, long stack_begin_715X, long stack_size_716X)
{
  extern long Soldspace_beginS;
  extern long Soldspace_endS;
  extern long Snewspace_beginS;
  extern long Snewspace_endS;
  extern long SlimitS;
  extern long Snumber_of_portsS;
  extern FILE * Scurrent_input_portS;
  extern FILE * Scurrent_output_portS;
  extern FILE * *Sopen_portsS;
  extern long enter_string(unsigned char*);
  extern long ShpS;
  extern long Sstack_beginS;
  extern long Sstack_limitS;
  extern long Sstack_endS;
  extern long SstackS;
  extern long SenvS;
  extern long ScontS;
  extern long Sbottom_of_stackS;
  extern long Sinterrupt_templateS;
  extern long *Sopen_vm_portsS;
  long arg1K0;
  unsigned char merged_arg0K1;
  unsigned char merged_arg0K0;

  int make_template_containing_ops_return_tag;
  long make_template_containing_ops_return_value;
  long semisize_717X;
  unsigned char tempWW560_718X;
  long i_719X;
  long v_720X;
  long cont_721X;
  long template_722X;
  long new_723X;
  long d_724X;
  long new_725X;
  long d_726X;
  long *v_727X;
  long length_728X;
  long new_729X;
  long new_730X;
  long c_731X;
  unsigned char op1_732X;
  unsigned char op2_733X;
 {semisize_717X = (((-2 & memory_size_714X))<<1);
  Snewspace_beginS = memory_begin_713X;
  Snewspace_endS = ((Snewspace_beginS) + semisize_717X);
  Soldspace_beginS = (Snewspace_endS);
  Soldspace_endS = ((Soldspace_beginS) + semisize_717X);
  ShpS = (Snewspace_beginS);
  SlimitS = (Snewspace_endS);
  Sopen_portsS = ((FILE **)malloc(sizeof(FILE *) * (Snumber_of_portsS)));
  Sopen_vm_portsS = ((long*)malloc(sizeof(long) * (Snumber_of_portsS)));
  tempWW560_718X = NULL == (Sopen_portsS);
  if (tempWW560_718X) {
    goto L12952;}
  else {
    if ((NULL == (Sopen_vm_portsS))) {
      goto L12952;}
    else {
      goto L12957;}}}
 L12952: {
  TTerror("out of memory, unable to continue", 0, 0, 0, 0);
  goto L12957;}
 L13064: {
  i_719X = arg1K0;
  if ((i_719X < length_728X)) {
    *(v_727X + i_719X) = 1;
    arg1K0 = (1 + i_719X);
    goto L13064;}
  else {
    *((Sopen_portsS) + 0) = (Scurrent_input_portS);
    *((Sopen_portsS) + 1) = (Scurrent_output_portS);
    d_726X = enter_string("so");
    *((long *) (ShpS)) = 4118;
    ShpS = (4 + (ShpS));
    new_725X = 3 + (ShpS);
    ShpS = (16 + (ShpS));
    *((long *) (-4 + (ShpS))) = 0;
    *((long *) (-3 + new_725X)) = 8;
    *((long *) (1 + new_725X)) = 4;
    *((long *) (5 + new_725X)) = 1;
    *((long *) (9 + new_725X)) = d_726X;
    d_724X = enter_string("si");
    *((long *) (ShpS)) = 4118;
    ShpS = (4 + (ShpS));
    new_723X = 3 + (ShpS);
    ShpS = (16 + (ShpS));
    *((long *) (-4 + (ShpS))) = 0;
    *((long *) (-3 + new_723X)) = 4;
    *((long *) (1 + new_723X)) = 0;
    *((long *) (5 + new_723X)) = 1;
    *((long *) (9 + new_723X)) = d_724X;
    *((Sopen_vm_portsS) + 0) = new_723X;
    *((Sopen_vm_portsS) + 1) = new_725X;
    Sstack_beginS = stack_begin_715X;
    Sstack_endS = (stack_begin_715X + (((stack_size_716X)<<2)));
    Sstack_limitS = (Sstack_beginS);
    SstackS = (-4 + (Sstack_endS));
    ScontS = 1;
    SenvS = 17;
    merged_arg0K0 = 22;
    merged_arg0K1 = 28;
    make_template_containing_ops_return_tag = 0;
    goto make_template_containing_ops;
   make_template_containing_ops_return_0:
    template_722X = make_template_containing_ops_return_value;
    SstackS = (-20 + (SstackS));
    *((long *) (4 + (SstackS))) = 4258;
    cont_721X = 11 + (SstackS);
    *((long *) (1 + cont_721X)) = 0;
    *((long *) (5 + cont_721X)) = template_722X;
    *((long *) (9 + cont_721X)) = (SenvS);
    *((long *) (-3 + cont_721X)) = (ScontS);
    ScontS = cont_721X;
    Sbottom_of_stackS = (ScontS);
    merged_arg0K0 = 31;
    merged_arg0K1 = 127;
    make_template_containing_ops_return_tag = 1;
    goto make_template_containing_ops;
   make_template_containing_ops_return_1:
    v_720X = make_template_containing_ops_return_value;
    Sinterrupt_templateS = v_720X;
    return;}}
 L12957: {
  v_727X = Sopen_vm_portsS;
  length_728X = Snumber_of_portsS;
  arg1K0 = 0;
  goto L13064;}
 make_template_containing_ops: {
  op1_732X = merged_arg0K0;
  op2_733X = merged_arg0K1;{
  *((long *) (ShpS)) = 578;
  ShpS = (4 + (ShpS));
  new_729X = 3 + (ShpS);
  ShpS = (4 + (ShpS));
  *((long *) (-4 + (ShpS))) = 0;
  *((long *) (ShpS)) = 2090;
  ShpS = (4 + (ShpS));
  new_730X = 3 + (ShpS);
  ShpS = (8 + (ShpS));
  *((long *) (-4 + (ShpS))) = 0;
  *((long *) (-3 + new_730X)) = new_729X;
  *((unsigned char *) (-3 + new_729X)) = ((unsigned char)((long)op1_732X));
  *((unsigned char *) (-2 + new_729X)) = ((unsigned char)((long)op2_733X));
  make_template_containing_ops_return_value = new_730X;
  goto make_template_containing_ops_return;}
 make_template_containing_ops_return:
  switch (make_template_containing_ops_return_tag) {
  case 0: goto make_template_containing_ops_return_0;
  case 1: goto make_template_containing_ops_return_1;
  }}
}

long required_init_space(unsigned char **startup_vector_734X, long startup_vector_length_735X)
{
  long arg1K1;
  long arg1K0;
  long i_736X;
  long s_737X;

 {arg1K0 = 0;
  arg1K1 = 0;
  goto L5373;}
 L5373: {
  i_736X = arg1K0;
  s_737X = arg1K1;
  if ((i_736X < startup_vector_length_735X)) {
    arg1K0 = (1 + i_736X);
    arg1K1 = (1 + (s_737X + ((((4 + (strlen((*(startup_vector_734X + i_736X))))))>>2))));
    goto L5373;}
  else {
    return((22 + s_737X));}}}

void note_interruptB(unsigned char interrupt_738X)
{
  extern long Spending_interruptsS;
  long x_739X;

 {PS_SHIFT_LEFT(1, ((long)interrupt_738X), x_739X)
  Spending_interruptsS = ((Spending_interruptsS) | x_739X);
  return;}}

void do_gc()
{
  extern long Sweak_pointer_hpS;
  extern long Sweak_pointer_limitS;
  extern long SlimitS;
  extern long ShpS;
  extern long Soldspace_beginS;
  extern long Soldspace_endS;
  extern long copy_weak_pointer(long);
  extern long Snewspace_beginS;
  long arg1K1;
  long arg1K0;
  long RShpS = ShpS;
  long value_740X;
  long scan_741X;
  long value_742X;
  long a_743X;
  long h_744X;
  long start_745X;
  long end_746X;
  long next_747X;
  long value_748X;
  long o_749X;
  long new_750X;
  long x1_751X;
  long v_752X;
  long descriptor_753X;
  long a_754X;
  long h_755X;
  long a_756X;
  long end_757X;
  long x1_758X;
  long addr_759X;
  long next_760X;
  long thing_761X;
  long start_762X;
  long end_763X;

 {arg1K0 = (Snewspace_beginS);
  goto L13830;}
 L7761: {
  arg1K0 = (8 + scan_741X);
  goto L7716;}
 L7756: {
  value_740X = arg1K0;
  *((long *) (4 + scan_741X)) = value_740X;
  goto L7761;}
 L7716: {
  scan_741X = arg1K0;
  if ((scan_741X < end_746X)) {
    *((long *) scan_741X) = 1070;
    value_742X = *((long *) (4 + scan_741X));
    if ((3 == (3 & value_742X))) {
      a_743X = -3 + value_742X;
      if ((a_743X < (Soldspace_beginS))) {
        goto L7761;}
      else {
        if ((a_743X < (Soldspace_endS))) {
          if ((3 == (3 & value_742X))) {
            h_744X = *((long *) (-7 + value_742X));
            if ((3 == (3 & h_744X))) {
              arg1K0 = h_744X;
              goto L7756;}
            else {
              arg1K0 = 1;
              goto L7756;}}
          else {
            goto L7761;}}
        else {
          goto L7761;}}}
    else {
      goto L7761;}}
  else {
    if ((-1 == next_747X)) {
      if ((end_757X < (Sweak_pointer_limitS))) {
        *((long *) end_757X) = (66 + ((((-4 & (-4 + ((Sweak_pointer_limitS) - end_757X))))<<8)));
        ShpS = RShpS;
        return;}
      else {
        ShpS = RShpS;
        return;}}
    else {
      arg1K0 = (-1024 + next_747X);
      arg1K1 = next_747X;
      goto L11112;}}}
 L11112: {
  start_745X = arg1K0;
  end_746X = arg1K1;
  next_747X = *((long *) (8 + start_745X));
  arg1K0 = start_745X;
  goto L7716;}
 L31642: {
  value_748X = arg1K0;
  *((long *) addr_759X) = value_748X;
  arg1K0 = next_760X;
  goto L13896;}
 L31695: {
  o_749X = arg1K0;
  if (((RShpS) < (x1_751X + (-4 & (3 + ((long)(((unsigned long)h_755X)>>8))))))) {
    *((long *) (RShpS)) = (*((long *) o_749X));
    RShpS = (4 + (RShpS));
    arg1K0 = (4 + o_749X);
    goto L31695;}
  else {
    arg1K0 = new_750X;
    goto L31642;}}
 L31679: {
  *((long *) (RShpS)) = h_755X;
  RShpS = (4 + (RShpS));
  new_750X = 3 + (RShpS);
  *((long *) (-7 + thing_761X)) = new_750X;
  x1_751X = RShpS;
  arg1K0 = (-3 + thing_761X);
  goto L31695;}
 L31634: {
  if ((3 == (3 & thing_761X))) {
    a_754X = -3 + thing_761X;
    if ((a_754X < (Soldspace_beginS))) {
      arg1K0 = next_760X;
      goto L13896;}
    else {
      if ((a_754X < (Soldspace_endS))) {
        h_755X = *((long *) (-7 + thing_761X));
        if ((3 == (3 & h_755X))) {
          arg1K0 = h_755X;
          goto L31642;}
        else {
          if ((1070 == h_755X)) {
            descriptor_753X = *((long *) (-3 + thing_761X));
            if ((3 == (3 & descriptor_753X))) {
              a_756X = -3 + descriptor_753X;
              if ((a_756X < (Soldspace_beginS))) {
                goto L31679;}
              else {
                if ((a_756X < (Soldspace_endS))) {
                  ShpS = RShpS;
                  v_752X = copy_weak_pointer(thing_761X);
                  RShpS = ShpS;
                  arg1K0 = v_752X;
                  goto L31642;}
                else {
                  goto L31679;}}}
            else {
              goto L31679;}}
          else {
            goto L31679;}}}
      else {
        arg1K0 = next_760X;
        goto L13896;}}}
  else {
    arg1K0 = next_760X;
    goto L13896;}}
 L13856: {
  if ((-1 == (Sweak_pointer_hpS))) {
    ShpS = RShpS;
    return;}
  else {
    x1_758X = Sweak_pointer_limitS;
    end_757X = Sweak_pointer_hpS;
    arg1K0 = (-1024 + x1_758X);
    arg1K1 = end_757X;
    goto L11112;}}
 L13896: {
  addr_759X = arg1K0;
  if ((addr_759X < end_763X)) {
    next_760X = 4 + addr_759X;
    thing_761X = *((long *) addr_759X);
    if ((2 == (3 & thing_761X))) {
      if (((31 & (((thing_761X)>>2))) < 15)) {
        goto L31634;}
      else {
        arg1K0 = (next_760X + (-4 & (3 + ((long)(((unsigned long)thing_761X)>>8)))));
        goto L13896;}}
    else {
      goto L31634;}}
  else {
    if (((RShpS) < (SlimitS))) {
      if ((end_763X < (RShpS))) {
        arg1K0 = end_763X;
        goto L13830;}
      else {
        goto L13856;}}
    else {
      TTerror("GC error: ran out of space in new heap", 0, 0, 0, 0);
      goto L13856;}}}
 L13830: {
  start_762X = arg1K0;
  end_763X = RShpS;
  arg1K0 = start_762X;
  goto L13896;}}

long read_image(unsigned char *filename_764X, long startup_space_765X)
{
  extern long read_number(FILE *);
  extern long Snewspace_endS;
  extern FILE * Scurrent_output_portS;
  extern long ShpS;
  long arg1K0;
  unsigned char arg3K0;
  FILE * port_766X;
  unsigned char reverseP_767X;
  long v_768X;
  long ptr_769X;
  long value_770X;
  unsigned char x_771X;
  unsigned char x_772X;
  long d_773X;
  long v_774X;
  long ptr_775X;
  long descriptor_776X;
  long result_777X;
  long old_level_778X;
  long old_bytes_per_cell_779X;
  long cells_780X;
  long old_begin_781X;
  long cells_782X;
  long old_hp_783X;
  long startup_proc_784X;
  unsigned char Kchar_785X;
  unsigned char Kchar_786X;
  long addr_787X;
  unsigned char x_788X;
  unsigned char x_789X;
  long start_790X;
  long new_limit_791X;
  long new_hp_792X;
  long delta_793X;

 {port_766X = ps_open(filename_764X, "rb");
  if ((NULL == port_766X)) {
    TTerror("Can't open heap image file", 0, 0, 0, 0);
    goto L10206;}
  else {
    goto L10206;}}
 L10266: {
  reverseP_767X = arg3K0;
  fread((void *)(ShpS), sizeof(char), (old_hp_783X - old_begin_781X), port_766X);
  if (reverseP_767X) {
    fputs("Correcting byte order of resumed image.", (Scurrent_output_portS));
    putc(10, (Scurrent_output_portS));
    arg1K0 = start_790X;
    goto L8611;}
  else {
    goto L10276;}}
 L8637: {
  v_768X = arg1K0;
  arg1K0 = v_768X;
  goto L8611;}
 L8611: {
  ptr_769X = arg1K0;
  x_772X = *((unsigned char *) ptr_769X);
  *((unsigned char *) ptr_769X) = ((unsigned char)((long)(*((unsigned char *) (3 + ptr_769X)))));
  *((unsigned char *) (3 + ptr_769X)) = ((unsigned char)((long)x_772X));
  x_771X = *((unsigned char *) (1 + ptr_769X));
  *((unsigned char *) (1 + ptr_769X)) = ((unsigned char)((long)(*((unsigned char *) (2 + ptr_769X)))));
  *((unsigned char *) (2 + ptr_769X)) = ((unsigned char)((long)x_771X));
  value_770X = *((long *) ptr_769X);
  if ((ptr_769X < new_hp_792X)) {
    if ((2 == (3 & value_770X))) {
      if (((31 & (((value_770X)>>2))) < 15)) {
        arg1K0 = (4 + ptr_769X);
        goto L8637;}
      else {
        arg1K0 = ((4 + ptr_769X) + (-4 & (3 + ((long)(((unsigned long)value_770X)>>8)))));
        goto L8637;}}
    else {
      arg1K0 = (4 + ptr_769X);
      goto L8637;}}
  else {
    goto L10276;}}
 L8736: {
  d_773X = arg1K0;
  *((long *) ptr_775X) = d_773X;
  if ((2 == (3 & d_773X))) {
    if (((31 & (((d_773X)>>2))) < 15)) {
      arg1K0 = (4 + ptr_775X);
      goto L8754;}
    else {
      arg1K0 = ((4 + ptr_775X) + (-4 & (3 + ((long)(((unsigned long)d_773X)>>8)))));
      goto L8754;}}
  else {
    arg1K0 = (4 + ptr_775X);
    goto L8754;}}
 L8754: {
  v_774X = arg1K0;
  arg1K0 = v_774X;
  goto L8726;}
 L8726: {
  ptr_775X = arg1K0;
  if ((ptr_775X < new_hp_792X)) {
    descriptor_776X = *((long *) ptr_775X);
    if ((3 == (3 & descriptor_776X))) {
      arg1K0 = (3 + ((-3 + descriptor_776X) + delta_793X));
      goto L8736;}
    else {
      arg1K0 = descriptor_776X;
      goto L8736;}}
  else {
    goto L10286;}}
 L10456: {
  result_777X = arg1K0;
  fclose(port_766X);
  return(result_777X);}
 L10208: {
  old_level_778X = read_number(port_766X);
  old_bytes_per_cell_779X = read_number(port_766X);
  cells_780X = read_number(port_766X);
  old_begin_781X = ((cells_780X)<<2);
  cells_782X = read_number(port_766X);
  old_hp_783X = ((cells_782X)<<2);
  startup_proc_784X = read_number(port_766X);
  goto L10407;}
 L10432: {
  { int TTchar;
    PS_GETC(port_766X, TTchar);
    if (EOF == TTchar) {
      TTerror("end of file while looking for page break", 0, 0, 0, 0);
      goto L10208;}
    else {
      unsigned char Kchar_785X = TTchar;
      if ((12 == ((long)Kchar_785X))) {
        goto L10208;}
      else {
        goto L10432;}}}}
 L10229: {
  if ((15 == old_level_778X)) {
    goto L10239;}
  else {
    TTerror("format of image is incompatible with this version of system", 2, old_level_778X, 15, 0);
    goto L10239;}}
 L10407: {
  { int TTchar;
    PS_GETC(port_766X, TTchar);
    if (EOF == TTchar) {
      TTerror("end of file while looking for page break", 0, 0, 0, 0);
      goto L10229;}
    else {
      unsigned char Kchar_786X = TTchar;
      if ((12 == ((long)Kchar_786X))) {
        goto L10229;}
      else {
        goto L10407;}}}}
 L10286: {
  ShpS = new_hp_792X;
  if ((3 == (3 & startup_proc_784X))) {
    arg1K0 = (3 + ((-3 + startup_proc_784X) + delta_793X));
    goto L10456;}
  else {
    arg1K0 = startup_proc_784X;
    goto L10456;}}
 L10276: {
  if ((0 == delta_793X)) {
    goto L10286;}
  else {
    arg1K0 = start_790X;
    goto L8726;}}
 L10263: {
  fread((void *)(ShpS), sizeof(char), 4, port_766X);
  if ((1 == (*((long *) (ShpS))))) {
    arg3K0 = 0;
    goto L10266;}
  else {
    addr_787X = ShpS;
    x_788X = *((unsigned char *) addr_787X);
    *((unsigned char *) addr_787X) = ((unsigned char)((long)(*((unsigned char *) (3 + addr_787X)))));
    *((unsigned char *) (3 + addr_787X)) = ((unsigned char)((long)x_788X));
    x_789X = *((unsigned char *) (1 + addr_787X));
    *((unsigned char *) (1 + addr_787X)) = ((unsigned char)((long)(*((unsigned char *) (2 + addr_787X)))));
    *((unsigned char *) (2 + addr_787X)) = ((unsigned char)((long)x_789X));
    if ((1 == (*((long *) (ShpS))))) {
      arg3K0 = 1;
      goto L10266;}
    else {
      TTerror("unable to correct byte order", 1, (*((long *) (ShpS))), 0, 0);
      arg3K0 = 0;
      goto L10266;}}}
 L10249: {
  delta_793X = (ShpS) - old_begin_781X;
  new_hp_792X = old_hp_783X + delta_793X;
  new_limit_791X = Snewspace_endS;
  start_790X = ShpS;
  if (((startup_space_765X + new_hp_792X) < new_limit_791X)) {
    goto L10263;}
  else {
    TTerror("heap not big enough to restore this image", 2, new_hp_792X, new_limit_791X, 0);
    goto L10263;}}
 L10239: {
  if ((4 == old_bytes_per_cell_779X)) {
    goto L10249;}
  else {
    TTerror("incompatible bytes-per-cell", 2, old_bytes_per_cell_779X, 4, 0);
    goto L10249;}}
 L10206: {
  goto L10432;}}

long check_image_header(unsigned char *filename_794X)
{
  extern long read_number(FILE *);
  extern FILE * Scurrent_output_portS;
  long arg1K0;
  FILE * port_795X;
  FILE * out_796X;
  long result_797X;
  FILE * out_798X;
  long old_level_799X;
  long old_bytes_per_cell_800X;
  long cells_801X;
  long cells_802X;
  FILE * out_803X;
  unsigned char Kchar_804X;

 {port_795X = ps_open(filename_794X, "rb");
  if ((NULL == port_795X)) {
    out_796X = Scurrent_output_portS;
    fputs("Can't open heap image file", out_796X);
    putc(10, out_796X);
    arg1K0 = -1;
    goto L6547;}
  else {
    goto L6503;}}
 L6547: {
  result_797X = arg1K0;
  fclose(port_795X);
  return(result_797X);}
 L6409: {
  old_level_799X = read_number(port_795X);
  old_bytes_per_cell_800X = read_number(port_795X);
  cells_801X = read_number(port_795X);
  cells_802X = read_number(port_795X);
  if ((15 == old_level_799X)) {
    if ((4 == old_bytes_per_cell_800X)) {
      arg1K0 = ((((cells_802X)<<2)) - (((cells_801X)<<2)));
      goto L6547;}
    else {
      out_798X = Scurrent_output_portS;
      fputs("incompatible bytes-per-cell in image", out_798X);
      putc(10, out_798X);
      arg1K0 = -1;
      goto L6547;}}
  else {
    out_803X = Scurrent_output_portS;
    fputs("format of image is incompatible with this version of system", out_803X);
    putc(10, out_803X);
    arg1K0 = -1;
    goto L6547;}}
 L6503: {
  { int TTchar;
    PS_GETC(port_795X, TTchar);
    if (EOF == TTchar) {
      TTerror("end of file while looking for page break", 0, 0, 0, 0);
      goto L6409;}
    else {
      unsigned char Kchar_804X = TTchar;
      if ((12 == ((long)Kchar_804X))) {
        goto L6409;}
      else {
        goto L6503;}}}}}

void register_static_areas(unsigned char pure_count_805X, long *pure_areas_806X, long *pure_sizes_807X, unsigned char impure_count_808X, long *impure_areas_809X, long *impure_sizes_810X)
{
  extern unsigned char Spure_area_countS;
  extern long *Spure_areasS;
  extern long *Spure_sizesS;
  extern unsigned char Simpure_area_countS;
  extern long *Simpure_areasS;
  extern long *Simpure_sizesS;

 {Spure_area_countS = pure_count_805X;
  Spure_areasS = pure_areas_806X;
  Spure_sizesS = pure_sizes_807X;
  Simpure_area_countS = impure_count_808X;
  Simpure_areasS = impure_areas_809X;
  Simpure_sizesS = impure_sizes_810X;
  return;}}
scheme48_init()
{
Sminimum_recovered_spaceS = 0;
Sexception_space_usedPS = 1;
Snumber_of_portsS = 100;
Sweak_pointer_limitS = 0;
Sweak_pointer_hpS = -1;
Ssaved_limitS = 0;
Ssaved_hpS = 0;
Sgc_countS = 0;
Simpure_area_countS = 0;
Spure_area_countS = 0;
SlimitS = 0;
ShpS = 0;
Scurrent_output_portS = stdout;
Scurrent_input_portS = stdin;
}
