1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include "prescheme.h"
5 #include "scheme48vm.h"
6 #include "scheme48heap.h"
7
8 struct image_location {
9 long new_descriptor;
10 long next;
11 };
12 struct table {
13 long *keys;
14 struct image_location **values;
15 long count;
16 long size;
17 };
18 static struct image_location *table_ref(struct table*, long);
19 static long copy_weak_pointer(long, char *, char **);
20 static void table_setB(struct table*, long, struct image_location*);
21 static long real_copy_object(long, char *, char **);
22 static char resumer_recordP(long);
23 static long trace_image_value(long);
24 void s48_write_barrier(long, char *, long);
25 void s48_forbid_gcB(void);
26 void s48_allow_gcB(void);
27 char s48_gc_can_allocate_unmovableP(void);
28 char * s48_allocate_traced_unmovableAgc(long);
29 char * s48_allocate_untraced_unmovableAgc(long);
30 char s48_unmovableP(long);
31 long s48_allocate_unmovable_stob(long, long);
32 long s48_heap_size(void);
33 long s48_gc_count(void);
34 long s48_gc_run_time(long*);
35 void s48_initialization_completeB(void);
36 long s48_max_heap_size(void);
37 long s48_startup_procedure(void);
38 long s48_initial_symbols(void);
39 long s48_initial_imported_bindings(void);
40 long s48_initial_exported_bindings(void);
41 long s48_resumer_records(void);
42 void s48_set_image_valuesB(long, long, long, long, long);
43 char * s48_allocate_small(long);
44 char s48_stob_in_heapP(long);
45 long s48_available(void);
46 char s48_extantP(long);
47 long s48_gather_objects(char(*)(long), char(*)(char(*)(long)));
48 static char pD1(long);
49 char s48_check_heap(long);
50 long s48_find_all(long);
51 long s48_trace_value(long);
52 long s48_find_all_records(long);
53 void s48_initializing_gc_root(void);
54 long s48_write_image(long, long, FILE *);
55 void s48_collect(char);
56 void s48_make_availableAgc(long);
57 char * s48_allocate_tracedAgc(long);
58 char * s48_allocate_weakAgc(long);
59 char * s48_allocate_untracedAgc(long);
60 long s48_allocate_stob(long, long);
61 long s48_allocate_weak_stob(long, long);
62 long s48_read_image(char*, long);
63 void s48_trace_locationsB(char *, char *);
64 void s48_trace_stob_contentsB(long);
65 void s48_trace_continuation_contentsB(char *, char *, long);
66 static char * Soldspace_hpS;
67 static char * Soldspace_limitS;
68 static char * Snewspace_beginS;
69 static char * Snewspace_endS;
70 static char * Soldspace_beginS;
71 static char * Soldspace_endS;
72 static char * Snew_heap_start_addrS;
73 static char * *Spure_areasS;
74 static char * *Simpure_areasS;
75 static long *Spure_sizesS;
76 static long *Simpure_sizesS;
77 static long Spure_area_countS;
78 static long Simpure_area_countS;
79 static char (*Scollect_predicateS)(long);
80 static long Sfinding_typeS;
81 static long Sheap_errors_leftS;
82 static long Sgc_countS;
83 static long Sgc_secondsS;
84 static long Sgc_msecondsS;
85 static char * Sfrom_beginS;
86 static char * Sfrom_endS;
87 static char * Sweak_pointer_hpS;
88 static char * Sweak_pointer_limitS;
89 static long SstatusS;
90 static char SeofPS;
91 static long Sstartup_procedureS;
92 static long SsymbolsS;
93 static long Simported_bindingsS;
94 static long Sexported_bindingsS;
95 static long Sresumer_recordsS;
96 static char * Simg_start_addrS;
97 static char * Simg_end_addrS;
98 static long Simg_heap_sizeS;
99 static char * Ssmall_img_start_addrS;
100 static char * Ssmall_img_hp_addrS;
101 static char * Ssmall_img_end_addrS;
102 static long Ssmall_img_heap_sizeS;
103 static char * Slarge_img_start_addrS;
104 static char * Slarge_img_hp_addrS;
105 static char * Slarge_img_end_addrS;
106 static long Slarge_img_heap_sizeS;
107 static char * Sweaks_img_start_addrS;
108 static char * Sweaks_img_hp_addrS;
109 static char * Sweaks_img_end_addrS;
110 static long Sweaks_img_heap_sizeS;
111 static char * Sheap_image_pointerS;
112 static char * Ssymbol_addressS;
113 static long Sheap_object_remaining_cellsS;
114 static char * Sheap_object_pointerS;
115 static struct table *Sstob_tableS;
116 static long SoffsetS;
117 static char * Sarea_startS;
118 static char SinitializingPS;
119 static long SstatusS;
120 static FILE * Simage_portS;
121 static char * Simage_bufferS;
122 static char * Simage_buffer_pointerS;
123 static long image_start_address;
124 static char * Simage_beginS;
125 static char * Simage_hpS;
126 static struct table *Sstob_tableS;
127 static long Sfirst_stobS;
128 static struct image_location *Slast_stobS;
129 static long Sresumer_countS;
130 static long Sresumer_recordsS;
131 static long Sundumpable_recordsS;
132 static long Sundumpable_countS;
133 static long Hthe_record_type270;
134 char * s48_ShpS;
135 char * s48_SlimitS;
136
table_ref(struct table * table_1X,long key_2X)137 static struct image_location *table_ref(struct table *table_1X, long key_2X)
138 {
139 long arg0K0;
140 long next_6X;
141 long i_5X;
142 long *keys_4X;
143 long size_3X;
144 { if ((0 < (table_1X->size))) {
145 size_3X = table_1X->size;
146 keys_4X = table_1X->keys;
147 arg0K0 = ((key_2X ^ ((PS_SHIFT_LEFT_INLINE(key_2X, 1)) ^ (PS_SHIFT_RIGHT_INLINE(key_2X, 10)))) & (-1 + size_3X));
148 goto L3037;}
149 else {
150 return (NULL);}}
151 L3037: {
152 i_5X = arg0K0;
153 next_6X = *(keys_4X + i_5X);
154 if ((key_2X == next_6X)) {
155 return (*((table_1X->values) + i_5X));}
156 else {
157 if ((0 == next_6X)) {
158 if ((i_5X == (table_1X->size))) {
159 arg0K0 = 0;
160 goto L3037;}
161 else {
162 return (NULL);}}
163 else {
164 arg0K0 = (1 + i_5X);
165 goto L3037;}}}
166 }
copy_weak_pointer(long weak_7X,char * frontier_8X,char ** TT0)167 static long copy_weak_pointer(long weak_7X, char * frontier_8X, char * *TT0)
168 {
169 char * arg1K0;
170 long new_13X;
171 char * frontier_12X;
172 char * new_frontier_11X;
173 char * old_10X;
174 char * x_9X;
175 { x_9X = Sweak_pointer_hpS;
176 if ((x_9X == NULL)) {
177 goto L6768;}
178 else {
179 if (((Sweak_pointer_hpS) < (Sweak_pointer_limitS))) {
180 arg1K0 = frontier_8X;
181 goto L6773;}
182 else {
183 goto L6768;}}}
184 L6768: {
185 old_10X = Sweak_pointer_hpS;
186 new_frontier_11X = frontier_8X + 2048;
187 Sweak_pointer_hpS = frontier_8X;
188 Sweak_pointer_limitS = new_frontier_11X;
189 *((long *) (Sweak_pointer_hpS)) = (long) (522310);
190 *((long *) ((Sweak_pointer_hpS) + 16)) = (long) ((((long) old_10X)));
191 arg1K0 = new_frontier_11X;
192 goto L6773;}
193 L6773: {
194 frontier_12X = arg1K0;
195 new_13X = 3 + (((long) ((Sweak_pointer_hpS) + 8)));
196 *((long *) ((Sweak_pointer_hpS) + 8)) = (long) ((*((long *) (((char *) (-3 + weak_7X))))));
197 Sweak_pointer_hpS = ((Sweak_pointer_hpS) + 16);
198 *((long *) (((char *) (-11 + weak_7X)))) = (long) (new_13X);
199 *TT0 = frontier_12X;
200 return new_13X;}
201 }
table_setB(struct table * table_14X,long key_15X,struct image_location * value_16X)202 static void table_setB(struct table *table_14X, long key_15X, struct image_location *value_16X)
203 {
204 long arg0K0;
205 long i_32X;
206 struct image_location *value_31X;
207 long key_30X;
208 long i_29X;
209 long i_28X;
210 struct image_location **new_values_27X;
211 long *new_keys_26X;
212 long new_size_25X;
213 struct image_location **old_values_24X;
214 long v_23X;
215 long old_size_22X;
216 long *old_keys_21X;
217 long next_20X;
218 long i_19X;
219 long *keys_18X;
220 long size_17X;
221 { if ((0 < (table_14X->size))) {
222 size_17X = table_14X->size;
223 keys_18X = table_14X->keys;
224 arg0K0 = ((key_15X ^ ((PS_SHIFT_LEFT_INLINE(key_15X, 1)) ^ (PS_SHIFT_RIGHT_INLINE(key_15X, 10)))) & (-1 + size_17X));
225 goto L7276;}
226 else {
227 return;}}
228 L7276: {
229 i_19X = arg0K0;
230 next_20X = *(keys_18X + i_19X);
231 if ((key_15X == next_20X)) {
232 *((table_14X->values) + i_19X) = value_16X;
233 return;}
234 else {
235 if ((0 == next_20X)) {
236 if ((i_19X == (table_14X->size))) {
237 arg0K0 = 0;
238 goto L7276;}
239 else {
240 *((table_14X->keys) + i_19X) = key_15X;
241 *((table_14X->values) + i_19X) = value_16X;
242 table_14X->count = (1 + (table_14X->count));
243 if (((table_14X->count) == ((table_14X->size) / 3))) {
244 old_keys_21X = table_14X->keys;
245 old_size_22X = table_14X->size;
246 v_23X = table_14X->size;
247 old_values_24X = table_14X->values;
248 new_size_25X = PS_SHIFT_LEFT_INLINE(v_23X, 1);
249 new_keys_26X = (long*)malloc(sizeof(long) * (1 + new_size_25X));
250 new_values_27X = (struct image_location**)malloc(sizeof(struct image_location*) * new_size_25X);
251 if ((NULL == new_keys_26X)) {
252 goto L4457;}
253 else {
254 if ((NULL == new_values_27X)) {
255 goto L4457;}
256 else {
257 table_14X->keys = new_keys_26X;
258 table_14X->values = new_values_27X;
259 table_14X->size = new_size_25X;
260 table_14X->count = 0;
261 arg0K0 = 0;
262 goto L4610;}}}
263 else {
264 return;}}}
265 else {
266 arg0K0 = (1 + i_19X);
267 goto L7276;}}}
268 L4457: {
269 if ((NULL == new_keys_26X)) {
270 goto L4465;}
271 else {
272 free(new_keys_26X);
273 goto L4465;}}
274 L4610: {
275 i_28X = arg0K0;
276 if ((i_28X < (1 + new_size_25X))) {
277 *(new_keys_26X + i_28X) = 0;
278 arg0K0 = (1 + i_28X);
279 goto L4610;}
280 else {
281 arg0K0 = 0;
282 goto L4488;}}
283 L4465: {
284 if ((NULL == new_values_27X)) {
285 goto L4473;}
286 else {
287 free(new_values_27X);
288 goto L4473;}}
289 L4488: {
290 i_29X = arg0K0;
291 if ((i_29X == old_size_22X)) {
292 free(old_keys_21X);
293 free(old_values_24X);
294 return;}
295 else {
296 key_30X = *(old_keys_21X + i_29X);
297 if ((0 == key_30X)) {
298 goto L4504;}
299 else {
300 value_31X = *(old_values_24X + i_29X);
301 arg0K0 = ((key_30X ^ ((PS_SHIFT_LEFT_INLINE(key_30X, 1)) ^ (PS_SHIFT_RIGHT_INLINE(key_30X, 10)))) & (-1 + new_size_25X));
302 goto L4632;}}}
303 L4473: {
304 table_14X->size = 0;
305 return;}
306 L4504: {
307 arg0K0 = (1 + i_29X);
308 goto L4488;}
309 L4632: {
310 i_32X = arg0K0;
311 if ((0 == (*(new_keys_26X + i_32X)))) {
312 if ((i_32X == new_size_25X)) {
313 arg0K0 = 0;
314 goto L4632;}
315 else {
316 *(new_keys_26X + i_32X) = key_30X;
317 *(new_values_27X + i_32X) = value_31X;
318 goto L4504;}}
319 else {
320 arg0K0 = (1 + i_32X);
321 goto L4632;}}
322 }
real_copy_object(long thing_33X,char * frontier_34X,char ** TT0)323 static long real_copy_object(long thing_33X, char * frontier_34X, char * *TT0)
324 {
325 long new_39X;
326 char * data_addr_38X;
327 char * a_37X;
328 long descriptor_36X;
329 long h_35X;
330 { h_35X = *((long *) (((char *) (-11 + thing_33X))));
331 if ((3 == (3 & h_35X))) {
332 *TT0 = frontier_34X;
333 return h_35X;}
334 else {
335 if ((2102 == h_35X)) {
336 descriptor_36X = *((long *) (((char *) (-3 + thing_33X))));
337 if ((3 == (3 & descriptor_36X))) {
338 a_37X = ((char *) (-3 + descriptor_36X));
339 if ((a_37X < (Sfrom_beginS))) {
340 goto L10678;}
341 else {
342 if ((a_37X < (Sfrom_endS))) {
343 return copy_weak_pointer(thing_33X, frontier_34X, TT0);}
344 else {
345 goto L10678;}}}
346 else {
347 goto L10678;}}
348 else {
349 goto L10678;}}}
350 L10678: {
351 *((long *) frontier_34X) = (long) (h_35X);
352 data_addr_38X = frontier_34X + 8;
353 new_39X = 3 + (((long) data_addr_38X));
354 *((long *) (((char *) (-11 + thing_33X)))) = (long) (new_39X);
355 memmove((void *)data_addr_38X, (void *)(((char *) (-3 + thing_33X))),(PS_SHIFT_RIGHT_LOGICAL_INLINE(h_35X, 8)));
356 *TT0 = (data_addr_38X + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(h_35X, 8)))));
357 return new_39X;}
358 }
resumer_recordP(long stob_40X)359 static char resumer_recordP(long stob_40X)
360 {
361 long type_41X;
362 { if ((3 == (3 & stob_40X))) {
363 if ((9 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + stob_40X))))), 2))))) {
364 type_41X = *((long *) (((char *) (-3 + stob_40X))));
365 if ((3 == (3 & type_41X))) {
366 if ((9 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + type_41X))))), 2))))) {
367 return (3 == (3 & (*((long *) ((((char *) (-3 + type_41X))) + 8)))));}
368 else {
369 return 0;}}
370 else {
371 return 0;}}
372 else {
373 return 0;}}
374 else {
375 return 0;}}
376 }
trace_image_value(long thing_42X)377 static long trace_image_value(long thing_42X)
378 {
379 struct image_location *arg2K0;
380 struct image_location *arg2K1;
381 long arg0K0;
382 long merged_arg0K0;
383
384 #ifdef USE_DIRECT_THREADING
385 void *gc_recordP_return_address;
386 #else
387 int gc_recordP_return_tag;
388 #endif
389 char gc_recordP0_return_value;
390 long x_43X;
391 long header_63X;
392 char v_62X;
393 long x_61X;
394 struct image_location *new_60X;
395 long new_descriptor_59X;
396 struct image_location *new_58X;
397 struct image_location *image_location_57X;
398 long new_descriptor_56X;
399 char * data_addr_55X;
400 long h_54X;
401 long stob_53X;
402 struct image_location *image_location_52X;
403 long new_alias_51X;
404 long i_50X;
405 long len_49X;
406 long vector_48X;
407 char v_47X;
408 long type_46X;
409 char v_45X;
410 struct image_location *have_44X;
411 { if ((3 == (3 & thing_42X))) {
412 have_44X = table_ref((Sstob_tableS), thing_42X);
413 if ((NULL == have_44X)) {
414 merged_arg0K0 = thing_42X;
415 #ifdef USE_DIRECT_THREADING
416 gc_recordP_return_address = &&gc_recordP_return_0;
417 #else
418 gc_recordP_return_tag = 0;
419 #endif
420 goto gc_recordP;
421 gc_recordP_return_0:
422 v_45X = gc_recordP0_return_value;
423 if (v_45X) {
424 type_46X = *((long *) (((char *) (-3 + thing_42X))));
425 merged_arg0K0 = type_46X;
426 #ifdef USE_DIRECT_THREADING
427 gc_recordP_return_address = &&gc_recordP_return_1;
428 #else
429 gc_recordP_return_tag = 1;
430 #endif
431 goto gc_recordP;
432 gc_recordP_return_1:
433 v_47X = gc_recordP0_return_value;
434 if (v_47X) {
435 if ((1 == (*((long *) ((((char *) (-3 + type_46X))) + 8))))) {
436 if (((Sundumpable_countS) < (PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE((*((long *) (((char *) (-11 + (Sundumpable_recordsS)))))), 8))), 3)))) {
437 vector_48X = Sundumpable_recordsS;
438 len_49X = PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE((*((long *) (((char *) (-11 + vector_48X))))), 8))), 3);
439 arg0K0 = 0;
440 goto L12669;}
441 else {
442 goto L14432;}}
443 else {
444 arg0K0 = thing_42X;
445 goto L13162;}}
446 else {
447 arg0K0 = thing_42X;
448 goto L13162;}}
449 else {
450 arg0K0 = thing_42X;
451 goto L13162;}}
452 else {
453 return (have_44X->new_descriptor);}}
454 else {
455 return thing_42X;}}
456 L12669: {
457 i_50X = arg0K0;
458 if ((i_50X == len_49X)) {
459 *((long *) ((((char *) (-3 + (Sundumpable_recordsS)))) + (PS_SHIFT_LEFT_INLINE((Sundumpable_countS), 3)))) = (long) (thing_42X);
460 Sundumpable_countS = (1 + (Sundumpable_countS));
461 goto L14432;}
462 else {
463 if (((*((long *) ((((char *) (-3 + vector_48X))) + (PS_SHIFT_LEFT_INLINE(i_50X, 3))))) == thing_42X)) {
464 goto L14432;}
465 else {
466 arg0K0 = (1 + i_50X);
467 goto L12669;}}}
468 L14432: {
469 new_alias_51X = trace_image_value((*((long *) ((((char *) (-3 + thing_42X))) + 8))));
470 image_location_52X = (struct image_location*)malloc(sizeof(struct image_location));
471 if ((NULL == image_location_52X)) {
472 arg2K0 = image_location_52X;
473 goto L14436;}
474 else {
475 image_location_52X->new_descriptor = new_alias_51X;
476 image_location_52X->next = 0;
477 arg2K0 = image_location_52X;
478 goto L14436;}}
479 L13162: {
480 stob_53X = arg0K0;
481 h_54X = *((long *) (((char *) (-11 + stob_53X))));
482 data_addr_55X = (Simage_hpS) + 8;
483 Simage_hpS = (data_addr_55X + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(h_54X, 8)))));
484 new_descriptor_56X = 3 + (((long) data_addr_55X));
485 image_location_57X = (struct image_location*)malloc(sizeof(struct image_location));
486 if ((NULL == image_location_57X)) {
487 arg0K0 = new_descriptor_56X;
488 arg2K1 = image_location_57X;
489 goto L13166;}
490 else {
491 image_location_57X->new_descriptor = new_descriptor_56X;
492 image_location_57X->next = 0;
493 arg0K0 = new_descriptor_56X;
494 arg2K1 = image_location_57X;
495 goto L13166;}}
496 L14436: {
497 new_58X = arg2K0;
498 if ((NULL == new_58X)) {
499 (Sstob_tableS)->size = 0;
500 return new_alias_51X;}
501 else {table_setB((Sstob_tableS), thing_42X, new_58X);
502 return new_alias_51X;}}
503 L13166: {
504 new_descriptor_59X = arg0K0;
505 new_60X = arg2K1;
506 if ((NULL == new_60X)) {
507 (Sstob_tableS)->size = 0;
508 return new_descriptor_59X;}
509 else {
510 x_61X = Sfirst_stobS;
511 if ((1 == x_61X)) {
512 Sfirst_stobS = stob_53X;
513 goto L13187;}
514 else {
515 (Slast_stobS)->next = stob_53X;
516 goto L13187;}}}
517 L13187: {
518 Slast_stobS = new_60X;
519 new_60X->next = 1;table_setB((Sstob_tableS), stob_53X, new_60X);
520 v_62X = resumer_recordP(stob_53X);
521 if (v_62X) {
522 Sresumer_countS = (1 + (Sresumer_countS));
523 return new_descriptor_59X;}
524 else {
525 return new_descriptor_59X;}}
526 gc_recordP: {
527 x_43X = merged_arg0K0;{
528 if ((3 == (3 & x_43X))) {
529 header_63X = *((long *) (((char *) (-11 + x_43X))));
530 if ((3 == (3 & header_63X))) {
531 if ((3 == (3 & header_63X))) {
532 gc_recordP0_return_value = (9 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + header_63X))))), 2))));
533 #ifdef USE_DIRECT_THREADING
534 goto *gc_recordP_return_address;
535 #else
536 goto gc_recordP_return;
537 #endif
538 }
539 else {
540 gc_recordP0_return_value = 0;
541 #ifdef USE_DIRECT_THREADING
542 goto *gc_recordP_return_address;
543 #else
544 goto gc_recordP_return;
545 #endif
546 }}
547 else {
548 if ((3 == (3 & x_43X))) {
549 gc_recordP0_return_value = (9 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + x_43X))))), 2))));
550 #ifdef USE_DIRECT_THREADING
551 goto *gc_recordP_return_address;
552 #else
553 goto gc_recordP_return;
554 #endif
555 }
556 else {
557 gc_recordP0_return_value = 0;
558 #ifdef USE_DIRECT_THREADING
559 goto *gc_recordP_return_address;
560 #else
561 goto gc_recordP_return;
562 #endif
563 }}}
564 else {
565 gc_recordP0_return_value = 0;
566 #ifdef USE_DIRECT_THREADING
567 goto *gc_recordP_return_address;
568 #else
569 goto gc_recordP_return;
570 #endif
571 }}
572 #ifndef USE_DIRECT_THREADING
573 gc_recordP_return:
574 switch (gc_recordP_return_tag) {
575 case 0: goto gc_recordP_return_0;
576 default: goto gc_recordP_return_1;
577 }
578 #endif
579 }
580
581 }
s48_write_barrier(long stob_64X,char * address_65X,long value_66X)582 void s48_write_barrier(long stob_64X, char * address_65X, long value_66X)
583 {
584
585 { return;}
586 }
s48_forbid_gcB(void)587 void s48_forbid_gcB(void)
588 {
589
590 { return;}
591 }
s48_allow_gcB(void)592 void s48_allow_gcB(void)
593 {
594
595 { return;}
596 }
s48_gc_can_allocate_unmovableP(void)597 char s48_gc_can_allocate_unmovableP(void)
598 {
599
600 { return 0;}
601 }
s48_allocate_traced_unmovableAgc(long len_67X)602 char * s48_allocate_traced_unmovableAgc(long len_67X)
603 {
604
605 { ps_error("twospace gc does not support unmovable objects", 0);
606 return NULL;}
607 }
s48_allocate_untraced_unmovableAgc(long len_68X)608 char * s48_allocate_untraced_unmovableAgc(long len_68X)
609 {
610
611 { ps_error("twospace gc does not support unmovable objects", 0);
612 return NULL;}
613 }
s48_unmovableP(long stob_69X)614 char s48_unmovableP(long stob_69X)
615 {
616
617 { return 0;}
618 }
s48_allocate_unmovable_stob(long type_70X,long size_71X)619 long s48_allocate_unmovable_stob(long type_70X, long size_71X)
620 {
621
622 { ps_error("twospace gc does not support unmovable objects", 0);
623 return 0;}
624 }
s48_heap_size(void)625 long s48_heap_size(void)
626 {
627
628 { return ((Snewspace_endS) - (Snewspace_beginS));}
629 }
s48_gc_count(void)630 long s48_gc_count(void)
631 {
632
633 { return (Sgc_countS);}
634 }
s48_gc_run_time(long * TT0)635 long s48_gc_run_time(long *TT0)
636 {
637
638 { *TT0 = (Sgc_msecondsS);
639 return (Sgc_secondsS);}
640 }
s48_initialization_completeB(void)641 void s48_initialization_completeB(void)
642 {
643
644 { SinitializingPS = 0;
645 return;}
646 }
s48_max_heap_size(void)647 long s48_max_heap_size(void)
648 {
649
650 { return (PS_SHIFT_RIGHT_INLINE((7 + ((Snewspace_endS) - (Snewspace_beginS))), 3));}
651 }
s48_startup_procedure(void)652 long s48_startup_procedure(void)
653 {
654
655 { return (Sstartup_procedureS);}
656 }
s48_initial_symbols(void)657 long s48_initial_symbols(void)
658 {
659
660 { return (SsymbolsS);}
661 }
s48_initial_imported_bindings(void)662 long s48_initial_imported_bindings(void)
663 {
664
665 { return (Simported_bindingsS);}
666 }
s48_initial_exported_bindings(void)667 long s48_initial_exported_bindings(void)
668 {
669
670 { return (Sexported_bindingsS);}
671 }
s48_resumer_records(void)672 long s48_resumer_records(void)
673 {
674
675 { return (Sresumer_recordsS);}
676 }
s48_set_image_valuesB(long startup_proc_72X,long symbols_73X,long imports_74X,long exports_75X,long records_76X)677 void s48_set_image_valuesB(long startup_proc_72X, long symbols_73X, long imports_74X, long exports_75X, long records_76X)
678 {
679
680 { Sstartup_procedureS = startup_proc_72X;
681 SsymbolsS = symbols_73X;
682 Simported_bindingsS = imports_74X;
683 Sexported_bindingsS = exports_75X;
684 Sresumer_recordsS = records_76X;
685 return;}
686 }
s48_allocate_small(long len_77X)687 char * s48_allocate_small(long len_77X)
688 {
689 char * new_78X;
690 { new_78X = s48_ShpS;
691 s48_ShpS = ((s48_ShpS) + (-8 & (7 + len_77X)));
692 return new_78X;}
693 }
s48_stob_in_heapP(long stob_79X)694 char s48_stob_in_heapP(long stob_79X)
695 {
696 char temp_81X;
697 char * addr_80X;
698 { addr_80X = ((char *) (-11 + stob_79X));
699 temp_81X = addr_80X < (Snewspace_beginS);
700 if (temp_81X) {
701 goto L3918;}
702 else {
703 if ((addr_80X < (s48_ShpS))) {
704 if ((2 == (3 & (*((long *) addr_80X))))) {
705 return 1;}
706 else {
707 ps_write_string("Heap-check: stob has no header.", (stderr));
708 { long ignoreXX;
709 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
710 Sheap_errors_leftS = (-1 + (Sheap_errors_leftS));
711 return ((Sheap_errors_leftS) < 1);}}
712 else {
713 goto L3918;}}}
714 L3918: {
715 ps_write_string("Heap-check: address out of bounds.", (stderr));
716 { long ignoreXX;
717 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
718 Sheap_errors_leftS = (-1 + (Sheap_errors_leftS));
719 return ((Sheap_errors_leftS) < 1);}
720 }
s48_available(void)721 long s48_available(void)
722 {
723
724 { return (PS_SHIFT_RIGHT_INLINE(((s48_SlimitS) - (s48_ShpS)), 3));}
725 }
s48_extantP(long thing_82X)726 char s48_extantP(long thing_82X)
727 {
728 char * a_83X;
729 { if ((3 == (3 & thing_82X))) {
730 if ((3 == (3 & thing_82X))) {
731 a_83X = ((char *) (-3 + thing_82X));
732 if ((a_83X < (Sfrom_beginS))) {
733 return 1;}
734 else {
735 if ((a_83X < (Sfrom_endS))) {
736 return (3 == (3 & (*((long *) (((char *) (-11 + thing_82X)))))));}
737 else {
738 return 1;}}}
739 else {
740 return 1;}}
741 else {
742 return 1;}}
743 }
s48_gather_objects(char (* predicate_84X)(long),char (* for_each_object_85X)(char (*)(long)))744 long s48_gather_objects(char (*predicate_84X)(long), char (*for_each_object_85X)(char(*)(long)))
745 {
746 char v_87X;
747 char * start_hp_86X;
748 { Scollect_predicateS = predicate_84X;
749 start_hp_86X = s48_ShpS;
750 *((long *) (s48_ShpS)) = (long) (0);
751 s48_ShpS = ((s48_ShpS) + 8);
752 v_87X = (*for_each_object_85X)(pD1);
753 if (v_87X) {
754 *((long *) start_hp_86X) = (long) ((10 + (PS_SHIFT_LEFT_INLINE(((s48_ShpS) - (start_hp_86X + 8)), 8))));
755 return (3 + (((long) (start_hp_86X + 8))));}
756 else {
757 s48_ShpS = start_hp_86X;
758 return 1;}}
759 }
pD1(long obj_88X)760 static char pD1(long obj_88X)
761 {
762 char x_89X;
763 { x_89X = (*(Scollect_predicateS))(obj_88X);
764 if (x_89X) {
765 if ((((s48_ShpS) + 64) < (s48_SlimitS))) {
766 *((long *) (s48_ShpS)) = (long) (obj_88X);
767 s48_ShpS = ((s48_ShpS) + 8);
768 return 1;}
769 else {
770 return 0;}}
771 else {
772 return 1;}}
773 }
s48_check_heap(long error_count_90X)774 char s48_check_heap(long error_count_90X)
775 {
776 char * arg1K0;
777 long arg0K0;
778 char * merged_arg1K1;
779 char * merged_arg1K0;
780
781 #ifdef USE_DIRECT_THREADING
782 void *check_area_return_address;
783 #else
784 int check_area_return_tag;
785 #endif
786 char check_area0_return_value;
787 char * start_91X;
788 char * end_92X;
789 char v_109X;
790 long x_108X;
791 char * addr_107X;
792 char * next_106X;
793 long d_105X;
794 char * addr_104X;
795 char v_103X;
796 long i_102X;
797 long count_101X;
798 long *sizes_100X;
799 char * *areas_99X;
800 char v_98X;
801 long i_97X;
802 long count_96X;
803 long *sizes_95X;
804 char * *areas_94X;
805 char v_93X;
806 { Sheap_errors_leftS = error_count_90X;
807 merged_arg1K0 = (Snewspace_beginS);
808 merged_arg1K1 = (s48_ShpS);
809 #ifdef USE_DIRECT_THREADING
810 check_area_return_address = &&check_area_return_0;
811 #else
812 check_area_return_tag = 0;
813 #endif
814 goto check_area;
815 check_area_return_0:
816 v_93X = check_area0_return_value;
817 if (v_93X) {
818 if ((0 < (Simpure_area_countS))) {
819 areas_94X = Simpure_areasS;
820 sizes_95X = Simpure_sizesS;
821 count_96X = Simpure_area_countS;
822 arg0K0 = 0;
823 goto L11599;}
824 else {
825 goto L11583;}}
826 else {
827 return 0;}}
828 L11599: {
829 i_97X = arg0K0;
830 if ((i_97X < count_96X)) {
831 merged_arg1K0 = (*(areas_94X + i_97X));
832 merged_arg1K1 = ((*(areas_94X + i_97X)) + (*(sizes_95X + i_97X)));
833 #ifdef USE_DIRECT_THREADING
834 check_area_return_address = &&check_area_return_1;
835 #else
836 check_area_return_tag = 1;
837 #endif
838 goto check_area;
839 check_area_return_1:
840 v_98X = check_area0_return_value;
841 if (v_98X) {
842 arg0K0 = (1 + i_97X);
843 goto L11599;}
844 else {
845 return 0;}}
846 else {
847 goto L11583;}}
848 L11583: {
849 if ((0 < (Spure_area_countS))) {
850 areas_99X = Spure_areasS;
851 sizes_100X = Spure_sizesS;
852 count_101X = Spure_area_countS;
853 arg0K0 = 0;
854 goto L11620;}
855 else {
856 return 1;}}
857 L11620: {
858 i_102X = arg0K0;
859 if ((i_102X < count_101X)) {
860 merged_arg1K0 = (*(areas_99X + i_102X));
861 merged_arg1K1 = ((*(areas_99X + i_102X)) + (*(sizes_100X + i_102X)));
862 #ifdef USE_DIRECT_THREADING
863 check_area_return_address = &&check_area_return_2;
864 #else
865 check_area_return_tag = 2;
866 #endif
867 goto check_area;
868 check_area_return_2:
869 v_103X = check_area0_return_value;
870 if (v_103X) {
871 arg0K0 = (1 + i_102X);
872 goto L11620;}
873 else {
874 return 0;}}
875 else {
876 return 1;}}
877 check_area: {
878 start_91X = merged_arg1K0;
879 end_92X = merged_arg1K1;{
880 arg1K0 = start_91X;
881 goto L10511;}
882 L10511: {
883 addr_104X = arg1K0;
884 if ((addr_104X < end_92X)) {
885 d_105X = *((long *) addr_104X);
886 next_106X = addr_104X + (8 + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(d_105X, 8)))));
887 if ((2 == (3 & d_105X))) {
888 if ((end_92X < next_106X)) {
889 ps_write_string("Heap-check: header too large.", (stderr));
890 { long ignoreXX;
891 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
892 Sheap_errors_leftS = (-1 + (Sheap_errors_leftS));
893 check_area0_return_value = ((Sheap_errors_leftS) < 1);
894 #ifdef USE_DIRECT_THREADING
895 goto *check_area_return_address;
896 #else
897 goto check_area_return;
898 #endif
899 }
900 else {
901 if ((2 == (3 & d_105X))) {
902 if (((31 & (PS_SHIFT_RIGHT_INLINE(d_105X, 2))) < 16)) {
903 goto L10537;}
904 else {
905 arg1K0 = next_106X;
906 goto L10511;}}
907 else {
908 goto L10537;}}}
909 else {
910 ps_write_string("Heap-check: unexpected non-header.", (stderr));
911 { long ignoreXX;
912 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
913 Sheap_errors_leftS = (-1 + (Sheap_errors_leftS));
914 check_area0_return_value = ((Sheap_errors_leftS) < 1);
915 #ifdef USE_DIRECT_THREADING
916 goto *check_area_return_address;
917 #else
918 goto check_area_return;
919 #endif
920 }}
921 else {
922 check_area0_return_value = 1;
923 #ifdef USE_DIRECT_THREADING
924 goto *check_area_return_address;
925 #else
926 goto check_area_return;
927 #endif
928 }}
929 L10537: {
930 arg1K0 = (addr_104X + 8);
931 goto L9271;}
932 L9271: {
933 addr_107X = arg1K0;
934 if ((addr_107X == next_106X)) {
935 arg1K0 = next_106X;
936 goto L10511;}
937 else {
938 x_108X = *((long *) addr_107X);
939 if ((2 == (3 & x_108X))) {
940 ps_write_string("Heap-check: unexpected header.", (stderr));
941 { long ignoreXX;
942 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
943 Sheap_errors_leftS = (-1 + (Sheap_errors_leftS));
944 if (((Sheap_errors_leftS) < 1)) {
945 arg1K0 = next_106X;
946 goto L10511;}
947 else {
948 check_area0_return_value = 0;
949 #ifdef USE_DIRECT_THREADING
950 goto *check_area_return_address;
951 #else
952 goto check_area_return;
953 #endif
954 }}
955 else {
956 if ((3 == (3 & x_108X))) {
957 v_109X = s48_stob_in_heapP(x_108X);
958 if (v_109X) {
959 goto L9296;}
960 else {
961 check_area0_return_value = 0;
962 #ifdef USE_DIRECT_THREADING
963 goto *check_area_return_address;
964 #else
965 goto check_area_return;
966 #endif
967 }}
968 else {
969 goto L9296;}}}}
970 L9296: {
971 arg1K0 = (addr_107X + 8);
972 goto L9271;}
973 #ifndef USE_DIRECT_THREADING
974 check_area_return:
975 switch (check_area_return_tag) {
976 case 0: goto check_area_return_0;
977 case 1: goto check_area_return_1;
978 default: goto check_area_return_2;
979 }
980 #endif
981 }
982
983 }
s48_find_all(long type_110X)984 long s48_find_all(long type_110X)
985 {
986 char * arg1K0;
987 long arg0K0;
988 char * merged_arg1K1;
989 char * merged_arg1K0;
990
991 #ifdef USE_DIRECT_THREADING
992 void *Hproc24111_return_address;
993 #else
994 int Hproc24111_return_tag;
995 #endif
996 char Hproc241110_return_value;
997 char * start_112X;
998 char * end_113X;
999 char * next_130X;
1000 long d_129X;
1001 char * addr_128X;
1002 long type_127X;
1003 char v_126X;
1004 long i_125X;
1005 long count_124X;
1006 long *sizes_123X;
1007 char * *areas_122X;
1008 char v_121X;
1009 long i_120X;
1010 long count_119X;
1011 long *sizes_118X;
1012 char * *areas_117X;
1013 char v_116X;
1014 char * start_hp_115X;
1015 char * start_hp_114X;
1016 { Sfinding_typeS = type_110X;
1017 start_hp_114X = s48_ShpS;
1018 start_hp_115X = s48_ShpS;
1019 *((long *) (s48_ShpS)) = (long) (0);
1020 s48_ShpS = ((s48_ShpS) + 8);
1021 merged_arg1K0 = (Snewspace_beginS);
1022 merged_arg1K1 = start_hp_114X;
1023 #ifdef USE_DIRECT_THREADING
1024 Hproc24111_return_address = &&Hproc24111_return_0;
1025 #else
1026 Hproc24111_return_tag = 0;
1027 #endif
1028 goto Hproc24111;
1029 Hproc24111_return_0:
1030 v_116X = Hproc241110_return_value;
1031 if (v_116X) {
1032 if ((0 < (Simpure_area_countS))) {
1033 areas_117X = Simpure_areasS;
1034 sizes_118X = Simpure_sizesS;
1035 count_119X = Simpure_area_countS;
1036 arg0K0 = 0;
1037 goto L11734;}
1038 else {
1039 goto L11703;}}
1040 else {
1041 goto L11716;}}
1042 L11734: {
1043 i_120X = arg0K0;
1044 if ((i_120X < count_119X)) {
1045 merged_arg1K0 = (*(areas_117X + i_120X));
1046 merged_arg1K1 = ((*(areas_117X + i_120X)) + (*(sizes_118X + i_120X)));
1047 #ifdef USE_DIRECT_THREADING
1048 Hproc24111_return_address = &&Hproc24111_return_1;
1049 #else
1050 Hproc24111_return_tag = 1;
1051 #endif
1052 goto Hproc24111;
1053 Hproc24111_return_1:
1054 v_121X = Hproc241110_return_value;
1055 if (v_121X) {
1056 arg0K0 = (1 + i_120X);
1057 goto L11734;}
1058 else {
1059 goto L11716;}}
1060 else {
1061 goto L11703;}}
1062 L11703: {
1063 if ((0 < (Spure_area_countS))) {
1064 areas_122X = Spure_areasS;
1065 sizes_123X = Spure_sizesS;
1066 count_124X = Spure_area_countS;
1067 arg0K0 = 0;
1068 goto L11755;}
1069 else {
1070 goto L11718;}}
1071 L11716: {
1072 s48_ShpS = start_hp_115X;
1073 return 1;}
1074 L11755: {
1075 i_125X = arg0K0;
1076 if ((i_125X < count_124X)) {
1077 merged_arg1K0 = (*(areas_122X + i_125X));
1078 merged_arg1K1 = ((*(areas_122X + i_125X)) + (*(sizes_123X + i_125X)));
1079 #ifdef USE_DIRECT_THREADING
1080 Hproc24111_return_address = &&Hproc24111_return_2;
1081 #else
1082 Hproc24111_return_tag = 2;
1083 #endif
1084 goto Hproc24111;
1085 Hproc24111_return_2:
1086 v_126X = Hproc241110_return_value;
1087 if (v_126X) {
1088 arg0K0 = (1 + i_125X);
1089 goto L11755;}
1090 else {
1091 goto L11716;}}
1092 else {
1093 goto L11718;}}
1094 L11718: {
1095 *((long *) start_hp_115X) = (long) ((10 + (PS_SHIFT_LEFT_INLINE(((s48_ShpS) - (start_hp_115X + 8)), 8))));
1096 return (3 + (((long) (start_hp_115X + 8))));}
1097 Hproc24111: {
1098 start_112X = merged_arg1K0;
1099 end_113X = merged_arg1K1;{
1100 type_127X = Sfinding_typeS;
1101 arg1K0 = start_112X;
1102 goto L11029;}
1103 L11029: {
1104 addr_128X = arg1K0;
1105 if ((addr_128X < end_113X)) {
1106 d_129X = *((long *) addr_128X);
1107 next_130X = addr_128X + (8 + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(d_129X, 8)))));
1108 if ((2 == (3 & d_129X))) {
1109 if ((type_127X == (31 & (PS_SHIFT_RIGHT_INLINE(d_129X, 2))))) {
1110 if ((((s48_ShpS) + 64) < (s48_SlimitS))) {
1111 *((long *) (s48_ShpS)) = (long) ((3 + (((long) (addr_128X + 8)))));
1112 s48_ShpS = ((s48_ShpS) + 8);
1113 arg1K0 = next_130X;
1114 goto L11029;}
1115 else {
1116 Hproc241110_return_value = 0;
1117 #ifdef USE_DIRECT_THREADING
1118 goto *Hproc24111_return_address;
1119 #else
1120 goto Hproc24111_return;
1121 #endif
1122 }}
1123 else {
1124 arg1K0 = next_130X;
1125 goto L11029;}}
1126 else {
1127 ps_write_string("heap is in an inconsistent state.", (stderr));
1128 Hproc241110_return_value = 0;
1129 #ifdef USE_DIRECT_THREADING
1130 goto *Hproc24111_return_address;
1131 #else
1132 goto Hproc24111_return;
1133 #endif
1134 }}
1135 else {
1136 Hproc241110_return_value = 1;
1137 #ifdef USE_DIRECT_THREADING
1138 goto *Hproc24111_return_address;
1139 #else
1140 goto Hproc24111_return;
1141 #endif
1142 }}
1143 #ifndef USE_DIRECT_THREADING
1144 Hproc24111_return:
1145 switch (Hproc24111_return_tag) {
1146 case 0: goto Hproc24111_return_0;
1147 case 1: goto Hproc24111_return_1;
1148 default: goto Hproc24111_return_2;
1149 }
1150 #endif
1151 }
1152
1153 }
s48_trace_value(long stob_131X)1154 long s48_trace_value(long stob_131X)
1155 {
1156 char * new_hp_134X;
1157 long new_thing_133X;
1158 char * a_132X;
1159 { if ((3 == (3 & stob_131X))) {
1160 a_132X = ((char *) (-3 + stob_131X));
1161 if ((a_132X < (Sfrom_beginS))) {
1162 return stob_131X;}
1163 else {
1164 if ((a_132X < (Sfrom_endS))) {
1165 new_thing_133X = real_copy_object(stob_131X, (s48_ShpS), &new_hp_134X);
1166 s48_ShpS = new_hp_134X;
1167 return new_thing_133X;}
1168 else {
1169 return stob_131X;}}}
1170 else {
1171 return stob_131X;}}
1172 }
s48_find_all_records(long record_type_135X)1173 long s48_find_all_records(long record_type_135X)
1174 {
1175 char * arg1K0;
1176 long arg0K0;
1177 char * merged_arg1K1;
1178 char * merged_arg1K0;
1179
1180 #ifdef USE_DIRECT_THREADING
1181 void *Hproc95136_return_address;
1182 #else
1183 int Hproc95136_return_tag;
1184 #endif
1185 char Hproc951360_return_value;
1186 char * start_137X;
1187 char * end_138X;
1188 long obj_156X;
1189 char * next_155X;
1190 long d_154X;
1191 char * addr_153X;
1192 long type_152X;
1193 char v_151X;
1194 long i_150X;
1195 long count_149X;
1196 long *sizes_148X;
1197 char * *areas_147X;
1198 char v_146X;
1199 long i_145X;
1200 long count_144X;
1201 long *sizes_143X;
1202 char * *areas_142X;
1203 char v_141X;
1204 char * start_hp_140X;
1205 char * start_hp_139X;
1206 { Hthe_record_type270 = record_type_135X;
1207 Sfinding_typeS = 9;
1208 start_hp_139X = s48_ShpS;
1209 start_hp_140X = s48_ShpS;
1210 *((long *) (s48_ShpS)) = (long) (0);
1211 s48_ShpS = ((s48_ShpS) + 8);
1212 merged_arg1K0 = (Snewspace_beginS);
1213 merged_arg1K1 = start_hp_139X;
1214 #ifdef USE_DIRECT_THREADING
1215 Hproc95136_return_address = &&Hproc95136_return_0;
1216 #else
1217 Hproc95136_return_tag = 0;
1218 #endif
1219 goto Hproc95136;
1220 Hproc95136_return_0:
1221 v_141X = Hproc951360_return_value;
1222 if (v_141X) {
1223 if ((0 < (Simpure_area_countS))) {
1224 areas_142X = Simpure_areasS;
1225 sizes_143X = Simpure_sizesS;
1226 count_144X = Simpure_area_countS;
1227 arg0K0 = 0;
1228 goto L11864;}
1229 else {
1230 goto L11833;}}
1231 else {
1232 goto L11846;}}
1233 L11864: {
1234 i_145X = arg0K0;
1235 if ((i_145X < count_144X)) {
1236 merged_arg1K0 = (*(areas_142X + i_145X));
1237 merged_arg1K1 = ((*(areas_142X + i_145X)) + (*(sizes_143X + i_145X)));
1238 #ifdef USE_DIRECT_THREADING
1239 Hproc95136_return_address = &&Hproc95136_return_1;
1240 #else
1241 Hproc95136_return_tag = 1;
1242 #endif
1243 goto Hproc95136;
1244 Hproc95136_return_1:
1245 v_146X = Hproc951360_return_value;
1246 if (v_146X) {
1247 arg0K0 = (1 + i_145X);
1248 goto L11864;}
1249 else {
1250 goto L11846;}}
1251 else {
1252 goto L11833;}}
1253 L11833: {
1254 if ((0 < (Spure_area_countS))) {
1255 areas_147X = Spure_areasS;
1256 sizes_148X = Spure_sizesS;
1257 count_149X = Spure_area_countS;
1258 arg0K0 = 0;
1259 goto L11885;}
1260 else {
1261 goto L11848;}}
1262 L11846: {
1263 s48_ShpS = start_hp_140X;
1264 return 1;}
1265 L11885: {
1266 i_150X = arg0K0;
1267 if ((i_150X < count_149X)) {
1268 merged_arg1K0 = (*(areas_147X + i_150X));
1269 merged_arg1K1 = ((*(areas_147X + i_150X)) + (*(sizes_148X + i_150X)));
1270 #ifdef USE_DIRECT_THREADING
1271 Hproc95136_return_address = &&Hproc95136_return_2;
1272 #else
1273 Hproc95136_return_tag = 2;
1274 #endif
1275 goto Hproc95136;
1276 Hproc95136_return_2:
1277 v_151X = Hproc951360_return_value;
1278 if (v_151X) {
1279 arg0K0 = (1 + i_150X);
1280 goto L11885;}
1281 else {
1282 goto L11846;}}
1283 else {
1284 goto L11848;}}
1285 L11848: {
1286 *((long *) start_hp_140X) = (long) ((10 + (PS_SHIFT_LEFT_INLINE(((s48_ShpS) - (start_hp_140X + 8)), 8))));
1287 return (3 + (((long) (start_hp_140X + 8))));}
1288 Hproc95136: {
1289 start_137X = merged_arg1K0;
1290 end_138X = merged_arg1K1;{
1291 type_152X = Sfinding_typeS;
1292 arg1K0 = start_137X;
1293 goto L11196;}
1294 L11196: {
1295 addr_153X = arg1K0;
1296 if ((addr_153X < end_138X)) {
1297 d_154X = *((long *) addr_153X);
1298 next_155X = addr_153X + (8 + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(d_154X, 8)))));
1299 if ((2 == (3 & d_154X))) {
1300 if ((type_152X == (31 & (PS_SHIFT_RIGHT_INLINE(d_154X, 2))))) {
1301 obj_156X = 3 + (((long) (addr_153X + 8)));
1302 if (((*((long *) (((char *) (-3 + obj_156X))))) == (Hthe_record_type270))) {
1303 if ((((s48_ShpS) + 64) < (s48_SlimitS))) {
1304 *((long *) (s48_ShpS)) = (long) (obj_156X);
1305 s48_ShpS = ((s48_ShpS) + 8);
1306 arg1K0 = next_155X;
1307 goto L11196;}
1308 else {
1309 Hproc951360_return_value = 0;
1310 #ifdef USE_DIRECT_THREADING
1311 goto *Hproc95136_return_address;
1312 #else
1313 goto Hproc95136_return;
1314 #endif
1315 }}
1316 else {
1317 arg1K0 = next_155X;
1318 goto L11196;}}
1319 else {
1320 arg1K0 = next_155X;
1321 goto L11196;}}
1322 else {
1323 ps_write_string("heap is in an inconsistent state.", (stderr));
1324 Hproc951360_return_value = 0;
1325 #ifdef USE_DIRECT_THREADING
1326 goto *Hproc95136_return_address;
1327 #else
1328 goto Hproc95136_return;
1329 #endif
1330 }}
1331 else {
1332 Hproc951360_return_value = 1;
1333 #ifdef USE_DIRECT_THREADING
1334 goto *Hproc95136_return_address;
1335 #else
1336 goto Hproc95136_return;
1337 #endif
1338 }}
1339 #ifndef USE_DIRECT_THREADING
1340 Hproc95136_return:
1341 switch (Hproc95136_return_tag) {
1342 case 0: goto Hproc95136_return_0;
1343 case 1: goto Hproc95136_return_1;
1344 default: goto Hproc95136_return_2;
1345 }
1346 #endif
1347 }
1348
1349 }
s48_initializing_gc_root(void)1350 void s48_initializing_gc_root(void)
1351 {
1352 long arg0K0;
1353 long expr_181X;
1354 char * new_hp_180X;
1355 long new_thing_179X;
1356 char * a_178X;
1357 long stob_177X;
1358 long expr_176X;
1359 char * new_hp_175X;
1360 long new_thing_174X;
1361 char * a_173X;
1362 long stob_172X;
1363 long expr_171X;
1364 char * new_hp_170X;
1365 long new_thing_169X;
1366 char * a_168X;
1367 long stob_167X;
1368 long expr_166X;
1369 char * new_hp_165X;
1370 long new_thing_164X;
1371 char * a_163X;
1372 long stob_162X;
1373 long expr_161X;
1374 char * new_hp_160X;
1375 long new_thing_159X;
1376 char * a_158X;
1377 long stob_157X;
1378 { if ((SinitializingPS)) {
1379 stob_157X = Sstartup_procedureS;
1380 if ((3 == (3 & stob_157X))) {
1381 a_158X = ((char *) (-3 + stob_157X));
1382 if ((a_158X < (Sfrom_beginS))) {
1383 arg0K0 = stob_157X;
1384 goto L13606;}
1385 else {
1386 if ((a_158X < (Sfrom_endS))) {
1387 new_thing_159X = real_copy_object(stob_157X, (s48_ShpS), &new_hp_160X);
1388 s48_ShpS = new_hp_160X;
1389 arg0K0 = new_thing_159X;
1390 goto L13606;}
1391 else {
1392 arg0K0 = stob_157X;
1393 goto L13606;}}}
1394 else {
1395 arg0K0 = stob_157X;
1396 goto L13606;}}
1397 else {
1398 return;}}
1399 L13606: {
1400 expr_161X = arg0K0;
1401 Sstartup_procedureS = expr_161X;
1402 stob_162X = SsymbolsS;
1403 if ((3 == (3 & stob_162X))) {
1404 a_163X = ((char *) (-3 + stob_162X));
1405 if ((a_163X < (Sfrom_beginS))) {
1406 arg0K0 = stob_162X;
1407 goto L13612;}
1408 else {
1409 if ((a_163X < (Sfrom_endS))) {
1410 new_thing_164X = real_copy_object(stob_162X, (s48_ShpS), &new_hp_165X);
1411 s48_ShpS = new_hp_165X;
1412 arg0K0 = new_thing_164X;
1413 goto L13612;}
1414 else {
1415 arg0K0 = stob_162X;
1416 goto L13612;}}}
1417 else {
1418 arg0K0 = stob_162X;
1419 goto L13612;}}
1420 L13612: {
1421 expr_166X = arg0K0;
1422 SsymbolsS = expr_166X;
1423 stob_167X = Simported_bindingsS;
1424 if ((3 == (3 & stob_167X))) {
1425 a_168X = ((char *) (-3 + stob_167X));
1426 if ((a_168X < (Sfrom_beginS))) {
1427 arg0K0 = stob_167X;
1428 goto L13618;}
1429 else {
1430 if ((a_168X < (Sfrom_endS))) {
1431 new_thing_169X = real_copy_object(stob_167X, (s48_ShpS), &new_hp_170X);
1432 s48_ShpS = new_hp_170X;
1433 arg0K0 = new_thing_169X;
1434 goto L13618;}
1435 else {
1436 arg0K0 = stob_167X;
1437 goto L13618;}}}
1438 else {
1439 arg0K0 = stob_167X;
1440 goto L13618;}}
1441 L13618: {
1442 expr_171X = arg0K0;
1443 Simported_bindingsS = expr_171X;
1444 stob_172X = Sexported_bindingsS;
1445 if ((3 == (3 & stob_172X))) {
1446 a_173X = ((char *) (-3 + stob_172X));
1447 if ((a_173X < (Sfrom_beginS))) {
1448 arg0K0 = stob_172X;
1449 goto L13624;}
1450 else {
1451 if ((a_173X < (Sfrom_endS))) {
1452 new_thing_174X = real_copy_object(stob_172X, (s48_ShpS), &new_hp_175X);
1453 s48_ShpS = new_hp_175X;
1454 arg0K0 = new_thing_174X;
1455 goto L13624;}
1456 else {
1457 arg0K0 = stob_172X;
1458 goto L13624;}}}
1459 else {
1460 arg0K0 = stob_172X;
1461 goto L13624;}}
1462 L13624: {
1463 expr_176X = arg0K0;
1464 Sexported_bindingsS = expr_176X;
1465 stob_177X = Sresumer_recordsS;
1466 if ((3 == (3 & stob_177X))) {
1467 a_178X = ((char *) (-3 + stob_177X));
1468 if ((a_178X < (Sfrom_beginS))) {
1469 arg0K0 = stob_177X;
1470 goto L13630;}
1471 else {
1472 if ((a_178X < (Sfrom_endS))) {
1473 new_thing_179X = real_copy_object(stob_177X, (s48_ShpS), &new_hp_180X);
1474 s48_ShpS = new_hp_180X;
1475 arg0K0 = new_thing_179X;
1476 goto L13630;}
1477 else {
1478 arg0K0 = stob_177X;
1479 goto L13630;}}}
1480 else {
1481 arg0K0 = stob_177X;
1482 goto L13630;}}
1483 L13630: {
1484 expr_181X = arg0K0;
1485 Sresumer_recordsS = expr_181X;
1486 return;}
1487 }
s48_write_image(long resume_proc_182X,long undumpables_183X,FILE * port_184X)1488 long s48_write_image(long resume_proc_182X, long undumpables_183X, FILE * port_184X)
1489 {
1490 struct table *arg3K0;
1491 long arg0K0;
1492 char * arg1K0;
1493 char * merged_arg1K0;
1494 long merged_arg0K1;
1495 long merged_arg0K0;
1496
1497 #ifdef USE_DIRECT_THREADING
1498 void *write_descriptor_return_address;
1499 #else
1500 int write_descriptor_return_tag;
1501 #endif
1502 #ifdef USE_DIRECT_THREADING
1503 void *write_shared_table_return_address;
1504 #else
1505 int write_shared_table_return_tag;
1506 #endif
1507 char write_shared_table0_return_value;
1508 #ifdef USE_DIRECT_THREADING
1509 void *copy_image_data_return_address;
1510 #else
1511 int copy_image_data_return_tag;
1512 #endif
1513 long descriptor_185X;
1514 long table_186X;
1515 char * start_187X;
1516 long size_188X;
1517 long have_330X;
1518 long v_329X;
1519 long value_328X;
1520 struct image_location *have_327X;
1521 long thing_326X;
1522 long link_325X;
1523 struct image_location *v_324X;
1524 long next_323X;
1525 long shared_322X;
1526 long link_321X;
1527 char temp_320X;
1528 long i_319X;
1529 long have_318X;
1530 long value_317X;
1531 long v_316X;
1532 struct image_location *have_315X;
1533 long v_314X;
1534 long v_313X;
1535 struct image_location *have_312X;
1536 long thing_311X;
1537 struct image_location *have_310X;
1538 long thing_309X;
1539 long x_308X;
1540 char * addr_307X;
1541 long v_306X;
1542 long value_305X;
1543 struct image_location *have_304X;
1544 long thing_303X;
1545 char * addr_302X;
1546 char * start_301X;
1547 long header_300X;
1548 long next_299X;
1549 struct image_location *have_298X;
1550 long thing_297X;
1551 struct image_location *have_296X;
1552 char * addr_295X;
1553 long v_294X;
1554 long link_293X;
1555 struct image_location *v_292X;
1556 long next_291X;
1557 char * start_290X;
1558 long header_289X;
1559 long next_288X;
1560 long value_287X;
1561 long have_286X;
1562 long available_285X;
1563 long size_284X;
1564 char * start_283X;
1565 long header_282X;
1566 long shared_281X;
1567 long link_280X;
1568 struct image_location *v_279X;
1569 long next_278X;
1570 struct image_location *have_277X;
1571 long thing_276X;
1572 long i_275X;
1573 long link_274X;
1574 long symbol_273X;
1575 long v_272X;
1576 long link_271X;
1577 struct image_location *v_270X;
1578 long next_269X;
1579 struct image_location **values_268X;
1580 long *keys_267X;
1581 struct table *table_266X;
1582 long link_265X;
1583 struct image_location *have_264X;
1584 long thing_263X;
1585 long id_262X;
1586 char * addr_261X;
1587 long symbol_260X;
1588 long have_259X;
1589 char v_258X;
1590 struct image_location *location_257X;
1591 long stob_256X;
1592 char * start_255X;
1593 long header_254X;
1594 struct image_location *have_253X;
1595 long thing_252X;
1596 long link_251X;
1597 long v_250X;
1598 long v_249X;
1599 long i_248X;
1600 struct image_location *v_247X;
1601 long thing_246X;
1602 long table_245X;
1603 struct image_location *location_244X;
1604 long stob_243X;
1605 struct table *stob_table_242X;
1606 long first_stob_241X;
1607 long v_240X;
1608 long v_239X;
1609 long v_238X;
1610 long v_237X;
1611 long n_236X;
1612 struct image_location *have_235X;
1613 long thing_234X;
1614 long v_233X;
1615 long n_232X;
1616 struct image_location *have_231X;
1617 long thing_230X;
1618 long v_229X;
1619 long n_228X;
1620 struct image_location *have_227X;
1621 long thing_226X;
1622 long v_225X;
1623 long cells_224X;
1624 long v_223X;
1625 long cells_222X;
1626 long v_221X;
1627 long v_220X;
1628 long v_219X;
1629 long v_218X;
1630 long i_217X;
1631 long v_216X;
1632 struct image_location **values_215X;
1633 long *keys_214X;
1634 struct table *table_213X;
1635 long v_212X;
1636 long resumer_records_211X;
1637 char * data_addr_210X;
1638 long cells_209X;
1639 long v_208X;
1640 long v_207X;
1641 long v_206X;
1642 struct image_location *last_205X;
1643 char * addr_204X;
1644 long next_203X;
1645 struct image_location *image_location_202X;
1646 char * start_201X;
1647 long link_200X;
1648 long entry_199X;
1649 long header_198X;
1650 long stob_197X;
1651 long link_196X;
1652 long i_195X;
1653 long table_194X;
1654 long resume_proc_193X;
1655 struct table *v_192X;
1656 struct table *table_191X;
1657 long i_190X;
1658 long *keys_189X;
1659 { keys_189X = (long*)malloc(sizeof(long) * 4097);
1660 arg0K0 = 0;
1661 goto L7192;}
1662 L7192: {
1663 i_190X = arg0K0;
1664 if ((i_190X < 4097)) {
1665 *(keys_189X + i_190X) = 0;
1666 arg0K0 = (1 + i_190X);
1667 goto L7192;}
1668 else {
1669 table_191X = (struct table*)malloc(sizeof(struct table));
1670 if ((NULL == table_191X)) {
1671 arg3K0 = table_191X;
1672 goto L7165;}
1673 else {
1674 table_191X->keys = keys_189X;
1675 table_191X->values = ((struct image_location**)malloc(sizeof(struct image_location*) * 4096));
1676 table_191X->count = 0;
1677 table_191X->size = 4096;
1678 arg3K0 = table_191X;
1679 goto L7165;}}}
1680 L7165: {
1681 v_192X = arg3K0;
1682 Sstob_tableS = v_192X;
1683 Sfirst_stobS = 1;
1684 Slast_stobS = (NULL);
1685 Sundumpable_recordsS = undumpables_183X;
1686 Sundumpable_countS = 0;
1687 Sresumer_countS = 0;
1688 image_start_address = (((long) (Snew_heap_start_addrS)));
1689 Simage_beginS = (((char *) (image_start_address)));
1690 Simage_hpS = (((char *) (image_start_address)));
1691 Simage_portS = port_184X;
1692 Simage_bufferS = ((char *)malloc(4096));
1693 Simage_buffer_pointerS = (Simage_bufferS);
1694 SstatusS = NO_ERRORS;
1695 if (((Simage_bufferS) == NULL)) {
1696 return ENOMEM;}
1697 else {
1698 resume_proc_193X = trace_image_value(resume_proc_182X);
1699 table_194X = s48_exported_bindings();
1700 arg0K0 = 0;
1701 goto L12022;}}
1702 L12022: {
1703 i_195X = arg0K0;
1704 if ((1024 == i_195X)) {
1705 arg0K0 = (Sfirst_stobS);
1706 goto L14220;}
1707 else {
1708 link_196X = *((long *) ((((char *) (-3 + table_194X))) + (PS_SHIFT_LEFT_INLINE(i_195X, 3))));
1709 if ((0 == (3 & link_196X))) {
1710 arg0K0 = (3 + (-4 & link_196X));
1711 goto L11996;}
1712 else {
1713 arg0K0 = link_196X;
1714 goto L11996;}}}
1715 L14220: {
1716 stob_197X = arg0K0;
1717 header_198X = *((long *) (((char *) (-11 + stob_197X))));
1718 if ((2 == (3 & header_198X))) {
1719 if (((31 & (PS_SHIFT_RIGHT_INLINE(header_198X, 2))) < 16)) {
1720 goto L14084;}
1721 else {
1722 goto L14222;}}
1723 else {
1724 goto L14084;}}
1725 L11996: {
1726 entry_199X = arg0K0;
1727 if ((1 == entry_199X)) {
1728 arg0K0 = (1 + i_195X);
1729 goto L12022;}
1730 else {trace_image_value(entry_199X);
1731 link_200X = *((long *) ((((char *) (-3 + entry_199X))) + 24));
1732 if ((0 == (3 & link_200X))) {
1733 arg0K0 = (3 + (-4 & link_200X));
1734 goto L11996;}
1735 else {
1736 arg0K0 = link_200X;
1737 goto L11996;}}}
1738 L14084: {
1739 if ((2102 == header_198X)) {
1740 goto L14222;}
1741 else {
1742 start_201X = ((char *) (-3 + stob_197X));
1743 arg1K0 = start_201X;
1744 goto L14103;}}
1745 L14222: {
1746 if ((0 < ((Sstob_tableS)->size))) {
1747 image_location_202X = table_ref((Sstob_tableS), stob_197X);
1748 next_203X = image_location_202X->next;
1749 if ((3 == (3 & next_203X))) {
1750 arg0K0 = next_203X;
1751 goto L14220;}
1752 else {
1753 goto L14301;}}
1754 else {
1755 goto L14301;}}
1756 L14103: {
1757 addr_204X = arg1K0;
1758 if ((addr_204X == (start_201X + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(header_198X, 8))))))) {
1759 goto L14222;}
1760 else {trace_image_value((*((long *) addr_204X)));
1761 arg1K0 = (addr_204X + 8);
1762 goto L14103;}}
1763 L14301: {
1764 last_205X = Slast_stobS;
1765 v_206X = s48_symbol_table();trace_image_value(v_206X);
1766 v_207X = s48_imported_bindings();trace_image_value(v_207X);
1767 v_208X = s48_exported_bindings();trace_image_value(v_208X);
1768 last_205X->next = 1;
1769 cells_209X = Sresumer_countS;
1770 data_addr_210X = (Simage_hpS) + 8;
1771 Simage_hpS = (data_addr_210X + (PS_SHIFT_LEFT_INLINE(cells_209X, 3)));
1772 Sresumer_recordsS = (3 + (((long) data_addr_210X)));
1773 if ((0 < ((Sstob_tableS)->size))) {
1774 resumer_records_211X = Sresumer_recordsS;
1775 if (((SstatusS) == NO_ERRORS)) {
1776 PS_WRITE_CHAR(10, port_184X, v_212X)
1777 SstatusS = v_212X;
1778 goto L6111;}
1779 else {
1780 goto L6111;}}
1781 else {
1782 table_213X = Sstob_tableS;
1783 keys_214X = table_213X->keys;
1784 values_215X = table_213X->values;
1785 arg0K0 = 0;
1786 goto L14617;}}
1787 L6111: {
1788 if (((SstatusS) == NO_ERRORS)) {
1789 PS_WRITE_CHAR(12, (Simage_portS), v_216X)
1790 SstatusS = v_216X;
1791 goto L6113;}
1792 else {
1793 goto L6113;}}
1794 L14617: {
1795 i_217X = arg0K0;
1796 if ((i_217X == (table_213X->size))) {
1797 free(keys_214X);
1798 free(values_215X);
1799 free(table_213X);
1800 free((Simage_bufferS));
1801 return ENOMEM;}
1802 else {
1803 if ((0 == (*(keys_214X + i_217X)))) {
1804 goto L14619;}
1805 else {
1806 free((*(values_215X + i_217X)));
1807 goto L14619;}}}
1808 L6113: {
1809 if (((SstatusS) == NO_ERRORS)) {
1810 PS_WRITE_CHAR(10, port_184X, v_218X)
1811 SstatusS = v_218X;
1812 goto L6122;}
1813 else {
1814 goto L6122;}}
1815 L14619: {
1816 arg0K0 = (1 + i_217X);
1817 goto L14617;}
1818 L6122: {
1819 if (((SstatusS) == NO_ERRORS)) {
1820 SstatusS = (ps_write_string("Vanilla 40", port_184X));
1821 goto L6129;}
1822 else {
1823 goto L6129;}}
1824 L6129: {
1825 if (((SstatusS) == NO_ERRORS)) {
1826 PS_WRITE_CHAR(10, port_184X, v_219X)
1827 SstatusS = v_219X;
1828 goto L6138;}
1829 else {
1830 goto L6138;}}
1831 L6138: {
1832 if (((SstatusS) == NO_ERRORS)) {
1833 SstatusS = (ps_write_integer(0, port_184X));
1834 goto L6145;}
1835 else {
1836 goto L6145;}}
1837 L6145: {
1838 if (((SstatusS) == NO_ERRORS)) {
1839 PS_WRITE_CHAR(10, port_184X, v_220X)
1840 SstatusS = v_220X;
1841 goto L6154;}
1842 else {
1843 goto L6154;}}
1844 L6154: {
1845 if (((SstatusS) == NO_ERRORS)) {
1846 SstatusS = (ps_write_integer(8, (Simage_portS)));
1847 goto L6199;}
1848 else {
1849 goto L6199;}}
1850 L6199: {
1851 if (((SstatusS) == NO_ERRORS)) {
1852 PS_WRITE_CHAR(10, (Simage_portS), v_221X)
1853 SstatusS = v_221X;
1854 goto L6156;}
1855 else {
1856 goto L6156;}}
1857 L6156: {
1858 cells_222X = image_start_address;
1859 if (((SstatusS) == NO_ERRORS)) {
1860 SstatusS = (ps_write_integer((PS_SHIFT_RIGHT_INLINE(cells_222X, 3)), (Simage_portS)));
1861 goto L6216;}
1862 else {
1863 goto L6216;}}
1864 L6216: {
1865 if (((SstatusS) == NO_ERRORS)) {
1866 PS_WRITE_CHAR(10, (Simage_portS), v_223X)
1867 SstatusS = v_223X;
1868 goto L6160;}
1869 else {
1870 goto L6160;}}
1871 L6160: {
1872 cells_224X = (image_start_address) + ((Simage_hpS) - (Simage_beginS));
1873 if (((SstatusS) == NO_ERRORS)) {
1874 SstatusS = (ps_write_integer((PS_SHIFT_RIGHT_INLINE(cells_224X, 3)), (Simage_portS)));
1875 goto L6235;}
1876 else {
1877 goto L6235;}}
1878 L6235: {
1879 if (((SstatusS) == NO_ERRORS)) {
1880 PS_WRITE_CHAR(10, (Simage_portS), v_225X)
1881 SstatusS = v_225X;
1882 goto L6166;}
1883 else {
1884 goto L6166;}}
1885 L6166: {
1886 thing_226X = s48_symbol_table();
1887 if ((3 == (3 & thing_226X))) {
1888 have_227X = table_ref((Sstob_tableS), thing_226X);
1889 if ((NULL == have_227X)) {
1890 ps_error("traced object has no descriptor in image", 0);
1891 goto L17892;}
1892 else {
1893 goto L17892;}}
1894 else {
1895 arg0K0 = thing_226X;
1896 goto L6170;}}
1897 L17892: {
1898 arg0K0 = (have_227X->new_descriptor);
1899 goto L6170;}
1900 L6170: {
1901 n_228X = arg0K0;
1902 if (((SstatusS) == NO_ERRORS)) {
1903 SstatusS = (ps_write_integer(n_228X, (Simage_portS)));
1904 goto L6249;}
1905 else {
1906 goto L6249;}}
1907 L6249: {
1908 if (((SstatusS) == NO_ERRORS)) {
1909 PS_WRITE_CHAR(10, (Simage_portS), v_229X)
1910 SstatusS = v_229X;
1911 goto L6172;}
1912 else {
1913 goto L6172;}}
1914 L6172: {
1915 thing_230X = s48_imported_bindings();
1916 if ((3 == (3 & thing_230X))) {
1917 have_231X = table_ref((Sstob_tableS), thing_230X);
1918 if ((NULL == have_231X)) {
1919 ps_error("traced object has no descriptor in image", 0);
1920 goto L17906;}
1921 else {
1922 goto L17906;}}
1923 else {
1924 arg0K0 = thing_230X;
1925 goto L6176;}}
1926 L17906: {
1927 arg0K0 = (have_231X->new_descriptor);
1928 goto L6176;}
1929 L6176: {
1930 n_232X = arg0K0;
1931 if (((SstatusS) == NO_ERRORS)) {
1932 SstatusS = (ps_write_integer(n_232X, (Simage_portS)));
1933 goto L6263;}
1934 else {
1935 goto L6263;}}
1936 L6263: {
1937 if (((SstatusS) == NO_ERRORS)) {
1938 PS_WRITE_CHAR(10, (Simage_portS), v_233X)
1939 SstatusS = v_233X;
1940 goto L6178;}
1941 else {
1942 goto L6178;}}
1943 L6178: {
1944 thing_234X = s48_exported_bindings();
1945 if ((3 == (3 & thing_234X))) {
1946 have_235X = table_ref((Sstob_tableS), thing_234X);
1947 if ((NULL == have_235X)) {
1948 ps_error("traced object has no descriptor in image", 0);
1949 goto L17920;}
1950 else {
1951 goto L17920;}}
1952 else {
1953 arg0K0 = thing_234X;
1954 goto L6182;}}
1955 L17920: {
1956 arg0K0 = (have_235X->new_descriptor);
1957 goto L6182;}
1958 L6182: {
1959 n_236X = arg0K0;
1960 if (((SstatusS) == NO_ERRORS)) {
1961 SstatusS = (ps_write_integer(n_236X, (Simage_portS)));
1962 goto L6277;}
1963 else {
1964 goto L6277;}}
1965 L6277: {
1966 if (((SstatusS) == NO_ERRORS)) {
1967 PS_WRITE_CHAR(10, (Simage_portS), v_237X)
1968 SstatusS = v_237X;
1969 goto L6184;}
1970 else {
1971 goto L6184;}}
1972 L6184: {
1973 if (((SstatusS) == NO_ERRORS)) {
1974 SstatusS = (ps_write_integer(resumer_records_211X, (Simage_portS)));
1975 goto L6291;}
1976 else {
1977 goto L6291;}}
1978 L6291: {
1979 if (((SstatusS) == NO_ERRORS)) {
1980 PS_WRITE_CHAR(10, (Simage_portS), v_238X)
1981 SstatusS = v_238X;
1982 goto L6186;}
1983 else {
1984 goto L6186;}}
1985 L6186: {
1986 if (((SstatusS) == NO_ERRORS)) {
1987 SstatusS = (ps_write_integer(resume_proc_193X, (Simage_portS)));
1988 goto L6305;}
1989 else {
1990 goto L6305;}}
1991 L6305: {
1992 if (((SstatusS) == NO_ERRORS)) {
1993 PS_WRITE_CHAR(10, (Simage_portS), v_239X)
1994 SstatusS = v_239X;
1995 goto L6188;}
1996 else {
1997 goto L6188;}}
1998 L6188: {
1999 if (((SstatusS) == NO_ERRORS)) {
2000 PS_WRITE_CHAR(12, (Simage_portS), v_240X)
2001 SstatusS = v_240X;
2002 goto L14518;}
2003 else {
2004 goto L14518;}}
2005 L14518: {
2006 merged_arg0K0 = 1;
2007 #ifdef USE_DIRECT_THREADING
2008 write_descriptor_return_address = &&write_descriptor_return_0;
2009 #else
2010 write_descriptor_return_tag = 0;
2011 #endif
2012 goto write_descriptor;
2013 write_descriptor_return_0:
2014 first_stob_241X = Sfirst_stobS;
2015 stob_table_242X = Sstob_tableS;
2016 arg0K0 = first_stob_241X;
2017 goto L14024;}
2018 L14024: {
2019 stob_243X = arg0K0;
2020 if ((3 == (3 & stob_243X))) {
2021 location_244X = table_ref(stob_table_242X, stob_243X);
2022 if ((NULL == location_244X)) {
2023 ps_error("traced stob has no image-table entry", 0);
2024 goto L14029;}
2025 else {
2026 goto L14029;}}
2027 else {
2028 table_245X = s48_symbol_table();
2029 merged_arg0K0 = (*((long *) (((char *) (-11 + table_245X)))));
2030 #ifdef USE_DIRECT_THREADING
2031 write_descriptor_return_address = &&write_descriptor_return_1;
2032 #else
2033 write_descriptor_return_tag = 1;
2034 #endif
2035 goto write_descriptor;
2036 write_descriptor_return_1:
2037 arg0K0 = 0;
2038 goto L12404;}}
2039 L14029: {
2040 if ((3 == (3 & stob_243X))) {
2041 if ((13 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + stob_243X))))), 2))))) {
2042 merged_arg0K0 = 2102;
2043 #ifdef USE_DIRECT_THREADING
2044 write_descriptor_return_address = &&write_descriptor_return_2;
2045 #else
2046 write_descriptor_return_tag = 2;
2047 #endif
2048 goto write_descriptor;
2049 write_descriptor_return_2:
2050 thing_246X = *((long *) (((char *) (-3 + stob_243X))));
2051 if ((3 == (3 & thing_246X))) {
2052 v_247X = table_ref((Sstob_tableS), thing_246X);
2053 if ((NULL == v_247X)) {
2054 merged_arg0K0 = 1;
2055 #ifdef USE_DIRECT_THREADING
2056 write_descriptor_return_address = &&write_descriptor_return_3;
2057 #else
2058 write_descriptor_return_tag = 3;
2059 #endif
2060 goto write_descriptor;
2061 write_descriptor_return_3:
2062 goto L14031;}
2063 else {
2064 goto L13750;}}
2065 else {
2066 goto L13750;}}
2067 else {
2068 goto L13756;}}
2069 else {
2070 goto L13756;}}
2071 L12404: {
2072 i_248X = arg0K0;
2073 if ((i_248X == (PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE((*((long *) (((char *) (-11 + table_245X))))), 8))), 3)))) {
2074 v_249X = s48_imported_bindings();
2075 merged_arg0K0 = v_249X;
2076 #ifdef USE_DIRECT_THREADING
2077 write_shared_table_return_address = &&write_shared_table_return_0;
2078 #else
2079 write_shared_table_return_tag = 0;
2080 #endif
2081 goto write_shared_table;
2082 write_shared_table_return_0:
2083 v_250X = s48_exported_bindings();
2084 merged_arg0K0 = v_250X;
2085 #ifdef USE_DIRECT_THREADING
2086 write_shared_table_return_address = &&write_shared_table_return_1;
2087 #else
2088 write_shared_table_return_tag = 1;
2089 #endif
2090 goto write_shared_table;
2091 write_shared_table_return_1:
2092 merged_arg0K0 = (10 + (PS_SHIFT_LEFT_INLINE((Sresumer_countS), 11)));
2093 #ifdef USE_DIRECT_THREADING
2094 write_descriptor_return_address = &&write_descriptor_return_4;
2095 #else
2096 write_descriptor_return_tag = 4;
2097 #endif
2098 goto write_descriptor;
2099 write_descriptor_return_4:
2100 arg0K0 = (Sfirst_stobS);
2101 goto L14047;}
2102 else {
2103 link_251X = *((long *) ((((char *) (-3 + table_245X))) + (PS_SHIFT_LEFT_INLINE(i_248X, 3))));
2104 if ((0 == (3 & link_251X))) {
2105 arg0K0 = (3 + (-4 & link_251X));
2106 goto L12414;}
2107 else {
2108 arg0K0 = link_251X;
2109 goto L12414;}}}
2110 L14031: {
2111 arg0K0 = (location_244X->next);
2112 goto L14024;}
2113 L13750: {
2114 thing_252X = *((long *) (((char *) (-3 + stob_243X))));
2115 if ((3 == (3 & thing_252X))) {
2116 have_253X = table_ref((Sstob_tableS), thing_252X);
2117 if ((NULL == have_253X)) {
2118 ps_error("traced object has no descriptor in image", 0);
2119 goto L13814;}
2120 else {
2121 goto L13814;}}
2122 else {
2123 merged_arg0K0 = thing_252X;
2124 #ifdef USE_DIRECT_THREADING
2125 write_descriptor_return_address = &&write_descriptor_return_5;
2126 #else
2127 write_descriptor_return_tag = 5;
2128 #endif
2129 goto write_descriptor;
2130 write_descriptor_return_5:
2131 goto L14031;}}
2132 L13756: {
2133 if ((3 == (3 & stob_243X))) {
2134 if ((6 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + stob_243X))))), 2))))) {
2135 header_254X = *((long *) (((char *) (-11 + stob_243X))));
2136 merged_arg0K0 = header_254X;
2137 #ifdef USE_DIRECT_THREADING
2138 write_descriptor_return_address = &&write_descriptor_return_6;
2139 #else
2140 write_descriptor_return_tag = 6;
2141 #endif
2142 goto write_descriptor;
2143 write_descriptor_return_6:
2144 merged_arg0K0 = 0;
2145 #ifdef USE_DIRECT_THREADING
2146 write_descriptor_return_address = &&write_descriptor_return_7;
2147 #else
2148 write_descriptor_return_tag = 7;
2149 #endif
2150 goto write_descriptor;
2151 write_descriptor_return_7:
2152 start_255X = (((char *) (-3 + stob_243X))) + 8;
2153 arg1K0 = start_255X;
2154 goto L10451;}
2155 else {
2156 goto L13760;}}
2157 else {
2158 goto L13760;}}
2159 L14047: {
2160 stob_256X = arg0K0;
2161 if ((3 == (3 & stob_256X))) {
2162 location_257X = table_ref((Sstob_tableS), stob_256X);
2163 v_258X = resumer_recordP(stob_256X);
2164 if (v_258X) {
2165 merged_arg0K0 = (location_257X->new_descriptor);
2166 #ifdef USE_DIRECT_THREADING
2167 write_descriptor_return_address = &&write_descriptor_return_8;
2168 #else
2169 write_descriptor_return_tag = 8;
2170 #endif
2171 goto write_descriptor;
2172 write_descriptor_return_8:
2173 goto L14054;}
2174 else {
2175 goto L14054;}}
2176 else {
2177 have_259X = (Simage_buffer_pointerS) - (Simage_bufferS);
2178 if ((0 < have_259X)) {
2179 if (((SstatusS) == NO_ERRORS)) {
2180 SstatusS = (ps_write_block((Simage_portS), ((char *) (Simage_bufferS)), have_259X));
2181 goto L14563;}
2182 else {
2183 goto L14563;}}
2184 else {
2185 goto L14524;}}}
2186 L12414: {
2187 symbol_260X = arg0K0;
2188 arg0K0 = symbol_260X;
2189 goto L12448;}
2190 L13814: {
2191 merged_arg0K0 = (have_253X->new_descriptor);
2192 #ifdef USE_DIRECT_THREADING
2193 write_descriptor_return_address = &&write_descriptor_return_9;
2194 #else
2195 write_descriptor_return_tag = 9;
2196 #endif
2197 goto write_descriptor;
2198 write_descriptor_return_9:
2199 goto L14031;}
2200 L10451: {
2201 addr_261X = arg1K0;
2202 if ((addr_261X == (start_255X + (-8 + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(header_254X, 8)))))))) {
2203 ps_write_string("Channel closed in dumped image: ", (stderr));
2204 id_262X = *((long *) ((((char *) (-3 + stob_243X))) + 8));
2205 if ((0 == (3 & id_262X))) {
2206 ps_write_integer((PS_SHIFT_RIGHT_INLINE(id_262X, 2)), (stderr));
2207 goto L10428;}
2208 else {
2209 ps_write_string((((char *)(((char *) (-3 + id_262X))))), (stderr));
2210 goto L10428;}}
2211 else {
2212 thing_263X = *((long *) addr_261X);
2213 if ((3 == (3 & thing_263X))) {
2214 have_264X = table_ref((Sstob_tableS), thing_263X);
2215 if ((NULL == have_264X)) {
2216 ps_error("traced object has no descriptor in image", 0);
2217 goto L10465;}
2218 else {
2219 goto L10465;}}
2220 else {
2221 arg0K0 = thing_263X;
2222 goto L10456;}}}
2223 L13760: {
2224 if ((3 == (3 & stob_243X))) {
2225 if ((1 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + stob_243X))))), 2))))) {
2226 link_265X = *((long *) ((((char *) (-3 + stob_243X))) + 8));
2227 if ((0 == (3 & link_265X))) {
2228 arg0K0 = (3 + (-4 & link_265X));
2229 goto L13336;}
2230 else {
2231 arg0K0 = link_265X;
2232 goto L13336;}}
2233 else {
2234 goto L13764;}}
2235 else {
2236 goto L13764;}}
2237 L14054: {
2238 arg0K0 = (location_257X->next);
2239 goto L14047;}
2240 L14563: {
2241 Simage_buffer_pointerS = (Simage_bufferS);
2242 goto L14524;}
2243 L14524: {
2244 table_266X = Sstob_tableS;
2245 keys_267X = table_266X->keys;
2246 values_268X = table_266X->values;
2247 arg0K0 = 0;
2248 goto L14583;}
2249 L12448: {
2250 next_269X = arg0K0;
2251 if ((3 == (3 & next_269X))) {
2252 v_270X = table_ref((Sstob_tableS), next_269X);
2253 if ((NULL == v_270X)) {
2254 link_271X = *((long *) ((((char *) (-3 + next_269X))) + 8));
2255 if ((0 == (3 & link_271X))) {
2256 arg0K0 = (3 + (-4 & link_271X));
2257 goto L12448;}
2258 else {
2259 arg0K0 = link_271X;
2260 goto L12448;}}
2261 else {
2262 arg0K0 = next_269X;
2263 goto L12416;}}
2264 else {
2265 arg0K0 = next_269X;
2266 goto L12416;}}
2267 L10428: {
2268 { long ignoreXX;
2269 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
2270 goto L14031;}
2271 L10465: {
2272 arg0K0 = (have_264X->new_descriptor);
2273 goto L10456;}
2274 L10456: {
2275 v_272X = arg0K0;
2276 merged_arg0K0 = v_272X;
2277 #ifdef USE_DIRECT_THREADING
2278 write_descriptor_return_address = &&write_descriptor_return_10;
2279 #else
2280 write_descriptor_return_tag = 10;
2281 #endif
2282 goto write_descriptor;
2283 write_descriptor_return_10:
2284 arg1K0 = (addr_261X + 8);
2285 goto L10451;}
2286 L13336: {
2287 symbol_273X = arg0K0;
2288 arg0K0 = symbol_273X;
2289 goto L13369;}
2290 L13764: {
2291 if ((3 == (3 & stob_243X))) {
2292 if ((14 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + stob_243X))))), 2))))) {
2293 link_274X = *((long *) ((((char *) (-3 + stob_243X))) + 24));
2294 if ((0 == (3 & link_274X))) {
2295 arg0K0 = (3 + (-4 & link_274X));
2296 goto L13451;}
2297 else {
2298 arg0K0 = link_274X;
2299 goto L13451;}}
2300 else {
2301 goto L13768;}}
2302 else {
2303 goto L13768;}}
2304 L14583: {
2305 i_275X = arg0K0;
2306 if ((i_275X == (table_266X->size))) {
2307 free(keys_267X);
2308 free(values_268X);
2309 free(table_266X);
2310 free((Simage_bufferS));
2311 return (SstatusS);}
2312 else {
2313 if ((0 == (*(keys_267X + i_275X)))) {
2314 goto L14585;}
2315 else {
2316 free((*(values_268X + i_275X)));
2317 goto L14585;}}}
2318 L12416: {
2319 thing_276X = arg0K0;
2320 if ((3 == (3 & thing_276X))) {
2321 have_277X = table_ref((Sstob_tableS), thing_276X);
2322 if ((NULL == have_277X)) {
2323 ps_error("traced object has no descriptor in image", 0);
2324 goto L12467;}
2325 else {
2326 goto L12467;}}
2327 else {
2328 arg0K0 = thing_276X;
2329 goto L12418;}}
2330 L13369: {
2331 next_278X = arg0K0;
2332 if ((3 == (3 & next_278X))) {
2333 v_279X = table_ref((Sstob_tableS), next_278X);
2334 if ((NULL == v_279X)) {
2335 link_280X = *((long *) ((((char *) (-3 + next_278X))) + 8));
2336 if ((0 == (3 & link_280X))) {
2337 arg0K0 = (3 + (-4 & link_280X));
2338 goto L13369;}
2339 else {
2340 arg0K0 = link_280X;
2341 goto L13369;}}
2342 else {
2343 arg0K0 = next_278X;
2344 goto L13338;}}
2345 else {
2346 arg0K0 = next_278X;
2347 goto L13338;}}
2348 L13451: {
2349 shared_281X = arg0K0;
2350 arg0K0 = shared_281X;
2351 goto L13500;}
2352 L13768: {
2353 header_282X = *((long *) (((char *) (-11 + stob_243X))));
2354 start_283X = ((char *) (-3 + stob_243X));
2355 merged_arg0K0 = header_282X;
2356 #ifdef USE_DIRECT_THREADING
2357 write_descriptor_return_address = &&write_descriptor_return_11;
2358 #else
2359 write_descriptor_return_tag = 11;
2360 #endif
2361 goto write_descriptor;
2362 write_descriptor_return_11:
2363 if ((2 == (3 & header_282X))) {
2364 if (((31 & (PS_SHIFT_RIGHT_INLINE(header_282X, 2))) < 16)) {
2365 goto L13784;}
2366 else {
2367 size_284X = -8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(header_282X, 8)));
2368 available_285X = 4096 - ((Simage_buffer_pointerS) - (Simage_bufferS));
2369 if ((available_285X < size_284X)) {
2370 if ((4096 < size_284X)) {
2371 have_286X = (Simage_buffer_pointerS) - (Simage_bufferS);
2372 if ((0 < have_286X)) {
2373 if (((SstatusS) == NO_ERRORS)) {
2374 SstatusS = (ps_write_block((Simage_portS), ((char *) (Simage_bufferS)), have_286X));
2375 goto L9477;}
2376 else {
2377 goto L9477;}}
2378 else {
2379 goto L9451;}}
2380 else {
2381 merged_arg1K0 = start_283X;
2382 merged_arg0K1 = available_285X;
2383 #ifdef USE_DIRECT_THREADING
2384 copy_image_data_return_address = &©_image_data_return_0;
2385 #else
2386 copy_image_data_return_tag = 0;
2387 #endif
2388 goto copy_image_data;
2389 copy_image_data_return_0:
2390 merged_arg1K0 = (start_283X + available_285X);
2391 merged_arg0K1 = (size_284X - available_285X);
2392 #ifdef USE_DIRECT_THREADING
2393 copy_image_data_return_address = &©_image_data_return_1;
2394 #else
2395 copy_image_data_return_tag = 1;
2396 #endif
2397 goto copy_image_data;
2398 copy_image_data_return_1:
2399 goto L14031;}}
2400 else {
2401 merged_arg1K0 = start_283X;
2402 merged_arg0K1 = size_284X;
2403 #ifdef USE_DIRECT_THREADING
2404 copy_image_data_return_address = &©_image_data_return_2;
2405 #else
2406 copy_image_data_return_tag = 2;
2407 #endif
2408 goto copy_image_data;
2409 copy_image_data_return_2:
2410 goto L14031;}}}
2411 else {
2412 goto L13784;}}
2413 L14585: {
2414 arg0K0 = (1 + i_275X);
2415 goto L14583;}
2416 L12467: {
2417 arg0K0 = (have_277X->new_descriptor);
2418 goto L12418;}
2419 L12418: {
2420 value_287X = arg0K0;
2421 if ((3 == (3 & value_287X))) {
2422 arg0K0 = (-4 & value_287X);
2423 goto L12420;}
2424 else {
2425 arg0K0 = value_287X;
2426 goto L12420;}}
2427 L13338: {
2428 next_288X = arg0K0;
2429 header_289X = *((long *) (((char *) (-11 + stob_243X))));
2430 merged_arg0K0 = header_289X;
2431 #ifdef USE_DIRECT_THREADING
2432 write_descriptor_return_address = &&write_descriptor_return_12;
2433 #else
2434 write_descriptor_return_tag = 12;
2435 #endif
2436 goto write_descriptor;
2437 write_descriptor_return_12:
2438 start_290X = ((char *) (-3 + stob_243X));
2439 arg1K0 = start_290X;
2440 goto L13398;}
2441 L13500: {
2442 next_291X = arg0K0;
2443 if ((3 == (3 & next_291X))) {
2444 v_292X = table_ref((Sstob_tableS), next_291X);
2445 if ((NULL == v_292X)) {
2446 link_293X = *((long *) ((((char *) (-3 + next_291X))) + 24));
2447 if ((0 == (3 & link_293X))) {
2448 arg0K0 = (3 + (-4 & link_293X));
2449 goto L13500;}
2450 else {
2451 arg0K0 = link_293X;
2452 goto L13500;}}
2453 else {
2454 arg0K0 = next_291X;
2455 goto L13453;}}
2456 else {
2457 arg0K0 = next_291X;
2458 goto L13453;}}
2459 L13784: {
2460 arg1K0 = start_283X;
2461 goto L13886;}
2462 L9477: {
2463 Simage_buffer_pointerS = (Simage_bufferS);
2464 goto L9451;}
2465 L9451: {
2466 if (((SstatusS) == NO_ERRORS)) {
2467 SstatusS = (ps_write_block((Simage_portS), ((char *) start_283X), size_284X));
2468 goto L14031;}
2469 else {
2470 goto L14031;}}
2471 L12420: {
2472 v_294X = arg0K0;
2473 merged_arg0K0 = v_294X;
2474 #ifdef USE_DIRECT_THREADING
2475 write_descriptor_return_address = &&write_descriptor_return_13;
2476 #else
2477 write_descriptor_return_tag = 13;
2478 #endif
2479 goto write_descriptor;
2480 write_descriptor_return_13:
2481 arg0K0 = (1 + i_248X);
2482 goto L12404;}
2483 L13398: {
2484 addr_295X = arg1K0;
2485 if ((addr_295X == (start_290X + (-8 + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(header_289X, 8)))))))) {
2486 if ((3 == (3 & next_288X))) {
2487 have_296X = table_ref((Sstob_tableS), next_288X);
2488 if ((NULL == have_296X)) {
2489 ps_error("traced object has no descriptor in image", 0);
2490 goto L13428;}
2491 else {
2492 goto L13428;}}
2493 else {
2494 arg0K0 = next_288X;
2495 goto L13351;}}
2496 else {
2497 thing_297X = *((long *) addr_295X);
2498 if ((3 == (3 & thing_297X))) {
2499 have_298X = table_ref((Sstob_tableS), thing_297X);
2500 if ((NULL == have_298X)) {
2501 ps_error("traced object has no descriptor in image", 0);
2502 goto L13412;}
2503 else {
2504 goto L13412;}}
2505 else {
2506 arg0K0 = thing_297X;
2507 goto L13403;}}}
2508 L13453: {
2509 next_299X = arg0K0;
2510 header_300X = *((long *) (((char *) (-11 + stob_243X))));
2511 merged_arg0K0 = header_300X;
2512 #ifdef USE_DIRECT_THREADING
2513 write_descriptor_return_address = &&write_descriptor_return_14;
2514 #else
2515 write_descriptor_return_tag = 14;
2516 #endif
2517 goto write_descriptor;
2518 write_descriptor_return_14:
2519 start_301X = ((char *) (-3 + stob_243X));
2520 arg1K0 = start_301X;
2521 goto L13529;}
2522 L13886: {
2523 addr_302X = arg1K0;
2524 if ((addr_302X == (start_283X + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(header_282X, 8))))))) {
2525 goto L14031;}
2526 else {
2527 thing_303X = *((long *) addr_302X);
2528 if ((3 == (3 & thing_303X))) {
2529 have_304X = table_ref((Sstob_tableS), thing_303X);
2530 if ((NULL == have_304X)) {
2531 ps_error("traced object has no descriptor in image", 0);
2532 goto L13900;}
2533 else {
2534 goto L13900;}}
2535 else {
2536 arg0K0 = thing_303X;
2537 goto L13891;}}}
2538 L13428: {
2539 arg0K0 = (have_296X->new_descriptor);
2540 goto L13351;}
2541 L13351: {
2542 value_305X = arg0K0;
2543 if ((3 == (3 & value_305X))) {
2544 merged_arg0K0 = (-4 & value_305X);
2545 #ifdef USE_DIRECT_THREADING
2546 write_descriptor_return_address = &&write_descriptor_return_15;
2547 #else
2548 write_descriptor_return_tag = 15;
2549 #endif
2550 goto write_descriptor;
2551 write_descriptor_return_15:
2552 goto L14031;}
2553 else {
2554 merged_arg0K0 = value_305X;
2555 #ifdef USE_DIRECT_THREADING
2556 write_descriptor_return_address = &&write_descriptor_return_16;
2557 #else
2558 write_descriptor_return_tag = 16;
2559 #endif
2560 goto write_descriptor;
2561 write_descriptor_return_16:
2562 goto L14031;}}
2563 L13412: {
2564 arg0K0 = (have_298X->new_descriptor);
2565 goto L13403;}
2566 L13403: {
2567 v_306X = arg0K0;
2568 merged_arg0K0 = v_306X;
2569 #ifdef USE_DIRECT_THREADING
2570 write_descriptor_return_address = &&write_descriptor_return_17;
2571 #else
2572 write_descriptor_return_tag = 17;
2573 #endif
2574 goto write_descriptor;
2575 write_descriptor_return_17:
2576 arg1K0 = (addr_295X + 8);
2577 goto L13398;}
2578 L13529: {
2579 addr_307X = arg1K0;
2580 if ((addr_307X == (start_301X + (-16 + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(header_300X, 8)))))))) {
2581 x_308X = *((long *) ((((char *) (-3 + stob_243X))) + 8));
2582 if ((5 == x_308X)) {
2583 arg0K0 = 529;
2584 goto L13478;}
2585 else {
2586 thing_309X = *((long *) ((((char *) (-3 + stob_243X))) + 16));
2587 if ((3 == (3 & thing_309X))) {
2588 have_310X = table_ref((Sstob_tableS), thing_309X);
2589 if ((NULL == have_310X)) {
2590 ps_error("traced object has no descriptor in image", 0);
2591 goto L13590;}
2592 else {
2593 goto L13590;}}
2594 else {
2595 arg0K0 = thing_309X;
2596 goto L13478;}}}
2597 else {
2598 thing_311X = *((long *) addr_307X);
2599 if ((3 == (3 & thing_311X))) {
2600 have_312X = table_ref((Sstob_tableS), thing_311X);
2601 if ((NULL == have_312X)) {
2602 ps_error("traced object has no descriptor in image", 0);
2603 goto L13543;}
2604 else {
2605 goto L13543;}}
2606 else {
2607 arg0K0 = thing_311X;
2608 goto L13534;}}}
2609 L13900: {
2610 arg0K0 = (have_304X->new_descriptor);
2611 goto L13891;}
2612 L13891: {
2613 v_313X = arg0K0;
2614 merged_arg0K0 = v_313X;
2615 #ifdef USE_DIRECT_THREADING
2616 write_descriptor_return_address = &&write_descriptor_return_18;
2617 #else
2618 write_descriptor_return_tag = 18;
2619 #endif
2620 goto write_descriptor;
2621 write_descriptor_return_18:
2622 arg1K0 = (addr_302X + 8);
2623 goto L13886;}
2624 L13478: {
2625 v_314X = arg0K0;
2626 merged_arg0K0 = v_314X;
2627 #ifdef USE_DIRECT_THREADING
2628 write_descriptor_return_address = &&write_descriptor_return_19;
2629 #else
2630 write_descriptor_return_tag = 19;
2631 #endif
2632 goto write_descriptor;
2633 write_descriptor_return_19:
2634 if ((3 == (3 & next_299X))) {
2635 have_315X = table_ref((Sstob_tableS), next_299X);
2636 if ((NULL == have_315X)) {
2637 ps_error("traced object has no descriptor in image", 0);
2638 goto L13566;}
2639 else {
2640 goto L13566;}}
2641 else {
2642 arg0K0 = next_299X;
2643 goto L13482;}}
2644 L13590: {
2645 arg0K0 = (have_310X->new_descriptor);
2646 goto L13478;}
2647 L13543: {
2648 arg0K0 = (have_312X->new_descriptor);
2649 goto L13534;}
2650 L13534: {
2651 v_316X = arg0K0;
2652 merged_arg0K0 = v_316X;
2653 #ifdef USE_DIRECT_THREADING
2654 write_descriptor_return_address = &&write_descriptor_return_20;
2655 #else
2656 write_descriptor_return_tag = 20;
2657 #endif
2658 goto write_descriptor;
2659 write_descriptor_return_20:
2660 arg1K0 = (addr_307X + 8);
2661 goto L13529;}
2662 L13566: {
2663 arg0K0 = (have_315X->new_descriptor);
2664 goto L13482;}
2665 L13482: {
2666 value_317X = arg0K0;
2667 if ((3 == (3 & value_317X))) {
2668 merged_arg0K0 = (-4 & value_317X);
2669 #ifdef USE_DIRECT_THREADING
2670 write_descriptor_return_address = &&write_descriptor_return_21;
2671 #else
2672 write_descriptor_return_tag = 21;
2673 #endif
2674 goto write_descriptor;
2675 write_descriptor_return_21:
2676 goto L14031;}
2677 else {
2678 merged_arg0K0 = value_317X;
2679 #ifdef USE_DIRECT_THREADING
2680 write_descriptor_return_address = &&write_descriptor_return_22;
2681 #else
2682 write_descriptor_return_tag = 22;
2683 #endif
2684 goto write_descriptor;
2685 write_descriptor_return_22:
2686 goto L14031;}}
2687 copy_image_data: {
2688 start_187X = merged_arg1K0;
2689 size_188X = merged_arg0K1;{
2690 memmove((void *)(Simage_buffer_pointerS), (void *)start_187X,size_188X);
2691 Simage_buffer_pointerS = ((Simage_buffer_pointerS) + size_188X);
2692 if ((4096 == ((Simage_buffer_pointerS) - (Simage_bufferS)))) {
2693 have_318X = (Simage_buffer_pointerS) - (Simage_bufferS);
2694 if ((0 < have_318X)) {
2695 if (((SstatusS) == NO_ERRORS)) {
2696 SstatusS = (ps_write_block((Simage_portS), ((char *) (Simage_bufferS)), have_318X));
2697 goto L6919;}
2698 else {
2699 goto L6919;}}
2700 else {
2701 #ifdef USE_DIRECT_THREADING
2702 goto *copy_image_data_return_address;
2703 #else
2704 goto copy_image_data_return;
2705 #endif
2706 }}
2707 else {
2708 #ifdef USE_DIRECT_THREADING
2709 goto *copy_image_data_return_address;
2710 #else
2711 goto copy_image_data_return;
2712 #endif
2713 }}
2714 L6919: {
2715 Simage_buffer_pointerS = (Simage_bufferS);
2716 #ifdef USE_DIRECT_THREADING
2717 goto *copy_image_data_return_address;
2718 #else
2719 goto copy_image_data_return;
2720 #endif
2721 }
2722 #ifndef USE_DIRECT_THREADING
2723 copy_image_data_return:
2724 switch (copy_image_data_return_tag) {
2725 case 0: goto copy_image_data_return_0;
2726 case 1: goto copy_image_data_return_1;
2727 default: goto copy_image_data_return_2;
2728 }
2729 #endif
2730 }
2731
2732 write_shared_table: {
2733 table_186X = merged_arg0K0;{
2734 merged_arg0K0 = (*((long *) (((char *) (-11 + table_186X)))));
2735 #ifdef USE_DIRECT_THREADING
2736 write_descriptor_return_address = &&write_descriptor_return_23;
2737 #else
2738 write_descriptor_return_tag = 23;
2739 #endif
2740 goto write_descriptor;
2741 write_descriptor_return_23:
2742 arg0K0 = 0;
2743 goto L12494;}
2744 L12494: {
2745 i_319X = arg0K0;
2746 temp_320X = i_319X == (PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE((*((long *) (((char *) (-11 + table_186X))))), 8))), 3));
2747 if (temp_320X) {
2748 write_shared_table0_return_value = temp_320X;
2749 #ifdef USE_DIRECT_THREADING
2750 goto *write_shared_table_return_address;
2751 #else
2752 goto write_shared_table_return;
2753 #endif
2754 }
2755 else {
2756 link_321X = *((long *) ((((char *) (-3 + table_186X))) + (PS_SHIFT_LEFT_INLINE(i_319X, 3))));
2757 if ((0 == (3 & link_321X))) {
2758 arg0K0 = (3 + (-4 & link_321X));
2759 goto L12504;}
2760 else {
2761 arg0K0 = link_321X;
2762 goto L12504;}}}
2763 L12504: {
2764 shared_322X = arg0K0;
2765 arg0K0 = shared_322X;
2766 goto L12538;}
2767 L12538: {
2768 next_323X = arg0K0;
2769 if ((3 == (3 & next_323X))) {
2770 v_324X = table_ref((Sstob_tableS), next_323X);
2771 if ((NULL == v_324X)) {
2772 link_325X = *((long *) ((((char *) (-3 + next_323X))) + 24));
2773 if ((0 == (3 & link_325X))) {
2774 arg0K0 = (3 + (-4 & link_325X));
2775 goto L12538;}
2776 else {
2777 arg0K0 = link_325X;
2778 goto L12538;}}
2779 else {
2780 arg0K0 = next_323X;
2781 goto L12506;}}
2782 else {
2783 arg0K0 = next_323X;
2784 goto L12506;}}
2785 L12506: {
2786 thing_326X = arg0K0;
2787 if ((3 == (3 & thing_326X))) {
2788 have_327X = table_ref((Sstob_tableS), thing_326X);
2789 if ((NULL == have_327X)) {
2790 ps_error("traced object has no descriptor in image", 0);
2791 goto L12557;}
2792 else {
2793 goto L12557;}}
2794 else {
2795 arg0K0 = thing_326X;
2796 goto L12508;}}
2797 L12557: {
2798 arg0K0 = (have_327X->new_descriptor);
2799 goto L12508;}
2800 L12508: {
2801 value_328X = arg0K0;
2802 if ((3 == (3 & value_328X))) {
2803 arg0K0 = (-4 & value_328X);
2804 goto L12510;}
2805 else {
2806 arg0K0 = value_328X;
2807 goto L12510;}}
2808 L12510: {
2809 v_329X = arg0K0;
2810 merged_arg0K0 = v_329X;
2811 #ifdef USE_DIRECT_THREADING
2812 write_descriptor_return_address = &&write_descriptor_return_24;
2813 #else
2814 write_descriptor_return_tag = 24;
2815 #endif
2816 goto write_descriptor;
2817 write_descriptor_return_24:
2818 arg0K0 = (1 + i_319X);
2819 goto L12494;}
2820 #ifndef USE_DIRECT_THREADING
2821 write_shared_table_return:
2822 switch (write_shared_table_return_tag) {
2823 case 0: goto write_shared_table_return_0;
2824 default: goto write_shared_table_return_1;
2825 }
2826 #endif
2827 }
2828
2829 write_descriptor: {
2830 descriptor_185X = merged_arg0K0;{
2831 *((long *) (Simage_buffer_pointerS)) = (long) (descriptor_185X);
2832 Simage_buffer_pointerS = ((Simage_buffer_pointerS) + 8);
2833 if ((4096 == ((Simage_buffer_pointerS) - (Simage_bufferS)))) {
2834 have_330X = (Simage_buffer_pointerS) - (Simage_bufferS);
2835 if ((0 < have_330X)) {
2836 if (((SstatusS) == NO_ERRORS)) {
2837 SstatusS = (ps_write_block((Simage_portS), ((char *) (Simage_bufferS)), have_330X));
2838 goto L6894;}
2839 else {
2840 goto L6894;}}
2841 else {
2842 #ifdef USE_DIRECT_THREADING
2843 goto *write_descriptor_return_address;
2844 #else
2845 goto write_descriptor_return;
2846 #endif
2847 }}
2848 else {
2849 #ifdef USE_DIRECT_THREADING
2850 goto *write_descriptor_return_address;
2851 #else
2852 goto write_descriptor_return;
2853 #endif
2854 }}
2855 L6894: {
2856 Simage_buffer_pointerS = (Simage_bufferS);
2857 #ifdef USE_DIRECT_THREADING
2858 goto *write_descriptor_return_address;
2859 #else
2860 goto write_descriptor_return;
2861 #endif
2862 }
2863 #ifndef USE_DIRECT_THREADING
2864 write_descriptor_return:
2865 switch (write_descriptor_return_tag) {
2866 case 0: goto write_descriptor_return_0;
2867 case 1: goto write_descriptor_return_1;
2868 case 2: goto write_descriptor_return_2;
2869 case 3: goto write_descriptor_return_3;
2870 case 4: goto write_descriptor_return_4;
2871 case 5: goto write_descriptor_return_5;
2872 case 6: goto write_descriptor_return_6;
2873 case 7: goto write_descriptor_return_7;
2874 case 8: goto write_descriptor_return_8;
2875 case 9: goto write_descriptor_return_9;
2876 case 10: goto write_descriptor_return_10;
2877 case 11: goto write_descriptor_return_11;
2878 case 12: goto write_descriptor_return_12;
2879 case 13: goto write_descriptor_return_13;
2880 case 14: goto write_descriptor_return_14;
2881 case 15: goto write_descriptor_return_15;
2882 case 16: goto write_descriptor_return_16;
2883 case 17: goto write_descriptor_return_17;
2884 case 18: goto write_descriptor_return_18;
2885 case 19: goto write_descriptor_return_19;
2886 case 20: goto write_descriptor_return_20;
2887 case 21: goto write_descriptor_return_21;
2888 case 22: goto write_descriptor_return_22;
2889 case 23: goto write_descriptor_return_23;
2890 default: goto write_descriptor_return_24;
2891 }
2892 #endif
2893 }
2894
2895 }
s48_collect(char force_majorP_331X)2896 void s48_collect(char force_majorP_331X)
2897 {
2898 char * arg1K1;
2899 char * arg1K0;
2900 long arg0K0;
2901 long x2_352X;
2902 long h_351X;
2903 char * a_350X;
2904 long value_349X;
2905 char * scan_348X;
2906 char * next_347X;
2907 char * end_346X;
2908 char * start_345X;
2909 long end_mseconds_344X;
2910 long end_seconds_343X;
2911 char v_342X;
2912 char * end_341X;
2913 char * x_340X;
2914 char * end_339X;
2915 char * start_338X;
2916 char * temp_337X;
2917 char * temp_336X;
2918 char * temp_335X;
2919 char * temp_334X;
2920 long start_mseconds_333X;
2921 long start_seconds_332X;
2922 { start_seconds_332X = s48_run_time(&start_mseconds_333X);
2923 Sfrom_beginS = (Snewspace_beginS);
2924 Sfrom_endS = (Snewspace_endS);
2925 temp_334X = s48_SlimitS;
2926 s48_SlimitS = (Soldspace_limitS);
2927 Soldspace_limitS = temp_334X;
2928 temp_335X = s48_ShpS;
2929 s48_ShpS = (Soldspace_hpS);
2930 Soldspace_hpS = temp_335X;
2931 temp_336X = Snewspace_beginS;
2932 Snewspace_beginS = (Soldspace_beginS);
2933 Soldspace_beginS = temp_336X;
2934 temp_337X = Snewspace_endS;
2935 Snewspace_endS = (Soldspace_endS);
2936 Soldspace_endS = temp_337X;
2937 s48_ShpS = (Snewspace_beginS);
2938 Sweak_pointer_hpS = NULL;s48_gc_root();
2939 arg1K0 = (Snewspace_beginS);
2940 goto L14786;}
2941 L14786: {
2942 start_338X = arg1K0;
2943 end_339X = s48_ShpS;s48_trace_locationsB(start_338X, end_339X);
2944 if (((PS_SHIFT_RIGHT_INLINE(((s48_SlimitS) - (s48_ShpS)), 3)) < 0)) {
2945 ps_error("GC error: ran out of space in new heap", 0);
2946 goto L14722;}
2947 else {
2948 if ((end_339X < (s48_ShpS))) {
2949 arg1K0 = end_339X;
2950 goto L14786;}
2951 else {
2952 goto L14722;}}}
2953 L14722: {
2954 if (((Sweak_pointer_hpS) == NULL)) {
2955 goto L14724;}
2956 else {
2957 x_340X = Sweak_pointer_limitS;
2958 end_341X = Sweak_pointer_hpS;
2959 arg1K0 = (x_340X + -2048);
2960 arg1K1 = end_341X;
2961 goto L10304;}}
2962 L14724: {
2963 v_342X = (PS_SHIFT_RIGHT_INLINE(((s48_SlimitS) - (s48_ShpS)), 3)) < ((PS_SHIFT_RIGHT_INLINE((7 + ((Snewspace_endS) - (Snewspace_beginS))), 3)) / 10);s48_post_gc_cleanup(1, v_342X);
2964 Sgc_countS = (1 + (Sgc_countS));
2965 end_seconds_343X = s48_run_time(&end_mseconds_344X);
2966 if ((end_mseconds_344X < start_mseconds_333X)) {
2967 Sgc_secondsS = (-1 + ((Sgc_secondsS) + (end_seconds_343X - start_seconds_332X)));
2968 Sgc_msecondsS = ((Sgc_msecondsS) + ((1000 + end_mseconds_344X) - start_mseconds_333X));
2969 return;}
2970 else {
2971 Sgc_secondsS = ((Sgc_secondsS) + (end_seconds_343X - start_seconds_332X));
2972 Sgc_msecondsS = ((Sgc_msecondsS) + (end_mseconds_344X - start_mseconds_333X));
2973 return;}}
2974 L10304: {
2975 start_345X = arg1K0;
2976 end_346X = arg1K1;
2977 next_347X = ((char *) (*((long *) (start_345X + 16))));
2978 arg1K0 = start_345X;
2979 goto L6538;}
2980 L6538: {
2981 scan_348X = arg1K0;
2982 if ((scan_348X < end_346X)) {
2983 *((long *) scan_348X) = (long) (2102);
2984 value_349X = *((long *) (scan_348X + 8));
2985 if ((3 == (3 & value_349X))) {
2986 a_350X = ((char *) (-3 + value_349X));
2987 if ((a_350X < (Sfrom_beginS))) {
2988 goto L6584;}
2989 else {
2990 if ((a_350X < (Sfrom_endS))) {
2991 if ((3 == (3 & value_349X))) {
2992 h_351X = *((long *) (((char *) (-11 + value_349X))));
2993 if ((3 == (3 & h_351X))) {
2994 arg0K0 = h_351X;
2995 goto L6579;}
2996 else {
2997 arg0K0 = 1;
2998 goto L6579;}}
2999 else {
3000 goto L6584;}}
3001 else {
3002 goto L6584;}}}
3003 else {
3004 goto L6584;}}
3005 else {
3006 if ((next_347X == NULL)) {
3007 if ((end_341X < (Sweak_pointer_limitS))) {
3008 *((long *) end_341X) = (long) ((70 + (PS_SHIFT_LEFT_INLINE((-8 & ((Sweak_pointer_limitS) - (end_341X + 8))), 8))));
3009 goto L14724;}
3010 else {
3011 goto L14724;}}
3012 else {
3013 arg1K0 = (next_347X + -2048);
3014 arg1K1 = next_347X;
3015 goto L10304;}}}
3016 L6584: {
3017 arg1K0 = (scan_348X + 16);
3018 goto L6538;}
3019 L6579: {
3020 x2_352X = arg0K0;
3021 *((long *) (scan_348X + 8)) = (long) (x2_352X);
3022 goto L6584;}
3023 }
s48_make_availableAgc(long len_353X)3024 void s48_make_availableAgc(long len_353X)
3025 {
3026 char x_354X;
3027 { x_354X = ((s48_ShpS) + (-8 & (7 + len_353X))) < (s48_SlimitS);
3028 if (x_354X) {
3029 goto L14840;}
3030 else {s48_collect(0);
3031 goto L14840;}}
3032 L14840: {
3033 if ((((s48_ShpS) + (-8 & (7 + len_353X))) < (s48_SlimitS))) {
3034 return;}
3035 else {
3036 ps_error("Scheme 48 heap overflow", 0);
3037 return;}}
3038 }
s48_allocate_tracedAgc(long len_355X)3039 char * s48_allocate_tracedAgc(long len_355X)
3040 {
3041 char * new_357X;
3042 char x_356X;
3043 { x_356X = ((s48_ShpS) + (-8 & (7 + len_355X))) < (s48_SlimitS);
3044 if (x_356X) {
3045 goto L14914;}
3046 else {s48_collect(0);
3047 goto L14914;}}
3048 L14914: {
3049 if ((((s48_ShpS) + (-8 & (7 + len_355X))) < (s48_SlimitS))) {
3050 new_357X = s48_ShpS;
3051 s48_ShpS = ((s48_ShpS) + (-8 & (7 + len_355X)));
3052 return new_357X;}
3053 else {
3054 return NULL;}}
3055 }
s48_allocate_weakAgc(long len_358X)3056 char * s48_allocate_weakAgc(long len_358X)
3057 {
3058 char * new_360X;
3059 char x_359X;
3060 { x_359X = ((s48_ShpS) + (-8 & (7 + len_358X))) < (s48_SlimitS);
3061 if (x_359X) {
3062 goto L14986;}
3063 else {s48_collect(0);
3064 goto L14986;}}
3065 L14986: {
3066 if ((((s48_ShpS) + (-8 & (7 + len_358X))) < (s48_SlimitS))) {
3067 new_360X = s48_ShpS;
3068 s48_ShpS = ((s48_ShpS) + (-8 & (7 + len_358X)));
3069 return new_360X;}
3070 else {
3071 return NULL;}}
3072 }
s48_allocate_untracedAgc(long len_361X)3073 char * s48_allocate_untracedAgc(long len_361X)
3074 {
3075 char * new_363X;
3076 char x_362X;
3077 { x_362X = ((s48_ShpS) + (-8 & (7 + len_361X))) < (s48_SlimitS);
3078 if (x_362X) {
3079 goto L15007;}
3080 else {s48_collect(0);
3081 goto L15007;}}
3082 L15007: {
3083 if ((((s48_ShpS) + (-8 & (7 + len_361X))) < (s48_SlimitS))) {
3084 new_363X = s48_ShpS;
3085 s48_ShpS = ((s48_ShpS) + (-8 & (7 + len_361X)));
3086 return new_363X;}
3087 else {
3088 return NULL;}}
3089 }
s48_allocate_stob(long type_364X,long size_365X)3090 long s48_allocate_stob(long type_364X, long size_365X)
3091 {
3092 long arg0K0;
3093 char * arg1K0;
3094 char * thing_373X;
3095 char * new_372X;
3096 char * new_371X;
3097 char x_370X;
3098 char x_369X;
3099 long needed_368X;
3100 long length_in_bytes_367X;
3101 char tracedP_366X;
3102 { tracedP_366X = type_364X < 16;
3103 if (tracedP_366X) {
3104 arg0K0 = (PS_SHIFT_LEFT_INLINE(size_365X, 3));
3105 goto L15054;}
3106 else {
3107 arg0K0 = size_365X;
3108 goto L15054;}}
3109 L15054: {
3110 length_in_bytes_367X = arg0K0;
3111 needed_368X = 8 + length_in_bytes_367X;
3112 if (tracedP_366X) {
3113 x_369X = ((s48_ShpS) + (-8 & (7 + needed_368X))) < (s48_SlimitS);
3114 if (x_369X) {
3115 goto L15120;}
3116 else {s48_collect(0);
3117 goto L15120;}}
3118 else {
3119 x_370X = ((s48_ShpS) + (-8 & (7 + needed_368X))) < (s48_SlimitS);
3120 if (x_370X) {
3121 goto L15139;}
3122 else {s48_collect(0);
3123 goto L15139;}}}
3124 L15120: {
3125 if ((((s48_ShpS) + (-8 & (7 + needed_368X))) < (s48_SlimitS))) {
3126 new_371X = s48_ShpS;
3127 s48_ShpS = ((s48_ShpS) + (-8 & (7 + needed_368X)));
3128 arg1K0 = new_371X;
3129 goto L15070;}
3130 else {
3131 arg1K0 = NULL;
3132 goto L15070;}}
3133 L15139: {
3134 if ((((s48_ShpS) + (-8 & (7 + needed_368X))) < (s48_SlimitS))) {
3135 new_372X = s48_ShpS;
3136 s48_ShpS = ((s48_ShpS) + (-8 & (7 + needed_368X)));
3137 arg1K0 = new_372X;
3138 goto L15070;}
3139 else {
3140 arg1K0 = NULL;
3141 goto L15070;}}
3142 L15070: {
3143 thing_373X = arg1K0;
3144 if ((thing_373X == NULL)) {
3145 ps_error("insufficient heap space for external allocation", 0);
3146 goto L15082;}
3147 else {
3148 goto L15082;}}
3149 L15082: {
3150 *((long *) thing_373X) = (long) ((2 + (PS_SHIFT_LEFT_INLINE(((PS_SHIFT_LEFT_INLINE(length_in_bytes_367X, 6)) + type_364X), 2))));
3151 return (3 + (((long) (thing_373X + 8))));}
3152 }
s48_allocate_weak_stob(long type_374X,long size_375X)3153 long s48_allocate_weak_stob(long type_374X, long size_375X)
3154 {
3155
3156 { return s48_allocate_stob(type_374X, size_375X);}
3157 }
s48_read_image(char * image_filename_376X,long max_heap_size_377X)3158 long s48_read_image(char *image_filename_376X, long max_heap_size_377X)
3159 {
3160 struct image_location *arg2K0;
3161 struct table *arg3K0;
3162 char *arg5K1;
3163 char arg4K1;
3164 char arg4K0;
3165 char * arg1K0;
3166 long arg0K2;
3167 long arg0K1;
3168 long arg0K0;
3169 FILE * merged_arg6K2;
3170 struct table *merged_arg3K1;
3171 char * merged_arg1K1;
3172 char * merged_arg1K0;
3173 long merged_arg0K2;
3174 long merged_arg0K1;
3175 long merged_arg0K0;
3176
3177 #ifdef USE_DIRECT_THREADING
3178 void *relocateD2_return_address;
3179 #else
3180 int relocateD2_return_tag;
3181 #endif
3182 long relocateD20_return_value;
3183 #ifdef USE_DIRECT_THREADING
3184 void *old_Gnew_addr_return_address;
3185 #else
3186 int old_Gnew_addr_return_tag;
3187 #endif
3188 char * old_Gnew_addr0_return_value;
3189 #ifdef USE_DIRECT_THREADING
3190 void *parse_reachable_objects_return_address;
3191 #else
3192 int parse_reachable_objects_return_tag;
3193 #endif
3194 long parse_reachable_objects0_return_value;
3195 #ifdef USE_DIRECT_THREADING
3196 void *alloc_object_return_address;
3197 #else
3198 int alloc_object_return_tag;
3199 #endif
3200 char * alloc_object0_return_value;
3201 #ifdef USE_DIRECT_THREADING
3202 void *allocate_table_return_address;
3203 #else
3204 int allocate_table_return_tag;
3205 #endif
3206 long allocate_table0_return_value;
3207 #ifdef USE_DIRECT_THREADING
3208 void *relocate_binding_table_bibopB_return_address;
3209 #else
3210 int relocate_binding_table_bibopB_return_tag;
3211 #endif
3212 #ifdef USE_DIRECT_THREADING
3213 void *relocateD0_return_address;
3214 #else
3215 int relocateD0_return_tag;
3216 #endif
3217 long relocateD00_return_value;
3218 #ifdef USE_DIRECT_THREADING
3219 void *relocate_binding_table_two_spaceB_return_address;
3220 #else
3221 int relocate_binding_table_two_spaceB_return_tag;
3222 #endif
3223 #ifdef USE_DIRECT_THREADING
3224 void *reverse_byte_orderB_return_address;
3225 #else
3226 int reverse_byte_orderB_return_tag;
3227 #endif
3228 #ifdef USE_DIRECT_THREADING
3229 void *really_read_image_area_return_address;
3230 #else
3231 int really_read_image_area_return_tag;
3232 #endif
3233 long really_read_image_area0_return_value;
3234 long address_378X;
3235 char * addr_379X;
3236 long format_380X;
3237 char * from_addr_381X;
3238 char * to_addr_382X;
3239 long image_format_383X;
3240 char * current_address_384X;
3241 long size_in_bytes_385X;
3242 long tab_386X;
3243 long image_format_387X;
3244 long table_388X;
3245 struct table *stob_table_389X;
3246 long address_390X;
3247 long table_391X;
3248 long delta_392X;
3249 char * start_393X;
3250 char * end_394X;
3251 char * new_start_addr_395X;
3252 long img_heap_size_396X;
3253 FILE * port_397X;
3254 struct image_location *image_location_753X;
3255 long v_752X;
3256 char * address_751X;
3257 char * y_750X;
3258 char * y_749X;
3259 char * v_748X;
3260 char * y_747X;
3261 char * new_address_746X;
3262 struct image_location *image_location_745X;
3263 long v_744X;
3264 struct image_location *image_location_743X;
3265 long v_742X;
3266 char * index_741X;
3267 char * new_address_740X;
3268 struct image_location *v_739X;
3269 long v_738X;
3270 char * address_737X;
3271 char * new_address_736X;
3272 char * v_735X;
3273 char * new_address_734X;
3274 long size_in_cells_733X;
3275 struct image_location *v_732X;
3276 long v_731X;
3277 char * v_730X;
3278 char * new_address_729X;
3279 long size_in_bytes_728X;
3280 long size_in_cells_727X;
3281 long header_cell_726X;
3282 char * x1_725X;
3283 char * current_addr_724X;
3284 struct image_location *v_723X;
3285 long v_722X;
3286 char * current_addr_721X;
3287 long size_in_cells_720X;
3288 long cell_719X;
3289 char * x1_718X;
3290 char * current_addr_717X;
3291 long v_716X;
3292 struct image_location *val_715X;
3293 struct image_location *image_location_714X;
3294 char * new_address_713X;
3295 char * new_712X;
3296 char x_711X;
3297 char * pointer_710X;
3298 char * new_709X;
3299 long v_708X;
3300 char x_707X;
3301 long size_in_byte_706X;
3302 long size_705X;
3303 long cell_704X;
3304 char * addr_703X;
3305 long val_702X;
3306 long next_701X;
3307 long next_700X;
3308 long link_699X;
3309 long entry_698X;
3310 long value_697X;
3311 long bucket_696X;
3312 long bucket_695X;
3313 long link_694X;
3314 long i_693X;
3315 struct image_location *image_location_692X;
3316 long v_691X;
3317 char * address_690X;
3318 long val_689X;
3319 long next_688X;
3320 long next_687X;
3321 long link_686X;
3322 long entry_685X;
3323 long value_684X;
3324 long bucket_683X;
3325 long bucket_682X;
3326 long link_681X;
3327 long i_680X;
3328 char * next_679X;
3329 long value_678X;
3330 long byte_a_677X;
3331 char * addr_b_676X;
3332 char * addr_a_675X;
3333 long j_674X;
3334 long i_673X;
3335 char * ptr_672X;
3336 long status_671X;
3337 long status_670X;
3338 char *string_669X;
3339 char okayP_668X;
3340 long status_667X;
3341 char eofP_666X;
3342 long got_665X;
3343 long need_664X;
3344 long val_663X;
3345 long val_662X;
3346 long next_661X;
3347 long next_660X;
3348 long next_659X;
3349 long next_658X;
3350 struct image_location *image_location_657X;
3351 long v_656X;
3352 long i_655X;
3353 long link_654X;
3354 long entry_653X;
3355 long link_652X;
3356 long entry_651X;
3357 char * address_650X;
3358 long cell_649X;
3359 long size_648X;
3360 char * address_647X;
3361 struct image_location **values_646X;
3362 long *keys_645X;
3363 struct table *table_644X;
3364 long d_643X;
3365 long value_642X;
3366 long value_641X;
3367 long cell_640X;
3368 long resumer_records_639X;
3369 long expr_638X;
3370 long descriptor_637X;
3371 char * ptr_636X;
3372 long bucket_635X;
3373 long bucket_634X;
3374 long bucket_633X;
3375 long bucket_632X;
3376 long expr_631X;
3377 long v_630X;
3378 char * start_629X;
3379 long link_628X;
3380 long i_627X;
3381 long link_626X;
3382 long i_625X;
3383 long expr_624X;
3384 long v_623X;
3385 long table_622X;
3386 long expr_621X;
3387 struct table *stob_table_620X;
3388 long table_619X;
3389 long expr_618X;
3390 long v_617X;
3391 struct image_location *image_location_616X;
3392 long v_615X;
3393 long descriptor_614X;
3394 long expr_613X;
3395 char * address_612X;
3396 long descriptor_611X;
3397 long expr_610X;
3398 long descriptor_609X;
3399 long expr_608X;
3400 long status_607X;
3401 long status_606X;
3402 long status_605X;
3403 char * v_604X;
3404 char * v_603X;
3405 long expr_602X;
3406 long status_601X;
3407 long descriptor_600X;
3408 long expr_599X;
3409 long status_598X;
3410 long status_597X;
3411 long status_596X;
3412 long status_595X;
3413 long status_594X;
3414 long status_593X;
3415 char eofP_592X;
3416 char v_591X;
3417 long expr_590X;
3418 long status_589X;
3419 char *string_588X;
3420 char okayP_587X;
3421 long status_586X;
3422 long status_585X;
3423 long status_584X;
3424 long status_583X;
3425 long descriptor_582X;
3426 long status_581X;
3427 long expr_580X;
3428 long expr_579X;
3429 long expr_578X;
3430 long status_577X;
3431 char eofP_576X;
3432 long got_575X;
3433 long need_574X;
3434 struct table *v_573X;
3435 long status_572X;
3436 long status_571X;
3437 long status_570X;
3438 long status_569X;
3439 long status_568X;
3440 long status_567X;
3441 char eofP_566X;
3442 char v_565X;
3443 char *string_564X;
3444 char okayP_563X;
3445 long status_562X;
3446 char eofP_561X;
3447 long expr_560X;
3448 struct table *table_559X;
3449 long i_558X;
3450 long status_557X;
3451 char eofP_556X;
3452 long got_555X;
3453 long need_554X;
3454 char * address_553X;
3455 long cells_552X;
3456 long status_551X;
3457 char eofP_550X;
3458 char ch_549X;
3459 long we_548X;
3460 long cells_547X;
3461 long status_546X;
3462 long *keys_545X;
3463 char * v_544X;
3464 long expr_543X;
3465 long status_542X;
3466 char eofP_541X;
3467 long thing_540X;
3468 long status_539X;
3469 long wh_538X;
3470 long cells_537X;
3471 long v_536X;
3472 long byte_a_535X;
3473 char * addr_b_534X;
3474 char * addr_a_533X;
3475 long j_532X;
3476 long i_531X;
3477 long status_530X;
3478 long v_529X;
3479 char x_528X;
3480 long size_in_byte_527X;
3481 char * new_hp_526X;
3482 long delta_525X;
3483 char reverse_byte_orderP_524X;
3484 long status_523X;
3485 char eofP_522X;
3486 long thing_521X;
3487 long status_520X;
3488 long expr_519X;
3489 long status_518X;
3490 char eofP_517X;
3491 long thing_516X;
3492 long status_515X;
3493 long le_514X;
3494 long cells_513X;
3495 long status_512X;
3496 char eofP_511X;
3497 long thing_510X;
3498 long status_509X;
3499 long expr_508X;
3500 long status_507X;
3501 char eofP_506X;
3502 long thing_505X;
3503 long status_504X;
3504 long lh_503X;
3505 long cells_502X;
3506 long status_501X;
3507 char eofP_500X;
3508 long got_499X;
3509 char * new_addr_498X;
3510 long status_497X;
3511 char eofP_496X;
3512 long thing_495X;
3513 long status_494X;
3514 long expr_493X;
3515 long status_492X;
3516 char eofP_491X;
3517 long thing_490X;
3518 long status_489X;
3519 long se_488X;
3520 long cells_487X;
3521 char * temp_486X;
3522 char * temp_485X;
3523 char * temp_484X;
3524 char * temp_483X;
3525 long semisize_482X;
3526 long status_481X;
3527 char eofP_480X;
3528 long thing_479X;
3529 long status_478X;
3530 long expr_477X;
3531 long status_476X;
3532 char eofP_475X;
3533 long thing_474X;
3534 long status_473X;
3535 long sh_472X;
3536 long cells_471X;
3537 long cells_470X;
3538 char * heap_469X;
3539 long heap_size_468X;
3540 long status_467X;
3541 long status_466X;
3542 char eofP_465X;
3543 long thing_464X;
3544 long status_463X;
3545 long status_462X;
3546 char eofP_461X;
3547 long thing_460X;
3548 long status_459X;
3549 long sb_458X;
3550 long cells_457X;
3551 long status_456X;
3552 char eofP_455X;
3553 long thing_454X;
3554 long status_453X;
3555 long cells_452X;
3556 long minimum_size_451X;
3557 char * image_start_address_450X;
3558 long format_449X;
3559 long status_448X;
3560 long status_447X;
3561 long status_446X;
3562 long status_445X;
3563 long status_444X;
3564 long status_443X;
3565 char eofP_442X;
3566 long thing_441X;
3567 long status_440X;
3568 long status_439X;
3569 char eofP_438X;
3570 long thing_437X;
3571 long status_436X;
3572 long status_435X;
3573 long status_434X;
3574 long status_433X;
3575 long status_432X;
3576 long status_431X;
3577 long old_bytes_per_cell_430X;
3578 long status_429X;
3579 char eofP_428X;
3580 char thing_427X;
3581 long status_426X;
3582 char eofP_425X;
3583 long thing_424X;
3584 long status_423X;
3585 long format_422X;
3586 long status_421X;
3587 char eofP_420X;
3588 long status_419X;
3589 char eofP_418X;
3590 char ch_417X;
3591 long i_416X;
3592 long status_415X;
3593 char eofP_414X;
3594 long n_413X;
3595 long status_412X;
3596 char same_versionP_411X;
3597 long status_410X;
3598 char eofP_409X;
3599 long status_408X;
3600 char eofP_407X;
3601 char ch_406X;
3602 long status_405X;
3603 long status_404X;
3604 char eofP_403X;
3605 char ch_402X;
3606 long status_401X;
3607 long status_400X;
3608 long status_399X;
3609 FILE * port_398X;
3610 { SstatusS = NO_ERRORS;
3611 SeofPS = 0;
3612 port_398X = ps_open_input_file(image_filename_376X, &status_399X);
3613 if ((status_399X == NO_ERRORS)) {
3614 status_400X = SstatusS;
3615 if ((status_400X == NO_ERRORS)) {
3616 if ((SeofPS)) {
3617 goto L7392;}
3618 else {
3619 goto L8915;}}
3620 else {
3621 goto L7392;}}
3622 else {
3623 ps_write_string("Can't open heap image file", (stderr));
3624 { long ignoreXX;
3625 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3626 ps_write_string((ps_error_string(status_399X)), (stderr));
3627 { long ignoreXX;
3628 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3629 return -1;}}
3630 L7392: {
3631 status_401X = SstatusS;
3632 if ((status_401X == NO_ERRORS)) {
3633 if ((SeofPS)) {
3634 goto L7443;}
3635 else {
3636 goto L8835;}}
3637 else {
3638 goto L7443;}}
3639 L8915: {
3640 PS_READ_CHAR(port_398X, ch_402X, eofP_403X, status_404X)
3641 if (eofP_403X) {
3642 arg4K0 = eofP_403X;
3643 arg0K1 = status_404X;
3644 goto L7366;}
3645 else {
3646 if ((status_404X == NO_ERRORS)) {
3647 if ((12 == ch_402X)) {
3648 arg4K0 = 0;
3649 arg0K1 = status_404X;
3650 goto L7366;}
3651 else {
3652 goto L8915;}}
3653 else {
3654 arg4K0 = eofP_403X;
3655 arg0K1 = status_404X;
3656 goto L7366;}}}
3657 L7443: {
3658 status_405X = SstatusS;
3659 if ((status_405X == NO_ERRORS)) {
3660 if ((SeofPS)) {
3661 arg4K0 = 0;
3662 goto L7494;}
3663 else {
3664 arg0K0 = 0;
3665 goto L8769;}}
3666 else {
3667 arg4K0 = 0;
3668 goto L7494;}}
3669 L8835: {
3670 PS_READ_CHAR(port_398X, ch_406X, eofP_407X, status_408X)
3671 if (eofP_407X) {
3672 arg4K0 = eofP_407X;
3673 arg0K1 = status_408X;
3674 goto L7417;}
3675 else {
3676 if ((status_408X == NO_ERRORS)) {
3677 if ((10 == ch_406X)) {
3678 arg4K0 = 0;
3679 arg0K1 = status_408X;
3680 goto L7417;}
3681 else {
3682 goto L8835;}}
3683 else {
3684 arg4K0 = eofP_407X;
3685 arg0K1 = status_408X;
3686 goto L7417;}}}
3687 L7366: {
3688 eofP_409X = arg4K0;
3689 status_410X = arg0K1;
3690 if (eofP_409X) {
3691 SeofPS = 1;
3692 goto L7392;}
3693 else {
3694 if ((status_410X == NO_ERRORS)) {
3695 goto L7392;}
3696 else {
3697 SeofPS = 1;
3698 if (((SstatusS) == NO_ERRORS)) {
3699 SstatusS = status_410X;
3700 goto L7392;}
3701 else {
3702 goto L7392;}}}}
3703 L7494: {
3704 same_versionP_411X = arg4K0;
3705 status_412X = SstatusS;
3706 if ((status_412X == NO_ERRORS)) {
3707 if ((SeofPS)) {
3708 arg0K0 = -1;
3709 goto L7547;}
3710 else {
3711 PS_READ_INTEGER(port_398X, n_413X, eofP_414X, status_415X)
3712 if (eofP_414X) {
3713 SeofPS = 1;
3714 arg0K0 = -1;
3715 goto L7547;}
3716 else {
3717 if ((status_415X == NO_ERRORS)) {
3718 arg0K0 = n_413X;
3719 goto L7547;}
3720 else {
3721 SeofPS = 1;
3722 if (((SstatusS) == NO_ERRORS)) {
3723 SstatusS = status_415X;
3724 arg0K0 = -1;
3725 goto L7547;}
3726 else {
3727 arg0K0 = -1;
3728 goto L7547;}}}}}
3729 else {
3730 arg0K0 = -1;
3731 goto L7547;}}
3732 L8769: {
3733 i_416X = arg0K0;
3734 PS_READ_CHAR(port_398X, ch_417X, eofP_418X, status_419X)
3735 if (eofP_418X) {
3736 arg4K0 = 0;
3737 arg4K1 = eofP_418X;
3738 arg0K2 = status_419X;
3739 goto L7468;}
3740 else {
3741 if ((status_419X == NO_ERRORS)) {
3742 if ((i_416X == (strlen((char *) "Vanilla 40")))) {
3743 arg4K0 = (10 == ch_417X);
3744 arg4K1 = 0;
3745 arg0K2 = status_419X;
3746 goto L7468;}
3747 else {
3748 if ((ch_417X == (*("Vanilla 40" + i_416X)))) {
3749 arg0K0 = (1 + i_416X);
3750 goto L8769;}
3751 else {
3752 arg4K0 = 0;
3753 arg4K1 = 0;
3754 arg0K2 = status_419X;
3755 goto L7468;}}}
3756 else {
3757 arg4K0 = 0;
3758 arg4K1 = eofP_418X;
3759 arg0K2 = status_419X;
3760 goto L7468;}}}
3761 L7417: {
3762 eofP_420X = arg4K0;
3763 status_421X = arg0K1;
3764 if (eofP_420X) {
3765 SeofPS = 1;
3766 goto L7443;}
3767 else {
3768 if ((status_421X == NO_ERRORS)) {
3769 goto L7443;}
3770 else {
3771 SeofPS = 1;
3772 if (((SstatusS) == NO_ERRORS)) {
3773 SstatusS = status_421X;
3774 goto L7443;}
3775 else {
3776 goto L7443;}}}}
3777 L7547: {
3778 format_422X = arg0K0;
3779 status_423X = SstatusS;
3780 if ((status_423X == NO_ERRORS)) {
3781 if ((SeofPS)) {
3782 arg0K0 = -1;
3783 goto L7600;}
3784 else {
3785 PS_READ_INTEGER(port_398X, thing_424X, eofP_425X, status_426X)
3786 if (eofP_425X) {
3787 SeofPS = 1;
3788 arg0K0 = -1;
3789 goto L7600;}
3790 else {
3791 if ((status_426X == NO_ERRORS)) {
3792 arg0K0 = thing_424X;
3793 goto L7600;}
3794 else {
3795 SeofPS = 1;
3796 if (((SstatusS) == NO_ERRORS)) {
3797 SstatusS = status_426X;
3798 arg0K0 = -1;
3799 goto L7600;}
3800 else {
3801 arg0K0 = -1;
3802 goto L7600;}}}}}
3803 else {
3804 arg0K0 = -1;
3805 goto L7600;}}
3806 L7468: {
3807 thing_427X = arg4K0;
3808 eofP_428X = arg4K1;
3809 status_429X = arg0K2;
3810 if (eofP_428X) {
3811 SeofPS = 1;
3812 arg4K0 = 0;
3813 goto L7494;}
3814 else {
3815 if ((status_429X == NO_ERRORS)) {
3816 arg4K0 = thing_427X;
3817 goto L7494;}
3818 else {
3819 SeofPS = 1;
3820 if (((SstatusS) == NO_ERRORS)) {
3821 SstatusS = status_429X;
3822 arg4K0 = 0;
3823 goto L7494;}
3824 else {
3825 arg4K0 = 0;
3826 goto L7494;}}}}
3827 L7600: {
3828 old_bytes_per_cell_430X = arg0K0;
3829 if (((SstatusS) == NO_ERRORS)) {
3830 if ((SeofPS)) {
3831 SstatusS = EDOM;
3832 ps_write_string("Premature EOF when reading image file", (stderr));
3833 { long ignoreXX;
3834 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3835 status_431X = SstatusS;
3836 if ((status_431X == NO_ERRORS)) {
3837 goto L8048;}
3838 else {
3839 ps_write_string((ps_error_string((SstatusS))), (stderr));
3840 { long ignoreXX;
3841 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3842 goto L8048;}}
3843 else {
3844 if (same_versionP_411X) {
3845 if ((0 == format_422X)) {
3846 goto L8112;}
3847 else {
3848 if ((1 == format_422X)) {
3849 goto L8112;}
3850 else {
3851 ps_write_string("Unknown image format", (stderr));
3852 { long ignoreXX;
3853 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3854 status_432X = SstatusS;
3855 if ((status_432X == NO_ERRORS)) {
3856 goto L8123;}
3857 else {
3858 ps_write_string((ps_error_string((SstatusS))), (stderr));
3859 { long ignoreXX;
3860 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3861 goto L8123;}}}}
3862 else {
3863 ps_write_string("Format of image is incompatible with this version of system", (stderr));
3864 { long ignoreXX;
3865 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3866 status_433X = SstatusS;
3867 if ((status_433X == NO_ERRORS)) {
3868 goto L8082;}
3869 else {
3870 ps_write_string((ps_error_string((SstatusS))), (stderr));
3871 { long ignoreXX;
3872 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3873 goto L8082;}}}}
3874 else {
3875 ps_write_string("Error reading from image file", (stderr));
3876 { long ignoreXX;
3877 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3878 status_434X = SstatusS;
3879 if ((status_434X == NO_ERRORS)) {
3880 goto L8013;}
3881 else {
3882 ps_write_string((ps_error_string((SstatusS))), (stderr));
3883 { long ignoreXX;
3884 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3885 goto L8013;}}}
3886 L8048: {
3887 status_435X = ps_close(port_398X);
3888 if ((status_435X == NO_ERRORS)) {
3889 arg0K0 = -1;
3890 arg0K1 = format_422X;
3891 goto L16783;}
3892 else {
3893 ps_write_string("Error closing image file", (stderr));
3894 { long ignoreXX;
3895 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3896 arg0K0 = -1;
3897 arg0K1 = format_422X;
3898 goto L16783;}}
3899 L8112: {
3900 if ((8 == old_bytes_per_cell_430X)) {
3901 if ((0 == format_422X)) {
3902 status_436X = SstatusS;
3903 if ((status_436X == NO_ERRORS)) {
3904 if ((SeofPS)) {
3905 arg0K0 = -1;
3906 goto L4995;}
3907 else {
3908 PS_READ_INTEGER(port_398X, thing_437X, eofP_438X, status_439X)
3909 if (eofP_438X) {
3910 SeofPS = 1;
3911 arg0K0 = -1;
3912 goto L4995;}
3913 else {
3914 if ((status_439X == NO_ERRORS)) {
3915 arg0K0 = thing_437X;
3916 goto L4995;}
3917 else {
3918 SeofPS = 1;
3919 if (((SstatusS) == NO_ERRORS)) {
3920 SstatusS = status_439X;
3921 arg0K0 = -1;
3922 goto L4995;}
3923 else {
3924 arg0K0 = -1;
3925 goto L4995;}}}}}
3926 else {
3927 arg0K0 = -1;
3928 goto L4995;}}
3929 else {
3930 if ((1 == format_422X)) {
3931 status_440X = SstatusS;
3932 if ((status_440X == NO_ERRORS)) {
3933 if ((SeofPS)) {
3934 arg0K0 = -1;
3935 goto L5113;}
3936 else {
3937 PS_READ_INTEGER(port_398X, thing_441X, eofP_442X, status_443X)
3938 if (eofP_442X) {
3939 SeofPS = 1;
3940 arg0K0 = -1;
3941 goto L5113;}
3942 else {
3943 if ((status_443X == NO_ERRORS)) {
3944 arg0K0 = thing_441X;
3945 goto L5113;}
3946 else {
3947 SeofPS = 1;
3948 if (((SstatusS) == NO_ERRORS)) {
3949 SstatusS = status_443X;
3950 arg0K0 = -1;
3951 goto L5113;}
3952 else {
3953 arg0K0 = -1;
3954 goto L5113;}}}}}
3955 else {
3956 arg0K0 = -1;
3957 goto L5113;}}
3958 else {
3959 ps_error("check-all-data!: Unknown image format (this can't happen)", 0);
3960 goto L7642;}}}
3961 else {
3962 ps_write_string("Incompatible bytes-per-cell in image", (stderr));
3963 { long ignoreXX;
3964 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3965 status_444X = SstatusS;
3966 if ((status_444X == NO_ERRORS)) {
3967 goto L8157;}
3968 else {
3969 ps_write_string((ps_error_string((SstatusS))), (stderr));
3970 { long ignoreXX;
3971 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3972 goto L8157;}}}
3973 L8123: {
3974 status_445X = ps_close(port_398X);
3975 if ((status_445X == NO_ERRORS)) {
3976 arg0K0 = -1;
3977 arg0K1 = format_422X;
3978 goto L16783;}
3979 else {
3980 ps_write_string("Error closing image file", (stderr));
3981 { long ignoreXX;
3982 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3983 arg0K0 = -1;
3984 arg0K1 = format_422X;
3985 goto L16783;}}
3986 L8082: {
3987 status_446X = ps_close(port_398X);
3988 if ((status_446X == NO_ERRORS)) {
3989 arg0K0 = -1;
3990 arg0K1 = format_422X;
3991 goto L16783;}
3992 else {
3993 ps_write_string("Error closing image file", (stderr));
3994 { long ignoreXX;
3995 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
3996 arg0K0 = -1;
3997 arg0K1 = format_422X;
3998 goto L16783;}}
3999 L8013: {
4000 status_447X = ps_close(port_398X);
4001 if ((status_447X == NO_ERRORS)) {
4002 arg0K0 = -1;
4003 arg0K1 = format_422X;
4004 goto L16783;}
4005 else {
4006 ps_write_string("Error closing image file", (stderr));
4007 { long ignoreXX;
4008 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4009 arg0K0 = -1;
4010 arg0K1 = format_422X;
4011 goto L16783;}}
4012 L16783: {
4013 status_448X = arg0K0;
4014 format_449X = arg0K1;
4015 if ((0 == status_448X)) {
4016 if (((SstatusS) == NO_ERRORS)) {
4017 image_start_address_450X = Simg_start_addrS;
4018 minimum_size_451X = PS_SHIFT_LEFT_INLINE((Simg_heap_sizeS), 2);
4019 if ((max_heap_size_377X < minimum_size_451X)) {
4020 ps_write_string("Heap size ", (stderr));
4021 ps_write_integer(max_heap_size_377X, (stderr));
4022 ps_write_string(" is too small, using ", (stderr));
4023 ps_write_integer(minimum_size_451X, (stderr));
4024 ps_write_string(" cells", (stderr));
4025 { long ignoreXX;
4026 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4027 arg0K0 = minimum_size_451X;
4028 goto L2325;}
4029 else {
4030 arg0K0 = max_heap_size_377X;
4031 goto L2325;}}
4032 else {
4033 return -1;}}
4034 else {
4035 return -1;}}
4036 L4995: {
4037 cells_452X = arg0K0;
4038 Simg_start_addrS = (((char *) (PS_SHIFT_LEFT_INLINE(cells_452X, 3))));
4039 status_453X = SstatusS;
4040 if ((status_453X == NO_ERRORS)) {
4041 if ((SeofPS)) {
4042 arg0K0 = -1;
4043 goto L5050;}
4044 else {
4045 PS_READ_INTEGER(port_398X, thing_454X, eofP_455X, status_456X)
4046 if (eofP_455X) {
4047 SeofPS = 1;
4048 arg0K0 = -1;
4049 goto L5050;}
4050 else {
4051 if ((status_456X == NO_ERRORS)) {
4052 arg0K0 = thing_454X;
4053 goto L5050;}
4054 else {
4055 SeofPS = 1;
4056 if (((SstatusS) == NO_ERRORS)) {
4057 SstatusS = status_456X;
4058 arg0K0 = -1;
4059 goto L5050;}
4060 else {
4061 arg0K0 = -1;
4062 goto L5050;}}}}}
4063 else {
4064 arg0K0 = -1;
4065 goto L5050;}}
4066 L5113: {
4067 cells_457X = arg0K0;
4068 sb_458X = PS_SHIFT_LEFT_INLINE(cells_457X, 3);
4069 status_459X = SstatusS;
4070 if ((status_459X == NO_ERRORS)) {
4071 if ((SeofPS)) {
4072 arg0K0 = -1;
4073 goto L5168;}
4074 else {
4075 PS_READ_INTEGER(port_398X, thing_460X, eofP_461X, status_462X)
4076 if (eofP_461X) {
4077 SeofPS = 1;
4078 arg0K0 = -1;
4079 goto L5168;}
4080 else {
4081 if ((status_462X == NO_ERRORS)) {
4082 arg0K0 = thing_460X;
4083 goto L5168;}
4084 else {
4085 SeofPS = 1;
4086 if (((SstatusS) == NO_ERRORS)) {
4087 SstatusS = status_462X;
4088 arg0K0 = -1;
4089 goto L5168;}
4090 else {
4091 arg0K0 = -1;
4092 goto L5168;}}}}}
4093 else {
4094 arg0K0 = -1;
4095 goto L5168;}}
4096 L7642: {
4097 status_463X = SstatusS;
4098 if ((status_463X == NO_ERRORS)) {
4099 if ((SeofPS)) {
4100 arg0K0 = -1;
4101 goto L7693;}
4102 else {
4103 PS_READ_INTEGER(port_398X, thing_464X, eofP_465X, status_466X)
4104 if (eofP_465X) {
4105 SeofPS = 1;
4106 arg0K0 = -1;
4107 goto L7693;}
4108 else {
4109 if ((status_466X == NO_ERRORS)) {
4110 arg0K0 = thing_464X;
4111 goto L7693;}
4112 else {
4113 SeofPS = 1;
4114 if (((SstatusS) == NO_ERRORS)) {
4115 SstatusS = status_466X;
4116 arg0K0 = -1;
4117 goto L7693;}
4118 else {
4119 arg0K0 = -1;
4120 goto L7693;}}}}}
4121 else {
4122 arg0K0 = -1;
4123 goto L7693;}}
4124 L8157: {
4125 status_467X = ps_close(port_398X);
4126 if ((status_467X == NO_ERRORS)) {
4127 arg0K0 = -1;
4128 arg0K1 = format_422X;
4129 goto L16783;}
4130 else {
4131 ps_write_string("Error closing image file", (stderr));
4132 { long ignoreXX;
4133 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4134 arg0K0 = -1;
4135 arg0K1 = format_422X;
4136 goto L16783;}}
4137 L2325: {
4138 heap_size_468X = arg0K0;
4139 heap_469X = (char *)malloc((PS_SHIFT_LEFT_INLINE(heap_size_468X, 4)));
4140 if ((heap_469X == NULL)) {
4141 ps_error("unable to allocate heap space", 0);
4142 goto L2341;}
4143 else {
4144 goto L2341;}}
4145 L5050: {
4146 cells_470X = arg0K0;
4147 Simg_end_addrS = (((char *) (PS_SHIFT_LEFT_INLINE(cells_470X, 3))));
4148 Simg_heap_sizeS = (PS_SHIFT_RIGHT_INLINE((7 + ((Simg_end_addrS) - (Simg_start_addrS))), 3));
4149 goto L7642;}
4150 L5168: {
4151 cells_471X = arg0K0;
4152 sh_472X = PS_SHIFT_LEFT_INLINE(cells_471X, 3);
4153 status_473X = SstatusS;
4154 if ((status_473X == NO_ERRORS)) {
4155 if ((SeofPS)) {
4156 arg0K0 = -1;
4157 goto L5223;}
4158 else {
4159 PS_READ_INTEGER(port_398X, thing_474X, eofP_475X, status_476X)
4160 if (eofP_475X) {
4161 SeofPS = 1;
4162 arg0K0 = -1;
4163 goto L5223;}
4164 else {
4165 if ((status_476X == NO_ERRORS)) {
4166 arg0K0 = thing_474X;
4167 goto L5223;}
4168 else {
4169 SeofPS = 1;
4170 if (((SstatusS) == NO_ERRORS)) {
4171 SstatusS = status_476X;
4172 arg0K0 = -1;
4173 goto L5223;}
4174 else {
4175 arg0K0 = -1;
4176 goto L5223;}}}}}
4177 else {
4178 arg0K0 = -1;
4179 goto L5223;}}
4180 L7693: {
4181 expr_477X = arg0K0;
4182 SsymbolsS = expr_477X;
4183 status_478X = SstatusS;
4184 if ((status_478X == NO_ERRORS)) {
4185 if ((SeofPS)) {
4186 arg0K0 = -1;
4187 goto L7746;}
4188 else {
4189 PS_READ_INTEGER(port_398X, thing_479X, eofP_480X, status_481X)
4190 if (eofP_480X) {
4191 SeofPS = 1;
4192 arg0K0 = -1;
4193 goto L7746;}
4194 else {
4195 if ((status_481X == NO_ERRORS)) {
4196 arg0K0 = thing_479X;
4197 goto L7746;}
4198 else {
4199 SeofPS = 1;
4200 if (((SstatusS) == NO_ERRORS)) {
4201 SstatusS = status_481X;
4202 arg0K0 = -1;
4203 goto L7746;}
4204 else {
4205 arg0K0 = -1;
4206 goto L7746;}}}}}
4207 else {
4208 arg0K0 = -1;
4209 goto L7746;}}
4210 L2341: {
4211 semisize_482X = PS_SHIFT_LEFT_INLINE(heap_size_468X, 3);
4212 Snewspace_beginS = heap_469X;
4213 Snewspace_endS = ((Snewspace_beginS) + semisize_482X);
4214 Soldspace_beginS = (Snewspace_endS);
4215 Soldspace_endS = ((Soldspace_beginS) + semisize_482X);
4216 if (((Soldspace_beginS) == image_start_address_450X)) {
4217 temp_483X = s48_SlimitS;
4218 s48_SlimitS = (Soldspace_limitS);
4219 Soldspace_limitS = temp_483X;
4220 temp_484X = s48_ShpS;
4221 s48_ShpS = (Soldspace_hpS);
4222 Soldspace_hpS = temp_484X;
4223 temp_485X = Snewspace_beginS;
4224 Snewspace_beginS = (Soldspace_beginS);
4225 Soldspace_beginS = temp_485X;
4226 temp_486X = Snewspace_endS;
4227 Snewspace_endS = (Soldspace_endS);
4228 Soldspace_endS = temp_486X;
4229 goto L2365;}
4230 else {
4231 goto L2365;}}
4232 L5223: {
4233 cells_487X = arg0K0;
4234 se_488X = PS_SHIFT_LEFT_INLINE(cells_487X, 3);
4235 status_489X = SstatusS;
4236 if ((status_489X == NO_ERRORS)) {
4237 if ((SeofPS)) {
4238 arg0K0 = -1;
4239 goto L5280;}
4240 else {
4241 PS_READ_INTEGER(port_398X, thing_490X, eofP_491X, status_492X)
4242 if (eofP_491X) {
4243 SeofPS = 1;
4244 arg0K0 = -1;
4245 goto L5280;}
4246 else {
4247 if ((status_492X == NO_ERRORS)) {
4248 arg0K0 = thing_490X;
4249 goto L5280;}
4250 else {
4251 SeofPS = 1;
4252 if (((SstatusS) == NO_ERRORS)) {
4253 SstatusS = status_492X;
4254 arg0K0 = -1;
4255 goto L5280;}
4256 else {
4257 arg0K0 = -1;
4258 goto L5280;}}}}}
4259 else {
4260 arg0K0 = -1;
4261 goto L5280;}}
4262 L7746: {
4263 expr_493X = arg0K0;
4264 Simported_bindingsS = expr_493X;
4265 status_494X = SstatusS;
4266 if ((status_494X == NO_ERRORS)) {
4267 if ((SeofPS)) {
4268 arg0K0 = -1;
4269 goto L7799;}
4270 else {
4271 PS_READ_INTEGER(port_398X, thing_495X, eofP_496X, status_497X)
4272 if (eofP_496X) {
4273 SeofPS = 1;
4274 arg0K0 = -1;
4275 goto L7799;}
4276 else {
4277 if ((status_497X == NO_ERRORS)) {
4278 arg0K0 = thing_495X;
4279 goto L7799;}
4280 else {
4281 SeofPS = 1;
4282 if (((SstatusS) == NO_ERRORS)) {
4283 SstatusS = status_497X;
4284 arg0K0 = -1;
4285 goto L7799;}
4286 else {
4287 arg0K0 = -1;
4288 goto L7799;}}}}}
4289 else {
4290 arg0K0 = -1;
4291 goto L7799;}}
4292 L2365: {
4293 Soldspace_hpS = (Soldspace_beginS);
4294 Soldspace_limitS = (Soldspace_endS);
4295 s48_ShpS = (Snewspace_beginS);
4296 s48_SlimitS = (Snewspace_endS);
4297 Snew_heap_start_addrS = (Snewspace_beginS);
4298 if (((SstatusS) == NO_ERRORS)) {
4299 new_addr_498X = (char *)malloc(8);
4300 got_499X = ps_read_block(port_398X, ((char *) new_addr_498X), 8, &eofP_500X, &status_501X);
4301 if ((status_501X == NO_ERRORS)) {
4302 if (eofP_500X) {
4303 goto L4812;}
4304 else {
4305 if ((got_499X < 8)) {
4306 goto L4812;}
4307 else {
4308 goto L4764;}}}
4309 else {
4310 SstatusS = status_501X;
4311 goto L4812;}}
4312 else {
4313 return -1;}}
4314 L5280: {
4315 cells_502X = arg0K0;
4316 lh_503X = PS_SHIFT_LEFT_INLINE(cells_502X, 3);
4317 status_504X = SstatusS;
4318 if ((status_504X == NO_ERRORS)) {
4319 if ((SeofPS)) {
4320 arg0K0 = -1;
4321 goto L5335;}
4322 else {
4323 PS_READ_INTEGER(port_398X, thing_505X, eofP_506X, status_507X)
4324 if (eofP_506X) {
4325 SeofPS = 1;
4326 arg0K0 = -1;
4327 goto L5335;}
4328 else {
4329 if ((status_507X == NO_ERRORS)) {
4330 arg0K0 = thing_505X;
4331 goto L5335;}
4332 else {
4333 SeofPS = 1;
4334 if (((SstatusS) == NO_ERRORS)) {
4335 SstatusS = status_507X;
4336 arg0K0 = -1;
4337 goto L5335;}
4338 else {
4339 arg0K0 = -1;
4340 goto L5335;}}}}}
4341 else {
4342 arg0K0 = -1;
4343 goto L5335;}}
4344 L7799: {
4345 expr_508X = arg0K0;
4346 Sexported_bindingsS = expr_508X;
4347 status_509X = SstatusS;
4348 if ((status_509X == NO_ERRORS)) {
4349 if ((SeofPS)) {
4350 arg0K0 = -1;
4351 goto L7852;}
4352 else {
4353 PS_READ_INTEGER(port_398X, thing_510X, eofP_511X, status_512X)
4354 if (eofP_511X) {
4355 SeofPS = 1;
4356 arg0K0 = -1;
4357 goto L7852;}
4358 else {
4359 if ((status_512X == NO_ERRORS)) {
4360 arg0K0 = thing_510X;
4361 goto L7852;}
4362 else {
4363 SeofPS = 1;
4364 if (((SstatusS) == NO_ERRORS)) {
4365 SstatusS = status_512X;
4366 arg0K0 = -1;
4367 goto L7852;}
4368 else {
4369 arg0K0 = -1;
4370 goto L7852;}}}}}
4371 else {
4372 arg0K0 = -1;
4373 goto L7852;}}
4374 L4812: {
4375 ps_error("byte order check failed", 0);
4376 goto L4764;}
4377 L4764: {
4378 if ((1 == (*((long *) new_addr_498X)))) {
4379 free(new_addr_498X);
4380 arg4K0 = 0;
4381 goto L16851;}
4382 else {
4383 arg0K0 = 0;
4384 arg0K1 = 7;
4385 goto L4825;}}
4386 L5335: {
4387 cells_513X = arg0K0;
4388 le_514X = PS_SHIFT_LEFT_INLINE(cells_513X, 3);
4389 status_515X = SstatusS;
4390 if ((status_515X == NO_ERRORS)) {
4391 if ((SeofPS)) {
4392 arg0K0 = -1;
4393 goto L5392;}
4394 else {
4395 PS_READ_INTEGER(port_398X, thing_516X, eofP_517X, status_518X)
4396 if (eofP_517X) {
4397 SeofPS = 1;
4398 arg0K0 = -1;
4399 goto L5392;}
4400 else {
4401 if ((status_518X == NO_ERRORS)) {
4402 arg0K0 = thing_516X;
4403 goto L5392;}
4404 else {
4405 SeofPS = 1;
4406 if (((SstatusS) == NO_ERRORS)) {
4407 SstatusS = status_518X;
4408 arg0K0 = -1;
4409 goto L5392;}
4410 else {
4411 arg0K0 = -1;
4412 goto L5392;}}}}}
4413 else {
4414 arg0K0 = -1;
4415 goto L5392;}}
4416 L7852: {
4417 expr_519X = arg0K0;
4418 Sresumer_recordsS = expr_519X;
4419 status_520X = SstatusS;
4420 if ((status_520X == NO_ERRORS)) {
4421 if ((SeofPS)) {
4422 arg0K0 = -1;
4423 goto L7905;}
4424 else {
4425 PS_READ_INTEGER(port_398X, thing_521X, eofP_522X, status_523X)
4426 if (eofP_522X) {
4427 SeofPS = 1;
4428 arg0K0 = -1;
4429 goto L7905;}
4430 else {
4431 if ((status_523X == NO_ERRORS)) {
4432 arg0K0 = thing_521X;
4433 goto L7905;}
4434 else {
4435 SeofPS = 1;
4436 if (((SstatusS) == NO_ERRORS)) {
4437 SstatusS = status_523X;
4438 arg0K0 = -1;
4439 goto L7905;}
4440 else {
4441 arg0K0 = -1;
4442 goto L7905;}}}}}
4443 else {
4444 arg0K0 = -1;
4445 goto L7905;}}
4446 L16851: {
4447 reverse_byte_orderP_524X = arg4K0;
4448 if ((0 == format_449X)) {
4449 delta_525X = (Snew_heap_start_addrS) - (Simg_start_addrS);
4450 new_hp_526X = (Simg_end_addrS) + delta_525X;
4451 size_in_byte_527X = PS_SHIFT_LEFT_INLINE((Simg_heap_sizeS), 3);
4452 x_528X = ((s48_ShpS) + (-8 & (7 + size_in_byte_527X))) < (s48_SlimitS);
4453 if (x_528X) {
4454 goto L15427;}
4455 else {s48_collect(0);
4456 goto L15427;}}
4457 else {
4458 if ((1 == format_449X)) {
4459 Sheap_image_pointerS = NULL;
4460 Ssymbol_addressS = NULL;
4461 v_529X = SsymbolsS;
4462 if ((1 == v_529X)) {
4463 arg1K0 = (Simg_end_addrS);
4464 goto L7112;}
4465 else {
4466 arg1K0 = (((char *) (-11 + (SsymbolsS))));
4467 goto L7112;}}
4468 else {
4469 ps_write_string("unknown image format", (stderr));
4470 { long ignoreXX;
4471 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4472 status_530X = SstatusS;
4473 if ((status_530X == NO_ERRORS)) {
4474 goto L16728;}
4475 else {
4476 ps_write_string((ps_error_string((SstatusS))), (stderr));
4477 { long ignoreXX;
4478 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4479 goto L16728;}}}}
4480 L4825: {
4481 i_531X = arg0K0;
4482 j_532X = arg0K1;
4483 if ((i_531X < j_532X)) {
4484 addr_a_533X = new_addr_498X + i_531X;
4485 addr_b_534X = new_addr_498X + j_532X;
4486 byte_a_535X = *((unsigned char *) addr_a_533X);
4487 *((unsigned char *) addr_a_533X) = (unsigned char) ((*((unsigned char *) addr_b_534X)));
4488 *((unsigned char *) addr_b_534X) = (unsigned char) (byte_a_535X);
4489 arg0K0 = (1 + i_531X);
4490 arg0K1 = (-1 + j_532X);
4491 goto L4825;}
4492 else {
4493 v_536X = *((long *) new_addr_498X);
4494 if ((1 == v_536X)) {
4495 goto L4784;}
4496 else {
4497 ps_error("Unable to correct byte order", 0);
4498 goto L4784;}}}
4499 L5392: {
4500 cells_537X = arg0K0;
4501 wh_538X = PS_SHIFT_LEFT_INLINE(cells_537X, 3);
4502 status_539X = SstatusS;
4503 if ((status_539X == NO_ERRORS)) {
4504 if ((SeofPS)) {
4505 arg0K0 = -1;
4506 goto L5447;}
4507 else {
4508 PS_READ_INTEGER(port_398X, thing_540X, eofP_541X, status_542X)
4509 if (eofP_541X) {
4510 SeofPS = 1;
4511 arg0K0 = -1;
4512 goto L5447;}
4513 else {
4514 if ((status_542X == NO_ERRORS)) {
4515 arg0K0 = thing_540X;
4516 goto L5447;}
4517 else {
4518 SeofPS = 1;
4519 if (((SstatusS) == NO_ERRORS)) {
4520 SstatusS = status_542X;
4521 arg0K0 = -1;
4522 goto L5447;}
4523 else {
4524 arg0K0 = -1;
4525 goto L5447;}}}}}
4526 else {
4527 arg0K0 = -1;
4528 goto L5447;}}
4529 L7905: {
4530 expr_543X = arg0K0;
4531 Sstartup_procedureS = expr_543X;
4532 if (((SstatusS) == NO_ERRORS)) {
4533 if ((SeofPS)) {
4534 arg0K0 = 0;
4535 arg0K1 = format_422X;
4536 goto L16783;}
4537 else {
4538 goto L8244;}}
4539 else {
4540 arg0K0 = 0;
4541 arg0K1 = format_422X;
4542 goto L16783;}}
4543 L15427: {
4544 if ((((s48_ShpS) + (-8 & (7 + size_in_byte_527X))) < (s48_SlimitS))) {
4545 s48_ShpS = ((s48_ShpS) + (-8 & (7 + size_in_byte_527X)));
4546 goto L15306;}
4547 else {
4548 goto L15306;}}
4549 L7112: {
4550 v_544X = arg1K0;
4551 Ssymbol_addressS = v_544X;
4552 Sheap_object_remaining_cellsS = 0;
4553 Sheap_object_pointerS = NULL;
4554 keys_545X = (long*)malloc(sizeof(long) * 4097);
4555 arg0K0 = 0;
4556 goto L7135;}
4557 L16728: {
4558 status_546X = ps_close(port_398X);
4559 if ((status_546X == NO_ERRORS)) {
4560 arg0K0 = -1;
4561 goto L16853;}
4562 else {
4563 ps_write_string("Error closing image file", (stderr));
4564 { long ignoreXX;
4565 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4566 arg0K0 = -1;
4567 goto L16853;}}
4568 L4784: {
4569 free(new_addr_498X);
4570 arg4K0 = 1;
4571 goto L16851;}
4572 L5447: {
4573 cells_547X = arg0K0;
4574 we_548X = PS_SHIFT_LEFT_INLINE(cells_547X, 3);
4575 Ssmall_img_start_addrS = (((char *) sb_458X));
4576 Ssmall_img_hp_addrS = (((char *) sh_472X));
4577 Ssmall_img_end_addrS = (((char *) se_488X));
4578 Slarge_img_start_addrS = (((char *) se_488X));
4579 Slarge_img_hp_addrS = (((char *) lh_503X));
4580 Slarge_img_end_addrS = (((char *) le_514X));
4581 Sweaks_img_start_addrS = (((char *) le_514X));
4582 Sweaks_img_hp_addrS = (((char *) wh_538X));
4583 Sweaks_img_end_addrS = (((char *) we_548X));
4584 Ssmall_img_heap_sizeS = (PS_SHIFT_RIGHT_INLINE((sh_472X - sb_458X), 3));
4585 Slarge_img_heap_sizeS = (PS_SHIFT_RIGHT_INLINE((lh_503X - se_488X), 3));
4586 Sweaks_img_heap_sizeS = (PS_SHIFT_RIGHT_INLINE((wh_538X - le_514X), 3));
4587 Simg_start_addrS = (((char *) le_514X));
4588 Simg_end_addrS = (((char *) sh_472X));
4589 Simg_heap_sizeS = (((PS_SHIFT_RIGHT_INLINE((se_488X - sb_458X), 3)) + (PS_SHIFT_RIGHT_INLINE((le_514X - se_488X), 3))) + (PS_SHIFT_RIGHT_INLINE((we_548X - le_514X), 3)));
4590 goto L7642;}
4591 L8244: {
4592 PS_READ_CHAR(port_398X, ch_549X, eofP_550X, status_551X)
4593 if (eofP_550X) {
4594 arg4K0 = eofP_550X;
4595 arg0K1 = status_551X;
4596 goto L7932;}
4597 else {
4598 if ((status_551X == NO_ERRORS)) {
4599 if ((12 == ch_549X)) {
4600 arg4K0 = 0;
4601 arg0K1 = status_551X;
4602 goto L7932;}
4603 else {
4604 goto L8244;}}
4605 else {
4606 arg4K0 = eofP_550X;
4607 arg0K1 = status_551X;
4608 goto L7932;}}}
4609 L15306: {
4610 cells_552X = Simg_heap_sizeS;
4611 address_553X = Snew_heap_start_addrS;
4612 need_554X = PS_SHIFT_LEFT_INLINE(cells_552X, 3);
4613 got_555X = ps_read_block(port_398X, ((char *) address_553X), need_554X, &eofP_556X, &status_557X);
4614 if ((status_557X == NO_ERRORS)) {
4615 if (eofP_556X) {
4616 arg4K0 = 0;
4617 arg5K1 = "Premature EOF when reading image file";
4618 goto L15316;}
4619 else {
4620 if ((got_555X < need_554X)) {
4621 arg4K0 = 0;
4622 arg5K1 = "Read returned too few bytes";
4623 goto L15316;}
4624 else {
4625 arg4K0 = 1;
4626 arg5K1 = "";
4627 goto L15316;}}}
4628 else {
4629 SstatusS = status_557X;
4630 arg4K0 = 0;
4631 arg5K1 = "Error reading from image file";
4632 goto L15316;}}
4633 L7135: {
4634 i_558X = arg0K0;
4635 if ((i_558X < 4097)) {
4636 *(keys_545X + i_558X) = 0;
4637 arg0K0 = (1 + i_558X);
4638 goto L7135;}
4639 else {
4640 table_559X = (struct table*)malloc(sizeof(struct table));
4641 if ((NULL == table_559X)) {
4642 arg3K0 = table_559X;
4643 goto L7123;}
4644 else {
4645 table_559X->keys = keys_545X;
4646 table_559X->values = ((struct image_location**)malloc(sizeof(struct image_location*) * 4096));
4647 table_559X->count = 0;
4648 table_559X->size = 4096;
4649 arg3K0 = table_559X;
4650 goto L7123;}}}
4651 L16853: {
4652 expr_560X = arg0K0;
4653 if ((0 == expr_560X)) {
4654 if (((SstatusS) == NO_ERRORS)) {
4655 return 0;}
4656 else {
4657 return -1;}}
4658 else {
4659 return -1;}}
4660 L7932: {
4661 eofP_561X = arg4K0;
4662 status_562X = arg0K1;
4663 if (eofP_561X) {
4664 SeofPS = 1;
4665 arg0K0 = 0;
4666 arg0K1 = format_422X;
4667 goto L16783;}
4668 else {
4669 if ((status_562X == NO_ERRORS)) {
4670 arg0K0 = 0;
4671 arg0K1 = format_422X;
4672 goto L16783;}
4673 else {
4674 SeofPS = 1;
4675 if (((SstatusS) == NO_ERRORS)) {
4676 SstatusS = status_562X;
4677 arg0K0 = 0;
4678 arg0K1 = format_422X;
4679 goto L16783;}
4680 else {
4681 arg0K0 = 0;
4682 arg0K1 = format_422X;
4683 goto L16783;}}}}
4684 L15316: {
4685 okayP_563X = arg4K0;
4686 string_564X = arg5K1;
4687 PS_READ_CHAR(port_398X, v_565X, eofP_566X, status_567X)
4688 if (okayP_563X) {
4689 if ((status_567X == NO_ERRORS)) {
4690 if (eofP_566X) {
4691 status_568X = ps_close(port_398X);
4692 if ((status_568X == NO_ERRORS)) {
4693 if (reverse_byte_orderP_524X) {
4694 merged_arg1K0 = (Snew_heap_start_addrS);
4695 merged_arg1K1 = new_hp_526X;
4696 #ifdef USE_DIRECT_THREADING
4697 reverse_byte_orderB_return_address = &&reverse_byte_orderB_return_0;
4698 #else
4699 reverse_byte_orderB_return_tag = 0;
4700 #endif
4701 goto reverse_byte_orderB;
4702 reverse_byte_orderB_return_0:
4703 goto L15356;}
4704 else {
4705 goto L15356;}}
4706 else {
4707 ps_write_string("Error closing image file", (stderr));
4708 { long ignoreXX;
4709 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4710 status_569X = SstatusS;
4711 if ((status_569X == NO_ERRORS)) {
4712 goto L15573;}
4713 else {
4714 ps_write_string((ps_error_string((SstatusS))), (stderr));
4715 { long ignoreXX;
4716 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4717 goto L15573;}}}
4718 else {
4719 ps_write_string("Image file has extraneous data after image", (stderr));
4720 { long ignoreXX;
4721 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4722 status_570X = SstatusS;
4723 if ((status_570X == NO_ERRORS)) {
4724 goto L15541;}
4725 else {
4726 ps_write_string((ps_error_string((SstatusS))), (stderr));
4727 { long ignoreXX;
4728 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4729 goto L15541;}}}
4730 else {
4731 ps_write_string("Error reading from image file", (stderr));
4732 { long ignoreXX;
4733 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4734 status_571X = SstatusS;
4735 if ((status_571X == NO_ERRORS)) {
4736 goto L15509;}
4737 else {
4738 ps_write_string((ps_error_string((SstatusS))), (stderr));
4739 { long ignoreXX;
4740 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4741 goto L15509;}}}
4742 else {
4743 ps_write_string(string_564X, (stderr));
4744 { long ignoreXX;
4745 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4746 status_572X = SstatusS;
4747 if ((status_572X == NO_ERRORS)) {
4748 goto L15477;}
4749 else {
4750 ps_write_string((ps_error_string((SstatusS))), (stderr));
4751 { long ignoreXX;
4752 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4753 goto L15477;}}}
4754 L7123: {
4755 v_573X = arg3K0;
4756 Sstob_tableS = v_573X;
4757 Sheap_image_pointerS = ((char *)malloc((PS_SHIFT_LEFT_INLINE((Simg_heap_sizeS), 3))));
4758 if ((0 == format_449X)) {
4759 need_574X = PS_SHIFT_LEFT_INLINE((Simg_heap_sizeS), 3);
4760 got_575X = ps_read_block(port_398X, ((char *) (Sheap_image_pointerS)), need_574X, &eofP_576X, &status_577X);
4761 if ((status_577X == NO_ERRORS)) {
4762 if (eofP_576X) {
4763 arg4K0 = 0;
4764 arg5K1 = "Premature EOF when reading image file";
4765 goto L9551;}
4766 else {
4767 if ((got_575X < need_574X)) {
4768 arg4K0 = 0;
4769 arg5K1 = "Read returned too few bytes";
4770 goto L9551;}
4771 else {
4772 arg4K0 = 1;
4773 arg5K1 = "";
4774 goto L9551;}}}
4775 else {
4776 SstatusS = status_577X;
4777 arg4K0 = 0;
4778 arg5K1 = "Error reading from image file";
4779 goto L9551;}}
4780 else {
4781 if ((1 == format_449X)) {
4782 merged_arg1K0 = (Sheap_image_pointerS);
4783 merged_arg0K1 = (Sweaks_img_heap_sizeS);
4784 merged_arg6K2 = port_398X;
4785 #ifdef USE_DIRECT_THREADING
4786 really_read_image_area_return_address = &&really_read_image_area_return_0;
4787 #else
4788 really_read_image_area_return_tag = 0;
4789 #endif
4790 goto really_read_image_area;
4791 really_read_image_area_return_0:
4792 expr_578X = really_read_image_area0_return_value;
4793 if ((0 == expr_578X)) {
4794 if (((SstatusS) == NO_ERRORS)) {
4795 merged_arg1K0 = ((Sheap_image_pointerS) + ((Sweaks_img_end_addrS) - (Sweaks_img_start_addrS)));
4796 merged_arg0K1 = (Slarge_img_heap_sizeS);
4797 merged_arg6K2 = port_398X;
4798 #ifdef USE_DIRECT_THREADING
4799 really_read_image_area_return_address = &&really_read_image_area_return_1;
4800 #else
4801 really_read_image_area_return_tag = 1;
4802 #endif
4803 goto really_read_image_area;
4804 really_read_image_area_return_1:
4805 expr_579X = really_read_image_area0_return_value;
4806 if ((0 == expr_579X)) {
4807 if (((SstatusS) == NO_ERRORS)) {
4808 merged_arg1K0 = ((Sheap_image_pointerS) + ((Sweaks_img_end_addrS) - (Slarge_img_start_addrS)));
4809 merged_arg0K1 = (Ssmall_img_heap_sizeS);
4810 merged_arg6K2 = port_398X;
4811 #ifdef USE_DIRECT_THREADING
4812 really_read_image_area_return_address = &&really_read_image_area_return_2;
4813 #else
4814 really_read_image_area_return_tag = 2;
4815 #endif
4816 goto really_read_image_area;
4817 really_read_image_area_return_2:
4818 expr_580X = really_read_image_area0_return_value;
4819 if ((0 == expr_580X)) {
4820 if (((SstatusS) == NO_ERRORS)) {
4821 arg0K0 = 0;
4822 goto L9584;}
4823 else {
4824 arg0K0 = -1;
4825 goto L9584;}}
4826 else {
4827 arg0K0 = -1;
4828 goto L9584;}}
4829 else {
4830 arg0K0 = -1;
4831 goto L9584;}}
4832 else {
4833 arg0K0 = -1;
4834 goto L9584;}}
4835 else {
4836 arg0K0 = -1;
4837 goto L9584;}}
4838 else {
4839 arg0K0 = -1;
4840 goto L9584;}}
4841 else {
4842 ps_write_string("this can't happen: invalid image format", (stderr));
4843 { long ignoreXX;
4844 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4845 status_581X = SstatusS;
4846 if ((status_581X == NO_ERRORS)) {
4847 goto L9954;}
4848 else {
4849 ps_write_string((ps_error_string((SstatusS))), (stderr));
4850 { long ignoreXX;
4851 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4852 goto L9954;}}}}
4853 L15356: {
4854 if ((0 == delta_525X)) {
4855 arg0K0 = 0;
4856 goto L16853;}
4857 else {
4858 descriptor_582X = Sstartup_procedureS;
4859 if ((3 == (3 & descriptor_582X))) {
4860 arg0K0 = (3 + (((long) ((((char *) (-3 + descriptor_582X))) + delta_525X))));
4861 goto L15365;}
4862 else {
4863 arg0K0 = descriptor_582X;
4864 goto L15365;}}}
4865 L15573: {
4866 status_583X = ps_close(port_398X);
4867 if ((status_583X == NO_ERRORS)) {
4868 arg0K0 = -1;
4869 goto L16853;}
4870 else {
4871 ps_write_string("Error closing image file", (stderr));
4872 { long ignoreXX;
4873 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4874 arg0K0 = -1;
4875 goto L16853;}}
4876 L15541: {
4877 status_584X = ps_close(port_398X);
4878 if ((status_584X == NO_ERRORS)) {
4879 arg0K0 = -1;
4880 goto L16853;}
4881 else {
4882 ps_write_string("Error closing image file", (stderr));
4883 { long ignoreXX;
4884 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4885 arg0K0 = -1;
4886 goto L16853;}}
4887 L15509: {
4888 status_585X = ps_close(port_398X);
4889 if ((status_585X == NO_ERRORS)) {
4890 arg0K0 = -1;
4891 goto L16853;}
4892 else {
4893 ps_write_string("Error closing image file", (stderr));
4894 { long ignoreXX;
4895 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4896 arg0K0 = -1;
4897 goto L16853;}}
4898 L15477: {
4899 status_586X = ps_close(port_398X);
4900 if ((status_586X == NO_ERRORS)) {
4901 arg0K0 = -1;
4902 goto L16853;}
4903 else {
4904 ps_write_string("Error closing image file", (stderr));
4905 { long ignoreXX;
4906 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4907 arg0K0 = -1;
4908 goto L16853;}}
4909 L9551: {
4910 okayP_587X = arg4K0;
4911 string_588X = arg5K1;
4912 if (okayP_587X) {
4913 arg0K0 = 0;
4914 goto L9584;}
4915 else {
4916 ps_write_string(string_588X, (stderr));
4917 { long ignoreXX;
4918 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4919 status_589X = SstatusS;
4920 if ((status_589X == NO_ERRORS)) {
4921 goto L9819;}
4922 else {
4923 ps_write_string((ps_error_string((SstatusS))), (stderr));
4924 { long ignoreXX;
4925 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4926 goto L9819;}}}
4927 L9584: {
4928 expr_590X = arg0K0;
4929 if ((0 == expr_590X)) {
4930 if (((SstatusS) == NO_ERRORS)) {
4931 PS_READ_CHAR(port_398X, v_591X, eofP_592X, status_593X)
4932 if ((status_593X == NO_ERRORS)) {
4933 if (eofP_592X) {
4934 status_594X = ps_close(port_398X);
4935 if ((status_594X == NO_ERRORS)) {
4936 arg0K0 = 0;
4937 goto L16622;}
4938 else {
4939 ps_write_string("Error closing image file", (stderr));
4940 { long ignoreXX;
4941 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4942 status_595X = SstatusS;
4943 if ((status_595X == NO_ERRORS)) {
4944 goto L9702;}
4945 else {
4946 ps_write_string((ps_error_string((SstatusS))), (stderr));
4947 { long ignoreXX;
4948 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4949 goto L9702;}}}
4950 else {
4951 ps_write_string("Image file has extraneous data after image", (stderr));
4952 { long ignoreXX;
4953 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4954 status_596X = SstatusS;
4955 if ((status_596X == NO_ERRORS)) {
4956 goto L9670;}
4957 else {
4958 ps_write_string((ps_error_string((SstatusS))), (stderr));
4959 { long ignoreXX;
4960 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4961 goto L9670;}}}
4962 else {
4963 ps_write_string("Error reading from image file", (stderr));
4964 { long ignoreXX;
4965 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4966 status_597X = SstatusS;
4967 if ((status_597X == NO_ERRORS)) {
4968 goto L9638;}
4969 else {
4970 ps_write_string((ps_error_string((SstatusS))), (stderr));
4971 { long ignoreXX;
4972 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4973 goto L9638;}}}
4974 else {
4975 arg0K0 = -1;
4976 goto L16622;}}
4977 else {
4978 arg0K0 = -1;
4979 goto L16622;}}
4980 L9954: {
4981 status_598X = ps_close(port_398X);
4982 if ((status_598X == NO_ERRORS)) {
4983 arg0K0 = -1;
4984 goto L9584;}
4985 else {
4986 ps_write_string("Error closing image file", (stderr));
4987 { long ignoreXX;
4988 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
4989 arg0K0 = -1;
4990 goto L9584;}}
4991 L15365: {
4992 expr_599X = arg0K0;
4993 Sstartup_procedureS = expr_599X;
4994 descriptor_600X = SsymbolsS;
4995 if ((3 == (3 & descriptor_600X))) {
4996 arg0K0 = (3 + (((long) ((((char *) (-3 + descriptor_600X))) + delta_525X))));
4997 goto L15371;}
4998 else {
4999 arg0K0 = descriptor_600X;
5000 goto L15371;}}
5001 L9819: {
5002 status_601X = ps_close(port_398X);
5003 if ((status_601X == NO_ERRORS)) {
5004 arg0K0 = -1;
5005 goto L9584;}
5006 else {
5007 ps_write_string("Error closing image file", (stderr));
5008 { long ignoreXX;
5009 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
5010 arg0K0 = -1;
5011 goto L9584;}}
5012 L16622: {
5013 expr_602X = arg0K0;
5014 if ((0 == expr_602X)) {
5015 if (((SstatusS) == NO_ERRORS)) {
5016 if (reverse_byte_orderP_524X) {
5017 merged_arg1K0 = (Simg_start_addrS);
5018 merged_arg0K1 = format_449X;
5019 #ifdef USE_DIRECT_THREADING
5020 old_Gnew_addr_return_address = &&old_Gnew_addr_return_0;
5021 #else
5022 old_Gnew_addr_return_tag = 0;
5023 #endif
5024 goto old_Gnew_addr;
5025 old_Gnew_addr_return_0:
5026 v_603X = old_Gnew_addr0_return_value;
5027 merged_arg1K0 = (Simg_end_addrS);
5028 merged_arg0K1 = format_449X;
5029 #ifdef USE_DIRECT_THREADING
5030 old_Gnew_addr_return_address = &&old_Gnew_addr_return_1;
5031 #else
5032 old_Gnew_addr_return_tag = 1;
5033 #endif
5034 goto old_Gnew_addr;
5035 old_Gnew_addr_return_1:
5036 v_604X = old_Gnew_addr0_return_value;
5037 merged_arg1K0 = v_603X;
5038 merged_arg1K1 = v_604X;
5039 #ifdef USE_DIRECT_THREADING
5040 reverse_byte_orderB_return_address = &&reverse_byte_orderB_return_1;
5041 #else
5042 reverse_byte_orderB_return_tag = 1;
5043 #endif
5044 goto reverse_byte_orderB;
5045 reverse_byte_orderB_return_1:
5046 goto L16634;}
5047 else {
5048 goto L16634;}}
5049 else {
5050 arg0K0 = -1;
5051 goto L16853;}}
5052 else {
5053 arg0K0 = -1;
5054 goto L16853;}}
5055 L9702: {
5056 status_605X = ps_close(port_398X);
5057 if ((status_605X == NO_ERRORS)) {
5058 arg0K0 = -1;
5059 goto L16622;}
5060 else {
5061 ps_write_string("Error closing image file", (stderr));
5062 { long ignoreXX;
5063 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
5064 arg0K0 = -1;
5065 goto L16622;}}
5066 L9670: {
5067 status_606X = ps_close(port_398X);
5068 if ((status_606X == NO_ERRORS)) {
5069 arg0K0 = -1;
5070 goto L16622;}
5071 else {
5072 ps_write_string("Error closing image file", (stderr));
5073 { long ignoreXX;
5074 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
5075 arg0K0 = -1;
5076 goto L16622;}}
5077 L9638: {
5078 status_607X = ps_close(port_398X);
5079 if ((status_607X == NO_ERRORS)) {
5080 arg0K0 = -1;
5081 goto L16622;}
5082 else {
5083 ps_write_string("Error closing image file", (stderr));
5084 { long ignoreXX;
5085 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
5086 arg0K0 = -1;
5087 goto L16622;}}
5088 L15371: {
5089 expr_608X = arg0K0;
5090 SsymbolsS = expr_608X;
5091 descriptor_609X = Simported_bindingsS;
5092 if ((3 == (3 & descriptor_609X))) {
5093 arg0K0 = (3 + (((long) ((((char *) (-3 + descriptor_609X))) + delta_525X))));
5094 goto L15377;}
5095 else {
5096 arg0K0 = descriptor_609X;
5097 goto L15377;}}
5098 L16634: {
5099 if ((0 == format_449X)) {
5100 merged_arg1K0 = (Simg_start_addrS);
5101 merged_arg1K1 = (Ssymbol_addressS);
5102 merged_arg0K2 = format_449X;
5103 #ifdef USE_DIRECT_THREADING
5104 parse_reachable_objects_return_address = &&parse_reachable_objects_return_0;
5105 #else
5106 parse_reachable_objects_return_tag = 0;
5107 #endif
5108 goto parse_reachable_objects;
5109 parse_reachable_objects_return_0:
5110 goto L16636;}
5111 else {
5112 if ((1 == format_449X)) {
5113 merged_arg1K0 = (Ssmall_img_start_addrS);
5114 merged_arg1K1 = (Ssymbol_addressS);
5115 merged_arg0K2 = format_449X;
5116 #ifdef USE_DIRECT_THREADING
5117 parse_reachable_objects_return_address = &&parse_reachable_objects_return_1;
5118 #else
5119 parse_reachable_objects_return_tag = 1;
5120 #endif
5121 goto parse_reachable_objects;
5122 parse_reachable_objects_return_1:
5123 merged_arg1K0 = (Slarge_img_start_addrS);
5124 merged_arg1K1 = ((Slarge_img_start_addrS) + (PS_SHIFT_LEFT_INLINE((Slarge_img_heap_sizeS), 3)));
5125 merged_arg0K2 = format_449X;
5126 #ifdef USE_DIRECT_THREADING
5127 parse_reachable_objects_return_address = &&parse_reachable_objects_return_2;
5128 #else
5129 parse_reachable_objects_return_tag = 2;
5130 #endif
5131 goto parse_reachable_objects;
5132 parse_reachable_objects_return_2:
5133 merged_arg1K0 = (Sweaks_img_start_addrS);
5134 merged_arg1K1 = ((Sweaks_img_start_addrS) + (PS_SHIFT_LEFT_INLINE((Sweaks_img_heap_sizeS), 3)));
5135 merged_arg0K2 = format_449X;
5136 #ifdef USE_DIRECT_THREADING
5137 parse_reachable_objects_return_address = &&parse_reachable_objects_return_3;
5138 #else
5139 parse_reachable_objects_return_tag = 3;
5140 #endif
5141 goto parse_reachable_objects;
5142 parse_reachable_objects_return_3:
5143 goto L16636;}
5144 else {
5145 ps_error("allocate+parse+copy-objects!: Unknown image format", 0);
5146 goto L16636;}}}
5147 L15377: {
5148 expr_610X = arg0K0;
5149 Simported_bindingsS = expr_610X;
5150 descriptor_611X = Sexported_bindingsS;
5151 if ((3 == (3 & descriptor_611X))) {
5152 arg0K0 = (3 + (((long) ((((char *) (-3 + descriptor_611X))) + delta_525X))));
5153 goto L15383;}
5154 else {
5155 arg0K0 = descriptor_611X;
5156 goto L15383;}}
5157 L16636: {
5158 address_612X = ((char *) (-11 + (Sstartup_procedureS)));
5159 if ((0 == (((long) address_612X)))) {
5160 arg0K0 = -1;
5161 goto L15963;}
5162 else {
5163 arg0K0 = (((long) address_612X));
5164 goto L15963;}}
5165 L15383: {
5166 expr_613X = arg0K0;
5167 Sexported_bindingsS = expr_613X;
5168 descriptor_614X = Sresumer_recordsS;
5169 if ((3 == (3 & descriptor_614X))) {
5170 arg0K0 = (3 + (((long) ((((char *) (-3 + descriptor_614X))) + delta_525X))));
5171 goto L15389;}
5172 else {
5173 arg0K0 = descriptor_614X;
5174 goto L15389;}}
5175 L15963: {
5176 v_615X = arg0K0;
5177 image_location_616X = table_ref((Sstob_tableS), v_615X);
5178 Sstartup_procedureS = (3 + (((long) ((((char *) (image_location_616X->new_descriptor))) + 8))));
5179 v_617X = SsymbolsS;
5180 if ((1 == v_617X)) {
5181 goto L15893;}
5182 else {
5183 merged_arg0K0 = (SsymbolsS);
5184 merged_arg0K1 = format_449X;
5185 #ifdef USE_DIRECT_THREADING
5186 allocate_table_return_address = &&allocate_table_return_0;
5187 #else
5188 allocate_table_return_tag = 0;
5189 #endif
5190 goto allocate_table;
5191 allocate_table_return_0:
5192 expr_618X = allocate_table0_return_value;
5193 SsymbolsS = expr_618X;
5194 table_619X = SsymbolsS;
5195 stob_table_620X = Sstob_tableS;
5196 if ((3 == (3 & table_619X))) {
5197 if ((2 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + table_619X))))), 2))))) {
5198 arg0K0 = 0;
5199 goto L12939;}
5200 else {
5201 goto L15893;}}
5202 else {
5203 goto L15893;}}}
5204 L15389: {
5205 expr_621X = arg0K0;
5206 Sresumer_recordsS = expr_621X;
5207 table_622X = SsymbolsS;
5208 if ((3 == (3 & table_622X))) {
5209 if ((2 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + table_622X))))), 2))))) {
5210 arg0K0 = 0;
5211 goto L12741;}
5212 else {
5213 goto L15395;}}
5214 else {
5215 goto L15395;}}
5216 L15893: {
5217 v_623X = Simported_bindingsS;
5218 if ((1 == v_623X)) {
5219 goto L15913;}
5220 else {
5221 merged_arg0K0 = (Simported_bindingsS);
5222 merged_arg0K1 = format_449X;
5223 #ifdef USE_DIRECT_THREADING
5224 allocate_table_return_address = &&allocate_table_return_1;
5225 #else
5226 allocate_table_return_tag = 1;
5227 #endif
5228 goto allocate_table;
5229 allocate_table_return_1:
5230 expr_624X = allocate_table0_return_value;
5231 Simported_bindingsS = expr_624X;
5232 merged_arg0K0 = (Simported_bindingsS);
5233 merged_arg3K1 = (Sstob_tableS);
5234 #ifdef USE_DIRECT_THREADING
5235 relocate_binding_table_bibopB_return_address = &&relocate_binding_table_bibopB_return_0;
5236 #else
5237 relocate_binding_table_bibopB_return_tag = 0;
5238 #endif
5239 goto relocate_binding_table_bibopB;
5240 relocate_binding_table_bibopB_return_0:
5241 goto L15913;}}
5242 L12939: {
5243 i_625X = arg0K0;
5244 if ((1024 == i_625X)) {
5245 goto L15893;}
5246 else {
5247 link_626X = *((long *) ((((char *) (-3 + table_619X))) + (PS_SHIFT_LEFT_INLINE(i_625X, 3))));
5248 if ((0 == (3 & link_626X))) {
5249 arg0K0 = (3 + (-4 & link_626X));
5250 goto L12945;}
5251 else {
5252 arg0K0 = link_626X;
5253 goto L12945;}}}
5254 L12741: {
5255 i_627X = arg0K0;
5256 if ((1024 == i_627X)) {
5257 goto L15395;}
5258 else {
5259 link_628X = *((long *) ((((char *) (-3 + table_622X))) + (PS_SHIFT_LEFT_INLINE(i_627X, 3))));
5260 if ((0 == (3 & link_628X))) {
5261 arg0K0 = (3 + (-4 & link_628X));
5262 goto L12747;}
5263 else {
5264 arg0K0 = link_628X;
5265 goto L12747;}}}
5266 L15395: {
5267 merged_arg0K0 = (Simported_bindingsS);
5268 merged_arg0K1 = delta_525X;
5269 #ifdef USE_DIRECT_THREADING
5270 relocate_binding_table_two_spaceB_return_address = &&relocate_binding_table_two_spaceB_return_0;
5271 #else
5272 relocate_binding_table_two_spaceB_return_tag = 0;
5273 #endif
5274 goto relocate_binding_table_two_spaceB;
5275 relocate_binding_table_two_spaceB_return_0:
5276 merged_arg0K0 = (Sexported_bindingsS);
5277 merged_arg0K1 = delta_525X;
5278 #ifdef USE_DIRECT_THREADING
5279 relocate_binding_table_two_spaceB_return_address = &&relocate_binding_table_two_spaceB_return_1;
5280 #else
5281 relocate_binding_table_two_spaceB_return_tag = 1;
5282 #endif
5283 goto relocate_binding_table_two_spaceB;
5284 relocate_binding_table_two_spaceB_return_1:
5285 start_629X = Snew_heap_start_addrS;
5286 arg1K0 = start_629X;
5287 goto L10900;}
5288 L15913: {
5289 v_630X = Sexported_bindingsS;
5290 if ((1 == v_630X)) {
5291 goto L15933;}
5292 else {
5293 merged_arg0K0 = (Sexported_bindingsS);
5294 merged_arg0K1 = format_449X;
5295 #ifdef USE_DIRECT_THREADING
5296 allocate_table_return_address = &&allocate_table_return_2;
5297 #else
5298 allocate_table_return_tag = 2;
5299 #endif
5300 goto allocate_table;
5301 allocate_table_return_2:
5302 expr_631X = allocate_table0_return_value;
5303 Sexported_bindingsS = expr_631X;
5304 merged_arg0K0 = (Sexported_bindingsS);
5305 merged_arg3K1 = (Sstob_tableS);
5306 #ifdef USE_DIRECT_THREADING
5307 relocate_binding_table_bibopB_return_address = &&relocate_binding_table_bibopB_return_1;
5308 #else
5309 relocate_binding_table_bibopB_return_tag = 1;
5310 #endif
5311 goto relocate_binding_table_bibopB;
5312 relocate_binding_table_bibopB_return_1:
5313 goto L15933;}}
5314 L12945: {
5315 bucket_632X = arg0K0;
5316 if ((1 == bucket_632X)) {
5317 goto L12941;}
5318 else {
5319 merged_arg0K0 = bucket_632X;
5320 #ifdef USE_DIRECT_THREADING
5321 relocateD2_return_address = &&relocateD2_return_0;
5322 #else
5323 relocateD2_return_tag = 0;
5324 #endif
5325 goto relocateD2;
5326 relocateD2_return_0:
5327 bucket_633X = relocateD20_return_value;
5328 if ((3 == (3 & bucket_633X))) {
5329 arg0K0 = (-4 & bucket_633X);
5330 goto L12950;}
5331 else {
5332 arg0K0 = bucket_633X;
5333 goto L12950;}}}
5334 L12747: {
5335 bucket_634X = arg0K0;
5336 if ((1 == bucket_634X)) {
5337 goto L12743;}
5338 else {
5339 bucket_635X = bucket_634X + delta_525X;
5340 if ((3 == (3 & bucket_635X))) {
5341 arg0K0 = (-4 & bucket_635X);
5342 goto L12752;}
5343 else {
5344 arg0K0 = bucket_635X;
5345 goto L12752;}}}
5346 L10900: {
5347 ptr_636X = arg1K0;
5348 if ((ptr_636X < new_hp_526X)) {
5349 descriptor_637X = *((long *) ptr_636X);
5350 if ((3 == (3 & descriptor_637X))) {
5351 arg0K0 = (3 + (((long) ((((char *) (-3 + descriptor_637X))) + delta_525X))));
5352 goto L10905;}
5353 else {
5354 arg0K0 = descriptor_637X;
5355 goto L10905;}}
5356 else {
5357 arg0K0 = 0;
5358 goto L16853;}}
5359 L15933: {
5360 if ((1 == (Sresumer_recordsS))) {
5361 goto L16638;}
5362 else {
5363 merged_arg0K0 = (Sresumer_recordsS);
5364 merged_arg0K1 = format_449X;
5365 #ifdef USE_DIRECT_THREADING
5366 allocate_table_return_address = &&allocate_table_return_3;
5367 #else
5368 allocate_table_return_tag = 3;
5369 #endif
5370 goto allocate_table;
5371 allocate_table_return_3:
5372 expr_638X = allocate_table0_return_value;
5373 Sresumer_recordsS = expr_638X;
5374 resumer_records_639X = Sresumer_recordsS;
5375 cell_640X = *((long *) (((char *) (-11 + resumer_records_639X))));
5376 if ((2 == (3 & cell_640X))) {
5377 arg1K0 = (((char *) (-3 + resumer_records_639X)));
5378 arg0K1 = (PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(cell_640X, 8))), 3));
5379 goto L10041;}
5380 else {
5381 ps_error("relocate-resumer-record! - no header", 0);
5382 goto L16638;}}}
5383 L12941: {
5384 arg0K0 = (1 + i_625X);
5385 goto L12939;}
5386 L12950: {
5387 value_641X = arg0K0;
5388 *((long *) ((((char *) (-3 + table_619X))) + (PS_SHIFT_LEFT_INLINE(i_625X, 3)))) = (long) (value_641X);
5389 arg0K0 = bucket_633X;
5390 goto L12957;}
5391 L12743: {
5392 arg0K0 = (1 + i_627X);
5393 goto L12741;}
5394 L12752: {
5395 value_642X = arg0K0;
5396 *((long *) ((((char *) (-3 + table_622X))) + (PS_SHIFT_LEFT_INLINE(i_627X, 3)))) = (long) (value_642X);
5397 arg0K0 = bucket_635X;
5398 goto L12759;}
5399 L10905: {
5400 d_643X = arg0K0;
5401 *((long *) ptr_636X) = (long) (d_643X);
5402 if ((2 == (3 & d_643X))) {
5403 if (((31 & (PS_SHIFT_RIGHT_INLINE(d_643X, 2))) < 16)) {
5404 goto L10917;}
5405 else {
5406 arg1K0 = (ptr_636X + (8 + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(d_643X, 8))))));
5407 goto L10900;}}
5408 else {
5409 goto L10917;}}
5410 L16638: {
5411 table_644X = Sstob_tableS;
5412 keys_645X = table_644X->keys;
5413 values_646X = table_644X->values;
5414 arg0K0 = 0;
5415 goto L2988;}
5416 L10041: {
5417 address_647X = arg1K0;
5418 size_648X = arg0K1;
5419 if ((0 == size_648X)) {
5420 goto L16638;}
5421 else {
5422 cell_649X = *((long *) address_647X);
5423 if ((3 == (3 & cell_649X))) {
5424 address_650X = ((char *) (-11 + cell_649X));
5425 if ((0 == (((long) address_650X)))) {
5426 arg0K0 = -1;
5427 goto L10106;}
5428 else {
5429 arg0K0 = (((long) address_650X));
5430 goto L10106;}}
5431 else {
5432 ps_error("Could this happen?", 0);
5433 goto L16638;}}}
5434 L12957: {
5435 entry_651X = arg0K0;
5436 link_652X = *((long *) ((((char *) (-3 + entry_651X))) + 8));
5437 if ((0 == (3 & link_652X))) {
5438 arg0K0 = (3 + (-4 & link_652X));
5439 goto L12961;}
5440 else {
5441 arg0K0 = link_652X;
5442 goto L12961;}}
5443 L12759: {
5444 entry_653X = arg0K0;
5445 link_654X = *((long *) ((((char *) (-3 + entry_653X))) + 8));
5446 if ((0 == (3 & link_654X))) {
5447 arg0K0 = (3 + (-4 & link_654X));
5448 goto L12763;}
5449 else {
5450 arg0K0 = link_654X;
5451 goto L12763;}}
5452 L10917: {
5453 arg1K0 = (ptr_636X + 8);
5454 goto L10900;}
5455 L2988: {
5456 i_655X = arg0K0;
5457 if ((i_655X == (table_644X->size))) {
5458 free(keys_645X);
5459 free(values_646X);
5460 free(table_644X);
5461 free((Sheap_image_pointerS));
5462 arg0K0 = 0;
5463 goto L16853;}
5464 else {
5465 if ((0 == (*(keys_645X + i_655X)))) {
5466 goto L2990;}
5467 else {
5468 free((*(values_646X + i_655X)));
5469 goto L2990;}}}
5470 L10106: {
5471 v_656X = arg0K0;
5472 image_location_657X = table_ref((Sstob_tableS), v_656X);
5473 *((long *) address_647X) = (long) ((3 + (((long) ((((char *) (image_location_657X->new_descriptor))) + 8)))));
5474 arg1K0 = (address_647X + 8);
5475 arg0K1 = (-1 + size_648X);
5476 goto L10041;}
5477 L12961: {
5478 next_658X = arg0K0;
5479 if ((1 == next_658X)) {
5480 goto L12941;}
5481 else {
5482 merged_arg0K0 = next_658X;
5483 #ifdef USE_DIRECT_THREADING
5484 relocateD2_return_address = &&relocateD2_return_1;
5485 #else
5486 relocateD2_return_tag = 1;
5487 #endif
5488 goto relocateD2;
5489 relocateD2_return_1:
5490 next_659X = relocateD20_return_value;
5491 if ((3 == (3 & next_659X))) {
5492 arg0K0 = (-4 & next_659X);
5493 goto L12966;}
5494 else {
5495 arg0K0 = next_659X;
5496 goto L12966;}}}
5497 L12763: {
5498 next_660X = arg0K0;
5499 if ((1 == next_660X)) {
5500 goto L12743;}
5501 else {
5502 next_661X = next_660X + delta_525X;
5503 if ((3 == (3 & next_661X))) {
5504 arg0K0 = (-4 & next_661X);
5505 goto L12768;}
5506 else {
5507 arg0K0 = next_661X;
5508 goto L12768;}}}
5509 L2990: {
5510 arg0K0 = (1 + i_655X);
5511 goto L2988;}
5512 L12966: {
5513 val_662X = arg0K0;
5514 *((long *) ((((char *) (-3 + entry_651X))) + 8)) = (long) (val_662X);
5515 arg0K0 = next_659X;
5516 goto L12957;}
5517 L12768: {
5518 val_663X = arg0K0;
5519 *((long *) ((((char *) (-3 + entry_653X))) + 8)) = (long) (val_663X);
5520 arg0K0 = next_661X;
5521 goto L12759;}
5522 really_read_image_area: {
5523 new_start_addr_395X = merged_arg1K0;
5524 img_heap_size_396X = merged_arg0K1;
5525 port_397X = merged_arg6K2;{
5526 need_664X = PS_SHIFT_LEFT_INLINE(img_heap_size_396X, 3);
5527 got_665X = ps_read_block(port_397X, ((char *) new_start_addr_395X), need_664X, &eofP_666X, &status_667X);
5528 if ((status_667X == NO_ERRORS)) {
5529 if (eofP_666X) {
5530 arg4K0 = 0;
5531 arg5K1 = "Premature EOF when reading image file";
5532 goto L4121;}
5533 else {
5534 if ((got_665X < need_664X)) {
5535 arg4K0 = 0;
5536 arg5K1 = "Read returned too few bytes";
5537 goto L4121;}
5538 else {
5539 arg4K0 = 1;
5540 arg5K1 = "";
5541 goto L4121;}}}
5542 else {
5543 SstatusS = status_667X;
5544 arg4K0 = 0;
5545 arg5K1 = "Error reading from image file";
5546 goto L4121;}}
5547 L4121: {
5548 okayP_668X = arg4K0;
5549 string_669X = arg5K1;
5550 if (okayP_668X) {
5551 really_read_image_area0_return_value = 0;
5552 #ifdef USE_DIRECT_THREADING
5553 goto *really_read_image_area_return_address;
5554 #else
5555 goto really_read_image_area_return;
5556 #endif
5557 }
5558 else {
5559 ps_write_string(string_669X, (stderr));
5560 { long ignoreXX;
5561 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
5562 status_670X = SstatusS;
5563 if ((status_670X == NO_ERRORS)) {
5564 goto L4164;}
5565 else {
5566 ps_write_string((ps_error_string((SstatusS))), (stderr));
5567 { long ignoreXX;
5568 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
5569 goto L4164;}}}
5570 L4164: {
5571 status_671X = ps_close(port_397X);
5572 if ((status_671X == NO_ERRORS)) {
5573 really_read_image_area0_return_value = -1;
5574 #ifdef USE_DIRECT_THREADING
5575 goto *really_read_image_area_return_address;
5576 #else
5577 goto really_read_image_area_return;
5578 #endif
5579 }
5580 else {
5581 ps_write_string("Error closing image file", (stderr));
5582 { long ignoreXX;
5583 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
5584 really_read_image_area0_return_value = -1;
5585 #ifdef USE_DIRECT_THREADING
5586 goto *really_read_image_area_return_address;
5587 #else
5588 goto really_read_image_area_return;
5589 #endif
5590 }}
5591 #ifndef USE_DIRECT_THREADING
5592 really_read_image_area_return:
5593 switch (really_read_image_area_return_tag) {
5594 case 0: goto really_read_image_area_return_0;
5595 case 1: goto really_read_image_area_return_1;
5596 default: goto really_read_image_area_return_2;
5597 }
5598 #endif
5599 }
5600
5601 reverse_byte_orderB: {
5602 start_393X = merged_arg1K0;
5603 end_394X = merged_arg1K1;{
5604 ps_write_string("Correcting byte order of resumed image.", (stderr));
5605 { long ignoreXX;
5606 PS_WRITE_CHAR(10, (stderr), ignoreXX) }
5607 arg1K0 = start_393X;
5608 goto L10794;}
5609 L10794: {
5610 ptr_672X = arg1K0;
5611 if ((ptr_672X < end_394X)) {
5612 arg0K0 = 0;
5613 arg0K1 = 7;
5614 goto L10834;}
5615 else {
5616 #ifdef USE_DIRECT_THREADING
5617 goto *reverse_byte_orderB_return_address;
5618 #else
5619 goto reverse_byte_orderB_return;
5620 #endif
5621 }}
5622 L10834: {
5623 i_673X = arg0K0;
5624 j_674X = arg0K1;
5625 if ((i_673X < j_674X)) {
5626 addr_a_675X = ptr_672X + i_673X;
5627 addr_b_676X = ptr_672X + j_674X;
5628 byte_a_677X = *((unsigned char *) addr_a_675X);
5629 *((unsigned char *) addr_a_675X) = (unsigned char) ((*((unsigned char *) addr_b_676X)));
5630 *((unsigned char *) addr_b_676X) = (unsigned char) (byte_a_677X);
5631 arg0K0 = (1 + i_673X);
5632 arg0K1 = (-1 + j_674X);
5633 goto L10834;}
5634 else {
5635 value_678X = *((long *) ptr_672X);
5636 next_679X = ptr_672X + 8;
5637 if ((2 == (3 & value_678X))) {
5638 if (((31 & (PS_SHIFT_RIGHT_INLINE(value_678X, 2))) < 16)) {
5639 arg1K0 = next_679X;
5640 goto L10794;}
5641 else {
5642 arg1K0 = (next_679X + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(value_678X, 8)))));
5643 goto L10794;}}
5644 else {
5645 arg1K0 = next_679X;
5646 goto L10794;}}}
5647 #ifndef USE_DIRECT_THREADING
5648 reverse_byte_orderB_return:
5649 switch (reverse_byte_orderB_return_tag) {
5650 case 0: goto reverse_byte_orderB_return_0;
5651 default: goto reverse_byte_orderB_return_1;
5652 }
5653 #endif
5654 }
5655
5656 relocate_binding_table_two_spaceB: {
5657 table_391X = merged_arg0K0;
5658 delta_392X = merged_arg0K1;{
5659 if ((3 == (3 & table_391X))) {
5660 if ((2 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + table_391X))))), 2))))) {
5661 arg0K0 = 0;
5662 goto L12828;}
5663 else {
5664 #ifdef USE_DIRECT_THREADING
5665 goto *relocate_binding_table_two_spaceB_return_address;
5666 #else
5667 goto relocate_binding_table_two_spaceB_return;
5668 #endif
5669 }}
5670 else {
5671 #ifdef USE_DIRECT_THREADING
5672 goto *relocate_binding_table_two_spaceB_return_address;
5673 #else
5674 goto relocate_binding_table_two_spaceB_return;
5675 #endif
5676 }}
5677 L12828: {
5678 i_680X = arg0K0;
5679 if ((1024 == i_680X)) {
5680 #ifdef USE_DIRECT_THREADING
5681 goto *relocate_binding_table_two_spaceB_return_address;
5682 #else
5683 goto relocate_binding_table_two_spaceB_return;
5684 #endif
5685 }
5686 else {
5687 link_681X = *((long *) ((((char *) (-3 + table_391X))) + (PS_SHIFT_LEFT_INLINE(i_680X, 3))));
5688 if ((0 == (3 & link_681X))) {
5689 arg0K0 = (3 + (-4 & link_681X));
5690 goto L12834;}
5691 else {
5692 arg0K0 = link_681X;
5693 goto L12834;}}}
5694 L12834: {
5695 bucket_682X = arg0K0;
5696 if ((1 == bucket_682X)) {
5697 goto L12830;}
5698 else {
5699 bucket_683X = bucket_682X + delta_392X;
5700 if ((3 == (3 & bucket_683X))) {
5701 arg0K0 = (-4 & bucket_683X);
5702 goto L12839;}
5703 else {
5704 arg0K0 = bucket_683X;
5705 goto L12839;}}}
5706 L12830: {
5707 arg0K0 = (1 + i_680X);
5708 goto L12828;}
5709 L12839: {
5710 value_684X = arg0K0;
5711 *((long *) ((((char *) (-3 + table_391X))) + (PS_SHIFT_LEFT_INLINE(i_680X, 3)))) = (long) (value_684X);
5712 arg0K0 = bucket_683X;
5713 goto L12846;}
5714 L12846: {
5715 entry_685X = arg0K0;
5716 link_686X = *((long *) ((((char *) (-3 + entry_685X))) + 24));
5717 if ((0 == (3 & link_686X))) {
5718 arg0K0 = (3 + (-4 & link_686X));
5719 goto L12850;}
5720 else {
5721 arg0K0 = link_686X;
5722 goto L12850;}}
5723 L12850: {
5724 next_687X = arg0K0;
5725 if ((1 == next_687X)) {
5726 goto L12830;}
5727 else {
5728 next_688X = next_687X + delta_392X;
5729 if ((3 == (3 & next_688X))) {
5730 arg0K0 = (-4 & next_688X);
5731 goto L12855;}
5732 else {
5733 arg0K0 = next_688X;
5734 goto L12855;}}}
5735 L12855: {
5736 val_689X = arg0K0;
5737 *((long *) ((((char *) (-3 + entry_685X))) + 24)) = (long) (val_689X);
5738 arg0K0 = next_688X;
5739 goto L12846;}
5740 #ifndef USE_DIRECT_THREADING
5741 relocate_binding_table_two_spaceB_return:
5742 switch (relocate_binding_table_two_spaceB_return_tag) {
5743 case 0: goto relocate_binding_table_two_spaceB_return_0;
5744 default: goto relocate_binding_table_two_spaceB_return_1;
5745 }
5746 #endif
5747 }
5748
5749 relocateD0: {
5750 address_390X = merged_arg0K0;{
5751 address_690X = ((char *) (-11 + address_390X));
5752 if ((0 == (((long) address_690X)))) {
5753 arg0K0 = -1;
5754 goto L13029;}
5755 else {
5756 arg0K0 = (((long) address_690X));
5757 goto L13029;}}
5758 L13029: {
5759 v_691X = arg0K0;
5760 image_location_692X = table_ref(stob_table_389X, v_691X);
5761 relocateD00_return_value = (3 + (((long) ((((char *) (image_location_692X->new_descriptor))) + 8))));
5762 #ifdef USE_DIRECT_THREADING
5763 goto *relocateD0_return_address;
5764 #else
5765 goto relocateD0_return;
5766 #endif
5767 }
5768 #ifndef USE_DIRECT_THREADING
5769 relocateD0_return:
5770 switch (relocateD0_return_tag) {
5771 case 0: goto relocateD0_return_0;
5772 default: goto relocateD0_return_1;
5773 }
5774 #endif
5775 }
5776
5777 relocate_binding_table_bibopB: {
5778 table_388X = merged_arg0K0;
5779 stob_table_389X = merged_arg3K1;{
5780 if ((3 == (3 & table_388X))) {
5781 if ((2 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + table_388X))))), 2))))) {
5782 arg0K0 = 0;
5783 goto L13059;}
5784 else {
5785 #ifdef USE_DIRECT_THREADING
5786 goto *relocate_binding_table_bibopB_return_address;
5787 #else
5788 goto relocate_binding_table_bibopB_return;
5789 #endif
5790 }}
5791 else {
5792 #ifdef USE_DIRECT_THREADING
5793 goto *relocate_binding_table_bibopB_return_address;
5794 #else
5795 goto relocate_binding_table_bibopB_return;
5796 #endif
5797 }}
5798 L13059: {
5799 i_693X = arg0K0;
5800 if ((1024 == i_693X)) {
5801 #ifdef USE_DIRECT_THREADING
5802 goto *relocate_binding_table_bibopB_return_address;
5803 #else
5804 goto relocate_binding_table_bibopB_return;
5805 #endif
5806 }
5807 else {
5808 link_694X = *((long *) ((((char *) (-3 + table_388X))) + (PS_SHIFT_LEFT_INLINE(i_693X, 3))));
5809 if ((0 == (3 & link_694X))) {
5810 arg0K0 = (3 + (-4 & link_694X));
5811 goto L13065;}
5812 else {
5813 arg0K0 = link_694X;
5814 goto L13065;}}}
5815 L13065: {
5816 bucket_695X = arg0K0;
5817 if ((1 == bucket_695X)) {
5818 goto L13061;}
5819 else {
5820 merged_arg0K0 = bucket_695X;
5821 #ifdef USE_DIRECT_THREADING
5822 relocateD0_return_address = &&relocateD0_return_0;
5823 #else
5824 relocateD0_return_tag = 0;
5825 #endif
5826 goto relocateD0;
5827 relocateD0_return_0:
5828 bucket_696X = relocateD00_return_value;
5829 if ((3 == (3 & bucket_696X))) {
5830 arg0K0 = (-4 & bucket_696X);
5831 goto L13070;}
5832 else {
5833 arg0K0 = bucket_696X;
5834 goto L13070;}}}
5835 L13061: {
5836 arg0K0 = (1 + i_693X);
5837 goto L13059;}
5838 L13070: {
5839 value_697X = arg0K0;
5840 *((long *) ((((char *) (-3 + table_388X))) + (PS_SHIFT_LEFT_INLINE(i_693X, 3)))) = (long) (value_697X);
5841 arg0K0 = bucket_696X;
5842 goto L13077;}
5843 L13077: {
5844 entry_698X = arg0K0;
5845 link_699X = *((long *) ((((char *) (-3 + entry_698X))) + 24));
5846 if ((0 == (3 & link_699X))) {
5847 arg0K0 = (3 + (-4 & link_699X));
5848 goto L13081;}
5849 else {
5850 arg0K0 = link_699X;
5851 goto L13081;}}
5852 L13081: {
5853 next_700X = arg0K0;
5854 if ((1 == next_700X)) {
5855 goto L13061;}
5856 else {
5857 merged_arg0K0 = next_700X;
5858 #ifdef USE_DIRECT_THREADING
5859 relocateD0_return_address = &&relocateD0_return_1;
5860 #else
5861 relocateD0_return_tag = 1;
5862 #endif
5863 goto relocateD0;
5864 relocateD0_return_1:
5865 next_701X = relocateD00_return_value;
5866 if ((3 == (3 & next_701X))) {
5867 arg0K0 = (-4 & next_701X);
5868 goto L13086;}
5869 else {
5870 arg0K0 = next_701X;
5871 goto L13086;}}}
5872 L13086: {
5873 val_702X = arg0K0;
5874 *((long *) ((((char *) (-3 + entry_698X))) + 24)) = (long) (val_702X);
5875 arg0K0 = next_701X;
5876 goto L13077;}
5877 #ifndef USE_DIRECT_THREADING
5878 relocate_binding_table_bibopB_return:
5879 switch (relocate_binding_table_bibopB_return_tag) {
5880 case 0: goto relocate_binding_table_bibopB_return_0;
5881 default: goto relocate_binding_table_bibopB_return_1;
5882 }
5883 #endif
5884 }
5885
5886 allocate_table: {
5887 tab_386X = merged_arg0K0;
5888 image_format_387X = merged_arg0K1;{
5889 merged_arg1K0 = (((char *) (-11 + tab_386X)));
5890 merged_arg0K1 = image_format_387X;
5891 #ifdef USE_DIRECT_THREADING
5892 old_Gnew_addr_return_address = &&old_Gnew_addr_return_2;
5893 #else
5894 old_Gnew_addr_return_tag = 2;
5895 #endif
5896 goto old_Gnew_addr;
5897 old_Gnew_addr_return_2:
5898 addr_703X = old_Gnew_addr0_return_value;
5899 cell_704X = *((long *) addr_703X);
5900 if ((2 == (3 & cell_704X))) {
5901 size_705X = PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(cell_704X, 8))), 3);
5902 size_in_byte_706X = 8 + (PS_SHIFT_LEFT_INLINE(size_705X, 3));
5903 x_707X = ((s48_ShpS) + (-8 & (7 + size_in_byte_706X))) < (s48_SlimitS);
5904 if (x_707X) {
5905 goto L15265;}
5906 else {s48_collect(0);
5907 goto L15265;}}
5908 else {
5909 ps_error("read-tables! no header", 0);
5910 allocate_table0_return_value = v_708X;
5911 #ifdef USE_DIRECT_THREADING
5912 goto *allocate_table_return_address;
5913 #else
5914 goto allocate_table_return;
5915 #endif
5916 }}
5917 L15265: {
5918 if ((((s48_ShpS) + (-8 & (7 + size_in_byte_706X))) < (s48_SlimitS))) {
5919 new_709X = s48_ShpS;
5920 s48_ShpS = ((s48_ShpS) + (-8 & (7 + size_in_byte_706X)));
5921 arg1K0 = new_709X;
5922 goto L15233;}
5923 else {
5924 arg1K0 = NULL;
5925 goto L15233;}}
5926 L15233: {
5927 pointer_710X = arg1K0;
5928 memmove((void *)pointer_710X, (void *)addr_703X,(8 + (PS_SHIFT_LEFT_INLINE(size_705X, 3))));
5929 allocate_table0_return_value = (3 + (((long) (pointer_710X + 8))));
5930 #ifdef USE_DIRECT_THREADING
5931 goto *allocate_table_return_address;
5932 #else
5933 goto allocate_table_return;
5934 #endif
5935 }
5936 #ifndef USE_DIRECT_THREADING
5937 allocate_table_return:
5938 switch (allocate_table_return_tag) {
5939 case 0: goto allocate_table_return_0;
5940 case 1: goto allocate_table_return_1;
5941 case 2: goto allocate_table_return_2;
5942 default: goto allocate_table_return_3;
5943 }
5944 #endif
5945 }
5946
5947 alloc_object: {
5948 current_address_384X = merged_arg1K0;
5949 size_in_bytes_385X = merged_arg0K1;{
5950 x_711X = ((s48_ShpS) + (-8 & (7 + size_in_bytes_385X))) < (s48_SlimitS);
5951 if (x_711X) {
5952 goto L15172;}
5953 else {s48_collect(0);
5954 goto L15172;}}
5955 L15172: {
5956 if ((((s48_ShpS) + (-8 & (7 + size_in_bytes_385X))) < (s48_SlimitS))) {
5957 new_712X = s48_ShpS;
5958 s48_ShpS = ((s48_ShpS) + (-8 & (7 + size_in_bytes_385X)));
5959 arg1K0 = new_712X;
5960 goto L15162;}
5961 else {
5962 arg1K0 = NULL;
5963 goto L15162;}}
5964 L15162: {
5965 new_address_713X = arg1K0;
5966 image_location_714X = (struct image_location*)malloc(sizeof(struct image_location));
5967 if ((NULL == image_location_714X)) {
5968 arg2K0 = image_location_714X;
5969 goto L15189;}
5970 else {
5971 image_location_714X->new_descriptor = (((long) new_address_713X));
5972 image_location_714X->next = 0;
5973 arg2K0 = image_location_714X;
5974 goto L15189;}}
5975 L15189: {
5976 val_715X = arg2K0;
5977 if ((0 == (((long) current_address_384X)))) {
5978 arg0K0 = -1;
5979 goto L15191;}
5980 else {
5981 arg0K0 = (((long) current_address_384X));
5982 goto L15191;}}
5983 L15191: {
5984 v_716X = arg0K0;table_setB((Sstob_tableS), v_716X, val_715X);
5985 alloc_object0_return_value = new_address_713X;
5986 #ifdef USE_DIRECT_THREADING
5987 goto *alloc_object_return_address;
5988 #else
5989 goto alloc_object_return;
5990 #endif
5991 }
5992 #ifndef USE_DIRECT_THREADING
5993 alloc_object_return:
5994 switch (alloc_object_return_tag) {
5995 case 0: goto alloc_object_return_0;
5996 case 1: goto alloc_object_return_1;
5997 case 2: goto alloc_object_return_2;
5998 default: goto alloc_object_return_3;
5999 }
6000 #endif
6001 }
6002
6003 parse_reachable_objects: {
6004 from_addr_381X = merged_arg1K0;
6005 to_addr_382X = merged_arg1K1;
6006 image_format_383X = merged_arg0K2;{
6007 arg1K0 = from_addr_381X;
6008 goto L16284;}
6009 L16284: {
6010 current_addr_717X = arg1K0;
6011 if ((current_addr_717X == to_addr_382X)) {
6012 parse_reachable_objects0_return_value = 0;
6013 #ifdef USE_DIRECT_THREADING
6014 goto *parse_reachable_objects_return_address;
6015 #else
6016 goto parse_reachable_objects_return;
6017 #endif
6018 }
6019 else {
6020 merged_arg1K0 = current_addr_717X;
6021 merged_arg0K1 = image_format_383X;
6022 #ifdef USE_DIRECT_THREADING
6023 old_Gnew_addr_return_address = &&old_Gnew_addr_return_3;
6024 #else
6025 old_Gnew_addr_return_tag = 3;
6026 #endif
6027 goto old_Gnew_addr;
6028 old_Gnew_addr_return_3:
6029 x1_718X = old_Gnew_addr0_return_value;
6030 cell_719X = *((long *) x1_718X);
6031 if ((2 == (3 & cell_719X))) {
6032 size_in_cells_720X = PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(cell_719X, 8))), 3);
6033 if ((0 == (Sheap_object_remaining_cellsS))) {
6034 goto L16309;}
6035 else {
6036 ps_error("Encountered an header within an d-vector.", 0);
6037 goto L16309;}}
6038 else {
6039 if ((3 == (3 & cell_719X))) {
6040 current_addr_721X = ((char *) (-11 + cell_719X));
6041 if ((0 == (((long) current_addr_721X)))) {
6042 arg0K0 = -1;
6043 goto L16511;}
6044 else {
6045 arg0K0 = (((long) current_addr_721X));
6046 goto L16511;}}
6047 else {
6048 *((long *) (Sheap_object_pointerS)) = (long) (cell_719X);
6049 Sheap_object_remaining_cellsS = (-1 + (Sheap_object_remaining_cellsS));
6050 Sheap_object_pointerS = ((Sheap_object_pointerS) + 8);
6051 goto L16366;}}}}
6052 L16309: {
6053 if ((2 == (3 & cell_719X))) {
6054 if (((31 & (PS_SHIFT_RIGHT_INLINE(cell_719X, 2))) < 16)) {
6055 goto L16325;}
6056 else {
6057 if ((0 == (((long) current_addr_717X)))) {
6058 arg0K0 = -1;
6059 goto L16397;}
6060 else {
6061 arg0K0 = (((long) current_addr_717X));
6062 goto L16397;}}}
6063 else {
6064 goto L16325;}}
6065 L16511: {
6066 v_722X = arg0K0;
6067 v_723X = table_ref((Sstob_tableS), v_722X);
6068 if ((NULL == v_723X)) {
6069 current_addr_724X = ((char *) (-11 + cell_719X));
6070 merged_arg1K0 = current_addr_724X;
6071 merged_arg0K1 = image_format_383X;
6072 #ifdef USE_DIRECT_THREADING
6073 old_Gnew_addr_return_address = &&old_Gnew_addr_return_4;
6074 #else
6075 old_Gnew_addr_return_tag = 4;
6076 #endif
6077 goto old_Gnew_addr;
6078 old_Gnew_addr_return_4:
6079 x1_725X = old_Gnew_addr0_return_value;
6080 header_cell_726X = *((long *) x1_725X);
6081 size_in_cells_727X = 1 + (PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(header_cell_726X, 8))), 3));
6082 size_in_bytes_728X = PS_SHIFT_LEFT_INLINE(size_in_cells_727X, 3);
6083 if ((2 == (3 & header_cell_726X))) {
6084 if (((31 & (PS_SHIFT_RIGHT_INLINE(header_cell_726X, 2))) < 16)) {
6085 goto L16143;}
6086 else {
6087 merged_arg1K0 = current_addr_724X;
6088 merged_arg0K1 = (PS_SHIFT_LEFT_INLINE(size_in_cells_727X, 3));
6089 #ifdef USE_DIRECT_THREADING
6090 alloc_object_return_address = &&alloc_object_return_0;
6091 #else
6092 alloc_object_return_tag = 0;
6093 #endif
6094 goto alloc_object;
6095 alloc_object_return_0:
6096 new_address_729X = alloc_object0_return_value;
6097 merged_arg1K0 = current_addr_724X;
6098 merged_arg0K1 = image_format_383X;
6099 #ifdef USE_DIRECT_THREADING
6100 old_Gnew_addr_return_address = &&old_Gnew_addr_return_5;
6101 #else
6102 old_Gnew_addr_return_tag = 5;
6103 #endif
6104 goto old_Gnew_addr;
6105 old_Gnew_addr_return_5:
6106 v_730X = old_Gnew_addr0_return_value;
6107 memmove((void *)new_address_729X, (void *)v_730X,(PS_SHIFT_LEFT_INLINE(size_in_cells_727X, 3)));
6108 goto L16357;}}
6109 else {
6110 goto L16143;}}
6111 else {
6112 goto L16357;}}
6113 L16366: {
6114 arg1K0 = (current_addr_717X + 8);
6115 goto L16284;}
6116 L16325: {
6117 if ((0 == (((long) current_addr_717X)))) {
6118 arg0K0 = -1;
6119 goto L16424;}
6120 else {
6121 arg0K0 = (((long) current_addr_717X));
6122 goto L16424;}}
6123 L16397: {
6124 v_731X = arg0K0;
6125 v_732X = table_ref((Sstob_tableS), v_731X);
6126 if ((NULL == v_732X)) {
6127 size_in_cells_733X = 1 + size_in_cells_720X;
6128 merged_arg1K0 = current_addr_717X;
6129 merged_arg0K1 = (PS_SHIFT_LEFT_INLINE(size_in_cells_733X, 3));
6130 #ifdef USE_DIRECT_THREADING
6131 alloc_object_return_address = &&alloc_object_return_1;
6132 #else
6133 alloc_object_return_tag = 1;
6134 #endif
6135 goto alloc_object;
6136 alloc_object_return_1:
6137 new_address_734X = alloc_object0_return_value;
6138 merged_arg1K0 = current_addr_717X;
6139 merged_arg0K1 = image_format_383X;
6140 #ifdef USE_DIRECT_THREADING
6141 old_Gnew_addr_return_address = &&old_Gnew_addr_return_6;
6142 #else
6143 old_Gnew_addr_return_tag = 6;
6144 #endif
6145 goto old_Gnew_addr;
6146 old_Gnew_addr_return_6:
6147 v_735X = old_Gnew_addr0_return_value;
6148 memmove((void *)new_address_734X, (void *)v_735X,(PS_SHIFT_LEFT_INLINE(size_in_cells_733X, 3)));
6149 goto L16322;}
6150 else {
6151 goto L16322;}}
6152 L16143: {
6153 merged_arg1K0 = current_addr_724X;
6154 merged_arg0K1 = size_in_bytes_728X;
6155 #ifdef USE_DIRECT_THREADING
6156 alloc_object_return_address = &&alloc_object_return_2;
6157 #else
6158 alloc_object_return_tag = 2;
6159 #endif
6160 goto alloc_object;
6161 alloc_object_return_2:
6162 new_address_736X = alloc_object0_return_value;
6163 *((long *) new_address_736X) = (long) ((-1978 + (PS_SHIFT_LEFT_INLINE(size_in_bytes_728X, 8))));
6164 arg1K0 = (new_address_736X + 8);
6165 goto L16161;}
6166 L16357: {
6167 address_737X = ((char *) (-11 + cell_719X));
6168 if ((0 == (((long) address_737X)))) {
6169 arg0K0 = -1;
6170 goto L16525;}
6171 else {
6172 arg0K0 = (((long) address_737X));
6173 goto L16525;}}
6174 L16424: {
6175 v_738X = arg0K0;
6176 v_739X = table_ref((Sstob_tableS), v_738X);
6177 if ((NULL == v_739X)) {
6178 merged_arg1K0 = current_addr_717X;
6179 merged_arg0K1 = (8 + (PS_SHIFT_LEFT_INLINE(size_in_cells_720X, 3)));
6180 #ifdef USE_DIRECT_THREADING
6181 alloc_object_return_address = &&alloc_object_return_3;
6182 #else
6183 alloc_object_return_tag = 3;
6184 #endif
6185 goto alloc_object;
6186 alloc_object_return_3:
6187 new_address_740X = alloc_object0_return_value;
6188 if ((2 == (3 & cell_719X))) {
6189 goto L16441;}
6190 else {
6191 ps_error("cell was not a header", 0);
6192 goto L16441;}}
6193 else {
6194 if ((0 == (((long) current_addr_717X)))) {
6195 arg0K0 = -1;
6196 goto L10166;}
6197 else {
6198 arg0K0 = (((long) current_addr_717X));
6199 goto L10166;}}}
6200 L16322: {
6201 arg1K0 = (current_addr_717X + (8 + (PS_SHIFT_LEFT_INLINE(size_in_cells_720X, 3))));
6202 goto L16284;}
6203 L16161: {
6204 index_741X = arg1K0;
6205 if ((index_741X == (new_address_736X + (-8 & (7 + size_in_bytes_728X))))) {
6206 goto L16357;}
6207 else {
6208 *((long *) index_741X) = (long) (0);
6209 arg1K0 = (index_741X + 8);
6210 goto L16161;}}
6211 L16525: {
6212 v_742X = arg0K0;
6213 image_location_743X = table_ref((Sstob_tableS), v_742X);
6214 *((long *) (Sheap_object_pointerS)) = (long) ((3 + (((long) ((((char *) (image_location_743X->new_descriptor))) + 8)))));
6215 Sheap_object_remaining_cellsS = (-1 + (Sheap_object_remaining_cellsS));
6216 Sheap_object_pointerS = ((Sheap_object_pointerS) + 8);
6217 goto L16366;}
6218 L16441: {
6219 *((long *) new_address_740X) = (long) (cell_719X);
6220 Sheap_object_pointerS = new_address_740X;
6221 Sheap_object_remaining_cellsS = (1 + (PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(cell_719X, 8))), 3)));
6222 Sheap_object_remaining_cellsS = (-1 + (Sheap_object_remaining_cellsS));
6223 Sheap_object_pointerS = ((Sheap_object_pointerS) + 8);
6224 goto L16337;}
6225 L10166: {
6226 v_744X = arg0K0;
6227 image_location_745X = table_ref((Sstob_tableS), v_744X);
6228 new_address_746X = ((char *) (image_location_745X->new_descriptor));
6229 if ((2 == (3 & cell_719X))) {
6230 goto L10151;}
6231 else {
6232 ps_error("cell was not a header", 0);
6233 goto L10151;}}
6234 L16337: {
6235 arg1K0 = (current_addr_717X + 8);
6236 goto L16284;}
6237 L10151: {
6238 *((long *) new_address_746X) = (long) (cell_719X);
6239 Sheap_object_pointerS = new_address_746X;
6240 Sheap_object_remaining_cellsS = (1 + (PS_SHIFT_RIGHT_INLINE((7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(cell_719X, 8))), 3)));
6241 Sheap_object_remaining_cellsS = (-1 + (Sheap_object_remaining_cellsS));
6242 Sheap_object_pointerS = ((Sheap_object_pointerS) + 8);
6243 goto L16337;}
6244 #ifndef USE_DIRECT_THREADING
6245 parse_reachable_objects_return:
6246 switch (parse_reachable_objects_return_tag) {
6247 case 0: goto parse_reachable_objects_return_0;
6248 case 1: goto parse_reachable_objects_return_1;
6249 case 2: goto parse_reachable_objects_return_2;
6250 default: goto parse_reachable_objects_return_3;
6251 }
6252 #endif
6253 }
6254
6255 old_Gnew_addr: {
6256 addr_379X = merged_arg1K0;
6257 format_380X = merged_arg0K1;{
6258 if ((0 == format_380X)) {
6259 old_Gnew_addr0_return_value = ((Sheap_image_pointerS) + (addr_379X - (Simg_start_addrS)));
6260 #ifdef USE_DIRECT_THREADING
6261 goto *old_Gnew_addr_return_address;
6262 #else
6263 goto old_Gnew_addr_return;
6264 #endif
6265 }
6266 else {
6267 if ((1 == format_380X)) {
6268 y_747X = Ssmall_img_start_addrS;
6269 if ((addr_379X < y_747X)) {
6270 goto L3091;}
6271 else {
6272 if (((Ssmall_img_hp_addrS) < addr_379X)) {
6273 goto L3091;}
6274 else {
6275 SoffsetS = (((Sweaks_img_end_addrS) - (Sweaks_img_start_addrS)) + ((Slarge_img_end_addrS) - (Slarge_img_start_addrS)));
6276 Sarea_startS = (Ssmall_img_start_addrS);
6277 goto L3143;}}}
6278 else {
6279 ps_error("old->new-addr: Unknown image format", 0);
6280 old_Gnew_addr0_return_value = v_748X;
6281 #ifdef USE_DIRECT_THREADING
6282 goto *old_Gnew_addr_return_address;
6283 #else
6284 goto old_Gnew_addr_return;
6285 #endif
6286 }}}
6287 L3091: {
6288 y_749X = Slarge_img_start_addrS;
6289 if ((addr_379X < y_749X)) {
6290 goto L3117;}
6291 else {
6292 if (((Slarge_img_hp_addrS) < addr_379X)) {
6293 goto L3117;}
6294 else {
6295 SoffsetS = ((Sweaks_img_end_addrS) - (Sweaks_img_start_addrS));
6296 Sarea_startS = (Slarge_img_start_addrS);
6297 goto L3143;}}}
6298 L3143: {
6299 old_Gnew_addr0_return_value = ((Sheap_image_pointerS) + ((SoffsetS) + (addr_379X - (Sarea_startS))));
6300 #ifdef USE_DIRECT_THREADING
6301 goto *old_Gnew_addr_return_address;
6302 #else
6303 goto old_Gnew_addr_return;
6304 #endif
6305 }
6306 L3117: {
6307 y_750X = Sweaks_img_start_addrS;
6308 if ((addr_379X < y_750X)) {
6309 goto L3139;}
6310 else {
6311 if (((Sweaks_img_hp_addrS) < addr_379X)) {
6312 goto L3139;}
6313 else {
6314 SoffsetS = 0;
6315 Sarea_startS = (Sweaks_img_start_addrS);
6316 goto L3143;}}}
6317 L3139: {
6318 ps_error("Unknown address area!", 0);
6319 goto L3143;}
6320 #ifndef USE_DIRECT_THREADING
6321 old_Gnew_addr_return:
6322 switch (old_Gnew_addr_return_tag) {
6323 case 0: goto old_Gnew_addr_return_0;
6324 case 1: goto old_Gnew_addr_return_1;
6325 case 2: goto old_Gnew_addr_return_2;
6326 case 3: goto old_Gnew_addr_return_3;
6327 case 4: goto old_Gnew_addr_return_4;
6328 case 5: goto old_Gnew_addr_return_5;
6329 default: goto old_Gnew_addr_return_6;
6330 }
6331 #endif
6332 }
6333
6334 relocateD2: {
6335 address_378X = merged_arg0K0;{
6336 address_751X = ((char *) (-11 + address_378X));
6337 if ((0 == (((long) address_751X)))) {
6338 arg0K0 = -1;
6339 goto L12909;}
6340 else {
6341 arg0K0 = (((long) address_751X));
6342 goto L12909;}}
6343 L12909: {
6344 v_752X = arg0K0;
6345 image_location_753X = table_ref(stob_table_620X, v_752X);
6346 relocateD20_return_value = (3 + (((long) ((((char *) (image_location_753X->new_descriptor))) + 8))));
6347 #ifdef USE_DIRECT_THREADING
6348 goto *relocateD2_return_address;
6349 #else
6350 goto relocateD2_return;
6351 #endif
6352 }
6353 #ifndef USE_DIRECT_THREADING
6354 relocateD2_return:
6355 switch (relocateD2_return_tag) {
6356 case 0: goto relocateD2_return_0;
6357 default: goto relocateD2_return_1;
6358 }
6359 #endif
6360 }
6361
6362 }
s48_trace_locationsB(char * start_754X,char * end_755X)6363 void s48_trace_locationsB(char * start_754X, char * end_755X)
6364 {
6365 char * arg1K0;
6366 char * arg1K1;
6367 long arg0K0;
6368 long newpair_787X;
6369 char * pair_address_786X;
6370 long tconc_cdr_785X;
6371 char * ptr_784X;
6372 long mask_783X;
6373 long thing_782X;
6374 long tconc_car_781X;
6375 char * trace_ptr_780X;
6376 char * mask_ptr_779X;
6377 long new_778X;
6378 char * data_addr_777X;
6379 char * frontier_776X;
6380 long new_thing_775X;
6381 long thing_774X;
6382 long tconc_773X;
6383 long tlc_772X;
6384 long size_771X;
6385 char * mask_pointer_770X;
6386 char * data_pointer_769X;
6387 long mask_size_768X;
6388 char * code_pointer_767X;
6389 long size_766X;
6390 char * frontier_765X;
6391 long new_thing_764X;
6392 char * a_763X;
6393 long descriptor_762X;
6394 long h_761X;
6395 char * a_760X;
6396 char * next_759X;
6397 long thing_758X;
6398 char * frontier_757X;
6399 char * addr_756X;
6400 { arg1K0 = start_754X;
6401 arg1K1 = (s48_ShpS);
6402 goto L16944;}
6403 L16944: {
6404 addr_756X = arg1K0;
6405 frontier_757X = arg1K1;
6406 if ((addr_756X < end_755X)) {
6407 thing_758X = *((long *) addr_756X);
6408 next_759X = addr_756X + 8;
6409 if ((2 == (3 & thing_758X))) {
6410 if ((2 == (3 & thing_758X))) {
6411 if (((31 & (PS_SHIFT_RIGHT_INLINE(thing_758X, 2))) < 16)) {
6412 goto L16961;}
6413 else {
6414 arg1K0 = (next_759X + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(thing_758X, 8)))));
6415 arg1K1 = frontier_757X;
6416 goto L16944;}}
6417 else {
6418 goto L16961;}}
6419 else {
6420 if ((3 == (3 & thing_758X))) {
6421 a_760X = ((char *) (-3 + thing_758X));
6422 if ((a_760X < (Sfrom_beginS))) {
6423 arg1K0 = next_759X;
6424 arg1K1 = frontier_757X;
6425 goto L16944;}
6426 else {
6427 if ((a_760X < (Sfrom_endS))) {
6428 h_761X = *((long *) (((char *) (-11 + thing_758X))));
6429 if ((3 == (3 & h_761X))) {
6430 arg0K0 = h_761X;
6431 arg1K1 = frontier_757X;
6432 goto L16997;}
6433 else {
6434 if ((2102 == h_761X)) {
6435 descriptor_762X = *((long *) (((char *) (-3 + thing_758X))));
6436 if ((3 == (3 & descriptor_762X))) {
6437 a_763X = ((char *) (-3 + descriptor_762X));
6438 if ((a_763X < (Sfrom_beginS))) {
6439 goto L17683;}
6440 else {
6441 if ((a_763X < (Sfrom_endS))) {
6442 new_thing_764X = copy_weak_pointer(thing_758X, frontier_757X, &frontier_765X);
6443 arg0K0 = new_thing_764X;
6444 arg1K1 = frontier_765X;
6445 goto L16997;}
6446 else {
6447 goto L17683;}}}
6448 else {
6449 goto L17683;}}
6450 else {
6451 goto L17683;}}}
6452 else {
6453 arg1K0 = next_759X;
6454 arg1K1 = frontier_757X;
6455 goto L16944;}}}
6456 else {
6457 arg1K0 = next_759X;
6458 arg1K1 = frontier_757X;
6459 goto L16944;}}}
6460 else {
6461 s48_ShpS = frontier_757X;
6462 return;}}
6463 L16961: {
6464 if ((10 == (31 & (PS_SHIFT_RIGHT_INLINE(thing_758X, 2))))) {
6465 size_766X = -8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(thing_758X, 8)));
6466 s48_ShpS = frontier_757X;
6467 code_pointer_767X = (((char *) (-3 + (*((long *) (next_759X + 8)))))) + (PS_SHIFT_RIGHT_INLINE((*((long *) next_759X)), 2));
6468 mask_size_768X = *((unsigned char *) (code_pointer_767X + -3));
6469 if ((0 == mask_size_768X)) {s48_trace_locationsB(next_759X, (next_759X + size_766X));
6470 goto L16972;}
6471 else {
6472 data_pointer_769X = next_759X + 24;s48_trace_locationsB(next_759X, data_pointer_769X);
6473 mask_pointer_770X = code_pointer_767X + -7;
6474 arg1K0 = (mask_pointer_770X + (0 - mask_size_768X));
6475 arg1K1 = data_pointer_769X;
6476 goto L17635;}}
6477 else {
6478 if ((15 == (31 & (PS_SHIFT_RIGHT_INLINE(thing_758X, 2))))) {
6479 size_771X = -8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(thing_758X, 8)));
6480 s48_ShpS = frontier_757X;s48_trace_locationsB(next_759X, (next_759X + size_771X));
6481 tlc_772X = 3 + (((long) next_759X));
6482 tconc_773X = *((long *) ((((char *) (-3 + tlc_772X))) + 16));
6483 if ((3 == (3 & tconc_773X))) {
6484 if ((0 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + tconc_773X))))), 2))))) {
6485 if ((3 == (3 & (*((long *) (((char *) (-3 + tlc_772X)))))))) {
6486 thing_774X = *((long *) (((char *) (-3 + tconc_773X))));
6487 if ((3 == (3 & thing_774X))) {
6488 if ((3 == (3 & (*((long *) (((char *) (-11 + thing_774X)))))))) {
6489 arg0K0 = (*((long *) (((char *) (-11 + thing_774X)))));
6490 goto L17182;}
6491 else {
6492 arg0K0 = thing_774X;
6493 goto L17182;}}
6494 else {
6495 arg0K0 = thing_774X;
6496 goto L17182;}}
6497 else {
6498 goto L16986;}}
6499 else {
6500 goto L16986;}}
6501 else {
6502 goto L16986;}}
6503 else {
6504 arg1K0 = next_759X;
6505 arg1K1 = frontier_757X;
6506 goto L16944;}}}
6507 L16997: {
6508 new_thing_775X = arg0K0;
6509 frontier_776X = arg1K1;
6510 *((long *) addr_756X) = (long) (new_thing_775X);
6511 arg1K0 = next_759X;
6512 arg1K1 = frontier_776X;
6513 goto L16944;}
6514 L17683: {
6515 *((long *) frontier_757X) = (long) (h_761X);
6516 data_addr_777X = frontier_757X + 8;
6517 new_778X = 3 + (((long) data_addr_777X));
6518 *((long *) (((char *) (-11 + thing_758X)))) = (long) (new_778X);
6519 memmove((void *)data_addr_777X, (void *)(((char *) (-3 + thing_758X))),(PS_SHIFT_RIGHT_LOGICAL_INLINE(h_761X, 8)));
6520 arg0K0 = new_778X;
6521 arg1K1 = (data_addr_777X + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(h_761X, 8)))));
6522 goto L16997;}
6523 L16972: {
6524 arg1K0 = (next_759X + size_766X);
6525 arg1K1 = (s48_ShpS);
6526 goto L16944;}
6527 L17635: {
6528 mask_ptr_779X = arg1K0;
6529 trace_ptr_780X = arg1K1;
6530 if ((mask_ptr_779X == mask_pointer_770X)) {
6531 goto L16972;}
6532 else {
6533 arg0K0 = (*((unsigned char *) mask_ptr_779X));
6534 arg1K1 = trace_ptr_780X;
6535 goto L17642;}}
6536 L17182: {
6537 tconc_car_781X = arg0K0;
6538 thing_782X = *((long *) ((((char *) (-3 + tconc_773X))) + 8));
6539 if ((3 == (3 & thing_782X))) {
6540 if ((3 == (3 & (*((long *) (((char *) (-11 + thing_782X)))))))) {
6541 arg0K0 = (*((long *) (((char *) (-11 + thing_782X)))));
6542 goto L17186;}
6543 else {
6544 arg0K0 = thing_782X;
6545 goto L17186;}}
6546 else {
6547 arg0K0 = thing_782X;
6548 goto L17186;}}
6549 L16986: {
6550 arg1K0 = (next_759X + size_771X);
6551 arg1K1 = (s48_ShpS);
6552 goto L16944;}
6553 L17642: {
6554 mask_783X = arg0K0;
6555 ptr_784X = arg1K1;
6556 if ((0 == mask_783X)) {
6557 arg1K0 = (mask_ptr_779X + 1);
6558 arg1K1 = (trace_ptr_780X + 64);
6559 goto L17635;}
6560 else {
6561 if ((1 == (1 & mask_783X))) {s48_trace_locationsB(ptr_784X, (ptr_784X + 8));
6562 goto L17644;}
6563 else {
6564 goto L17644;}}}
6565 L17186: {
6566 tconc_cdr_785X = arg0K0;
6567 if ((3 == (3 & tconc_car_781X))) {
6568 if ((0 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + tconc_car_781X))))), 2))))) {
6569 if ((3 == (3 & tconc_cdr_785X))) {
6570 if ((0 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + tconc_cdr_785X))))), 2))))) {
6571 pair_address_786X = s48_ShpS;
6572 *((long *) pair_address_786X) = (long) (4098);
6573 newpair_787X = 3 + (((long) (pair_address_786X + 8)));
6574 if ((3 == (3 & newpair_787X))) {
6575 if ((0 == (31 & (PS_SHIFT_RIGHT_INLINE((*((long *) (((char *) (-11 + newpair_787X))))), 2))))) {
6576 *((long *) (((char *) (-3 + newpair_787X)))) = (long) (1);
6577 *((long *) ((((char *) (-3 + newpair_787X))) + 8)) = (long) (1);
6578 *((long *) (((char *) (-3 + tconc_cdr_785X)))) = (long) (tlc_772X);
6579 *((long *) ((((char *) (-3 + tconc_cdr_785X))) + 8)) = (long) (newpair_787X);
6580 *((long *) ((((char *) (-3 + tconc_773X))) + 8)) = (long) (newpair_787X);
6581 *((long *) ((((char *) (-3 + tlc_772X))) + 16)) = (long) (1);
6582 s48_ShpS = (pair_address_786X + 24);
6583 goto L16986;}
6584 else {
6585 goto L16986;}}
6586 else {
6587 goto L16986;}}
6588 else {
6589 goto L16986;}}
6590 else {
6591 goto L16986;}}
6592 else {
6593 goto L16986;}}
6594 else {
6595 goto L16986;}}
6596 L17644: {
6597 arg0K0 = (PS_SHIFT_RIGHT_INLINE(mask_783X, 1));
6598 arg1K1 = (ptr_784X + 8);
6599 goto L17642;}
6600 }
s48_trace_stob_contentsB(long stob_788X)6601 void s48_trace_stob_contentsB(long stob_788X)
6602 {
6603 char * start_790X;
6604 long h_789X;
6605 { h_789X = *((long *) (((char *) (-11 + stob_788X))));
6606 start_790X = ((char *) (-3 + stob_788X));
6607 s48_trace_locationsB(start_790X, (start_790X + (-8 & (7 + (PS_SHIFT_RIGHT_LOGICAL_INLINE(h_789X, 8))))));
6608 return;}
6609 }
s48_trace_continuation_contentsB(char * contents_pointer_791X,char * code_pointer_792X,long mask_size_793X)6610 void s48_trace_continuation_contentsB(char * contents_pointer_791X, char * code_pointer_792X, long mask_size_793X)
6611 {
6612 char * arg1K0;
6613 char * arg1K1;
6614 long arg0K0;
6615 char * ptr_798X;
6616 long mask_797X;
6617 char * trace_ptr_796X;
6618 char * mask_ptr_795X;
6619 char * mask_pointer_794X;
6620 { mask_pointer_794X = code_pointer_792X + -7;
6621 arg1K0 = (mask_pointer_794X + (0 - mask_size_793X));
6622 arg1K1 = contents_pointer_791X;
6623 goto L17487;}
6624 L17487: {
6625 mask_ptr_795X = arg1K0;
6626 trace_ptr_796X = arg1K1;
6627 if ((mask_ptr_795X == mask_pointer_794X)) {
6628 return;}
6629 else {
6630 arg0K0 = (*((unsigned char *) mask_ptr_795X));
6631 arg1K1 = trace_ptr_796X;
6632 goto L17495;}}
6633 L17495: {
6634 mask_797X = arg0K0;
6635 ptr_798X = arg1K1;
6636 if ((0 == mask_797X)) {
6637 arg1K0 = (mask_ptr_795X + 1);
6638 arg1K1 = (trace_ptr_796X + 64);
6639 goto L17487;}
6640 else {
6641 if ((1 == (1 & mask_797X))) {s48_trace_locationsB(ptr_798X, (ptr_798X + 8));
6642 goto L17511;}
6643 else {
6644 goto L17511;}}}
6645 L17511: {
6646 arg0K0 = (PS_SHIFT_RIGHT_INLINE(mask_797X, 1));
6647 arg1K1 = (ptr_798X + 8);
6648 goto L17495;}
6649 }void
s48_heap_init(void)6650 s48_heap_init(void)
6651 {
6652 Snew_heap_start_addrS = NULL;
6653 Spure_area_countS = 0;
6654 Simpure_area_countS = 0;
6655 Sfinding_typeS = 1;
6656 Sheap_errors_leftS = 0;
6657 Sgc_countS = 0;
6658 Sgc_secondsS = 0;
6659 Sgc_msecondsS = 0;
6660 SstatusS = NO_ERRORS;
6661 SeofPS = 0;
6662 Sstartup_procedureS = 0;
6663 SsymbolsS = 0;
6664 Simported_bindingsS = 0;
6665 Sexported_bindingsS = 0;
6666 Sresumer_recordsS = 0;
6667 Simg_start_addrS = NULL;
6668 Simg_end_addrS = NULL;
6669 Simg_heap_sizeS = 0;
6670 Ssmall_img_start_addrS = NULL;
6671 Ssmall_img_hp_addrS = NULL;
6672 Ssmall_img_end_addrS = NULL;
6673 Ssmall_img_heap_sizeS = 0;
6674 Slarge_img_start_addrS = NULL;
6675 Slarge_img_hp_addrS = NULL;
6676 Slarge_img_end_addrS = NULL;
6677 Slarge_img_heap_sizeS = 0;
6678 Sweaks_img_start_addrS = NULL;
6679 Sweaks_img_hp_addrS = NULL;
6680 Sweaks_img_end_addrS = NULL;
6681 Sweaks_img_heap_sizeS = 0;
6682 SoffsetS = 0;
6683 SinitializingPS = 1;
6684 SstatusS = NO_ERRORS;
6685 image_start_address = 0;
6686 Hthe_record_type270 = 1;
6687 }
6688