bootstrap: Update necessary M1 sources.
[mes.git] / src / mes.M1
1
2
3 :alloc
4         push___%ebp
5         mov____%esp,%ebp
6         sub____%esp,$i32 %0x1054
7                                         # g_free + n < ARENA_SIZE? ...: ...
8         mov____0x32,%eax &g_free
9         push___%eax
10         mov____0x8(%ebp),%eax !0x8
11         mov____%eax,%edx
12         pop____%eax
13         add____%edx,%eax
14         push___%eax
15         mov____0x32,%eax &ARENA_SIZE
16         mov____%eax,%edx
17         pop____%eax
18         sub____%edx,%eax
19         setl___%al
20         movzbl_%al,%eax
21                                         # jmp test LABEL
22         jge32  %alloc_1_else
23         jmp32  %alloc_1_break
24 :alloc_1_else
25         push___$i32 &string_isxdigit_130
26         call32 %assert_fail
27         add____$i8,%esp !0x4
28         test___%eax,%eax
29 :alloc_1_break
30                                         # SCM x = g_free; 
31         mov____0x32,%eax &g_free
32         mov____%eax,0x8(%ebp) !0x-4
33                                         # g_free += n
34         mov____0x8(%ebp),%eax !0x8
35         push___%eax
36         mov____0x32,%eax &g_free
37         pop____%edx
38         add____%edx,%eax
39         mov____%eax,0x32 &g_free
40         test___%eax,%eax
41         mov____0x8(%ebp),%eax !0x-4
42         leave
43         ret
44
45
46 :tmp_num_
47         push___%ebp
48         mov____%esp,%ebp
49         sub____%esp,$i32 %0x1054
50                                         # g_cells[tmp_num].cdr = x
51         mov____0x8(%ebp),%eax !0x8
52         push___%eax
53         mov____0x32,%eax &tmp_num
54         mov____%eax,%edx
55         add____%eax,%eax
56         add____%edx,%eax
57         shl____$i8,%eax !0x2
58         push___%eax
59         mov____0x32,%eax &g_cells
60         mov____%eax,%edx
61         pop____%eax
62         add____%edx,%eax
63         add____$i8,%eax !0x8
64         mov____%eax,%edx
65         pop____%eax
66         mov____%eax,(%edx)
67         test___%eax,%eax
68         mov____0x32,%eax &tmp_num
69         leave
70         ret
71
72
73 :tmp_num2_
74         push___%ebp
75         mov____%esp,%ebp
76         sub____%esp,$i32 %0x1054
77                                         # g_cells[tmp_num2].cdr = x
78         mov____0x8(%ebp),%eax !0x8
79         push___%eax
80         mov____0x32,%eax &tmp_num2
81         mov____%eax,%edx
82         add____%eax,%eax
83         add____%edx,%eax
84         shl____$i8,%eax !0x2
85         push___%eax
86         mov____0x32,%eax &g_cells
87         mov____%eax,%edx
88         pop____%eax
89         add____%edx,%eax
90         add____$i8,%eax !0x8
91         mov____%eax,%edx
92         pop____%eax
93         mov____%eax,(%edx)
94         test___%eax,%eax
95         mov____0x32,%eax &tmp_num2
96         leave
97         ret
98
99
100 :make_cell_
101         push___%ebp
102         mov____%esp,%ebp
103         sub____%esp,$i32 %0x1054
104                                         # SCM x = alloc(1); 
105         mov____$i32,%eax %0x1
106         push___%eax
107         call32 %alloc
108         add____$i8,%esp !0x4
109         mov____%eax,0x8(%ebp) !0x-4
110                                         # g_cells[type].type == TNUMBER? ...: ...
111         mov____0x8(%ebp),%eax !0x8
112         mov____%eax,%edx
113         add____%eax,%eax
114         add____%edx,%eax
115         shl____$i8,%eax !0x2
116         push___%eax
117         mov____0x32,%eax &g_cells
118         mov____%eax,%edx
119         pop____%eax
120         add____%edx,%eax
121         add____$i8,%eax !0x0
122                                         # g_cells[type].type
123         mov____(%eax),%eax
124         push___%eax
125         mov____$i32,%eax %0x6
126         mov____%eax,%edx
127         pop____%eax
128         sub____%edx,%eax
129         sete___%al
130         movzbl_%al,%eax
131                                         # jmp test LABEL
132         jne32  %make_cell__6_else
133         jmp32  %make_cell__6_break
134 :make_cell__6_else
135         push___$i32 &string_isxdigit_131
136         call32 %assert_fail
137         add____$i8,%esp !0x4
138         test___%eax,%eax
139 :make_cell__6_break
140                                         # g_cells[x].type = g_cells[type].cdr
141         mov____0x8(%ebp),%eax !0x8
142         mov____%eax,%edx
143         add____%eax,%eax
144         add____%edx,%eax
145         shl____$i8,%eax !0x2
146         push___%eax
147         mov____0x32,%eax &g_cells
148         mov____%eax,%edx
149         pop____%eax
150         add____%edx,%eax
151         add____$i8,%eax !0x8
152                                         # g_cells[type].cdr
153         mov____(%eax),%eax
154         push___%eax
155         mov____0x8(%ebp),%eax !0x-4
156         mov____%eax,%edx
157         add____%eax,%eax
158         add____%edx,%eax
159         shl____$i8,%eax !0x2
160         push___%eax
161         mov____0x32,%eax &g_cells
162         mov____%eax,%edx
163         pop____%eax
164         add____%edx,%eax
165         add____$i8,%eax !0x0
166         mov____%eax,%edx
167         pop____%eax
168         mov____%eax,(%edx)
169         test___%eax,%eax
170                                         # if (g_cells[type].cdr == TCHAR || g_cells[type].cdr == TNUMBER) ...else ...
171         mov____0x8(%ebp),%eax !0x8
172         mov____%eax,%edx
173         add____%eax,%eax
174         add____%edx,%eax
175         shl____$i8,%eax !0x2
176         push___%eax
177         mov____0x32,%eax &g_cells
178         mov____%eax,%edx
179         pop____%eax
180         add____%edx,%eax
181         add____$i8,%eax !0x8
182                                         # g_cells[type].cdr
183         mov____(%eax),%eax
184         push___%eax
185         mov____$i32,%eax %0x0
186         mov____%eax,%edx
187         pop____%eax
188         sub____%edx,%eax
189         sete___%al
190         movzbl_%al,%eax
191                                         # jmp test LABEL
192         jne32  %make_cell__50_else_b_51
193         jmp32  %make_cell__50_else_skip_b_51
194 :make_cell__50_else_b_51
195         mov____0x8(%ebp),%eax !0x8
196         mov____%eax,%edx
197         add____%eax,%eax
198         add____%edx,%eax
199         shl____$i8,%eax !0x2
200         push___%eax
201         mov____0x32,%eax &g_cells
202         mov____%eax,%edx
203         pop____%eax
204         add____%edx,%eax
205         add____$i8,%eax !0x8
206                                         # g_cells[type].cdr
207         mov____(%eax),%eax
208         push___%eax
209         mov____$i32,%eax %0x6
210         mov____%eax,%edx
211         pop____%eax
212         sub____%edx,%eax
213         sete___%al
214         movzbl_%al,%eax
215                                         # jmp test LABEL
216         jne32  %make_cell__50_else
217 :make_cell__50_else_skip_b_51
218                                         # if (car) ...
219         mov____0x8(%ebp),%eax !0xc
220         test___%eax,%eax
221                                         # jmp test LABEL
222         test___%eax,%eax
223         je32   %make_cell__84_break
224                                         # g_cells[x].car = g_cells[car].car
225         mov____0x8(%ebp),%eax !0xc
226         mov____%eax,%edx
227         add____%eax,%eax
228         add____%edx,%eax
229         shl____$i8,%eax !0x2
230         push___%eax
231         mov____0x32,%eax &g_cells
232         mov____%eax,%edx
233         pop____%eax
234         add____%edx,%eax
235         add____$i8,%eax !0x4
236                                         # g_cells[car].car
237         mov____(%eax),%eax
238         push___%eax
239         mov____0x8(%ebp),%eax !0x-4
240         mov____%eax,%edx
241         add____%eax,%eax
242         add____%edx,%eax
243         shl____$i8,%eax !0x2
244         push___%eax
245         mov____0x32,%eax &g_cells
246         mov____%eax,%edx
247         pop____%eax
248         add____%edx,%eax
249         add____$i8,%eax !0x4
250         mov____%eax,%edx
251         pop____%eax
252         mov____%eax,(%edx)
253         test___%eax,%eax
254         jmp32  %make_cell__84_break
255 :make_cell__84_break
256                                         # if (cdr) ...
257         mov____0x8(%ebp),%eax !0x10
258         test___%eax,%eax
259                                         # jmp test LABEL
260         test___%eax,%eax
261         je32   %make_cell__114_break
262                                         # g_cells[x].cdr = g_cells[cdr].cdr
263         mov____0x8(%ebp),%eax !0x10
264         mov____%eax,%edx
265         add____%eax,%eax
266         add____%edx,%eax
267         shl____$i8,%eax !0x2
268         push___%eax
269         mov____0x32,%eax &g_cells
270         mov____%eax,%edx
271         pop____%eax
272         add____%edx,%eax
273         add____$i8,%eax !0x8
274                                         # g_cells[cdr].cdr
275         mov____(%eax),%eax
276         push___%eax
277         mov____0x8(%ebp),%eax !0x-4
278         mov____%eax,%edx
279         add____%eax,%eax
280         add____%edx,%eax
281         shl____$i8,%eax !0x2
282         push___%eax
283         mov____0x32,%eax &g_cells
284         mov____%eax,%edx
285         pop____%eax
286         add____%edx,%eax
287         add____$i8,%eax !0x8
288         mov____%eax,%edx
289         pop____%eax
290         mov____%eax,(%edx)
291         test___%eax,%eax
292         jmp32  %make_cell__114_break
293 :make_cell__114_break
294         jmp32  %make_cell__50_break
295 :make_cell__50_else
296                                         # if (g_cells[type].cdr == TFUNCTION) ...else ...
297         mov____0x8(%ebp),%eax !0x8
298         mov____%eax,%edx
299         add____%eax,%eax
300         add____%edx,%eax
301         shl____$i8,%eax !0x2
302         push___%eax
303         mov____0x32,%eax &g_cells
304         mov____%eax,%edx
305         pop____%eax
306         add____%edx,%eax
307         add____$i8,%eax !0x8
308                                         # g_cells[type].cdr
309         mov____(%eax),%eax
310         push___%eax
311         mov____$i32,%eax %0x3
312         mov____%eax,%edx
313         pop____%eax
314         sub____%edx,%eax
315         sete___%al
316         movzbl_%al,%eax
317                                         # jmp test LABEL
318         jne32  %make_cell__146_else
319                                         # if (car) ...
320         mov____0x8(%ebp),%eax !0xc
321         test___%eax,%eax
322                                         # jmp test LABEL
323         test___%eax,%eax
324         je32   %make_cell__162_break
325                                         # g_cells[x].car = car
326         mov____0x8(%ebp),%eax !0xc
327         push___%eax
328         mov____0x8(%ebp),%eax !0x-4
329         mov____%eax,%edx
330         add____%eax,%eax
331         add____%edx,%eax
332         shl____$i8,%eax !0x2
333         push___%eax
334         mov____0x32,%eax &g_cells
335         mov____%eax,%edx
336         pop____%eax
337         add____%edx,%eax
338         add____$i8,%eax !0x4
339         mov____%eax,%edx
340         pop____%eax
341         mov____%eax,(%edx)
342         test___%eax,%eax
343         jmp32  %make_cell__162_break
344 :make_cell__162_break
345                                         # if (cdr) ...
346         mov____0x8(%ebp),%eax !0x10
347         test___%eax,%eax
348                                         # jmp test LABEL
349         test___%eax,%eax
350         je32   %make_cell__184_break
351                                         # g_cells[x].cdr = g_cells[cdr].cdr
352         mov____0x8(%ebp),%eax !0x10
353         mov____%eax,%edx
354         add____%eax,%eax
355         add____%edx,%eax
356         shl____$i8,%eax !0x2
357         push___%eax
358         mov____0x32,%eax &g_cells
359         mov____%eax,%edx
360         pop____%eax
361         add____%edx,%eax
362         add____$i8,%eax !0x8
363                                         # g_cells[cdr].cdr
364         mov____(%eax),%eax
365         push___%eax
366         mov____0x8(%ebp),%eax !0x-4
367         mov____%eax,%edx
368         add____%eax,%eax
369         add____%edx,%eax
370         shl____$i8,%eax !0x2
371         push___%eax
372         mov____0x32,%eax &g_cells
373         mov____%eax,%edx
374         pop____%eax
375         add____%edx,%eax
376         add____$i8,%eax !0x8
377         mov____%eax,%edx
378         pop____%eax
379         mov____%eax,(%edx)
380         test___%eax,%eax
381         jmp32  %make_cell__184_break
382 :make_cell__184_break
383         jmp32  %make_cell__146_break
384 :make_cell__146_else
385                                         # g_cells[x].car = car
386         mov____0x8(%ebp),%eax !0xc
387         push___%eax
388         mov____0x8(%ebp),%eax !0x-4
389         mov____%eax,%edx
390         add____%eax,%eax
391         add____%edx,%eax
392         shl____$i8,%eax !0x2
393         push___%eax
394         mov____0x32,%eax &g_cells
395         mov____%eax,%edx
396         pop____%eax
397         add____%edx,%eax
398         add____$i8,%eax !0x4
399         mov____%eax,%edx
400         pop____%eax
401         mov____%eax,(%edx)
402         test___%eax,%eax
403                                         # g_cells[x].cdr = cdr
404         mov____0x8(%ebp),%eax !0x10
405         push___%eax
406         mov____0x8(%ebp),%eax !0x-4
407         mov____%eax,%edx
408         add____%eax,%eax
409         add____%edx,%eax
410         shl____$i8,%eax !0x2
411         push___%eax
412         mov____0x32,%eax &g_cells
413         mov____%eax,%edx
414         pop____%eax
415         add____%edx,%eax
416         add____$i8,%eax !0x8
417         mov____%eax,%edx
418         pop____%eax
419         mov____%eax,(%edx)
420         test___%eax,%eax
421 :make_cell__146_break
422 :make_cell__50_break
423         mov____0x8(%ebp),%eax !0x-4
424         leave
425         ret
426
427
428 :make_symbol_
429         push___%ebp
430         mov____%esp,%ebp
431         sub____%esp,$i32 %0x1054
432                                         # g_cells[tmp_num].cdr = TSYMBOL
433         mov____$i32,%eax %0xb
434         push___%eax
435         mov____0x32,%eax &tmp_num
436         mov____%eax,%edx
437         add____%eax,%eax
438         add____%edx,%eax
439         shl____$i8,%eax !0x2
440         push___%eax
441         mov____0x32,%eax &g_cells
442         mov____%eax,%edx
443         pop____%eax
444         add____%edx,%eax
445         add____$i8,%eax !0x8
446         mov____%eax,%edx
447         pop____%eax
448         mov____%eax,(%edx)
449         test___%eax,%eax
450                                         # SCM x = make_cell_(tmp_num, s, 0); 
451         mov____$i32,%eax %0x0
452         push___%eax
453         push___0x8(%ebp) !0x8
454         mov____0x32,%eax &tmp_num
455         push___%eax
456         call32 %make_cell_
457         add____$i8,%esp !0xc
458         mov____%eax,0x8(%ebp) !0x-4
459                                         # g_symbols = cons(x, g_symbols)
460         mov____0x32,%eax &g_symbols
461         push___%eax
462         push___0x8(%ebp) !0x-4
463         call32 %cons
464         add____$i8,%esp !0x8
465         mov____%eax,0x32 &g_symbols
466         test___%eax,%eax
467         mov____0x8(%ebp),%eax !0x-4
468         leave
469         ret
470
471
472 :list_of_char_equal_p
473         push___%ebp
474         mov____%esp,%ebp
475         sub____%esp,$i32 %0x1054
476                                         # while (a != 1 && b != 1 && g_cells[g_cells[a].car].cdr == g_cells[g_cells[b].     car].cdr) ...
477         jmp32  %list_of_char_equal_p_1_continue
478 :list_of_char_equal_p_1_loop
479                                         # g_cells[g_cells[a].car].type == TCHAR? ...: ...
480         mov____0x8(%ebp),%eax !0x8
481         mov____%eax,%edx
482         add____%eax,%eax
483         add____%edx,%eax
484         shl____$i8,%eax !0x2
485         push___%eax
486         mov____0x32,%eax &g_cells
487         mov____%eax,%edx
488         pop____%eax
489         add____%edx,%eax
490         add____$i8,%eax !0x4
491                                         # g_cells[a].car
492         mov____(%eax),%eax
493         mov____%eax,%edx
494         add____%eax,%eax
495         add____%edx,%eax
496         shl____$i8,%eax !0x2
497         push___%eax
498         mov____0x32,%eax &g_cells
499         mov____%eax,%edx
500         pop____%eax
501         add____%edx,%eax
502         add____$i8,%eax !0x0
503                                         # g_cells[g_cells[a].car].type
504         mov____(%eax),%eax
505         push___%eax
506         mov____$i32,%eax %0x0
507         mov____%eax,%edx
508         pop____%eax
509         sub____%edx,%eax
510         sete___%al
511         movzbl_%al,%eax
512                                         # jmp test LABEL
513         jne32  %list_of_char_equal_p_4_else
514         jmp32  %list_of_char_equal_p_4_break
515 :list_of_char_equal_p_4_else
516         push___$i32 &string_isxdigit_132
517         call32 %assert_fail
518         add____$i8,%esp !0x4
519         test___%eax,%eax
520 :list_of_char_equal_p_4_break
521                                         # g_cells[g_cells[b].car].type == TCHAR? ...: ...
522         mov____0x8(%ebp),%eax !0xc
523         mov____%eax,%edx
524         add____%eax,%eax
525         add____%edx,%eax
526         shl____$i8,%eax !0x2
527         push___%eax
528         mov____0x32,%eax &g_cells
529         mov____%eax,%edx
530         pop____%eax
531         add____%edx,%eax
532         add____$i8,%eax !0x4
533                                         # g_cells[b].car
534         mov____(%eax),%eax
535         mov____%eax,%edx
536         add____%eax,%eax
537         add____%edx,%eax
538         shl____$i8,%eax !0x2
539         push___%eax
540         mov____0x32,%eax &g_cells
541         mov____%eax,%edx
542         pop____%eax
543         add____%edx,%eax
544         add____$i8,%eax !0x0
545                                         # g_cells[g_cells[b].car].type
546         mov____(%eax),%eax
547         push___%eax
548         mov____$i32,%eax %0x0
549         mov____%eax,%edx
550         pop____%eax
551         sub____%edx,%eax
552         sete___%al
553         movzbl_%al,%eax
554                                         # jmp test LABEL
555         jne32  %list_of_char_equal_p_34_else
556         jmp32  %list_of_char_equal_p_34_break
557 :list_of_char_equal_p_34_else
558         push___$i32 &string_isxdigit_133
559         call32 %assert_fail
560         add____$i8,%esp !0x4
561         test___%eax,%eax
562 :list_of_char_equal_p_34_break
563                                         # a = g_cells[a].cdr
564         mov____0x8(%ebp),%eax !0x8
565         mov____%eax,%edx
566         add____%eax,%eax
567         add____%edx,%eax
568         shl____$i8,%eax !0x2
569         push___%eax
570         mov____0x32,%eax &g_cells
571         mov____%eax,%edx
572         pop____%eax
573         add____%edx,%eax
574         add____$i8,%eax !0x8
575                                         # g_cells[a].cdr
576         mov____(%eax),%eax
577         mov____%eax,0x8(%ebp) !0x8
578         test___%eax,%eax
579                                         # b = g_cells[b].cdr
580         mov____0x8(%ebp),%eax !0xc
581         mov____%eax,%edx
582         add____%eax,%eax
583         add____%edx,%eax
584         shl____$i8,%eax !0x2
585         push___%eax
586         mov____0x32,%eax &g_cells
587         mov____%eax,%edx
588         pop____%eax
589         add____%edx,%eax
590         add____$i8,%eax !0x8
591                                         # g_cells[b].cdr
592         mov____(%eax),%eax
593         mov____%eax,0x8(%ebp) !0xc
594         test___%eax,%eax
595 :list_of_char_equal_p_1_continue
596         mov____0x8(%ebp),%eax !0x8
597         push___%eax
598         mov____$i32,%eax %0x1
599         mov____%eax,%edx
600         pop____%eax
601         push___%eax
602         sub____%edx,%eax
603         setne__%al
604         movzbl_%al,%eax
605         xchg___%eax,(%esp)
606         sub____%edx,%eax
607         lahf
608         xor____$i8,%ah !0x40
609         sahf
610         pop____%eax
611                                         # jmp test LABEL
612         jne32  %list_of_char_equal_p_1_break
613         mov____0x8(%ebp),%eax !0xc
614         push___%eax
615         mov____$i32,%eax %0x1
616         mov____%eax,%edx
617         pop____%eax
618         push___%eax
619         sub____%edx,%eax
620         setne__%al
621         movzbl_%al,%eax
622         xchg___%eax,(%esp)
623         sub____%edx,%eax
624         lahf
625         xor____$i8,%ah !0x40
626         sahf
627         pop____%eax
628                                         # jmp test LABEL
629         jne32  %list_of_char_equal_p_1_break
630         mov____0x8(%ebp),%eax !0x8
631         mov____%eax,%edx
632         add____%eax,%eax
633         add____%edx,%eax
634         shl____$i8,%eax !0x2
635         push___%eax
636         mov____0x32,%eax &g_cells
637         mov____%eax,%edx
638         pop____%eax
639         add____%edx,%eax
640         add____$i8,%eax !0x4
641                                         # g_cells[a].car
642         mov____(%eax),%eax
643         mov____%eax,%edx
644         add____%eax,%eax
645         add____%edx,%eax
646         shl____$i8,%eax !0x2
647         push___%eax
648         mov____0x32,%eax &g_cells
649         mov____%eax,%edx
650         pop____%eax
651         add____%edx,%eax
652         add____$i8,%eax !0x8
653                                         # g_cells[g_cells[a].car].cdr
654         mov____(%eax),%eax
655         push___%eax
656         mov____0x8(%ebp),%eax !0xc
657         mov____%eax,%edx
658         add____%eax,%eax
659         add____%edx,%eax
660         shl____$i8,%eax !0x2
661         push___%eax
662         mov____0x32,%eax &g_cells
663         mov____%eax,%edx
664         pop____%eax
665         add____%edx,%eax
666         add____$i8,%eax !0x4
667                                         # g_cells[b].car
668         mov____(%eax),%eax
669         mov____%eax,%edx
670         add____%eax,%eax
671         add____%edx,%eax
672         shl____$i8,%eax !0x2
673         push___%eax
674         mov____0x32,%eax &g_cells
675         mov____%eax,%edx
676         pop____%eax
677         add____%edx,%eax
678         add____$i8,%eax !0x8
679                                         # g_cells[g_cells[b].car].cdr
680         mov____(%eax),%eax
681         mov____%eax,%edx
682         pop____%eax
683         sub____%edx,%eax
684         sete___%al
685         movzbl_%al,%eax
686                                         # jmp test LABEL
687         jne32  %list_of_char_equal_p_1_break
688         jmp32  %list_of_char_equal_p_1_loop
689 :list_of_char_equal_p_1_break
690                                         # a == 1 && b == 1? ...: ...
691         mov____0x8(%ebp),%eax !0x8
692         push___%eax
693         mov____$i32,%eax %0x1
694         mov____%eax,%edx
695         pop____%eax
696         sub____%edx,%eax
697         sete___%al
698         movzbl_%al,%eax
699                                         # jmp test LABEL
700         jne32  %list_of_char_equal_p_144_else
701         mov____0x8(%ebp),%eax !0xc
702         push___%eax
703         mov____$i32,%eax %0x1
704         mov____%eax,%edx
705         pop____%eax
706         sub____%edx,%eax
707         sete___%al
708         movzbl_%al,%eax
709                                         # jmp test LABEL
710         jne32  %list_of_char_equal_p_144_else
711         mov____$i32,%eax %0x3
712         test___%eax,%eax
713         jmp32  %list_of_char_equal_p_144_break
714 :list_of_char_equal_p_144_else
715         mov____$i32,%eax %0x2
716         test___%eax,%eax
717 :list_of_char_equal_p_144_break
718         leave
719         ret
720
721
722 :lookup_symbol_
723         push___%ebp
724         mov____%esp,%ebp
725         sub____%esp,$i32 %0x1054
726                                         # SCM x = g_symbols; 
727         mov____0x32,%eax &g_symbols
728         mov____%eax,0x8(%ebp) !0x-4
729                                         # while (x) ...
730         jmp32  %lookup_symbol__4_continue
731 :lookup_symbol__4_loop
732                                         # if (list_of_char_equal_p(g_cells[g_cells[x].car].car, s) == 3) ...
733         push___0x8(%ebp) !0x8
734         mov____0x8(%ebp),%eax !0x-4
735         mov____%eax,%edx
736         add____%eax,%eax
737         add____%edx,%eax
738         shl____$i8,%eax !0x2
739         push___%eax
740         mov____0x32,%eax &g_cells
741         mov____%eax,%edx
742         pop____%eax
743         add____%edx,%eax
744         add____$i8,%eax !0x4
745                                         # g_cells[x].car
746         mov____(%eax),%eax
747         mov____%eax,%edx
748         add____%eax,%eax
749         add____%edx,%eax
750         shl____$i8,%eax !0x2
751         push___%eax
752         mov____0x32,%eax &g_cells
753         mov____%eax,%edx
754         pop____%eax
755         add____%edx,%eax
756         add____$i8,%eax !0x4
757                                         # g_cells[g_cells[x].car].car
758         mov____(%eax),%eax
759         push___%eax
760         call32 %list_of_char_equal_p
761         add____$i8,%esp !0x8
762         push___%eax
763         mov____$i32,%eax %0x3
764         mov____%eax,%edx
765         pop____%eax
766         sub____%edx,%eax
767         sete___%al
768         movzbl_%al,%eax
769                                         # jmp test LABEL
770         jne32  %lookup_symbol__7_break
771         jmp32  %lookup_symbol__4_break
772         jmp32  %lookup_symbol__7_break
773 :lookup_symbol__7_break
774                                         # x = g_cells[x].cdr
775         mov____0x8(%ebp),%eax !0x-4
776         mov____%eax,%edx
777         add____%eax,%eax
778         add____%edx,%eax
779         shl____$i8,%eax !0x2
780         push___%eax
781         mov____0x32,%eax &g_cells
782         mov____%eax,%edx
783         pop____%eax
784         add____%edx,%eax
785         add____$i8,%eax !0x8
786                                         # g_cells[x].cdr
787         mov____(%eax),%eax
788         mov____%eax,0x8(%ebp) !0x-4
789         test___%eax,%eax
790 :lookup_symbol__4_continue
791         mov____0x8(%ebp),%eax !0x-4
792         test___%eax,%eax
793                                         # jmp test LABEL
794         test___%eax,%eax
795         je32   %lookup_symbol__4_break
796         jmp32  %lookup_symbol__4_loop
797 :lookup_symbol__4_break
798                                         # if (x) ...
799         mov____0x8(%ebp),%eax !0x-4
800         test___%eax,%eax
801                                         # jmp test LABEL
802         test___%eax,%eax
803         je32   %lookup_symbol__57_break
804                                         # x = g_cells[x].car
805         mov____0x8(%ebp),%eax !0x-4
806         mov____%eax,%edx
807         add____%eax,%eax
808         add____%edx,%eax
809         shl____$i8,%eax !0x2
810         push___%eax
811         mov____0x32,%eax &g_cells
812         mov____%eax,%edx
813         pop____%eax
814         add____%edx,%eax
815         add____$i8,%eax !0x4
816                                         # g_cells[x].car
817         mov____(%eax),%eax
818         mov____%eax,0x8(%ebp) !0x-4
819         test___%eax,%eax
820         jmp32  %lookup_symbol__57_break
821 :lookup_symbol__57_break
822                                         # if (!x) ...
823         mov____0x8(%ebp),%eax !0x-4
824         test___%eax,%eax
825         sete___%al
826         movzbl_%al,%eax
827         test___%eax,%eax
828                                         # jmp test LABEL
829         je32   %lookup_symbol__77_break
830                                         # x = make_symbol_(s)
831         push___0x8(%ebp) !0x8
832         call32 %make_symbol_
833         add____$i8,%esp !0x4
834         mov____%eax,0x8(%ebp) !0x-4
835         test___%eax,%eax
836         jmp32  %lookup_symbol__77_break
837 :lookup_symbol__77_break
838         mov____0x8(%ebp),%eax !0x-4
839         leave
840         ret
841
842
843 :type_
844         push___%ebp
845         mov____%esp,%ebp
846         sub____%esp,$i32 %0x1054
847         mov____0x8(%ebp),%eax !0x8
848         mov____%eax,%edx
849         add____%eax,%eax
850         add____%edx,%eax
851         shl____$i8,%eax !0x2
852         push___%eax
853         mov____0x32,%eax &g_cells
854         mov____%eax,%edx
855         pop____%eax
856         add____%edx,%eax
857         add____$i8,%eax !0x0
858                                         # g_cells[x].type
859         mov____(%eax),%eax
860         push___%eax
861         call32 %tmp_num2_
862         add____$i8,%esp !0x4
863         push___%eax
864         mov____$i32,%eax %0x0
865         push___%eax
866         mov____$i32,%eax %0x6
867         push___%eax
868         call32 %tmp_num_
869         add____$i8,%esp !0x4
870         push___%eax
871         call32 %make_cell_
872         add____$i8,%esp !0xc
873         leave
874         ret
875
876
877 :car_
878         push___%ebp
879         mov____%esp,%ebp
880         sub____%esp,$i32 %0x1054
881                                         # g_cells[x].type != TCONTINUATION && ((((g_cells[g_cells[x].car].type == TPAIR      || g_cells[g_cells[x].car].type == TREF) || g_cells[g_cells[x].car].type      == TSPECIAL) || g_cells[g_cells[x].car].type == TSYMBOL) || g_cells[     g_cells[x].car].type == TSTRING)? ...: ...
882         mov____0x8(%ebp),%eax !0x8
883         mov____%eax,%edx
884         add____%eax,%eax
885         add____%edx,%eax
886         shl____$i8,%eax !0x2
887         push___%eax
888         mov____0x32,%eax &g_cells
889         mov____%eax,%edx
890         pop____%eax
891         add____%edx,%eax
892         add____$i8,%eax !0x0
893                                         # g_cells[x].type
894         mov____(%eax),%eax
895         push___%eax
896         mov____$i32,%eax %0x2
897         mov____%eax,%edx
898         pop____%eax
899         push___%eax
900         sub____%edx,%eax
901         setne__%al
902         movzbl_%al,%eax
903         xchg___%eax,(%esp)
904         sub____%edx,%eax
905         lahf
906         xor____$i8,%ah !0x40
907         sahf
908         pop____%eax
909                                         # jmp test LABEL
910         jne32  %car__1_else
911         mov____0x8(%ebp),%eax !0x8
912         mov____%eax,%edx
913         add____%eax,%eax
914         add____%edx,%eax
915         shl____$i8,%eax !0x2
916         push___%eax
917         mov____0x32,%eax &g_cells
918         mov____%eax,%edx
919         pop____%eax
920         add____%edx,%eax
921         add____$i8,%eax !0x4
922                                         # g_cells[x].car
923         mov____(%eax),%eax
924         mov____%eax,%edx
925         add____%eax,%eax
926         add____%edx,%eax
927         shl____$i8,%eax !0x2
928         push___%eax
929         mov____0x32,%eax &g_cells
930         mov____%eax,%edx
931         pop____%eax
932         add____%edx,%eax
933         add____$i8,%eax !0x0
934                                         # g_cells[g_cells[x].car].type
935         mov____(%eax),%eax
936         push___%eax
937         mov____$i32,%eax %0x7
938         mov____%eax,%edx
939         pop____%eax
940         sub____%edx,%eax
941         sete___%al
942         movzbl_%al,%eax
943                                         # jmp test LABEL
944         jne32  %car__1_else_b_17_b_17_b_17_b_17
945         jmp32  %car__1_else_b_17_b_17_b_17_skip_b_17
946 :car__1_else_b_17_b_17_b_17_b_17
947         mov____0x8(%ebp),%eax !0x8
948         mov____%eax,%edx
949         add____%eax,%eax
950         add____%edx,%eax
951         shl____$i8,%eax !0x2
952         push___%eax
953         mov____0x32,%eax &g_cells
954         mov____%eax,%edx
955         pop____%eax
956         add____%edx,%eax
957         add____$i8,%eax !0x4
958                                         # g_cells[x].car
959         mov____(%eax),%eax
960         mov____%eax,%edx
961         add____%eax,%eax
962         add____%edx,%eax
963         shl____$i8,%eax !0x2
964         push___%eax
965         mov____0x32,%eax &g_cells
966         mov____%eax,%edx
967         pop____%eax
968         add____%edx,%eax
969         add____$i8,%eax !0x0
970                                         # g_cells[g_cells[x].car].type
971         mov____(%eax),%eax
972         push___%eax
973         mov____$i32,%eax %0x8
974         mov____%eax,%edx
975         pop____%eax
976         sub____%edx,%eax
977         sete___%al
978         movzbl_%al,%eax
979                                         # jmp test LABEL
980         jne32  %car__1_else_b_17_b_17_b_17
981 :car__1_else_b_17_b_17_b_17_skip_b_17
982         jmp32  %car__1_else_b_17_b_17_skip_b_17
983 :car__1_else_b_17_b_17_b_17
984         mov____0x8(%ebp),%eax !0x8
985         mov____%eax,%edx
986         add____%eax,%eax
987         add____%edx,%eax
988         shl____$i8,%eax !0x2
989         push___%eax
990         mov____0x32,%eax &g_cells
991         mov____%eax,%edx
992         pop____%eax
993         add____%edx,%eax
994         add____$i8,%eax !0x4
995                                         # g_cells[x].car
996         mov____(%eax),%eax
997         mov____%eax,%edx
998         add____%eax,%eax
999         add____%edx,%eax
1000         shl____$i8,%eax !0x2
1001         push___%eax
1002         mov____0x32,%eax &g_cells
1003         mov____%eax,%edx
1004         pop____%eax
1005         add____%edx,%eax
1006         add____$i8,%eax !0x0
1007                                         # g_cells[g_cells[x].car].type
1008         mov____(%eax),%eax
1009         push___%eax
1010         mov____$i32,%eax %0x9
1011         mov____%eax,%edx
1012         pop____%eax
1013         sub____%edx,%eax
1014         sete___%al
1015         movzbl_%al,%eax
1016                                         # jmp test LABEL
1017         jne32  %car__1_else_b_17_b_17
1018 :car__1_else_b_17_b_17_skip_b_17
1019         jmp32  %car__1_else_b_17_skip_b_17
1020 :car__1_else_b_17_b_17
1021         mov____0x8(%ebp),%eax !0x8
1022         mov____%eax,%edx
1023         add____%eax,%eax
1024         add____%edx,%eax
1025         shl____$i8,%eax !0x2
1026         push___%eax
1027         mov____0x32,%eax &g_cells
1028         mov____%eax,%edx
1029         pop____%eax
1030         add____%edx,%eax
1031         add____$i8,%eax !0x4
1032                                         # g_cells[x].car
1033         mov____(%eax),%eax
1034         mov____%eax,%edx
1035         add____%eax,%eax
1036         add____%edx,%eax
1037         shl____$i8,%eax !0x2
1038         push___%eax
1039         mov____0x32,%eax &g_cells
1040         mov____%eax,%edx
1041         pop____%eax
1042         add____%edx,%eax
1043         add____$i8,%eax !0x0
1044                                         # g_cells[g_cells[x].car].type
1045         mov____(%eax),%eax
1046         push___%eax
1047         mov____$i32,%eax %0xb
1048         mov____%eax,%edx
1049         pop____%eax
1050         sub____%edx,%eax
1051         sete___%al
1052         movzbl_%al,%eax
1053                                         # jmp test LABEL
1054         jne32  %car__1_else_b_17
1055 :car__1_else_b_17_skip_b_17
1056         jmp32  %car__1_else_skip_b_17
1057 :car__1_else_b_17
1058         mov____0x8(%ebp),%eax !0x8
1059         mov____%eax,%edx
1060         add____%eax,%eax
1061         add____%edx,%eax
1062         shl____$i8,%eax !0x2
1063         push___%eax
1064         mov____0x32,%eax &g_cells
1065         mov____%eax,%edx
1066         pop____%eax
1067         add____%edx,%eax
1068         add____$i8,%eax !0x4
1069                                         # g_cells[x].car
1070         mov____(%eax),%eax
1071         mov____%eax,%edx
1072         add____%eax,%eax
1073         add____%edx,%eax
1074         shl____$i8,%eax !0x2
1075         push___%eax
1076         mov____0x32,%eax &g_cells
1077         mov____%eax,%edx
1078         pop____%eax
1079         add____%edx,%eax
1080         add____$i8,%eax !0x0
1081                                         # g_cells[g_cells[x].car].type
1082         mov____(%eax),%eax
1083         push___%eax
1084         mov____$i32,%eax %0xa
1085         mov____%eax,%edx
1086         pop____%eax
1087         sub____%edx,%eax
1088         sete___%al
1089         movzbl_%al,%eax
1090                                         # jmp test LABEL
1091         jne32  %car__1_else
1092 :car__1_else_skip_b_17
1093         mov____0x8(%ebp),%eax !0x8
1094         mov____%eax,%edx
1095         add____%eax,%eax
1096         add____%edx,%eax
1097         shl____$i8,%eax !0x2
1098         push___%eax
1099         mov____0x32,%eax &g_cells
1100         mov____%eax,%edx
1101         pop____%eax
1102         add____%edx,%eax
1103         add____$i8,%eax !0x4
1104                                         # g_cells[x].car
1105         mov____(%eax),%eax
1106         test___%eax,%eax
1107         jmp32  %car__1_break
1108 :car__1_else
1109         mov____0x8(%ebp),%eax !0x8
1110         mov____%eax,%edx
1111         add____%eax,%eax
1112         add____%edx,%eax
1113         shl____$i8,%eax !0x2
1114         push___%eax
1115         mov____0x32,%eax &g_cells
1116         mov____%eax,%edx
1117         pop____%eax
1118         add____%edx,%eax
1119         add____$i8,%eax !0x4
1120                                         # g_cells[x].car
1121         mov____(%eax),%eax
1122         push___%eax
1123         call32 %tmp_num2_
1124         add____$i8,%esp !0x4
1125         push___%eax
1126         mov____$i32,%eax %0x0
1127         push___%eax
1128         mov____$i32,%eax %0x6
1129         push___%eax
1130         call32 %tmp_num_
1131         add____$i8,%esp !0x4
1132         push___%eax
1133         call32 %make_cell_
1134         add____$i8,%esp !0xc
1135         test___%eax,%eax
1136 :car__1_break
1137         leave
1138         ret
1139
1140
1141 :cdr_
1142         push___%ebp
1143         mov____%esp,%ebp
1144         sub____%esp,$i32 %0x1054
1145                                         # (((g_cells[g_cells[x].cdr].type == TPAIR || g_cells[g_cells[x].cdr].type ==      TREF) || g_cells[g_cells[x].car].type == TSPECIAL) || g_cells[g_cells[x].     cdr].type == TSYMBOL) || g_cells[g_cells[x].cdr].type == TSTRING? ...: ...
1146         mov____0x8(%ebp),%eax !0x8
1147         mov____%eax,%edx
1148         add____%eax,%eax
1149         add____%edx,%eax
1150         shl____$i8,%eax !0x2
1151         push___%eax
1152         mov____0x32,%eax &g_cells
1153         mov____%eax,%edx
1154         pop____%eax
1155         add____%edx,%eax
1156         add____$i8,%eax !0x8
1157                                         # g_cells[x].cdr
1158         mov____(%eax),%eax
1159         mov____%eax,%edx
1160         add____%eax,%eax
1161         add____%edx,%eax
1162         shl____$i8,%eax !0x2
1163         push___%eax
1164         mov____0x32,%eax &g_cells
1165         mov____%eax,%edx
1166         pop____%eax
1167         add____%edx,%eax
1168         add____$i8,%eax !0x0
1169                                         # g_cells[g_cells[x].cdr].type
1170         mov____(%eax),%eax
1171         push___%eax
1172         mov____$i32,%eax %0x7
1173         mov____%eax,%edx
1174         pop____%eax
1175         sub____%edx,%eax
1176         sete___%al
1177         movzbl_%al,%eax
1178                                         # jmp test LABEL
1179         jne32  %cdr__1_else_b_2_b_2_b_2_b_2
1180         jmp32  %cdr__1_else_b_2_b_2_b_2_skip_b_2
1181 :cdr__1_else_b_2_b_2_b_2_b_2
1182         mov____0x8(%ebp),%eax !0x8
1183         mov____%eax,%edx
1184         add____%eax,%eax
1185         add____%edx,%eax
1186         shl____$i8,%eax !0x2
1187         push___%eax
1188         mov____0x32,%eax &g_cells
1189         mov____%eax,%edx
1190         pop____%eax
1191         add____%edx,%eax
1192         add____$i8,%eax !0x8
1193                                         # g_cells[x].cdr
1194         mov____(%eax),%eax
1195         mov____%eax,%edx
1196         add____%eax,%eax
1197         add____%edx,%eax
1198         shl____$i8,%eax !0x2
1199         push___%eax
1200         mov____0x32,%eax &g_cells
1201         mov____%eax,%edx
1202         pop____%eax
1203         add____%edx,%eax
1204         add____$i8,%eax !0x0
1205                                         # g_cells[g_cells[x].cdr].type
1206         mov____(%eax),%eax
1207         push___%eax
1208         mov____$i32,%eax %0x8
1209         mov____%eax,%edx
1210         pop____%eax
1211         sub____%edx,%eax
1212         sete___%al
1213         movzbl_%al,%eax
1214                                         # jmp test LABEL
1215         jne32  %cdr__1_else_b_2_b_2_b_2
1216 :cdr__1_else_b_2_b_2_b_2_skip_b_2
1217         jmp32  %cdr__1_else_b_2_b_2_skip_b_2
1218 :cdr__1_else_b_2_b_2_b_2
1219         mov____0x8(%ebp),%eax !0x8
1220         mov____%eax,%edx
1221         add____%eax,%eax
1222         add____%edx,%eax
1223         shl____$i8,%eax !0x2
1224         push___%eax
1225         mov____0x32,%eax &g_cells
1226         mov____%eax,%edx
1227         pop____%eax
1228         add____%edx,%eax
1229         add____$i8,%eax !0x4
1230                                         # g_cells[x].car
1231         mov____(%eax),%eax
1232         mov____%eax,%edx
1233         add____%eax,%eax
1234         add____%edx,%eax
1235         shl____$i8,%eax !0x2
1236         push___%eax
1237         mov____0x32,%eax &g_cells
1238         mov____%eax,%edx
1239         pop____%eax
1240         add____%edx,%eax
1241         add____$i8,%eax !0x0
1242                                         # g_cells[g_cells[x].car].type
1243         mov____(%eax),%eax
1244         push___%eax
1245         mov____$i32,%eax %0x9
1246         mov____%eax,%edx
1247         pop____%eax
1248         sub____%edx,%eax
1249         sete___%al
1250         movzbl_%al,%eax
1251                                         # jmp test LABEL
1252         jne32  %cdr__1_else_b_2_b_2
1253 :cdr__1_else_b_2_b_2_skip_b_2
1254         jmp32  %cdr__1_else_b_2_skip_b_2
1255 :cdr__1_else_b_2_b_2
1256         mov____0x8(%ebp),%eax !0x8
1257         mov____%eax,%edx
1258         add____%eax,%eax
1259         add____%edx,%eax
1260         shl____$i8,%eax !0x2
1261         push___%eax
1262         mov____0x32,%eax &g_cells
1263         mov____%eax,%edx
1264         pop____%eax
1265         add____%edx,%eax
1266         add____$i8,%eax !0x8
1267                                         # g_cells[x].cdr
1268         mov____(%eax),%eax
1269         mov____%eax,%edx
1270         add____%eax,%eax
1271         add____%edx,%eax
1272         shl____$i8,%eax !0x2
1273         push___%eax
1274         mov____0x32,%eax &g_cells
1275         mov____%eax,%edx
1276         pop____%eax
1277         add____%edx,%eax
1278         add____$i8,%eax !0x0
1279                                         # g_cells[g_cells[x].cdr].type
1280         mov____(%eax),%eax
1281         push___%eax
1282         mov____$i32,%eax %0xb
1283         mov____%eax,%edx
1284         pop____%eax
1285         sub____%edx,%eax
1286         sete___%al
1287         movzbl_%al,%eax
1288                                         # jmp test LABEL
1289         jne32  %cdr__1_else_b_2
1290 :cdr__1_else_b_2_skip_b_2
1291         jmp32  %cdr__1_else_skip_b_2
1292 :cdr__1_else_b_2
1293         mov____0x8(%ebp),%eax !0x8
1294         mov____%eax,%edx
1295         add____%eax,%eax
1296         add____%edx,%eax
1297         shl____$i8,%eax !0x2
1298         push___%eax
1299         mov____0x32,%eax &g_cells
1300         mov____%eax,%edx
1301         pop____%eax
1302         add____%edx,%eax
1303         add____$i8,%eax !0x8
1304                                         # g_cells[x].cdr
1305         mov____(%eax),%eax
1306         mov____%eax,%edx
1307         add____%eax,%eax
1308         add____%edx,%eax
1309         shl____$i8,%eax !0x2
1310         push___%eax
1311         mov____0x32,%eax &g_cells
1312         mov____%eax,%edx
1313         pop____%eax
1314         add____%edx,%eax
1315         add____$i8,%eax !0x0
1316                                         # g_cells[g_cells[x].cdr].type
1317         mov____(%eax),%eax
1318         push___%eax
1319         mov____$i32,%eax %0xa
1320         mov____%eax,%edx
1321         pop____%eax
1322         sub____%edx,%eax
1323         sete___%al
1324         movzbl_%al,%eax
1325                                         # jmp test LABEL
1326         jne32  %cdr__1_else
1327 :cdr__1_else_skip_b_2
1328         mov____0x8(%ebp),%eax !0x8
1329         mov____%eax,%edx
1330         add____%eax,%eax
1331         add____%edx,%eax
1332         shl____$i8,%eax !0x2
1333         push___%eax
1334         mov____0x32,%eax &g_cells
1335         mov____%eax,%edx
1336         pop____%eax
1337         add____%edx,%eax
1338         add____$i8,%eax !0x8
1339                                         # g_cells[x].cdr
1340         mov____(%eax),%eax
1341         test___%eax,%eax
1342         jmp32  %cdr__1_break
1343 :cdr__1_else
1344         mov____0x8(%ebp),%eax !0x8
1345         mov____%eax,%edx
1346         add____%eax,%eax
1347         add____%edx,%eax
1348         shl____$i8,%eax !0x2
1349         push___%eax
1350         mov____0x32,%eax &g_cells
1351         mov____%eax,%edx
1352         pop____%eax
1353         add____%edx,%eax
1354         add____$i8,%eax !0x8
1355                                         # g_cells[x].cdr
1356         mov____(%eax),%eax
1357         push___%eax
1358         call32 %tmp_num2_
1359         add____$i8,%esp !0x4
1360         push___%eax
1361         mov____$i32,%eax %0x0
1362         push___%eax
1363         mov____$i32,%eax %0x6
1364         push___%eax
1365         call32 %tmp_num_
1366         add____$i8,%esp !0x4
1367         push___%eax
1368         call32 %make_cell_
1369         add____$i8,%esp !0xc
1370         test___%eax,%eax
1371 :cdr__1_break
1372         leave
1373         ret
1374
1375
1376 :arity_
1377         push___%ebp
1378         mov____%esp,%ebp
1379         sub____%esp,$i32 %0x1054
1380                                         # g_cells[x].type == TFUNCTION? ...: ...
1381         mov____0x8(%ebp),%eax !0x8
1382         mov____%eax,%edx
1383         add____%eax,%eax
1384         add____%edx,%eax
1385         shl____$i8,%eax !0x2
1386         push___%eax
1387         mov____0x32,%eax &g_cells
1388         mov____%eax,%edx
1389         pop____%eax
1390         add____%edx,%eax
1391         add____$i8,%eax !0x0
1392                                         # g_cells[x].type
1393         mov____(%eax),%eax
1394         push___%eax
1395         mov____$i32,%eax %0x3
1396         mov____%eax,%edx
1397         pop____%eax
1398         sub____%edx,%eax
1399         sete___%al
1400         movzbl_%al,%eax
1401                                         # jmp test LABEL
1402         jne32  %arity__1_else
1403         jmp32  %arity__1_break
1404 :arity__1_else
1405         push___$i32 &string_isxdigit_134
1406         call32 %assert_fail
1407         add____$i8,%esp !0x4
1408         test___%eax,%eax
1409 :arity__1_break
1410         mov____0x8(%ebp),%eax !0x8
1411         mov____%eax,%edx
1412         add____%eax,%eax
1413         add____%edx,%eax
1414         shl____$i8,%eax !0x2
1415         push___%eax
1416         mov____0x32,%eax &g_cells
1417         mov____%eax,%edx
1418         pop____%eax
1419         add____%edx,%eax
1420         add____$i8,%eax !0x8
1421                                         # g_cells[x].cdr
1422         mov____(%eax),%eax
1423         mov____%eax,%edx
1424         add____%eax,%eax
1425         add____%edx,%eax
1426         shl____$i8,%eax !0x2
1427         push___%eax
1428         mov____$i32,%eax &g_functions
1429         mov____%eax,%edx
1430         pop____%eax
1431         add____%edx,%eax
1432         add____$i8,%eax !0x4
1433                                         # g_functions[g_cells[x].cdr].arity
1434         mov____(%eax),%eax
1435         push___%eax
1436         call32 %tmp_num2_
1437         add____$i8,%esp !0x4
1438         push___%eax
1439         mov____$i32,%eax %0x0
1440         push___%eax
1441         mov____$i32,%eax %0x6
1442         push___%eax
1443         call32 %tmp_num_
1444         add____$i8,%esp !0x4
1445         push___%eax
1446         call32 %make_cell_
1447         add____$i8,%esp !0xc
1448         leave
1449         ret
1450
1451
1452 :cons
1453         push___%ebp
1454         mov____%esp,%ebp
1455         sub____%esp,$i32 %0x1054
1456                                         # g_cells[tmp_num].cdr = TPAIR
1457         mov____$i32,%eax %0x7
1458         push___%eax
1459         mov____0x32,%eax &tmp_num
1460         mov____%eax,%edx
1461         add____%eax,%eax
1462         add____%edx,%eax
1463         shl____$i8,%eax !0x2
1464         push___%eax
1465         mov____0x32,%eax &g_cells
1466         mov____%eax,%edx
1467         pop____%eax
1468         add____%edx,%eax
1469         add____$i8,%eax !0x8
1470         mov____%eax,%edx
1471         pop____%eax
1472         mov____%eax,(%edx)
1473         test___%eax,%eax
1474         push___0x8(%ebp) !0xc
1475         push___0x8(%ebp) !0x8
1476         mov____0x32,%eax &tmp_num
1477         push___%eax
1478         call32 %make_cell_
1479         add____$i8,%esp !0xc
1480         leave
1481         ret
1482
1483
1484 :car
1485         push___%ebp
1486         mov____%esp,%ebp
1487         sub____%esp,$i32 %0x1054
1488                                         # if (g_cells[x].type != TPAIR) ...
1489         mov____0x8(%ebp),%eax !0x8
1490         mov____%eax,%edx
1491         add____%eax,%eax
1492         add____%edx,%eax
1493         shl____$i8,%eax !0x2
1494         push___%eax
1495         mov____0x32,%eax &g_cells
1496         mov____%eax,%edx
1497         pop____%eax
1498         add____%edx,%eax
1499         add____$i8,%eax !0x0
1500                                         # g_cells[x].type
1501         mov____(%eax),%eax
1502         push___%eax
1503         mov____$i32,%eax %0x7
1504         mov____%eax,%edx
1505         pop____%eax
1506         push___%eax
1507         sub____%edx,%eax
1508         setne__%al
1509         movzbl_%al,%eax
1510         xchg___%eax,(%esp)
1511         sub____%edx,%eax
1512         lahf
1513         xor____$i8,%ah !0x40
1514         sahf
1515         pop____%eax
1516                                         # jmp test LABEL
1517         jne32  %car_1_break
1518                                         # error(29, cons(x, 37)); 
1519         mov____$i32,%eax %0x25
1520         push___%eax
1521         push___0x8(%ebp) !0x8
1522         call32 %cons
1523         add____$i8,%esp !0x8
1524         push___%eax
1525         mov____$i32,%eax %0x1d
1526         push___%eax
1527         call32 %error
1528         add____$i8,%esp !0x8
1529         test___%eax,%eax
1530         jmp32  %car_1_break
1531 :car_1_break
1532         mov____0x8(%ebp),%eax !0x8
1533         mov____%eax,%edx
1534         add____%eax,%eax
1535         add____%edx,%eax
1536         shl____$i8,%eax !0x2
1537         push___%eax
1538         mov____0x32,%eax &g_cells
1539         mov____%eax,%edx
1540         pop____%eax
1541         add____%edx,%eax
1542         add____$i8,%eax !0x4
1543                                         # g_cells[x].car
1544         mov____(%eax),%eax
1545         leave
1546         ret
1547
1548
1549 :cdr
1550         push___%ebp
1551         mov____%esp,%ebp
1552         sub____%esp,$i32 %0x1054
1553                                         # if (g_cells[x].type != TPAIR) ...
1554         mov____0x8(%ebp),%eax !0x8
1555         mov____%eax,%edx
1556         add____%eax,%eax
1557         add____%edx,%eax
1558         shl____$i8,%eax !0x2
1559         push___%eax
1560         mov____0x32,%eax &g_cells
1561         mov____%eax,%edx
1562         pop____%eax
1563         add____%edx,%eax
1564         add____$i8,%eax !0x0
1565                                         # g_cells[x].type
1566         mov____(%eax),%eax
1567         push___%eax
1568         mov____$i32,%eax %0x7
1569         mov____%eax,%edx
1570         pop____%eax
1571         push___%eax
1572         sub____%edx,%eax
1573         setne__%al
1574         movzbl_%al,%eax
1575         xchg___%eax,(%esp)
1576         sub____%edx,%eax
1577         lahf
1578         xor____$i8,%ah !0x40
1579         sahf
1580         pop____%eax
1581                                         # jmp test LABEL
1582         jne32  %cdr_1_break
1583                                         # error(29, cons(x, 38)); 
1584         mov____$i32,%eax %0x26
1585         push___%eax
1586         push___0x8(%ebp) !0x8
1587         call32 %cons
1588         add____$i8,%esp !0x8
1589         push___%eax
1590         mov____$i32,%eax %0x1d
1591         push___%eax
1592         call32 %error
1593         add____$i8,%esp !0x8
1594         test___%eax,%eax
1595         jmp32  %cdr_1_break
1596 :cdr_1_break
1597         mov____0x8(%ebp),%eax !0x8
1598         mov____%eax,%edx
1599         add____%eax,%eax
1600         add____%edx,%eax
1601         shl____$i8,%eax !0x2
1602         push___%eax
1603         mov____0x32,%eax &g_cells
1604         mov____%eax,%edx
1605         pop____%eax
1606         add____%edx,%eax
1607         add____$i8,%eax !0x8
1608                                         # g_cells[x].cdr
1609         mov____(%eax),%eax
1610         leave
1611         ret
1612
1613
1614 :list
1615         push___%ebp
1616         mov____%esp,%ebp
1617         sub____%esp,$i32 %0x1054
1618         mov____0x8(%ebp),%eax !0x8
1619         leave
1620         ret
1621
1622
1623 :null_p
1624         push___%ebp
1625         mov____%esp,%ebp
1626         sub____%esp,$i32 %0x1054
1627                                         # x == 1? ...: ...
1628         mov____0x8(%ebp),%eax !0x8
1629         push___%eax
1630         mov____$i32,%eax %0x1
1631         mov____%eax,%edx
1632         pop____%eax
1633         sub____%edx,%eax
1634         sete___%al
1635         movzbl_%al,%eax
1636                                         # jmp test LABEL
1637         jne32  %null_p_1_else
1638         mov____$i32,%eax %0x3
1639         test___%eax,%eax
1640         jmp32  %null_p_1_break
1641 :null_p_1_else
1642         mov____$i32,%eax %0x2
1643         test___%eax,%eax
1644 :null_p_1_break
1645         leave
1646         ret
1647
1648
1649 :eq_p
1650         push___%ebp
1651         mov____%esp,%ebp
1652         sub____%esp,$i32 %0x1054
1653                                         # ((x == y || (g_cells[x].type == TKEYWORD && g_cells[y].type == TKEYWORD &&      g_cells[x].car == g_cells[y].car)) || (g_cells[x].type == TCHAR && g_cells[     y].type == TCHAR && g_cells[x].cdr == g_cells[y].cdr)) || (g_cells[x].type      == TNUMBER && g_cells[y].type == TNUMBER && g_cells[x].cdr == g_cells[y].     cdr)? ...: ...
1654         mov____0x8(%ebp),%eax !0x8
1655         push___%eax
1656         mov____0x8(%ebp),%eax !0xc
1657         mov____%eax,%edx
1658         pop____%eax
1659         sub____%edx,%eax
1660         sete___%al
1661         movzbl_%al,%eax
1662                                         # jmp test LABEL
1663         jne32  %eq_p_1_else_b_2_b_2_b_2
1664         jmp32  %eq_p_1_else_b_2_b_2_skip_b_2
1665 :eq_p_1_else_b_2_b_2_b_2
1666         mov____0x8(%ebp),%eax !0x8
1667         mov____%eax,%edx
1668         add____%eax,%eax
1669         add____%edx,%eax
1670         shl____$i8,%eax !0x2
1671         push___%eax
1672         mov____0x32,%eax &g_cells
1673         mov____%eax,%edx
1674         pop____%eax
1675         add____%edx,%eax
1676         add____$i8,%eax !0x0
1677                                         # g_cells[x].type
1678         mov____(%eax),%eax
1679         push___%eax
1680         mov____$i32,%eax %0x4
1681         mov____%eax,%edx
1682         pop____%eax
1683         sub____%edx,%eax
1684         sete___%al
1685         movzbl_%al,%eax
1686                                         # jmp test LABEL
1687         jne32  %eq_p_1_else_b_2_b_2
1688         mov____0x8(%ebp),%eax !0xc
1689         mov____%eax,%edx
1690         add____%eax,%eax
1691         add____%edx,%eax
1692         shl____$i8,%eax !0x2
1693         push___%eax
1694         mov____0x32,%eax &g_cells
1695         mov____%eax,%edx
1696         pop____%eax
1697         add____%edx,%eax
1698         add____$i8,%eax !0x0
1699                                         # g_cells[y].type
1700         mov____(%eax),%eax
1701         push___%eax
1702         mov____$i32,%eax %0x4
1703         mov____%eax,%edx
1704         pop____%eax
1705         sub____%edx,%eax
1706         sete___%al
1707         movzbl_%al,%eax
1708                                         # jmp test LABEL
1709         jne32  %eq_p_1_else_b_2_b_2
1710         mov____0x8(%ebp),%eax !0x8
1711         mov____%eax,%edx
1712         add____%eax,%eax
1713         add____%edx,%eax
1714         shl____$i8,%eax !0x2
1715         push___%eax
1716         mov____0x32,%eax &g_cells
1717         mov____%eax,%edx
1718         pop____%eax
1719         add____%edx,%eax
1720         add____$i8,%eax !0x4
1721                                         # g_cells[x].car
1722         mov____(%eax),%eax
1723         push___%eax
1724         mov____0x8(%ebp),%eax !0xc
1725         mov____%eax,%edx
1726         add____%eax,%eax
1727         add____%edx,%eax
1728         shl____$i8,%eax !0x2
1729         push___%eax
1730         mov____0x32,%eax &g_cells
1731         mov____%eax,%edx
1732         pop____%eax
1733         add____%edx,%eax
1734         add____$i8,%eax !0x4
1735                                         # g_cells[y].car
1736         mov____(%eax),%eax
1737         mov____%eax,%edx
1738         pop____%eax
1739         sub____%edx,%eax
1740         sete___%al
1741         movzbl_%al,%eax
1742                                         # jmp test LABEL
1743         jne32  %eq_p_1_else_b_2_b_2
1744 :eq_p_1_else_b_2_b_2_skip_b_2
1745         jmp32  %eq_p_1_else_b_2_skip_b_2
1746 :eq_p_1_else_b_2_b_2
1747         mov____0x8(%ebp),%eax !0x8
1748         mov____%eax,%edx
1749         add____%eax,%eax
1750         add____%edx,%eax
1751         shl____$i8,%eax !0x2
1752         push___%eax
1753         mov____0x32,%eax &g_cells
1754         mov____%eax,%edx
1755         pop____%eax
1756         add____%edx,%eax
1757         add____$i8,%eax !0x0
1758                                         # g_cells[x].type
1759         mov____(%eax),%eax
1760         push___%eax
1761         mov____$i32,%eax %0x0
1762         mov____%eax,%edx
1763         pop____%eax
1764         sub____%edx,%eax
1765         sete___%al
1766         movzbl_%al,%eax
1767                                         # jmp test LABEL
1768         jne32  %eq_p_1_else_b_2
1769         mov____0x8(%ebp),%eax !0xc
1770         mov____%eax,%edx
1771         add____%eax,%eax
1772         add____%edx,%eax
1773         shl____$i8,%eax !0x2
1774         push___%eax
1775         mov____0x32,%eax &g_cells
1776         mov____%eax,%edx
1777         pop____%eax
1778         add____%edx,%eax
1779         add____$i8,%eax !0x0
1780                                         # g_cells[y].type
1781         mov____(%eax),%eax
1782         push___%eax
1783         mov____$i32,%eax %0x0
1784         mov____%eax,%edx
1785         pop____%eax
1786         sub____%edx,%eax
1787         sete___%al
1788         movzbl_%al,%eax
1789                                         # jmp test LABEL
1790         jne32  %eq_p_1_else_b_2
1791         mov____0x8(%ebp),%eax !0x8
1792         mov____%eax,%edx
1793         add____%eax,%eax
1794         add____%edx,%eax
1795         shl____$i8,%eax !0x2
1796         push___%eax
1797         mov____0x32,%eax &g_cells
1798         mov____%eax,%edx
1799         pop____%eax
1800         add____%edx,%eax
1801         add____$i8,%eax !0x8
1802                                         # g_cells[x].cdr
1803         mov____(%eax),%eax
1804         push___%eax
1805         mov____0x8(%ebp),%eax !0xc
1806         mov____%eax,%edx
1807         add____%eax,%eax
1808         add____%edx,%eax
1809         shl____$i8,%eax !0x2
1810         push___%eax
1811         mov____0x32,%eax &g_cells
1812         mov____%eax,%edx
1813         pop____%eax
1814         add____%edx,%eax
1815         add____$i8,%eax !0x8
1816                                         # g_cells[y].cdr
1817         mov____(%eax),%eax
1818         mov____%eax,%edx
1819         pop____%eax
1820         sub____%edx,%eax
1821         sete___%al
1822         movzbl_%al,%eax
1823                                         # jmp test LABEL
1824         jne32  %eq_p_1_else_b_2
1825 :eq_p_1_else_b_2_skip_b_2
1826         jmp32  %eq_p_1_else_skip_b_2
1827 :eq_p_1_else_b_2
1828         mov____0x8(%ebp),%eax !0x8
1829         mov____%eax,%edx
1830         add____%eax,%eax
1831         add____%edx,%eax
1832         shl____$i8,%eax !0x2
1833         push___%eax
1834         mov____0x32,%eax &g_cells
1835         mov____%eax,%edx
1836         pop____%eax
1837         add____%edx,%eax
1838         add____$i8,%eax !0x0
1839                                         # g_cells[x].type
1840         mov____(%eax),%eax
1841         push___%eax
1842         mov____$i32,%eax %0x6
1843         mov____%eax,%edx
1844         pop____%eax
1845         sub____%edx,%eax
1846         sete___%al
1847         movzbl_%al,%eax
1848                                         # jmp test LABEL
1849         jne32  %eq_p_1_else
1850         mov____0x8(%ebp),%eax !0xc
1851         mov____%eax,%edx
1852         add____%eax,%eax
1853         add____%edx,%eax
1854         shl____$i8,%eax !0x2
1855         push___%eax
1856         mov____0x32,%eax &g_cells
1857         mov____%eax,%edx
1858         pop____%eax
1859         add____%edx,%eax
1860         add____$i8,%eax !0x0
1861                                         # g_cells[y].type
1862         mov____(%eax),%eax
1863         push___%eax
1864         mov____$i32,%eax %0x6
1865         mov____%eax,%edx
1866         pop____%eax
1867         sub____%edx,%eax
1868         sete___%al
1869         movzbl_%al,%eax
1870                                         # jmp test LABEL
1871         jne32  %eq_p_1_else
1872         mov____0x8(%ebp),%eax !0x8
1873         mov____%eax,%edx
1874         add____%eax,%eax
1875         add____%edx,%eax
1876         shl____$i8,%eax !0x2
1877         push___%eax
1878         mov____0x32,%eax &g_cells
1879         mov____%eax,%edx
1880         pop____%eax
1881         add____%edx,%eax
1882         add____$i8,%eax !0x8
1883                                         # g_cells[x].cdr
1884         mov____(%eax),%eax
1885         push___%eax
1886         mov____0x8(%ebp),%eax !0xc
1887         mov____%eax,%edx
1888         add____%eax,%eax
1889         add____%edx,%eax
1890         shl____$i8,%eax !0x2
1891         push___%eax
1892         mov____0x32,%eax &g_cells
1893         mov____%eax,%edx
1894         pop____%eax
1895         add____%edx,%eax
1896         add____$i8,%eax !0x8
1897                                         # g_cells[y].cdr
1898         mov____(%eax),%eax
1899         mov____%eax,%edx
1900         pop____%eax
1901         sub____%edx,%eax
1902         sete___%al
1903         movzbl_%al,%eax
1904                                         # jmp test LABEL
1905         jne32  %eq_p_1_else
1906 :eq_p_1_else_skip_b_2
1907         mov____$i32,%eax %0x3
1908         test___%eax,%eax
1909         jmp32  %eq_p_1_break
1910 :eq_p_1_else
1911         mov____$i32,%eax %0x2
1912         test___%eax,%eax
1913 :eq_p_1_break
1914         leave
1915         ret
1916
1917
1918 :values
1919         push___%ebp
1920         mov____%esp,%ebp
1921         sub____%esp,$i32 %0x1054
1922                                         # SCM v = cons(0, x); 
1923         push___0x8(%ebp) !0x8
1924         mov____$i32,%eax %0x0
1925         push___%eax
1926         call32 %cons
1927         add____$i8,%esp !0x8
1928         mov____%eax,0x8(%ebp) !0x-4
1929                                         # g_cells[v].type = TVALUES
1930         mov____$i32,%eax %0xc
1931         push___%eax
1932         mov____0x8(%ebp),%eax !0x-4
1933         mov____%eax,%edx
1934         add____%eax,%eax
1935         add____%edx,%eax
1936         shl____$i8,%eax !0x2
1937         push___%eax
1938         mov____0x32,%eax &g_cells
1939         mov____%eax,%edx
1940         pop____%eax
1941         add____%edx,%eax
1942         add____$i8,%eax !0x0
1943         mov____%eax,%edx
1944         pop____%eax
1945         mov____%eax,(%edx)
1946         test___%eax,%eax
1947         mov____0x8(%ebp),%eax !0x-4
1948         leave
1949         ret
1950
1951
1952 :acons
1953         push___%ebp
1954         mov____%esp,%ebp
1955         sub____%esp,$i32 %0x1054
1956         push___0x8(%ebp) !0x10
1957         push___0x8(%ebp) !0xc
1958         push___0x8(%ebp) !0x8
1959         call32 %cons
1960         add____$i8,%esp !0x8
1961         push___%eax
1962         call32 %cons
1963         add____$i8,%esp !0x8
1964         leave
1965         ret
1966
1967
1968 :length
1969         push___%ebp
1970         mov____%esp,%ebp
1971         sub____%esp,$i32 %0x1054
1972                                         # int n = 0; 
1973         mov____$i32,%eax %0x0
1974         mov____%eax,0x8(%ebp) !0x-4
1975                                         # while (x != 1) ...
1976         jmp32  %length_4_continue
1977 :length_4_loop
1978         mov____0x8(%ebp),%eax !0x-4
1979         push___%eax
1980         mov____%ebp,%eax
1981         add____$i8,%eax !0x-4
1982         add____$i8,(%eax) !0x1
1983         pop____%eax
1984         test___%eax,%eax
1985                                         # if (g_cells[x].type != TPAIR) ...
1986         mov____0x8(%ebp),%eax !0x8
1987         mov____%eax,%edx
1988         add____%eax,%eax
1989         add____%edx,%eax
1990         shl____$i8,%eax !0x2
1991         push___%eax
1992         mov____0x32,%eax &g_cells
1993         mov____%eax,%edx
1994         pop____%eax
1995         add____%edx,%eax
1996         add____$i8,%eax !0x0
1997                                         # g_cells[x].type
1998         mov____(%eax),%eax
1999         push___%eax
2000         mov____$i32,%eax %0x7
2001         mov____%eax,%edx
2002         pop____%eax
2003         push___%eax
2004         sub____%edx,%eax
2005         setne__%al
2006         movzbl_%al,%eax
2007         xchg___%eax,(%esp)
2008         sub____%edx,%eax
2009         lahf
2010         xor____$i8,%ah !0x40
2011         sahf
2012         pop____%eax
2013                                         # jmp test LABEL
2014         jne32  %length_13_break
2015         push___%eax
2016         mov____$i32,%eax %0x1
2017         mov____%eax,%edx
2018         pop____%eax
2019         mov____$i32,%eax %0x0
2020         sub____%edx,%eax
2021         push___%eax
2022         call32 %tmp_num2_
2023         add____$i8,%esp !0x4
2024         push___%eax
2025         mov____$i32,%eax %0x0
2026         push___%eax
2027         mov____$i32,%eax %0x6
2028         push___%eax
2029         call32 %tmp_num_
2030         add____$i8,%esp !0x4
2031         push___%eax
2032         call32 %make_cell_
2033         add____$i8,%esp !0xc
2034         leave
2035         ret
2036         jmp32  %length_13_break
2037 :length_13_break
2038                                         # x = g_cells[x].cdr
2039         mov____0x8(%ebp),%eax !0x8
2040         mov____%eax,%edx
2041         add____%eax,%eax
2042         add____%edx,%eax
2043         shl____$i8,%eax !0x2
2044         push___%eax
2045         mov____0x32,%eax &g_cells
2046         mov____%eax,%edx
2047         pop____%eax
2048         add____%edx,%eax
2049         add____$i8,%eax !0x8
2050                                         # g_cells[x].cdr
2051         mov____(%eax),%eax
2052         mov____%eax,0x8(%ebp) !0x8
2053         test___%eax,%eax
2054 :length_4_continue
2055         mov____0x8(%ebp),%eax !0x8
2056         push___%eax
2057         mov____$i32,%eax %0x1
2058         mov____%eax,%edx
2059         pop____%eax
2060         push___%eax
2061         sub____%edx,%eax
2062         setne__%al
2063         movzbl_%al,%eax
2064         xchg___%eax,(%esp)
2065         sub____%edx,%eax
2066         lahf
2067         xor____$i8,%ah !0x40
2068         sahf
2069         pop____%eax
2070                                         # jmp test LABEL
2071         jne32  %length_4_break
2072         jmp32  %length_4_loop
2073 :length_4_break
2074         push___0x8(%ebp) !0x-4
2075         call32 %tmp_num2_
2076         add____$i8,%esp !0x4
2077         push___%eax
2078         mov____$i32,%eax %0x0
2079         push___%eax
2080         mov____$i32,%eax %0x6
2081         push___%eax
2082         call32 %tmp_num_
2083         add____$i8,%esp !0x4
2084         push___%eax
2085         call32 %make_cell_
2086         add____$i8,%esp !0xc
2087         leave
2088         ret
2089
2090
2091 :error
2092         push___%ebp
2093         mov____%esp,%ebp
2094         sub____%esp,$i32 %0x1054
2095                                         # SCM throw; 
2096                                         # if ((throw = assq_ref_env(28, r0)) != 6) ...
2097                                         # throw = assq_ref_env(28, r0)
2098         mov____0x32,%eax &r0
2099         push___%eax
2100         mov____$i32,%eax %0x1c
2101         push___%eax
2102         call32 %assq_ref_env
2103         add____$i8,%esp !0x8
2104         mov____%eax,0x8(%ebp) !0x-4
2105         push___%eax
2106         mov____$i32,%eax %0x6
2107         mov____%eax,%edx
2108         pop____%eax
2109         push___%eax
2110         sub____%edx,%eax
2111         setne__%al
2112         movzbl_%al,%eax
2113         xchg___%eax,(%esp)
2114         sub____%edx,%eax
2115         lahf
2116         xor____$i8,%ah !0x40
2117         sahf
2118         pop____%eax
2119                                         # jmp test LABEL
2120         jne32  %error_2_break
2121         mov____0x32,%eax &r0
2122         push___%eax
2123         mov____$i32,%eax %0x1
2124         push___%eax
2125         push___0x8(%ebp) !0xc
2126         call32 %cons
2127         add____$i8,%esp !0x8
2128         push___%eax
2129         push___0x8(%ebp) !0x8
2130         call32 %cons
2131         add____$i8,%esp !0x8
2132         push___%eax
2133         push___0x8(%ebp) !0x-4
2134         call32 %apply
2135         add____$i8,%esp !0xc
2136         leave
2137         ret
2138         jmp32  %error_2_break
2139 :error_2_break
2140                                         # display_error_(key); 
2141         push___0x8(%ebp) !0x8
2142         call32 %display_error_
2143         add____$i8,%esp !0x4
2144         test___%eax,%eax
2145                                         # eputs(": "); 
2146         push___$i32 &string_isxdigit_135
2147         call32 %eputs
2148         add____$i8,%esp !0x4
2149         test___%eax,%eax
2150                                         # display_error_(x); 
2151         push___0x8(%ebp) !0xc
2152         call32 %display_error_
2153         add____$i8,%esp !0x4
2154         test___%eax,%eax
2155                                         # eputs("\n"); 
2156         push___$i32 &string_isxdigit_136
2157         call32 %eputs
2158         add____$i8,%esp !0x4
2159         test___%eax,%eax
2160                                         # exit(1); 
2161         mov____$i32,%eax %0x1
2162         push___%eax
2163         call32 %exit
2164         add____$i8,%esp !0x4
2165         test___%eax,%eax
2166         leave
2167         ret
2168
2169
2170 :cstring_to_list
2171         push___%ebp
2172         mov____%esp,%ebp
2173         sub____%esp,$i32 %0x1054
2174                                         # SCM p = 1; 
2175         mov____$i32,%eax %0x1
2176         mov____%eax,0x8(%ebp) !0x-4
2177                                         # int i = strlen(s); 
2178         push___0x8(%ebp) !0x8
2179         call32 %strlen
2180         add____$i8,%esp !0x4
2181         mov____%eax,0x8(%ebp) !0x-8
2182                                         # while (i--) ...
2183         jmp32  %cstring_to_list_8_continue
2184 :cstring_to_list_8_loop
2185                                         # p = cons(make_cell_(tmp_num_(TCHAR), 0, tmp_num2_(s[i])), p)
2186         push___0x8(%ebp) !0x-4
2187         mov____0x8(%ebp),%eax !0x-8
2188         mov____%eax,%edx
2189         push___%eax
2190         mov____0x8(%ebp),%eax !0x8
2191         mov____%eax,%edx
2192         pop____%eax
2193         add____%edx,%eax
2194         movzbl_(%eax),%eax
2195         push___%eax
2196         call32 %tmp_num2_
2197         add____$i8,%esp !0x4
2198         push___%eax
2199         mov____$i32,%eax %0x0
2200         push___%eax
2201         mov____$i32,%eax %0x0
2202         push___%eax
2203         call32 %tmp_num_
2204         add____$i8,%esp !0x4
2205         push___%eax
2206         call32 %make_cell_
2207         add____$i8,%esp !0xc
2208         push___%eax
2209         call32 %cons
2210         add____$i8,%esp !0x8
2211         mov____%eax,0x8(%ebp) !0x-4
2212         test___%eax,%eax
2213 :cstring_to_list_8_continue
2214         mov____0x8(%ebp),%eax !0x-8
2215         push___%eax
2216         mov____%ebp,%eax
2217         add____$i8,%eax !0x-8
2218         add____$i8,(%eax) !0x-1
2219         pop____%eax
2220         test___%eax,%eax
2221                                         # jmp test LABEL
2222         test___%eax,%eax
2223         je32   %cstring_to_list_8_break
2224         jmp32  %cstring_to_list_8_loop
2225 :cstring_to_list_8_break
2226         mov____0x8(%ebp),%eax !0x-4
2227         leave
2228         ret
2229
2230
2231 :assert_defined
2232         push___%ebp
2233         mov____%esp,%ebp
2234         sub____%esp,$i32 %0x1054
2235                                         # if (e == 6) ...
2236         mov____0x8(%ebp),%eax !0xc
2237         push___%eax
2238         mov____$i32,%eax %0x6
2239         mov____%eax,%edx
2240         pop____%eax
2241         sub____%edx,%eax
2242         sete___%al
2243         movzbl_%al,%eax
2244                                         # jmp test LABEL
2245         jne32  %assert_defined_1_break
2246         push___0x8(%ebp) !0x8
2247         mov____$i32,%eax %0x21
2248         push___%eax
2249         call32 %error
2250         add____$i8,%esp !0x8
2251         leave
2252         ret
2253         jmp32  %assert_defined_1_break
2254 :assert_defined_1_break
2255         mov____0x8(%ebp),%eax !0xc
2256         leave
2257         ret
2258
2259
2260 :check_formals
2261         push___%ebp
2262         mov____%esp,%ebp
2263         sub____%esp,$i32 %0x1054
2264                                         # int flen = g_cells[formals].type == TNUMBER? g_cells[formals].cdr: g_cells[     length(formals)].cdr; 
2265                                         # g_cells[formals].type == TNUMBER? ...: ...
2266         mov____0x8(%ebp),%eax !0xc
2267         mov____%eax,%edx
2268         add____%eax,%eax
2269         add____%edx,%eax
2270         shl____$i8,%eax !0x2
2271         push___%eax
2272         mov____0x32,%eax &g_cells
2273         mov____%eax,%edx
2274         pop____%eax
2275         add____%edx,%eax
2276         add____$i8,%eax !0x0
2277                                         # g_cells[formals].type
2278         mov____(%eax),%eax
2279         push___%eax
2280         mov____$i32,%eax %0x6
2281         mov____%eax,%edx
2282         pop____%eax
2283         sub____%edx,%eax
2284         sete___%al
2285         movzbl_%al,%eax
2286                                         # jmp test LABEL
2287         jne32  %check_formals_2_else
2288         mov____0x8(%ebp),%eax !0xc
2289         mov____%eax,%edx
2290         add____%eax,%eax
2291         add____%edx,%eax
2292         shl____$i8,%eax !0x2
2293         push___%eax
2294         mov____0x32,%eax &g_cells
2295         mov____%eax,%edx
2296         pop____%eax
2297         add____%edx,%eax
2298         add____$i8,%eax !0x8
2299                                         # g_cells[formals].cdr
2300         mov____(%eax),%eax
2301         test___%eax,%eax
2302         jmp32  %check_formals_2_break
2303 :check_formals_2_else
2304         push___0x8(%ebp) !0xc
2305         call32 %length
2306         add____$i8,%esp !0x4
2307         mov____%eax,%edx
2308         add____%eax,%eax
2309         add____%edx,%eax
2310         shl____$i8,%eax !0x2
2311         push___%eax
2312         mov____0x32,%eax &g_cells
2313         mov____%eax,%edx
2314         pop____%eax
2315         add____%edx,%eax
2316         add____$i8,%eax !0x8
2317                                         # g_cells[length(formals)].cdr
2318         mov____(%eax),%eax
2319         test___%eax,%eax
2320 :check_formals_2_break
2321         mov____%eax,0x8(%ebp) !0x-4
2322                                         # int alen = g_cells[length(args)].cdr; 
2323         push___0x8(%ebp) !0x10
2324         call32 %length
2325         add____$i8,%esp !0x4
2326         mov____%eax,%edx
2327         add____%eax,%eax
2328         add____%edx,%eax
2329         shl____$i8,%eax !0x2
2330         push___%eax
2331         mov____0x32,%eax &g_cells
2332         mov____%eax,%edx
2333         pop____%eax
2334         add____%edx,%eax
2335         add____$i8,%eax !0x8
2336                                         # g_cells[length(args)].cdr
2337         mov____(%eax),%eax
2338         mov____%eax,0x8(%ebp) !0x-8
2339                                         # if (alen != flen && alen != -1 && flen != -1) ...
2340         mov____0x8(%ebp),%eax !0x-8
2341         push___%eax
2342         mov____0x8(%ebp),%eax !0x-4
2343         mov____%eax,%edx
2344         pop____%eax
2345         push___%eax
2346         sub____%edx,%eax
2347         setne__%al
2348         movzbl_%al,%eax
2349         xchg___%eax,(%esp)
2350         sub____%edx,%eax
2351         lahf
2352         xor____$i8,%ah !0x40
2353         sahf
2354         pop____%eax
2355                                         # jmp test LABEL
2356         jne32  %check_formals_55_break
2357         mov____0x8(%ebp),%eax !0x-8
2358         push___%eax
2359         push___%eax
2360         mov____$i32,%eax %0x1
2361         mov____%eax,%edx
2362         pop____%eax
2363         mov____$i32,%eax %0x0
2364         sub____%edx,%eax
2365         mov____%eax,%edx
2366         pop____%eax
2367         push___%eax
2368         sub____%edx,%eax
2369         setne__%al
2370         movzbl_%al,%eax
2371         xchg___%eax,(%esp)
2372         sub____%edx,%eax
2373         lahf
2374         xor____$i8,%ah !0x40
2375         sahf
2376         pop____%eax
2377                                         # jmp test LABEL
2378         jne32  %check_formals_55_break
2379         mov____0x8(%ebp),%eax !0x-4
2380         push___%eax
2381         push___%eax
2382         mov____$i32,%eax %0x1
2383         mov____%eax,%edx
2384         pop____%eax
2385         mov____$i32,%eax %0x0
2386         sub____%edx,%eax
2387         mov____%eax,%edx
2388         pop____%eax
2389         push___%eax
2390         sub____%edx,%eax
2391         setne__%al
2392         movzbl_%al,%eax
2393         xchg___%eax,(%esp)
2394         sub____%edx,%eax
2395         lahf
2396         xor____$i8,%ah !0x40
2397         sahf
2398         pop____%eax
2399                                         # jmp test LABEL
2400         jne32  %check_formals_55_break
2401                                         # char *s = "apply: wrong number of arguments; expected: "; 
2402         mov____$i32,%eax &string_isxdigit_137
2403         mov____%eax,0x8(%ebp) !0x-c
2404                                         # eputs(s); 
2405         push___0x8(%ebp) !0x-c
2406         call32 %eputs
2407         add____$i8,%esp !0x4
2408         test___%eax,%eax
2409                                         # eputs(itoa(flen)); 
2410         push___0x8(%ebp) !0x-4
2411         call32 %itoa
2412         add____$i8,%esp !0x4
2413         push___%eax
2414         call32 %eputs
2415         add____$i8,%esp !0x4
2416         test___%eax,%eax
2417                                         # eputs(", got: "); 
2418         push___$i32 &string_isxdigit_138
2419         call32 %eputs
2420         add____$i8,%esp !0x4
2421         test___%eax,%eax
2422                                         # eputs(itoa(alen)); 
2423         push___0x8(%ebp) !0x-8
2424         call32 %itoa
2425         add____$i8,%esp !0x4
2426         push___%eax
2427         call32 %eputs
2428         add____$i8,%esp !0x4
2429         test___%eax,%eax
2430                                         # eputs("\n"); 
2431         push___$i32 &string_isxdigit_136
2432         call32 %eputs
2433         add____$i8,%esp !0x4
2434         test___%eax,%eax
2435                                         # display_error_(f); 
2436         push___0x8(%ebp) !0x8
2437         call32 %display_error_
2438         add____$i8,%esp !0x4
2439         test___%eax,%eax
2440                                         # SCM e = make_cell_(tmp_num_(TSTRING), cstring_to_list(s), 0); 
2441         mov____$i32,%eax %0x0
2442         push___%eax
2443         push___0x8(%ebp) !0x-c
2444         call32 %cstring_to_list
2445         add____$i8,%esp !0x4
2446         push___%eax
2447         mov____$i32,%eax %0xa
2448         push___%eax
2449         call32 %tmp_num_
2450         add____$i8,%esp !0x4
2451         push___%eax
2452         call32 %make_cell_
2453         add____$i8,%esp !0xc
2454         mov____%eax,0x8(%ebp) !0x-10
2455         push___0x8(%ebp) !0x8
2456         push___0x8(%ebp) !0x-10
2457         call32 %cons
2458         add____$i8,%esp !0x8
2459         push___%eax
2460         mov____$i32,%eax %0x1f
2461         push___%eax
2462         call32 %error
2463         add____$i8,%esp !0x8
2464         leave
2465         ret
2466         jmp32  %check_formals_55_break
2467 :check_formals_55_break
2468         mov____$i32,%eax %0x7
2469         leave
2470         ret
2471
2472
2473 :check_apply
2474         push___%ebp
2475         mov____%esp,%ebp
2476         sub____%esp,$i32 %0x1054
2477                                         # char *type = 0; 
2478         mov____$i32,%eax %0x0
2479         mov____%eax,0x8(%ebp) !0x-4
2480                                         # if (f == 2 || f == 3) ...
2481         mov____0x8(%ebp),%eax !0x8
2482         push___%eax
2483         mov____$i32,%eax %0x2
2484         mov____%eax,%edx
2485         pop____%eax
2486         sub____%edx,%eax
2487         sete___%al
2488         movzbl_%al,%eax
2489                                         # jmp test LABEL
2490         jne32  %check_apply_4_break_b_5
2491         jmp32  %check_apply_4_break_skip_b_5
2492 :check_apply_4_break_b_5
2493         mov____0x8(%ebp),%eax !0x8
2494         push___%eax
2495         mov____$i32,%eax %0x3
2496         mov____%eax,%edx
2497         pop____%eax
2498         sub____%edx,%eax
2499         sete___%al
2500         movzbl_%al,%eax
2501                                         # jmp test LABEL
2502         jne32  %check_apply_4_break
2503 :check_apply_4_break_skip_b_5
2504                                         # type = "bool"
2505         mov____$i32,%eax &string_isxdigit_139
2506         mov____%eax,0x8(%ebp) !0x-4
2507         test___%eax,%eax
2508         jmp32  %check_apply_4_break
2509 :check_apply_4_break
2510                                         # if (f == 1) ...
2511         mov____0x8(%ebp),%eax !0x8
2512         push___%eax
2513         mov____$i32,%eax %0x1
2514         mov____%eax,%edx
2515         pop____%eax
2516         sub____%edx,%eax
2517         sete___%al
2518         movzbl_%al,%eax
2519                                         # jmp test LABEL
2520         jne32  %check_apply_28_break
2521                                         # type = "nil"
2522         mov____$i32,%eax &string_isxdigit_140
2523         mov____%eax,0x8(%ebp) !0x-4
2524         test___%eax,%eax
2525         jmp32  %check_apply_28_break
2526 :check_apply_28_break
2527                                         # if (f == 7) ...
2528         mov____0x8(%ebp),%eax !0x8
2529         push___%eax
2530         mov____$i32,%eax %0x7
2531         mov____%eax,%edx
2532         pop____%eax
2533         sub____%edx,%eax
2534         sete___%al
2535         movzbl_%al,%eax
2536                                         # jmp test LABEL
2537         jne32  %check_apply_42_break
2538                                         # type = "*unspecified*"
2539         mov____$i32,%eax &string_isxdigit_6
2540         mov____%eax,0x8(%ebp) !0x-4
2541         test___%eax,%eax
2542         jmp32  %check_apply_42_break
2543 :check_apply_42_break
2544                                         # if (f == 6) ...
2545         mov____0x8(%ebp),%eax !0x8
2546         push___%eax
2547         mov____$i32,%eax %0x6
2548         mov____%eax,%edx
2549         pop____%eax
2550         sub____%edx,%eax
2551         sete___%al
2552         movzbl_%al,%eax
2553                                         # jmp test LABEL
2554         jne32  %check_apply_56_break
2555                                         # type = "*undefined*"
2556         mov____$i32,%eax &string_isxdigit_5
2557         mov____%eax,0x8(%ebp) !0x-4
2558         test___%eax,%eax
2559         jmp32  %check_apply_56_break
2560 :check_apply_56_break
2561                                         # if (g_cells[f].type == TCHAR) ...
2562         mov____0x8(%ebp),%eax !0x8
2563         mov____%eax,%edx
2564         add____%eax,%eax
2565         add____%edx,%eax
2566         shl____$i8,%eax !0x2
2567         push___%eax
2568         mov____0x32,%eax &g_cells
2569         mov____%eax,%edx
2570         pop____%eax
2571         add____%edx,%eax
2572         add____$i8,%eax !0x0
2573                                         # g_cells[f].type
2574         mov____(%eax),%eax
2575         push___%eax
2576         mov____$i32,%eax %0x0
2577         mov____%eax,%edx
2578         pop____%eax
2579         sub____%edx,%eax
2580         sete___%al
2581         movzbl_%al,%eax
2582                                         # jmp test LABEL
2583         jne32  %check_apply_70_break
2584                                         # type = "char"
2585         mov____$i32,%eax &string_isxdigit_141
2586         mov____%eax,0x8(%ebp) !0x-4
2587         test___%eax,%eax
2588         jmp32  %check_apply_70_break
2589 :check_apply_70_break
2590                                         # if (g_cells[f].type == TNUMBER) ...
2591         mov____0x8(%ebp),%eax !0x8
2592         mov____%eax,%edx
2593         add____%eax,%eax
2594         add____%edx,%eax
2595         shl____$i8,%eax !0x2
2596         push___%eax
2597         mov____0x32,%eax &g_cells
2598         mov____%eax,%edx
2599         pop____%eax
2600         add____%edx,%eax
2601         add____$i8,%eax !0x0
2602                                         # g_cells[f].type
2603         mov____(%eax),%eax
2604         push___%eax
2605         mov____$i32,%eax %0x6
2606         mov____%eax,%edx
2607         pop____%eax
2608         sub____%edx,%eax
2609         sete___%al
2610         movzbl_%al,%eax
2611                                         # jmp test LABEL
2612         jne32  %check_apply_92_break
2613                                         # type = "number"
2614         mov____$i32,%eax &string_isxdigit_142
2615         mov____%eax,0x8(%ebp) !0x-4
2616         test___%eax,%eax
2617         jmp32  %check_apply_92_break
2618 :check_apply_92_break
2619                                         # if (g_cells[f].type == TSTRING) ...
2620         mov____0x8(%ebp),%eax !0x8
2621         mov____%eax,%edx
2622         add____%eax,%eax
2623         add____%edx,%eax
2624         shl____$i8,%eax !0x2
2625         push___%eax
2626         mov____0x32,%eax &g_cells
2627         mov____%eax,%edx
2628         pop____%eax
2629         add____%edx,%eax
2630         add____$i8,%eax !0x0
2631                                         # g_cells[f].type
2632         mov____(%eax),%eax
2633         push___%eax
2634         mov____$i32,%eax %0xa
2635         mov____%eax,%edx
2636         pop____%eax
2637         sub____%edx,%eax
2638         sete___%al
2639         movzbl_%al,%eax
2640                                         # jmp test LABEL
2641         jne32  %check_apply_114_break
2642                                         # type = "string"
2643         mov____$i32,%eax &string_isxdigit_143
2644         mov____%eax,0x8(%ebp) !0x-4
2645         test___%eax,%eax
2646         jmp32  %check_apply_114_break
2647 :check_apply_114_break
2648                                         # if (type) ...
2649         mov____0x8(%ebp),%eax !0x-4
2650         test___%eax,%eax
2651                                         # jmp test LABEL
2652         test___%eax,%eax
2653         je32   %check_apply_136_break
2654                                         # char *s = "cannot apply: "; 
2655         mov____$i32,%eax &string_isxdigit_144
2656         mov____%eax,0x8(%ebp) !0x-8
2657                                         # eputs(s); 
2658         push___0x8(%ebp) !0x-8
2659         call32 %eputs
2660         add____$i8,%esp !0x4
2661         test___%eax,%eax
2662                                         # eputs(type); 
2663         push___0x8(%ebp) !0x-4
2664         call32 %eputs
2665         add____$i8,%esp !0x4
2666         test___%eax,%eax
2667                                         # eputs("["); 
2668         push___$i32 &string_isxdigit_145
2669         call32 %eputs
2670         add____$i8,%esp !0x4
2671         test___%eax,%eax
2672                                         # display_error_(e); 
2673         push___0x8(%ebp) !0xc
2674         call32 %display_error_
2675         add____$i8,%esp !0x4
2676         test___%eax,%eax
2677                                         # eputs("]\n"); 
2678         push___$i32 &string_isxdigit_146
2679         call32 %eputs
2680         add____$i8,%esp !0x4
2681         test___%eax,%eax
2682                                         # SCM e = make_cell_(tmp_num_(TSTRING), cstring_to_list(s), 0); 
2683         mov____$i32,%eax %0x0
2684         push___%eax
2685         push___0x8(%ebp) !0x-8
2686         call32 %cstring_to_list
2687         add____$i8,%esp !0x4
2688         push___%eax
2689         mov____$i32,%eax %0xa
2690         push___%eax
2691         call32 %tmp_num_
2692         add____$i8,%esp !0x4
2693         push___%eax
2694         call32 %make_cell_
2695         add____$i8,%esp !0xc
2696         mov____%eax,0x8(%ebp) !0x-c
2697         push___0x8(%ebp) !0x8
2698         push___0x8(%ebp) !0x-c
2699         call32 %cons
2700         add____$i8,%esp !0x8
2701         push___%eax
2702         mov____$i32,%eax %0x20
2703         push___%eax
2704         call32 %error
2705         add____$i8,%esp !0x8
2706         leave
2707         ret
2708         jmp32  %check_apply_136_break
2709 :check_apply_136_break
2710         mov____$i32,%eax %0x7
2711         leave
2712         ret
2713
2714
2715 :gc_push_frame
2716         push___%ebp
2717         mov____%esp,%ebp
2718         sub____%esp,$i32 %0x1054
2719                                         # SCM frame = cons(r1, cons(r2, cons(r3, cons(r0, 1)))); 
2720         mov____$i32,%eax %0x1
2721         push___%eax
2722         mov____0x32,%eax &r0
2723         push___%eax
2724         call32 %cons
2725         add____$i8,%esp !0x8
2726         push___%eax
2727         mov____0x32,%eax &r3
2728         push___%eax
2729         call32 %cons
2730         add____$i8,%esp !0x8
2731         push___%eax
2732         mov____0x32,%eax &r2
2733         push___%eax
2734         call32 %cons
2735         add____$i8,%esp !0x8
2736         push___%eax
2737         mov____0x32,%eax &r1
2738         push___%eax
2739         call32 %cons
2740         add____$i8,%esp !0x8
2741         mov____%eax,0x8(%ebp) !0x-4
2742                                         # g_stack = cons(frame, g_stack)
2743         mov____0x32,%eax &g_stack
2744         push___%eax
2745         push___0x8(%ebp) !0x-4
2746         call32 %cons
2747         add____$i8,%esp !0x8
2748         mov____%eax,0x32 &g_stack
2749         test___%eax,%eax
2750         mov____0x32,%eax &g_stack
2751         leave
2752         ret
2753
2754
2755 :append2
2756         push___%ebp
2757         mov____%esp,%ebp
2758         sub____%esp,$i32 %0x1054
2759                                         # if (x == 1) ...
2760         mov____0x8(%ebp),%eax !0x8
2761         push___%eax
2762         mov____$i32,%eax %0x1
2763         mov____%eax,%edx
2764         pop____%eax
2765         sub____%edx,%eax
2766         sete___%al
2767         movzbl_%al,%eax
2768                                         # jmp test LABEL
2769         jne32  %append2_1_break
2770         mov____0x8(%ebp),%eax !0xc
2771         leave
2772         ret
2773         jmp32  %append2_1_break
2774 :append2_1_break
2775                                         # g_cells[x].type == TPAIR? ...: ...
2776         mov____0x8(%ebp),%eax !0x8
2777         mov____%eax,%edx
2778         add____%eax,%eax
2779         add____%edx,%eax
2780         shl____$i8,%eax !0x2
2781         push___%eax
2782         mov____0x32,%eax &g_cells
2783         mov____%eax,%edx
2784         pop____%eax
2785         add____%edx,%eax
2786         add____$i8,%eax !0x0
2787                                         # g_cells[x].type
2788         mov____(%eax),%eax
2789         push___%eax
2790         mov____$i32,%eax %0x7
2791         mov____%eax,%edx
2792         pop____%eax
2793         sub____%edx,%eax
2794         sete___%al
2795         movzbl_%al,%eax
2796                                         # jmp test LABEL
2797         jne32  %append2_13_else
2798         jmp32  %append2_13_break
2799 :append2_13_else
2800         push___$i32 &string_isxdigit_147
2801         call32 %assert_fail
2802         add____$i8,%esp !0x4
2803         test___%eax,%eax
2804 :append2_13_break
2805         push___0x8(%ebp) !0xc
2806         push___0x8(%ebp) !0x8
2807         call32 %cdr
2808         add____$i8,%esp !0x4
2809         push___%eax
2810         call32 %append2
2811         add____$i8,%esp !0x8
2812         push___%eax
2813         push___0x8(%ebp) !0x8
2814         call32 %car
2815         add____$i8,%esp !0x4
2816         push___%eax
2817         call32 %cons
2818         add____$i8,%esp !0x8
2819         leave
2820         ret
2821
2822
2823 :pairlis
2824         push___%ebp
2825         mov____%esp,%ebp
2826         sub____%esp,$i32 %0x1054
2827                                         # if (x == 1) ...
2828         mov____0x8(%ebp),%eax !0x8
2829         push___%eax
2830         mov____$i32,%eax %0x1
2831         mov____%eax,%edx
2832         pop____%eax
2833         sub____%edx,%eax
2834         sete___%al
2835         movzbl_%al,%eax
2836                                         # jmp test LABEL
2837         jne32  %pairlis_1_break
2838         mov____0x8(%ebp),%eax !0x10
2839         leave
2840         ret
2841         jmp32  %pairlis_1_break
2842 :pairlis_1_break
2843                                         # if (g_cells[x].type != TPAIR) ...
2844         mov____0x8(%ebp),%eax !0x8
2845         mov____%eax,%edx
2846         add____%eax,%eax
2847         add____%edx,%eax
2848         shl____$i8,%eax !0x2
2849         push___%eax
2850         mov____0x32,%eax &g_cells
2851         mov____%eax,%edx
2852         pop____%eax
2853         add____%edx,%eax
2854         add____$i8,%eax !0x0
2855                                         # g_cells[x].type
2856         mov____(%eax),%eax
2857         push___%eax
2858         mov____$i32,%eax %0x7
2859         mov____%eax,%edx
2860         pop____%eax
2861         push___%eax
2862         sub____%edx,%eax
2863         setne__%al
2864         movzbl_%al,%eax
2865         xchg___%eax,(%esp)
2866         sub____%edx,%eax
2867         lahf
2868         xor____$i8,%ah !0x40
2869         sahf
2870         pop____%eax
2871                                         # jmp test LABEL
2872         jne32  %pairlis_13_break
2873         push___0x8(%ebp) !0x10
2874         push___0x8(%ebp) !0xc
2875         push___0x8(%ebp) !0x8
2876         call32 %cons
2877         add____$i8,%esp !0x8
2878         push___%eax
2879         call32 %cons
2880         add____$i8,%esp !0x8
2881         leave
2882         ret
2883         jmp32  %pairlis_13_break
2884 :pairlis_13_break
2885         push___0x8(%ebp) !0x10
2886         push___0x8(%ebp) !0xc
2887         call32 %cdr
2888         add____$i8,%esp !0x4
2889         push___%eax
2890         push___0x8(%ebp) !0x8
2891         call32 %cdr
2892         add____$i8,%esp !0x4
2893         push___%eax
2894         call32 %pairlis
2895         add____$i8,%esp !0xc
2896         push___%eax
2897         push___0x8(%ebp) !0xc
2898         call32 %car
2899         add____$i8,%esp !0x4
2900         push___%eax
2901         push___0x8(%ebp) !0x8
2902         call32 %car
2903         add____$i8,%esp !0x4
2904         push___%eax
2905         call32 %cons
2906         add____$i8,%esp !0x8
2907         push___%eax
2908         call32 %cons
2909         add____$i8,%esp !0x8
2910         leave
2911         ret
2912
2913
2914 :call
2915         push___%ebp
2916         mov____%esp,%ebp
2917         sub____%esp,$i32 %0x1054
2918                                         # if ((g_functions[g_cells[fn].cdr].arity > 0 || g_functions[g_cells[fn].cdr].     arity == -1) && x != 1 && g_cells[g_cells[x].car].type == TVALUES) ...
2919         mov____0x8(%ebp),%eax !0x8
2920         mov____%eax,%edx
2921         add____%eax,%eax
2922         add____%edx,%eax
2923         shl____$i8,%eax !0x2
2924         push___%eax
2925         mov____0x32,%eax &g_cells
2926         mov____%eax,%edx
2927         pop____%eax
2928         add____%edx,%eax
2929         add____$i8,%eax !0x8
2930                                         # g_cells[fn].cdr
2931         mov____(%eax),%eax
2932         mov____%eax,%edx
2933         add____%eax,%eax
2934         add____%edx,%eax
2935         shl____$i8,%eax !0x2
2936         push___%eax
2937         mov____$i32,%eax &g_functions
2938         mov____%eax,%edx
2939         pop____%eax
2940         add____%edx,%eax
2941         add____$i8,%eax !0x4
2942                                         # g_functions[g_cells[fn].cdr].arity
2943         mov____(%eax),%eax
2944         push___%eax
2945         mov____$i32,%eax %0x0
2946         mov____%eax,%edx
2947         pop____%eax
2948         sub____%edx,%eax
2949         setg___%al
2950         movzbl_%al,%eax
2951         test___%eax,%eax
2952                                         # jmp test LABEL
2953         jle32  %call_1_break_b_2
2954         jmp32  %call_1_break_skip_b_2
2955 :call_1_break_b_2
2956         mov____0x8(%ebp),%eax !0x8
2957         mov____%eax,%edx
2958         add____%eax,%eax
2959         add____%edx,%eax
2960         shl____$i8,%eax !0x2
2961         push___%eax
2962         mov____0x32,%eax &g_cells
2963         mov____%eax,%edx
2964         pop____%eax
2965         add____%edx,%eax
2966         add____$i8,%eax !0x8
2967                                         # g_cells[fn].cdr
2968         mov____(%eax),%eax
2969         mov____%eax,%edx
2970         add____%eax,%eax
2971         add____%edx,%eax
2972         shl____$i8,%eax !0x2
2973         push___%eax
2974         mov____$i32,%eax &g_functions
2975         mov____%eax,%edx
2976         pop____%eax
2977         add____%edx,%eax
2978         add____$i8,%eax !0x4
2979                                         # g_functions[g_cells[fn].cdr].arity
2980         mov____(%eax),%eax
2981         push___%eax
2982         push___%eax
2983         mov____$i32,%eax %0x1
2984         mov____%eax,%edx
2985         pop____%eax
2986         mov____$i32,%eax %0x0
2987         sub____%edx,%eax
2988         mov____%eax,%edx
2989         pop____%eax
2990         sub____%edx,%eax
2991         sete___%al
2992         movzbl_%al,%eax
2993                                         # jmp test LABEL
2994         jne32  %call_1_break
2995 :call_1_break_skip_b_2
2996         mov____0x8(%ebp),%eax !0xc
2997         push___%eax
2998         mov____$i32,%eax %0x1
2999         mov____%eax,%edx
3000         pop____%eax
3001         push___%eax
3002         sub____%edx,%eax
3003         setne__%al
3004         movzbl_%al,%eax
3005         xchg___%eax,(%esp)
3006         sub____%edx,%eax
3007         lahf
3008         xor____$i8,%ah !0x40
3009         sahf
3010         pop____%eax
3011                                         # jmp test LABEL
3012         jne32  %call_1_break
3013         mov____0x8(%ebp),%eax !0xc
3014         mov____%eax,%edx
3015         add____%eax,%eax
3016         add____%edx,%eax
3017         shl____$i8,%eax !0x2
3018         push___%eax
3019         mov____0x32,%eax &g_cells
3020         mov____%eax,%edx
3021         pop____%eax
3022         add____%edx,%eax
3023         add____$i8,%eax !0x4
3024                                         # g_cells[x].car
3025         mov____(%eax),%eax
3026         mov____%eax,%edx
3027         add____%eax,%eax
3028         add____%edx,%eax
3029         shl____$i8,%eax !0x2
3030         push___%eax
3031         mov____0x32,%eax &g_cells
3032         mov____%eax,%edx
3033         pop____%eax
3034         add____%edx,%eax
3035         add____$i8,%eax !0x0
3036                                         # g_cells[g_cells[x].car].type
3037         mov____(%eax),%eax
3038         push___%eax
3039         mov____$i32,%eax %0xc
3040         mov____%eax,%edx
3041         pop____%eax
3042         sub____%edx,%eax
3043         sete___%al
3044         movzbl_%al,%eax
3045                                         # jmp test LABEL
3046         jne32  %call_1_break
3047                                         # x = cons(g_cells[g_cells[g_cells[x].car].cdr].car, g_cells[x].cdr)
3048         mov____0x8(%ebp),%eax !0xc
3049         mov____%eax,%edx
3050         add____%eax,%eax
3051         add____%edx,%eax
3052         shl____$i8,%eax !0x2
3053         push___%eax
3054         mov____0x32,%eax &g_cells
3055         mov____%eax,%edx
3056         pop____%eax
3057         add____%edx,%eax
3058         add____$i8,%eax !0x8
3059                                         # g_cells[x].cdr
3060         mov____(%eax),%eax
3061         push___%eax
3062         mov____0x8(%ebp),%eax !0xc
3063         mov____%eax,%edx
3064         add____%eax,%eax
3065         add____%edx,%eax
3066         shl____$i8,%eax !0x2
3067         push___%eax
3068         mov____0x32,%eax &g_cells
3069         mov____%eax,%edx
3070         pop____%eax
3071         add____%edx,%eax
3072         add____$i8,%eax !0x4
3073                                         # g_cells[x].car
3074         mov____(%eax),%eax
3075         mov____%eax,%edx
3076         add____%eax,%eax
3077         add____%edx,%eax
3078         shl____$i8,%eax !0x2
3079         push___%eax
3080         mov____0x32,%eax &g_cells
3081         mov____%eax,%edx
3082         pop____%eax
3083         add____%edx,%eax
3084         add____$i8,%eax !0x8
3085                                         # g_cells[g_cells[x].car].cdr
3086         mov____(%eax),%eax
3087         mov____%eax,%edx
3088         add____%eax,%eax
3089         add____%edx,%eax
3090         shl____$i8,%eax !0x2
3091         push___%eax
3092         mov____0x32,%eax &g_cells
3093         mov____%eax,%edx
3094         pop____%eax
3095         add____%edx,%eax
3096         add____$i8,%eax !0x4
3097                                         # g_cells[g_cells[g_cells[x].car].cdr].car
3098         mov____(%eax),%eax
3099         push___%eax
3100         call32 %cons
3101         add____$i8,%esp !0x8
3102         mov____%eax,0x8(%ebp) !0xc
3103         test___%eax,%eax
3104         jmp32  %call_1_break
3105 :call_1_break
3106                                         # if ((g_functions[g_cells[fn].cdr].arity > 1 || g_functions[g_cells[fn].cdr].     arity == -1) && x != 1 && g_cells[g_cells[x].cdr].type == TPAIR && g_cells[     g_cells[g_cells[x].cdr].car].type == TVALUES) ...
3107         mov____0x8(%ebp),%eax !0x8
3108         mov____%eax,%edx
3109         add____%eax,%eax
3110         add____%edx,%eax
3111         shl____$i8,%eax !0x2
3112         push___%eax
3113         mov____0x32,%eax &g_cells
3114         mov____%eax,%edx
3115         pop____%eax
3116         add____%edx,%eax
3117         add____$i8,%eax !0x8
3118                                         # g_cells[fn].cdr
3119         mov____(%eax),%eax
3120         mov____%eax,%edx
3121         add____%eax,%eax
3122         add____%edx,%eax
3123         shl____$i8,%eax !0x2
3124         push___%eax
3125         mov____$i32,%eax &g_functions
3126         mov____%eax,%edx
3127         pop____%eax
3128         add____%edx,%eax
3129         add____$i8,%eax !0x4
3130                                         # g_functions[g_cells[fn].cdr].arity
3131         mov____(%eax),%eax
3132         push___%eax
3133         mov____$i32,%eax %0x1
3134         mov____%eax,%edx
3135         pop____%eax
3136         sub____%edx,%eax
3137         setg___%al
3138         movzbl_%al,%eax
3139         test___%eax,%eax
3140                                         # jmp test LABEL
3141         jle32  %call_127_break_b_128
3142         jmp32  %call_127_break_skip_b_128
3143 :call_127_break_b_128
3144         mov____0x8(%ebp),%eax !0x8
3145         mov____%eax,%edx
3146         add____%eax,%eax
3147         add____%edx,%eax
3148         shl____$i8,%eax !0x2
3149         push___%eax
3150         mov____0x32,%eax &g_cells
3151         mov____%eax,%edx
3152         pop____%eax
3153         add____%edx,%eax
3154         add____$i8,%eax !0x8
3155                                         # g_cells[fn].cdr
3156         mov____(%eax),%eax
3157         mov____%eax,%edx
3158         add____%eax,%eax
3159         add____%edx,%eax
3160         shl____$i8,%eax !0x2
3161         push___%eax
3162         mov____$i32,%eax &g_functions
3163         mov____%eax,%edx
3164         pop____%eax
3165         add____%edx,%eax
3166         add____$i8,%eax !0x4
3167                                         # g_functions[g_cells[fn].cdr].arity
3168         mov____(%eax),%eax
3169         push___%eax
3170         push___%eax
3171         mov____$i32,%eax %0x1
3172         mov____%eax,%edx
3173         pop____%eax
3174         mov____$i32,%eax %0x0
3175         sub____%edx,%eax
3176         mov____%eax,%edx
3177         pop____%eax
3178         sub____%edx,%eax
3179         sete___%al
3180         movzbl_%al,%eax
3181                                         # jmp test LABEL
3182         jne32  %call_127_break
3183 :call_127_break_skip_b_128
3184         mov____0x8(%ebp),%eax !0xc
3185         push___%eax
3186         mov____$i32,%eax %0x1
3187         mov____%eax,%edx
3188         pop____%eax
3189         push___%eax
3190         sub____%edx,%eax
3191         setne__%al
3192         movzbl_%al,%eax
3193         xchg___%eax,(%esp)
3194         sub____%edx,%eax
3195         lahf
3196         xor____$i8,%ah !0x40
3197         sahf
3198         pop____%eax
3199                                         # jmp test LABEL
3200         jne32  %call_127_break
3201         mov____0x8(%ebp),%eax !0xc
3202         mov____%eax,%edx
3203         add____%eax,%eax
3204         add____%edx,%eax
3205         shl____$i8,%eax !0x2
3206         push___%eax
3207         mov____0x32,%eax &g_cells
3208         mov____%eax,%edx
3209         pop____%eax
3210         add____%edx,%eax
3211         add____$i8,%eax !0x8
3212                                         # g_cells[x].cdr
3213         mov____(%eax),%eax
3214         mov____%eax,%edx
3215         add____%eax,%eax
3216         add____%edx,%eax
3217         shl____$i8,%eax !0x2
3218         push___%eax
3219         mov____0x32,%eax &g_cells
3220         mov____%eax,%edx
3221         pop____%eax
3222         add____%edx,%eax
3223         add____$i8,%eax !0x0
3224                                         # g_cells[g_cells[x].cdr].type
3225         mov____(%eax),%eax
3226         push___%eax
3227         mov____$i32,%eax %0x7
3228         mov____%eax,%edx
3229         pop____%eax
3230         sub____%edx,%eax
3231         sete___%al
3232         movzbl_%al,%eax
3233                                         # jmp test LABEL
3234         jne32  %call_127_break
3235         mov____0x8(%ebp),%eax !0xc
3236         mov____%eax,%edx
3237         add____%eax,%eax
3238         add____%edx,%eax
3239         shl____$i8,%eax !0x2
3240         push___%eax
3241         mov____0x32,%eax &g_cells
3242         mov____%eax,%edx
3243         pop____%eax
3244         add____%edx,%eax
3245         add____$i8,%eax !0x8
3246                                         # g_cells[x].cdr
3247         mov____(%eax),%eax
3248         mov____%eax,%edx
3249         add____%eax,%eax
3250         add____%edx,%eax
3251         shl____$i8,%eax !0x2
3252         push___%eax
3253         mov____0x32,%eax &g_cells
3254         mov____%eax,%edx
3255         pop____%eax
3256         add____%edx,%eax
3257         add____$i8,%eax !0x4
3258                                         # g_cells[g_cells[x].cdr].car
3259         mov____(%eax),%eax
3260         mov____%eax,%edx
3261         add____%eax,%eax
3262         add____%edx,%eax
3263         shl____$i8,%eax !0x2
3264         push___%eax
3265         mov____0x32,%eax &g_cells
3266         mov____%eax,%edx
3267         pop____%eax
3268         add____%edx,%eax
3269         add____$i8,%eax !0x0
3270                                         # g_cells[g_cells[g_cells[x].cdr].car].type
3271         mov____(%eax),%eax
3272         push___%eax
3273         mov____$i32,%eax %0xc
3274         mov____%eax,%edx
3275         pop____%eax
3276         sub____%edx,%eax
3277         sete___%al
3278         movzbl_%al,%eax
3279                                         # jmp test LABEL
3280         jne32  %call_127_break
3281                                         # x = cons(g_cells[x].car, cons(g_cells[g_cells[g_cells[g_cells[x].cdr].car].cdr]     .car, g_cells[x].cdr))
3282         mov____0x8(%ebp),%eax !0xc
3283         mov____%eax,%edx
3284         add____%eax,%eax
3285         add____%edx,%eax
3286         shl____$i8,%eax !0x2
3287         push___%eax
3288         mov____0x32,%eax &g_cells
3289         mov____%eax,%edx
3290         pop____%eax
3291         add____%edx,%eax
3292         add____$i8,%eax !0x8
3293                                         # g_cells[x].cdr
3294         mov____(%eax),%eax
3295         push___%eax
3296         mov____0x8(%ebp),%eax !0xc
3297         mov____%eax,%edx
3298         add____%eax,%eax
3299         add____%edx,%eax
3300         shl____$i8,%eax !0x2
3301         push___%eax
3302         mov____0x32,%eax &g_cells
3303         mov____%eax,%edx
3304         pop____%eax
3305         add____%edx,%eax
3306         add____$i8,%eax !0x8
3307                                         # g_cells[x].cdr
3308         mov____(%eax),%eax
3309         mov____%eax,%edx
3310         add____%eax,%eax
3311         add____%edx,%eax
3312         shl____$i8,%eax !0x2
3313         push___%eax
3314         mov____0x32,%eax &g_cells
3315         mov____%eax,%edx
3316         pop____%eax
3317         add____%edx,%eax
3318         add____$i8,%eax !0x4
3319                                         # g_cells[g_cells[x].cdr].car
3320         mov____(%eax),%eax
3321         mov____%eax,%edx
3322         add____%eax,%eax
3323         add____%edx,%eax
3324         shl____$i8,%eax !0x2
3325         push___%eax
3326         mov____0x32,%eax &g_cells
3327         mov____%eax,%edx
3328         pop____%eax
3329         add____%edx,%eax
3330         add____$i8,%eax !0x8
3331                                         # g_cells[g_cells[g_cells[x].cdr].car].cdr
3332         mov____(%eax),%eax
3333         mov____%eax,%edx
3334         add____%eax,%eax
3335         add____%edx,%eax
3336         shl____$i8,%eax !0x2
3337         push___%eax
3338         mov____0x32,%eax &g_cells
3339         mov____%eax,%edx
3340         pop____%eax
3341         add____%edx,%eax
3342         add____$i8,%eax !0x4
3343                                         # g_cells[g_cells[g_cells[g_cells[x].cdr].car].cdr].car
3344         mov____(%eax),%eax
3345         push___%eax
3346         call32 %cons
3347         add____$i8,%esp !0x8
3348         push___%eax
3349         mov____0x8(%ebp),%eax !0xc
3350         mov____%eax,%edx
3351         add____%eax,%eax
3352         add____%edx,%eax
3353         shl____$i8,%eax !0x2
3354         push___%eax
3355         mov____0x32,%eax &g_cells
3356         mov____%eax,%edx
3357         pop____%eax
3358         add____%edx,%eax
3359         add____$i8,%eax !0x4
3360                                         # g_cells[x].car
3361         mov____(%eax),%eax
3362         push___%eax
3363         call32 %cons
3364         add____$i8,%esp !0x8
3365         mov____%eax,0x8(%ebp) !0xc
3366         test___%eax,%eax
3367         jmp32  %call_127_break
3368 :call_127_break
3369                                         # switch (g_functions[g_cells[fn].cdr].arity) {   ...} 
3370         mov____0x8(%ebp),%eax !0x8
3371         mov____%eax,%edx
3372         add____%eax,%eax
3373         add____%edx,%eax
3374         shl____$i8,%eax !0x2
3375         push___%eax
3376         mov____0x32,%eax &g_cells
3377         mov____%eax,%edx
3378         pop____%eax
3379         add____%edx,%eax
3380         add____$i8,%eax !0x8
3381                                         # g_cells[fn].cdr
3382         mov____(%eax),%eax
3383         mov____%eax,%edx
3384         add____%eax,%eax
3385         add____%edx,%eax
3386         shl____$i8,%eax !0x2
3387         push___%eax
3388         mov____$i32,%eax &g_functions
3389         mov____%eax,%edx
3390         pop____%eax
3391         add____%edx,%eax
3392         add____$i8,%eax !0x4
3393                                         # g_functions[g_cells[fn].cdr].arity
3394         mov____(%eax),%eax
3395 :call_304_clause0
3396         cmp____$i8,%eax !0x0
3397         je32   %call_304_body0
3398         jmp32  %call_304_clause1
3399 :call_304_body0
3400         mov____0x8(%ebp),%eax !0x8
3401         mov____%eax,%edx
3402         add____%eax,%eax
3403         add____%edx,%eax
3404         shl____$i8,%eax !0x2
3405         push___%eax
3406         mov____0x32,%eax &g_cells
3407         mov____%eax,%edx
3408         pop____%eax
3409         add____%edx,%eax
3410         add____$i8,%eax !0x8
3411                                         # g_cells[fn].cdr
3412         mov____(%eax),%eax
3413         mov____%eax,%edx
3414         add____%eax,%eax
3415         add____%edx,%eax
3416         shl____$i8,%eax !0x2
3417         push___%eax
3418         mov____$i32,%eax &g_functions
3419         mov____%eax,%edx
3420         pop____%eax
3421         add____%edx,%eax
3422         add____$i8,%eax !0x0
3423                                         # g_functions[g_cells[fn].cdr].function
3424         mov____(%eax),%eax
3425         push___%eax
3426         pop____%eax
3427         call___*%eax
3428         add____$i8,%esp !0x0
3429         leave
3430         ret
3431         jmp32  %call_304_body1
3432 :call_304_clause1
3433         cmp____$i8,%eax !0x1
3434         je32   %call_304_body1
3435         jmp32  %call_304_clause2
3436 :call_304_body1
3437         mov____0x8(%ebp),%eax !0xc
3438         mov____%eax,%edx
3439         add____%eax,%eax
3440         add____%edx,%eax
3441         shl____$i8,%eax !0x2
3442         push___%eax
3443         mov____0x32,%eax &g_cells
3444         mov____%eax,%edx
3445         pop____%eax
3446         add____%edx,%eax
3447         add____$i8,%eax !0x4
3448                                         # g_cells[x].car
3449         mov____(%eax),%eax
3450         push___%eax
3451         mov____0x8(%ebp),%eax !0x8
3452         mov____%eax,%edx
3453         add____%eax,%eax
3454         add____%edx,%eax
3455         shl____$i8,%eax !0x2
3456         push___%eax
3457         mov____0x32,%eax &g_cells
3458         mov____%eax,%edx
3459         pop____%eax
3460         add____%edx,%eax
3461         add____$i8,%eax !0x8
3462                                         # g_cells[fn].cdr
3463         mov____(%eax),%eax
3464         mov____%eax,%edx
3465         add____%eax,%eax
3466         add____%edx,%eax
3467         shl____$i8,%eax !0x2
3468         push___%eax
3469         mov____$i32,%eax &g_functions
3470         mov____%eax,%edx
3471         pop____%eax
3472         add____%edx,%eax
3473         add____$i8,%eax !0x0
3474                                         # g_functions[g_cells[fn].cdr].function
3475         mov____(%eax),%eax
3476         push___%eax
3477         pop____%eax
3478         call___*%eax
3479         add____$i8,%esp !0x4
3480         leave
3481         ret
3482         jmp32  %call_304_body2
3483 :call_304_clause2
3484         cmp____$i8,%eax !0x2
3485         je32   %call_304_body2
3486         jmp32  %call_304_clause3
3487 :call_304_body2
3488         mov____0x8(%ebp),%eax !0xc
3489         mov____%eax,%edx
3490         add____%eax,%eax
3491         add____%edx,%eax
3492         shl____$i8,%eax !0x2
3493         push___%eax
3494         mov____0x32,%eax &g_cells
3495         mov____%eax,%edx
3496         pop____%eax
3497         add____%edx,%eax
3498         add____$i8,%eax !0x8
3499                                         # g_cells[x].cdr
3500         mov____(%eax),%eax
3501         mov____%eax,%edx
3502         add____%eax,%eax
3503         add____%edx,%eax
3504         shl____$i8,%eax !0x2
3505         push___%eax
3506         mov____0x32,%eax &g_cells
3507         mov____%eax,%edx
3508         pop____%eax
3509         add____%edx,%eax
3510         add____$i8,%eax !0x4
3511                                         # g_cells[g_cells[x].cdr].car
3512         mov____(%eax),%eax
3513         push___%eax
3514         mov____0x8(%ebp),%eax !0xc
3515         mov____%eax,%edx
3516         add____%eax,%eax
3517         add____%edx,%eax
3518         shl____$i8,%eax !0x2
3519         push___%eax
3520         mov____0x32,%eax &g_cells
3521         mov____%eax,%edx
3522         pop____%eax
3523         add____%edx,%eax
3524         add____$i8,%eax !0x4
3525                                         # g_cells[x].car
3526         mov____(%eax),%eax
3527         push___%eax
3528         mov____0x8(%ebp),%eax !0x8
3529         mov____%eax,%edx
3530         add____%eax,%eax
3531         add____%edx,%eax
3532         shl____$i8,%eax !0x2
3533         push___%eax
3534         mov____0x32,%eax &g_cells
3535         mov____%eax,%edx
3536         pop____%eax
3537         add____%edx,%eax
3538         add____$i8,%eax !0x8
3539                                         # g_cells[fn].cdr
3540         mov____(%eax),%eax
3541         mov____%eax,%edx
3542         add____%eax,%eax
3543         add____%edx,%eax
3544         shl____$i8,%eax !0x2
3545         push___%eax
3546         mov____$i32,%eax &g_functions
3547         mov____%eax,%edx
3548         pop____%eax
3549         add____%edx,%eax
3550         add____$i8,%eax !0x0
3551                                         # g_functions[g_cells[fn].cdr].function
3552         mov____(%eax),%eax
3553         push___%eax
3554         pop____%eax
3555         call___*%eax
3556         add____$i8,%esp !0x8
3557         leave
3558         ret
3559         jmp32  %call_304_body3
3560 :call_304_clause3
3561         cmp____$i8,%eax !0x3
3562         je32   %call_304_body3
3563         jmp32  %call_304_clause4
3564 :call_304_body3
3565         mov____0x8(%ebp),%eax !0xc
3566         mov____%eax,%edx
3567         add____%eax,%eax
3568         add____%edx,%eax
3569         shl____$i8,%eax !0x2
3570         push___%eax
3571         mov____0x32,%eax &g_cells
3572         mov____%eax,%edx
3573         pop____%eax
3574         add____%edx,%eax
3575         add____$i8,%eax !0x8
3576                                         # g_cells[x].cdr
3577         mov____(%eax),%eax
3578         mov____%eax,%edx
3579         add____%eax,%eax
3580         add____%edx,%eax
3581         shl____$i8,%eax !0x2
3582         push___%eax
3583         mov____0x32,%eax &g_cells
3584         mov____%eax,%edx
3585         pop____%eax
3586         add____%edx,%eax
3587         add____$i8,%eax !0x8
3588                                         # g_cells[g_cells[x].cdr].cdr
3589         mov____(%eax),%eax
3590         mov____%eax,%edx
3591         add____%eax,%eax
3592         add____%edx,%eax
3593         shl____$i8,%eax !0x2
3594         push___%eax
3595         mov____0x32,%eax &g_cells
3596         mov____%eax,%edx
3597         pop____%eax
3598         add____%edx,%eax
3599         add____$i8,%eax !0x4
3600                                         # g_cells[g_cells[g_cells[x].cdr].cdr].car
3601         mov____(%eax),%eax
3602         push___%eax
3603         mov____0x8(%ebp),%eax !0xc
3604         mov____%eax,%edx
3605         add____%eax,%eax
3606         add____%edx,%eax
3607         shl____$i8,%eax !0x2
3608         push___%eax
3609         mov____0x32,%eax &g_cells
3610         mov____%eax,%edx
3611         pop____%eax
3612         add____%edx,%eax
3613         add____$i8,%eax !0x8
3614                                         # g_cells[x].cdr
3615         mov____(%eax),%eax
3616         mov____%eax,%edx
3617         add____%eax,%eax
3618         add____%edx,%eax
3619         shl____$i8,%eax !0x2
3620         push___%eax
3621         mov____0x32,%eax &g_cells
3622         mov____%eax,%edx
3623         pop____%eax
3624         add____%edx,%eax
3625         add____$i8,%eax !0x4
3626                                         # g_cells[g_cells[x].cdr].car
3627         mov____(%eax),%eax
3628         push___%eax
3629         mov____0x8(%ebp),%eax !0xc
3630         mov____%eax,%edx
3631         add____%eax,%eax
3632         add____%edx,%eax
3633         shl____$i8,%eax !0x2
3634         push___%eax
3635         mov____0x32,%eax &g_cells
3636         mov____%eax,%edx
3637         pop____%eax
3638         add____%edx,%eax
3639         add____$i8,%eax !0x4
3640                                         # g_cells[x].car
3641         mov____(%eax),%eax
3642         push___%eax
3643         mov____0x8(%ebp),%eax !0x8
3644         mov____%eax,%edx
3645         add____%eax,%eax
3646         add____%edx,%eax
3647         shl____$i8,%eax !0x2
3648         push___%eax
3649         mov____0x32,%eax &g_cells
3650         mov____%eax,%edx
3651         pop____%eax
3652         add____%edx,%eax
3653         add____$i8,%eax !0x8
3654                                         # g_cells[fn].cdr
3655         mov____(%eax),%eax
3656         mov____%eax,%edx
3657         add____%eax,%eax
3658         add____%edx,%eax
3659         shl____$i8,%eax !0x2
3660         push___%eax
3661         mov____$i32,%eax &g_functions
3662         mov____%eax,%edx
3663         pop____%eax
3664         add____%edx,%eax
3665         add____$i8,%eax !0x0
3666                                         # g_functions[g_cells[fn].cdr].function
3667         mov____(%eax),%eax
3668         push___%eax
3669         pop____%eax
3670         call___*%eax
3671         add____$i8,%esp !0xc
3672         leave
3673         ret
3674         jmp32  %call_304_body4
3675 :call_304_clause4
3676         cmp____$i8,%eax !0x-1
3677         je32   %call_304_body4
3678         jmp32  %call_304_clause5
3679 :call_304_body4
3680         push___0x8(%ebp) !0xc
3681         mov____0x8(%ebp),%eax !0x8
3682         mov____%eax,%edx
3683         add____%eax,%eax
3684         add____%edx,%eax
3685         shl____$i8,%eax !0x2
3686         push___%eax
3687         mov____0x32,%eax &g_cells
3688         mov____%eax,%edx
3689         pop____%eax
3690         add____%edx,%eax
3691         add____$i8,%eax !0x8
3692                                         # g_cells[fn].cdr
3693         mov____(%eax),%eax
3694         mov____%eax,%edx
3695         add____%eax,%eax
3696         add____%edx,%eax
3697         shl____$i8,%eax !0x2
3698         push___%eax
3699         mov____$i32,%eax &g_functions
3700         mov____%eax,%edx
3701         pop____%eax
3702         add____%edx,%eax
3703         add____$i8,%eax !0x0
3704                                         # g_functions[g_cells[fn].cdr].function
3705         mov____(%eax),%eax
3706         push___%eax
3707         pop____%eax
3708         call___*%eax
3709         add____$i8,%esp !0x4
3710         leave
3711         ret
3712         jmp32  %call_304_body5
3713 :call_304_clause5
3714 :call_304_body5
3715         push___0x8(%ebp) !0xc
3716         mov____0x8(%ebp),%eax !0x8
3717         mov____%eax,%edx
3718         add____%eax,%eax
3719         add____%edx,%eax
3720         shl____$i8,%eax !0x2
3721         push___%eax
3722         mov____0x32,%eax &g_cells
3723         mov____%eax,%edx
3724         pop____%eax
3725         add____%edx,%eax
3726         add____$i8,%eax !0x8
3727                                         # g_cells[fn].cdr
3728         mov____(%eax),%eax