bootstrap: Include necessary M1 sources.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 10 Sep 2017 19:17:17 +0000 (21:17 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 10 Sep 2017 19:17:17 +0000 (21:17 +0200)
   M1 -f stage0/x86.M1 -f mlibc/crt1.M1 --LittleEndian --Architecture=1 > mlibc/crt1.hex2
   M1 -f stage0/x86.M1 -f mlibc/mini-libc-mes.M1 --LittleEndian --Architecture=1  > mlibc/libc-mes.hex2
   M1 -f stage0/x86.M1 -f src/mes.M1 --LittleEndian --Architecture=1 > src/mes.hex2
   hex2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000 -f stage0/elf32-header.hex2 -f mlibc/crt1.hex2 -f mlibc/libc-mes.hex2 -f src/mes.hex2 -f stage0/elf32-footer-single-main.hex2 > src/mes-mes
   exec_enable src/mes-mes

* mlibc/crt1.M1: New File.
* mlibc/libc-mes.M1: New File.
* src/mes.M1: New File.

mlibc/crt1.M1 [new file with mode: 0644]
mlibc/libc-mes.M1 [new file with mode: 0644]
src/mes.M1 [new file with mode: 0644]

diff --git a/mlibc/crt1.M1 b/mlibc/crt1.M1
new file mode 100644 (file)
index 0000000..6433800
--- /dev/null
@@ -0,0 +1,33 @@
+
+
+:_start
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____%ebp,%eax
+       add____$i8,%eax !4
+       movzbl_(%eax),%eax
+       add____$i8,%eax !3
+       shl____$i8,%eax !0x02
+       add____%ebp,%eax
+       mov____%eax,0x32 &g_environment
+       mov____%ebp,%eax
+       add____$i8,%eax !8
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !4
+       movzbl_(%eax),%eax
+       push___%eax
+                                       # main(); 
+       call32 %main
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+       mov____%eax,%ebx
+       mov____$i32,%eax %1
+       int____$0x80
+       hlt
+       leave
+       ret
+
+:g_environment
+!0x00 !0x00 !0x00 !0x00
diff --git a/mlibc/libc-mes.M1 b/mlibc/libc-mes.M1
new file mode 100644 (file)
index 0000000..5847931
--- /dev/null
@@ -0,0 +1,1917 @@
+
+
+:exit
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%ebx !8
+       mov____$i32,%eax SYS_exit
+       int____$0x80
+       leave
+       ret
+
+
+:read
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%ebx !8
+       mov____0x8(%ebp),%ecx !12
+       mov____0x8(%ebp),%edx !16
+       mov____$i32,%eax SYS_read
+       int____$0x80
+       leave
+       ret
+
+
+:write
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%ebx !8
+       mov____0x8(%ebp),%ecx !12
+       mov____0x8(%ebp),%edx !16
+       mov____$i32,%eax SYS_write
+       int____$0x80
+       leave
+       ret
+
+
+:open
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%ebx !8
+       mov____0x8(%ebp),%ecx !12
+       mov____0x8(%ebp),%edx !16
+       mov____$i32,%eax SYS_open
+       int____$0x80
+       leave
+       ret
+
+
+:access
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%ebx !8
+       mov____0x8(%ebp),%ecx !12
+       mov____$i32,%eax SYS_access
+       int____$0x80
+       leave
+       ret
+
+
+:brk
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%ebx !8
+       mov____$i32,%eax SYS_brk
+       int____$0x80
+       leave
+       ret
+
+
+:fsync
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%ebx !8
+       mov____$i32,%eax SYS_fsync
+       int____$0x80
+       leave
+       ret
+
+
+:strlen
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int i = 0; 
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (s[i]) ...
+       jmp32  %strlen_4_continue
+:strlen_4_loop
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+:strlen_4_continue
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       mov____0x8(%ebp),%edx !0x8
+       add____%edx,%eax
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %strlen_4_break
+       jmp32  %strlen_4_loop
+:strlen_4_break
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:eputc
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____$i32,%eax %0x2
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %fputc
+       add____$i8,%esp !0x8
+       leave
+       ret
+
+
+:eputs
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int i = strlen(s); 
+       push___0x8(%ebp) !0x8
+       call32 %strlen
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # write(2, s, i); 
+       push___0x8(%ebp) !0x-4
+       push___0x8(%ebp) !0x8
+       mov____$i32,%eax %0x2
+       push___%eax
+       call32 %write
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+       mov____$i32,%eax %0x0
+       leave
+       ret
+
+
+:fputs
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int i = strlen(s); 
+       push___0x8(%ebp) !0x8
+       call32 %strlen
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # write(fd, s, i); 
+       push___0x8(%ebp) !0x-4
+       push___0x8(%ebp) !0x8
+       push___0x8(%ebp) !0xc
+       call32 %write
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+       mov____$i32,%eax %0x0
+       leave
+       ret
+
+
+:puts
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int i = strlen(s); 
+       push___0x8(%ebp) !0x8
+       call32 %strlen
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # write(1, s, i); 
+       push___0x8(%ebp) !0x-4
+       push___0x8(%ebp) !0x8
+       mov____$i32,%eax %0x1
+       push___%eax
+       call32 %write
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+       mov____$i32,%eax %0x0
+       leave
+       ret
+
+
+:putchar
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # write(1, (char*)&c, 1); 
+       mov____$i32,%eax %0x1
+       push___%eax
+       lea____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       push___%eax
+       call32 %write
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+       mov____$i32,%eax %0x0
+       leave
+       ret
+
+
+:fputc
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # write(fd, (char*)&c, 1); 
+       mov____$i32,%eax %0x1
+       push___%eax
+       lea____0x8(%ebp),%eax !0x8
+       push___%eax
+       push___0x8(%ebp) !0xc
+       call32 %write
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+       mov____$i32,%eax %0x0
+       leave
+       ret
+
+
+:assert_fail
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # eputs("assert fail: "); 
+       push___$i32 &string__env_0
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs(s); 
+       push___0x8(%ebp) !0x8
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs("\n"); 
+       push___$i32 &string__env_1
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # char *fail = s; 
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # fail = 0
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # *fail = 0
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       test___%eax,%eax
+       leave
+       ret
+
+
+:getchar
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char c; 
+                                       # int i; 
+                                       # if (ungetc_char == -1) ...else ...
+       mov____0x32,%eax &ungetc_char
+       push___%eax
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %getchar_3_else
+                                       # int r = read(g_stdin, &c, 1); 
+       mov____$i32,%eax %0x1
+       push___%eax
+       lea____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____0x32,%eax &g_stdin
+       push___%eax
+       call32 %read
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-c
+                                       # if (r < 1) ...
+       mov____0x8(%ebp),%eax !0x-c
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setl___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jge32  %getchar_22_break
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       leave
+       ret
+       jmp32  %getchar_22_break
+:getchar_22_break
+                                       # i = c
+       movzbl_0x8(%ebp),%eax !0x-4
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+       jmp32  %getchar_3_break
+:getchar_3_else
+                                       # i = ungetc_buf[ungetc_char]
+       mov____0x32,%eax &ungetc_char
+       mov____%eax,%edx
+       mov____$i32,%edx &ungetc_buf
+       add____%edx,%eax
+       movzbl_(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+                                       # ungetc_char = ungetc_char - 1
+       mov____0x32,%eax &ungetc_char
+       add____$i8,%eax !0x-1
+       mov____%eax,0x32 &ungetc_char
+       test___%eax,%eax
+:getchar_3_break
+                                       # if (i < 0) ...
+       mov____0x8(%ebp),%eax !0x-8
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setl___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jge32  %getchar_58_break
+                                       # i += 256
+       mov____$i32,%eax %0x100
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-8
+       pop____%edx
+       add____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+       jmp32  %getchar_58_break
+:getchar_58_break
+       mov____0x8(%ebp),%eax !0x-8
+       leave
+       ret
+
+
+:fgetc
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char c; 
+                                       # int r = read(fd, &c, 1); 
+       mov____$i32,%eax %0x1
+       push___%eax
+       lea____0x8(%ebp),%eax !0x-4
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %read
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # c == 1? ...: ...
+       movzbl_0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %fgetc_9_else
+       movzbl_0x8(%ebp),%eax !0x-4
+       test___%eax,%eax
+       jmp32  %fgetc_9_break
+:fgetc_9_else
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       test___%eax,%eax
+:fgetc_9_break
+       leave
+       ret
+
+
+:free
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       leave
+       ret
+
+
+:ungetc
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x32,%eax &ungetc_char
+       push___%eax
+       mov____$i32,%eax &ungetc_char
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+                                       # ungetc_buf[ungetc_char] = c
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &ungetc_char
+       mov____%eax,%edx
+       mov____$i32,%edx &ungetc_buf
+       add____%edx,%eax
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x8
+       leave
+       ret
+
+
+:strcmp
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # while (*a && *b && *a == *b) ...
+       jmp32  %strcmp_1_continue
+:strcmp_1_loop
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x8
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0xc
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+:strcmp_1_continue
+       mov____0x8(%ebp),%eax !0x8
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %strcmp_1_break
+       mov____0x8(%ebp),%eax !0xc
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %strcmp_1_break
+       mov____0x8(%ebp),%eax !0x8
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       movzbl_(%eax),%eax
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %strcmp_1_break
+       jmp32  %strcmp_1_loop
+:strcmp_1_break
+       mov____0x8(%ebp),%eax !0x8
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       movzbl_(%eax),%eax
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       leave
+       ret
+
+
+:strcpy
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *p = dest; 
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (*src) ...
+       jmp32  %strcpy_4_continue
+:strcpy_4_loop
+                                       # *p = *src++
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0xc
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x-4 !0x1
+       test___%eax,%eax
+:strcpy_4_continue
+       mov____0x8(%ebp),%eax !0xc
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %strcpy_4_break
+       jmp32  %strcpy_4_loop
+:strcpy_4_break
+                                       # *p = 0
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x8
+       leave
+       ret
+
+
+:itoa
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *p = itoa_buf; 
+       mov____$i32,%eax &itoa_buf
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # p += 9
+       mov____$i32,%eax %0x9
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       pop____%edx
+       add____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # *p = 0
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x-4 !0x-1
+       test___%eax,%eax
+                                       # int sign = 0; 
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # if (x < 0) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setl___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jge32  %itoa_23_break
+                                       # sign = 1
+       mov____$i32,%eax %0x1
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+       jmp32  %itoa_23_break
+:itoa_23_break
+                                       # if (sign) ...
+       mov____0x8(%ebp),%eax !0x-8
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %itoa_37_break
+                                       # x = -x
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+       jmp32  %itoa_37_break
+:itoa_37_break
+                                       # do xwhile (...); 
+:itoa_53_loop
+                                       # *p = '0' + x%10
+       mov____$i32,%eax %0x30
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0xa
+       mov____%eax,%edx
+       pop____%eax
+       mov____%edx,%ebx
+       xor____%edx,%edx
+       idiv___%ebx
+       mov____%edx,%eax
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x-4 !0x-1
+       test___%eax,%eax
+                                       # x = x/10
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0xa
+       mov____%eax,%edx
+       pop____%eax
+       mov____%edx,%ebx
+       xor____%edx,%edx
+       idiv___%ebx
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:itoa_53_continue
+       mov____0x8(%ebp),%eax !0x8
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %itoa_53_break
+       jmp32  %itoa_53_loop
+:itoa_53_break
+                                       # if (sign && *(p + 1) != '0') ...
+       mov____0x8(%ebp),%eax !0x-8
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %itoa_87_break
+       mov____0x8(%ebp),%eax !0x-4
+       add____$i8,%eax !0x1
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____$i32,%eax %0x30
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %itoa_87_break
+                                       # *p = '-'
+       mov____$i32,%eax %0x2d
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x-4 !0x-1
+       test___%eax,%eax
+       jmp32  %itoa_87_break
+:itoa_87_break
+       mov____0x8(%ebp),%eax !0x-4
+       add____$i8,%eax !0x1
+       leave
+       ret
+
+
+:isdigit
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x30
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setge__%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+       je32   %isdigit_6_and_skip_b
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x39
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setle__%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+:isdigit_6_and_skip_b
+       leave
+       ret
+
+
+:isxdigit
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       push___0x8(%ebp) !0x8
+       call32 %isdigit
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       jne32  %isxdigit_3_or_skip_b
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x61
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setge__%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+       je32   %isxdigit_11_and_skip_b
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x66
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setle__%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+:isxdigit_11_and_skip_b
+       test___%eax,%eax
+:isxdigit_3_or_skip_b
+       leave
+       ret
+
+
+:isnumber
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (base == 2) ...
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %isnumber_1_break
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x30
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setge__%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+       je32   %isnumber_14_and_skip_b
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x31
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setle__%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+:isnumber_14_and_skip_b
+       leave
+       ret
+       jmp32  %isnumber_1_break
+:isnumber_1_break
+                                       # if (base == 8) ...
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x8
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %isnumber_27_break
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x30
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setge__%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+       je32   %isnumber_40_and_skip_b
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x37
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setle__%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+:isnumber_40_and_skip_b
+       leave
+       ret
+       jmp32  %isnumber_27_break
+:isnumber_27_break
+                                       # if (base == 10) ...
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0xa
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %isnumber_53_break
+       push___0x8(%ebp) !0x8
+       call32 %isdigit
+       add____$i8,%esp !0x4
+       leave
+       ret
+       jmp32  %isnumber_53_break
+:isnumber_53_break
+                                       # if (base == 16) ...
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x10
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %isnumber_66_break
+       push___0x8(%ebp) !0x8
+       call32 %isxdigit
+       add____$i8,%esp !0x4
+       leave
+       ret
+       jmp32  %isnumber_66_break
+:isnumber_66_break
+       leave
+       ret
+
+
+:_atoi
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *s = *p; 
+       mov____0x8(%ebp),%eax !0x8
+       mov____(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # int i = 0; 
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # int sign = 1; 
+       mov____$i32,%eax %0x1
+       mov____%eax,0x8(%ebp) !0x-c
+                                       # if (!base) ...
+       mov____0x8(%ebp),%eax !0xc
+       test___%eax,%eax
+       sete___%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       je32   %_atoi_11_break
+                                       # base = 10
+       mov____$i32,%eax %0xa
+       mov____%eax,0x8(%ebp) !0xc
+       test___%eax,%eax
+       jmp32  %_atoi_11_break
+:_atoi_11_break
+                                       # if (*s && *s == '-') ...
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %_atoi_24_break
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____$i32,%eax %0x2d
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %_atoi_24_break
+                                       # sign = -1
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-c
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+       jmp32  %_atoi_24_break
+:_atoi_24_break
+                                       # while (isnumber(*s, base)) ...
+       jmp32  %_atoi_55_continue
+:_atoi_55_loop
+                                       # i *= base
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-8
+       pop____%edx
+       mul____%edx
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+                                       # int m = *s > '9'? 'a' - 10: '0'; 
+                                       # *s > '9'? ...: ...
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____$i32,%eax %0x39
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setg___%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       jle32  %_atoi_67_else
+       mov____$i32,%eax %0x61
+       add____$i8,%eax !0x-a
+       test___%eax,%eax
+       jmp32  %_atoi_67_break
+:_atoi_67_else
+       mov____$i32,%eax %0x30
+       test___%eax,%eax
+:_atoi_67_break
+       mov____%eax,0x8(%ebp) !0x-10
+                                       # i += *s - m
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-10
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-8
+       pop____%edx
+       add____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+:_atoi_55_continue
+       push___0x8(%ebp) !0xc
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       call32 %isnumber
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %_atoi_55_break
+       jmp32  %_atoi_55_loop
+:_atoi_55_break
+                                       # *p = s
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-c
+       mov____%eax,%edx
+       pop____%eax
+       mul____%edx
+       leave
+       ret
+
+
+:atoi
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *p = s; 
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+       mov____$i32,%eax %0x0
+       push___%eax
+       lea____0x8(%ebp),%eax !0x-4
+       push___%eax
+       call32 %_atoi
+       add____$i8,%esp !0x8
+       leave
+       ret
+
+
+:malloc
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (!g_brk) ...
+       mov____0x32,%eax &g_brk
+       test___%eax,%eax
+       sete___%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       je32   %malloc_1_break
+                                       # g_brk = brk(0)
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %brk
+       add____$i8,%esp !0x4
+       mov____%eax,0x32 &g_brk
+       test___%eax,%eax
+       jmp32  %malloc_1_break
+:malloc_1_break
+                                       # if (brk(g_brk + size) == -1) ...
+       mov____0x32,%eax &g_brk
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       push___%eax
+       call32 %brk
+       add____$i8,%esp !0x4
+       push___%eax
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %malloc_16_break
+       mov____$i32,%eax %0x0
+       leave
+       ret
+       jmp32  %malloc_16_break
+:malloc_16_break
+                                       # char *p = g_brk; 
+       mov____0x32,%eax &g_brk
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # g_brk += size
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &g_brk
+       pop____%edx
+       add____%edx,%eax
+       mov____%eax,0x32 &g_brk
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:memcpy
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *p = dest; 
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # char *q = src; 
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # while (n--) ...
+       jmp32  %memcpy_7_continue
+:memcpy_7_loop
+                                       # *p = *q++
+       mov____0x8(%ebp),%eax !0x-8
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-8
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x-4 !0x1
+       test___%eax,%eax
+:memcpy_7_continue
+       mov____0x8(%ebp),%eax !0x10
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x10
+       add____$i8,(%eax) !0x-1
+       pop____%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %memcpy_7_break
+       jmp32  %memcpy_7_loop
+:memcpy_7_break
+       mov____0x8(%ebp),%eax !0x8
+       leave
+       ret
+
+
+:realloc
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # void *new = malloc(size); 
+       push___0x8(%ebp) !0xc
+       call32 %malloc
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # if (ptr && new) ...
+       mov____0x8(%ebp),%eax !0x8
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %realloc_5_break
+       mov____0x8(%ebp),%eax !0x-4
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %realloc_5_break
+                                       # memcpy(new, ptr, size); 
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       push___0x8(%ebp) !0x-4
+       call32 %memcpy
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+                                       # free(ptr); 
+       push___0x8(%ebp) !0x8
+       call32 %free
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       jmp32  %realloc_5_break
+:realloc_5_break
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:strncmp
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # while (*a && *b && *a == *b && --length) ...
+       jmp32  %strncmp_1_continue
+:strncmp_1_loop
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x8
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0xc
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+:strncmp_1_continue
+       mov____0x8(%ebp),%eax !0x8
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %strncmp_1_break
+       mov____0x8(%ebp),%eax !0xc
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %strncmp_1_break
+       mov____0x8(%ebp),%eax !0x8
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       movzbl_(%eax),%eax
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %strncmp_1_break
+       mov____%ebp,%eax
+       add____$i8,%eax !0x10
+       add____$i8,(%eax) !0x-1
+       mov____0x8(%ebp),%eax !0x10
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %strncmp_1_break
+       jmp32  %strncmp_1_loop
+:strncmp_1_break
+       mov____0x8(%ebp),%eax !0x8
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       movzbl_(%eax),%eax
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       leave
+       ret
+
+
+:getenv
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char **p = g_environment; 
+       mov____0x32,%eax &g_environment
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # int length = strlen(s); 
+       push___0x8(%ebp) !0x8
+       call32 %strlen
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # while (*p) ...
+       jmp32  %getenv_8_continue
+:getenv_8_loop
+                                       # if (!strncmp(s, *p, length) && *(*p + length) == '=') ...
+       push___0x8(%ebp) !0x-8
+       mov____0x8(%ebp),%eax !0x-4
+       mov____(%eax),%eax
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %strncmp
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+       sete___%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       je32   %getenv_11_break
+       mov____0x8(%ebp),%eax !0x-4
+       mov____(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____$i32,%eax %0x3d
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %getenv_11_break
+       mov____0x8(%ebp),%eax !0x-4
+       mov____(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       add____$i8,%eax !0x1
+       leave
+       ret
+       jmp32  %getenv_11_break
+:getenv_11_break
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x4
+       pop____%eax
+       test___%eax,%eax
+:getenv_8_continue
+       mov____0x8(%ebp),%eax !0x-4
+       mov____(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %getenv_8_break
+       jmp32  %getenv_8_loop
+:getenv_8_break
+       mov____$i32,%eax %0x0
+       leave
+       ret
+
+
+:vprintf
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *p = format; 
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (*p) ...
+       jmp32  %vprintf_4_continue
+:vprintf_4_loop
+                                       # if (*p != '%') ...else ...
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____$i32,%eax %0x25
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %vprintf_7_else
+                                       # putchar(*p++); 
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       movzbl_(%eax),%eax
+       push___%eax
+       call32 %putchar
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       jmp32  %vprintf_7_break
+:vprintf_7_else
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+                                       # char c = *p; 
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # switch (c) {   ...} 
+       movzbl_0x8(%ebp),%eax !0x-8
+:vprintf_38_clause0
+       cmp____$i8,%eax !0x25
+       je32   %vprintf_38_body0
+       jmp32  %vprintf_38_clause1
+:vprintf_38_body0
+                                       # putchar(*p); 
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       call32 %putchar
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       jmp32  %vprintf_38_break
+       jmp32  %vprintf_38_body1
+:vprintf_38_clause1
+       cmp____$i8,%eax !0x63
+       je32   %vprintf_38_body1
+       jmp32  %vprintf_38_clause2
+:vprintf_38_body1
+                                       # char c; 
+                                       # c = (char)(int*)(ap = ap + 4)[-1]
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       shl____$i8,%eax !0x2
+       push___%eax
+                                       # ap = ap + 4
+       mov____0x8(%ebp),%eax !0xc
+       add____$i8,%eax !0x4
+       mov____%eax,0x8(%ebp) !0xc
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       mov____(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-c
+       test___%eax,%eax
+                                       # putchar(c); 
+       push___0x8(%ebp) !0x-c
+       call32 %putchar
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       jmp32  %vprintf_38_break
+       jmp32  %vprintf_38_body2
+:vprintf_38_clause2
+       cmp____$i8,%eax !0x64
+       je32   %vprintf_38_body2
+       jmp32  %vprintf_38_clause3
+:vprintf_38_body2
+                                       # int d; 
+                                       # d = (int)(int*)(ap = ap + 4)[-1]
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       shl____$i8,%eax !0x2
+       push___%eax
+                                       # ap = ap + 4
+       mov____0x8(%ebp),%eax !0xc
+       add____$i8,%eax !0x4
+       mov____%eax,0x8(%ebp) !0xc
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       mov____(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-10
+       test___%eax,%eax
+                                       # puts(itoa(d)); 
+       push___0x8(%ebp) !0x-10
+       call32 %itoa
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %puts
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       jmp32  %vprintf_38_break
+       jmp32  %vprintf_38_body3
+:vprintf_38_clause3
+       cmp____$i8,%eax !0x73
+       je32   %vprintf_38_body3
+       jmp32  %vprintf_38_clause4
+:vprintf_38_body3
+                                       # char *s; 
+                                       # s = (char*)(int*)(ap = ap + 4)[-1]
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       shl____$i8,%eax !0x2
+       push___%eax
+                                       # ap = ap + 4
+       mov____0x8(%ebp),%eax !0xc
+       add____$i8,%eax !0x4
+       mov____%eax,0x8(%ebp) !0xc
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       mov____(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-14
+       test___%eax,%eax
+                                       # puts(s); 
+       push___0x8(%ebp) !0x-14
+       call32 %puts
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       jmp32  %vprintf_38_break
+       jmp32  %vprintf_38_body4
+:vprintf_38_clause4
+:vprintf_38_body4
+                                       # putchar(*p); 
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       call32 %putchar
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       jmp32  %vprintf_38_break
+:vprintf_38_break
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+:vprintf_7_break
+:vprintf_4_continue
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %vprintf_4_break
+       jmp32  %vprintf_4_loop
+:vprintf_4_break
+                                       # ap = 0
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0xc
+       test___%eax,%eax
+       mov____$i32,%eax %0x0
+       leave
+       ret
+
+
+:printf
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # va_list ap; 
+                                       # ap = (char*)(&format + 1)
+       mov____%ebp,%eax
+       add____$i8,%eax !0x8
+       add____$i8,%eax !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # int r = vprintf(format, ap); 
+       push___0x8(%ebp) !0x-4
+       push___0x8(%ebp) !0x8
+       call32 %vprintf
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # ap = 0
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-8
+       leave
+       ret
+
+
+:vsprintf
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *p = format; 
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (*p) ...
+       jmp32  %vsprintf_4_continue
+:vsprintf_4_loop
+                                       # if (*p != '%') ...else ...
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____$i32,%eax %0x25
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %vsprintf_7_else
+                                       # *str = *p++
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x8 !0x1
+       test___%eax,%eax
+       jmp32  %vsprintf_7_break
+:vsprintf_7_else
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+                                       # char c = *p; 
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # switch (c) {   ...} 
+       movzbl_0x8(%ebp),%eax !0x-8
+:vsprintf_41_clause0
+       cmp____$i8,%eax !0x25
+       je32   %vsprintf_41_body0
+       jmp32  %vsprintf_41_clause1
+:vsprintf_41_body0
+                                       # *str = *p
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x8 !0x1
+       test___%eax,%eax
+       jmp32  %vsprintf_41_break
+       jmp32  %vsprintf_41_body1
+:vsprintf_41_clause1
+       cmp____$i8,%eax !0x63
+       je32   %vsprintf_41_body1
+       jmp32  %vsprintf_41_clause2
+:vsprintf_41_body1
+                                       # char c; 
+                                       # c = (char)(int*)(ap = ap + 4)[-1]
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       shl____$i8,%eax !0x2
+       push___%eax
+                                       # ap = ap + 4
+       mov____0x8(%ebp),%eax !0x10
+       add____$i8,%eax !0x4
+       mov____%eax,0x8(%ebp) !0x10
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       mov____(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-c
+       test___%eax,%eax
+                                       # *str = c
+       movzbl_0x8(%ebp),%eax !0x-c
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x8 !0x1
+       test___%eax,%eax
+       jmp32  %vsprintf_41_break
+       jmp32  %vsprintf_41_body2
+:vsprintf_41_clause2
+       cmp____$i8,%eax !0x64
+       je32   %vsprintf_41_body2
+       jmp32  %vsprintf_41_clause3
+:vsprintf_41_body2
+                                       # int d; 
+                                       # d = (int)(int*)(ap = ap + 4)[-1]
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       shl____$i8,%eax !0x2
+       push___%eax
+                                       # ap = ap + 4
+       mov____0x8(%ebp),%eax !0x10
+       add____$i8,%eax !0x4
+       mov____%eax,0x8(%ebp) !0x10
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       mov____(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-10
+       test___%eax,%eax
+                                       # char *s; 
+                                       # s = itoa(d)
+       push___0x8(%ebp) !0x-10
+       call32 %itoa
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-14
+       test___%eax,%eax
+                                       # while (*s) ...
+       jmp32  %vsprintf_121_continue
+:vsprintf_121_loop
+                                       # *str = *s++
+       mov____0x8(%ebp),%eax !0x-14
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-14
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x8 !0x1
+       test___%eax,%eax
+:vsprintf_121_continue
+       mov____0x8(%ebp),%eax !0x-14
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %vsprintf_121_break
+       jmp32  %vsprintf_121_loop
+:vsprintf_121_break
+       jmp32  %vsprintf_41_break
+       jmp32  %vsprintf_41_body3
+:vsprintf_41_clause3
+       cmp____$i8,%eax !0x73
+       je32   %vsprintf_41_body3
+       jmp32  %vsprintf_41_clause4
+:vsprintf_41_body3
+                                       # char *s; 
+                                       # s = (char*)(int*)(ap = ap + 4)[-1]
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       shl____$i8,%eax !0x2
+       push___%eax
+                                       # ap = ap + 4
+       mov____0x8(%ebp),%eax !0x10
+       add____$i8,%eax !0x4
+       mov____%eax,0x8(%ebp) !0x10
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       mov____(%eax),%eax
+       mov____%eax,0x8(%ebp) !0x-18
+       test___%eax,%eax
+                                       # while (*s) ...
+       jmp32  %vsprintf_171_continue
+:vsprintf_171_loop
+                                       # *str = *s++
+       mov____0x8(%ebp),%eax !0x-18
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-18
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x8 !0x1
+       test___%eax,%eax
+:vsprintf_171_continue
+       mov____0x8(%ebp),%eax !0x-18
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %vsprintf_171_break
+       jmp32  %vsprintf_171_loop
+:vsprintf_171_break
+       jmp32  %vsprintf_41_break
+       jmp32  %vsprintf_41_body4
+:vsprintf_41_clause4
+:vsprintf_41_body4
+                                       # *str = *p
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x8 !0x1
+       test___%eax,%eax
+       jmp32  %vsprintf_41_break
+:vsprintf_41_break
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+:vsprintf_7_break
+:vsprintf_4_continue
+       mov____0x8(%ebp),%eax !0x-4
+       movzbl_(%eax),%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       test___%al,%al
+       je32   %vsprintf_4_break
+       jmp32  %vsprintf_4_loop
+:vsprintf_4_break
+                                       # ap = 0
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x10
+       test___%eax,%eax
+                                       # *str = 0
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       test___%eax,%eax
+       push___0x8(%ebp) !0x8
+       call32 %strlen
+       add____$i8,%esp !0x4
+       leave
+       ret
+
+
+:sprintf
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # va_list ap; 
+                                       # ap = (char*)(&format + 1)
+       mov____%ebp,%eax
+       add____$i8,%eax !0xc
+       add____$i8,%eax !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # int r = vsprintf(str, format, ap); 
+       push___0x8(%ebp) !0x-4
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       call32 %vsprintf
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # ap = 0
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-8
+       leave
+       ret
+
+:g_environment
+!0x00 !0x00 !0x00 !0x00
+
+:g_stdin
+!0x00 !0x00 !0x00 !0x00
+
+:string__env_0
+"assert fail: "
+
+:string__env_1
+"
+"
+
+:ungetc_char
+!0x-1 !0x-1 !0x-1 !0x-1
+
+:ungetc_buf
+!0x00 !0x00
+
+:itoa_buf
+!0x00 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00
+
+:g_brk
+!0x00 !0x00 !0x00 !0x00
diff --git a/src/mes.M1 b/src/mes.M1
new file mode 100644 (file)
index 0000000..ad95109
--- /dev/null
@@ -0,0 +1,26483 @@
+
+
+:alloc
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_free + n < ARENA_SIZE? ...: ...
+       mov____0x32,%eax &g_free
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       add____%edx,%eax
+       push___%eax
+       mov____0x32,%eax &ARENA_SIZE
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setl___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jge32  %alloc_1_else
+       jmp32  %alloc_1_break
+:alloc_1_else
+       push___$i32 &string_isxdigit_130
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:alloc_1_break
+                                       # SCM x = g_free; 
+       mov____0x32,%eax &g_free
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # g_free += n
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &g_free
+       pop____%edx
+       add____%edx,%eax
+       mov____%eax,0x32 &g_free
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:tmp_num_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_cells[tmp_num].cdr = x
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &tmp_num
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       mov____0x32,%eax &tmp_num
+       leave
+       ret
+
+
+:tmp_num2_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_cells[tmp_num2].cdr = x
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &tmp_num2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       mov____0x32,%eax &tmp_num2
+       leave
+       ret
+
+
+:make_cell_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM x = alloc(1); 
+       mov____$i32,%eax %0x1
+       push___%eax
+       call32 %alloc
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # g_cells[type].type == TNUMBER? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %make_cell__6_else
+       jmp32  %make_cell__6_break
+:make_cell__6_else
+       push___$i32 &string_isxdigit_131
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:make_cell__6_break
+                                       # g_cells[x].type = g_cells[type].cdr
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x0
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+                                       # if (g_cells[type].cdr == TCHAR || g_cells[type].cdr == TNUMBER) ...else ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %make_cell__40_else_b_41
+       jmp32  %make_cell__40_else_skip_b_41
+:make_cell__40_else_b_41
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %make_cell__40_else
+:make_cell__40_else_skip_b_41
+                                       # if (car) ...
+       mov____0x8(%ebp),%eax !0xc
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %make_cell__66_break
+                                       # g_cells[x].car = g_cells[car].car
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       jmp32  %make_cell__66_break
+:make_cell__66_break
+                                       # if (cdr) ...
+       mov____0x8(%ebp),%eax !0x10
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %make_cell__90_break
+                                       # g_cells[x].cdr = g_cells[cdr].cdr
+       mov____0x8(%ebp),%eax !0x10
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       jmp32  %make_cell__90_break
+:make_cell__90_break
+       jmp32  %make_cell__40_break
+:make_cell__40_else
+                                       # if (g_cells[type].cdr == TFUNCTION) ...else ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x3
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %make_cell__116_else
+                                       # if (car) ...
+       mov____0x8(%ebp),%eax !0xc
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %make_cell__128_break
+                                       # g_cells[x].car = car
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       jmp32  %make_cell__128_break
+:make_cell__128_break
+                                       # if (cdr) ...
+       mov____0x8(%ebp),%eax !0x10
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %make_cell__148_break
+                                       # g_cells[x].cdr = g_cells[cdr].cdr
+       mov____0x8(%ebp),%eax !0x10
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       jmp32  %make_cell__148_break
+:make_cell__148_break
+       jmp32  %make_cell__116_break
+:make_cell__116_else
+                                       # g_cells[x].car = car
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+                                       # g_cells[x].cdr = cdr
+       mov____0x8(%ebp),%eax !0x10
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+:make_cell__116_break
+:make_cell__40_break
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:make_symbol_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_cells[tmp_num].cdr = TSYMBOL
+       mov____$i32,%eax %0xb
+       push___%eax
+       mov____0x32,%eax &tmp_num
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+                                       # SCM x = make_cell_(tmp_num, s, 0); 
+       mov____$i32,%eax %0x0
+       push___%eax
+       push___0x8(%ebp) !0x8
+       mov____0x32,%eax &tmp_num
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # g_symbols = cons(x, g_symbols)
+       mov____0x32,%eax &g_symbols
+       push___%eax
+       push___0x8(%ebp) !0x-4
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &g_symbols
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:list_of_char_equal_p
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # while (a != 1 && b != 1 && g_cells[g_cells[a].car].cdr == g_cells[g_cells[b].     car].cdr) ...
+       jmp32  %list_of_char_equal_p_1_continue
+:list_of_char_equal_p_1_loop
+                                       # g_cells[g_cells[a].car].type == TCHAR? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %list_of_char_equal_p_4_else
+       jmp32  %list_of_char_equal_p_4_break
+:list_of_char_equal_p_4_else
+       push___$i32 &string_isxdigit_132
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:list_of_char_equal_p_4_break
+                                       # g_cells[g_cells[b].car].type == TCHAR? ...: ...
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %list_of_char_equal_p_26_else
+       jmp32  %list_of_char_equal_p_26_break
+:list_of_char_equal_p_26_else
+       push___$i32 &string_isxdigit_133
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:list_of_char_equal_p_26_break
+                                       # a = g_cells[a].cdr
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+                                       # b = g_cells[b].cdr
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0xc
+       test___%eax,%eax
+:list_of_char_equal_p_1_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %list_of_char_equal_p_1_break
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %list_of_char_equal_p_1_break
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %list_of_char_equal_p_1_break
+       jmp32  %list_of_char_equal_p_1_loop
+:list_of_char_equal_p_1_break
+                                       # a == 1 && b == 1? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %list_of_char_equal_p_104_else
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %list_of_char_equal_p_104_else
+       mov____$i32,%eax %0x3
+       test___%eax,%eax
+       jmp32  %list_of_char_equal_p_104_break
+:list_of_char_equal_p_104_else
+       mov____$i32,%eax %0x2
+       test___%eax,%eax
+:list_of_char_equal_p_104_break
+       leave
+       ret
+
+
+:lookup_symbol_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM x = g_symbols; 
+       mov____0x32,%eax &g_symbols
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (x) ...
+       jmp32  %lookup_symbol__4_continue
+:lookup_symbol__4_loop
+                                       # if (list_of_char_equal_p(g_cells[g_cells[x].car].car, s) == 3) ...
+       push___0x8(%ebp) !0x8
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %list_of_char_equal_p
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x3
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %lookup_symbol__7_break
+       jmp32  %lookup_symbol__4_break
+       jmp32  %lookup_symbol__7_break
+:lookup_symbol__7_break
+                                       # x = g_cells[x].cdr
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+:lookup_symbol__4_continue
+       mov____0x8(%ebp),%eax !0x-4
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %lookup_symbol__4_break
+       jmp32  %lookup_symbol__4_loop
+:lookup_symbol__4_break
+                                       # if (x) ...
+       mov____0x8(%ebp),%eax !0x-4
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %lookup_symbol__45_break
+                                       # x = g_cells[x].car
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %lookup_symbol__45_break
+:lookup_symbol__45_break
+                                       # if (!x) ...
+       mov____0x8(%ebp),%eax !0x-4
+       test___%eax,%eax
+       sete___%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       je32   %lookup_symbol__61_break
+                                       # x = make_symbol_(s)
+       push___0x8(%ebp) !0x8
+       call32 %make_symbol_
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %lookup_symbol__61_break
+:lookup_symbol__61_break
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:type_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:car_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # 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)? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %car__1_else
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %car__1_else_b_13_b_13_b_13_b_13
+       jmp32  %car__1_else_b_13_b_13_b_13_skip_b_13
+:car__1_else_b_13_b_13_b_13_b_13
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x8
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %car__1_else_b_13_b_13_b_13
+:car__1_else_b_13_b_13_b_13_skip_b_13
+       jmp32  %car__1_else_b_13_b_13_skip_b_13
+:car__1_else_b_13_b_13_b_13
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x9
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %car__1_else_b_13_b_13
+:car__1_else_b_13_b_13_skip_b_13
+       jmp32  %car__1_else_b_13_skip_b_13
+:car__1_else_b_13_b_13
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xb
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %car__1_else_b_13
+:car__1_else_b_13_skip_b_13
+       jmp32  %car__1_else_skip_b_13
+:car__1_else_b_13
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xa
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %car__1_else
+:car__1_else_skip_b_13
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       test___%eax,%eax
+       jmp32  %car__1_break
+:car__1_else
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+:car__1_break
+       leave
+       ret
+
+
+:cdr_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # (((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? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %cdr__1_else_b_2_b_2_b_2_b_2
+       jmp32  %cdr__1_else_b_2_b_2_b_2_skip_b_2
+:cdr__1_else_b_2_b_2_b_2_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x8
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %cdr__1_else_b_2_b_2_b_2
+:cdr__1_else_b_2_b_2_b_2_skip_b_2
+       jmp32  %cdr__1_else_b_2_b_2_skip_b_2
+:cdr__1_else_b_2_b_2_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x9
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %cdr__1_else_b_2_b_2
+:cdr__1_else_b_2_b_2_skip_b_2
+       jmp32  %cdr__1_else_b_2_skip_b_2
+:cdr__1_else_b_2_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xb
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %cdr__1_else_b_2
+:cdr__1_else_b_2_skip_b_2
+       jmp32  %cdr__1_else_skip_b_2
+:cdr__1_else_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xa
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %cdr__1_else
+:cdr__1_else_skip_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       test___%eax,%eax
+       jmp32  %cdr__1_break
+:cdr__1_else
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+:cdr__1_break
+       leave
+       ret
+
+
+:arity_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_cells[x].type == TFUNCTION? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x3
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %arity__1_else
+       jmp32  %arity__1_break
+:arity__1_else
+       push___$i32 &string_isxdigit_134
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:arity__1_break
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:cons
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_cells[tmp_num].cdr = TPAIR
+       mov____$i32,%eax %0x7
+       push___%eax
+       mov____0x32,%eax &tmp_num
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       mov____0x32,%eax &tmp_num
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:car
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (g_cells[x].type != TPAIR) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %car_1_break
+                                       # error(29, cons(x, 37)); 
+       mov____$i32,%eax %0x25
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x1d
+       push___%eax
+       call32 %error
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+       jmp32  %car_1_break
+:car_1_break
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       leave
+       ret
+
+
+:cdr
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (g_cells[x].type != TPAIR) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %cdr_1_break
+                                       # error(29, cons(x, 38)); 
+       mov____$i32,%eax %0x26
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x1d
+       push___%eax
+       call32 %error
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+       jmp32  %cdr_1_break
+:cdr_1_break
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       leave
+       ret
+
+
+:list
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x8(%ebp),%eax !0x8
+       leave
+       ret
+
+
+:null_p
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # x == 1? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %null_p_1_else
+       mov____$i32,%eax %0x3
+       test___%eax,%eax
+       jmp32  %null_p_1_break
+:null_p_1_else
+       mov____$i32,%eax %0x2
+       test___%eax,%eax
+:null_p_1_break
+       leave
+       ret
+
+
+:eq_p
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # ((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)? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else_b_2_b_2_b_2
+       jmp32  %eq_p_1_else_b_2_b_2_skip_b_2
+:eq_p_1_else_b_2_b_2_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x4
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else_b_2_b_2
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x4
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else_b_2_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else_b_2_b_2
+:eq_p_1_else_b_2_b_2_skip_b_2
+       jmp32  %eq_p_1_else_b_2_skip_b_2
+:eq_p_1_else_b_2_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else_b_2
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else_b_2
+:eq_p_1_else_b_2_skip_b_2
+       jmp32  %eq_p_1_else_skip_b_2
+:eq_p_1_else_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eq_p_1_else
+:eq_p_1_else_skip_b_2
+       mov____$i32,%eax %0x3
+       test___%eax,%eax
+       jmp32  %eq_p_1_break
+:eq_p_1_else
+       mov____$i32,%eax %0x2
+       test___%eax,%eax
+:eq_p_1_break
+       leave
+       ret
+
+
+:values
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM v = cons(0, x); 
+       push___0x8(%ebp) !0x8
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # g_cells[v].type = TVALUES
+       mov____$i32,%eax %0xc
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x0
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:acons
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       push___0x8(%ebp) !0x10
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       leave
+       ret
+
+
+:length
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int n = 0; 
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (x != 1) ...
+       jmp32  %length_4_continue
+:length_4_loop
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-4
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       test___%eax,%eax
+                                       # if (g_cells[x].type != TPAIR) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %length_13_break
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+       jmp32  %length_13_break
+:length_13_break
+                                       # x = g_cells[x].cdr
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:length_4_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %length_4_break
+       jmp32  %length_4_loop
+:length_4_break
+       push___0x8(%ebp) !0x-4
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:error
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM throw; 
+                                       # if ((throw = assq_ref_env(28, r0)) != 6) ...
+                                       # throw = assq_ref_env(28, r0)
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____$i32,%eax %0x1c
+       push___%eax
+       call32 %assq_ref_env
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %error_2_break
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____$i32,%eax %0x1
+       push___%eax
+       push___0x8(%ebp) !0xc
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       push___0x8(%ebp) !0x-4
+       call32 %apply
+       add____$i8,%esp !0xc
+       leave
+       ret
+       jmp32  %error_2_break
+:error_2_break
+                                       # display_error_(key); 
+       push___0x8(%ebp) !0x8
+       call32 %display_error_
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs(": "); 
+       push___$i32 &string_isxdigit_135
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # display_error_(x); 
+       push___0x8(%ebp) !0xc
+       call32 %display_error_
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs("\n"); 
+       push___$i32 &string_isxdigit_136
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # exit(1); 
+       mov____$i32,%eax %0x1
+       push___%eax
+       call32 %exit
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       leave
+       ret
+
+
+:cstring_to_list
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM p = 1; 
+       mov____$i32,%eax %0x1
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # int i = strlen(s); 
+       push___0x8(%ebp) !0x8
+       call32 %strlen
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # while (i--) ...
+       jmp32  %cstring_to_list_8_continue
+:cstring_to_list_8_loop
+                                       # p = cons(make_cell_(tmp_num_(TCHAR), 0, tmp_num2_(s[i])), p)
+       push___0x8(%ebp) !0x-4
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       mov____0x8(%ebp),%edx !0x8
+       add____%edx,%eax
+       movzbl_(%eax),%eax
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+:cstring_to_list_8_continue
+       mov____0x8(%ebp),%eax !0x-8
+       push___%eax
+       mov____%ebp,%eax
+       add____$i8,%eax !0x-8
+       add____$i8,(%eax) !0x-1
+       pop____%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %cstring_to_list_8_break
+       jmp32  %cstring_to_list_8_loop
+:cstring_to_list_8_break
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:assert_defined
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (e == 6) ...
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %assert_defined_1_break
+       push___0x8(%ebp) !0x8
+       mov____$i32,%eax %0x21
+       push___%eax
+       call32 %error
+       add____$i8,%esp !0x8
+       leave
+       ret
+       jmp32  %assert_defined_1_break
+:assert_defined_1_break
+       mov____0x8(%ebp),%eax !0xc
+       leave
+       ret
+
+
+:check_formals
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int flen = g_cells[formals].type == TNUMBER? g_cells[formals].cdr: g_cells[     length(formals)].cdr; 
+                                       # g_cells[formals].type == TNUMBER? ...: ...
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_formals_2_else
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       test___%eax,%eax
+       jmp32  %check_formals_2_break
+:check_formals_2_else
+       push___0x8(%ebp) !0xc
+       call32 %length
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       test___%eax,%eax
+:check_formals_2_break
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # int alen = g_cells[length(args)].cdr; 
+       push___0x8(%ebp) !0x10
+       call32 %length
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # if (alen != flen && alen != -1 && flen != -1) ...
+       mov____0x8(%ebp),%eax !0x-8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %check_formals_39_break
+       mov____0x8(%ebp),%eax !0x-8
+       push___%eax
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %check_formals_39_break
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %check_formals_39_break
+                                       # char *s = "apply: wrong number of arguments; expected: "; 
+       mov____$i32,%eax &string_isxdigit_137
+       mov____%eax,0x8(%ebp) !0x-c
+                                       # eputs(s); 
+       push___0x8(%ebp) !0x-c
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs(itoa(flen)); 
+       push___0x8(%ebp) !0x-4
+       call32 %itoa
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs(", got: "); 
+       push___$i32 &string_isxdigit_138
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs(itoa(alen)); 
+       push___0x8(%ebp) !0x-8
+       call32 %itoa
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs("\n"); 
+       push___$i32 &string_isxdigit_136
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # display_error_(f); 
+       push___0x8(%ebp) !0x8
+       call32 %display_error_
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # SCM e = make_cell_(tmp_num_(TSTRING), cstring_to_list(s), 0); 
+       mov____$i32,%eax %0x0
+       push___%eax
+       push___0x8(%ebp) !0x-c
+       call32 %cstring_to_list
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0xa
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-10
+       push___0x8(%ebp) !0x8
+       push___0x8(%ebp) !0x-10
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x1f
+       push___%eax
+       call32 %error
+       add____$i8,%esp !0x8
+       leave
+       ret
+       jmp32  %check_formals_39_break
+:check_formals_39_break
+       mov____$i32,%eax %0x7
+       leave
+       ret
+
+
+:check_apply
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *type = 0; 
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # if (f == 2 || f == 3) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_apply_4_break_b_5
+       jmp32  %check_apply_4_break_skip_b_5
+:check_apply_4_break_b_5
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x3
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_apply_4_break
+:check_apply_4_break_skip_b_5
+                                       # type = "bool"
+       mov____$i32,%eax &string_isxdigit_139
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %check_apply_4_break
+:check_apply_4_break
+                                       # if (f == 1) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_apply_28_break
+                                       # type = "nil"
+       mov____$i32,%eax &string_isxdigit_140
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %check_apply_28_break
+:check_apply_28_break
+                                       # if (f == 7) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_apply_42_break
+                                       # type = "*unspecified*"
+       mov____$i32,%eax &string_isxdigit_6
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %check_apply_42_break
+:check_apply_42_break
+                                       # if (f == 6) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_apply_56_break
+                                       # type = "*undefined*"
+       mov____$i32,%eax &string_isxdigit_5
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %check_apply_56_break
+:check_apply_56_break
+                                       # if (g_cells[f].type == TCHAR) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_apply_70_break
+                                       # type = "char"
+       mov____$i32,%eax &string_isxdigit_141
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %check_apply_70_break
+:check_apply_70_break
+                                       # if (g_cells[f].type == TNUMBER) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_apply_88_break
+                                       # type = "number"
+       mov____$i32,%eax &string_isxdigit_142
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %check_apply_88_break
+:check_apply_88_break
+                                       # if (g_cells[f].type == TSTRING) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xa
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %check_apply_106_break
+                                       # type = "string"
+       mov____$i32,%eax &string_isxdigit_143
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+       jmp32  %check_apply_106_break
+:check_apply_106_break
+                                       # if (type) ...
+       mov____0x8(%ebp),%eax !0x-4
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %check_apply_124_break
+                                       # char *s = "cannot apply: "; 
+       mov____$i32,%eax &string_isxdigit_144
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # eputs(s); 
+       push___0x8(%ebp) !0x-8
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs(type); 
+       push___0x8(%ebp) !0x-4
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs("["); 
+       push___$i32 &string_isxdigit_145
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # display_error_(e); 
+       push___0x8(%ebp) !0xc
+       call32 %display_error_
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # eputs("]\n"); 
+       push___$i32 &string_isxdigit_146
+       call32 %eputs
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+                                       # SCM e = make_cell_(tmp_num_(TSTRING), cstring_to_list(s), 0); 
+       mov____$i32,%eax %0x0
+       push___%eax
+       push___0x8(%ebp) !0x-8
+       call32 %cstring_to_list
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0xa
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-c
+       push___0x8(%ebp) !0x8
+       push___0x8(%ebp) !0x-c
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x20
+       push___%eax
+       call32 %error
+       add____$i8,%esp !0x8
+       leave
+       ret
+       jmp32  %check_apply_124_break
+:check_apply_124_break
+       mov____$i32,%eax %0x7
+       leave
+       ret
+
+
+:gc_push_frame
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM frame = cons(r1, cons(r2, cons(r3, cons(r0, 1)))); 
+       mov____$i32,%eax %0x1
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____0x32,%eax &r3
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____0x32,%eax &r2
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # g_stack = cons(frame, g_stack)
+       mov____0x32,%eax &g_stack
+       push___%eax
+       push___0x8(%ebp) !0x-4
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &g_stack
+       test___%eax,%eax
+       mov____0x32,%eax &g_stack
+       leave
+       ret
+
+
+:append2
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (x == 1) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %append2_1_break
+       mov____0x8(%ebp),%eax !0xc
+       leave
+       ret
+       jmp32  %append2_1_break
+:append2_1_break
+                                       # g_cells[x].type == TPAIR? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %append2_13_else
+       jmp32  %append2_13_break
+:append2_13_else
+       push___$i32 &string_isxdigit_147
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:append2_13_break
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %append2
+       add____$i8,%esp !0x8
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       leave
+       ret
+
+
+:pairlis
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (x == 1) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %pairlis_1_break
+       mov____0x8(%ebp),%eax !0x10
+       leave
+       ret
+       jmp32  %pairlis_1_break
+:pairlis_1_break
+                                       # if (g_cells[x].type != TPAIR) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %pairlis_13_break
+       push___0x8(%ebp) !0x10
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       leave
+       ret
+       jmp32  %pairlis_13_break
+:pairlis_13_break
+       push___0x8(%ebp) !0x10
+       push___0x8(%ebp) !0xc
+       call32 %cdr
+       add____$i8,%esp !0x4
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %pairlis
+       add____$i8,%esp !0xc
+       push___%eax
+       push___0x8(%ebp) !0xc
+       call32 %car
+       add____$i8,%esp !0x4
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       leave
+       ret
+
+
+:call
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # 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) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setg___%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       jle32  %call_1_break_b_2
+       jmp32  %call_1_break_skip_b_2
+:call_1_break_b_2
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %call_1_break
+:call_1_break_skip_b_2
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %call_1_break
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xc
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %call_1_break
+                                       # x = cons(g_cells[g_cells[g_cells[x].car].cdr].car, g_cells[x].cdr)
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0xc
+       test___%eax,%eax
+       jmp32  %call_1_break
+:call_1_break
+                                       # 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) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setg___%al
+       movzbl_%al,%eax
+       test___%eax,%eax
+                                       # jmp test LABEL
+       jle32  %call_87_break_b_88
+       jmp32  %call_87_break_skip_b_88
+:call_87_break_b_88
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %call_87_break
+:call_87_break_skip_b_88
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %call_87_break
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %call_87_break
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xc
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %call_87_break
+                                       # x = cons(g_cells[x].car, cons(g_cells[g_cells[g_cells[g_cells[x].cdr].car].cdr]     .car, g_cells[x].cdr))
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0xc
+       test___%eax,%eax
+       jmp32  %call_87_break
+:call_87_break
+                                       # switch (g_functions[g_cells[fn].cdr].arity) {   ...} 
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+:call_204_clause0
+       cmp____$i8,%eax !0x0
+       je32   %call_204_body0
+       jmp32  %call_204_clause1
+:call_204_body0
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       pop____%eax
+       call___*%eax
+       add____$i8,%esp !0x0
+       leave
+       ret
+       jmp32  %call_204_body1
+:call_204_clause1
+       cmp____$i8,%eax !0x1
+       je32   %call_204_body1
+       jmp32  %call_204_clause2
+:call_204_body1
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       pop____%eax
+       call___*%eax
+       add____$i8,%esp !0x4
+       leave
+       ret
+       jmp32  %call_204_body2
+:call_204_clause2
+       cmp____$i8,%eax !0x2
+       je32   %call_204_body2
+       jmp32  %call_204_clause3
+:call_204_body2
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       pop____%eax
+       call___*%eax
+       add____$i8,%esp !0x8
+       leave
+       ret
+       jmp32  %call_204_body3
+:call_204_clause3
+       cmp____$i8,%eax !0x3
+       je32   %call_204_body3
+       jmp32  %call_204_clause4
+:call_204_body3
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       pop____%eax
+       call___*%eax
+       add____$i8,%esp !0xc
+       leave
+       ret
+       jmp32  %call_204_body4
+:call_204_clause4
+       cmp____$i8,%eax !0x-1
+       je32   %call_204_body4
+       jmp32  %call_204_clause5
+:call_204_body4
+       push___0x8(%ebp) !0xc
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       pop____%eax
+       call___*%eax
+       add____$i8,%esp !0x4
+       leave
+       ret
+       jmp32  %call_204_body5
+:call_204_clause5
+:call_204_body5
+       push___0x8(%ebp) !0xc
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       pop____%eax
+       call___*%eax
+       add____$i8,%esp !0x4
+       leave
+       ret
+:call_204_break
+       mov____$i32,%eax %0x7
+       leave
+       ret
+
+
+:assq
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # while (a != 1 && eq_p(x, g_cells[g_cells[a].car].car) == 2) ...
+       jmp32  %assq_1_continue
+:assq_1_loop
+                                       # a = g_cells[a].cdr
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0xc
+       test___%eax,%eax
+:assq_1_continue
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %assq_1_break
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %eq_p
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %assq_1_break
+       jmp32  %assq_1_loop
+:assq_1_break
+                                       # a != 1? ...: ...
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %assq_40_else
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       test___%eax,%eax
+       jmp32  %assq_40_break
+:assq_40_else
+       mov____$i32,%eax %0x2
+       test___%eax,%eax
+:assq_40_break
+       leave
+       ret
+
+
+:assq_ref_env
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # x = assq(x, a)
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       call32 %assq
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+                                       # if (x == 2) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %assq_ref_env_7_break
+       mov____$i32,%eax %0x6
+       leave
+       ret
+       jmp32  %assq_ref_env_7_break
+:assq_ref_env_7_break
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       leave
+       ret
+
+
+:set_car_x
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_cells[x].type == TPAIR? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %set_car_x_1_else
+       jmp32  %set_car_x_1_break
+:set_car_x_1_else
+       push___$i32 &string_isxdigit_147
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:set_car_x_1_break
+                                       # g_cells[x].car = e
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       mov____$i32,%eax %0x7
+       leave
+       ret
+
+
+:set_cdr_x
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (g_cells[x].type != TPAIR) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %set_cdr_x_1_break
+                                       # error(29, cons(x, cell_set_cdr_x)); 
+       mov____0x32,%eax &cell_set_cdr_x
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x1d
+       push___%eax
+       call32 %error
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+       jmp32  %set_cdr_x_1_break
+:set_cdr_x_1_break
+                                       # g_cells[x].cdr = e
+       mov____0x8(%ebp),%eax !0xc
+       push___%eax
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       mov____$i32,%eax %0x7
+       leave
+       ret
+
+
+:set_env_x
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM p = assert_defined(x, assq(x, a)); 
+       push___0x8(%ebp) !0x10
+       push___0x8(%ebp) !0x8
+       call32 %assq
+       add____$i8,%esp !0x8
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %assert_defined
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # if (g_cells[p].type != TPAIR) ...
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %set_env_x_9_break
+                                       # error(29, cons(p, x)); 
+       push___0x8(%ebp) !0x8
+       push___0x8(%ebp) !0x-4
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x1d
+       push___%eax
+       call32 %error
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+       jmp32  %set_env_x_9_break
+:set_env_x_9_break
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x-4
+       call32 %set_cdr_x
+       add____$i8,%esp !0x8
+       leave
+       ret
+
+
+:call_lambda
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM cl = cons(cons(8, x), x); 
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0xc
+       mov____$i32,%eax %0x8
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # r1 = e
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+                                       # r0 = cl
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,0x32 &r0
+       test___%eax,%eax
+       mov____$i32,%eax %0x7
+       leave
+       ret
+
+
+:make_closure_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       push___0x8(%ebp) !0x10
+       mov____$i32,%eax %0x9
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x2
+       push___%eax
+       mov____$i32,%eax %0x1
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:lookup_macro_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (g_cells[x].type != TSYMBOL) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xb
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %lookup_macro__1_break
+       mov____$i32,%eax %0x2
+       leave
+       ret
+       jmp32  %lookup_macro__1_break
+:lookup_macro__1_break
+                                       # SCM m = assq_ref_env(x, a); 
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       call32 %assq_ref_env
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # if (g_cells[m].type == TMACRO) ...
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x5
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %lookup_macro__22_break
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       leave
+       ret
+       jmp32  %lookup_macro__22_break
+:lookup_macro__22_break
+       mov____$i32,%eax %0x2
+       leave
+       ret
+
+
+:push_cc
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM x = r3; 
+       mov____0x32,%eax &r3
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # r3 = c
+       mov____0x8(%ebp),%eax !0x14
+       mov____%eax,0x32 &r3
+       test___%eax,%eax
+                                       # r2 = p2
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,0x32 &r2
+       test___%eax,%eax
+                                       # gc_push_frame(); 
+       call32 %gc_push_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # r1 = p1
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+                                       # r0 = a
+       mov____0x8(%ebp),%eax !0x10
+       mov____%eax,0x32 &r0
+       test___%eax,%eax
+                                       # r3 = x
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,0x32 &r3
+       test___%eax,%eax
+       mov____$i32,%eax %0x7
+       leave
+       ret
+
+
+:gc_peek_frame
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM frame = g_cells[g_stack].car; 
+       mov____0x32,%eax &g_stack
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # r1 = g_cells[frame].car
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+                                       # r2 = g_cells[g_cells[frame].cdr].car
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r2
+       test___%eax,%eax
+                                       # r3 = g_cells[g_cells[g_cells[frame].cdr].cdr].car
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r3
+       test___%eax,%eax
+                                       # r0 = g_cells[g_cells[g_cells[g_cells[frame].cdr].cdr].cdr].car
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r0
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:gc_pop_frame
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM frame = gc_peek_frame(g_stack); 
+       mov____0x32,%eax &g_stack
+       push___%eax
+       call32 %gc_peek_frame
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # g_stack = g_cells[g_stack].cdr
+       mov____0x32,%eax &g_stack
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x32 &g_stack
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:eval_apply
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+:eval_apply_label_eval_apply
+                                       # gc_check(); 
+       call32 %gc_check
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # switch (r3) {   ...} 
+       mov____0x32,%eax &r3
+:eval_apply_5_clause0
+       cmp____$i8,%eax !0x2a
+       je32   %eval_apply_5_body0
+       jmp32  %eval_apply_5_clause1
+:eval_apply_5_body0
+       jmp32  %eval_apply_label_evlis
+       jmp32  %eval_apply_5_body1
+:eval_apply_5_clause1
+       cmp____$i8,%eax !0x2b
+       je32   %eval_apply_5_body1
+       jmp32  %eval_apply_5_clause2
+:eval_apply_5_body1
+       jmp32  %eval_apply_label_evlis2
+       jmp32  %eval_apply_5_body2
+:eval_apply_5_clause2
+       cmp____$i8,%eax !0x2c
+       je32   %eval_apply_5_body2
+       jmp32  %eval_apply_5_clause3
+:eval_apply_5_body2
+       jmp32  %eval_apply_label_evlis3
+       jmp32  %eval_apply_5_body3
+:eval_apply_5_clause3
+       cmp____$i8,%eax !0x2d
+       je32   %eval_apply_5_body3
+       jmp32  %eval_apply_5_clause4
+:eval_apply_5_body3
+       jmp32  %eval_apply_label_apply
+       jmp32  %eval_apply_5_body4
+:eval_apply_5_clause4
+       cmp____$i8,%eax !0x2e
+       je32   %eval_apply_5_body4
+       jmp32  %eval_apply_5_clause5
+:eval_apply_5_body4
+       jmp32  %eval_apply_label_apply2
+       jmp32  %eval_apply_5_body5
+:eval_apply_5_clause5
+       cmp____$i8,%eax !0x2f
+       je32   %eval_apply_5_body5
+       jmp32  %eval_apply_5_clause6
+:eval_apply_5_body5
+       jmp32  %eval_apply_label_eval
+       jmp32  %eval_apply_5_body6
+:eval_apply_5_clause6
+       cmp____$i8,%eax !0x30
+       je32   %eval_apply_5_body6
+       jmp32  %eval_apply_5_clause7
+:eval_apply_5_body6
+       jmp32  %eval_apply_label_eval_car
+       jmp32  %eval_apply_5_body7
+:eval_apply_5_clause7
+       cmp____$i8,%eax !0x31
+       je32   %eval_apply_5_body7
+       jmp32  %eval_apply_5_clause8
+:eval_apply_5_body7
+       jmp32  %eval_apply_label_eval_cdr
+       jmp32  %eval_apply_5_body8
+:eval_apply_5_clause8
+       cmp____$i8,%eax !0x32
+       je32   %eval_apply_5_body8
+       jmp32  %eval_apply_5_clause9
+:eval_apply_5_body8
+       jmp32  %eval_apply_label_eval_cons
+       jmp32  %eval_apply_5_body9
+:eval_apply_5_clause9
+       cmp____$i8,%eax !0x33
+       je32   %eval_apply_5_body9
+       jmp32  %eval_apply_5_clause10
+:eval_apply_5_body9
+       jmp32  %eval_apply_label_eval_null_p
+       jmp32  %eval_apply_5_body10
+:eval_apply_5_clause10
+       cmp____$i8,%eax !0x34
+       je32   %eval_apply_5_body10
+       jmp32  %eval_apply_5_clause11
+:eval_apply_5_body10
+       jmp32  %eval_apply_label_eval_set_x
+       jmp32  %eval_apply_5_body11
+:eval_apply_5_clause11
+       cmp____$i8,%eax !0x35
+       je32   %eval_apply_5_body11
+       jmp32  %eval_apply_5_clause12
+:eval_apply_5_body11
+       jmp32  %eval_apply_label_eval_macro
+       jmp32  %eval_apply_5_body12
+:eval_apply_5_clause12
+       cmp____$i8,%eax !0x36
+       je32   %eval_apply_5_body12
+       jmp32  %eval_apply_5_clause13
+:eval_apply_5_body12
+       jmp32  %eval_apply_label_eval_check_func
+       jmp32  %eval_apply_5_body13
+:eval_apply_5_clause13
+       cmp____$i8,%eax !0x37
+       je32   %eval_apply_5_body13
+       jmp32  %eval_apply_5_clause14
+:eval_apply_5_body13
+       jmp32  %eval_apply_label_eval2
+       jmp32  %eval_apply_5_body14
+:eval_apply_5_clause14
+       cmp____$i8,%eax !0x38
+       je32   %eval_apply_5_body14
+       jmp32  %eval_apply_5_clause15
+:eval_apply_5_body14
+       jmp32  %eval_apply_label_macro_expand
+       jmp32  %eval_apply_5_body15
+:eval_apply_5_clause15
+       cmp____$i8,%eax !0x39
+       je32   %eval_apply_5_body15
+       jmp32  %eval_apply_5_clause16
+:eval_apply_5_body15
+       jmp32  %eval_apply_label_begin
+       jmp32  %eval_apply_5_body16
+:eval_apply_5_clause16
+       cmp____$i8,%eax !0x3a
+       je32   %eval_apply_5_body16
+       jmp32  %eval_apply_5_clause17
+:eval_apply_5_body16
+       jmp32  %eval_apply_label_begin_read_input_file
+       jmp32  %eval_apply_5_body17
+:eval_apply_5_clause17
+       cmp____$i8,%eax !0x3b
+       je32   %eval_apply_5_body17
+       jmp32  %eval_apply_5_clause18
+:eval_apply_5_body17
+       jmp32  %eval_apply_label_begin2
+       jmp32  %eval_apply_5_body18
+:eval_apply_5_clause18
+       cmp____$i8,%eax !0x3c
+       je32   %eval_apply_5_body18
+       jmp32  %eval_apply_5_clause19
+:eval_apply_5_body18
+       jmp32  %eval_apply_label_vm_if
+       jmp32  %eval_apply_5_body19
+:eval_apply_5_clause19
+       cmp____$i8,%eax !0x3d
+       je32   %eval_apply_5_body19
+       jmp32  %eval_apply_5_clause20
+:eval_apply_5_body19
+       jmp32  %eval_apply_label_if_expr
+       jmp32  %eval_apply_5_body20
+:eval_apply_5_clause20
+       cmp____$i8,%eax !0x3f
+       je32   %eval_apply_5_body20
+       jmp32  %eval_apply_5_clause21
+:eval_apply_5_body20
+       jmp32  %eval_apply_label_call_with_current_continuation2
+       jmp32  %eval_apply_5_body21
+:eval_apply_5_clause21
+       cmp____$i8,%eax !0x3e
+       je32   %eval_apply_5_body21
+       jmp32  %eval_apply_5_clause22
+:eval_apply_5_body21
+       jmp32  %eval_apply_label_call_with_values2
+       jmp32  %eval_apply_5_body22
+:eval_apply_5_clause22
+       cmp____$i8,%eax !0x40
+       je32   %eval_apply_5_body22
+       jmp32  %eval_apply_5_clause23
+:eval_apply_5_body22
+       jmp32  %eval_apply_label_vm_return
+       jmp32  %eval_apply_5_body23
+:eval_apply_5_clause23
+       cmp____$i8,%eax !0x7
+       je32   %eval_apply_5_body23
+       jmp32  %eval_apply_5_clause24
+:eval_apply_5_body23
+       mov____0x32,%eax &r1
+       leave
+       ret
+       jmp32  %eval_apply_5_body24
+:eval_apply_5_clause24
+:eval_apply_5_body24
+                                       # 0? ...: ...
+       mov____$i32,%eax %0x0
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %eval_apply_178_else
+       jmp32  %eval_apply_178_break
+:eval_apply_178_else
+       push___$i32 &string_isxdigit_148
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:eval_apply_178_break
+:eval_apply_5_break
+                                       # SCM x = 1; 
+       mov____$i32,%eax %0x1
+       mov____%eax,0x8(%ebp) !0x-4
+:eval_apply_label_evlis
+                                       # gc_check(); 
+       call32 %gc_check
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # if (r1 == 1) ...
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_198_break
+       jmp32  %eval_apply_label_vm_return
+       jmp32  %eval_apply_198_break
+:eval_apply_198_break
+                                       # if (g_cells[r1].type != TPAIR) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_209_break
+       jmp32  %eval_apply_label_eval
+       jmp32  %eval_apply_209_break
+:eval_apply_209_break
+                                       # push_cc(g_cells[r1].car, r1, r0, 43); 
+       mov____$i32,%eax %0x2b
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_evlis2
+                                       # push_cc(g_cells[r2].cdr, r1, r0, 44); 
+       mov____$i32,%eax %0x2c
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_evlis
+:eval_apply_label_evlis3
+                                       # r1 = cons(r2, r1)
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r2
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+:eval_apply_label_apply
+                                       # gc_check(); 
+       call32 %gc_check
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # switch (g_cells[g_cells[r1].car].type) {   ...} 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+:eval_apply_265_clause0
+       cmp____$i8,%eax !0x3
+       je32   %eval_apply_265_body0
+       jmp32  %eval_apply_265_clause1
+:eval_apply_265_body0
+                                       # check_formals(g_cells[r1].car, make_cell_(tmp_num_(TNUMBER), 0, tmp_num2_(     g_functions[g_cells[g_cells[r1].car].cdr].arity)), g_cells[r1].cdr); 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____$i32,%edx &g_functions
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %check_formals
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+                                       # r1 = call(g_cells[r1].car, g_cells[r1].cdr)
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %call
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+       jmp32  %eval_apply_265_body1
+:eval_apply_265_clause1
+       cmp____$i8,%eax !0x1
+       je32   %eval_apply_265_body1
+       jmp32  %eval_apply_265_clause2
+:eval_apply_265_body1
+                                       # SCM cl = g_cells[g_cells[r1].car].cdr; 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # SCM formals = g_cells[g_cells[cl].cdr].car; 
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x8(%ebp) !0x-c
+                                       # SCM body = g_cells[g_cells[cl].cdr].cdr; 
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-10
+                                       # SCM aa = g_cells[g_cells[cl].car].cdr; 
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-14
+                                       # aa = g_cells[aa].cdr
+       mov____0x8(%ebp),%eax !0x-14
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-14
+       test___%eax,%eax
+                                       # check_formals(g_cells[r1].car, formals, g_cells[r1].cdr); 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       push___0x8(%ebp) !0x-c
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %check_formals
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+                                       # SCM p = pairlis(formals, g_cells[r1].cdr, aa); 
+       push___0x8(%ebp) !0x-14
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       push___0x8(%ebp) !0x-c
+       call32 %pairlis
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-18
+                                       # call_lambda(body, p, aa, r0); 
+       mov____0x32,%eax &r0
+       push___%eax
+       push___0x8(%ebp) !0x-14
+       push___0x8(%ebp) !0x-18
+       push___0x8(%ebp) !0x-10
+       call32 %call_lambda
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_begin
+       jmp32  %eval_apply_265_body2
+:eval_apply_265_clause2
+       cmp____$i8,%eax !0x2
+       je32   %eval_apply_265_body2
+       jmp32  %eval_apply_265_clause3
+:eval_apply_265_body2
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # g_stack = g_cells[g_cells[r1].car].cdr
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x32 &g_stack
+       test___%eax,%eax
+                                       # gc_pop_frame(); 
+       call32 %gc_pop_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # r1 = g_cells[g_cells[x].cdr].car
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval_apply
+       jmp32  %eval_apply_265_body3
+:eval_apply_265_clause3
+       cmp____$i8,%eax !0x9
+       je32   %eval_apply_265_body3
+       jmp32  %eval_apply_265_clause4
+:eval_apply_265_body3
+                                       # switch (g_cells[r1].car) {   ...} 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+:eval_apply_472_clause0
+       cmp____$i8,%eax !0x2d
+       je32   %eval_apply_472_body0
+       jmp32  %eval_apply_472_clause1
+:eval_apply_472_body0
+                                       # push_cc(cons(g_cells[g_cells[r1].cdr].car, g_cells[g_cells[g_cells[r1].cdr].cdr     ].car), r1, r0, 64); 
+       mov____$i32,%eax %0x40
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+       jmp32  %eval_apply_472_body1
+:eval_apply_472_clause1
+       cmp____$i8,%eax !0x2f
+       je32   %eval_apply_472_body1
+       jmp32  %eval_apply_472_clause2
+:eval_apply_472_body1
+                                       # push_cc(g_cells[g_cells[r1].cdr].car, r1, g_cells[g_cells[g_cells[r1].cdr].cdr]     .car, 64); 
+       mov____$i32,%eax %0x40
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+       jmp32  %eval_apply_472_body2
+:eval_apply_472_clause2
+       cmp____$i8,%eax !0x15
+       je32   %eval_apply_472_body2
+       jmp32  %eval_apply_472_clause3
+:eval_apply_472_body2
+                                       # r1 = g_cells[r1].cdr
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_call_with_current_continuation
+       jmp32  %eval_apply_472_body3
+:eval_apply_472_clause3
+:eval_apply_472_body3
+                                       # check_apply(2, g_cells[r1].car); 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____$i32,%eax %0x2
+       push___%eax
+       call32 %check_apply
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+:eval_apply_472_break
+       jmp32  %eval_apply_265_body4
+:eval_apply_265_clause4
+       cmp____$i8,%eax !0xb
+       je32   %eval_apply_265_body4
+       jmp32  %eval_apply_265_clause5
+:eval_apply_265_body4
+                                       # if (g_cells[r1].car == 20) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____$i32,%eax %0x14
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_590_break
+                                       # r1 = g_cells[r1].cdr
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_call_with_values
+       jmp32  %eval_apply_590_break
+:eval_apply_590_break
+                                       # if (g_cells[r1].car == 23) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____$i32,%eax %0x17
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_613_break
+                                       # r1 = r0
+       mov____0x32,%eax &r0
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+       jmp32  %eval_apply_613_break
+:eval_apply_613_break
+       jmp32  %eval_apply_265_break
+       jmp32  %eval_apply_265_body5
+:eval_apply_265_clause5
+       cmp____$i8,%eax !0x7
+       je32   %eval_apply_265_body5
+       jmp32  %eval_apply_265_break
+:eval_apply_265_body5
+                                       # switch (g_cells[g_cells[r1].car].car) {   ...} 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+:eval_apply_639_clause0
+       cmp____$i8,%eax !0xc
+       je32   %eval_apply_639_body0
+       jmp32  %eval_apply_639_break
+:eval_apply_639_body0
+                                       # SCM formals = g_cells[g_cells[g_cells[r1].car].cdr].car; 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x8(%ebp) !0x-1c
+                                       # SCM body = g_cells[g_cells[g_cells[r1].car].cdr].cdr; 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-20
+                                       # SCM p = pairlis(formals, g_cells[r1].cdr, r0); 
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       push___0x8(%ebp) !0x-1c
+       call32 %pairlis
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-24
+                                       # check_formals(r1, formals, g_cells[r1].cdr); 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       push___0x8(%ebp) !0x-1c
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %check_formals
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+                                       # call_lambda(body, p, p, r0); 
+       mov____0x32,%eax &r0
+       push___%eax
+       push___0x8(%ebp) !0x-24
+       push___0x8(%ebp) !0x-24
+       push___0x8(%ebp) !0x-20
+       call32 %call_lambda
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_begin
+:eval_apply_639_break
+:eval_apply_265_break
+                                       # push_cc(g_cells[r1].car, r1, r0, 46); 
+       mov____$i32,%eax %0x2e
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_apply2
+                                       # check_apply(r1, g_cells[r2].car); 
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %check_apply
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+                                       # r1 = cons(r1, g_cells[r2].cdr)
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+:eval_apply_label_eval
+                                       # gc_check(); 
+       call32 %gc_check
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # switch (g_cells[r1].type) {   ...} 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+:eval_apply_757_clause0
+       cmp____$i8,%eax !0x7
+       je32   %eval_apply_757_body0
+       jmp32  %eval_apply_757_clause1
+:eval_apply_757_body0
+                                       # switch (g_cells[r1].car) {   ...} 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+:eval_apply_768_clause0
+       cmp____$i8,%eax !0x25
+       je32   %eval_apply_768_body0
+       jmp32  %eval_apply_768_clause1
+:eval_apply_768_body0
+                                       # push_cc(g_cells[g_cells[r1].cdr].car, r1, r0, 48); 
+       mov____$i32,%eax %0x30
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_eval_car
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # gc_pop_frame(); 
+       call32 %gc_pop_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # r1 = g_cells[x].car
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval_apply
+       jmp32  %eval_apply_768_body1
+:eval_apply_768_clause1
+       cmp____$i8,%eax !0x26
+       je32   %eval_apply_768_body1
+       jmp32  %eval_apply_768_clause2
+:eval_apply_768_body1
+                                       # push_cc(g_cells[g_cells[r1].cdr].car, r1, r0, 49); 
+       mov____$i32,%eax %0x31
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_eval_cdr
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # gc_pop_frame(); 
+       call32 %gc_pop_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # r1 = g_cells[x].cdr
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval_apply
+       jmp32  %eval_apply_768_body2
+:eval_apply_768_clause2
+       cmp____$i8,%eax !0x29
+       je32   %eval_apply_768_body2
+       jmp32  %eval_apply_768_clause3
+:eval_apply_768_body2
+                                       # push_cc(g_cells[r1].cdr, r1, r0, 50); 
+       mov____$i32,%eax %0x32
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_evlis
+:eval_apply_label_eval_cons
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # gc_pop_frame(); 
+       call32 %gc_pop_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # r1 = cons(g_cells[x].car, g_cells[g_cells[x].cdr].car)
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval_apply
+       jmp32  %eval_apply_768_body3
+:eval_apply_768_clause3
+       cmp____$i8,%eax !0x27
+       je32   %eval_apply_768_body3
+       jmp32  %eval_apply_768_clause4
+:eval_apply_768_body3
+                                       # push_cc(g_cells[g_cells[r1].cdr].car, r1, r0, 51); 
+       mov____$i32,%eax %0x33
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_eval_null_p
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # gc_pop_frame(); 
+       call32 %gc_pop_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # r1 = null_p(x)
+       push___0x8(%ebp) !0x-4
+       call32 %null_p
+       add____$i8,%esp !0x4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval_apply
+       jmp32  %eval_apply_768_body4
+:eval_apply_768_clause4
+       cmp____$i8,%eax !0xf
+       je32   %eval_apply_768_body4
+       jmp32  %eval_apply_768_clause5
+:eval_apply_768_body4
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # gc_pop_frame(); 
+       call32 %gc_pop_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # r1 = g_cells[g_cells[x].cdr].car
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval_apply
+       jmp32  %eval_apply_768_body5
+:eval_apply_768_clause5
+       cmp____$i8,%eax !0xd
+       je32   %eval_apply_768_body5
+       jmp32  %eval_apply_768_clause6
+:eval_apply_768_body5
+       jmp32  %eval_apply_label_begin
+       jmp32  %eval_apply_768_body6
+:eval_apply_768_clause6
+       cmp____$i8,%eax !0xc
+       je32   %eval_apply_768_body6
+       jmp32  %eval_apply_768_clause7
+:eval_apply_768_body6
+                                       # r1 = make_closure_(g_cells[g_cells[r1].cdr].car, g_cells[g_cells[r1].cdr].cdr,      assq(8, r0))
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____$i32,%eax %0x8
+       push___%eax
+       call32 %assq
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %make_closure_
+       add____$i8,%esp !0xc
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+       jmp32  %eval_apply_768_body7
+:eval_apply_768_clause7
+       cmp____$i8,%eax !0xe
+       je32   %eval_apply_768_body7
+       jmp32  %eval_apply_768_clause8
+:eval_apply_768_body7
+                                       # r1 = g_cells[r1].cdr
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_if
+       jmp32  %eval_apply_768_body8
+:eval_apply_768_clause8
+       cmp____$i8,%eax !0x10
+       je32   %eval_apply_768_body8
+       jmp32  %eval_apply_768_clause9
+:eval_apply_768_body8
+                                       # push_cc(g_cells[g_cells[g_cells[r1].cdr].cdr].car, r1, r0, 52); 
+       mov____$i32,%eax %0x34
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_eval_set_x
+                                       # x = r2
+       mov____0x32,%eax &r2
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # r1 = set_env_x(g_cells[g_cells[x].cdr].car, r1, r0)
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %set_env_x
+       add____$i8,%esp !0xc
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+       jmp32  %eval_apply_768_body9
+:eval_apply_768_clause9
+       cmp____$i8,%eax !0x38
+       je32   %eval_apply_768_body9
+       jmp32  %eval_apply_768_clause10
+:eval_apply_768_body9
+                                       # push_cc(g_cells[g_cells[r1].cdr].car, r1, r0, 64); 
+       mov____$i32,%eax %0x40
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_macro_expand
+       jmp32  %eval_apply_768_body10
+:eval_apply_768_clause10
+:eval_apply_768_body10
+                                       # push_cc(r1, r1, r0, 53); 
+       mov____$i32,%eax %0x35
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_macro_expand
+:eval_apply_label_eval_macro
+                                       # if (r1 != r2) ...
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1113_break
+                                       # if (g_cells[r1].type == TPAIR) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1121_break
+                                       # set_cdr_x(r2, g_cells[r1].cdr); 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &r2
+       push___%eax
+       call32 %set_cdr_x
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+                                       # set_car_x(r2, g_cells[r1].car); 
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____0x32,%eax &r2
+       push___%eax
+       call32 %set_car_x
+       add____$i8,%esp !0x8
+       test___%eax,%eax
+       jmp32  %eval_apply_1121_break
+:eval_apply_1121_break
+       jmp32  %eval_apply_label_eval
+       jmp32  %eval_apply_1113_break
+:eval_apply_1113_break
+                                       # push_cc(g_cells[r1].car, r1, r0, 54); 
+       mov____$i32,%eax %0x36
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_eval_check_func
+                                       # push_cc(g_cells[r2].cdr, r2, r0, 55); 
+       mov____$i32,%eax %0x37
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r2
+       push___%eax
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_evlis
+:eval_apply_label_eval2
+                                       # r1 = cons(g_cells[r2].car, r1)
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+:eval_apply_768_break
+       jmp32  %eval_apply_757_body1
+:eval_apply_757_clause1
+       cmp____$i8,%eax !0xb
+       je32   %eval_apply_757_body1
+       jmp32  %eval_apply_757_clause2
+:eval_apply_757_body1
+                                       # r1 = assert_defined(r1, assq_ref_env(r1, r0))
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %assq_ref_env
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %assert_defined
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+       jmp32  %eval_apply_757_body2
+:eval_apply_757_clause2
+:eval_apply_757_body2
+       jmp32  %eval_apply_label_vm_return
+:eval_apply_757_break
+                                       # SCM macro; 
+                                       # SCM expanders; 
+:eval_apply_label_macro_expand
+                                       # if (g_cells[r1].type == TPAIR && (macro = lookup_macro_(g_cells[r1].car, r0))      != 2) ...else ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1225_else
+                                       # macro = lookup_macro_(g_cells[r1].car, r0)
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %lookup_macro_
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-8
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1225_else
+                                       # r1 = cons(macro, g_cells[r1].cdr)
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       push___0x8(%ebp) !0x-8
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+       jmp32  %eval_apply_1225_break
+:eval_apply_1225_else
+                                       # if (g_cells[r1].type == TPAIR && g_cells[g_cells[r1].car].type == TSYMBOL && (     expanders = assq_ref_env(19, r0)) != 6 && (macro = assq(g_cells[r1].car,      expanders)) != 2) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1267_break
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xb
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1267_break
+                                       # expanders = assq_ref_env(19, r0)
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____$i32,%eax %0x13
+       push___%eax
+       call32 %assq_ref_env
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-c
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1267_break
+                                       # macro = assq(g_cells[r1].car, expanders)
+       push___0x8(%ebp) !0x-c
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %assq
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-8
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1267_break
+                                       # SCM sc_expand = assq_ref_env(18, r0); 
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____$i32,%eax %0x12
+       push___%eax
+       call32 %assq_ref_env
+       add____$i8,%esp !0x8
+       mov____%eax,0x8(%ebp) !0x-10
+                                       # if (sc_expand != 6 && sc_expand != 2) ...
+       mov____0x8(%ebp),%eax !0x-10
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1328_break
+       mov____0x8(%ebp),%eax !0x-10
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1328_break
+                                       # r1 = cons(sc_expand, cons(r1, 1))
+       mov____$i32,%eax %0x1
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       push___0x8(%ebp) !0x-10
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+       jmp32  %eval_apply_1328_break
+:eval_apply_1328_break
+       jmp32  %eval_apply_1267_break
+:eval_apply_1267_break
+:eval_apply_1225_break
+       jmp32  %eval_apply_label_vm_return
+:eval_apply_label_begin
+                                       # x = 7
+       mov____$i32,%eax %0x7
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # while (r1 != 1) ...
+       jmp32  %eval_apply_1365_continue
+:eval_apply_1365_loop
+                                       # gc_check(); 
+       call32 %gc_check
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # if (g_cells[r1].type == TPAIR && g_cells[g_cells[r1].car].type == TPAIR) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1371_break
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1371_break
+                                       # if (g_cells[g_cells[r1].car].car == 13) ...else ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____$i32,%eax %0xd
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1398_else
+                                       # r1 = append2(g_cells[g_cells[r1].car].cdr, g_cells[r1].cdr)
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       call32 %append2
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_1398_break
+:eval_apply_1398_else
+                                       # if (g_cells[g_cells[r1].car].car == 24) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       mov____$i32,%eax %0x18
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1436_break
+                                       # push_cc(cons(25, 1), r1, r0, 58); 
+       mov____$i32,%eax %0x3a
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____$i32,%eax %0x1
+       push___%eax
+       mov____$i32,%eax %0x19
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+:eval_apply_label_begin_read_input_file
+                                       # r1 = append2(r1, g_cells[r2].cdr)
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       call32 %append2
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_1436_break
+:eval_apply_1436_break
+:eval_apply_1398_break
+       jmp32  %eval_apply_1371_break
+:eval_apply_1371_break
+                                       # if (g_cells[r1].cdr == 1) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1483_break
+                                       # r1 = g_cells[r1].car
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+       jmp32  %eval_apply_1483_break
+:eval_apply_1483_break
+                                       # push_cc(g_cells[r1].car, r1, r0, 59); 
+       mov____$i32,%eax %0x3b
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_begin2
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # r1 = g_cells[r2].cdr
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+:eval_apply_1365_continue
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1365_break
+       jmp32  %eval_apply_1365_loop
+:eval_apply_1365_break
+                                       # r1 = x
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+:eval_apply_label_vm_if
+                                       # push_cc(g_cells[r1].car, r1, r0, 61); 
+       mov____$i32,%eax %0x3d
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+:eval_apply_label_if_expr
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # r1 = r2
+       mov____0x32,%eax &r2
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+                                       # if (x != 2) ...
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____$i32,%eax %0x2
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1572_break
+                                       # r1 = g_cells[g_cells[r1].cdr].car
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+       jmp32  %eval_apply_1572_break
+:eval_apply_1572_break
+                                       # if (g_cells[g_cells[r1].cdr].cdr != 1) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1595_break
+                                       # r1 = g_cells[g_cells[g_cells[r1].cdr].cdr].car
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval
+       jmp32  %eval_apply_1595_break
+:eval_apply_1595_break
+                                       # r1 = 7
+       mov____$i32,%eax %0x7
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+:eval_apply_label_call_with_current_continuation
+                                       # gc_push_frame(); 
+       call32 %gc_push_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # x = make_cell_(tmp_num_(TCONTINUATION), g_continuations++, g_stack)
+       mov____0x32,%eax &g_stack
+       push___%eax
+       mov____0x32,%eax &g_continuations
+       push___%eax
+       mov____$i32,%eax &g_continuations
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       push___%eax
+       mov____$i32,%eax %0x2
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # gc_pop_frame(); 
+       call32 %gc_pop_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # push_cc(cons(g_cells[r1].car, cons(x, 1)), x, r0, 63); 
+       mov____$i32,%eax %0x3f
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       push___0x8(%ebp) !0x-4
+       mov____$i32,%eax %0x1
+       push___%eax
+       push___0x8(%ebp) !0x-4
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+:eval_apply_label_call_with_current_continuation2
+                                       # g_cells[r2].cdr = g_stack
+       mov____0x32,%eax &g_stack
+       push___%eax
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       add____$i8,%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       jmp32  %eval_apply_label_vm_return
+:eval_apply_label_call_with_values
+                                       # push_cc(cons(g_cells[r1].car, 1), r1, r0, 62); 
+       mov____$i32,%eax %0x3e
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____$i32,%eax %0x1
+       push___%eax
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+:eval_apply_label_call_with_values2
+                                       # if (g_cells[r1].type == TVALUES) ...
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0xc
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %eval_apply_1711_break
+                                       # r1 = g_cells[r1].cdr
+       mov____0x32,%eax &r1
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_1711_break
+:eval_apply_1711_break
+                                       # r1 = cons(g_cells[g_cells[r2].cdr].car, r1)
+       mov____0x32,%eax &r1
+       push___%eax
+       mov____0x32,%eax &r2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_apply
+:eval_apply_label_vm_return
+                                       # x = r1
+       mov____0x32,%eax &r1
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # gc_pop_frame(); 
+       call32 %gc_pop_frame
+       add____$i8,%esp !0x0
+       test___%eax,%eax
+                                       # r1 = x
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+       jmp32  %eval_apply_label_eval_apply
+       leave
+       ret
+
+
+:apply
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # push_cc(cons(f, x), 7, r0, 7); 
+       mov____$i32,%eax %0x7
+       push___%eax
+       mov____0x32,%eax &r0
+       push___%eax
+       mov____$i32,%eax %0x7
+       push___%eax
+       push___0x8(%ebp) !0xc
+       push___0x8(%ebp) !0x8
+       call32 %cons
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %push_cc
+       add____$i8,%esp !0x10
+       test___%eax,%eax
+                                       # r3 = 45
+       mov____$i32,%eax %0x2d
+       mov____%eax,0x32 &r3
+       test___%eax,%eax
+       call32 %eval_apply
+       add____$i8,%esp !0x0
+       leave
+       ret
+
+
+:mes_g_stack
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # r0 = a
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,0x32 &r0
+       test___%eax,%eax
+                                       # r1 = make_cell_(tmp_num_(TCHAR), 0, tmp_num2_(0))
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       mov____%eax,0x32 &r1
+       test___%eax,%eax
+                                       # r2 = make_cell_(tmp_num_(TCHAR), 0, tmp_num2_(0))
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       mov____%eax,0x32 &r2
+       test___%eax,%eax
+                                       # r3 = make_cell_(tmp_num_(TCHAR), 0, tmp_num2_(0))
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       mov____%eax,0x32 &r3
+       test___%eax,%eax
+                                       # g_stack = cons(1, 1)
+       mov____$i32,%eax %0x1
+       push___%eax
+       mov____$i32,%eax %0x1
+       push___%eax
+       call32 %cons
+       add____$i8,%esp !0x8
+       mov____%eax,0x32 &g_stack
+       test___%eax,%eax
+       mov____0x32,%eax &r0
+       leave
+       ret
+
+
+:make_tmps
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # tmp = g_free++
+       mov____0x32,%eax &g_free
+       push___%eax
+       mov____$i32,%eax &g_free
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       mov____%eax,0x32 &tmp
+       test___%eax,%eax
+                                       # cells[tmp].type = TCHAR
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____0x32,%eax &tmp
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x8(%ebp),%edx !0x8
+       add____%edx,%eax
+       add____$i8,%eax !0x0
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+                                       # tmp_num = g_free++
+       mov____0x32,%eax &g_free
+       push___%eax
+       mov____$i32,%eax &g_free
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       mov____%eax,0x32 &tmp_num
+       test___%eax,%eax
+                                       # cells[tmp_num].type = TNUMBER
+       mov____$i32,%eax %0x6
+       push___%eax
+       mov____0x32,%eax &tmp_num
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x8(%ebp),%edx !0x8
+       add____%edx,%eax
+       add____$i8,%eax !0x0
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+                                       # tmp_num2 = g_free++
+       mov____0x32,%eax &g_free
+       push___%eax
+       mov____$i32,%eax &g_free
+       add____$i8,(%eax) !0x1
+       pop____%eax
+       mov____%eax,0x32 &tmp_num2
+       test___%eax,%eax
+                                       # cells[tmp_num2].type = TNUMBER
+       mov____$i32,%eax %0x6
+       push___%eax
+       mov____0x32,%eax &tmp_num2
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x8(%ebp),%edx !0x8
+       add____%edx,%eax
+       add____$i8,%eax !0x0
+       mov____%eax,%edx
+       pop____%eax
+       mov____%eax,(%edx)
+       test___%eax,%eax
+       mov____$i32,%eax %0x0
+       leave
+       ret
+
+
+:ungetchar
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x32,%eax &g_stdin
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %ungetc
+       add____$i8,%esp !0x8
+       leave
+       ret
+
+
+:peekchar
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int c = getchar(); 
+       call32 %getchar
+       add____$i8,%esp !0x0
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # ungetchar(c); 
+       push___0x8(%ebp) !0x-4
+       call32 %ungetchar
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:peek_byte
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       call32 %peekchar
+       add____$i8,%esp !0x0
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:read_byte
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       call32 %getchar
+       add____$i8,%esp !0x0
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:unread_byte
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # ungetchar(g_cells[i].cdr); 
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       call32 %ungetchar
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x8
+       leave
+       ret
+
+
+:write_byte
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM c = car(x); 
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # SCM p = cdr(x); 
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # int fd = g_stdout; 
+       mov____0x32,%eax &g_stdout
+       mov____%eax,0x8(%ebp) !0x-c
+                                       # if (g_cells[p].type == TPAIR && g_cells[car(p)].type == TNUMBER && g_cells[     g_cells[p].car].cdr != 1) ...
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %write_byte_12_break
+       push___0x8(%ebp) !0x-8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %write_byte_12_break
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %write_byte_12_break
+                                       # fd = g_cells[g_cells[p].car].cdr
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-c
+       test___%eax,%eax
+       jmp32  %write_byte_12_break
+:write_byte_12_break
+                                       # char cc = g_cells[c].cdr; 
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-10
+                                       # write(fd, (char*)&cc, 1); 
+       mov____$i32,%eax %0x1
+       push___%eax
+       lea____0x8(%ebp),%eax !0x-10
+       push___%eax
+       push___0x8(%ebp) !0x-c
+       call32 %write
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+       mov____0x8(%ebp),%eax !0x-4
+       leave
+       ret
+
+
+:string_to_cstring
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *p = string_to_cstring_buf; 
+       mov____$i32,%eax &string_to_cstring_buf
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # s = g_cells[s].car
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+                                       # while (s != 1) ...
+       jmp32  %string_to_cstring_12_continue
+:string_to_cstring_12_loop
+                                       # *p = g_cells[car(s)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       add____$i8,0x8(%ebp) !0x-4 !0x1
+       test___%eax,%eax
+                                       # s = cdr(s)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:string_to_cstring_12_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %string_to_cstring_12_break
+       jmp32  %string_to_cstring_12_loop
+:string_to_cstring_12_break
+                                       # *p = 0
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       mov____%al,(%edx)
+       test___%eax,%eax
+       mov____$i32,%eax &string_to_cstring_buf
+       leave
+       ret
+
+
+:getenv_
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # char *p; 
+                                       # p = getenv(string_to_cstring(s))
+       push___0x8(%ebp) !0x8
+       call32 %string_to_cstring
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %getenv
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # p? ...: ...
+       mov____0x8(%ebp),%eax !0x-4
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %getenv__9_else
+       mov____$i32,%eax %0x0
+       push___%eax
+       push___0x8(%ebp) !0x-4
+       call32 %cstring_to_list
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0xa
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       test___%eax,%eax
+       jmp32  %getenv__9_break
+:getenv__9_else
+       mov____$i32,%eax %0x2
+       test___%eax,%eax
+:getenv__9_break
+       leave
+       ret
+
+
+:access_p
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # access(string_to_cstring(file_name), g_cells[mode].cdr) == 0? ...: ...
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %string_to_cstring
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %access
+       add____$i8,%esp !0x8
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %access_p_1_else
+       mov____$i32,%eax %0x3
+       test___%eax,%eax
+       jmp32  %access_p_1_break
+:access_p_1_else
+       mov____$i32,%eax %0x2
+       test___%eax,%eax
+:access_p_1_break
+       leave
+       ret
+
+
+:current_input_port
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x32,%eax &g_stdin
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:open_input_file
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____$i32,%eax %0x0
+       push___%eax
+       push___0x8(%ebp) !0x8
+       call32 %string_to_cstring
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %open
+       add____$i8,%esp !0x8
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:set_current_input_port
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_stdin = g_cells[port].cdr? g_cells[port].cdr: 0
+                                       # g_cells[port].cdr? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %set_current_input_port_2_else
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       test___%eax,%eax
+       jmp32  %set_current_input_port_2_break
+:set_current_input_port_2_else
+       mov____$i32,%eax %0x0
+       test___%eax,%eax
+:set_current_input_port_2_break
+       mov____%eax,0x32 &g_stdin
+       test___%eax,%eax
+       call32 %current_input_port
+       add____$i8,%esp !0x0
+       leave
+       ret
+
+
+:current_output_port
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____0x32,%eax &g_stdout
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:open_output_file
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM file_name = car(x); 
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+                                       # int mode = 00400 | 00200; 
+       mov____$i32,%eax %0x100
+       push___%eax
+       mov____$i32,%eax %0x80
+       mov____%eax,%edx
+       pop____%eax
+       or_____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # if (g_cells[x].type == TPAIR && g_cells[car(x)].type == TNUMBER) ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x7
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %open_output_file_17_break
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %open_output_file_17_break
+                                       # mode = g_cells[car(x)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+       jmp32  %open_output_file_17_break
+:open_output_file_17_break
+       push___0x8(%ebp) !0x-8
+       mov____$i32,%eax %0x1
+       push___%eax
+       mov____$i32,%eax %0x40
+       mov____%eax,%edx
+       pop____%eax
+       or_____%edx,%eax
+       push___%eax
+       mov____$i32,%eax %0x200
+       mov____%eax,%edx
+       pop____%eax
+       or_____%edx,%eax
+       push___%eax
+       push___0x8(%ebp) !0x-4
+       call32 %string_to_cstring
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %open
+       add____$i8,%esp !0xc
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:set_current_output_port
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_stdout = g_cells[port].cdr? g_cells[port].cdr: 1
+                                       # g_cells[port].cdr? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       test___%eax,%eax
+                                       # jmp test LABEL
+       test___%eax,%eax
+       je32   %set_current_output_port_2_else
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       test___%eax,%eax
+       jmp32  %set_current_output_port_2_break
+:set_current_output_port_2_else
+       mov____$i32,%eax %0x1
+       test___%eax,%eax
+:set_current_output_port_2_break
+       mov____%eax,0x32 &g_stdout
+       test___%eax,%eax
+       call32 %current_output_port
+       add____$i8,%esp !0x0
+       leave
+       ret
+
+
+:force_output
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+       mov____$i32,%eax %0x7
+       leave
+       ret
+
+
+:greater_p
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int n = 2147483647; 
+       mov____$i32,%eax %0x7fffffff
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (x != 1) ...
+       jmp32  %greater_p_4_continue
+:greater_p_4_loop
+                                       # g_cells[car(x)].type == TNUMBER? ...: ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %greater_p_7_else
+       jmp32  %greater_p_7_break
+:greater_p_7_else
+       push___$i32 &string_isxdigit_149
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:greater_p_7_break
+                                       # if (g_cells[car(x)].cdr >= n) ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setge__%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jl32   %greater_p_26_break
+       mov____$i32,%eax %0x2
+       leave
+       ret
+       jmp32  %greater_p_26_break
+:greater_p_26_break
+                                       # n = g_cells[car(x)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:greater_p_4_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %greater_p_4_break
+       jmp32  %greater_p_4_loop
+:greater_p_4_break
+       mov____$i32,%eax %0x3
+       leave
+       ret
+
+
+:less_p
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int n = -2147483648; 
+       push___%eax
+       mov____$i32,%eax %0x80000000
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (x != 1) ...
+       jmp32  %less_p_8_continue
+:less_p_8_loop
+                                       # g_cells[car(x)].type == TNUMBER? ...: ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %less_p_11_else
+       jmp32  %less_p_11_break
+:less_p_11_else
+       push___$i32 &string_isxdigit_149
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:less_p_11_break
+                                       # if (g_cells[car(x)].cdr <= n) ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setle__%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jg32   %less_p_30_break
+       mov____$i32,%eax %0x2
+       leave
+       ret
+       jmp32  %less_p_30_break
+:less_p_30_break
+                                       # n = g_cells[car(x)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:less_p_8_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %less_p_8_break
+       jmp32  %less_p_8_loop
+:less_p_8_break
+       mov____$i32,%eax %0x3
+       leave
+       ret
+
+
+:is_p
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # if (x == 1) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %is_p_1_break
+       mov____$i32,%eax %0x3
+       leave
+       ret
+       jmp32  %is_p_1_break
+:is_p_1_break
+                                       # g_cells[car(x)].type == TNUMBER? ...: ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %is_p_13_else
+       jmp32  %is_p_13_break
+:is_p_13_else
+       push___$i32 &string_isxdigit_149
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:is_p_13_break
+                                       # int n = g_cells[car(x)].cdr; 
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+                                       # while (x != 1) ...
+       jmp32  %is_p_45_continue
+:is_p_45_loop
+                                       # if (g_cells[car(x)].cdr != n) ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %is_p_48_break
+       mov____$i32,%eax %0x2
+       leave
+       ret
+       jmp32  %is_p_48_break
+:is_p_48_break
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:is_p_45_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %is_p_45_break
+       jmp32  %is_p_45_loop
+:is_p_45_break
+       mov____$i32,%eax %0x3
+       leave
+       ret
+
+
+:minus
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # SCM a = car(x); 
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # g_cells[a].type == TNUMBER? ...: ...
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %minus_5_else
+       jmp32  %minus_5_break
+:minus_5_else
+       push___$i32 &string_isxdigit_150
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:minus_5_break
+                                       # int n = g_cells[a].cdr; 
+       mov____0x8(%ebp),%eax !0x-4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-8
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+                                       # if (x == 1) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %minus_35_break
+                                       # n = -n
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-8
+       mov____%eax,%edx
+       pop____%eax
+       mov____$i32,%eax %0x0
+       sub____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+       jmp32  %minus_35_break
+:minus_35_break
+                                       # while (x != 1) ...
+       jmp32  %minus_53_continue
+:minus_53_loop
+                                       # g_cells[car(x)].type == TNUMBER? ...: ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %minus_56_else
+       jmp32  %minus_56_break
+:minus_56_else
+       push___$i32 &string_isxdigit_149
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:minus_56_break
+                                       # n -= g_cells[car(x)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-8
+       pop____%edx
+       sub____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-8
+       test___%eax,%eax
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:minus_53_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %minus_53_break
+       jmp32  %minus_53_loop
+:minus_53_break
+       push___0x8(%ebp) !0x-8
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:plus
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int n = 0; 
+       mov____$i32,%eax %0x0
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (x != 1) ...
+       jmp32  %plus_4_continue
+:plus_4_loop
+                                       # g_cells[car(x)].type == TNUMBER? ...: ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %plus_7_else
+       jmp32  %plus_7_break
+:plus_7_else
+       push___$i32 &string_isxdigit_149
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:plus_7_break
+                                       # n += g_cells[car(x)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       pop____%edx
+       add____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:plus_4_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %plus_4_break
+       jmp32  %plus_4_loop
+:plus_4_break
+       push___0x8(%ebp) !0x-4
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:divide
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int n = 1; 
+       mov____$i32,%eax %0x1
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # if (x != 1) ...
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %divide_4_break
+                                       # g_cells[car(x)].type == TNUMBER? ...: ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %divide_12_else
+       jmp32  %divide_12_break
+:divide_12_else
+       push___$i32 &string_isxdigit_149
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:divide_12_break
+                                       # n = g_cells[car(x)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+       jmp32  %divide_4_break
+:divide_4_break
+                                       # while (x != 1) ...
+       jmp32  %divide_47_continue
+:divide_47_loop
+                                       # g_cells[car(x)].type == TNUMBER? ...: ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %divide_50_else
+       jmp32  %divide_50_break
+:divide_50_else
+       push___$i32 &string_isxdigit_149
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:divide_50_break
+                                       # n /= g_cells[car(x)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       pop____%edx
+       mov____%edx,%ebx
+       xor____%edx,%edx
+       idiv___%ebx
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:divide_47_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %divide_47_break
+       jmp32  %divide_47_loop
+:divide_47_break
+       push___0x8(%ebp) !0x-4
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:modulo
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # g_cells[a].type == TNUMBER? ...: ...
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %modulo_1_else
+       jmp32  %modulo_1_break
+:modulo_1_else
+       push___$i32 &string_isxdigit_150
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:modulo_1_break
+                                       # g_cells[b].type == TNUMBER? ...: ...
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %modulo_19_else
+       jmp32  %modulo_19_break
+:modulo_19_else
+       push___$i32 &string_isxdigit_151
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:modulo_19_break
+                                       # int x = g_cells[a].cdr; 
+       mov____0x8(%ebp),%eax !0x8
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (x < 0) ...
+       jmp32  %modulo_44_continue
+:modulo_44_loop
+                                       # x += g_cells[b].cdr
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       pop____%edx
+       add____%edx,%eax
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+:modulo_44_continue
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____$i32,%eax %0x0
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       setl___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jge32  %modulo_44_break
+       jmp32  %modulo_44_loop
+:modulo_44_break
+       mov____0x8(%ebp),%eax !0x-4
+       push___%eax
+       mov____0x8(%ebp),%eax !0xc
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       mov____%eax,%edx
+       pop____%eax
+       mov____%edx,%ebx
+       xor____%edx,%edx
+       idiv___%ebx
+       mov____%edx,%eax
+       push___%eax
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:multiply
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int n = 1; 
+       mov____$i32,%eax %0x1
+       mov____%eax,0x8(%ebp) !0x-4
+                                       # while (x != 1) ...
+       jmp32  %multiply_4_continue
+:multiply_4_loop
+                                       # g_cells[car(x)].type == TNUMBER? ...: ...
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       mov____%eax,%edx
+       pop____%eax
+       sub____%edx,%eax
+       sete___%al
+       movzbl_%al,%eax
+                                       # jmp test LABEL
+       jne32  %multiply_7_else
+       jmp32  %multiply_7_break
+:multiply_7_else
+       push___$i32 &string_isxdigit_149
+       call32 %assert_fail
+       add____$i8,%esp !0x4
+       test___%eax,%eax
+:multiply_7_break
+                                       # n *= g_cells[car(x)].cdr
+       push___0x8(%ebp) !0x8
+       call32 %car
+       add____$i8,%esp !0x4
+       mov____%eax,%edx
+       add____%eax,%eax
+       add____%edx,%eax
+       shl____$i8,%eax !0x2
+       mov____0x32,%edx &g_cells
+       add____%edx,%eax
+       mov____0x8(%eax),%eax !0x8
+       push___%eax
+       mov____0x8(%ebp),%eax !0x-4
+       pop____%edx
+       mul____%edx
+       mov____%eax,0x8(%ebp) !0x-4
+       test___%eax,%eax
+                                       # x = cdr(x)
+       push___0x8(%ebp) !0x8
+       call32 %cdr
+       add____$i8,%esp !0x4
+       mov____%eax,0x8(%ebp) !0x8
+       test___%eax,%eax
+:multiply_4_continue
+       mov____0x8(%ebp),%eax !0x8
+       push___%eax
+       mov____$i32,%eax %0x1
+       mov____%eax,%edx
+       pop____%eax
+       push___%eax
+       sub____%edx,%eax
+       setne__%al
+       movzbl_%al,%eax
+       xchg___%eax,(%esp)
+       sub____%edx,%eax
+       lahf
+       xor____$i8,%ah !0x40
+       sahf
+       pop____%eax
+                                       # jmp test LABEL
+       jne32  %multiply_4_break
+       jmp32  %multiply_4_loop
+:multiply_4_break
+       push___0x8(%ebp) !0x-4
+       call32 %tmp_num2_
+       add____$i8,%esp !0x4
+       push___%eax
+       mov____$i32,%eax %0x0
+       push___%eax
+       mov____$i32,%eax %0x6
+       push___%eax
+       call32 %tmp_num_
+       add____$i8,%esp !0x4
+       push___%eax
+       call32 %make_cell_
+       add____$i8,%esp !0xc
+       leave
+       ret
+
+
+:logand
+       push___%ebp
+       mov____%esp,%ebp
+       sub____%esp,$i32 %0x1054
+                                       # int n = 0; 
+      &