home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
s
/
s48.zip
/
SCHEME48.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-06-17
|
239KB
|
8,532 lines
/*Copyright (c) 1992 by Richard Kelsey and Jonathan Rees. See file COPYING.*/
/*
Peephole optimizations:
(query-replace "255L & (*((char *) " "(*((unsigned char *) " nil)
(query-replace " >> 2L) << 2L" " & ~3)" nil)
(query-replace " >> 2L) >> 5L" ") >> 7L" nil)
(query-replace " >> 2L) >> 6L" ") >> 8L" nil)
(query-replace " >> 2L) * 4L" " & ~3)" nil)
(query-replace " >> 8L) << 2L" " >> 6L) & ~3L" nil)
(query-replace " << 5L) + 2L) << 2L) + 2L" " << 7L) + 10L))" nil)
(query-replace " << 6L) + 2L) << 2L) + 1L" " << 8L) + 9L))" nil)
(query-replace " + 1L) * 4L) << 7L) + 10L" ")) << 9L) + 522L" nil)
Some manual changes for mobot system.
Arithmetic shift opcode patched.
*/
#ifdef ROBOT
#include <vubugg.h> /* define _jtime */
extern unsigned long alarm_time;
#define ALARM_CHECK \
if (_jtime >= alarm_time) { \
Spending_interruptsS |= 1; \
alarm_time = 0xffffffff; \
}
#define ps_runtime() _jtime
#else
#define ALARM_CHECK
#endif
#ifdef ROBOT
#define small_multiply(x,y) \
({ long temp_ = (y); \
asm volatile ("mulu %2,%0" : "=d" (temp_) : \
"0" (temp_), "g" ((short)(x))); \
temp_; })
#else
#define small_multiply(x,y) ((x) * (y))
#endif
#include <stdio.h>
long Sexit_statusS, Smaximum_string_lengthS, Sthe_stringS;
long Scurrent_input_portS, Scurrent_output_portS, SmemoryS;
long Smemory_beginS, Smemory_endS, ShpS, SlimitS;
long Sheap_keyS, Sokayed_spaceS, Sopen_portsS;
long Sopen_vm_portsS, Snewspace_beginS, Snewspace_endS;
long Soldspace_beginS, Soldspace_endS, Sstack_beginS;
long Sstack_endS, Sstack_sizeS, SrootS;
long Sinitial_heap_sizeS, SmarginS, SscanS, SstackS;
long Sbottom_of_stackS, Sstack_limitS, ScontsS;
long Sconts_slotsS, Sconts_overflowS;
long Sconts_overflow_slotsS, Sconts_preservedS;
long Sconts_preserved_slotsS, Sconts_from_heapS;
long Sconts_from_heap_slotsS, SenvsS, Senvs_slotsS;
long Senvs_closedS, Senvs_closed_slotsS, Senvs_overflowS;
long Senvs_overflow_slotsS, Senvs_preservedS;
long Senvs_preserved_slotsS, Sstack_keyS;
long Sokayed_stack_spaceS, Sexception_space_usedPS;
long Senvs_madeS, StemplateS, SenvS, ScontS;
long Scode_pointerS, SnargsS, SvalS;
long Senabled_interruptsS, Sexception_handlerS;
long Sinterrupt_handlersS, Sdynamic_stateS;
long Spending_interruptsS;
long write_string(str_0X, port_1X)
long str_0X, port_1X;
{
long arg0;
START: {
arg0 = 0L;
goto L8282;
L8282: {
long i_2X = arg0;
long ch_3X;
ch_3X = (*((unsigned char *) (str_0X + i_2X)));
if (ch_3X == 0L) {
return(8888888L);}
else {
long v_4X;
putc(ch_3X, (FILE *)port_1X);
arg0 = (i_2X + 1L);
goto L8282;}}}
}
long copy_stob(stob_5X, key_6X)
long stob_5X, key_6X;
{
extern long ShpS;
long arg0, arg1;
START: {
long len_7X, type_8X, new_9X;
len_7X = ((*((long *) ((stob_5X - 3L) + -4L))) >> 7L);
type_8X = ((*((long *) ((stob_5X - 3L) + -4L))) >> 2L) & 31L;
*((long *) ShpS) = ((((len_7X << 5L) + type_8X) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_9X = ShpS + 3L;
ShpS = (ShpS + (((len_7X + 3L) & ~3)));
if (len_7X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_9X;
goto L21430;}
else {
arg0 = new_9X;
goto L21430;}
L21430: {
long new_10X = arg0;
long from_11X, end_12X;
from_11X = stob_5X - 3L;
end_12X = from_11X + ((((((*((long *) ((stob_5X - 3L) + -4L))) >> 7L)) + 3L) & ~3));
arg0 = from_11X;
arg1 = (new_10X - 3L);
goto L21465;
L21465: {
long from_13X = arg0;
long to_14X = arg1;
if (from_13X >= end_12X) {
return(new_10X);}
else {
*((long *) to_14X) = (*((long *) from_13X));
arg0 = (from_13X + 4L);
arg1 = (to_14X + 4L);
goto L21465;}}}}
}
long close_port(vm_port_15X)
long vm_port_15X;
{
extern long Sopen_vm_portsS, Sopen_portsS;
extern long Qps_error_0();
long arg0;
START: {
if ((*((long *) ((vm_port_15X - 3L) + 4L))) >= 0L) {
long index_16X;
index_16X = (*((long *) ((vm_port_15X - 3L) + 4L))) >> 2L;
if (index_16X == 0L) {
return(9999999L);}
else {
if (index_16X == 1L) {
return(9999999L);}
else {
long mode_17X, index_18X;
mode_17X = (*((long *) (vm_port_15X - 3L))) >> 2L;
index_18X = (*((long *) ((vm_port_15X - 3L) + 4L))) >> 2L;
if (index_18X >= 0L) {
arg0 = (*((long *) (Sopen_portsS + (index_18X * 4L))));
goto L22380;}
else {
arg0 = 0L;
goto L22380;}
L22380: {
long port_19X = arg0;
if (mode_17X == 1L) {
long v_20X;
fclose((FILE *)port_19X);
arg0 = v_20X;
goto L22368;}
else {
if (mode_17X == 2L) {
long v_21X;
fclose((FILE *)port_19X);
arg0 = v_21X;
goto L22368;}
else {
long v_22X;
v_22X = Qps_error_0(((long)"this shouldn't happen when closing a port"));
arg0 = v_22X;
goto L22368;}}
L22368: {
*((long *) (vm_port_15X - 3L)) = 0L;
*((long *) ((vm_port_15X - 3L) + 4L)) = -4L;
*((long *) (Sopen_portsS + (index_16X * 4L))) = 0L;
*((long *) (Sopen_vm_portsS + (index_16X * 4L))) = 1L;
return(999999L);}}}}}
else {
return(9999999L);}}
}
long close_port_noisily(port_23X)
long port_23X;
{
extern long Scurrent_output_portS;
extern long Qps_error_0(), write_string(), close_port();
long arg0;
START: {
long v_24X, v_25X, string_26X, port_27X, count_28X, sent_29X;
v_24X = close_port(port_23X);
v_25X = write_string(((long)"Port closed: "), Scurrent_output_portS);
string_26X = *((long *) ((port_23X - 3L) + 12L));
port_27X = Scurrent_output_portS;
count_28X = ((*((long *) ((string_26X - 3L) + -4L))) >> 7L);
sent_29X = fwrite((string_26X - 3L), sizeof(char),count_28X, (FILE *)port_27X);
if (sent_29X == count_28X) {
arg0 = 0L;
goto L24814;}
else {
long v_30X;
v_30X = Qps_error_0(((long)"block write did not send enough bytes"));
arg0 = 0L;
goto L24814;}
L24814: {
long port_31X, v_32X;
port_31X = Scurrent_output_portS;
putc(10L, (FILE *)port_31X);
if (port_31X == Scurrent_output_portS) {
long v_33X;
fflush((FILE *)port_31X);
return(v_33X);}
else {
return(9999999L);}}}
}
long scan(end_34X)
long end_34X;
{
extern long ShpS, Soldspace_endS, Soldspace_beginS, SscanS;
long arg0;
long RShpS = ShpS;
long RSscanS = SscanS;
START: {
goto L20048;
L20048: {
if (RSscanS < end_34X) {
long thing_35X;
thing_35X = *((long *) RSscanS);
if ((thing_35X & 3L) == 2L) {
if (((thing_35X >> 2L) & 31L) >= 10L) {
RSscanS = ((RSscanS + 4L) + (((((thing_35X >> 7L)) + 3L) & ~3)));
arg0 = 54321L;
goto L20066;}
else {
arg0 = 0L;
goto L16690;}}
else {
arg0 = 0L;
goto L16690;}
L16690: {
if ((thing_35X & 3L) == 3L) {
long a_36X;
a_36X = thing_35X - 3L;
if (a_36X >= Soldspace_beginS) {
if (a_36X < Soldspace_endS) {
long h_37X;
h_37X = *((long *) ((thing_35X - 3L) + -4L));
if ((h_37X & 3L) == 3L) {
*((long *) RSscanS) = h_37X;
RSscanS = (RSscanS + 4L);
arg0 = 54321L;
goto L20066;}
else {
long new_38X, new_hp_39X;
*((long *) RShpS) = h_37X;
RShpS = (RShpS + 4L);
new_38X = RShpS + 3L;
*((long *) ((thing_35X - 3L) + -4L)) = new_38X;
*((long *) RSscanS) = new_38X;
RSscanS = (RSscanS + 4L);
new_hp_39X = RShpS + (((((h_37X >> 7L)) + 3L) & ~3));
arg0 = (thing_35X - 3L);
goto L16744;
L16744: {
long o_40X = arg0;
if (RShpS >= new_hp_39X) {
arg0 = 255L;
goto L20066;}
else {
*((long *) RShpS) = (*((long *) o_40X));
RShpS = (RShpS + 4L);
arg0 = (o_40X + 4L);
goto L16744;}}}}
else {
arg0 = 0L;
goto L16849;}}
else {
arg0 = 0L;
goto L16849;}}
else {
arg0 = 0L;
goto L16849;}
L16849: {
RSscanS = (RSscanS + 4L);
arg0 = 54321L;
goto L20066;}}
L20066: {
goto L20048;}}
else {
ShpS = RShpS;
SscanS = RSscanS;
return(8888888L);}}}
}
long trace_env(env_41X)
long env_41X;
{
extern long SscanS, Sstack_endS, Sstack_beginS;
extern long trace_env(), scan();
START: {
if (env_41X >= Sstack_beginS) {
if (env_41X <= Sstack_endS) {
long end_42X, v_43X, v_44X;
end_42X = (env_41X - 3L) + ((((((*((long *) ((env_41X - 3L) + -4L))) >> 7L)) + 3L) & ~3));
SscanS = (env_41X - 3L);
v_43X = scan(end_42X);
v_44X = trace_env((*((long *) (env_41X - 3L))));
return(v_44X);}
else {
return(8888888L);}}
else {
return(8888888L);}}
}
long save_env_in_heap(env_45X, cont_46X, key_47X, reason_48X)
long env_45X, cont_46X, key_47X, reason_48X;
{
extern long Sstack_endS, Sstack_beginS;
extern long copy_stob();
long arg0;
START: {
long new_49X;
new_49X = copy_stob(env_45X, key_47X);
*((long *) ((env_45X - 3L) + -4L)) = new_49X;
arg0 = new_49X;
goto L27415;
L27415: {
long env_50X = arg0;
long p_51X, y_52X;
p_51X = *((long *) (env_50X - 3L));
y_52X = Sstack_beginS;
if (p_51X >= y_52X) {
if (p_51X <= Sstack_endS) {
long env_53X, new_54X;
env_53X = *((long *) (env_50X - 3L));
new_54X = copy_stob(env_53X, key_47X);
*((long *) ((env_53X - 3L) + -4L)) = new_54X;
*((long *) (env_50X - 3L)) = new_54X;
arg0 = new_54X;
goto L27415;}
else {
arg0 = 8888888L;
goto L27462;}}
else {
arg0 = 8888888L;
goto L27462;}
L27462: {
arg0 = cont_46X;
goto L27347;
L27347: {
long cont_55X = arg0;
long env_56X;
env_56X = *((long *) ((cont_55X - 3L) + 12L));
if ((env_56X & 3L) == 3L) {
if (((*((long *) ((env_56X - 3L) + -4L))) & 3L) == 3L) {
*((long *) ((cont_55X - 3L) + 12L)) = (*((long *) ((env_56X - 3L) + -4L)));
arg0 = (*((long *) (cont_55X - 3L)));
goto L27347;}
else {
arg0 = 8888888L;
goto L27410;}}
else {
arg0 = 8888888L;
goto L27410;}
L27410: {
arg0 = env_45X;
goto L27281;
L27281: {
long env_57X = arg0;
long h_58X;
h_58X = *((long *) ((env_57X - 3L) + -4L));
if ((h_58X & 3L) == 3L) {
*((long *) ((env_57X - 3L) + -4L)) = (*((long *) ((h_58X - 3L) + -4L)));
if (((*((long *) (h_58X - 3L))) & 3L) == 3L) {
arg0 = (*((long *) (h_58X - 3L)));
goto L27281;}
else {
return(new_49X);}}
else {
return(new_49X);}}}}}}}
}
long clear_registers()
{
extern long Spending_interruptsS, Senabled_interruptsS;
extern long Sinterrupt_handlersS, Sexception_handlerS;
extern long Sdynamic_stateS, SvalS, SnargsS, ScontS;
extern long Sstack_limitS, Sstack_beginS, SstackS;
extern long Sbottom_of_stackS, SenvS, Scode_pointerS;
extern long StemplateS, SrootS;
START: {
long tem_59X;
tem_59X = *((long *) ((SrootS - 3L) + 44L));
StemplateS = tem_59X;
Scode_pointerS = ((*((long *) (tem_59X - 3L))) - 3L);
SenvS = 13L;
SstackS = (((Sbottom_of_stackS - 3L) - 4L) - 4L);
Sstack_limitS = (Sstack_beginS + 296L);
*((long *) (Sbottom_of_stackS - 3L)) = 1L;
ScontS = Sbottom_of_stackS;
SnargsS = 13L;
SvalS = 13L;
Sdynamic_stateS = 25L;
Sexception_handlerS = 25L;
Sinterrupt_handlersS = 25L;
Senabled_interruptsS = 0L;
Spending_interruptsS = 0L;
return(13L);}
}
long I70()
{
extern long Smaximum_string_lengthS;
extern long Qps_error_1();
long arg0;
START: {
long size_60X, size_61X, x_62X;
size_60X = 1L + Smaximum_string_lengthS;
size_61X = 4L + size_60X;
x_62X = ((long) malloc (size_61X* sizeof(char)));
if (x_62X == 0L) {
long v_63X;
v_63X = Qps_error_1(((long)"out of memory, cannot allocate this many bytes"), size_61X);
arg0 = x_62X;
goto L9337;}
else {
arg0 = x_62X;
goto L9337;}
L9337: {
long vec_64X = arg0;
*((long *) vec_64X) = size_60X;
return((vec_64X + 4L));}}
}
long I73()
{
START: {
return(((long)stdin));}
}
long I74()
{
START: {
return(((long)stdout));}
}
long collect()
{
extern long Sopen_vm_portsS, Sbottom_of_stackS, SscanS;
extern long SstackS, SrootS, ShpS, SlimitS, SmarginS;
extern long Soldspace_endS, Snewspace_endS, Soldspace_beginS;
extern long Snewspace_beginS;
extern long close_port_noisily(), Qps_error_0(), trace_env();
extern long scan();
long arg0, arg1;
START: {
long b_65X, e_66X, new_67X, cont_68X, v_69X;
b_65X = Snewspace_beginS;
Snewspace_beginS = Soldspace_beginS;
Soldspace_beginS = b_65X;
e_66X = Snewspace_endS;
Snewspace_endS = Soldspace_endS;
Soldspace_endS = e_66X;
SlimitS = (Snewspace_endS - SmarginS);
ShpS = Snewspace_beginS;
*((long *) ShpS) = 522L;
ShpS = (ShpS + 4L);
new_67X = ShpS + 3L;
ShpS = (ShpS + 4L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_67X - 3L)) = SrootS;
cont_68X = *((long *) ((SrootS - 3L) + 12L));
SscanS = (SstackS + 4L);
v_69X = scan((cont_68X - 7L));
arg0 = cont_68X;
arg1 = 0L;
goto L32106;
L32106: {
long cont_70X = arg0;
long last_env_71X = arg1;
long env_72X, end_73X, v_74X;
env_72X = *((long *) ((cont_70X - 3L) + 12L));
end_73X = (cont_70X - 3L) + ((((((*((long *) ((cont_70X - 3L) + -4L))) >> 7L)) + 3L) & ~3));
SscanS = (cont_70X - 3L);
v_74X = scan(end_73X);
if (env_72X == last_env_71X) {
arg0 = 9999999L;
goto L32158;}
else {
long v_75X;
v_75X = trace_env(env_72X);
arg0 = v_75X;
goto L32158;}
L32158: {
if (cont_70X == Sbottom_of_stackS) {
SscanS = Snewspace_beginS;
goto L32760;
L32760: {
long v_76X;
v_76X = scan(ShpS);
if (ShpS >= SlimitS) {
long v_77X;
v_77X = Qps_error_0(((long)"out of memory"));
return(v_77X);}
else {
if (SscanS < ShpS) {
goto L32760;}
else {
SrootS = (*((long *) (Snewspace_beginS + 4L)));
arg0 = 2L;
goto L32705;
L32705: {
long i_78X = arg0;
if (i_78X == 100L) {
return(0L);}
else {
long port_79X;
port_79X = *((long *) (Sopen_vm_portsS + (i_78X * 4L)));
if ((port_79X & 255L) == 1L) {
arg0 = 9999999L;
goto L32716;}
else {
if (((*((long *) ((port_79X - 3L) + -4L))) & 3L) == 3L) {
arg0 = (*((long *) ((port_79X - 3L) + -4L)));
goto L32727;}
else {
long id_80X;
id_80X = *((long *) ((port_79X - 3L) + 12L));
if (((*((long *) ((id_80X - 3L) + -4L))) & 3L) == 3L) {
*((long *) ((port_79X - 3L) + 12L)) = (*((long *) ((id_80X - 3L) + -4L)));
arg0 = 999999L;
goto L32457;}
else {
arg0 = 9999999L;
goto L32457;}
L32457: {
long v_81X;
v_81X = close_port_noisily(port_79X);
arg0 = 1L;
goto L32727;}}
L32727: {
long value_82X = arg0;
*((long *) (Sopen_vm_portsS + (i_78X * 4L))) = value_82X;
arg0 = 999999L;
goto L32716;}}
L32716: {
arg0 = (i_78X + 1L);
goto L32705;}}}}}}}
else {
arg0 = (*((long *) (cont_70X - 3L)));
arg1 = env_72X;
goto L32106;}}}}
}
long preserve_continuation(cont_83X, key_84X, reason_85X)
long cont_83X, key_84X, reason_85X;
{
extern long Sbottom_of_stackS, Sstack_endS, Sstack_beginS;
extern long SenvS;
extern long copy_stob(), save_env_in_heap();
long arg0, arg1;
START: {
long p_86X;
p_86X = SenvS;
if (p_86X >= Sstack_beginS) {
if (p_86X <= Sstack_endS) {
long v_87X;
v_87X = save_env_in_heap(SenvS, cont_83X, key_84X, reason_85X);
SenvS = v_87X;
arg0 = 54321L;
goto L30379;}
else {
arg0 = 9999999L;
goto L30379;}}
else {
arg0 = 9999999L;
goto L30379;}
L30379: {
long end_88X;
end_88X = *((long *) (Sbottom_of_stackS - 3L));
arg0 = cont_83X;
arg1 = Sbottom_of_stackS;
goto L30189;
L30189: {
long cont_89X = arg0;
long previous_90X = arg1;
if (cont_89X == Sbottom_of_stackS) {
*((long *) (previous_90X - 3L)) = end_88X;
return((*((long *) (Sbottom_of_stackS - 3L))));}
else {
long p_91X;
p_91X = *((long *) ((cont_89X - 3L) + 12L));
if (p_91X >= Sstack_beginS) {
if (p_91X <= Sstack_endS) {
long v_92X;
v_92X = save_env_in_heap((*((long *) ((cont_89X - 3L) + 12L))), cont_89X, key_84X, reason_85X);
arg0 = v_92X;
goto L30334;}
else {
arg0 = 9999999L;
goto L30334;}}
else {
arg0 = 9999999L;
goto L30334;}
L30334: {
long new_93X;
new_93X = copy_stob(cont_89X, key_84X);
*((long *) (previous_90X - 3L)) = new_93X;
arg0 = (*((long *) (new_93X - 3L)));
arg1 = new_93X;
goto L30189;}}}}}
}
long perform_application()
{
extern long Sthe_stringS, Smaximum_string_lengthS;
extern long Sexception_space_usedPS, Sexception_handlerS;
extern long Sdynamic_stateS, SscanS, Snewspace_beginS;
extern long Scurrent_output_portS, Sexit_statusS;
extern long Sopen_vm_portsS, Sopen_portsS, Sbottom_of_stackS;
extern long ScontS, Sstack_endS, Sstack_beginS;
extern long Snewspace_endS, SlimitS, ShpS;
extern long Sinterrupt_handlersS, SrootS, Sstack_limitS;
extern long SstackS, SnargsS, Scode_pointerS, StemplateS;
extern long SenvS, SvalS, Senabled_interruptsS;
extern long Spending_interruptsS;
extern long extended_vm(), scan(), close_port_noisily();
extern long write_string(), clear_registers(), close_port();
extern long preserve_continuation(), save_env_in_heap(), collect();
extern long perform_application(), Qps_error_1(), Qps_error_0();
long arg0, arg1, arg2, arg3, arg4;
long RSvalS = SvalS;
long RSstackS = SstackS;
long RScode_pointerS = Scode_pointerS;
long RSenvS = SenvS;
START: {
long y_94X;
/* ROBOT HACK */
ALARM_CHECK
y_94X = Spending_interruptsS & Senabled_interruptsS;
if (0L == y_94X) {
long obj_95X;
obj_95X = RSvalS;
if ((obj_95X & 3L) == 3L) {
if ((((*((long *) ((obj_95X - 3L) + -4L))) >> 2L) & 31L) == 3L) {
long tem_96X;
RSenvS = (*((long *) ((RSvalS - 3L) + 4L)));
tem_96X = *((long *) (RSvalS - 3L));
StemplateS = tem_96X;
RScode_pointerS = ((*((long *) (tem_96X - 3L))) - 3L);
goto L34459;}
else {
arg0 = 0L;
goto L37385;}}
else {
arg0 = 0L;
goto L37385;}
L37385: {
if (SnargsS == 64L) {
long v_97X;
RSstackS = (RSstackS - -4L);
v_97X = *((long *) RSstackS);
arg0 = 2L;
arg1 = v_97X;
arg2 = 63L;
goto L33770;
L37334: {
long v_98X = arg0;
arg0 = v_98X;
goto L37303;}}
else {
long v_99X;
v_99X = SnargsS;
arg0 = 3L;
arg1 = 25L;
arg2 = v_99X;
goto L33770;
L37320: {
long v_100X = arg0;
arg0 = v_100X;
goto L37303;}}
L37303: {
long args_101X = arg0;
arg0 = 0L;
arg1 = 0L;
arg2 = RSvalS;
arg3 = args_101X;
goto L38697;}}}
else {
if ((RSstackS - 276L) > Sstack_limitS) {
arg0 = 0L;
goto L38011;}
else {
arg0 = 0L;
arg1 = 69L;
goto L32883;
L38299: {
arg0 = 0L;
goto L38011;}}
L38011: {
long key_102X = arg0;
long n_103X;
n_103X = Spending_interruptsS & Senabled_interruptsS;
arg0 = 0L;
arg1 = 1L;
goto L38263;
L38263: {
long i_104X = arg0;
long m_105X = arg1;
if (0L == (n_103X & m_105X)) {
arg0 = (i_104X + 1L);
arg1 = (m_105X * 2L);
goto L38263;}
else {
long tem_106X, v_107X, v_108X;
Spending_interruptsS = (n_103X & (~m_105X));
*((long *) RSstackS) = RSvalS;
RSstackS = (RSstackS - 4L);
*((long *) RSstackS) = (SnargsS << 2L);
RSstackS = (RSstackS - 4L);
*((long *) RSstackS) = (Senabled_interruptsS << 2L);
RSstackS = (RSstackS - 4L);
tem_106X = *((long *) ((SrootS - 3L) + 44L));
StemplateS = tem_106X;
RScode_pointerS = ((*((long *) (tem_106X - 3L))) - 3L);
v_107X = SnargsS + 3L;
v_108X = RScode_pointerS;
arg0 = 0L;
arg1 = v_108X;
arg2 = v_107X;
arg3 = key_102X;
goto L25305;
L37961: {
long obj_109X;
*((long *) RSstackS) = (Senabled_interruptsS << 2L);
RSstackS = (RSstackS - 4L);
SnargsS = 1L;
obj_109X = Sinterrupt_handlersS;
if ((obj_109X & 3L) == 3L) {
if ((((*((long *) ((obj_109X - 3L) + -4L))) >> 2L) & 31L) == 2L) {
arg0 = 9999999L;
goto L37936;}
else {
arg0 = 0L;
goto L38088;}}
else {
arg0 = 0L;
goto L38088;}
L38088: {
long v_110X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_110X = Qps_error_0(((long)"interrupt handler is not a vector"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_110X;
goto L37936;}
L37936: {
long obj_111X;
RSvalS = (*((long *) ((Sinterrupt_handlersS - 3L) + (i_104X << 2L))));
Senabled_interruptsS = 0L;
obj_111X = RSvalS;
if ((obj_111X & 3L) == 3L) {
if ((((*((long *) ((obj_111X - 3L) + -4L))) >> 2L) & 31L) == 3L) {
arg0 = 9999999L;
goto L37900;}
else {
arg0 = 0L;
goto L38026;}}
else {
arg0 = 0L;
goto L38026;}
L38026: {
long v_112X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_112X = Qps_error_1(((long)"interrupt handler is not a closure"), i_104X);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_112X;
goto L37900;}
L37900: {
goto START;}}}}}}}
L34459: {
long b_113X;
b_113X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
switch (b_113X) {
case 0 : {
long b_114X;
b_114X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
if (SnargsS == b_114X) {
goto L34459;}
else {
if (SnargsS == 64L) {
long v_115X;
RSstackS = (RSstackS - -4L);
v_115X = *((long *) RSstackS);
arg0 = 6L;
arg1 = v_115X;
arg2 = 63L;
goto L33770;
L37033: {
long v_116X = arg0;
arg0 = v_116X;
goto L37002;}}
else {
long v_117X;
v_117X = SnargsS;
arg0 = 7L;
arg1 = 25L;
arg2 = v_117X;
goto L33770;
L37019: {
long v_118X = arg0;
arg0 = v_118X;
goto L37002;}}
L37002: {
long args_119X = arg0;
arg0 = 2L;
arg1 = 1L;
arg2 = RSvalS;
arg3 = args_119X;
goto L38697;}}}
break;
case 1 : {
long b_120X;
b_120X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
if (SnargsS >= b_120X) {
goto L34459;}
else {
if (SnargsS == 64L) {
long v_121X;
RSstackS = (RSstackS - -4L);
v_121X = *((long *) RSstackS);
arg0 = 4L;
arg1 = v_121X;
arg2 = 63L;
goto L33770;
L37161: {
long v_122X = arg0;
arg0 = v_122X;
goto L37130;}}
else {
long v_123X;
v_123X = SnargsS;
arg0 = 5L;
arg1 = 25L;
arg2 = v_123X;
goto L33770;
L37147: {
long v_124X = arg0;
arg0 = v_124X;
goto L37130;}}
L37130: {
long args_125X = arg0;
arg0 = 1L;
arg1 = 1L;
arg2 = RSvalS;
arg3 = args_125X;
goto L38697;}}}
break;
case 2 : {
RSvalS = (SnargsS << 2L);
goto L34459;}
break;
case 3 : {
if ((RSstackS - 8L) > Sstack_limitS) {
arg0 = 0L;
goto L34885;}
else {
arg0 = 3L;
arg1 = 2L;
goto L32883;
L34997: {
arg0 = 0L;
goto L34885;}}
L34885: {
long count_126X, env_127X;
count_126X = (*((unsigned char *) RScode_pointerS));
*((long *) RSstackS) = 0L;
RSstackS = (RSstackS - 4L);
*((long *) RSstackS) = ((((((count_126X)) << 9L) + 522L)));
RSstackS = (RSstackS - 4L);
env_127X = ((RSstackS + 4L) + 4L) + 3L;
RScode_pointerS = (RScode_pointerS + 1L);
*((long *) (env_127X - 3L)) = RSenvS;
RSenvS = env_127X;
goto L34459;}}
break;
case 4 : {
long count_128X, space_129X;
count_128X = SnargsS;
space_129X = count_128X + 2L;
if ((ShpS + (space_129X << 2L)) < SlimitS) {
arg0 = 9999999L;
goto L35123;}
else {
SlimitS = Snewspace_endS;
arg0 = 19L;
goto L29273;
L35157: {
long v_130X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_130X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 19L;
goto L24906;
L35165: {
long v_131X = arg0;
arg0 = v_131X;
goto L35123;}}}
L35123: {
if ((ShpS + (space_129X << 2L)) < SlimitS) {
arg0 = 0L;
goto L35060;}
else {
long v_132X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_132X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_132X;
goto L35060;}}
L35060: {
long count_133X, len_134X, new_135X;
count_133X = (*((unsigned char *) RScode_pointerS));
len_134X = (count_133X + 1L) * 4L;
*((long *) ShpS) = ((((len_134X << 7L) + 10L)));
ShpS = (ShpS + 4L);
new_135X = ShpS + 3L;
ShpS = (ShpS + (((len_134X + 3L) & ~3)));
if (len_134X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_135X;
goto L18054;}
else {
arg0 = new_135X;
goto L18054;}
L18054: {
long stob_136X = arg0;
long from_137X;
from_137X = RSstackS + 4L;
arg0 = from_137X;
arg1 = (4L + (stob_136X - 3L));
goto L18092;
L18092: {
long from_138X = arg0;
long to_139X = arg1;
if (from_138X >= (from_137X + (count_133X << 2L))) {
RSstackS = (RSstackS - ((0L - count_133X) << 2L));
RScode_pointerS = (RScode_pointerS + 1L);
*((long *) (stob_136X - 3L)) = RSenvS;
RSenvS = stob_136X;
goto L34459;}
else {
*((long *) to_139X) = (*((long *) from_138X));
arg0 = (from_138X + 4L);
arg1 = (to_139X + 4L);
goto L18092;}}}}}
break;
case 5 : {
RSenvS = (*((long *) (RSenvS - 3L)));
goto L34459;}
break;
case 6 : {
long b_140X;
b_140X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
if (SnargsS == 64L) {
long v_141X, v_142X;
v_141X = (SnargsS - 1L) - b_140X;
RSstackS = (RSstackS - -4L);
v_142X = *((long *) RSstackS);
arg0 = 9L;
arg1 = v_142X;
arg2 = v_141X;
goto L33770;
L34710: {
long v_143X = arg0;
arg0 = v_143X;
goto L34725;}}
else {
long v_144X;
v_144X = SnargsS - b_140X;
arg0 = 8L;
arg1 = 25L;
arg2 = v_144X;
goto L33770;
L34723: {
long v_145X = arg0;
arg0 = v_145X;
goto L34725;}}
L34725: {
long args_146X = arg0;
RSvalS = args_146X;
SnargsS = (b_140X + 1L);
goto L34459;}}
break;
case 7 : {
long b_147X;
b_147X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
RSvalS = (*((long *) ((StemplateS - 3L) + (b_147X << 2L))));
goto L34459;}
break;
case 8 : {
long b_148X, env_149X;
b_148X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
env_149X = RSenvS;
arg0 = env_149X;
arg1 = b_148X;
goto L58767;
L58767: {
long env_150X = arg0;
long i_151X = arg1;
if (i_151X == 0L) {
long b_152X;
b_152X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
RSvalS = (*((long *) ((env_150X - 3L) + (b_152X << 2L))));
if (RSvalS == 529L) {
arg0 = 3L;
arg1 = 2L;
goto L30695;}
else {
goto L34459;}}
else {
arg0 = (*((long *) (env_150X - 3L)));
arg1 = (i_151X - 1L);
goto L58767;}}}
break;
case 9 : {
long env_153X, b_154X;
env_153X = RSenvS;
b_154X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
RSvalS = (*((long *) ((env_153X - 3L) + (b_154X << 2L))));
if (RSvalS == 529L) {
arg0 = 2L;
arg1 = 1L;
goto L30695;}
else {
goto L34459;}}
break;
case 10 : {
long env_155X, b_156X;
env_155X = *((long *) (RSenvS - 3L));
b_156X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
RSvalS = (*((long *) ((env_155X - 3L) + (b_156X << 2L))));
if (RSvalS == 529L) {
arg0 = 1L;
arg1 = 1L;
goto L30695;}
else {
goto L34459;}}
break;
case 11 : {
long env_157X, b_158X;
env_157X = *((long *) ((*((long *) (RSenvS - 3L))) - 3L));
b_158X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
RSvalS = (*((long *) ((env_157X - 3L) + (b_158X << 2L))));
if (RSvalS == 529L) {
arg0 = 0L;
arg1 = 1L;
goto L30695;}
else {
goto L34459;}}
break;
case 12 : {
long b_159X, env_160X;
b_159X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
env_160X = RSenvS;
arg0 = env_160X;
arg1 = b_159X;
goto L35396;
L35396: {
long env_161X = arg0;
long i_162X = arg1;
if (i_162X == 0L) {
long b_163X;
b_163X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
*((long *) ((env_161X - 3L) + (b_163X << 2L))) = RSvalS;
RSvalS = 13L;
goto L34459;}
else {
arg0 = (*((long *) (env_161X - 3L)));
arg1 = (i_162X - 1L);
goto L35396;}}}
break;
case 13 : {
long b_164X, location_165X;
b_164X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
location_165X = *((long *) ((StemplateS - 3L) + (b_164X << 2L)));
RSvalS = (*((long *) (location_165X - 3L)));
if ((RSvalS & 255L) == 17L) {
arg0 = 72L;
arg1 = 1L;
arg2 = location_165X;
goto L38616;}
else {
goto L34459;}}
break;
case 14 : {
long b_166X, location_167X;
b_166X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
location_167X = *((long *) ((StemplateS - 3L) + (b_166X << 2L)));
if ((*((long *) (location_167X - 3L))) == 273L) {
arg0 = 82L;
arg1 = 1L;
arg2 = location_167X;
arg3 = RSvalS;
goto L38648;}
else {
*((long *) (location_167X - 3L)) = RSvalS;
RSvalS = 13L;
goto L34459;}}
break;
case 15 : {
long p_168X;
p_168X = RSenvS;
if (p_168X >= Sstack_beginS) {
if (p_168X <= Sstack_endS) {
long env_169X;
env_169X = RSenvS;
arg0 = env_169X;
arg1 = 0L;
goto L33701;
L33701: {
long env_170X = arg0;
long size_171X = arg1;
long size_172X, env_173X;
size_172X = size_171X + ((((((*((long *) ((env_170X - 3L) + -4L))) >> 7L)) + 3L) >> 2L) + 1L);
env_173X = *((long *) (env_170X - 3L));
if (env_173X >= Sstack_beginS) {
if (env_173X <= Sstack_endS) {
arg0 = env_173X;
arg1 = size_172X;
goto L33701;}
else {
arg0 = size_172X;
goto L33632;}}
else {
arg0 = size_172X;
goto L33632;}}
L33632: {
long space_174X = arg0;
if ((ShpS + (space_174X << 2L)) < SlimitS) {
arg0 = 9999999L;
goto L33648;}
else {
SlimitS = Snewspace_endS;
arg0 = 22L;
goto L29273;
L33682: {
long v_175X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_175X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 22L;
goto L24906;
L33690: {
long v_176X = arg0;
arg0 = v_176X;
goto L33648;}}}
L33648: {
if ((ShpS + (space_174X << 2L)) < SlimitS) {
arg0 = 0L;
goto L33634;}
else {
long v_177X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_177X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_177X;
goto L33634;}}
L33634: {
long key_178X = arg0;
long v_179X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_179X = save_env_in_heap(RSenvS, ScontS, key_178X, 0L);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
RSenvS = v_179X;
arg0 = 54321L;
goto L35739;}}}
else {
arg0 = 8888888L;
goto L35739;}}
else {
arg0 = 8888888L;
goto L35739;}
L35739: {
if ((ShpS + 12L) < SlimitS) {
arg0 = 9999999L;
goto L35823;}
else {
SlimitS = Snewspace_endS;
arg0 = 18L;
goto L29273;
L35857: {
long v_180X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_180X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 18L;
goto L24906;
L35865: {
long v_181X = arg0;
arg0 = v_181X;
goto L35823;}}}
L35823: {
if ((ShpS + 12L) < SlimitS) {
arg0 = 0L;
goto L35735;}
else {
long v_182X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_182X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_182X;
goto L35735;}}
L35735: {
long b_183X, a_184X, b_185X, new_186X;
b_183X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
a_184X = *((long *) ((StemplateS - 3L) + (b_183X << 2L)));
b_185X = RSenvS;
*((long *) ShpS) = 1038L;
ShpS = (ShpS + 4L);
new_186X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_186X - 3L)) = a_184X;
*((long *) ((new_186X - 3L) + 4L)) = b_185X;
RSvalS = new_186X;
goto L34459;}}}
break;
case 16 : {
*((long *) RSstackS) = RSvalS;
RSstackS = (RSstackS - 4L);
goto L34459;}
break;
case 17 : {
RSstackS = (RSstackS - -4L);
RSvalS = (*((long *) RSstackS));
goto L34459;}
break;
case 18 : {
long b_187X;
b_187X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
RSvalS = (*((long *) (RSstackS + ((1L + b_187X) << 2L))));
goto L34459;}
break;
case 19 : {
long b_188X;
b_188X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
*((long *) (RSstackS + ((1L + b_188X) << 2L))) = RSvalS;
goto L34459;}
break;
case 20 : {
if ((RSstackS - 276L) > Sstack_limitS) {
arg0 = 0L;
goto L35932;}
else {
arg0 = 2L;
arg1 = 69L;
goto L32883;
L36018: {
arg0 = 0L;
goto L35932;}}
L35932: {
long key_189X = arg0;
long b_190X, b_191X, b_192X;
b_190X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
b_191X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
b_192X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
arg0 = 1L;
arg1 = (RScode_pointerS + ((b_190X << 8L) + b_191X));
arg2 = b_192X;
arg3 = key_189X;
goto L25305;}}
break;
case 21 : {
SnargsS = ((*((unsigned char *) RScode_pointerS)));
goto START;}
break;
case 22 : {
long cont_193X, nargs_194X, start_arg_195X, start_loc_196X;
SnargsS = ((*((unsigned char *) RScode_pointerS)));
cont_193X = ScontS;
nargs_194X = SnargsS;
start_arg_195X = RSstackS + (nargs_194X << 2L);
start_loc_196X = (cont_193X - 7L) - 4L;
if (start_loc_196X <= start_arg_195X) {
arg0 = 9999999L;
goto L37544;}
else {
arg0 = start_loc_196X;
arg1 = start_arg_195X;
goto L37588;
L37588: {
long loc_197X = arg0;
long arg_198X = arg1;
if (arg_198X <= RSstackS) {
RSstackS = loc_197X;
arg0 = 54321L;
goto L37544;}
else {
*((long *) loc_197X) = (*((long *) arg_198X));
arg0 = (loc_197X - 4L);
arg1 = (arg_198X - 4L);
goto L37588;}}}
L37544: {
goto START;}}
break;
case 23 : {
long b_199X, b_200X;
b_199X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
b_200X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
if ((RSvalS & 255L) == 1L) {
RScode_pointerS = (RScode_pointerS + ((b_199X << 8L) + b_200X));
goto L34459;}
else {
goto L34459;}}
break;
case 24 : {
long b_201X, b_202X;
b_201X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
b_202X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
RScode_pointerS = (RScode_pointerS + ((b_201X << 8L) + b_202X));
goto L34459;}
break;
case 25 : {
if ((RSvalS & 3L) == 0L) {
long val_203X, b_204X;
val_203X = RSvalS >> 2L;
b_204X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
if (val_203X >= 0L) {
if (val_203X < b_204X) {
long b_205X, b_206X;
RScode_pointerS = (RScode_pointerS + (val_203X * 2L));
b_205X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
b_206X = (*((unsigned char *) RScode_pointerS));
RScode_pointerS = (RScode_pointerS + 1L);
arg0 = ((b_205X << 8L) + b_206X);
goto L39580;}
else {
arg0 = 0L;
goto L39574;}}
else {
arg0 = 0L;
goto L39574;}
L39574: {
arg0 = (b_204X * 2L);
goto L39580;}
L39580: {
long offset_207X = arg0;
RScode_pointerS = (RScode_pointerS + offset_207X);
goto L34459;}}
else {
arg0 = 71L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 26 : {
long cont_208X, tem_209X, pc_210X;
cont_208X = ScontS;
tem_209X = *((long *) ((ScontS - 3L) + 8L));
pc_210X = *((long *) ((ScontS - 3L) + 4L));
StemplateS = tem_209X;
RScode_pointerS = (((*((long *) (tem_209X - 3L))) - 3L) + (pc_210X >> 2L));
RSenvS = (*((long *) ((ScontS - 3L) + 12L)));
ScontS = (*((long *) (ScontS - 3L)));
RSstackS = ((cont_208X - 7L) + 16L);
goto L34459;}
break;
case 27 : {
long space_211X;
space_211X = (Sstack_endS - RSstackS) >> 2L;
if ((ShpS + (space_211X << 2L)) < SlimitS) {
arg0 = 9999999L;
goto L36447;}
else {
SlimitS = Snewspace_endS;
arg0 = 17L;
goto L29273;
L36481: {
long v_212X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_212X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 17L;
goto L24906;
L36489: {
long v_213X = arg0;
arg0 = v_213X;
goto L36447;}}}
L36447: {
if ((ShpS + (space_211X << 2L)) < SlimitS) {
arg0 = 0L;
goto L36416;}
else {
long v_214X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_214X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_214X;
goto L36416;}}
L36416: {
long key_215X = arg0;
long cont_216X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
cont_216X = preserve_continuation(ScontS, key_215X, 2L);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 2L;
arg1 = cont_216X;
goto L23036;
L36440: {
long v_217X = arg0;
ScontS = v_217X;
RSvalS = cont_216X;
goto L34459;}}}
break;
case 28 : {
RSstackS = (RSstackS - -4L);
arg0 = 0L;
arg1 = (*((long *) RSstackS));
goto L23036;}
break;
case 29 : {
long list_218X;
list_218X = RSvalS;
arg0 = list_218X;
arg1 = 0L;
arg2 = list_218X;
arg3 = 0L;
goto L58052;
L58052: {
long fast_219X = arg0;
long len_220X = arg1;
long slow_221X = arg2;
long move_slowP_222X = arg3;
if (25L == fast_219X) {
long nargs_223X;
nargs_223X = len_220X + ((*((unsigned char *) RScode_pointerS)));
if (nargs_223X <= 63L) {
arg0 = 0L;
goto L57796;}
else {
arg0 = (nargs_223X - 63L);
goto L57796;}
L57796: {
long overflow_224X = arg0;
long proc_225X, list_226X;
RSstackS = (RSstackS - -4L);
proc_225X = *((long *) RSstackS);
list_226X = RSvalS;
arg0 = (len_220X - overflow_224X);
arg1 = list_226X;
goto L57918;
L57918: {
long i_227X = arg0;
long l_228X = arg1;
if (i_227X <= 0L) {
RSvalS = proc_225X;
if (overflow_224X == 0L) {
SnargsS = nargs_223X;
goto START;}
else {
long space_229X;
*((long *) RSstackS) = l_228X;
RSstackS = (RSstackS - 4L);
space_229X = 3L * overflow_224X;
if ((ShpS + (space_229X << 2L)) < SlimitS) {
arg0 = 9999999L;
goto L34269;}
else {
SlimitS = Snewspace_endS;
arg0 = 20L;
goto L29273;
L34303: {
long v_230X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_230X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 20L;
goto L24906;
L34311: {
long v_231X = arg0;
arg0 = v_231X;
goto L34269;}}}
L34269: {
if ((ShpS + (space_229X << 2L)) < SlimitS) {
arg0 = 0L;
goto L34099;}
else {
long v_232X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_232X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_232X;
goto L34099;}}
L34099: {
long list_233X, a_234X, new_235X, v_236X;
RSstackS = (RSstackS - -4L);
list_233X = *((long *) RSstackS);
a_234X = *((long *) (list_233X - 3L));
*((long *) ShpS) = 1026L;
ShpS = (ShpS + 4L);
new_235X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_235X - 3L)) = a_234X;
*((long *) ((new_235X - 3L) + 4L)) = 25L;
v_236X = *((long *) ((list_233X - 3L) + 4L));
arg0 = v_236X;
arg1 = new_235X;
goto L34014;
L34014: {
long l_237X = arg0;
long last_238X = arg1;
if (25L == l_237X) {
*((long *) RSstackS) = new_235X;
RSstackS = (RSstackS - 4L);
SnargsS = 64L;
goto START;}
else {
long a_239X, new_240X;
a_239X = *((long *) (l_237X - 3L));
*((long *) ShpS) = 1026L;
ShpS = (ShpS + 4L);
new_240X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_240X - 3L)) = a_239X;
*((long *) ((new_240X - 3L) + 4L)) = 25L;
*((long *) ((last_238X - 3L) + 4L)) = new_240X;
arg0 = (*((long *) ((l_237X - 3L) + 4L)));
arg1 = new_240X;
goto L34014;}}}}}
else {
*((long *) RSstackS) = (*((long *) (l_228X - 3L)));
RSstackS = (RSstackS - 4L);
arg0 = (i_227X - 1L);
arg1 = (*((long *) ((l_228X - 3L) + 4L)));
goto L57918;}}}}
else {
if ((fast_219X & 3L) == 3L) {
if ((((*((long *) ((fast_219X - 3L) + -4L))) >> 2L) & 31L) == 0L) {
if (move_slowP_222X != 0) {
if (fast_219X == slow_221X) {
long proc_241X, v_242X;
RSstackS = (RSstackS - -4L);
proc_241X = *((long *) RSstackS);
v_242X = (*((unsigned char *) RScode_pointerS));
arg0 = 1L;
arg1 = 25L;
arg2 = v_242X;
goto L33770;
L57839: {
long args_243X = arg0;
arg0 = 9L;
arg1 = 0L;
arg2 = proc_241X;
arg3 = args_243X;
arg4 = RSvalS;
goto L38789;}}
else {
arg0 = (*((long *) ((fast_219X - 3L) + 4L)));
arg1 = (len_220X + 1L);
arg2 = (*((long *) ((slow_221X - 3L) + 4L)));
arg3 = 0L;
goto L58052;}}
else {
arg0 = (*((long *) ((fast_219X - 3L) + 4L)));
arg1 = (len_220X + 1L);
arg2 = slow_221X;
arg3 = 255L;
goto L58052;}}
else {
arg0 = 0L;
goto L58057;}}
else {
arg0 = 0L;
goto L58057;}
L58057: {
long proc_244X, v_245X;
RSstackS = (RSstackS - -4L);
proc_244X = *((long *) RSstackS);
v_245X = (*((unsigned char *) RScode_pointerS));
arg0 = 0L;
arg1 = 25L;
arg2 = v_245X;
goto L33770;
L58142: {
long args_246X = arg0;
arg0 = 8L;
arg1 = 0L;
arg2 = proc_244X;
arg3 = args_246X;
arg4 = RSvalS;
goto L38789;}}}}}
break;
case 30 : {
arg0 = 5L;
arg1 = 0L;
goto L30695;}
break;
case 31 : {
long cont_247X;
cont_247X = *((long *) (Sbottom_of_stackS - 3L));
if (cont_247X == 1L) {
long v_248X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_248X = Qps_error_0(((long)"startup procedure returned"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 1L;
arg1 = cont_247X;
goto L23036;}
else {
arg0 = 1L;
arg1 = cont_247X;
goto L23036;}}
break;
case 32 : {
long arg2_249X, x_250X;
RSstackS = (RSstackS - -4L);
arg2_249X = *((long *) RSstackS);
x_250X = RSvalS;
if (arg2_249X == x_250X) {
arg0 = 5L;
goto L46601;}
else {
arg0 = 1L;
goto L46601;}
L46601: {
long val_251X = arg0;
RSvalS = val_251X;
goto L34459;}}
break;
case 33 : {
long x_252X;
x_252X = RSvalS;
if ((x_252X & 3L) == 0L) {
arg0 = 5L;
goto L40149;}
else {
if ((x_252X & 3L) == 3L) {
if ((((*((long *) ((x_252X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
arg0 = 5L;
goto L40149;}
else {
arg0 = 1L;
goto L40149;}}
else {
arg0 = 1L;
goto L40149;}}
L40149: {
long val_253X = arg0;
RSvalS = val_253X;
goto L34459;}}
break;
case 34 : {
long x_254X;
x_254X = RSvalS;
if ((x_254X & 3L) == 0L) {
arg0 = 5L;
goto L59088;}
else {
if ((x_254X & 3L) == 3L) {
if ((((*((long *) ((x_254X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
arg0 = 35L;
arg1 = 0L;
arg2 = x_254X;
goto L38616;
L59116: {
long v_255X = arg0;
if (v_255X != 0) {
arg0 = 5L;
goto L59088;}
else {
arg0 = 1L;
goto L59088;}}}
else {
arg0 = 1L;
goto L59088;}}
else {
arg0 = 1L;
goto L59088;}}
L59088: {
long val_256X = arg0;
RSvalS = val_256X;
goto L34459;}}
break;
case 35 : {
long x_257X;
x_257X = RSvalS;
if ((x_257X & 3L) == 0L) {
arg0 = 5L;
goto L59146;}
else {
if ((x_257X & 3L) == 3L) {
if ((((*((long *) ((x_257X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
arg0 = 34L;
arg1 = 0L;
arg2 = x_257X;
goto L38616;
L59174: {
long v_258X = arg0;
if (v_258X != 0) {
arg0 = 5L;
goto L59146;}
else {
arg0 = 1L;
goto L59146;}}}
else {
arg0 = 1L;
goto L59146;}}
else {
arg0 = 1L;
goto L59146;}}
L59146: {
long val_259X = arg0;
RSvalS = val_259X;
goto L34459;}}
break;
case 36 : {
long x_260X;
x_260X = RSvalS;
if ((x_260X & 3L) == 0L) {
arg0 = 5L;
goto L59204;}
else {
if ((x_260X & 3L) == 3L) {
if ((((*((long *) ((x_260X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
arg0 = 33L;
arg1 = 0L;
arg2 = x_260X;
goto L38616;
L59232: {
long v_261X = arg0;
if (v_261X != 0) {
arg0 = 5L;
goto L59204;}
else {
arg0 = 1L;
goto L59204;}}}
else {
arg0 = 1L;
goto L59204;}}
else {
arg0 = 1L;
goto L59204;}}
L59204: {
long val_262X = arg0;
RSvalS = val_262X;
goto L34459;}}
break;
case 37 : {
long x_263X;
x_263X = RSvalS;
if ((x_263X & 3L) == 0L) {
arg0 = 5L;
goto L59262;}
else {
if ((x_263X & 3L) == 3L) {
if ((((*((long *) ((x_263X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
arg0 = 32L;
arg1 = 0L;
arg2 = x_263X;
goto L38616;
L59290: {
long v_264X = arg0;
if (v_264X != 0) {
arg0 = 5L;
goto L59262;}
else {
arg0 = 1L;
goto L59262;}}}
else {
arg0 = 1L;
goto L59262;}}
else {
arg0 = 1L;
goto L59262;}}
L59262: {
long val_265X = arg0;
RSvalS = val_265X;
goto L34459;}}
break;
case 38 : {
if ((RSvalS & 3L) == 0L) {
RSvalS = 5L;
goto L34459;}
else {
arg0 = 68L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 39 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 30L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 31L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 40 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 28L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 29L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 41 : {
long arg2_266X;
RSstackS = (RSstackS - -4L);
arg2_266X = *((long *) RSstackS);
if ((arg2_266X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long x_267X, z_268X;
x_267X = RSvalS;
z_268X = (arg2_266X >> 2L) + (x_267X >> 2L);
if (z_268X > 536870911L) {
arg0 = 18L;
arg1 = 0L;
arg2 = arg2_266X;
arg3 = x_267X;
goto L38648;}
else {
if (z_268X < -536870912L) {
arg0 = 18L;
arg1 = 0L;
arg2 = arg2_266X;
arg3 = x_267X;
goto L38648;}
else {
RSvalS = (z_268X << 2L);
goto L34459;}}}
else {
arg0 = 0L;
goto L70903;}}
else {
arg0 = 0L;
goto L70903;}
L70903: {
arg0 = 19L;
arg1 = 0L;
arg2 = arg2_266X;
arg3 = RSvalS;
goto L38648;}}
break;
case 42 : {
long arg2_269X;
RSstackS = (RSstackS - -4L);
arg2_269X = *((long *) RSstackS);
if ((arg2_269X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long x_270X, z_271X;
x_270X = RSvalS;
z_271X = (arg2_269X >> 2L) - (x_270X >> 2L);
if (z_271X > 536870911L) {
arg0 = 16L;
arg1 = 0L;
arg2 = arg2_269X;
arg3 = x_270X;
goto L38648;}
else {
if (z_271X < -536870912L) {
arg0 = 16L;
arg1 = 0L;
arg2 = arg2_269X;
arg3 = x_270X;
goto L38648;}
else {
RSvalS = (z_271X << 2L);
goto L34459;}}}
else {
arg0 = 0L;
goto L71235;}}
else {
arg0 = 0L;
goto L71235;}
L71235: {
arg0 = 17L;
arg1 = 0L;
arg2 = arg2_269X;
arg3 = RSvalS;
goto L38648;}}
break;
case 43 : {
long arg2_272X;
RSstackS = (RSstackS - -4L);
arg2_272X = *((long *) RSstackS);
if ((arg2_272X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long x_273X, a_274X, b_275X;
x_273X = RSvalS;
a_274X = arg2_272X >> 2L;
b_275X = x_273X >> 2L;
if (a_274X >= 0L) {
arg0 = a_274X;
goto L71618;}
else {
arg0 = (0L - a_274X);
goto L71618;}
L71618: {
long a_276X = arg0;
if (b_275X >= 0L) {
arg0 = b_275X;
goto L71620;}
else {
arg0 = (0L - b_275X);
goto L71620;}
L71620: {
long b_277X = arg0;
long lo_a_278X, lo_b_279X, hi_a_280X, hi_b_281X, lo_c_282X;
long mid_c_283X, c_284X;
lo_a_278X = 32767L & a_276X;
lo_b_279X = 32767L & b_277X;
hi_a_280X = 32767L & (a_276X >> 15L);
hi_b_281X = 32767L & (b_277X >> 15L);
/* ROBOT HACK */
lo_c_282X = small_multiply(lo_a_278X, lo_b_279X);
mid_c_283X = small_multiply(lo_a_278X, hi_b_281X)
+ small_multiply(lo_b_279X, hi_a_280X);
/* END ROBOT HACK */
c_284X = lo_c_282X + (mid_c_283X << 15L);
if (hi_a_280X > 0L) {
if (hi_b_281X > 0L) {
arg0 = 14L;
arg1 = 0L;
arg2 = arg2_272X;
arg3 = x_273X;
goto L38648;}
else {
arg0 = 0L;
goto L71652;}}
else {
arg0 = 0L;
goto L71652;}
L71652: {
if (lo_c_282X > 536870911L) {
arg0 = 14L;
arg1 = 0L;
arg2 = arg2_272X;
arg3 = x_273X;
goto L38648;}
else {
if (mid_c_283X > 65535L) {
arg0 = 14L;
arg1 = 0L;
arg2 = arg2_272X;
arg3 = x_273X;
goto L38648;}
else {
if (a_274X >= 0L) {
if (b_275X >= 0L) {
arg0 = 255L;
goto L71670;}
else {
arg0 = 0L;
goto L71656;}}
else {
if (b_275X < 0L) {
arg0 = 255L;
goto L71670;}
else {
arg0 = 0L;
goto L71656;}}
L71656: {
if ((0L - c_284X) < -536870912L) {
arg0 = 13L;
arg1 = 0L;
arg2 = arg2_272X;
arg3 = x_273X;
goto L38648;}
else {
RSvalS = ((0L - c_284X) << 2L);
goto L34459;}}
L71670: {
if (c_284X > 536870911L) {
arg0 = 12L;
arg1 = 0L;
arg2 = arg2_272X;
arg3 = x_273X;
goto L38648;}
else {
RSvalS = (c_284X << 2L);
goto L34459;}}}}}}}}
else {
arg0 = 0L;
goto L71567;}}
else {
arg0 = 0L;
goto L71567;}
L71567: {
arg0 = 15L;
arg1 = 0L;
arg2 = arg2_272X;
arg3 = RSvalS;
goto L38648;}}
break;
case 44 : { /* divide */
long arg2_285X;
RSstackS = (RSstackS - -4L);
arg2_285X = *((long *) RSstackS);
if ((arg2_285X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long x_286X;
x_286X = RSvalS;
if (x_286X == 0L) {
arg0 = 5L;
arg1 = 0L;
arg2 = arg2_285X;
arg3 = x_286X;
goto L38648;}
else {
long a_287X, b_288X;
a_287X = arg2_285X >> 2L;
b_288X = x_286X >> 2L;
if (a_287X >= 0L) {
arg0 = a_287X;
goto L72074;}
else {
arg0 = (0L - a_287X);
goto L72074;}
L72074: {
long a_289X = arg0;
if (b_288X >= 0L) {
arg0 = b_288X;
goto L72076;}
else {
arg0 = (0L - b_288X);
goto L72076;}
L72076: {
long b_290X = arg0;
long c_291X;
c_291X = a_289X / b_290X;
if (a_287X >= 0L) {
if (b_288X >= 0L) {
arg0 = 255L;
goto L72128;}
else {
arg0 = 0L;
goto L72080;}}
else {
if (b_288X < 0L) {
arg0 = 255L;
goto L72128;}
else {
arg0 = 0L;
goto L72080;}}
L72080: {
if (x_286X == 0L) {
arg0 = 9L;
arg1 = 0L;
arg2 = arg2_285X;
arg3 = x_286X;
goto L38648;}
else {
long a_292X, b_293X;
a_292X = arg2_285X >> 2L;
b_293X = x_286X >> 2L;
if (a_292X >= 0L) {
arg0 = a_292X;
goto L72091;}
else {
arg0 = (0L - a_292X);
goto L72091;}
L72091: {
long a_294X = arg0;
if (b_293X >= 0L) {
arg0 = b_293X;
goto L72093;}
else {
arg0 = (0L - b_293X);
goto L72093;}
L72093: {
long b_295X = arg0;
long c_296X;
c_296X = a_294X % b_295X;
if (a_292X >= 0L) {
arg0 = c_296X;
goto L72097;}
else {
arg0 = (0L - c_296X);
goto L72097;}
L72097: {
long n_297X = arg0;
if ((n_297X << 2L) == 0L) {
RSvalS = ((0L - c_291X) << 2L);
goto L34459;}
else {
arg0 = 10L;
arg1 = 0L;
arg2 = arg2_285X;
arg3 = x_286X;
goto L38648;}}}}}}
L72128: {
if (c_291X > 536870911L) {
arg0 = 6L;
arg1 = 0L;
arg2 = arg2_285X;
arg3 = x_286X;
goto L38648;}
else {
if (x_286X == 0L) {
arg0 = 7L;
arg1 = 0L;
arg2 = arg2_285X;
arg3 = x_286X;
goto L38648;}
else {
long a_298X, b_299X;
a_298X = arg2_285X >> 2L;
b_299X = x_286X >> 2L;
if (a_298X >= 0L) {
arg0 = a_298X;
goto L72138;}
else {
arg0 = (0L - a_298X);
goto L72138;}
L72138: {
long a_300X = arg0;
if (b_299X >= 0L) {
arg0 = b_299X;
goto L72140;}
else {
arg0 = (0L - b_299X);
goto L72140;}
L72140: {
long b_301X = arg0;
long c_302X;
c_302X = a_300X % b_301X;
if (a_298X >= 0L) {
arg0 = c_302X;
goto L72144;}
else {
arg0 = (0L - c_302X);
goto L72144;}
L72144: {
long n_303X = arg0;
if ((n_303X << 2L) == 0L) {
RSvalS = (c_291X << 2L);
goto L34459;}
else {
arg0 = 8L;
arg1 = 0L;
arg2 = arg2_285X;
arg3 = x_286X;
goto L38648;}}}}}}}}}}}
else {
arg0 = 0L;
goto L72022;}}
else {
arg0 = 0L;
goto L72022;}
L72022: {
arg0 = 11L;
arg1 = 0L;
arg2 = arg2_285X;
arg3 = RSvalS;
goto L38648;}}
break;
case 45 : {
long arg2_304X;
RSstackS = (RSstackS - -4L);
arg2_304X = *((long *) RSstackS);
if ((arg2_304X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long x_305X;
x_305X = RSvalS;
if (arg2_304X == x_305X) {
arg0 = 5L;
goto L46874;}
else {
arg0 = 1L;
goto L46874;}
L46874: {
long val_306X = arg0;
RSvalS = val_306X;
goto L34459;}}
else {
arg0 = 0L;
goto L46847;}}
else {
arg0 = 0L;
goto L46847;}
L46847: {
arg0 = 81L;
arg1 = 0L;
arg2 = arg2_304X;
arg3 = RSvalS;
goto L38648;}}
break;
case 46 : {
long arg2_307X;
RSstackS = (RSstackS - -4L);
arg2_307X = *((long *) RSstackS);
if ((arg2_307X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long x_308X;
x_308X = RSvalS;
if (arg2_307X < x_308X) {
arg0 = 5L;
goto L47168;}
else {
arg0 = 1L;
goto L47168;}
L47168: {
long val_309X = arg0;
RSvalS = val_309X;
goto L34459;}}
else {
arg0 = 0L;
goto L47141;}}
else {
arg0 = 0L;
goto L47141;}
L47141: {
arg0 = 80L;
arg1 = 0L;
arg2 = arg2_307X;
arg3 = RSvalS;
goto L38648;}}
break;
case 47 : {
long arg2_310X;
RSstackS = (RSstackS - -4L);
arg2_310X = *((long *) RSstackS);
if ((arg2_310X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long x_311X;
x_311X = RSvalS;
if (x_311X == 0L) {
arg0 = 2L;
arg1 = 0L;
arg2 = arg2_310X;
arg3 = x_311X;
goto L38648;}
else {
long a_312X, b_313X;
a_312X = arg2_310X >> 2L;
b_313X = x_311X >> 2L;
if (a_312X >= 0L) {
arg0 = a_312X;
goto L72615;}
else {
arg0 = (0L - a_312X);
goto L72615;}
L72615: {
long a_314X = arg0;
if (b_313X >= 0L) {
arg0 = b_313X;
goto L72617;}
else {
arg0 = (0L - b_313X);
goto L72617;}
L72617: {
long b_315X = arg0;
long c_316X;
c_316X = a_314X / b_315X;
if (a_312X >= 0L) {
if (b_313X >= 0L) {
arg0 = 255L;
goto L72629;}
else {
arg0 = 0L;
goto L72621;}}
else {
if (b_313X < 0L) {
arg0 = 255L;
goto L72629;}
else {
arg0 = 0L;
goto L72621;}}
L72621: {
RSvalS = ((0L - c_316X) << 2L);
goto L34459;}
L72629: {
if (c_316X > 536870911L) {
arg0 = 3L;
arg1 = 0L;
arg2 = arg2_310X;
arg3 = x_311X;
goto L38648;}
else {
RSvalS = (c_316X << 2L);
goto L34459;}}}}}}
else {
arg0 = 0L;
goto L72563;}}
else {
arg0 = 0L;
goto L72563;}
L72563: {
arg0 = 4L;
arg1 = 0L;
arg2 = arg2_310X;
arg3 = RSvalS;
goto L38648;}}
break;
case 48 : { /* remainder */
long arg2_317X;
RSstackS = (RSstackS - -4L);
arg2_317X = *((long *) RSstackS);
if ((arg2_317X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long x_318X;
x_318X = RSvalS;
if (x_318X == 0L) {
arg0 = 0L;
arg1 = 0L;
arg2 = arg2_317X;
arg3 = x_318X;
goto L38648;}
else {
long a_319X, b_320X;
a_319X = arg2_317X >> 2L;
b_320X = x_318X >> 2L;
if (a_319X >= 0L) {
arg0 = a_319X;
goto L73012;}
else {
arg0 = (0L - a_319X);
goto L73012;}
L73012: {
long a_321X = arg0;
if (b_320X >= 0L) {
arg0 = b_320X;
goto L73014;}
else {
arg0 = (0L - b_320X);
goto L73014;}
L73014: {
long b_322X = arg0;
long c_323X;
c_323X = a_321X % b_322X;
if (a_319X >= 0L) {
arg0 = c_323X;
goto L73018;}
else {
arg0 = (0L - c_323X);
goto L73018;}
L73018: {
long n_324X = arg0;
RSvalS = (n_324X << 2L);
goto L34459;}}}}}
else {
arg0 = 0L;
goto L72960;}}
else {
arg0 = 0L;
goto L72960;}
L72960: {
arg0 = 1L;
arg1 = 0L;
arg2 = arg2_317X;
arg3 = RSvalS;
goto L38648;}}
break;
case 49 : {
if ((RSvalS & 3L) == 0L) {
RSvalS = RSvalS;
goto L34459;}
else {
arg0 = 65L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 50 : {
if ((RSvalS & 3L) == 0L) {
RSvalS = RSvalS;
goto L34459;}
else {
arg0 = 64L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 51 : {
if ((RSvalS & 3L) == 0L) {
RSvalS = 4L;
goto L34459;}
else {
arg0 = 63L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 52 : {
if ((RSvalS & 3L) == 0L) {
RSvalS = RSvalS;
goto L34459;}
else {
arg0 = 67L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 53 : {
if ((RSvalS & 3L) == 0L) {
RSvalS = 0L;
goto L34459;}
else {
arg0 = 66L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 54 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 26L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 27L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 55 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 24L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 25L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 56 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 22L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 23L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 57 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 20L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 21L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 58 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 18L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 19L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 59 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 16L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 17L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 60 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 14L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 15L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 61 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 12L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 13L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 62 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 10L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 11L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 63 : {
if ((RSvalS & 3L) == 0L) {
long x_325X;
x_325X = RSvalS;
if (x_325X >= 0L) {
RSvalS = 0L;
goto L34459;}
else {
arg0 = 62L;
arg1 = 0L;
arg2 = x_325X;
goto L38616;}}
else {
arg0 = 61L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 64 : {
if ((RSvalS & 3L) == 0L) {
long x_326X;
x_326X = RSvalS;
if (x_326X >= 0L) {
arg0 = x_326X;
goto L41776;}
else {
arg0 = (0L - x_326X);
goto L41776;}
L41776: {
long r_327X = arg0;
if (r_327X > 536870911L) {
arg0 = 60L;
arg1 = 0L;
arg2 = x_326X;
goto L38616;}
else {
RSvalS = (r_327X << 2L);
goto L34459;}}}
else {
arg0 = 59L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 65 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 8L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 9L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 66 : {
if ((RSvalS & 3L) == 0L) {
arg0 = 6L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
else {
arg0 = 7L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 67 : {
if ((RSvalS & 3L) == 0L) {
RSvalS = ((~(RSvalS >> 2L)) << 2L);
goto L34459;}
else {
arg0 = 55L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 68 : {
long arg2_328X;
RSstackS = (RSstackS - -4L);
arg2_328X = *((long *) RSstackS);
if ((arg2_328X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
RSvalS = (((arg2_328X >> 2L) & (RSvalS >> 2L)) << 2L);
goto L34459;}
else {
arg0 = 0L;
goto L48039;}}
else {
arg0 = 0L;
goto L48039;}
L48039: {
arg0 = 77L;
arg1 = 0L;
arg2 = arg2_328X;
arg3 = RSvalS;
goto L38648;}}
break;
case 69 : {
long arg2_329X;
RSstackS = (RSstackS - -4L);
arg2_329X = *((long *) RSstackS);
if ((arg2_329X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
RSvalS = (((arg2_329X >> 2L) | (RSvalS >> 2L)) << 2L);
goto L34459;}
else {
arg0 = 0L;
goto L48324;}}
else {
arg0 = 0L;
goto L48324;}
L48324: {
arg0 = 76L;
arg1 = 0L;
arg2 = arg2_329X;
arg3 = RSvalS;
goto L38648;}}
break;
case 70 : {
long arg2_330X;
RSstackS = (RSstackS - -4L);
arg2_330X = *((long *) RSstackS);
if ((arg2_330X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
RSvalS = (((arg2_330X >> 2L) ^ (RSvalS >> 2L)) << 2L);
goto L34459;}
else {
arg0 = 0L;
goto L48609;}}
else {
arg0 = 0L;
goto L48609;}
L48609: {
arg0 = 75L;
arg1 = 0L;
arg2 = arg2_330X;
arg3 = RSvalS;
goto L38648;}}
break;
case 71 : {
long arg2_331X;
RSstackS = (RSstackS - -4L);
arg2_331X = *((long *) RSstackS);
if ((arg2_331X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long count_332X, value_333X;
count_332X = RSvalS >> 2L;
value_333X = arg2_331X >> 2L;
if (count_332X < 0L) {
/* PATCHED */
arg0 = (count_332X < -32L) ? 0L :
(value_333X >> (0L - count_332X));
goto L59979;}
else {
long result_334X;
/* PATCHED */
result_334X = (((count_332X > 32L) ? 0L :
value_333X << count_332X) << 2L) >> 2L;
if (value_333X == (result_334X >> count_332X)) {
if (value_333X >= 0L) {
if (result_334X >= 0L) {
arg0 = result_334X;
goto L59979;}
else {
arg0 = 0L;
goto L59927;}}
else {
if (result_334X < 0L) {
arg0 = result_334X;
goto L59979;}
else {
arg0 = 0L;
goto L59927;}}}
else {
arg0 = 0L;
goto L59927;}
L59927: {
arg0 = 56L;
arg1 = 0L;
arg2 = (value_333X << 2L);
arg3 = (count_332X << 2L);
goto L38648;
L60028: {
long v_335X = arg0;
arg0 = v_335X;
goto L59979;}}}
L59979: {
long x_336X = arg0;
RSvalS = (x_336X << 2L);
goto L34459;}}
else {
arg0 = 0L;
goto L59982;}}
else {
arg0 = 0L;
goto L59982;}
L59982: {
arg0 = 57L;
arg1 = 0L;
arg2 = arg2_331X;
arg3 = RSvalS;
goto L38648;}}
break;
case 72 : {
long x_337X;
x_337X = RSvalS & 255L;
if (x_337X == 9L) {
arg0 = 5L;
goto L42162;}
else {
arg0 = 1L;
goto L42162;}
L42162: {
long val_338X = arg0;
RSvalS = val_338X;
goto L34459;}}
break;
case 73 : {
long arg2_339X;
RSstackS = (RSstackS - -4L);
arg2_339X = *((long *) RSstackS);
if ((arg2_339X & 255L) == 9L) {
if ((RSvalS & 255L) == 9L) {
long x_340X;
x_340X = (RSvalS) >> 8L;
if (((arg2_339X) >> 8L) == x_340X) {
arg0 = 5L;
goto L47462;}
else {
arg0 = 1L;
goto L47462;}
L47462: {
long val_341X = arg0;
RSvalS = val_341X;
goto L34459;}}
else {
arg0 = 0L;
goto L47435;}}
else {
arg0 = 0L;
goto L47435;}
L47435: {
arg0 = 79L;
arg1 = 0L;
arg2 = arg2_339X;
arg3 = RSvalS;
goto L38648;}}
break;
case 74 : {
long arg2_342X;
RSstackS = (RSstackS - -4L);
arg2_342X = *((long *) RSstackS);
if ((arg2_342X & 255L) == 9L) {
if ((RSvalS & 255L) == 9L) {
long x_343X;
x_343X = (RSvalS) >> 8L;
if (((arg2_342X) >> 8L) < x_343X) {
arg0 = 5L;
goto L47764;}
else {
arg0 = 1L;
goto L47764;}
L47764: {
long val_344X = arg0;
RSvalS = val_344X;
goto L34459;}}
else {
arg0 = 0L;
goto L47737;}}
else {
arg0 = 0L;
goto L47737;}
L47737: {
arg0 = 78L;
arg1 = 0L;
arg2 = arg2_342X;
arg3 = RSvalS;
goto L38648;}}
break;
case 75 : {
if ((RSvalS & 255L) == 9L) {
RSvalS = (((RSvalS) >> 6L) & ~3L);
goto L34459;}
else {
arg0 = 58L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 76 : {
if ((RSvalS & 3L) == 0L) {
long x_345X;
x_345X = RSvalS >> 2L;
if (x_345X > 255L) {
arg0 = 255L;
goto L42474;}
else {
if (x_345X < 0L) {
arg0 = 255L;
goto L42474;}
else {
arg0 = x_345X;
goto L42503;}}
L42474: {
arg0 = 57L;
arg1 = 0L;
arg2 = (x_345X << 2L);
goto L38616;
L42482: {
long v_346X = arg0;
arg0 = v_346X;
goto L42503;}}
L42503: {
long x_347X = arg0;
RSvalS = ((((x_347X << 8L) + 8L)) + 1L);
goto L34459;}}
else {
arg0 = 56L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 77 : {
long x_348X;
x_348X = RSvalS;
if (x_348X == 21L) {
arg0 = 5L;
goto L42777;}
else {
arg0 = 1L;
goto L42777;}
L42777: {
long val_349X = arg0;
RSvalS = val_349X;
goto L34459;}}
break;
case 78 : {
long x_350X;
x_350X = RSvalS;
if ((x_350X & 3L) == 3L) {
if ((((*((long *) ((x_350X - 3L) + -4L))) >> 2L) & 31L) == 0L) {
arg0 = 5L;
goto L49302;}
else {
arg0 = 1L;
goto L49302;}}
else {
arg0 = 1L;
goto L49302;}
L49302: {
long val_351X = arg0;
RSvalS = val_351X;
goto L34459;}}
break;
case 79 : {
if ((ShpS + 12L) < SlimitS) {
arg0 = 9999999L;
goto L49589;}
else {
SlimitS = Snewspace_endS;
arg0 = 14L;
goto L29273;
L49623: {
long v_352X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_352X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 14L;
goto L24906;
L49631: {
long v_353X = arg0;
arg0 = v_353X;
goto L49589;}}}
L49589: {
if ((ShpS + 12L) < SlimitS) {
arg0 = 0L;
goto L49217;}
else {
long v_354X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_354X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_354X;
goto L49217;}}
L49217: {
long arg2_355X, x_356X, new_357X;
RSstackS = (RSstackS - -4L);
arg2_355X = *((long *) RSstackS);
x_356X = RSvalS;
*((long *) ShpS) = 1026L;
ShpS = (ShpS + 4L);
new_357X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_357X - 3L)) = arg2_355X;
*((long *) ((new_357X - 3L) + 4L)) = x_356X;
RSvalS = new_357X;
goto L34459;}}
break;
case 80 : {
long obj_358X;
obj_358X = RSvalS;
if ((obj_358X & 3L) == 3L) {
if ((((*((long *) ((obj_358X - 3L) + -4L))) >> 2L) & 31L) == 0L) {
RSvalS = (*((long *) (RSvalS - 3L)));
goto L34459;}
else {
arg0 = 0L;
goto L49087;}}
else {
arg0 = 0L;
goto L49087;}
L49087: {
arg0 = 41L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 81 : {
long obj_359X;
obj_359X = RSvalS;
if ((obj_359X & 3L) == 3L) {
if ((((*((long *) ((obj_359X - 3L) + -4L))) >> 2L) & 31L) == 0L) {
RSvalS = (*((long *) ((RSvalS - 3L) + 4L)));
goto L34459;}
else {
arg0 = 0L;
goto L48951;}}
else {
arg0 = 0L;
goto L48951;}
L48951: {
arg0 = 42L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 82 : {
long arg2_360X;
RSstackS = (RSstackS - -4L);
arg2_360X = *((long *) RSstackS);
if ((arg2_360X & 3L) == 3L) {
if ((((*((long *) ((arg2_360X - 3L) + -4L))) >> 2L) & 31L) == 0L) {
*((long *) (arg2_360X - 3L)) = RSvalS;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L48997;}}
else {
arg0 = 0L;
goto L48997;}
L48997: {
arg0 = 73L;
arg1 = 0L;
arg2 = arg2_360X;
arg3 = RSvalS;
goto L38648;}}
break;
case 83 : {
long arg2_361X;
RSstackS = (RSstackS - -4L);
arg2_361X = *((long *) RSstackS);
if ((arg2_361X & 3L) == 3L) {
if ((((*((long *) ((arg2_361X - 3L) + -4L))) >> 2L) & 31L) == 0L) {
*((long *) ((arg2_361X - 3L) + 4L)) = RSvalS;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L48863;}}
else {
arg0 = 0L;
goto L48863;}
L48863: {
arg0 = 74L;
arg1 = 0L;
arg2 = arg2_361X;
arg3 = RSvalS;
goto L38648;}}
break;
case 84 : {
long x_362X;
x_362X = RSvalS;
if ((x_362X & 3L) == 3L) {
if ((((*((long *) ((x_362X - 3L) + -4L))) >> 2L) & 31L) == 1L) {
arg0 = 5L;
goto L43260;}
else {
arg0 = 1L;
goto L43260;}}
else {
arg0 = 1L;
goto L43260;}
L43260: {
long val_363X = arg0;
RSvalS = val_363X;
goto L34459;}}
break;
case 85 : {
if ((ShpS + 8L) < SlimitS) {
arg0 = 9999999L;
goto L43469;}
else {
SlimitS = Snewspace_endS;
arg0 = 15L;
goto L29273;
L43503: {
long v_364X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_364X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 15L;
goto L24906;
L43511: {
long v_365X = arg0;
arg0 = v_365X;
goto L43469;}}}
L43469: {
if ((ShpS + 8L) < SlimitS) {
arg0 = 0L;
goto L43175;}
else {
long v_366X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_366X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_366X;
goto L43175;}}
L43175: {
long x_367X, new_368X;
x_367X = RSvalS;
*((long *) ShpS) = 518L;
ShpS = (ShpS + 4L);
new_368X = ShpS + 3L;
ShpS = (ShpS + 4L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_368X - 3L)) = x_367X;
RSvalS = new_368X;
goto L34459;}}
break;
case 86 : {
long obj_369X;
obj_369X = RSvalS;
if ((obj_369X & 3L) == 3L) {
if ((((*((long *) ((obj_369X - 3L) + -4L))) >> 2L) & 31L) == 1L) {
RSvalS = (*((long *) (RSvalS - 3L)));
goto L34459;}
else {
arg0 = 0L;
goto L43075;}}
else {
arg0 = 0L;
goto L43075;}
L43075: {
arg0 = 54L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 87 : {
long x_370X;
x_370X = RSvalS;
if ((x_370X & 3L) == 3L) {
if ((((*((long *) ((x_370X - 3L) + -4L))) >> 2L) & 31L) == 4L) {
arg0 = 5L;
goto L51528;}
else {
arg0 = 1L;
goto L51528;}}
else {
arg0 = 1L;
goto L51528;}
L51528: {
long val_371X = arg0;
RSvalS = val_371X;
goto L34459;}}
break;
case 88 : {
if ((ShpS + 12L) < SlimitS) {
arg0 = 9999999L;
goto L51815;}
else {
SlimitS = Snewspace_endS;
arg0 = 12L;
goto L29273;
L51849: {
long v_372X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_372X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 12L;
goto L24906;
L51857: {
long v_373X = arg0;
arg0 = v_373X;
goto L51815;}}}
L51815: {
if ((ShpS + 12L) < SlimitS) {
arg0 = 0L;
goto L51443;}
else {
long v_374X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_374X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_374X;
goto L51443;}}
L51443: {
long arg2_375X, x_376X, new_377X;
RSstackS = (RSstackS - -4L);
arg2_375X = *((long *) RSstackS);
x_376X = RSvalS;
*((long *) ShpS) = 1042L;
ShpS = (ShpS + 4L);
new_377X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_377X - 3L)) = arg2_375X;
*((long *) ((new_377X - 3L) + 4L)) = x_376X;
RSvalS = new_377X;
goto L34459;}}
break;
case 89 : {
long obj_378X;
obj_378X = RSvalS;
if ((obj_378X & 3L) == 3L) {
if ((((*((long *) ((obj_378X - 3L) + -4L))) >> 2L) & 31L) == 4L) {
RSvalS = (*((long *) ((RSvalS - 3L) + 4L)));
goto L34459;}
else {
arg0 = 0L;
goto L51179;}}
else {
arg0 = 0L;
goto L51179;}
L51179: {
arg0 = 38L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 90 : {
long obj_379X;
obj_379X = RSvalS;
if ((obj_379X & 3L) == 3L) {
if ((((*((long *) ((obj_379X - 3L) + -4L))) >> 2L) & 31L) == 4L) {
RSvalS = (*((long *) (RSvalS - 3L)));
goto L34459;}
else {
arg0 = 0L;
goto L51313;}}
else {
arg0 = 0L;
goto L51313;}
L51313: {
arg0 = 37L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 91 : {
long arg2_380X;
RSstackS = (RSstackS - -4L);
arg2_380X = *((long *) RSstackS);
if ((arg2_380X & 3L) == 3L) {
if ((((*((long *) ((arg2_380X - 3L) + -4L))) >> 2L) & 31L) == 4L) {
*((long *) (arg2_380X - 3L)) = RSvalS;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L51223;}}
else {
arg0 = 0L;
goto L51223;}
L51223: {
arg0 = 72L;
arg1 = 0L;
arg2 = arg2_380X;
arg3 = RSvalS;
goto L38648;}}
break;
case 92 : {
long obj_381X;
obj_381X = RSvalS;
if ((obj_381X & 3L) == 3L) {
if ((((*((long *) ((obj_381X - 3L) + -4L))) >> 2L) & 31L) == 4L) {
long x_382X, x_383X;
x_382X = RSvalS;
x_383X = (*((long *) (x_382X - 3L))) & 255L;
if (x_383X == 17L) {
if ((*((long *) (x_382X - 3L))) == 529L) {
arg0 = 5L;
goto L43766;}
else {
arg0 = 1L;
goto L43766;}}
else {
arg0 = 5L;
goto L43766;}
L43766: {
long val_384X = arg0;
RSvalS = val_384X;
goto L34459;}}
else {
arg0 = 0L;
goto L43724;}}
else {
arg0 = 0L;
goto L43724;}
L43724: {
arg0 = 53L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 93 : {
long arg2_385X;
RSstackS = (RSstackS - -4L);
arg2_385X = *((long *) RSstackS);
if ((arg2_385X & 3L) == 3L) {
if ((((*((long *) ((arg2_385X - 3L) + -4L))) >> 2L) & 31L) == 4L) {
long x_386X;
x_386X = RSvalS;
if (x_386X == 1L) {
arg0 = 255L;
goto L52328;}
else {
if (x_386X == 5L) {
arg0 = 255L;
goto L52328;}
else {
arg0 = 0L;
goto L52396;}}}
else {
arg0 = 0L;
goto L52396;}}
else {
arg0 = 0L;
goto L52396;}
L52396: {
arg0 = 71L;
arg1 = 0L;
arg2 = arg2_385X;
arg3 = RSvalS;
goto L38648;}
L52328: {
long b_387X;
b_387X = RSvalS;
if (b_387X == 1L) {
*((long *) (arg2_385X - 3L)) = 273L;
arg0 = 999999L;
goto L52373;}
else {
if (((*((long *) (arg2_385X - 3L))) & 255L) == 17L) {
*((long *) (arg2_385X - 3L)) = 529L;
arg0 = 999999L;
goto L52373;}
else {
arg0 = 8888888L;
goto L52373;}}
L52373: {
RSvalS = 13L;
goto L34459;}}}
break;
case 94 : {
long x_388X;
x_388X = RSvalS;
if ((x_388X & 3L) == 3L) {
if ((((*((long *) ((x_388X - 3L) + -4L))) >> 2L) & 31L) == 3L) {
arg0 = 5L;
goto L50562;}
else {
arg0 = 1L;
goto L50562;}}
else {
arg0 = 1L;
goto L50562;}
L50562: {
long val_389X = arg0;
RSvalS = val_389X;
goto L34459;}}
break;
case 95 : {
if ((ShpS + 12L) < SlimitS) {
arg0 = 9999999L;
goto L50849;}
else {
SlimitS = Snewspace_endS;
arg0 = 13L;
goto L29273;
L50883: {
long v_390X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_390X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 13L;
goto L24906;
L50891: {
long v_391X = arg0;
arg0 = v_391X;
goto L50849;}}}
L50849: {
if ((ShpS + 12L) < SlimitS) {
arg0 = 0L;
goto L50477;}
else {
long v_392X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_392X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_392X;
goto L50477;}}
L50477: {
long arg2_393X, x_394X, new_395X;
RSstackS = (RSstackS - -4L);
arg2_393X = *((long *) RSstackS);
x_394X = RSvalS;
*((long *) ShpS) = 1038L;
ShpS = (ShpS + 4L);
new_395X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_395X - 3L)) = arg2_393X;
*((long *) ((new_395X - 3L) + 4L)) = x_394X;
RSvalS = new_395X;
goto L34459;}}
break;
case 96 : {
long obj_396X;
obj_396X = RSvalS;
if ((obj_396X & 3L) == 3L) {
if ((((*((long *) ((obj_396X - 3L) + -4L))) >> 2L) & 31L) == 3L) {
RSvalS = (*((long *) ((RSvalS - 3L) + 4L)));
goto L34459;}
else {
arg0 = 0L;
goto L50295;}}
else {
arg0 = 0L;
goto L50295;}
L50295: {
arg0 = 40L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 97 : {
long obj_397X;
obj_397X = RSvalS;
if ((obj_397X & 3L) == 3L) {
if ((((*((long *) ((obj_397X - 3L) + -4L))) >> 2L) & 31L) == 3L) {
RSvalS = (*((long *) (RSvalS - 3L)));
goto L34459;}
else {
arg0 = 0L;
goto L50347;}}
else {
arg0 = 0L;
goto L50347;}
L50347: {
arg0 = 39L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 98 : {
long x_398X;
x_398X = RSvalS;
if ((x_398X & 3L) == 3L) {
if ((((*((long *) ((x_398X - 3L) + -4L))) >> 2L) & 31L) == 11L) {
arg0 = 5L;
goto L69511;}
else {
arg0 = 1L;
goto L69511;}}
else {
arg0 = 1L;
goto L69511;}
L69511: {
long val_399X = arg0;
RSvalS = val_399X;
goto L34459;}}
break;
case 99 : {
long arg2_400X;
RSstackS = (RSstackS - -4L);
arg2_400X = *((long *) RSstackS);
if ((arg2_400X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long init_401X, len_402X;
init_401X = RSvalS >> 2L;
len_402X = arg2_400X >> 2L;
if (len_402X >= 0L) {
if ((ShpS + ((1L + ((len_402X + 3L) >> 2L)) << 2L)) < SlimitS) {
long new_403X;
*((long *) ShpS) = ((((len_402X << 5L) + 11L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_403X = ShpS + 3L;
ShpS = (ShpS + (((len_402X + 3L) & ~3)));
if (len_402X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_403X;
goto L69850;}
else {
arg0 = new_403X;
goto L69850;}
L69850: {
long val_404X = arg0;
arg0 = (len_402X - 1L);
goto L69856;
L69856: {
long i_405X = arg0;
if (i_405X < 0L) {
RSvalS = val_404X;
goto L34459;}
else {
*((char *) ((val_404X - 3L) + i_405X)) = init_401X;
arg0 = (i_405X - 1L);
goto L69856;}}}}
else {
*((long *) ((SrootS - 3L) + 40L)) = init_401X;
SlimitS = Snewspace_endS;
arg0 = 0L;
goto L29273;
L69778: {
long v_406X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_406X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 0L;
goto L24906;
L69786: {
long temp_407X;
temp_407X = *((long *) ((SrootS - 3L) + 40L));
*((long *) ((SrootS - 3L) + 40L)) = 0L;
if ((ShpS + ((1L + ((len_402X + 3L) >> 2L)) << 2L)) < SlimitS) {
long new_408X;
*((long *) ShpS) = ((((len_402X << 5L) + 11L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_408X = ShpS + 3L;
ShpS = (ShpS + (((len_402X + 3L) & ~3)));
if (len_402X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_408X;
goto L69823;}
else {
arg0 = new_408X;
goto L69823;}
L69823: {
long val_409X = arg0;
arg0 = (len_402X - 1L);
goto L69829;
L69829: {
long i_410X = arg0;
if (i_410X < 0L) {
RSvalS = val_409X;
goto L34459;}
else {
*((char *) ((val_409X - 3L) + i_410X)) = temp_407X;
arg0 = (i_410X - 1L);
goto L69829;}}}}
else {
arg0 = 22L;
arg1 = 0L;
arg2 = (len_402X << 2L);
arg3 = temp_407X;
goto L38648;}}}}}
else {
arg0 = 23L;
arg1 = 0L;
arg2 = (len_402X << 2L);
arg3 = init_401X;
goto L38648;}}
else {
arg0 = 0L;
goto L69360;}}
else {
arg0 = 0L;
goto L69360;}
L69360: {
arg0 = 24L;
arg1 = 0L;
arg2 = arg2_400X;
arg3 = RSvalS;
goto L38648;}}
break;
case 100 : {
long obj_411X;
obj_411X = RSvalS;
if ((obj_411X & 3L) == 3L) {
if ((((*((long *) ((obj_411X - 3L) + -4L))) >> 2L) & 31L) == 11L) {
RSvalS = ((((*((long *) ((RSvalS - 3L) + -4L))) >> 7L)) << 2L);
goto L34459;}
else {
arg0 = 0L;
goto L69418;}}
else {
arg0 = 0L;
goto L69418;}
L69418: {
arg0 = 0L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 101 : {
long arg2_412X;
RSstackS = (RSstackS - -4L);
arg2_412X = *((long *) RSstackS);
if ((arg2_412X & 3L) == 3L) {
if ((((*((long *) ((arg2_412X - 3L) + -4L))) >> 2L) & 31L) == 11L) {
if ((RSvalS & 3L) == 0L) {
long index_413X, len_414X;
index_413X = RSvalS >> 2L;
len_414X = ((*((long *) ((arg2_412X - 3L) + -4L))) >> 7L);
if (index_413X >= 0L) {
if (index_413X < len_414X) {
RSvalS = (((*((unsigned char *) ((arg2_412X - 3L) + index_413X)))) << 2L);
goto L34459;}
else {
arg0 = 0L;
goto L70212;}}
else {
arg0 = 0L;
goto L70212;}
L70212: {
arg0 = 21L;
arg1 = 0L;
arg2 = arg2_412X;
arg3 = (index_413X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L69270;}}
else {
arg0 = 0L;
goto L69270;}}
else {
arg0 = 0L;
goto L69270;}
L69270: {
arg0 = 25L;
arg1 = 0L;
arg2 = arg2_412X;
arg3 = RSvalS;
goto L38648;}}
break;
case 102 : {
long arg2_415X, arg3_416X;
RSstackS = (RSstackS - -4L);
arg2_415X = *((long *) RSstackS);
RSstackS = (RSstackS - -4L);
arg3_416X = *((long *) RSstackS);
if ((arg3_416X & 3L) == 3L) {
if ((((*((long *) ((arg3_416X - 3L) + -4L))) >> 2L) & 31L) == 11L) {
if ((arg2_415X & 3L) == 0L) {
if ((RSvalS & 3L) == 0L) {
long val_417X, index_418X, len_419X;
val_417X = RSvalS >> 2L;
index_418X = arg2_415X >> 2L;
len_419X = ((*((long *) ((arg3_416X - 3L) + -4L))) >> 7L);
if (index_418X >= 0L) {
if (index_418X < len_419X) {
*((char *) ((arg3_416X - 3L) + index_418X)) = val_417X;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L70381;}}
else {
arg0 = 0L;
goto L70381;}
L70381: {
arg0 = 20L;
arg1 = 0L;
arg2 = arg3_416X;
arg3 = (index_418X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L69180;}}
else {
arg0 = 0L;
goto L69180;}}
else {
arg0 = 0L;
goto L69180;}}
else {
arg0 = 0L;
goto L69180;}
L69180: {
arg0 = 0L;
arg1 = 0L;
arg2 = arg3_416X;
arg3 = arg2_415X;
arg4 = RSvalS;
goto L38789;}}
break;
case 103 : {
long x_420X;
x_420X = RSvalS;
if ((x_420X & 3L) == 3L) {
if ((((*((long *) ((x_420X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
arg0 = 5L;
goto L67748;}
else {
arg0 = 1L;
goto L67748;}}
else {
arg0 = 1L;
goto L67748;}
L67748: {
long val_421X = arg0;
RSvalS = val_421X;
goto L34459;}}
break;
case 104 : {
long arg2_422X;
RSstackS = (RSstackS - -4L);
arg2_422X = *((long *) RSstackS);
if ((arg2_422X & 3L) == 0L) {
if ((RSvalS & 255L) == 9L) {
long x_423X, len_424X;
x_423X = (RSvalS) >> 8L;
len_424X = arg2_422X >> 2L;
if (len_424X >= 0L) {
if ((ShpS + ((1L + ((len_424X + 3L) >> 2L)) << 2L)) < SlimitS) {
long new_425X;
*((long *) ShpS) = ((((len_424X << 5L) + 10L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_425X = ShpS + 3L;
ShpS = (ShpS + (((len_424X + 3L) & ~3)));
if (len_424X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_425X;
goto L68089;}
else {
arg0 = new_425X;
goto L68089;}
L68089: {
long val_426X = arg0;
arg0 = (len_424X - 1L);
goto L68095;
L68095: {
long i_427X = arg0;
if (i_427X < 0L) {
RSvalS = val_426X;
goto L34459;}
else {
*((char *) ((val_426X - 3L) + i_427X)) = x_423X;
arg0 = (i_427X - 1L);
goto L68095;}}}}
else {
*((long *) ((SrootS - 3L) + 40L)) = x_423X;
SlimitS = Snewspace_endS;
arg0 = 1L;
goto L29273;
L68017: {
long v_428X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_428X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 1L;
goto L24906;
L68025: {
long temp_429X;
temp_429X = *((long *) ((SrootS - 3L) + 40L));
*((long *) ((SrootS - 3L) + 40L)) = 0L;
if ((ShpS + ((1L + ((len_424X + 3L) >> 2L)) << 2L)) < SlimitS) {
long new_430X;
*((long *) ShpS) = ((((len_424X << 5L) + 10L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_430X = ShpS + 3L;
ShpS = (ShpS + (((len_424X + 3L) & ~3)));
if (len_424X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_430X;
goto L68062;}
else {
arg0 = new_430X;
goto L68062;}
L68062: {
long val_431X = arg0;
arg0 = (len_424X - 1L);
goto L68068;
L68068: {
long i_432X = arg0;
if (i_432X < 0L) {
RSvalS = val_431X;
goto L34459;}
else {
*((char *) ((val_431X - 3L) + i_432X)) = temp_429X;
arg0 = (i_432X - 1L);
goto L68068;}}}}
else {
arg0 = 28L;
arg1 = 0L;
arg2 = (len_424X << 2L);
arg3 = temp_429X;
goto L38648;}}}}}
else {
arg0 = 29L;
arg1 = 0L;
arg2 = (len_424X << 2L);
arg3 = x_423X;
goto L38648;}}
else {
arg0 = 0L;
goto L67597;}}
else {
arg0 = 0L;
goto L67597;}
L67597: {
arg0 = 30L;
arg1 = 0L;
arg2 = arg2_422X;
arg3 = RSvalS;
goto L38648;}}
break;
case 105 : {
long obj_433X;
obj_433X = RSvalS;
if ((obj_433X & 3L) == 3L) {
if ((((*((long *) ((obj_433X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
RSvalS = ((((*((long *) ((RSvalS - 3L) + -4L))) >> 7L)) << 2L);
goto L34459;}
else {
arg0 = 0L;
goto L67655;}}
else {
arg0 = 0L;
goto L67655;}
L67655: {
arg0 = 1L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 106 : {
long arg2_434X;
RSstackS = (RSstackS - -4L);
arg2_434X = *((long *) RSstackS);
if ((arg2_434X & 3L) == 3L) {
if ((((*((long *) ((arg2_434X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
if ((RSvalS & 3L) == 0L) {
long index_435X, len_436X;
index_435X = RSvalS >> 2L;
len_436X = ((*((long *) ((arg2_434X - 3L) + -4L))) >> 7L);
if (index_435X >= 0L) {
if (index_435X < len_436X) {
RSvalS = ((((((*((unsigned char *) ((arg2_434X - 3L) + index_435X)))) << 8L) + 8L)) + 1L);
goto L34459;}
else {
arg0 = 0L;
goto L68451;}}
else {
arg0 = 0L;
goto L68451;}
L68451: {
arg0 = 27L;
arg1 = 0L;
arg2 = arg2_434X;
arg3 = (index_435X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L67507;}}
else {
arg0 = 0L;
goto L67507;}}
else {
arg0 = 0L;
goto L67507;}
L67507: {
arg0 = 31L;
arg1 = 0L;
arg2 = arg2_434X;
arg3 = RSvalS;
goto L38648;}}
break;
case 107 : {
long arg2_437X, arg3_438X;
RSstackS = (RSstackS - -4L);
arg2_437X = *((long *) RSstackS);
RSstackS = (RSstackS - -4L);
arg3_438X = *((long *) RSstackS);
if ((arg3_438X & 3L) == 3L) {
if ((((*((long *) ((arg3_438X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
if ((arg2_437X & 3L) == 0L) {
if ((RSvalS & 255L) == 9L) {
long x_439X, index_440X, len_441X;
x_439X = (RSvalS) >> 8L;
index_440X = arg2_437X >> 2L;
len_441X = ((*((long *) ((arg3_438X - 3L) + -4L))) >> 7L);
if (index_440X >= 0L) {
if (index_440X < len_441X) {
*((char *) ((arg3_438X - 3L) + index_440X)) = x_439X;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L68626;}}
else {
arg0 = 0L;
goto L68626;}
L68626: {
arg0 = 26L;
arg1 = 0L;
arg2 = arg3_438X;
arg3 = (index_440X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L67417;}}
else {
arg0 = 0L;
goto L67417;}}
else {
arg0 = 0L;
goto L67417;}}
else {
arg0 = 0L;
goto L67417;}
L67417: {
arg0 = 1L;
arg1 = 0L;
arg2 = arg3_438X;
arg3 = arg2_437X;
arg4 = RSvalS;
goto L38789;}}
break;
case 108 : {
long x_442X;
x_442X = RSvalS;
if ((x_442X & 3L) == 3L) {
if ((((*((long *) ((x_442X - 3L) + -4L))) >> 2L) & 31L) == 2L) {
arg0 = 5L;
goto L60792;}
else {
arg0 = 1L;
goto L60792;}}
else {
arg0 = 1L;
goto L60792;}
L60792: {
long val_443X = arg0;
RSvalS = val_443X;
goto L34459;}}
break;
case 109 : {
long arg2_444X;
RSstackS = (RSstackS - -4L);
arg2_444X = *((long *) RSstackS);
if ((arg2_444X & 3L) == 0L) {
long x_445X, len_446X;
x_445X = RSvalS;
len_446X = arg2_444X >> 2L;
if (len_446X >= 0L) {
if ((ShpS + ((len_446X + 1L) << 2L)) < SlimitS) {
long len_447X, new_448X;
len_447X = len_446X * 4L;
*((long *) ShpS) = ((((len_447X << 7L) + 10L)));
ShpS = (ShpS + 4L);
new_448X = ShpS + 3L;
ShpS = (ShpS + (((len_447X + 3L) & ~3)));
if (len_447X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_448X;
goto L61136;}
else {
arg0 = new_448X;
goto L61136;}
L61136: {
long val_449X = arg0;
arg0 = (len_446X - 1L);
goto L61142;
L61142: {
long i_450X = arg0;
if (i_450X < 0L) {
RSvalS = val_449X;
goto L34459;}
else {
*((long *) ((val_449X - 3L) + (i_450X << 2L))) = x_445X;
arg0 = (i_450X - 1L);
goto L61142;}}}}
else {
*((long *) ((SrootS - 3L) + 40L)) = x_445X;
SlimitS = Snewspace_endS;
arg0 = 5L;
goto L29273;
L61064: {
long v_451X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_451X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 5L;
goto L24906;
L61072: {
long temp_452X;
temp_452X = *((long *) ((SrootS - 3L) + 40L));
*((long *) ((SrootS - 3L) + 40L)) = 0L;
if ((ShpS + ((len_446X + 1L) << 2L)) < SlimitS) {
long len_453X, new_454X;
len_453X = len_446X * 4L;
*((long *) ShpS) = ((((len_453X << 7L) + 10L)));
ShpS = (ShpS + 4L);
new_454X = ShpS + 3L;
ShpS = (ShpS + (((len_453X + 3L) & ~3)));
if (len_453X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_454X;
goto L61109;}
else {
arg0 = new_454X;
goto L61109;}
L61109: {
long val_455X = arg0;
arg0 = (len_446X - 1L);
goto L61115;
L61115: {
long i_456X = arg0;
if (i_456X < 0L) {
RSvalS = val_455X;
goto L34459;}
else {
*((long *) ((val_455X - 3L) + (i_456X << 2L))) = temp_452X;
arg0 = (i_456X - 1L);
goto L61115;}}}}
else {
arg0 = 52L;
arg1 = 0L;
arg2 = (len_446X << 2L);
arg3 = temp_452X;
goto L38648;}}}}}
else {
arg0 = 53L;
arg1 = 0L;
arg2 = (len_446X << 2L);
arg3 = x_445X;
goto L38648;}}
else {
arg0 = 54L;
arg1 = 0L;
arg2 = arg2_444X;
arg3 = RSvalS;
goto L38648;}}
break;
case 110 : {
long obj_457X;
obj_457X = RSvalS;
if ((obj_457X & 3L) == 3L) {
if ((((*((long *) ((obj_457X - 3L) + -4L))) >> 2L) & 31L) == 2L) {
RSvalS = ((((((*((long *) ((RSvalS - 3L) + -4L))) >> 7L)) + 3L) & ~3));
goto L34459;}
else {
arg0 = 0L;
goto L60699;}}
else {
arg0 = 0L;
goto L60699;}
L60699: {
arg0 = 5L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 111 : {
long arg2_458X;
RSstackS = (RSstackS - -4L);
arg2_458X = *((long *) RSstackS);
if ((arg2_458X & 3L) == 3L) {
if ((((*((long *) ((arg2_458X - 3L) + -4L))) >> 2L) & 31L) == 2L) {
if ((RSvalS & 3L) == 0L) {
long index_459X, len_460X;
index_459X = RSvalS >> 2L;
len_460X = ((((*((long *) ((arg2_458X - 3L) + -4L))) >> 7L)) + 3L) >> 2L;
if (index_459X >= 0L) {
if (index_459X < len_460X) {
RSvalS = (*((long *) ((arg2_458X - 3L) + (index_459X << 2L))));
goto L34459;}
else {
arg0 = 0L;
goto L61480;}}
else {
arg0 = 0L;
goto L61480;}
L61480: {
arg0 = 51L;
arg1 = 0L;
arg2 = arg2_458X;
arg3 = (index_459X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L60551;}}
else {
arg0 = 0L;
goto L60551;}}
else {
arg0 = 0L;
goto L60551;}
L60551: {
arg0 = 55L;
arg1 = 0L;
arg2 = arg2_458X;
arg3 = RSvalS;
goto L38648;}}
break;
case 112 : {
long arg2_461X, arg3_462X;
RSstackS = (RSstackS - -4L);
arg2_461X = *((long *) RSstackS);
RSstackS = (RSstackS - -4L);
arg3_462X = *((long *) RSstackS);
if ((arg3_462X & 3L) == 3L) {
if ((((*((long *) ((arg3_462X - 3L) + -4L))) >> 2L) & 31L) == 2L) {
if ((arg2_461X & 3L) == 0L) {
long x_463X, index_464X, len_465X;
x_463X = RSvalS;
index_464X = arg2_461X >> 2L;
len_465X = ((((*((long *) ((arg3_462X - 3L) + -4L))) >> 7L)) + 3L) >> 2L;
if (index_464X >= 0L) {
if (index_464X < len_465X) {
*((long *) ((arg3_462X - 3L) + (index_464X << 2L))) = x_463X;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L61651;}}
else {
arg0 = 0L;
goto L61651;}
L61651: {
arg0 = 50L;
arg1 = 0L;
arg2 = arg3_462X;
arg3 = (index_464X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L60461;}}
else {
arg0 = 0L;
goto L60461;}}
else {
arg0 = 0L;
goto L60461;}
L60461: {
arg0 = 5L;
arg1 = 0L;
arg2 = arg3_462X;
arg3 = arg2_461X;
arg4 = RSvalS;
goto L38789;}}
break;
case 113 : {
long x_466X;
x_466X = RSvalS;
if ((x_466X & 3L) == 3L) {
if ((((*((long *) ((x_466X - 3L) + -4L))) >> 2L) & 31L) == 7L) {
arg0 = 5L;
goto L62531;}
else {
arg0 = 1L;
goto L62531;}}
else {
arg0 = 1L;
goto L62531;}
L62531: {
long val_467X = arg0;
RSvalS = val_467X;
goto L34459;}}
break;
case 114 : {
long arg2_468X;
RSstackS = (RSstackS - -4L);
arg2_468X = *((long *) RSstackS);
if ((arg2_468X & 3L) == 0L) {
long x_469X, len_470X;
x_469X = RSvalS;
len_470X = arg2_468X >> 2L;
if (len_470X >= 0L) {
if ((ShpS + ((len_470X + 1L) << 2L)) < SlimitS) {
long len_471X, new_472X;
len_471X = len_470X * 4L;
*((long *) ShpS) = ((((len_471X << 5L) + 7L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_472X = ShpS + 3L;
ShpS = (ShpS + (((len_471X + 3L) & ~3)));
if (len_471X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_472X;
goto L62875;}
else {
arg0 = new_472X;
goto L62875;}
L62875: {
long val_473X = arg0;
arg0 = (len_470X - 1L);
goto L62881;
L62881: {
long i_474X = arg0;
if (i_474X < 0L) {
RSvalS = val_473X;
goto L34459;}
else {
*((long *) ((val_473X - 3L) + (i_474X << 2L))) = x_469X;
arg0 = (i_474X - 1L);
goto L62881;}}}}
else {
*((long *) ((SrootS - 3L) + 40L)) = x_469X;
SlimitS = Snewspace_endS;
arg0 = 4L;
goto L29273;
L62803: {
long v_475X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_475X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 4L;
goto L24906;
L62811: {
long temp_476X;
temp_476X = *((long *) ((SrootS - 3L) + 40L));
*((long *) ((SrootS - 3L) + 40L)) = 0L;
if ((ShpS + ((len_470X + 1L) << 2L)) < SlimitS) {
long len_477X, new_478X;
len_477X = len_470X * 4L;
*((long *) ShpS) = ((((len_477X << 5L) + 7L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_478X = ShpS + 3L;
ShpS = (ShpS + (((len_477X + 3L) & ~3)));
if (len_477X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_478X;
goto L62848;}
else {
arg0 = new_478X;
goto L62848;}
L62848: {
long val_479X = arg0;
arg0 = (len_470X - 1L);
goto L62854;
L62854: {
long i_480X = arg0;
if (i_480X < 0L) {
RSvalS = val_479X;
goto L34459;}
else {
*((long *) ((val_479X - 3L) + (i_480X << 2L))) = temp_476X;
arg0 = (i_480X - 1L);
goto L62854;}}}}
else {
arg0 = 46L;
arg1 = 0L;
arg2 = (len_470X << 2L);
arg3 = temp_476X;
goto L38648;}}}}}
else {
arg0 = 47L;
arg1 = 0L;
arg2 = (len_470X << 2L);
arg3 = x_469X;
goto L38648;}}
else {
arg0 = 48L;
arg1 = 0L;
arg2 = arg2_468X;
arg3 = RSvalS;
goto L38648;}}
break;
case 115 : {
long obj_481X;
obj_481X = RSvalS;
if ((obj_481X & 3L) == 3L) {
if ((((*((long *) ((obj_481X - 3L) + -4L))) >> 2L) & 31L) == 7L) {
RSvalS = ((((((*((long *) ((RSvalS - 3L) + -4L))) >> 7L)) + 3L) & ~3));
goto L34459;}
else {
arg0 = 0L;
goto L62438;}}
else {
arg0 = 0L;
goto L62438;}
L62438: {
arg0 = 4L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 116 : {
long arg2_482X;
RSstackS = (RSstackS - -4L);
arg2_482X = *((long *) RSstackS);
if ((arg2_482X & 3L) == 3L) {
if ((((*((long *) ((arg2_482X - 3L) + -4L))) >> 2L) & 31L) == 7L) {
if ((RSvalS & 3L) == 0L) {
long index_483X, len_484X;
index_483X = RSvalS >> 2L;
len_484X = ((((*((long *) ((arg2_482X - 3L) + -4L))) >> 7L)) + 3L) >> 2L;
if (index_483X >= 0L) {
if (index_483X < len_484X) {
RSvalS = (*((long *) ((arg2_482X - 3L) + (index_483X << 2L))));
goto L34459;}
else {
arg0 = 0L;
goto L63219;}}
else {
arg0 = 0L;
goto L63219;}
L63219: {
arg0 = 45L;
arg1 = 0L;
arg2 = arg2_482X;
arg3 = (index_483X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L62290;}}
else {
arg0 = 0L;
goto L62290;}}
else {
arg0 = 0L;
goto L62290;}
L62290: {
arg0 = 49L;
arg1 = 0L;
arg2 = arg2_482X;
arg3 = RSvalS;
goto L38648;}}
break;
case 117 : {
long arg2_485X, arg3_486X;
RSstackS = (RSstackS - -4L);
arg2_485X = *((long *) RSstackS);
RSstackS = (RSstackS - -4L);
arg3_486X = *((long *) RSstackS);
if ((arg3_486X & 3L) == 3L) {
if ((((*((long *) ((arg3_486X - 3L) + -4L))) >> 2L) & 31L) == 7L) {
if ((arg2_485X & 3L) == 0L) {
long x_487X, index_488X, len_489X;
x_487X = RSvalS;
index_488X = arg2_485X >> 2L;
len_489X = ((((*((long *) ((arg3_486X - 3L) + -4L))) >> 7L)) + 3L) >> 2L;
if (index_488X >= 0L) {
if (index_488X < len_489X) {
*((long *) ((arg3_486X - 3L) + (index_488X << 2L))) = x_487X;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L63390;}}
else {
arg0 = 0L;
goto L63390;}
L63390: {
arg0 = 44L;
arg1 = 0L;
arg2 = arg3_486X;
arg3 = (index_488X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L62200;}}
else {
arg0 = 0L;
goto L62200;}}
else {
arg0 = 0L;
goto L62200;}
L62200: {
arg0 = 4L;
arg1 = 0L;
arg2 = arg3_486X;
arg3 = arg2_485X;
arg4 = RSvalS;
goto L38789;}}
break;
case 118 : {
long x_490X;
x_490X = RSvalS;
if ((x_490X & 3L) == 3L) {
if ((((*((long *) ((x_490X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
arg0 = 5L;
goto L64270;}
else {
arg0 = 1L;
goto L64270;}}
else {
arg0 = 1L;
goto L64270;}
L64270: {
long val_491X = arg0;
RSvalS = val_491X;
goto L34459;}}
break;
case 119 : {
long arg2_492X;
RSstackS = (RSstackS - -4L);
arg2_492X = *((long *) RSstackS);
if ((arg2_492X & 3L) == 0L) {
long x_493X, len_494X;
x_493X = RSvalS;
len_494X = arg2_492X >> 2L;
if (len_494X >= 0L) {
if ((ShpS + ((len_494X + 1L) << 2L)) < SlimitS) {
long len_495X, new_496X;
len_495X = len_494X * 4L;
*((long *) ShpS) = ((((len_495X << 5L) + 9L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_496X = ShpS + 3L;
ShpS = (ShpS + (((len_495X + 3L) & ~3)));
if (len_495X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_496X;
goto L64614;}
else {
arg0 = new_496X;
goto L64614;}
L64614: {
long val_497X = arg0;
arg0 = (len_494X - 1L);
goto L64620;
L64620: {
long i_498X = arg0;
if (i_498X < 0L) {
RSvalS = val_497X;
goto L34459;}
else {
*((long *) ((val_497X - 3L) + (i_498X << 2L))) = x_493X;
arg0 = (i_498X - 1L);
goto L64620;}}}}
else {
*((long *) ((SrootS - 3L) + 40L)) = x_493X;
SlimitS = Snewspace_endS;
arg0 = 3L;
goto L29273;
L64542: {
long v_499X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_499X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 3L;
goto L24906;
L64550: {
long temp_500X;
temp_500X = *((long *) ((SrootS - 3L) + 40L));
*((long *) ((SrootS - 3L) + 40L)) = 0L;
if ((ShpS + ((len_494X + 1L) << 2L)) < SlimitS) {
long len_501X, new_502X;
len_501X = len_494X * 4L;
*((long *) ShpS) = ((((len_501X << 5L) + 9L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_502X = ShpS + 3L;
ShpS = (ShpS + (((len_501X + 3L) & ~3)));
if (len_501X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_502X;
goto L64587;}
else {
arg0 = new_502X;
goto L64587;}
L64587: {
long val_503X = arg0;
arg0 = (len_494X - 1L);
goto L64593;
L64593: {
long i_504X = arg0;
if (i_504X < 0L) {
RSvalS = val_503X;
goto L34459;}
else {
*((long *) ((val_503X - 3L) + (i_504X << 2L))) = temp_500X;
arg0 = (i_504X - 1L);
goto L64593;}}}}
else {
arg0 = 40L;
arg1 = 0L;
arg2 = (len_494X << 2L);
arg3 = temp_500X;
goto L38648;}}}}}
else {
arg0 = 41L;
arg1 = 0L;
arg2 = (len_494X << 2L);
arg3 = x_493X;
goto L38648;}}
else {
arg0 = 42L;
arg1 = 0L;
arg2 = arg2_492X;
arg3 = RSvalS;
goto L38648;}}
break;
case 120 : {
long obj_505X;
obj_505X = RSvalS;
if ((obj_505X & 3L) == 3L) {
if ((((*((long *) ((obj_505X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
RSvalS = ((((((*((long *) ((RSvalS - 3L) + -4L))) >> 7L)) + 3L) & ~3));
goto L34459;}
else {
arg0 = 0L;
goto L64177;}}
else {
arg0 = 0L;
goto L64177;}
L64177: {
arg0 = 3L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 121 : {
long arg2_506X;
RSstackS = (RSstackS - -4L);
arg2_506X = *((long *) RSstackS);
if ((arg2_506X & 3L) == 3L) {
if ((((*((long *) ((arg2_506X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
if ((RSvalS & 3L) == 0L) {
long index_507X, len_508X;
index_507X = RSvalS >> 2L;
len_508X = ((((*((long *) ((arg2_506X - 3L) + -4L))) >> 7L)) + 3L) >> 2L;
if (index_507X >= 0L) {
if (index_507X < len_508X) {
RSvalS = (*((long *) ((arg2_506X - 3L) + (index_507X << 2L))));
goto L34459;}
else {
arg0 = 0L;
goto L64958;}}
else {
arg0 = 0L;
goto L64958;}
L64958: {
arg0 = 39L;
arg1 = 0L;
arg2 = arg2_506X;
arg3 = (index_507X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L64029;}}
else {
arg0 = 0L;
goto L64029;}}
else {
arg0 = 0L;
goto L64029;}
L64029: {
arg0 = 43L;
arg1 = 0L;
arg2 = arg2_506X;
arg3 = RSvalS;
goto L38648;}}
break;
case 122 : {
long arg2_509X, arg3_510X;
RSstackS = (RSstackS - -4L);
arg2_509X = *((long *) RSstackS);
RSstackS = (RSstackS - -4L);
arg3_510X = *((long *) RSstackS);
if ((arg3_510X & 3L) == 3L) {
if ((((*((long *) ((arg3_510X - 3L) + -4L))) >> 2L) & 31L) == 9L) {
if ((arg2_509X & 3L) == 0L) {
long x_511X, index_512X, len_513X;
x_511X = RSvalS;
index_512X = arg2_509X >> 2L;
len_513X = ((((*((long *) ((arg3_510X - 3L) + -4L))) >> 7L)) + 3L) >> 2L;
if (index_512X >= 0L) {
if (index_512X < len_513X) {
*((long *) ((arg3_510X - 3L) + (index_512X << 2L))) = x_511X;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L65129;}}
else {
arg0 = 0L;
goto L65129;}
L65129: {
arg0 = 38L;
arg1 = 0L;
arg2 = arg3_510X;
arg3 = (index_512X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L63939;}}
else {
arg0 = 0L;
goto L63939;}}
else {
arg0 = 0L;
goto L63939;}
L63939: {
arg0 = 3L;
arg1 = 0L;
arg2 = arg3_510X;
arg3 = arg2_509X;
arg4 = RSvalS;
goto L38789;}}
break;
case 123 : {
long x_514X;
x_514X = RSvalS;
if ((x_514X & 3L) == 3L) {
if ((((*((long *) ((x_514X - 3L) + -4L))) >> 2L) & 31L) == 8L) {
arg0 = 5L;
goto L66009;}
else {
arg0 = 1L;
goto L66009;}}
else {
arg0 = 1L;
goto L66009;}
L66009: {
long val_515X = arg0;
RSvalS = val_515X;
goto L34459;}}
break;
case 124 : {
long arg2_516X;
RSstackS = (RSstackS - -4L);
arg2_516X = *((long *) RSstackS);
if ((arg2_516X & 3L) == 0L) {
long x_517X, len_518X;
x_517X = RSvalS;
len_518X = arg2_516X >> 2L;
if (len_518X >= 0L) {
if ((ShpS + ((len_518X + 1L) << 2L)) < SlimitS) {
long len_519X, new_520X;
len_519X = len_518X * 4L;
*((long *) ShpS) = ((((len_519X << 5L) + 8L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_520X = ShpS + 3L;
ShpS = (ShpS + (((len_519X + 3L) & ~3)));
if (len_519X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_520X;
goto L66353;}
else {
arg0 = new_520X;
goto L66353;}
L66353: {
long val_521X = arg0;
arg0 = (len_518X - 1L);
goto L66359;
L66359: {
long i_522X = arg0;
if (i_522X < 0L) {
RSvalS = val_521X;
goto L34459;}
else {
*((long *) ((val_521X - 3L) + (i_522X << 2L))) = x_517X;
arg0 = (i_522X - 1L);
goto L66359;}}}}
else {
*((long *) ((SrootS - 3L) + 40L)) = x_517X;
SlimitS = Snewspace_endS;
arg0 = 2L;
goto L29273;
L66281: {
long v_523X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_523X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 2L;
goto L24906;
L66289: {
long temp_524X;
temp_524X = *((long *) ((SrootS - 3L) + 40L));
*((long *) ((SrootS - 3L) + 40L)) = 0L;
if ((ShpS + ((len_518X + 1L) << 2L)) < SlimitS) {
long len_525X, new_526X;
len_525X = len_518X * 4L;
*((long *) ShpS) = ((((len_525X << 5L) + 8L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_526X = ShpS + 3L;
ShpS = (ShpS + (((len_525X + 3L) & ~3)));
if (len_525X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_526X;
goto L66326;}
else {
arg0 = new_526X;
goto L66326;}
L66326: {
long val_527X = arg0;
arg0 = (len_518X - 1L);
goto L66332;
L66332: {
long i_528X = arg0;
if (i_528X < 0L) {
RSvalS = val_527X;
goto L34459;}
else {
*((long *) ((val_527X - 3L) + (i_528X << 2L))) = temp_524X;
arg0 = (i_528X - 1L);
goto L66332;}}}}
else {
arg0 = 34L;
arg1 = 0L;
arg2 = (len_518X << 2L);
arg3 = temp_524X;
goto L38648;}}}}}
else {
arg0 = 35L;
arg1 = 0L;
arg2 = (len_518X << 2L);
arg3 = x_517X;
goto L38648;}}
else {
arg0 = 36L;
arg1 = 0L;
arg2 = arg2_516X;
arg3 = RSvalS;
goto L38648;}}
break;
case 125 : {
long obj_529X;
obj_529X = RSvalS;
if ((obj_529X & 3L) == 3L) {
if ((((*((long *) ((obj_529X - 3L) + -4L))) >> 2L) & 31L) == 8L) {
RSvalS = ((((((*((long *) ((RSvalS - 3L) + -4L))) >> 7L)) + 3L) & ~3));
goto L34459;}
else {
arg0 = 0L;
goto L65916;}}
else {
arg0 = 0L;
goto L65916;}
L65916: {
arg0 = 2L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 126 : {
long arg2_530X;
RSstackS = (RSstackS - -4L);
arg2_530X = *((long *) RSstackS);
if ((arg2_530X & 3L) == 3L) {
if ((((*((long *) ((arg2_530X - 3L) + -4L))) >> 2L) & 31L) == 8L) {
if ((RSvalS & 3L) == 0L) {
long index_531X, len_532X;
index_531X = RSvalS >> 2L;
len_532X = ((((*((long *) ((arg2_530X - 3L) + -4L))) >> 7L)) + 3L) >> 2L;
if (index_531X >= 0L) {
if (index_531X < len_532X) {
RSvalS = (*((long *) ((arg2_530X - 3L) + (index_531X << 2L))));
goto L34459;}
else {
arg0 = 0L;
goto L66697;}}
else {
arg0 = 0L;
goto L66697;}
L66697: {
arg0 = 33L;
arg1 = 0L;
arg2 = arg2_530X;
arg3 = (index_531X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L65768;}}
else {
arg0 = 0L;
goto L65768;}}
else {
arg0 = 0L;
goto L65768;}
L65768: {
arg0 = 37L;
arg1 = 0L;
arg2 = arg2_530X;
arg3 = RSvalS;
goto L38648;}}
break;
case 127 : {
long arg2_533X, arg3_534X;
RSstackS = (RSstackS - -4L);
arg2_533X = *((long *) RSstackS);
RSstackS = (RSstackS - -4L);
arg3_534X = *((long *) RSstackS);
if ((arg3_534X & 3L) == 3L) {
if ((((*((long *) ((arg3_534X - 3L) + -4L))) >> 2L) & 31L) == 8L) {
if ((arg2_533X & 3L) == 0L) {
long x_535X, index_536X, len_537X;
x_535X = RSvalS;
index_536X = arg2_533X >> 2L;
len_537X = ((((*((long *) ((arg3_534X - 3L) + -4L))) >> 7L)) + 3L) >> 2L;
if (index_536X >= 0L) {
if (index_536X < len_537X) {
*((long *) ((arg3_534X - 3L) + (index_536X << 2L))) = x_535X;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L66868;}}
else {
arg0 = 0L;
goto L66868;}
L66868: {
arg0 = 32L;
arg1 = 0L;
arg2 = arg3_534X;
arg3 = (index_536X << 2L);
goto L38648;}}
else {
arg0 = 0L;
goto L65678;}}
else {
arg0 = 0L;
goto L65678;}}
else {
arg0 = 0L;
goto L65678;}
L65678: {
arg0 = 2L;
arg1 = 0L;
arg2 = arg3_534X;
arg3 = arg2_533X;
arg4 = RSvalS;
goto L38789;}}
break;
case 128 : {
if ((ShpS + 20L) < SlimitS) {
arg0 = 9999999L;
goto L53994;}
else {
SlimitS = Snewspace_endS;
arg0 = 10L;
goto L29273;
L54028: {
long v_538X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_538X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 10L;
goto L24906;
L54036: {
long v_539X = arg0;
arg0 = v_539X;
goto L53994;}}}
L53994: {
if ((ShpS + 20L) < SlimitS) {
arg0 = 0L;
goto L53526;}
else {
long v_540X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_540X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_540X;
goto L53526;}}
L53526: {
long arg2_541X;
RSstackS = (RSstackS - -4L);
arg2_541X = *((long *) RSstackS);
if ((arg2_541X & 3L) == 3L) {
if ((((*((long *) ((arg2_541X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
if ((RSvalS & 3L) == 0L) {
long arg2_542X, vec_543X, len_544X;
arg2_542X = RSvalS >> 2L;
vec_543X = Sopen_portsS;
len_544X = *((long *) (vec_543X + -4L));
arg0 = 0L;
goto L53785;
L53785: {
long i_545X = arg0;
if (i_545X >= len_544X) {
arg0 = 0L;
arg1 = arg2_541X;
goto L53330;}
else {
if (0L == (*((long *) (vec_543X + (i_545X * 4L))))) {
arg0 = i_545X;
arg1 = arg2_541X;
goto L53330;}
else {
arg0 = (i_545X + 1L);
goto L53785;}}}
L53330: {
long index_546X = arg0;
long filename_547X = arg1;
if (index_546X != 0) {
if (arg2_542X == 2L) {
arg0 = 2L;
arg1 = filename_547X;
goto L21896;
L53397: {
long spec_548X = arg0;
long v_549X;
v_549X = (long)ps_open((char *)spec_548X, (char *)((long)"w"));
arg0 = v_549X;
goto L53416;}}
else {
arg0 = 1L;
arg1 = filename_547X;
goto L21896;
L53409: {
long spec_550X = arg0;
long v_551X;
v_551X = (long)ps_open((char *)spec_550X, (char *)((long)"r"));
arg0 = v_551X;
goto L53416;}}
L53416: {
long port_552X = arg0;
if (port_552X != 0) {
long new_553X;
*((long *) ShpS) = 2070L;
ShpS = (ShpS + 4L);
new_553X = ShpS + 3L;
ShpS = (ShpS + 16L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_553X - 3L)) = (arg2_542X << 2L);
*((long *) ((new_553X - 3L) + 4L)) = (index_546X << 2L);
*((long *) ((new_553X - 3L) + 8L)) = 1L;
*((long *) ((new_553X - 3L) + 12L)) = filename_547X;
*((long *) (Sopen_portsS + (index_546X * 4L))) = port_552X;
*((long *) (Sopen_vm_portsS + (index_546X * 4L))) = new_553X;
RSvalS = new_553X;
goto L34459;}
else {
RSvalS = 1L;
goto L34459;}}}
else {
*((long *) ((SrootS - 3L) + 40L)) = filename_547X;
SlimitS = Snewspace_endS;
arg0 = 11L;
goto L29273;
L53742: {
long v_554X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_554X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 11L;
goto L24906;
L53750: {
long temp_555X, vec_556X, len_557X;
temp_555X = *((long *) ((SrootS - 3L) + 40L));
*((long *) ((SrootS - 3L) + 40L)) = 0L;
vec_556X = Sopen_portsS;
len_557X = *((long *) (vec_556X + -4L));
arg0 = 0L;
goto L53695;
L53695: {
long i_558X = arg0;
if (i_558X >= len_557X) {
arg0 = 0L;
goto L53440;}
else {
if (0L == (*((long *) (vec_556X + (i_558X * 4L))))) {
if (i_558X != 0) {
arg0 = i_558X;
arg1 = temp_555X;
goto L53330;}
else {
arg0 = i_558X;
goto L53440;}}
else {
arg0 = (i_558X + 1L);
goto L53695;}}
L53440: {
long v_559X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_559X = Qps_error_0(((long)"ran out of ports"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(v_559X);}}}}}}}
else {
arg0 = 0L;
goto L53497;}}
else {
arg0 = 0L;
goto L53497;}}
else {
arg0 = 0L;
goto L53497;}
L53497: {
arg0 = 70L;
arg1 = 0L;
arg2 = arg2_541X;
arg3 = RSvalS;
goto L38648;}}}
break;
case 129 : {
long obj_560X;
obj_560X = RSvalS;
if ((obj_560X & 3L) == 3L) {
if ((((*((long *) ((obj_560X - 3L) + -4L))) >> 2L) & 31L) == 5L) {
long v_561X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_561X = close_port(RSvalS);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
RSvalS = 13L;
goto L34459;}
else {
arg0 = 0L;
goto L44502;}}
else {
arg0 = 0L;
goto L44502;}
L44502: {
arg0 = 52L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 130 : {
long x_562X;
x_562X = RSvalS;
if ((x_562X & 3L) == 3L) {
if ((((*((long *) ((x_562X - 3L) + -4L))) >> 2L) & 31L) == 5L) {
if ((*((long *) (x_562X - 3L))) == 4L) {
arg0 = 5L;
goto L44147;}
else {
arg0 = 1L;
goto L44147;}}
else {
arg0 = 1L;
goto L44147;}}
else {
arg0 = 1L;
goto L44147;}
L44147: {
long val_563X = arg0;
RSvalS = val_563X;
goto L34459;}}
break;
case 131 : {
long x_564X;
x_564X = RSvalS;
if ((x_564X & 3L) == 3L) {
if ((((*((long *) ((x_564X - 3L) + -4L))) >> 2L) & 31L) == 5L) {
if ((*((long *) (x_564X - 3L))) == 8L) {
arg0 = 5L;
goto L44336;}
else {
arg0 = 1L;
goto L44336;}}
else {
arg0 = 1L;
goto L44336;}}
else {
arg0 = 1L;
goto L44336;}
L44336: {
long val_565X = arg0;
RSvalS = val_565X;
goto L34459;}}
break;
case 132 : {
long obj_566X;
obj_566X = RSvalS;
if ((obj_566X & 3L) == 3L) {
if ((((*((long *) ((obj_566X - 3L) + -4L))) >> 2L) & 31L) == 5L) {
if ((*((long *) (obj_566X - 3L))) == 4L) {
long x_567X;
x_567X = RSvalS;
if ((*((long *) ((x_567X - 3L) + 4L))) >= 0L) {
long c_568X;
c_568X = *((long *) ((x_567X - 3L) + 8L));
if ((c_568X & 255L) == 1L) {
long index_569X;
index_569X = (*((long *) ((x_567X - 3L) + 4L))) >> 2L;
if (index_569X >= 0L) {
arg0 = (*((long *) (Sopen_portsS + (index_569X * 4L))));
goto L44698;}
else {
arg0 = 0L;
goto L44698;}
L44698: {
long x_570X = arg0;
long ch_571X;
ch_571X = getc((FILE *)x_570X);
if (EOF == ch_571X) {
long v_572X;
clearerr((FILE *)x_570X);
arg0 = 21L;
goto L44719;}
else {
arg0 = ((((ch_571X << 8L) + 8L)) + 1L);
goto L44719;}}}
else {
*((long *) ((x_567X - 3L) + 8L)) = 1L;
arg0 = c_568X;
goto L44719;}
L44719: {
long val_573X = arg0;
RSvalS = val_573X;
goto L34459;}}
else {
arg0 = 51L;
arg1 = 0L;
arg2 = x_567X;
goto L38616;}}
else {
arg0 = 0L;
goto L44747;}}
else {
arg0 = 0L;
goto L44747;}}
else {
arg0 = 0L;
goto L44747;}
L44747: {
arg0 = 50L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 133 : {
long obj_574X;
obj_574X = RSvalS;
if ((obj_574X & 3L) == 3L) {
if ((((*((long *) ((obj_574X - 3L) + -4L))) >> 2L) & 31L) == 5L) {
if ((*((long *) (obj_574X - 3L))) == 4L) {
long x_575X;
x_575X = RSvalS;
if ((*((long *) ((x_575X - 3L) + 4L))) >= 0L) {
long c_576X;
c_576X = *((long *) ((x_575X - 3L) + 8L));
if ((c_576X & 255L) == 1L) {
long index_577X;
index_577X = (*((long *) ((x_575X - 3L) + 4L))) >> 2L;
if (index_577X >= 0L) {
arg0 = (*((long *) (Sopen_portsS + (index_577X * 4L))));
goto L45087;}
else {
arg0 = 0L;
goto L45087;}
L45087: {
long x_578X = arg0;
long ch_579X;
ch_579X = getc((FILE *)x_578X);
if (EOF == ch_579X) {
long v_580X;
clearerr((FILE *)x_578X);
arg0 = 21L;
goto L45089;}
else {
arg0 = ((((ch_579X << 8L) + 8L)) + 1L);
goto L45089;}
L45089: {
long c_581X = arg0;
*((long *) ((x_575X - 3L) + 8L)) = c_581X;
arg0 = c_581X;
goto L45104;}}}
else {
arg0 = c_576X;
goto L45104;}
L45104: {
long val_582X = arg0;
RSvalS = val_582X;
goto L34459;}}
else {
arg0 = 49L;
arg1 = 0L;
arg2 = x_575X;
goto L38616;}}
else {
arg0 = 0L;
goto L45132;}}
else {
arg0 = 0L;
goto L45132;}}
else {
arg0 = 0L;
goto L45132;}
L45132: {
arg0 = 48L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 134 : {
long arg2_583X;
RSstackS = (RSstackS - -4L);
arg2_583X = *((long *) RSstackS);
if ((arg2_583X & 255L) == 9L) {
long obj_584X;
obj_584X = RSvalS;
if ((obj_584X & 3L) == 3L) {
if ((((*((long *) ((obj_584X - 3L) + -4L))) >> 2L) & 31L) == 5L) {
if ((*((long *) (obj_584X - 3L))) == 8L) {
long x_585X, x_586X;
x_585X = RSvalS;
x_586X = (arg2_583X) >> 8L;
if ((*((long *) ((x_585X - 3L) + 4L))) >= 0L) {
long index_587X;
index_587X = (*((long *) ((x_585X - 3L) + 4L))) >> 2L;
if (index_587X >= 0L) {
arg0 = (*((long *) (Sopen_portsS + (index_587X * 4L))));
goto L54127;}
else {
arg0 = 0L;
goto L54127;}
L54127: {
long y_588X = arg0;
long v_589X;
putc(x_586X, (FILE *)y_588X);
RSvalS = 13L;
goto L34459;}}
else {
arg0 = 69L;
arg1 = 0L;
arg2 = x_586X;
arg3 = x_585X;
goto L38648;}}
else {
arg0 = 0L;
goto L54165;}}
else {
arg0 = 0L;
goto L54165;}}
else {
arg0 = 0L;
goto L54165;}}
else {
arg0 = 0L;
goto L54165;}
L54165: {
arg0 = 68L;
arg1 = 0L;
arg2 = arg2_583X;
arg3 = RSvalS;
goto L38648;}}
break;
case 135 : {
long arg2_590X;
RSstackS = (RSstackS - -4L);
arg2_590X = *((long *) RSstackS);
if ((arg2_590X & 3L) == 3L) {
if ((((*((long *) ((arg2_590X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
long obj_591X;
obj_591X = RSvalS;
if ((obj_591X & 3L) == 3L) {
if ((((*((long *) ((obj_591X - 3L) + -4L))) >> 2L) & 31L) == 5L) {
if ((*((long *) (obj_591X - 3L))) == 8L) {
long x_592X;
x_592X = RSvalS;
if ((*((long *) ((x_592X - 3L) + 4L))) >= 0L) {
long index_593X;
index_593X = (*((long *) ((x_592X - 3L) + 4L))) >> 2L;
if (index_593X >= 0L) {
arg0 = (*((long *) (Sopen_portsS + (index_593X * 4L))));
goto L54522;}
else {
arg0 = 0L;
goto L54522;}
L54522: {
long port_594X = arg0;
long count_595X, sent_596X;
count_595X = ((*((long *) ((arg2_590X - 3L) + -4L))) >> 7L);
sent_596X = fwrite((arg2_590X - 3L), sizeof(char),count_595X, (FILE *)port_594X);
if (sent_596X == count_595X) {
arg0 = 0L;
goto L54524;}
else {
long v_597X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_597X = Qps_error_0(((long)"block write did not send enough bytes"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 0L;
goto L54524;}
L54524: {
RSvalS = 13L;
goto L34459;}}}
else {
arg0 = 67L;
arg1 = 0L;
arg2 = arg2_590X;
arg3 = x_592X;
goto L38648;}}
else {
arg0 = 0L;
goto L54560;}}
else {
arg0 = 0L;
goto L54560;}}
else {
arg0 = 0L;
goto L54560;}}
else {
arg0 = 0L;
goto L54560;}}
else {
arg0 = 0L;
goto L54560;}
L54560: {
arg0 = 66L;
arg1 = 0L;
arg2 = arg2_590X;
arg3 = RSvalS;
goto L38648;}}
break;
case 136 : {
long obj_598X;
obj_598X = RSvalS;
if ((obj_598X & 3L) == 3L) {
if ((((*((long *) ((obj_598X - 3L) + -4L))) >> 2L) & 31L) == 5L) {
if ((*((long *) (obj_598X - 3L))) == 8L) {
long x_599X;
x_599X = RSvalS;
if ((*((long *) ((x_599X - 3L) + 4L))) >= 0L) {
long index_600X;
index_600X = (*((long *) ((x_599X - 3L) + 4L))) >> 2L;
if (index_600X >= 0L) {
arg0 = (*((long *) (Sopen_portsS + (index_600X * 4L))));
goto L45435;}
else {
arg0 = 0L;
goto L45435;}
L45435: {
long x_601X = arg0;
long v_602X;
fflush((FILE *)x_601X);
RSvalS = 13L;
goto L34459;}}
else {
arg0 = 47L;
arg1 = 0L;
arg2 = x_599X;
goto L38616;}}
else {
arg0 = 0L;
goto L45465;}}
else {
arg0 = 0L;
goto L45465;}}
else {
arg0 = 0L;
goto L45465;}
L45465: {
arg0 = 46L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 137 : {
RSvalS = 529L;
goto L34459;}
break;
case 138 : {
RSvalS = 13L;
goto L34459;}
break;
case 139 : {
Sexit_statusS = RSvalS;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(0L);}
break;
case 140 : {
arg0 = 45L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}
break;
case 141 : {
RSvalS = 1L;
goto L34459;}
break;
case 142 : { /* write-image */
long arg2_603X, arg3_604X;
RSstackS = (RSstackS - -4L);
arg2_603X = *((long *) RSstackS);
RSstackS = (RSstackS - -4L);
arg3_604X = *((long *) RSstackS);
if ((arg3_604X & 3L) == 3L) {
if ((((*((long *) ((arg3_604X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
long x_605X;
x_605X = RSvalS;
arg0 = 0L;
arg1 = arg3_604X;
goto L21896;
L58298: {
long spec_606X = arg0;
long port_607X;
port_607X = (long)ps_open((char *)spec_606X, (char *)((long)"w"));
if (port_607X != 0) {
long v_608X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_608X = clear_registers();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
RSvalS = arg2_603X;
SlimitS = Snewspace_endS;
arg0 = 6L;
goto L29273;
L58382: {
long v_609X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_609X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 6L;
goto L24906;
L58390: {
long restart_proc_610X;
restart_proc_610X = RSvalS;
arg0 = 2L;
goto L29190;
L29190: {
long i_611X = arg0;
if (i_611X == 100L) {
long v_612X, v_613X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_612X = write_string(((long)"This is a Scheme48 heap image file."), port_607X);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
putc(10L, (FILE *)port_607X);
if (port_607X == Scurrent_output_portS) {
long v_614X;
fflush((FILE *)port_607X);
arg0 = v_614X;
goto L28726;}
else {
arg0 = 9999999L;
goto L28726;}
L28726: {
long v_615X, v_616X;
putc(12L, (FILE *)port_607X);
putc(10L, (FILE *)port_607X);
if (port_607X == Scurrent_output_portS) {
long v_617X;
fflush((FILE *)port_607X);
arg0 = v_617X;
goto L28718;}
else {
arg0 = 9999999L;
goto L28718;}
L28718: {
arg0 = 12L;
arg1 = 1L;
goto L29129;
L29129: {
long x_618X = arg0;
long mask_619X = arg1;
if (x_618X < 10L) {
arg0 = 12L;
arg1 = mask_619X;
goto L29105;}
else {
arg0 = (x_618X / 10L);
arg1 = (mask_619X * 10L);
goto L29129;}}
L29105: {
long x_620X = arg0;
long mask_621X = arg1;
long v_622X;
putc(((x_620X / mask_621X) + 48L), (FILE *)port_607X);
if (mask_621X > 1L) {
arg0 = (x_620X % mask_621X);
arg1 = (mask_621X / 10L);
goto L29105;}
else {
long v_623X;
putc(10L, (FILE *)port_607X);
arg0 = 8L;
arg1 = 1L;
goto L29073;
L29073: {
long x_624X = arg0;
long mask_625X = arg1;
if (x_624X < 10L) {
arg0 = 8L;
arg1 = mask_625X;
goto L29049;}
else {
arg0 = (x_624X / 10L);
arg1 = (mask_625X * 10L);
goto L29073;}}
L29049: {
long x_626X = arg0;
long mask_627X = arg1;
long v_628X;
putc(((x_626X / mask_627X) + 48L), (FILE *)port_607X);
if (mask_627X > 1L) {
arg0 = (x_626X % mask_627X);
arg1 = (mask_627X / 10L);
goto L29049;}
else {
long v_629X;
putc(10L, (FILE *)port_607X);
arg0 = 4L;
arg1 = 1L;
goto L29017;
L29017: {
long x_630X = arg0;
long mask_631X = arg1;
if (x_630X < 10L) {
arg0 = 4L;
arg1 = mask_631X;
goto L28993;}
else {
arg0 = (x_630X / 10L);
arg1 = (mask_631X * 10L);
goto L29017;}}
L28993: {
long x_632X = arg0;
long mask_633X = arg1;
long v_634X;
putc(((x_632X / mask_633X) + 48L), (FILE *)port_607X);
if (mask_633X > 1L) {
arg0 = (x_632X % mask_633X);
arg1 = (mask_633X / 10L);
goto L28993;}
else {
long v_635X, x_636X;
putc(10L, (FILE *)port_607X);
x_636X = Snewspace_beginS >> 2L;
if (x_636X < 0L) {
long v_637X;
putc(45L, (FILE *)port_607X);
arg0 = (0L - x_636X);
goto L28925;}
else {
arg0 = x_636X;
goto L28925;}
L28925: {
long x_638X = arg0;
arg0 = x_638X;
arg1 = 1L;
goto L28954;
L28954: {
long x_639X = arg0;
long mask_640X = arg1;
if (x_639X < 10L) {
arg0 = x_638X;
arg1 = mask_640X;
goto L28930;}
else {
arg0 = (x_639X / 10L);
arg1 = (mask_640X * 10L);
goto L28954;}}
L28930: {
long x_641X = arg0;
long mask_642X = arg1;
long v_643X;
putc(((x_641X / mask_642X) + 48L), (FILE *)port_607X);
if (mask_642X > 1L) {
arg0 = (x_641X % mask_642X);
arg1 = (mask_642X / 10L);
goto L28930;}
else {
long v_644X, x_645X;
putc(10L, (FILE *)port_607X);
x_645X = ShpS >> 2L;
if (x_645X < 0L) {
long v_646X;
putc(45L, (FILE *)port_607X);
arg0 = (0L - x_645X);
goto L28862;}
else {
arg0 = x_645X;
goto L28862;}
L28862: {
long x_647X = arg0;
arg0 = x_647X;
arg1 = 1L;
goto L28891;
L28891: {
long x_648X = arg0;
long mask_649X = arg1;
if (x_648X < 10L) {
arg0 = x_647X;
arg1 = mask_649X;
goto L28867;}
else {
arg0 = (x_648X / 10L);
arg1 = (mask_649X * 10L);
goto L28891;}}
L28867: {
long x_650X = arg0;
long mask_651X = arg1;
long v_652X;
putc(((x_650X / mask_651X) + 48L), (FILE *)port_607X);
if (mask_651X > 1L) {
arg0 = (x_650X % mask_651X);
arg1 = (mask_651X / 10L);
goto L28867;}
else {
long v_653X;
putc(10L, (FILE *)port_607X);
if (restart_proc_610X < 0L) {
long v_654X;
putc(45L, (FILE *)port_607X);
arg0 = (0L - restart_proc_610X);
goto L28806;}
else {
arg0 = restart_proc_610X;
goto L28806;}
L28806: {
long x_655X = arg0;
arg0 = x_655X;
arg1 = 1L;
goto L28835;
L28835: {
long x_656X = arg0;
long mask_657X = arg1;
if (x_656X < 10L) {
arg0 = x_655X;
arg1 = mask_657X;
goto L28811;}
else {
arg0 = (x_656X / 10L);
arg1 = (mask_657X * 10L);
goto L28835;}}
L28811: {
long x_658X = arg0;
long mask_659X = arg1;
long v_660X;
putc(((x_658X / mask_659X) + 48L), (FILE *)port_607X);
if (mask_659X > 1L) {
arg0 = (x_658X % mask_659X);
arg1 = (mask_659X / 10L);
goto L28811;}
else {
long v_661X, v_662X, count_663X, sent_664X;
putc(10L, (FILE *)port_607X);
putc(12L, (FILE *)port_607X);
*((long *) ShpS) = 1L;
count_663X = (ShpS + 4L) - Snewspace_beginS;
sent_664X = fwrite(Snewspace_beginS, sizeof(char),count_663X, (FILE *)port_607X);
if (sent_664X == count_663X) {
arg0 = 0L;
goto L58274;}
else {
long v_665X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_665X = Qps_error_0(((long)"block write did not send enough bytes"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 0L;
goto L58274;}}}}}}}}}}}}}}}}}}}
else {
long port_666X;
port_666X = *((long *) (Sopen_vm_portsS + (i_611X * 4L)));
if ((port_666X & 255L) == 1L) {
arg0 = 9999999L;
goto L29201;}
else {
long v_667X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_667X = close_port_noisily(port_666X);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
*((long *) (Sopen_vm_portsS + (i_611X * 4L))) = 1L;
arg0 = 999999L;
goto L29201;}
L29201: {
arg0 = (i_611X + 1L);
goto L29190;}}}
L58274: {
long v_668X, save_669X, start_670X, v_671X;
fclose((FILE *)port_607X);
save_669X = *((long *) (SrootS - 3L));
start_670X = ShpS;
*((long *) (SrootS - 3L)) = x_605X;
SscanS = (SrootS - 3L);
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_671X = scan((SscanS + 4L));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
SscanS = start_670X;
goto L25694;
L25694: {
long v_672X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_672X = scan(ShpS);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
if (ShpS >= SlimitS) {
long v_673X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_673X = Qps_error_0(((long)"out of memory"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_673X;
goto L58264;}
else {
if (SscanS < ShpS) {
goto L25694;}
else {
long value_674X;
value_674X = *((long *) (SrootS - 3L));
*((long *) (SrootS - 3L)) = save_669X;
arg0 = value_674X;
goto L58264;}}}
L58264: {
long continue_proc_675X = arg0;
RSvalS = continue_proc_675X;
SnargsS = 0L;
goto START;}}}}}
else {
arg0 = 7L;
arg1 = 0L;
arg2 = arg3_604X;
arg3 = arg2_603X;
arg4 = x_605X;
goto L38789;}}}
else {
arg0 = 0L;
goto L58331;}}
else {
arg0 = 0L;
goto L58331;}
L58331: {
arg0 = 6L;
arg1 = 0L;
arg2 = arg3_604X;
arg3 = arg2_603X;
arg4 = RSvalS;
goto L38789;}}
break;
case 143 : {
RSvalS = 13L;
SlimitS = Snewspace_endS;
arg0 = 16L;
goto L29273;}
break;
case 144 : {
long obj_676X;
obj_676X = RSvalS;
if ((obj_676X & 3L) == 3L) {
if ((((*((long *) ((obj_676X - 3L) + -4L))) >> 2L) & 31L) == 2L) {
long x_677X, start_hp_678X;
x_677X = RSvalS;
start_hp_678X = ShpS;
SscanS = Snewspace_beginS;
goto L29555;
L29555: {
if (SscanS < start_hp_678X) {
long x_679X;
x_679X = *((long *) SscanS);
SscanS = (SscanS + 4L);
if ((x_679X & 3L) == 2L) {
if (((x_679X >> 2L) & 31L) >= 10L) {
SscanS = (SscanS + (((((x_679X >> 7L)) + 3L) & ~3)));
goto L29555;}
else {
arg0 = 0L;
goto L29597;}}
else {
arg0 = 0L;
goto L29597;}
L29597: {
if ((x_679X & 3L) == 3L) {
if ((((*((long *) ((x_679X - 3L) + -4L))) >> 2L) & 31L) == 1L) {
if ((ShpS + 12L) < SlimitS) {
long y_680X, s_681X, n_682X;
y_680X = (((((*((long *) ((x_677X - 3L) + -4L))) >> 7L)) + 3L) >> 2L) - 1L;
s_681X = *((long *) (x_679X - 3L));
n_682X = ((*((long *) ((s_681X - 3L) + -4L))) >> 7L);
arg0 = 0L;
arg1 = 0L;
goto L26248;
L26248: {
long i_683X = arg0;
long h_684X = arg1;
if (i_683X >= n_682X) {
long index_685X, bucket_686X;
index_685X = h_684X & y_680X;
bucket_686X = *((long *) ((x_677X - 3L) + (index_685X << 2L)));
arg0 = bucket_686X;
goto L26322;
L26322: {
long b_687X = arg0;
if (b_687X == 25L) {
long new_688X;
*((long *) ShpS) = 1026L;
ShpS = (ShpS + 4L);
new_688X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_688X - 3L)) = x_679X;
*((long *) ((new_688X - 3L) + 4L)) = bucket_686X;
*((long *) ((x_677X - 3L) + (index_685X << 2L))) = new_688X;
arg0 = x_679X;
goto L29633;}
else {
if (x_679X == (*((long *) (b_687X - 3L)))) {
arg0 = (*((long *) (b_687X - 3L)));
goto L29633;}
else {
arg0 = (*((long *) ((b_687X - 3L) + 4L)));
goto L26322;}}}}
else {
arg0 = (i_683X + 1L);
arg1 = (h_684X + ((*((unsigned char *) ((s_681X - 3L) + i_683X)))));
goto L26248;}}
L29633: {
goto L29555;}}
else {
arg0 = 0L;
goto L29743;
L29743: {
long i_689X = arg0;
if (i_689X == (((((*((long *) ((x_677X - 3L) + -4L))) >> 7L)) + 3L) >> 2L)) {
arg0 = 4L;
arg1 = 0L;
goto L30695;}
else {
*((long *) ((x_677X - 3L) + (i_689X << 2L))) = 25L;
arg0 = (i_689X + 1L);
goto L29743;}}}}
else {
arg0 = 0L;
goto L29803;}}
else {
arg0 = 0L;
goto L29803;}
L29803: {
goto L29555;}}}
else {
RSvalS = 13L;
goto L34459;}}}
else {
arg0 = 0L;
goto L45853;}}
else {
arg0 = 0L;
goto L45853;}
L45853: {
arg0 = 44L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 145 : {
RSvalS = Sdynamic_stateS;
goto L34459;}
break;
case 146 : {
Sdynamic_stateS = RSvalS;
RSvalS = 13L;
goto L34459;}
break;
case 147 : {
long obj_690X;
obj_690X = RSvalS;
if ((obj_690X & 3L) == 3L) {
if ((((*((long *) ((obj_690X - 3L) + -4L))) >> 2L) & 31L) == 3L) {
Sexception_handlerS = RSvalS;
goto L34459;}
else {
arg0 = 0L;
goto L39834;}}
else {
arg0 = 0L;
goto L39834;}
L39834: {
arg0 = 70L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 148 : {
long obj_691X;
obj_691X = RSvalS;
if ((obj_691X & 3L) == 3L) {
if ((((*((long *) ((obj_691X - 3L) + -4L))) >> 2L) & 31L) == 2L) {
if ((((((*((long *) ((RSvalS - 3L) + -4L))) >> 7L)) + 3L) >> 2L) < 2L) {
arg0 = 255L;
goto L39929;}
else {
Sinterrupt_handlersS = RSvalS;
goto L34459;}}
else {
arg0 = 255L;
goto L39929;}}
else {
arg0 = 255L;
goto L39929;}
L39929: {
arg0 = 69L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 149 : {
long temp_692X;
temp_692X = Senabled_interruptsS;
Senabled_interruptsS = (RSvalS >> 2L);
RSvalS = (temp_692X << 2L);
goto L34459;}
break;
case 150 : {
RSstackS = (RSstackS - -4L);
Senabled_interruptsS = ((*((long *) RSstackS)) >> 2L);
RSstackS = (RSstackS - -4L);
SnargsS = ((*((long *) RSstackS)) >> 2L);
RSstackS = (RSstackS - -4L);
RSvalS = (*((long *) RSstackS));
goto START;}
break;
case 151 : {
long arg2_693X;
RSstackS = (RSstackS - -4L);
arg2_693X = *((long *) RSstackS);
if ((arg2_693X & 3L) == 0L) {
long x_694X, key_695X;
x_694X = RSvalS;
key_695X = arg2_693X >> 2L;
if (key_695X < 0L) {
arg0 = 255L;
goto L54954;}
else {
if (key_695X >= 3L) {
arg0 = 255L;
goto L54954;}
else {
if (key_695X == 0L) {
arg0 = (((SlimitS - ShpS) & ~3));
goto L54999;}
else {
if (key_695X == 1L) {
long n_696X;
n_696X = ps_runtime();
arg0 = (n_696X << 2L);
goto L54999;}
else {
arg0 = 8888888L;
goto L54999;}}
L54999: {
long val_697X = arg0;
RSvalS = val_697X;
goto L34459;}}}
L54954: {
arg0 = 36L;
arg1 = 0L;
arg2 = (key_695X << 2L);
arg3 = x_694X;
goto L38616;}}
else {
arg0 = 65L;
arg1 = 0L;
arg2 = arg2_693X;
arg3 = RSvalS;
goto L38648;}}
break;
case 152 : {
long arg2_698X;
RSstackS = (RSstackS - -4L);
arg2_698X = *((long *) RSstackS);
if ((arg2_698X & 3L) == 0L) {
long x_699X, key_700X, return_value_701X;
x_699X = RSvalS;
key_700X = arg2_698X >> 2L;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return_value_701X = extended_vm(key_700X, x_699X);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
if ((return_value_701X & 255L) == 17L) {
arg0 = 64L;
arg1 = 0L;
arg2 = (key_700X << 2L);
arg3 = x_699X;
goto L38648;}
else {
RSvalS = return_value_701X;
goto L34459;}}
else {
arg0 = 63L;
arg1 = 0L;
arg2 = arg2_698X;
arg3 = RSvalS;
goto L38648;}}
break;
case 153 : {
long arg2_702X;
RSstackS = (RSstackS - -4L);
arg2_702X = *((long *) RSstackS);
if ((arg2_702X & 3L) == 0L) {
RSvalS = RSvalS;
Sexit_statusS = (arg2_702X >> 2L);
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(0L);}
else {
arg0 = 62L;
arg1 = 0L;
arg2 = arg2_702X;
arg3 = RSvalS;
goto L38648;}}
break;
case 154 : {
long arg2_703X;
RSstackS = (RSstackS - -4L);
arg2_703X = *((long *) RSstackS);
if ((arg2_703X & 3L) == 3L) {
if ((((*((long *) ((arg2_703X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
long obj_704X;
obj_704X = RSvalS;
if ((obj_704X & 3L) == 3L) {
if ((((*((long *) ((obj_704X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
arg0 = 0L;
arg1 = arg2_703X;
arg2 = RSvalS;
goto L15879;}
else {
arg0 = 0L;
goto L56016;}}
else {
arg0 = 0L;
goto L56016;}}
else {
arg0 = 0L;
goto L56016;}}
else {
arg0 = 0L;
goto L56016;}
L56016: {
arg0 = 61L;
arg1 = 0L;
arg2 = arg2_703X;
arg3 = RSvalS;
goto L38648;}}
break;
case 155 : {
long obj_705X;
obj_705X = RSvalS;
if ((obj_705X & 3L) == 3L) {
if ((((*((long *) ((obj_705X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
long x_706X, n_707X;
x_706X = RSvalS;
n_707X = ((*((long *) ((x_706X - 3L) + -4L))) >> 7L);
arg0 = 0L;
arg1 = 0L;
goto L46238;
L46238: {
long i_708X = arg0;
long h_709X = arg1;
if (i_708X >= n_707X) {
RSvalS = (h_709X << 2L);
goto L34459;}
else {
arg0 = (i_708X + 1L);
arg1 = (h_709X + ((*((unsigned char *) ((x_706X - 3L) + i_708X)))));
goto L46238;}}}
else {
arg0 = 0L;
goto L46190;}}
else {
arg0 = 0L;
goto L46190;}
L46190: {
arg0 = 43L;
arg1 = 0L;
arg2 = RSvalS;
goto L38616;}}
break;
case 156 : {
long space_710X;
space_710X = 1L + ((RSvalS + 3L) >> 2L);
if ((ShpS + (space_710X << 2L)) < SlimitS) {
arg0 = 9999999L;
goto L56876;}
else {
SlimitS = Snewspace_endS;
arg0 = 9L;
goto L29273;
L56910: {
long v_711X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_711X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 9L;
goto L24906;
L56918: {
long v_712X = arg0;
arg0 = v_712X;
goto L56876;}}}
L56876: {
if ((ShpS + (space_710X << 2L)) < SlimitS) {
arg0 = 0L;
goto L56474;}
else {
long v_713X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_713X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_713X;
goto L56474;}}
L56474: {
long arg2_714X;
RSstackS = (RSstackS - -4L);
arg2_714X = *((long *) RSstackS);
if ((RSvalS & 3L) == 0L) {
long arg2_715X;
arg2_715X = RSvalS >> 2L;
if ((arg2_714X & 3L) == 3L) {
if ((((*((long *) ((arg2_714X - 3L) + -4L))) >> 2L) & 31L) == 0L) {
arg0 = 255L;
goto L56640;}
else {
arg0 = 0L;
goto L56656;}}
else {
arg0 = 0L;
goto L56656;}
L56656: {
if (arg2_714X == 25L) {
arg0 = 255L;
goto L56640;}
else {
arg0 = 60L;
arg1 = 0L;
arg2 = arg2_714X;
arg3 = arg2_715X;
goto L38648;}}
L56640: {
long new_716X;
*((long *) ShpS) = ((((arg2_715X << 5L) + 10L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_716X = ShpS + 3L;
ShpS = (ShpS + (((arg2_715X + 3L) & ~3)));
if (arg2_715X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_716X;
goto L56416;}
else {
arg0 = new_716X;
goto L56416;}
L56416: {
long obj_717X = arg0;
arg0 = arg2_714X;
arg1 = (arg2_715X - 1L);
goto L56362;
L56362: {
long l_718X = arg0;
long i_719X = arg1;
if (i_719X < 0L) {
RSvalS = obj_717X;
goto L34459;}
else {
*((char *) ((obj_717X - 3L) + i_719X)) = (((*((long *) (l_718X - 3L)))) >> 8L);
arg0 = (*((long *) ((l_718X - 3L) + 4L)));
arg1 = (i_719X - 1L);
goto L56362;}}}}}
else {
arg0 = 59L;
arg1 = 0L;
arg2 = arg2_714X;
arg3 = RSvalS;
goto L38648;}}}
break;
case 157 : {
if ((ShpS + 20L) < SlimitS) {
arg0 = 9999999L;
goto L57283;}
else {
SlimitS = Snewspace_endS;
arg0 = 8L;
goto L29273;
L57317: {
long v_720X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_720X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 8L;
goto L24906;
L57325: {
long v_721X = arg0;
arg0 = v_721X;
goto L57283;}}}
L57283: {
if ((ShpS + 20L) < SlimitS) {
arg0 = 0L;
goto L57051;}
else {
long v_722X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_722X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_722X;
goto L57051;}}
L57051: {
long arg2_723X;
RSstackS = (RSstackS - -4L);
arg2_723X = *((long *) RSstackS);
if ((arg2_723X & 3L) == 3L) {
if ((((*((long *) ((arg2_723X - 3L) + -4L))) >> 2L) & 31L) == 10L) {
long obj_724X;
obj_724X = RSvalS;
if ((obj_724X & 3L) == 3L) {
if ((((*((long *) ((obj_724X - 3L) + -4L))) >> 2L) & 31L) == 2L) {
long x_725X, y_726X, n_727X;
x_725X = RSvalS;
y_726X = (((((*((long *) ((x_725X - 3L) + -4L))) >> 7L)) + 3L) >> 2L) - 1L;
n_727X = ((*((long *) ((arg2_723X - 3L) + -4L))) >> 7L);
arg0 = 0L;
arg1 = 0L;
goto L26181;
L26181: {
long i_728X = arg0;
long h_729X = arg1;
if (i_728X >= n_727X) {
long index_730X, bucket_731X;
index_730X = h_729X & y_726X;
bucket_731X = *((long *) ((x_725X - 3L) + (index_730X << 2L)));
arg0 = bucket_731X;
goto L26066;
L26066: {
long b_732X = arg0;
if (b_732X == 25L) {
long new_733X, new_734X;
*((long *) ShpS) = 518L;
ShpS = (ShpS + 4L);
new_733X = ShpS + 3L;
ShpS = (ShpS + 4L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_733X - 3L)) = arg2_723X;
*((long *) ShpS) = 1026L;
ShpS = (ShpS + 4L);
new_734X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_734X - 3L)) = new_733X;
*((long *) ((new_734X - 3L) + 4L)) = bucket_731X;
*((long *) ((x_725X - 3L) + (index_730X << 2L))) = new_734X;
arg0 = new_733X;
goto L56991;}
else {
long v_735X;
v_735X = *((long *) ((*((long *) (b_732X - 3L))) - 3L));
arg0 = 1L;
arg1 = arg2_723X;
arg2 = v_735X;
goto L15879;
L26003: {
long v_736X = arg0;
if (v_736X != 0) {
arg0 = (*((long *) (b_732X - 3L)));
goto L56991;}
else {
arg0 = (*((long *) ((b_732X - 3L) + 4L)));
goto L26066;}}}}}
else {
arg0 = (i_728X + 1L);
arg1 = (h_729X + ((*((unsigned char *) ((arg2_723X - 3L) + i_728X)))));
goto L26181;}}
L56991: {
long val_737X = arg0;
RSvalS = val_737X;
goto L34459;}}
else {
arg0 = 0L;
goto L57016;}}
else {
arg0 = 0L;
goto L57016;}}
else {
arg0 = 0L;
goto L57016;}}
else {
arg0 = 0L;
goto L57016;}
L57016: {
arg0 = 58L;
arg1 = 0L;
arg2 = arg2_723X;
arg3 = RSvalS;
goto L38648;}}}
break;
case 158 : {
if ((ShpS + 24L) < SlimitS) {
arg0 = 9999999L;
goto L57626;}
else {
SlimitS = Snewspace_endS;
arg0 = 7L;
goto L29273;
L57660: {
long v_738X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_738X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 7L;
goto L24906;
L57668: {
long v_739X = arg0;
arg0 = v_739X;
goto L57626;}}}
L57626: {
if ((ShpS + 24L) < SlimitS) {
arg0 = 0L;
goto L57451;}
else {
long v_740X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_740X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_740X;
goto L57451;}}
L57451: {
long arg2_741X, x_742X, y_743X, s_744X, n_745X;
RSstackS = (RSstackS - -4L);
arg2_741X = *((long *) RSstackS);
x_742X = RSvalS;
y_743X = (((((*((long *) ((arg2_741X - 3L) + -4L))) >> 7L)) + 3L) >> 2L) - 1L;
s_744X = *((long *) (x_742X - 3L));
n_745X = ((*((long *) ((s_744X - 3L) + -4L))) >> 7L);
arg0 = 0L;
arg1 = 0L;
goto L26466;
L26466: {
long i_746X = arg0;
long h_747X = arg1;
if (i_746X >= n_745X) {
long index_748X, bucket_749X;
index_748X = h_747X & y_743X;
bucket_749X = *((long *) ((arg2_741X - 3L) + (index_748X << 2L)));
arg0 = bucket_749X;
goto L26598;
L26598: {
long b_750X = arg0;
if (b_750X == 25L) {
long new_751X, new_752X;
*((long *) ShpS) = 1042L;
ShpS = (ShpS + 4L);
new_751X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_751X - 3L)) = 273L;
*((long *) ((new_751X - 3L) + 4L)) = x_742X;
*((long *) ShpS) = 1026L;
ShpS = (ShpS + 4L);
new_752X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_752X - 3L)) = new_751X;
*((long *) ((new_752X - 3L) + 4L)) = bucket_749X;
*((long *) ((arg2_741X - 3L) + (index_748X << 2L))) = new_752X;
arg0 = new_751X;
goto L57478;}
else {
if (x_742X == (*((long *) (((*((long *) (b_750X - 3L))) - 3L) + 4L)))) {
arg0 = (*((long *) (b_750X - 3L)));
goto L57478;}
else {
arg0 = (*((long *) ((b_750X - 3L) + 4L)));
goto L26598;}}}}
else {
arg0 = (i_746X + 1L);
arg1 = (h_747X + ((*((unsigned char *) ((s_744X - 3L) + i_746X)))));
goto L26466;}}
L57478: {
long val_753X = arg0;
RSvalS = val_753X;
goto L34459;}}}
break;
}
L38789: {
long c_754X = arg0;
long args_755X = arg1;
long a1_756X = arg2;
long a2_757X = arg3;
long a3_758X = arg4;
arg0 = 6L;
arg1 = args_755X;
goto L30695;
L38810: {
*((long *) RSstackS) = a1_756X;
RSstackS = (RSstackS - 4L);
*((long *) RSstackS) = a2_757X;
RSstackS = (RSstackS - 4L);
*((long *) RSstackS) = a3_758X;
RSstackS = (RSstackS - 4L);
arg0 = 6L;
arg1 = 3L;
goto L37702;
L38812: {
long ret_val_759X = arg0;
switch (c_754X) {
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 : {
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(ret_val_759X);}
break;
}}}}
L38648: {
long c_760X = arg0;
long args_761X = arg1;
long a1_762X = arg2;
long a2_763X = arg3;
arg0 = 7L;
arg1 = args_761X;
goto L30695;
L38665: {
*((long *) RSstackS) = a1_762X;
RSstackS = (RSstackS - 4L);
*((long *) RSstackS) = a2_763X;
RSstackS = (RSstackS - 4L);
arg0 = 8L;
arg1 = 2L;
goto L37702;
L38667: {
long ret_val_764X = arg0;
switch (c_760X) {
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 12 :
case 13 :
case 14 :
case 15 :
case 16 :
case 17 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 23 :
case 24 :
case 25 :
case 26 :
case 27 :
case 28 :
case 29 :
case 30 :
case 31 :
case 32 :
case 33 :
case 34 :
case 35 :
case 36 :
case 37 :
case 38 :
case 39 :
case 40 :
case 41 :
case 42 :
case 43 :
case 44 :
case 45 :
case 46 :
case 47 :
case 48 :
case 49 :
case 50 :
case 51 :
case 52 :
case 53 :
case 54 :
case 55 : {
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(ret_val_764X);}
break;
case 56 : {
arg0 = ret_val_764X;
goto L60028;}
break;
case 57 :
case 58 :
case 59 :
case 60 :
case 61 :
case 62 :
case 63 :
case 64 :
case 65 :
case 66 :
case 67 :
case 68 :
case 69 :
case 70 :
case 71 :
case 72 :
case 73 :
case 74 :
case 75 :
case 76 :
case 77 :
case 78 :
case 79 :
case 80 :
case 81 :
case 82 : {
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(ret_val_764X);}
break;
}}}}
L38616: {
long c_765X = arg0;
long args_766X = arg1;
long a1_767X = arg2;
arg0 = 8L;
arg1 = args_766X;
goto L30695;
L38629: {
*((long *) RSstackS) = a1_767X;
RSstackS = (RSstackS - 4L);
arg0 = 9L;
arg1 = 1L;
goto L37702;
L38631: {
long ret_val_768X = arg0;
switch (c_765X) {
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 12 :
case 13 :
case 14 :
case 15 :
case 16 :
case 17 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 23 :
case 24 :
case 25 :
case 26 :
case 27 :
case 28 :
case 29 :
case 30 :
case 31 : {
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(ret_val_768X);}
break;
case 32 : {
arg0 = ret_val_768X;
goto L59290;}
break;
case 33 : {
arg0 = ret_val_768X;
goto L59232;}
break;
case 34 : {
arg0 = ret_val_768X;
goto L59174;}
break;
case 35 : {
arg0 = ret_val_768X;
goto L59116;}
break;
case 36 :
case 37 :
case 38 :
case 39 :
case 40 :
case 41 :
case 42 :
case 43 :
case 44 :
case 45 :
case 46 :
case 47 :
case 48 :
case 49 :
case 50 :
case 51 :
case 52 :
case 53 :
case 54 :
case 55 :
case 56 : {
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(ret_val_768X);}
break;
case 57 : {
arg0 = ret_val_768X;
goto L42482;}
break;
case 58 :
case 59 :
case 60 :
case 61 :
case 62 :
case 63 :
case 64 :
case 65 :
case 66 :
case 67 :
case 68 :
case 69 :
case 70 :
case 71 :
case 72 : {
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(ret_val_768X);}
break;
}}}}
L30695: {
long c_769X = arg0;
long args_770X = arg1;
if ((RSstackS - 296L) > Sstack_limitS) {
arg0 = 0L;
goto L30723;}
else {
Sstack_limitS = Sstack_beginS;
Sexception_space_usedPS = 255L;
if ((RSstackS - 296L) > Sstack_limitS) {
arg0 = 0L;
goto L30723;}
else {
long v_771X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_771X = Qps_error_0(((long)"insufficient space on stack for exception frame"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 0L;
goto L30723;}}
L30723: {
long key_772X = arg0;
long v_773X;
v_773X = RSstackS + 4L;
arg0 = v_773X;
arg1 = 0L;
goto L30774;
L30774: {
long p_774X = arg0;
long i_775X = arg1;
if (((*((long *) p_774X)) & 3L) == 2L) {
long v_776X;
v_776X = RScode_pointerS;
arg0 = 2L;
arg1 = v_776X;
arg2 = i_775X;
arg3 = key_772X;
goto L25305;
L30792: {
*((long *) RSstackS) = (((*((unsigned char *) (RScode_pointerS - (args_770X + 1L))))) << 2L);
RSstackS = (RSstackS - 4L);
switch (c_769X) {
case 0 : {
arg0 = 0L;
arg1 = 0L;
goto L37702;}
break;
case 1 : {
arg0 = 1L;
arg1 = 0L;
goto L37702;}
break;
case 2 : {
arg0 = 2L;
arg1 = 0L;
goto L37702;}
break;
case 3 : {
arg0 = 3L;
arg1 = 0L;
goto L37702;}
break;
case 4 : {
arg0 = 4L;
arg1 = 0L;
goto L37702;}
break;
case 5 : {
arg0 = 5L;
arg1 = 0L;
goto L37702;}
break;
case 6 : {
arg0 = 54321L;
goto L38810;}
break;
case 7 : {
arg0 = 54321L;
goto L38665;}
break;
case 8 : {
arg0 = 54321L;
goto L38629;}
break;
}}}
else {
arg0 = (p_774X + 4L);
arg1 = (i_775X + 1L);
goto L30774;}}}}
L21896: {
long c_777X = arg0;
long string_778X = arg1;
long z_779X;
z_779X = ((*((long *) ((string_778X - 3L) + -4L))) >> 7L);
if (z_779X > Smaximum_string_lengthS) {
long v_780X;
v_780X = 1L + Smaximum_string_lengthS;
arg0 = v_780X;
goto L11470;
L11470: {
long s_781X = arg0;
if (s_781X > z_779X) {
long new_size_782X, size_783X, size_784X, x_785X;
new_size_782X = s_781X - 1L;
size_783X = new_size_782X + 1L;
size_784X = 4L + size_783X;
x_785X = ((long) malloc (size_784X* sizeof(char)));
if (x_785X == 0L) {
long v_786X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_786X = Qps_error_1(((long)"out of memory, cannot allocate this many bytes"), size_784X);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = x_785X;
goto L11583;}
else {
arg0 = x_785X;
goto L11583;}
L11583: {
long vec_787X = arg0;
long new_string_788X;
*((long *) vec_787X) = size_783X;
new_string_788X = vec_787X + 4L;
if (new_string_788X != 0) {
arg0 = 9999999L;
goto L11445;}
else {
long v_789X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_789X = Qps_error_1(((long)"Out of memory, cannot make string"), new_size_782X);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_789X;
goto L11445;}
L11445: {
Smaximum_string_lengthS = new_size_782X;
Sthe_stringS = new_string_788X;
arg0 = 54321L;
goto L11511;}}}
else {
arg0 = (2L * s_781X);
goto L11470;}}}
else {
arg0 = 9999999L;
goto L11511;}
L11511: {
long vec_790X;
*((char *) (Sthe_stringS + z_779X)) = 0L;
vec_790X = Sthe_stringS;
arg0 = 0L;
goto L21916;
L21916: {
long i_791X = arg0;
if (i_791X >= z_779X) {
switch (c_777X) {
case 0 : {
arg0 = vec_790X;
goto L58298;}
break;
case 1 : {
arg0 = vec_790X;
goto L53409;}
break;
case 2 : {
arg0 = vec_790X;
goto L53397;}
break;
}}
else {
*((char *) (vec_790X + i_791X)) = ((*((unsigned char *) ((string_778X - 3L) + i_791X))));
arg0 = (i_791X + 1L);
goto L21916;}}}}
L15879: {
long c_792X = arg0;
long stob1_793X = arg1;
long stob2_794X = arg2;
long z1_795X;
z1_795X = *((long *) ((stob1_793X - 3L) + -4L));
if (z1_795X == (*((long *) ((stob2_794X - 3L) + -4L)))) {
arg0 = 0L;
goto L15904;
L15904: {
long i_796X = arg0;
if (i_796X >= ((((z1_795X >> 7L)) + 3L) >> 2L)) {
arg0 = 255L;
goto L74782;}
else {
if ((*((long *) ((stob1_793X - 3L) + (i_796X << 2L)))) == (*((long *) ((stob2_794X - 3L) + (i_796X << 2L))))) {
arg0 = (i_796X + 1L);
goto L15904;}
else {
arg0 = 0L;
goto L74782;}}}}
else {
arg0 = 0L;
goto L74782;}
L74782: {
long ret_val_797X = arg0;
switch (c_792X) {
case 0 : {
if (ret_val_797X != 0) {
arg0 = 5L;
goto L56043;}
else {
arg0 = 1L;
goto L56043;}
L56043: {
long val_798X = arg0;
RSvalS = val_798X;
goto L34459;}}
break;
case 1 : {
arg0 = ret_val_797X;
goto L26003;}
break;
}}}}
L25305: {
long c_799X = arg0;
long code_pointer_800X = arg1;
long size_801X = arg2;
long cont_802X;
RSstackS = (RSstackS - 20L);
*((long *) (RSstackS + 4L)) = ((((((size_801X + 4L) * 4L) << 5L) + 8L) << 2L) + 2L);
cont_802X = ((RSstackS + 4L) + 4L) + 3L;
*((long *) ((cont_802X - 3L) + 4L)) = ((code_pointer_800X - ((*((long *) (StemplateS - 3L))) - 3L)) << 2L);
*((long *) ((cont_802X - 3L) + 8L)) = StemplateS;
*((long *) ((cont_802X - 3L) + 12L)) = RSenvS;
*((long *) (cont_802X - 3L)) = ScontS;
ScontS = cont_802X;
switch (c_799X) {
case 0 : {
arg0 = 54321L;
goto L37961;}
break;
case 1 : {
goto L34459;}
break;
case 2 : {
arg0 = 54321L;
goto L30792;}
break;
}}
L38697: {
long c_803X = arg0;
long args_804X = arg1;
long a1_805X = arg2;
long a2_806X = arg3;
*((long *) RSstackS) = (((*((unsigned char *) (RScode_pointerS - (args_804X + 1L))))) << 2L);
RSstackS = (RSstackS - 4L);
*((long *) RSstackS) = a1_805X;
RSstackS = (RSstackS - 4L);
*((long *) RSstackS) = a2_806X;
RSstackS = (RSstackS - 4L);
arg0 = 7L;
arg1 = 2L;
goto L37702;
L38724: {
long ret_val_807X = arg0;
switch (c_803X) {
case 0 :
case 1 :
case 2 : {
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
return(ret_val_807X);}
break;
}}}
L37702: {
long c_808X = arg0;
long nargs_809X = arg1;
long obj_810X;
SnargsS = (nargs_809X + 1L);
RSvalS = Sexception_handlerS;
obj_810X = RSvalS;
if ((obj_810X & 3L) == 3L) {
if ((((*((long *) ((obj_810X - 3L) + -4L))) >> 2L) & 31L) == 3L) {
arg0 = 9999999L;
goto L37737;}
else {
arg0 = 0L;
goto L37810;}}
else {
arg0 = 0L;
goto L37810;}
L37810: {
long v_811X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_811X = Qps_error_0(((long)"exception handler is not a closure"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_811X;
goto L37737;}
L37737: {
if (Sexception_space_usedPS != 0) {
if ((RSstackS - 296L) > Sstack_limitS) {
arg0 = 0L;
goto L37784;}
else {
arg0 = 1L;
arg1 = 74L;
goto L32883;
L37803: {
arg0 = 0L;
goto L37784;}}
L37784: {
Sstack_limitS = (Sstack_beginS + 296L);
Sexception_space_usedPS = 0L;
arg0 = 54321L;
goto L37713;}}
else {
arg0 = 8888888L;
goto L37713;}
L37713: {
long ret_val_812X;
goto START;}}}
L32883: {
long c_813X = arg0;
long cells_814X = arg1;
if ((ShpS + (((Sstack_endS - RSstackS) & ~3))) < SlimitS) {
arg0 = 8888888L;
goto L32964;}
else {
SlimitS = Snewspace_endS;
arg0 = 23L;
goto L29273;
L33083: {
long v_815X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_815X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 23L;
goto L24906;
L33091: {
if ((ShpS + (((Sstack_endS - RSstackS) & ~3))) < SlimitS) {
arg0 = 9999999L;
goto L32964;}
else {
long v_816X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_816X = Qps_error_1(((long)"not enough room in heap for stack"), ((Sstack_endS - RSstackS) >> 2L));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_816X;
goto L32964;}}}}
L32964: {
long v_817X;
v_817X = RSstackS + 4L;
arg0 = v_817X;
arg1 = 0L;
goto L31934;
L31934: {
long p_818X = arg0;
long i_819X = arg1;
if (((*((long *) p_818X)) & 3L) == 2L) {
long size_820X, x_821X;
size_820X = 4L + (4L * i_819X);
x_821X = ((long) malloc (size_820X* sizeof(char)));
if (x_821X == 0L) {
long v_822X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_822X = Qps_error_1(((long)"out of memory, cannot allocate this many bytes"), size_820X);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = x_821X;
goto L31884;}
else {
arg0 = x_821X;
goto L31884;}
L31884: {
long vec_823X = arg0;
long vec_824X, len_825X;
*((long *) vec_823X) = i_819X;
vec_824X = vec_823X + 4L;
len_825X = *((long *) (vec_824X + -4L));
arg0 = 0L;
goto L31895;
L31895: {
long i_826X = arg0;
if (i_826X >= len_825X) {
arg0 = (-1L + i_819X);
goto L31683;
L31683: {
long i_827X = arg0;
if (i_827X <= -1L) {
long v_828X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_828X = preserve_continuation(ScontS, 0L, 1L);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 3L;
arg1 = v_828X;
goto L23036;
L31669: {
long v_829X = arg0;
ScontS = v_829X;
arg0 = 0L;
goto L31616;
L31616: {
long i_830X = arg0;
if (i_830X >= i_819X) {
if ((RSstackS - (cells_814X << 2L)) > Sstack_limitS) {
arg0 = 9999999L;
goto L76496;}
else {
long v_831X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_831X = Qps_error_1(((long)"stack overflow"), cells_814X);
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_831X;
goto L76496;}}
else {
*((long *) RSstackS) = (*((long *) (vec_824X + (i_830X * 4L))));
RSstackS = (RSstackS - 4L);
arg0 = (i_830X + 1L);
goto L31616;}}}}
else {
RSstackS = (RSstackS - -4L);
*((long *) (vec_824X + (i_827X * 4L))) = (*((long *) RSstackS));
arg0 = (i_827X - 1L);
goto L31683;}}}
else {
*((long *) (vec_824X + (i_826X * 4L))) = 0L;
arg0 = (i_826X + 1L);
goto L31895;}}}}
else {
arg0 = (p_818X + 4L);
arg1 = (i_819X + 1L);
goto L31934;}}}
L76496: {
long ret_val_832X = arg0;
switch (c_813X) {
case 0 : {
arg0 = ret_val_832X;
goto L38299;}
break;
case 1 : {
arg0 = ret_val_832X;
goto L37803;}
break;
case 2 : {
arg0 = ret_val_832X;
goto L36018;}
break;
case 3 : {
arg0 = ret_val_832X;
goto L34997;}
break;
}}}
L23036: {
long c_833X = arg0;
long cont_834X = arg1;
long top_835X, new_cont_836X, from_837X, end_838X;
top_835X = (Sbottom_of_stackS - 7L) - (((((((*((long *) ((cont_834X - 3L) + -4L))) >> 7L)) + 3L) & ~3)) + 4L);
new_cont_836X = (top_835X + 4L) + 3L;
RSstackS = (top_835X - 4L);
from_837X = cont_834X - 7L;
end_838X = from_837X + ((1L + (((((*((long *) ((cont_834X - 3L) + -4L))) >> 7L)) + 3L) >> 2L)) << 2L);
arg0 = from_837X;
arg1 = top_835X;
goto L23199;
L23199: {
long from_839X = arg0;
long to_840X = arg1;
if (from_839X >= end_838X) {
*((long *) (Sbottom_of_stackS - 3L)) = (*((long *) (new_cont_836X - 3L)));
*((long *) (new_cont_836X - 3L)) = Sbottom_of_stackS;
switch (c_833X) {
case 0 : {
ScontS = new_cont_836X;
SnargsS = 0L;
goto START;}
break;
case 1 : {
ScontS = new_cont_836X;
goto L34459;}
break;
case 2 : {
arg0 = new_cont_836X;
goto L36440;}
break;
case 3 : {
arg0 = new_cont_836X;
goto L31669;}
break;
}}
else {
*((long *) to_840X) = (*((long *) from_839X));
arg0 = (from_839X + 4L);
arg1 = (to_840X + 4L);
goto L23199;}}}
L33770: {
long c_841X = arg0;
long start_842X = arg1;
long count_843X = arg2;
long space_844X;
space_844X = 3L * SnargsS;
if ((ShpS + (space_844X << 2L)) < SlimitS) {
arg0 = 9999999L;
goto L33923;}
else {
SlimitS = Snewspace_endS;
arg0 = 21L;
goto L29273;
L33957: {
long v_845X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_845X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 21L;
goto L24906;
L33965: {
long v_846X = arg0;
arg0 = v_846X;
goto L33923;}}}
L33923: {
if ((ShpS + (space_844X << 2L)) < SlimitS) {
arg0 = 0L;
goto L33837;}
else {
long v_847X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_847X = Qps_error_0(((long)"Scheme48 heap overflow"));
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = v_847X;
goto L33837;}}
L33837: {
arg0 = start_842X;
arg1 = count_843X;
goto L33785;
L33785: {
long args_848X = arg0;
long count_849X = arg1;
if (count_849X <= 0L) {
switch (c_841X) {
case 0 : {
arg0 = args_848X;
goto L58142;}
break;
case 1 : {
arg0 = args_848X;
goto L57839;}
break;
case 2 : {
arg0 = args_848X;
goto L37334;}
break;
case 3 : {
arg0 = args_848X;
goto L37320;}
break;
case 4 : {
arg0 = args_848X;
goto L37161;}
break;
case 5 : {
arg0 = args_848X;
goto L37147;}
break;
case 6 : {
arg0 = args_848X;
goto L37033;}
break;
case 7 : {
arg0 = args_848X;
goto L37019;}
break;
case 8 : {
arg0 = args_848X;
goto L34723;}
break;
case 9 : {
arg0 = args_848X;
goto L34710;}
break;
}}
else {
long a_850X, new_851X;
RSstackS = (RSstackS - -4L);
a_850X = *((long *) RSstackS);
*((long *) ShpS) = 1026L;
ShpS = (ShpS + 4L);
new_851X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_851X - 3L)) = a_850X;
*((long *) ((new_851X - 3L) + 4L)) = args_848X;
arg0 = new_851X;
arg1 = (count_849X - 1L);
goto L33785;}}}}
L29273: {
long c_852X = arg0;
*((long *) (SrootS - 3L)) = ((RScode_pointerS - ((*((long *) (StemplateS - 3L))) - 3L)) << 2L);
*((long *) ((SrootS - 3L) + 4L)) = StemplateS;
*((long *) ((SrootS - 3L) + 8L)) = RSenvS;
*((long *) ((SrootS - 3L) + 12L)) = ScontS;
*((long *) ((SrootS - 3L) + 16L)) = RSvalS;
*((long *) ((SrootS - 3L) + 20L)) = Sdynamic_stateS;
*((long *) ((SrootS - 3L) + 24L)) = (SnargsS << 2L);
*((long *) ((SrootS - 3L) + 28L)) = (Senabled_interruptsS << 2L);
*((long *) ((SrootS - 3L) + 32L)) = Sexception_handlerS;
*((long *) ((SrootS - 3L) + 36L)) = Sinterrupt_handlersS;
switch (c_852X) {
case 0 : {
arg0 = 999999L;
goto L69778;}
break;
case 1 : {
arg0 = 999999L;
goto L68017;}
break;
case 2 : {
arg0 = 999999L;
goto L66281;}
break;
case 3 : {
arg0 = 999999L;
goto L64542;}
break;
case 4 : {
arg0 = 999999L;
goto L62803;}
break;
case 5 : {
arg0 = 999999L;
goto L61064;}
break;
case 6 : {
arg0 = 999999L;
goto L58382;}
break;
case 7 : {
arg0 = 999999L;
goto L57660;}
break;
case 8 : {
arg0 = 999999L;
goto L57317;}
break;
case 9 : {
arg0 = 999999L;
goto L56910;}
break;
case 10 : {
arg0 = 999999L;
goto L54028;}
break;
case 11 : {
arg0 = 999999L;
goto L53742;}
break;
case 12 : {
arg0 = 999999L;
goto L51849;}
break;
case 13 : {
arg0 = 999999L;
goto L50883;}
break;
case 14 : {
arg0 = 999999L;
goto L49623;}
break;
case 15 : {
arg0 = 999999L;
goto L43503;}
break;
case 16 : {
long v_853X;
SvalS = RSvalS;
SstackS = RSstackS;
Scode_pointerS = RScode_pointerS;
SenvS = RSenvS;
v_853X = collect();
RSvalS = SvalS;
RSstackS = SstackS;
RScode_pointerS = Scode_pointerS;
RSenvS = SenvS;
arg0 = 16L;
goto L24906;}
break;
case 17 : {
arg0 = 999999L;
goto L36481;}
break;
case 18 : {
arg0 = 999999L;
goto L35857;}
break;
case 19 : {
arg0 = 999999L;
goto L35157;}
break;
case 20 : {
arg0 = 999999L;
goto L34303;}
break;
case 21 : {
arg0 = 999999L;
goto L33957;}
break;
case 22 : {
arg0 = 999999L;
goto L33682;}
break;
case 23 : {
arg0 = 999999L;
goto L33083;}
break;
}}
L24906: {
long c_854X = arg0;
long tem_855X, pc_856X;
tem_855X = *((long *) ((SrootS - 3L) + 4L));
pc_856X = *((long *) (SrootS - 3L));
StemplateS = tem_855X;
RScode_pointerS = (((*((long *) (tem_855X - 3L))) - 3L) + (pc_856X >> 2L));
RSenvS = (*((long *) ((SrootS - 3L) + 8L)));
ScontS = (*((long *) ((SrootS - 3L) + 12L)));
RSvalS = (*((long *) ((SrootS - 3L) + 16L)));
Sdynamic_stateS = (*((long *) ((SrootS - 3L) + 20L)));
SnargsS = ((*((long *) ((SrootS - 3L) + 24L))) >> 2L);
Senabled_interruptsS = ((*((long *) ((SrootS - 3L) + 28L))) >> 2L);
Sexception_handlerS = (*((long *) ((SrootS - 3L) + 32L)));
Sinterrupt_handlersS = (*((long *) ((SrootS - 3L) + 36L)));
switch (c_854X) {
case 0 : {
arg0 = 54321L;
goto L69786;}
break;
case 1 : {
arg0 = 54321L;
goto L68025;}
break;
case 2 : {
arg0 = 54321L;
goto L66289;}
break;
case 3 : {
arg0 = 54321L;
goto L64550;}
break;
case 4 : {
arg0 = 54321L;
goto L62811;}
break;
case 5 : {
arg0 = 54321L;
goto L61072;}
break;
case 6 : {
arg0 = 54321L;
goto L58390;}
break;
case 7 : {
arg0 = 54321L;
goto L57668;}
break;
case 8 : {
arg0 = 54321L;
goto L57325;}
break;
case 9 : {
arg0 = 54321L;
goto L56918;}
break;
case 10 : {
arg0 = 54321L;
goto L54036;}
break;
case 11 : {
arg0 = 54321L;
goto L53750;}
break;
case 12 : {
arg0 = 54321L;
goto L51857;}
break;
case 13 : {
arg0 = 54321L;
goto L50891;}
break;
case 14 : {
arg0 = 54321L;
goto L49631;}
break;
case 15 : {
arg0 = 54321L;
goto L43511;}
break;
case 16 : {
RSvalS = 13L;
goto L34459;}
break;
case 17 : {
arg0 = 54321L;
goto L36489;}
break;
case 18 : {
arg0 = 54321L;
goto L35865;}
break;
case 19 : {
arg0 = 54321L;
goto L35165;}
break;
case 20 : {
arg0 = 54321L;
goto L34311;}
break;
case 21 : {
arg0 = 54321L;
goto L33965;}
break;
case 22 : {
arg0 = 54321L;
goto L33690;}
break;
case 23 : {
arg0 = 54321L;
goto L33091;}
break;
}}}
}
long resume(filename_857X, startup_string_858X)
long filename_857X, startup_string_858X;
{
extern long Sexit_statusS, SvalS, SnargsS;
extern long Sbottom_of_stackS, Sstack_limitS, SstackS;
extern long Scurrent_input_portS, Sopen_vm_portsS, Sopen_portsS;
extern long Scurrent_output_portS, SrootS, SlimitS;
extern long SmarginS, ShpS, Sstack_endS, Sstack_beginS;
extern long Soldspace_endS, Soldspace_beginS, Snewspace_endS;
extern long Snewspace_beginS, Sstack_sizeS, Smemory_beginS;
extern long SmemoryS, Smemory_endS, Sinitial_heap_sizeS;
extern long perform_application(), clear_registers(), write_string();
extern long Qps_error_1(), Qps_error_2(), Qps_error_0();
long arg0, arg1;
START: {
long port_859X;
port_859X = (long)ps_open((char *)filename_857X, (char *)((long)"r"));
if (port_859X != 0) {
arg0 = 9999999L;
goto L31172;}
else {
long v_860X;
v_860X = Qps_error_0(((long)"Can't open heap image file"));
arg0 = v_860X;
goto L31172;}
L31172: {
goto L31543;
L31543: {
long ch_861X;
ch_861X = getc((FILE *)port_859X);
if (EOF == ch_861X) {
long v_862X, v_863X;
clearerr((FILE *)port_859X);
v_863X = Qps_error_0(((long)"end of file while looking for page break"));
arg0 = v_863X;
goto L31154;}
else {
if (ch_861X == 12L) {
arg0 = 0L;
goto L31154;}
else {
goto L31543;}}}
L31154: {
arg0 = 0L;
arg1 = port_859X;
goto L7517;
L31150: {
long old_level_864X = arg0;
arg0 = 1L;
arg1 = port_859X;
goto L7517;
L31144: {
long old_bits_per_byte_865X = arg0;
arg0 = 2L;
arg1 = port_859X;
goto L7517;
L31138: {
long old_bytes_per_cell_866X = arg0;
arg0 = 3L;
arg1 = port_859X;
goto L7517;
L31130: {
long cells_867X = arg0;
long x_868X;
x_868X = cells_867X << 2L;
arg0 = 4L;
arg1 = port_859X;
goto L7517;
L31120: {
long cells_869X = arg0;
long x_870X;
x_870X = cells_869X << 2L;
arg0 = 5L;
arg1 = port_859X;
goto L7517;
L31112: {
long startup_proc_871X = arg0;
goto L31478;
L31478: {
long ch_872X;
ch_872X = getc((FILE *)port_859X);
if (EOF == ch_872X) {
long v_873X, v_874X;
clearerr((FILE *)port_859X);
v_874X = Qps_error_0(((long)"end of file while looking for page break"));
arg0 = v_874X;
goto L31106;}
else {
if (ch_872X == 12L) {
arg0 = 0L;
goto L31106;}
else {
goto L31478;}}}
L31106: {
if (old_level_864X == 12L) {
arg0 = 9999999L;
goto L31102;}
else {
long v_875X;
v_875X = Qps_error_2(((long)"format of image is incompatible with this version of system"), old_level_864X, 12L);
arg0 = v_875X;
goto L31102;}
L31102: {
if (old_bits_per_byte_865X == 8L) {
arg0 = 9999999L;
goto L31076;}
else {
long v_876X;
v_876X = Qps_error_2(((long)"incompatible bits-per-byte"), old_bits_per_byte_865X, 8L);
arg0 = v_876X;
goto L31076;}
L31076: {
if (old_bytes_per_cell_866X == 4L) {
arg0 = 9999999L;
goto L31050;}
else {
long v_877X;
v_877X = Qps_error_2(((long)"incompatible bytes-per-cell"), old_bytes_per_cell_866X, 4L);
arg0 = v_877X;
goto L31050;}
L31050: {
long size_878X, x_879X;
size_878X = Sinitial_heap_sizeS;
x_879X = size_878X << 2L;
if (x_879X == Smemory_endS) {
arg0 = 8888888L;
goto L17795;}
else {
long size_880X, x_881X;
size_880X = 4L + x_879X;
x_881X = ((long) malloc (size_880X* sizeof(char)));
if (x_881X == 0L) {
long v_882X;
v_882X = Qps_error_1(((long)"out of memory, cannot allocate this many bytes"), size_880X);
arg0 = x_881X;
goto L17905;}
else {
arg0 = x_881X;
goto L17905;}
L17905: {
long vec_883X = arg0;
*((long *) vec_883X) = x_879X;
SmemoryS = (vec_883X + 4L);
Smemory_endS = x_879X;
arg0 = 54321L;
goto L17795;}}
L17795: {
long x_884X, delta_885X, new_hp_886X, new_limit_887X;
x_884X = ((((Smemory_endS - Smemory_beginS) >> 2L) - Sstack_sizeS) >> 1L) << 2L;
Snewspace_beginS = (SmemoryS + Smemory_beginS);
Snewspace_endS = (Snewspace_beginS + x_884X);
Soldspace_beginS = Snewspace_endS;
Soldspace_endS = (Soldspace_beginS + x_884X);
Sstack_beginS = Soldspace_endS;
Sstack_endS = (Sstack_beginS + (Sstack_sizeS << 2L));
ShpS = Snewspace_beginS;
SlimitS = (Snewspace_endS - SmarginS);
SrootS = 17L;
delta_885X = Snewspace_beginS - x_868X;
new_hp_886X = x_870X + delta_885X;
new_limit_887X = Snewspace_endS - SmarginS;
if ((((1L + ((((long)strlen((char *)startup_string_858X)) + 3L) >> 2L)) + 35L) + new_hp_886X) >= new_limit_887X) {
long v_888X;
v_888X = Qps_error_2(((long)"heap not big enough to restore this image"), new_hp_886X, new_limit_887X);
arg0 = v_888X;
goto L31590;}
else {
long count_889X, start_890X, got_891X;
count_889X = (x_870X + 4L) - x_868X;
start_890X = ShpS;
got_891X = fread(start_890X, sizeof(char),count_889X, (FILE *)port_859X);
if (got_891X == count_889X) {
arg0 = 0L;
goto L30975;}
else {
long v_892X;
v_892X = Qps_error_0(((long)"block read did not get enough bytes"));
arg0 = 0L;
goto L30975;}
L30975: {
if ((*((long *) new_hp_886X)) == 1L) {
arg0 = 9999999L;
goto L30959;}
else {
long v_893X, port_894X, v_895X;
v_893X = write_string(((long)"Correcting byte order of resumed image"), Scurrent_output_portS);
port_894X = Scurrent_output_portS;
putc(10L, (FILE *)port_894X);
if (port_894X == Scurrent_output_portS) {
long v_896X;
fflush((FILE *)port_894X);
arg0 = v_896X;
goto L15543;}
else {
arg0 = 9999999L;
goto L15543;}
L15543: {
arg0 = ShpS;
goto L15432;
L15432: {
long ptr_897X = arg0;
if (ptr_897X < new_hp_886X) {
long x_898X, x_899X, d_900X;
x_898X = (*((unsigned char *) ptr_897X));
*((char *) ptr_897X) = ((*((unsigned char *) (ptr_897X + 3L))));
*((char *) (ptr_897X + 3L)) = x_898X;
x_899X = (*((unsigned char *) (ptr_897X + 1L)));
*((char *) (ptr_897X + 1L)) = ((*((unsigned char *) (ptr_897X + 2L))));
*((char *) (ptr_897X + 2L)) = x_899X;
d_900X = *((long *) ptr_897X);
*((long *) ptr_897X) = d_900X;
if ((d_900X & 3L) == 2L) {
if (((d_900X >> 2L) & 31L) >= 10L) {
arg0 = (((((d_900X >> 7L)) + 3L) & ~3));
goto L15469;}
else {
arg0 = 0L;
goto L15469;}}
else {
arg0 = 0L;
goto L15469;}
L15469: {
long y_901X = arg0;
arg0 = ((ptr_897X + 4L) + y_901X);
goto L15432;}}
else {
long x_902X, x_903X;
x_902X = (*((unsigned char *) ptr_897X));
*((char *) ptr_897X) = ((*((unsigned char *) (ptr_897X + 3L))));
*((char *) (ptr_897X + 3L)) = x_902X;
x_903X = (*((unsigned char *) (ptr_897X + 1L)));
*((char *) (ptr_897X + 1L)) = ((*((unsigned char *) (ptr_897X + 2L))));
*((char *) (ptr_897X + 2L)) = x_903X;
if (1L == (*((long *) ptr_897X))) {
arg0 = 9999999L;
goto L30959;}
else {
long v_904X;
v_904X = Qps_error_2(((long)"unable to correct byte order"), ptr_897X, (*((long *) ptr_897X)));
arg0 = v_904X;
goto L30959;}}}}}
L30959: {
if (delta_885X == 0L) {
ShpS = new_hp_886X;
arg0 = 54321L;
goto L30935;}
else {
goto L15217;
L15217: {
if (ShpS < new_hp_886X) {
long descriptor_905X;
descriptor_905X = *((long *) ShpS);
if ((descriptor_905X & 3L) == 3L) {
arg0 = (((descriptor_905X - 3L) + delta_885X) + 3L);
goto L15285;}
else {
arg0 = descriptor_905X;
goto L15285;}
L15285: {
long d_906X = arg0;
*((long *) ShpS) = d_906X;
ShpS = (ShpS + 4L);
if ((d_906X & 3L) == 2L) {
if (((d_906X >> 2L) & 31L) >= 10L) {
ShpS = (ShpS + (((((d_906X >> 7L)) + 3L) & ~3)));
arg0 = 54321L;
goto L15269;}
else {
arg0 = 8888888L;
goto L15269;}}
else {
arg0 = 8888888L;
goto L15269;}
L15269: {
goto L15217;}}}
else {
arg0 = 8888888L;
goto L30935;}}}
L30935: {
long x_907X;
x_907X = ((long) malloc (404L* sizeof(char)));
if (x_907X == 0L) {
long v_908X;
v_908X = Qps_error_1(((long)"out of memory, cannot allocate this many bytes"), 404L);
arg0 = x_907X;
goto L27227;}
else {
arg0 = x_907X;
goto L27227;}
L27227: {
long vec_909X = arg0;
long vec_910X, len_911X;
*((long *) vec_909X) = 100L;
vec_910X = vec_909X + 4L;
len_911X = *((long *) (vec_910X + -4L));
arg0 = 0L;
goto L27238;
L27238: {
long i_912X = arg0;
if (i_912X >= len_911X) {
long x_913X;
Sopen_portsS = vec_910X;
x_913X = ((long) malloc (404L* sizeof(char)));
if (x_913X == 0L) {
long v_914X;
v_914X = Qps_error_1(((long)"out of memory, cannot allocate this many bytes"), 404L);
arg0 = x_913X;
goto L27178;}
else {
arg0 = x_913X;
goto L27178;}
L27178: {
long vec_915X = arg0;
long vec_916X, len_917X;
*((long *) vec_915X) = 100L;
vec_916X = vec_915X + 4L;
len_917X = *((long *) (vec_916X + -4L));
arg0 = 0L;
goto L27189;
L27189: {
long i_918X = arg0;
if (i_918X >= len_917X) {
Sopen_vm_portsS = vec_916X;
*((long *) Sopen_portsS) = Scurrent_input_portS;
*((long *) (Sopen_portsS + 4L)) = Scurrent_output_portS;
arg0 = 2L;
arg1 = ((long)"si");
goto L23808;
L26902: {
long d_919X = arg0;
long new_920X;
*((long *) ShpS) = 2070L;
ShpS = (ShpS + 4L);
new_920X = ShpS + 3L;
ShpS = (ShpS + 16L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_920X - 3L)) = 4L;
*((long *) ((new_920X - 3L) + 4L)) = 0L;
*((long *) ((new_920X - 3L) + 8L)) = 1L;
*((long *) ((new_920X - 3L) + 12L)) = d_919X;
arg0 = 1L;
arg1 = ((long)"so");
goto L23808;
L26926: {
long d_921X = arg0;
long new_922X, new_923X;
*((long *) ShpS) = 2070L;
ShpS = (ShpS + 4L);
new_922X = ShpS + 3L;
ShpS = (ShpS + 16L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_922X - 3L)) = 8L;
*((long *) ((new_922X - 3L) + 4L)) = 4L;
*((long *) ((new_922X - 3L) + 8L)) = 1L;
*((long *) ((new_922X - 3L) + 12L)) = d_921X;
*((long *) Sopen_vm_portsS) = new_920X;
*((long *) (Sopen_vm_portsS + 4L)) = new_922X;
*((long *) ShpS) = 7178L;
ShpS = (ShpS + 4L);
new_923X = ShpS + 3L;
ShpS = (ShpS + 56L);
*((long *) (ShpS + -4L)) = 0L;
SrootS = new_923X;
*((long *) ((SrootS - 3L) + 40L)) = 0L;
arg0 = 0L;
arg1 = 150L;
goto L23638;
L30020: {
long val_924X = arg0;
long bottom_925X;
*((long *) ((SrootS - 3L) + 44L)) = val_924X;
*((long *) ((SrootS - 3L) + 48L)) = 0L;
*((long *) ((SrootS - 3L) + 52L)) = 0L;
SstackS = (Sstack_endS - 4L);
Sstack_limitS = (Sstack_beginS + 296L);
SstackS = (SstackS - 20L);
*((long *) (SstackS + 4L)) = 2082L;
bottom_925X = ((SstackS + 4L) + 4L) + 3L;
*((long *) ((bottom_925X - 3L) + 4L)) = 0L;
*((long *) (bottom_925X - 3L)) = 1L;
arg0 = 1L;
arg1 = 31L;
goto L23638;
L26698: {
long val_926X = arg0;
*((long *) ((bottom_925X - 3L) + 8L)) = val_926X;
*((long *) ((bottom_925X - 3L) + 12L)) = 17L;
Sbottom_of_stackS = bottom_925X;
if ((startup_proc_871X & 3L) == 3L) {
arg0 = (((startup_proc_871X - 3L) + delta_885X) + 3L);
goto L31590;}
else {
arg0 = startup_proc_871X;
goto L31590;}}}
L23638: {
long c_927X = arg0;
long op_928X = arg1;
long new_929X, new_930X;
*((long *) ShpS) = 1034L;
ShpS = (ShpS + 4L);
new_929X = ShpS + 3L;
ShpS = (ShpS + 8L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) ShpS) = 302L;
ShpS = (ShpS + 4L);
new_930X = ShpS + 3L;
ShpS = (ShpS + 4L);
*((long *) (ShpS + -4L)) = 0L;
*((long *) (new_929X - 3L)) = new_930X;
*((char *) (new_930X - 3L)) = op_928X;
*((char *) ((new_930X - 3L) + 1L)) = 26L;
switch (c_927X) {
case 0 : {
arg0 = new_929X;
goto L30020;}
break;
case 1 : {
arg0 = new_929X;
goto L26698;}
break;
}}}}}
else {
*((long *) (vec_916X + (i_918X * 4L))) = 1L;
arg0 = (i_918X + 1L);
goto L27189;}}}}
else {
*((long *) (vec_910X + (i_912X * 4L))) = 0L;
arg0 = (i_912X + 1L);
goto L27238;}}}}}}}}}}}}}}}}}}
L7517: {
long c_931X = arg0;
long port_932X = arg1;
goto L7525;
L7525: {
long ch_933X;
ch_933X = getc((FILE *)port_932X);
if (EOF == ch_933X) {
long v_934X;
clearerr((FILE *)port_932X);
arg0 = 0L;
goto L74762;}
else {
if (ch_933X == 45L) {
long ch_935X;
ch_935X = getc((FILE *)port_932X);
if (EOF == ch_935X) {
long v_936X;
clearerr((FILE *)port_932X);
arg0 = 0L;
goto L74762;}
else {
arg0 = 0L;
arg1 = ch_935X;
goto L7691;
L7691: {
long r_937X = arg0;
long ch_938X = arg1;
long ch_939X;
ch_939X = ch_938X - 48L;
if (ch_939X >= 0L) {
if (ch_939X <= 9L) {
long r_940X, ch_941X;
r_940X = ch_939X + (r_937X * 10L);
ch_941X = getc((FILE *)port_932X);
if (EOF == ch_941X) {
long v_942X;
clearerr((FILE *)port_932X);
arg0 = r_940X;
goto L7560;}
else {
arg0 = r_940X;
arg1 = ch_941X;
goto L7691;}}
else {
arg0 = r_937X;
goto L7560;}}
else {
arg0 = r_937X;
goto L7560;}}
L7560: {
long y_943X = arg0;
arg0 = (0L - y_943X);
goto L74762;}}}
else {
if (ch_933X == 43L) {
long ch_944X;
ch_944X = getc((FILE *)port_932X);
if (EOF == ch_944X) {
long v_945X;
clearerr((FILE *)port_932X);
arg0 = 0L;
goto L74762;}
else {
arg0 = 0L;
arg1 = ch_944X;
goto L7742;
L7742: {
long r_946X = arg0;
long ch_947X = arg1;
long ch_948X;
ch_948X = ch_947X - 48L;
if (ch_948X >= 0L) {
if (ch_948X <= 9L) {
long r_949X, ch_950X;
r_949X = ch_948X + (r_946X * 10L);
ch_950X = getc((FILE *)port_932X);
if (EOF == ch_950X) {
long v_951X;
clearerr((FILE *)port_932X);
arg0 = r_949X;
goto L74762;}
else {
arg0 = r_949X;
arg1 = ch_950X;
goto L7742;}}
else {
arg0 = r_946X;
goto L74762;}}
else {
arg0 = r_946X;
goto L74762;}}}}
else {
if (ch_933X >= 48L) {
if (ch_933X <= 57L) {
arg0 = 0L;
arg1 = ch_933X;
goto L7805;
L7805: {
long r_952X = arg0;
long ch_953X = arg1;
long ch_954X;
ch_954X = ch_953X - 48L;
if (ch_954X >= 0L) {
if (ch_954X <= 9L) {
long r_955X, ch_956X;
r_955X = ch_954X + (r_952X * 10L);
ch_956X = getc((FILE *)port_932X);
if (EOF == ch_956X) {
long v_957X;
clearerr((FILE *)port_932X);
arg0 = r_955X;
goto L74762;}
else {
arg0 = r_955X;
arg1 = ch_956X;
goto L7805;}}
else {
arg0 = r_952X;
goto L74762;}}
else {
arg0 = r_952X;
goto L74762;}}}
else {
arg0 = 0L;
goto L7638;}}
else {
arg0 = 0L;
goto L7638;}
L7638: {
goto L7525;}}}}}
L74762: {
long ret_val_958X = arg0;
switch (c_931X) {
case 0 : {
arg0 = ret_val_958X;
goto L31150;}
break;
case 1 : {
arg0 = ret_val_958X;
goto L31144;}
break;
case 2 : {
arg0 = ret_val_958X;
goto L31138;}
break;
case 3 : {
arg0 = ret_val_958X;
goto L31130;}
break;
case 4 : {
arg0 = ret_val_958X;
goto L31120;}
break;
case 5 : {
arg0 = ret_val_958X;
goto L31112;}
break;
}}}}}
L31590: {
long val_959X = arg0;
long v_960X, v_961X;
fclose((FILE *)port_859X);
v_961X = clear_registers();
arg0 = 0L;
arg1 = startup_string_858X;
goto L23808;
L38461: {
long x_962X = arg0;
*((long *) SstackS) = x_962X;
SstackS = (SstackS - 4L);
*((long *) SstackS) = (*((long *) Sopen_vm_portsS));
SstackS = (SstackS - 4L);
*((long *) SstackS) = (*((long *) (Sopen_vm_portsS + 4L)));
SstackS = (SstackS - 4L);
SnargsS = 3L;
SvalS = val_959X;
arg0 = ((long)perform_application);
goto L38478;
L38478: {
long tag_963X = arg0;
if (tag_963X == 0L) {
return(Sexit_statusS);}
else {
long v_964X;
v_964X = ((long(*)())tag_963X)();
arg0 = v_964X;
goto L38478;}}}}
L23808: {
long c_965X = arg0;
long string_966X = arg1;
long z_967X, new_968X;
z_967X = (long)strlen((char *)string_966X);
*((long *) ShpS) = ((((z_967X << 5L) + 10L) << 2L) + 2L);
ShpS = (ShpS + 4L);
new_968X = ShpS + 3L;
ShpS = (ShpS + (((z_967X + 3L) & ~3)));
if (z_967X > 0L) {
*((long *) (ShpS + -4L)) = 0L;
arg0 = new_968X;
goto L23874;}
else {
arg0 = new_968X;
goto L23874;}
L23874: {
long s_969X = arg0;
arg0 = 0L;
goto L23828;
L23828: {
long i_970X = arg0;
if (i_970X >= z_967X) {
switch (c_965X) {
case 0 : {
arg0 = s_969X;
goto L38461;}
break;
case 1 : {
arg0 = s_969X;
goto L26926;}
break;
case 2 : {
arg0 = s_969X;
goto L26902;}
break;
}}
else {
*((char *) ((s_969X - 3L) + i_970X)) = ((*((unsigned char *) (string_966X + i_970X))));
arg0 = (i_970X + 1L);
goto L23828;}}}}}
}
scheme48_init()
{
Sexit_statusS = 0L;
Smaximum_string_lengthS = 255L;
Sthe_stringS = I70();
Scurrent_input_portS = I73();
Scurrent_output_portS = I74();
SmemoryS = 9999999L;
Smemory_beginS = 0L;
Smemory_endS = 0L;
ShpS = 0L;
SlimitS = 0L;
Sheap_keyS = 0L;
Sokayed_spaceS = 0L;
Sopen_portsS = 9999999L;
Sopen_vm_portsS = 9999999L;
Snewspace_beginS = 0L;
Snewspace_endS = 0L;
Soldspace_beginS = 0L;
Soldspace_endS = 0L;
Sstack_beginS = 0L;
Sstack_endS = 0L;
/* ROBOT HACK */
#ifdef ROBOT
Sstack_sizeS = 5000L; /* reduced - jar 8/7/91 */
#else
Sstack_sizeS = 10000L;
#endif
SrootS = 0L;
Sinitial_heap_sizeS = 100000L;
SmarginS = 1024L;
SscanS = 0L;
SstackS = 9999999L;
Sbottom_of_stackS = 9999999L;
Sstack_limitS = 9999999L;
ScontsS = 0L;
Sconts_slotsS = 0L;
Sconts_overflowS = 0L;
Sconts_overflow_slotsS = 0L;
Sconts_preservedS = 0L;
Sconts_preserved_slotsS = 0L;
Sconts_from_heapS = 0L;
Sconts_from_heap_slotsS = 0L;
SenvsS = 0L;
Senvs_slotsS = 0L;
Senvs_closedS = 0L;
Senvs_closed_slotsS = 0L;
Senvs_overflowS = 0L;
Senvs_overflow_slotsS = 0L;
Senvs_preservedS = 0L;
Senvs_preserved_slotsS = 0L;
Sstack_keyS = 0L;
Sokayed_stack_spaceS = 0L;
Sexception_space_usedPS = 0L;
Senvs_madeS = 0L;
StemplateS = 9999999L;
SenvS = 9999999L;
ScontS = 9999999L;
Scode_pointerS = 9999999L;
SnargsS = 9999999L;
SvalS = 9999999L;
Senabled_interruptsS = 9999999L;
Sexception_handlerS = 9999999L;
Sinterrupt_handlersS = 9999999L;
Sdynamic_stateS = 9999999L;
Spending_interruptsS = 9999999L;
}