aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMustafa Quraish <[email protected]>2022-02-07 23:07:57 -0500
committerMustafa Quraish <[email protected]>2022-02-08 02:07:18 -0500
commite5f2fac8c5ae5a1b74335816836872c2e24904e6 (patch)
treeed131049d39320967d8d18f65749c08ebb2f79a0
parentMark bootstrap files as binary in `.gitattributes` (diff)
downloadcup-e5f2fac8c5ae5a1b74335816836872c2e24904e6.tar.xz
cup-e5f2fac8c5ae5a1b74335816836872c2e24904e6.zip
[cup] Add `>>` and `<<` operators, `fork()` buildin and `SYS_execve`HEADmaster
-rw-r--r--.gitignore4
-rw-r--r--bootstrap/linux.nasm28511
-rw-r--r--bootstrap/macos.nasm28513
-rw-r--r--compiler/builtins.cup30
-rw-r--r--compiler/codegen.cup15
-rw-r--r--compiler/lexer.cup4
-rw-r--r--compiler/parser.cup2
-rwxr-xr-xmeta/bootstrap.sh25
-rwxr-xr-xmeta/create_bootstrap.sh21
-rwxr-xr-xmeta/run.sh6
-rw-r--r--std/common.cup36
11 files changed, 57163 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index a6a436e..bb6bc6c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,10 @@ cupcc
*.o
*.out
+!bootstrap
+!bootstrap/linux.nasm
+!bootstrap/macos.nasm
+
build
# We ignore the examples by default since it's the playground for testing,
diff --git a/bootstrap/linux.nasm b/bootstrap/linux.nasm
new file mode 100644
index 0000000..e0d41dc
--- /dev/null
+++ b/bootstrap/linux.nasm
@@ -0,0 +1,28511 @@
+global func_write
+func_write:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 1
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_exit
+func_exit:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 60
+ push rax
+ call func_syscall1
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_read
+func_read:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 0
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_open
+func_open:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 2
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_close
+func_close:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 3
+ push rax
+ call func_syscall1
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_openat
+func_openat:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 257
+ push rax
+ call func_syscall4
+ add rsp, 40
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_wait
+func_wait:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 1
+ neg rax
+ push rax
+ mov rax, 61
+ push rax
+ call func_syscall4
+ add rsp, 40
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lseek
+func_lseek:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 8
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_mmap
+func_mmap:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 9
+ push rax
+ call func_syscall6
+ add rsp, 56
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_execve
+func_execve:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 59
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_strlen
+func_strlen:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_0:
+.loop_continue_0:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_0
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_0
+.loop_end_0:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_strcpy
+func_strcpy:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+.loop_start_1:
+.loop_continue_1:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_1
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_1
+.loop_end_1:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_strcat
+func_strcat:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+.loop_start_2:
+.loop_continue_2:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_2
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_2
+.loop_end_2:
+.loop_start_3:
+.loop_continue_3:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_3
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_3
+.loop_end_3:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_streq
+func_streq:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+.loop_start_4:
+.loop_continue_4:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_5
+ mov rax, 0
+ jmp .and_end_5
+.and_right_5:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_5:
+ cmp rax, 0
+ je .loop_end_4
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_6
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_6:
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_4
+.loop_end_4:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_strrev
+func_strrev:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 32
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-24], rax
+.loop_start_7:
+.loop_continue_7:
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_7
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_7
+.loop_end_7:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_atoi_end
+func_atoi_end:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+ mov rax, 1
+ mov [rbp-16], rax
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_8
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ neg rax
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.if_end_8:
+.loop_start_9:
+.loop_continue_9:
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_10
+ mov rax, 0
+ jmp .and_end_10
+.and_right_10:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setle al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_10:
+ cmp rax, 0
+ je .loop_end_9
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ sub rax, rbx
+ push rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_9
+.loop_end_9:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_atoi
+func_atoi:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_atoi_end
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_putc
+func_putc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 0
+ push rax
+ call func_write
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_puts
+func_puts:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 1
+ push rax
+ call func_write
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_putsln
+func_putsln:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_putu_buffer
+func_putu_buffer:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_11:
+.loop_continue_11:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_11
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 48
+ push rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cqo
+ idiv rbx
+ mov rax, rdx
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cqo
+ idiv rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_11
+.loop_end_11:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_12
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 48
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.if_end_12:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_13
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strrev
+ add rsp, 8
+.if_end_13:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_putu
+func_putu:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 40
+ mov rax, rbp
+ sub rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_putu_buffer
+ add rsp, 16
+ mov [rbp-40], rax
+ mov rax, rbp
+ sub rax, 40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ push rax
+ mov rax, 1
+ push rax
+ call func_write
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_die
+func_die:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_die2
+func_die2:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_assert
+func_assert:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_14
+ mov rax, global_string_0
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_14:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_min
+func_min:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_15
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ jmp .cond_end_15
+.cond_else_15:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+.cond_end_15:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_max
+func_max:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ jmp .cond_end_16
+.cond_else_16:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+.cond_end_16:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_sign
+func_sign:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_17
+ mov rax, 1
+ jmp .cond_end_17
+.cond_else_17:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_18
+ mov rax, 0
+ jmp .cond_end_18
+.cond_else_18:
+ mov rax, 1
+ neg rax
+.cond_end_18:
+.cond_end_17:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_abs
+func_abs:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_sign
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_factorial
+func_factorial:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 1
+ mov [rbp-8], rax
+.loop_start_19:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_19
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ pop rbx
+ mov [rbx], rax
+.loop_continue_19:
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_19
+.loop_end_19:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_align_up
+func_align_up:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ not rax
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ and rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_memcpy
+func_memcpy:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, 0
+ mov [rbp-24], rax
+.loop_start_20:
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_20
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+.loop_continue_20:
+ mov rax, rbp
+ sub rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_20
+.loop_end_20:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_malloc
+func_malloc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 1073741824
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741832
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_21
+ mov rax, global_string_1
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_21:
+ mov rax, global_vars
+ add rax, 1073741832
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 8
+ pop rbx
+ add rax, rbx
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741832
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741832
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_free
+func_free:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_WIFEXITED
+func_WIFEXITED:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, 127
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ and rax, rbx
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_WEXITSTATUS
+func_WEXITSTATUS:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 127
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rcx
+ shr rax, cl
+ pop rbx
+ and rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_run_command
+func_run_command:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ call func_fork
+ add rsp, 0
+ mov [rbp-8], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_22
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_execve
+ add rsp, 24
+ mov rax, global_string_2
+ push rax
+ mov rax, global_string_3
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_22:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ call func_wait
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_23
+ mov rax, global_string_4
+ push rax
+ mov rax, global_string_5
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_23:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_WIFEXITED
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_24
+ mov rax, global_string_6
+ push rax
+ mov rax, global_string_7
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_24:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_WEXITSTATUS
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_25
+ mov rax, global_string_8
+ push rax
+ mov rax, global_string_9
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_25:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fopen
+func_fopen:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 119
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_26
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 512
+ push rax
+ mov rax, 64
+ push rax
+ mov rax, 1
+ pop rbx
+ or rax, rbx
+ pop rbx
+ or rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_26
+.if_else_26:
+ mov rax, 114
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_27
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_27
+.if_else_27:
+ mov rax, global_string_10
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_27:
+.if_end_26:
+ mov rax, 1048
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 438
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_open
+ add rsp, 24
+ pop rbx
+ mov [rbx], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_28
+ mov rax, global_string_11
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_28:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 1040
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fflush
+func_fflush:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_29
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_write
+ add rsp, 24
+ mov [rbp-8], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_30
+ mov rax, global_string_12
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_30:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_29:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fwrite
+func_fwrite:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1024
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_31
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fflush
+ add rsp, 8
+.if_end_31:
+ mov rax, 1024
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_32
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_write
+ add rsp, 24
+ jmp .if_end_32
+.if_else_32:
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_memcpy
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.if_end_32:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fread
+func_fread:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_read
+ add rsp, 24
+ mov [rbp-8], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_33
+ mov rax, global_string_13
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_33:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fclose
+func_fclose:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fflush
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_close
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fputs
+func_fputs:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fputc
+func_fputc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fputu
+func_fputu:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 40
+ mov rax, rbp
+ sub rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_putu_buffer
+ add rsp, 16
+ mov [rbp-40], rax
+ mov rax, rbp
+ sub rax, 40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fsize
+func_fsize:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_lseek
+ add rsp, 24
+ mov [rbp-8], rax
+ mov rax, 2
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_lseek
+ add rsp, 24
+ mov [rbp-16], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_lseek
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fmap
+func_fmap:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fsize
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, 2
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_mmap
+ add rsp, 48
+ mov [rbp-16], rax
+ mov rax, -1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_34
+ mov rax, global_string_14
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_34:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_35
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_35:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fread_to_string
+func_fread_to_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fsize
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fread
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_36
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_36:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_type_to_string
+func_token_type_to_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_37
+ mov rax, global_string_15
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_37:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_38
+ mov rax, global_string_16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_38:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_39
+ mov rax, global_string_17
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_39:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_40
+ mov rax, global_string_18
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_40:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_41
+ mov rax, global_string_19
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_41:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_42
+ mov rax, global_string_20
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_42:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_43
+ mov rax, global_string_21
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_43:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_44
+ mov rax, global_string_22
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_44:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_45
+ mov rax, global_string_23
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_45:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_46
+ mov rax, global_string_24
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_46:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_47
+ mov rax, global_string_25
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_47:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_48
+ mov rax, global_string_26
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_48:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_49
+ mov rax, global_string_27
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_49:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_50
+ mov rax, global_string_28
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_50:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_51
+ mov rax, global_string_29
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_51:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_52
+ mov rax, global_string_30
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_52:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_53
+ mov rax, global_string_31
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_53:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_54
+ mov rax, global_string_32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_54:
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_55
+ mov rax, global_string_33
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_55:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_56
+ mov rax, global_string_34
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_56:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_57
+ mov rax, global_string_35
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_57:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_58
+ mov rax, global_string_36
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_58:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_59
+ mov rax, global_string_37
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_59:
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_60
+ mov rax, global_string_38
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_60:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_61
+ mov rax, global_string_39
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_61:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_62
+ mov rax, global_string_40
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_62:
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_63
+ mov rax, global_string_41
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_63:
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_64
+ mov rax, global_string_42
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_64:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_65
+ mov rax, global_string_43
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_65:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_66
+ mov rax, global_string_44
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_66:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_67
+ mov rax, global_string_45
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_67:
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_68
+ mov rax, global_string_46
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_68:
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_69
+ mov rax, global_string_47
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_69:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_70
+ mov rax, global_string_48
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_70:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_71
+ mov rax, global_string_49
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_71:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_72
+ mov rax, global_string_50
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_72:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_73
+ mov rax, global_string_51
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_73:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_74
+ mov rax, global_string_52
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_74:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_75
+ mov rax, global_string_53
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_75:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_76
+ mov rax, global_string_54
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_76:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_77
+ mov rax, global_string_55
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_77:
+ mov rax, 41
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_78
+ mov rax, global_string_56
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_78:
+ mov rax, 43
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_79
+ mov rax, global_string_57
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_79:
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_80
+ mov rax, global_string_58
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_80:
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_81
+ mov rax, global_string_59
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_81:
+ mov rax, 46
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_82
+ mov rax, global_string_60
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_82:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_83
+ mov rax, global_string_61
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_83:
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_84
+ mov rax, global_string_62
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_84:
+ mov rax, 49
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_85
+ mov rax, global_string_63
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_85:
+ mov rax, 50
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_86
+ mov rax, global_string_64
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_86:
+ mov rax, 51
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_87
+ mov rax, global_string_65
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_87:
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_88
+ mov rax, global_string_66
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_88:
+ mov rax, 53
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_89
+ mov rax, global_string_67
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_89:
+ mov rax, 54
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_90
+ mov rax, global_string_68
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_90:
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_91
+ mov rax, global_string_69
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_91:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_92
+ mov rax, global_string_70
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_92:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_93
+ mov rax, global_string_71
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_93:
+ mov rax, 58
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_94
+ mov rax, global_string_72
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_94:
+ mov rax, 59
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_95
+ mov rax, global_string_73
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_95:
+ mov rax, global_string_74
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_print
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_keyword_to_string
+func_keyword_to_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 43
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_96
+ mov rax, global_string_75
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_96:
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_97
+ mov rax, global_string_76
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_97:
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_98
+ mov rax, global_string_77
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_98:
+ mov rax, 46
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_99
+ mov rax, global_string_78
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_99:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_100
+ mov rax, global_string_79
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_100:
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_101
+ mov rax, global_string_80
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_101:
+ mov rax, 49
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_102
+ mov rax, global_string_81
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_102:
+ mov rax, 50
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_103
+ mov rax, global_string_82
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_103:
+ mov rax, 51
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_104
+ mov rax, global_string_83
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_104:
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_105
+ mov rax, global_string_84
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_105:
+ mov rax, 53
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_106
+ mov rax, global_string_85
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_106:
+ mov rax, 54
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_107
+ mov rax, global_string_86
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_107:
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_108
+ mov rax, global_string_87
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_108:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_109
+ mov rax, global_string_88
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_109:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_110
+ mov rax, global_string_89
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_110:
+ mov rax, 58
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_111
+ mov rax, global_string_90
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_111:
+ mov rax, 59
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_112
+ mov rax, global_string_91
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_112:
+ mov rax, global_string_92
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_location_init
+func_location_init:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_location_print
+func_location_print:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 58
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rax, 58
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_die_loc2
+func_die_loc2:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_location_print
+ add rsp, 8
+ mov rax, global_string_93
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_94
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_die_loc
+func_die_loc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_string_95
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_die_loc2
+ add rsp, 32
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_type
+func_token_from_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_int
+func_token_from_int:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 18
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_string
+func_token_from_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 39
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_char
+func_token_from_char:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 5
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_identifier
+func_token_from_identifier:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 17
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_literal_token
+func_is_literal_token:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_113
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_113:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_114
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_114:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_115
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_115:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_new_sized
+func_vector_new_sized:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 24
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_new
+func_vector_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_push
+func_vector_push:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_116
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ mov [rbp-8], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_memcpy
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_116:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_pop
+func_vector_pop:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_117
+ mov rax, global_string_96
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_117:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_top
+func_vector_top:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_118
+ mov rax, global_string_97
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_118:
+ mov rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_size_for_base_type
+func_size_for_base_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_119
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_119:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_120
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_120:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_121
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_121:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_size_for_type
+func_size_for_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_122
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_122:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_123
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_123:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_124
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_124:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_125
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_125:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_126
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_126:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_127
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_127:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_128
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_128:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_129
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_129:
+ mov rax, global_string_98
+ push rax
+ call func_die
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_type_new
+func_type_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741840
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_130
+ mov rax, global_vars
+ add rax, 1073741840
+ push rax
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741840
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 6
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741840
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_130:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741848
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_131
+ mov rax, global_vars
+ add rax, 1073741848
+ push rax
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741848
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 7
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741848
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, 1
+ pop rbx
+ mov [rbx], rax
+.if_end_131:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741856
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_132
+ mov rax, global_vars
+ add rax, 1073741856
+ push rax
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741856
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741856
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_132:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741864
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_133
+ mov rax, global_vars
+ add rax, 1073741864
+ push rax
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741864
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 1
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741864
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_133:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_134
+ mov rax, global_vars
+ add rax, 1073741840
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_134:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_135
+ mov rax, global_vars
+ add rax, 1073741848
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_135:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_136
+ mov rax, global_vars
+ add rax, 1073741856
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_136:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_137
+ mov rax, global_vars
+ add rax, 1073741864
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_137:
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_size_for_base_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_type_new_ptr
+func_type_new_ptr:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 2
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_create_type_string
+func_create_type_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 32
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+.loop_start_138:
+.loop_continue_138:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_139
+ mov rax, 1
+ jmp .or_end_139
+.or_right_139:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_139:
+ cmp rax, 0
+ je .loop_end_138
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_140
+ mov rax, global_string_99
+ jmp .cond_end_140
+.cond_else_140:
+ mov rax, global_string_100
+.cond_end_140:
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_138
+.loop_end_138:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_141
+ mov rax, global_string_101
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_141
+.if_else_141:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_142
+ mov rax, global_string_102
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_142
+.if_else_142:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_143
+ mov rax, global_string_103
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_143
+.if_else_143:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_144
+ mov rax, global_string_104
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_144
+.if_else_144:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_145
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_145
+.if_else_145:
+ mov rax, global_string_105
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_145:
+.if_end_144:
+.if_end_143:
+.if_end_142:
+.if_end_141:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_int_type
+func_is_int_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_146
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_146:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_147
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_147:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_types_equal
+func_types_equal:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_149
+ mov rax, 0
+ jmp .and_end_149
+.and_right_149:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_149:
+ cmp rax, 0
+ je .if_end_148
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_148:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_151
+ mov rax, 1
+ jmp .or_end_151
+.or_right_151:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_151:
+ cmp rax, 0
+ je .if_end_150
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_150:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_153
+ mov rax, 1
+ jmp .or_end_153
+.or_right_153:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_153:
+ cmp rax, 0
+ je .if_end_152
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_152:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_154
+ mov rax, 0
+ jmp .and_end_154
+.and_right_154:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_types_equal
+ add rsp, 16
+ cmp rax, 0
+ setne al
+.and_end_154:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_convertible
+func_is_convertible:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_156
+ mov rax, 1
+ jmp .or_end_156
+.or_right_156:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_156:
+ cmp rax, 0
+ je .if_end_155
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_155:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_158
+ mov rax, 0
+ jmp .and_end_158
+.and_right_158:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_158:
+ cmp rax, 0
+ je .if_end_157
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_160
+ mov rax, 1
+ jmp .or_end_160
+.or_right_160:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_160:
+ cmp rax, 0
+ je .if_end_159
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_159:
+.if_end_157:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_162
+ mov rax, 0
+ jmp .and_end_162
+.and_right_162:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_162:
+ cmp rax, 0
+ je .if_end_161
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_161:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_types_equal
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_struct_or_structptr
+func_is_struct_or_structptr:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_164
+ mov rax, 1
+ jmp .or_end_164
+.or_right_164:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_164:
+ cmp rax, 0
+ je .if_end_163
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_163:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_165
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_167
+ mov rax, 1
+ jmp .or_end_167
+.or_right_167:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_167:
+ cmp rax, 0
+ je .if_end_166
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_166:
+.if_end_165:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_node_new
+func_node_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 56
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741872
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741872
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_node_from_int_literal
+func_node_from_int_literal:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 25
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_variable_new
+func_variable_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 24
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_block_add_child
+func_block_add_child:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_168
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_168:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_node_type_to_string
+func_node_type_to_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_169
+ mov rax, global_string_106
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_169:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_170
+ mov rax, global_string_107
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_170:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_171
+ mov rax, global_string_108
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_171:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_172
+ mov rax, global_string_109
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_172:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_173
+ mov rax, global_string_110
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_173:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_174
+ mov rax, global_string_111
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_174:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_175
+ mov rax, global_string_112
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_175:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_176
+ mov rax, global_string_113
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_176:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_177
+ mov rax, global_string_114
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_177:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_178
+ mov rax, global_string_115
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_178:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_179
+ mov rax, global_string_116
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_179:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_180
+ mov rax, global_string_117
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_180:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_181
+ mov rax, global_string_118
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_181:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_182
+ mov rax, global_string_119
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_182:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_183
+ mov rax, global_string_120
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_183:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_184
+ mov rax, global_string_121
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_184:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_185
+ mov rax, global_string_122
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_185:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_186
+ mov rax, global_string_123
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_186:
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_187
+ mov rax, global_string_124
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_187:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_188
+ mov rax, global_string_125
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_188:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_189
+ mov rax, global_string_126
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_189:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_190
+ mov rax, global_string_127
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_190:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_191
+ mov rax, global_string_128
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_191:
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_192
+ mov rax, global_string_129
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_192:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_193
+ mov rax, global_string_130
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_193:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_194
+ mov rax, global_string_131
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_194:
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_195
+ mov rax, global_string_132
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_195:
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_196
+ mov rax, global_string_133
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_196:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_197
+ mov rax, global_string_134
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_197:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_198
+ mov rax, global_string_135
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_198:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_199
+ mov rax, global_string_136
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_199:
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_200
+ mov rax, global_string_137
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_200:
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_201
+ mov rax, global_string_138
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_201:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_202
+ mov rax, global_string_139
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_202:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_203
+ mov rax, global_string_140
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_203:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_204
+ mov rax, global_string_141
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_204:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_205
+ mov rax, global_string_142
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_205:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_206
+ mov rax, global_string_143
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_206:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_207
+ mov rax, global_string_144
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_207:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_208
+ mov rax, global_string_145
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_208:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_209
+ mov rax, global_string_146
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_209:
+ mov rax, global_string_147
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_binary_op
+func_is_binary_op:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_210
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_210:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_211
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_211:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_212
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_212:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_213
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_213:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_214
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_214:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_215
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_215:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_216
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_216:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_217
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_217:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_218
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_218:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_219
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_219:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_220
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_220:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_221
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_221:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_222
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_222:
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_223
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_223:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_224
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_224:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_225
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_225:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_226
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_226:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_227
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_227:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_unary_op
+func_is_unary_op:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_228
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_228:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_229
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_229:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_230
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_230:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_231
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_231:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_232
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_232:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_lvalue
+func_is_lvalue:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_233
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_233:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_234
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_234:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_235
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_235:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_236
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_236:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_binary_token_to_op
+func_binary_token_to_op:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_237
+ mov rax, 5
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_237:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_238
+ mov rax, 6
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_238:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_239
+ mov rax, 7
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_239:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_240
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_240:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_241
+ mov rax, 9
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_241:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_242
+ mov rax, 10
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_242:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_243
+ mov rax, 11
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_243:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_244
+ mov rax, 12
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_244:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_245
+ mov rax, 14
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_245:
+ mov rax, 41
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_246
+ mov rax, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_246:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_247
+ mov rax, 17
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_247:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_248
+ mov rax, 18
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_248:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_249
+ mov rax, 19
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_249:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_250
+ mov rax, 20
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_250:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_251
+ mov rax, 21
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_251:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_252
+ mov rax, 22
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_252:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_253
+ mov rax, 13
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_253:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_254
+ mov rax, 15
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_254:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_255
+ mov rax, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_255:
+ mov rax, global_string_148
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_dump_ast
+func_dump_ast:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_256:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, 2
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_256
+ mov rax, 32
+ push rax
+ call func_putc
+ add rsp, 8
+.loop_continue_256:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_256
+.loop_end_256:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_258
+ mov rax, 1
+ jmp .or_end_258
+.or_right_258:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_258:
+ cmp rax, 0
+ je .if_else_257
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_259:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_259
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+.loop_continue_259:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_259
+.loop_end_259:
+ jmp .if_end_257
+.if_else_257:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_binary_op
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_260
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_260
+.if_else_260:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_unary_op
+ add rsp, 8
+ cmp rax, 0
+ je .or_right_262
+ mov rax, 1
+ jmp .or_end_262
+.or_right_262:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_262:
+ cmp rax, 0
+ je .if_else_261
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_261
+.if_else_261:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_264
+ mov rax, 1
+ jmp .or_end_264
+.or_right_264:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_264:
+ cmp rax, 0
+ je .if_else_263
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_265
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+.if_end_265:
+ jmp .if_end_263
+.if_else_263:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_266
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_267
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ jmp .if_end_267
+.if_else_267:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_268
+ mov rax, 34
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 34
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ jmp .if_end_268
+.if_else_268:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_269
+ mov rax, 39
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ movsx rax, byte [rax]
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 39
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ jmp .if_end_269
+.if_else_269:
+ mov rax, global_string_149
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_269:
+.if_end_268:
+.if_end_267:
+ jmp .if_end_266
+.if_else_266:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_270
+ mov rax, global_string_150
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, global_string_151
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_270
+.if_else_270:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_271
+ mov rax, global_string_152
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_272
+ mov rax, global_string_153
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_puts
+ add rsp, 8
+.if_end_272:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_273
+ mov rax, global_string_154
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_273
+.if_else_273:
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+.if_end_273:
+ jmp .if_end_271
+.if_else_271:
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_274
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_274
+.if_else_274:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_276
+ mov rax, 1
+ jmp .or_end_276
+.or_right_276:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_276:
+ cmp rax, 0
+ je .if_else_275
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ jmp .if_end_275
+.if_else_275:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+.if_end_275:
+.if_end_274:
+.if_end_271:
+.if_end_270:
+.if_end_266:
+.if_end_263:
+.if_end_261:
+.if_end_260:
+.if_end_257:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_decay_array_to_pointer
+func_decay_array_to_pointer:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_278
+ mov rax, 0
+ jmp .and_end_278
+.and_right_278:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_278:
+ cmp rax, 0
+ je .if_end_277
+ mov rax, 3
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_277:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_type_check_unary
+func_type_check_unary:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_280
+ mov rax, 0
+ jmp .and_end_280
+.and_right_280:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_280:
+ cmp rax, 0
+ je .if_end_279
+ mov rax, global_string_155
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_156
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_279:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_281
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_281
+.if_else_281:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_282
+ mov rax, 2
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_283
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ jmp .cond_end_283
+.cond_else_283:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+.cond_end_283:
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_282
+.if_else_282:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_284
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_285
+ mov rax, global_string_157
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_158
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_285:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_decay_array_to_pointer
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_284
+.if_else_284:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_286
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_287
+ mov rax, global_string_159
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_160
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_287:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_286
+.if_else_286:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_286:
+.if_end_284:
+.if_end_282:
+.if_end_281:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_type_check_binary
+func_type_check_binary:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_289
+ mov rax, 1
+ jmp .or_end_289
+.or_right_289:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_289:
+ cmp rax, 0
+ je .if_end_288
+ mov rax, global_string_161
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_162
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_288:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_290
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_292
+ mov rax, 0
+ jmp .and_end_292
+.and_right_292:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_292:
+ cmp rax, 0
+ je .if_else_291
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_291
+.if_else_291:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_294
+ mov rax, 0
+ jmp .and_end_294
+.and_right_294:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_294:
+ cmp rax, 0
+ je .if_else_293
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_295
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_295:
+ jmp .if_end_293
+.if_else_293:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_297
+ mov rax, 0
+ jmp .and_end_297
+.and_right_297:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_297:
+ cmp rax, 0
+ je .if_else_296
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_298
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_298:
+ jmp .if_end_296
+.if_else_296:
+ mov rax, global_string_163
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_164
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_296:
+.if_end_293:
+.if_end_291:
+ jmp .if_end_290
+.if_else_290:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_299
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_301
+ mov rax, 0
+ jmp .and_end_301
+.and_right_301:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_301:
+ cmp rax, 0
+ je .if_else_300
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_300
+.if_else_300:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_303
+ mov rax, 0
+ jmp .and_end_303
+.and_right_303:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_303:
+ cmp rax, 0
+ je .if_else_302
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_304
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_304:
+ jmp .if_end_302
+.if_else_302:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_306
+ mov rax, 0
+ jmp .and_end_306
+.and_right_306:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_306:
+ cmp rax, 0
+ je .if_else_305
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_307
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_307:
+ jmp .if_end_305
+.if_else_305:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_309
+ mov rax, 0
+ jmp .and_end_309
+.and_right_309:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_309:
+ cmp rax, 0
+ je .if_else_308
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_types_equal
+ add rsp, 16
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_310
+ mov rax, global_string_165
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_166
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_310:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_311
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_311:
+ jmp .if_end_308
+.if_else_308:
+ mov rax, global_string_167
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_168
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_308:
+.if_end_305:
+.if_end_302:
+.if_end_300:
+ jmp .if_end_299
+.if_else_299:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_314
+ mov rax, 1
+ jmp .or_end_314
+.or_right_314:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_314:
+ cmp rax, 0
+ je .or_right_313
+ mov rax, 1
+ jmp .or_end_313
+.or_right_313:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_313:
+ cmp rax, 0
+ je .if_else_312
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_316
+ mov rax, 0
+ jmp .and_end_316
+.and_right_316:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_316:
+ cmp rax, 0
+ je .if_else_315
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_315
+.if_else_315:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_169
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_170
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_315:
+ jmp .if_end_312
+.if_else_312:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_312:
+.if_end_299:
+.if_end_290:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_compound_push_field
+func_compound_push_field:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 32
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_318
+ mov rax, 0
+ jmp .and_end_318
+.and_right_318:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_318:
+ cmp rax, 0
+ je .if_end_317
+ mov rax, global_string_171
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_317:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_min
+ add rsp, 16
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ cmp rax, 0
+ je .cond_else_319
+ mov rax, 0
+ jmp .cond_end_319
+.cond_else_319:
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_align_up
+ add rsp, 16
+.cond_end_319:
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ cmp rax, 0
+ je .cond_else_320
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_max
+ add rsp, 16
+ jmp .cond_end_320
+.cond_else_320:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+.cond_end_320:
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_variable_new
+ add rsp, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_compound_find_field
+func_compound_find_field:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_321:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_321
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_322
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_322:
+.loop_continue_321:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_321
+.loop_end_321:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_builtin_create_syscall
+func_builtin_create_syscall:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 38
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 0
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ push rax
+ mov rax, global_string_172
+ push rax
+ call func_variable_new
+ add rsp, 24
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_323:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_323
+ mov rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ call func_type_new
+ add rsp, 8
+ push rax
+ mov rax, global_string_173
+ push rax
+ call func_variable_new
+ add rsp, 24
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+.loop_continue_323:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_323
+.loop_end_323:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_builtins_push_posix_constants
+func_builtins_push_posix_constants:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ cmp rax, 0
+ je .if_else_324
+ mov rax, 33554432
+ push rax
+ mov rax, 59
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_174
+ push rax
+ call func_constant_push
+ add rsp, 16
+ jmp .if_end_324
+.if_else_324:
+ mov rax, 59
+ push rax
+ mov rax, global_string_175
+ push rax
+ call func_constant_push
+ add rsp, 16
+.if_end_324:
+ mov rax, 0
+ push rax
+ mov rax, global_string_176
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_177
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 60
+ push rax
+ mov rax, global_string_178
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_179
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 8
+ push rax
+ mov rax, global_string_180
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 257
+ push rax
+ mov rax, global_string_181
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 3
+ push rax
+ mov rax, global_string_182
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 57
+ push rax
+ mov rax, global_string_183
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 61
+ push rax
+ mov rax, global_string_184
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 9
+ push rax
+ mov rax, global_string_185
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_186
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_187
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_188
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_189
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_190
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_191
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 64
+ push rax
+ mov rax, global_string_192
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 128
+ push rax
+ mov rax, global_string_193
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 512
+ push rax
+ mov rax, global_string_194
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, -100
+ push rax
+ mov rax, global_string_195
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_196
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_197
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 4
+ push rax
+ mov rax, global_string_198
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_199
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_200
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_201
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 32
+ push rax
+ mov rax, global_string_202
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 16
+ push rax
+ mov rax, global_string_203
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, -1
+ push rax
+ mov rax, global_string_204
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_initialize_builtins
+func_initialize_builtins:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ call func_builtins_push_posix_constants
+ add rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, global_string_205
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_206
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 38
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 0
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, global_string_207
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ call func_type_new
+ add rsp, 8
+ push rax
+ mov rax, global_string_208
+ push rax
+ call func_variable_new
+ add rsp, 24
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 38
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, global_string_209
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ mov rax, 0
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_210
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_211
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_212
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 3
+ push rax
+ mov rax, global_string_213
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 4
+ push rax
+ mov rax, global_string_214
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 5
+ push rax
+ mov rax, global_string_215
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 6
+ push rax
+ mov rax, global_string_216
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 7
+ push rax
+ mov rax, global_string_217
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_builtin_function
+func_find_builtin_function:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_325:
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_325
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_326
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_326:
+.loop_continue_325:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_325
+.loop_end_325:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_builtins
+func_generate_builtins:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 96
+ mov rax, global_string_218
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_219
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_220
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_221
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_222
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_223
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_224
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_225
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_226
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_227
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_228
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_229
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_230
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_231
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_232
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_233
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_234
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_235
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_236
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_237
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_238
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_239
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_240
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_241
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_242
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_243
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_244
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_245
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_246
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_247
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_248
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_generate_syscall
+ add rsp, 8
+ mov rax, global_string_249
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_250
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_251
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 1
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_252
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 2
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_253
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 3
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_254
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 4
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_255
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 5
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_256
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 6
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_257
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 7
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_258
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 8
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_259
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 9
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_260
+ pop rbx
+ mov [rbx], rax
+ mov rax, 0
+ mov [rbp-88], rax
+.loop_start_327:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_327
+ mov rax, global_string_261
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_262
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 0
+ mov [rbp-96], rax
+.loop_start_328:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_328
+ mov rax, global_string_263
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_264
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ imul rbx
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_265
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.loop_continue_328:
+ mov rax, rbp
+ sub rax, 96
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_328
+.loop_end_328:
+ mov rax, global_string_266
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_267
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.loop_continue_327:
+ mov rax, rbp
+ sub rax, 88
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_327
+.loop_end_327:
+ mov rax, global_string_268
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_269
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_270
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 57
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_271
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_272
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 0
+ cmp rax, 0
+ je .if_end_329
+ mov rax, global_string_273
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_274
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_275
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_276
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_329:
+ mov rax, global_string_277
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_new
+func_lexer_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_new_open_file
+func_lexer_new_open_file:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, 114
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fopen
+ add rsp, 16
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_fread_to_string
+ add rsp, 16
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_fclose
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_new
+ add rsp, 24
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_loc
+func_lexer_loc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_space
+func_is_space:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_332
+ mov rax, 1
+ jmp .or_end_332
+.or_right_332:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_332:
+ cmp rax, 0
+ je .or_right_331
+ mov rax, 1
+ jmp .or_end_331
+.or_right_331:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_331:
+ cmp rax, 0
+ je .or_right_330
+ mov rax, 1
+ jmp .or_end_330
+.or_right_330:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_330:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_digit
+func_is_digit:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_333
+ mov rax, 0
+ jmp .and_end_333
+.and_right_333:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setle al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_333:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_alpha
+func_is_alpha:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 97
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_336
+ mov rax, 0
+ jmp .and_end_336
+.and_right_336:
+ mov rax, 122
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setle al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_336:
+ cmp rax, 0
+ je .or_right_335
+ mov rax, 1
+ jmp .or_end_335
+.or_right_335:
+ mov rax, 65
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_337
+ mov rax, 0
+ jmp .and_end_337
+.and_right_337:
+ mov rax, 90
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setle al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_337:
+ cmp rax, 0
+ setne al
+.or_end_335:
+ cmp rax, 0
+ je .or_right_334
+ mov rax, 1
+ jmp .or_end_334
+.or_right_334:
+ mov rax, 95
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_334:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_alnum
+func_is_alnum:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ push rax
+ call func_is_digit
+ add rsp, 8
+ cmp rax, 0
+ je .or_right_338
+ mov rax, 1
+ jmp .or_end_338
+.or_right_338:
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ push rax
+ call func_is_alpha
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.or_end_338:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_skip_whitespace
+func_lexer_skip_whitespace:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+.loop_start_339:
+.loop_continue_339:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_340
+ mov rax, 0
+ jmp .and_end_340
+.and_right_340:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ call func_is_space
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_340:
+ cmp rax, 0
+ je .loop_end_339
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_341
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_341
+.if_else_341:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.if_end_341:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_339
+.loop_end_339:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_starts_with
+func_lexer_starts_with:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_342
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_342:
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_343:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_343
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_344
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_344:
+.loop_continue_343:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_343
+.loop_end_343:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_345
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_345:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ movsx rax, byte [rax]
+ push rax
+ call func_is_digit
+ add rsp, 8
+ cmp rax, 0
+ je .or_right_346
+ mov rax, 1
+ jmp .or_end_346
+.or_right_346:
+ mov rax, rbp
+ sub rax, 24
+ movsx rax, byte [rax]
+ push rax
+ call func_is_alpha
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.or_end_346:
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_advance
+func_lexer_advance:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_peek_char
+func_lexer_peek_char:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_347
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_347:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_make_token
+func_lexer_make_token:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_next
+func_lexer_next:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+.loop_start_348:
+.loop_continue_348:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_348
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ mov [rbp-8], rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_349
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_349
+.if_else_349:
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ push rax
+ call func_is_space
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_350
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ jmp .if_end_350
+.if_else_350:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_351
+ mov rax, 1
+ push rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_351
+.if_else_351:
+ mov rax, 41
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_352
+ mov rax, 1
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_352
+.if_else_352:
+ mov rax, 123
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_353
+ mov rax, 1
+ push rax
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_353
+.if_else_353:
+ mov rax, 125
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_354
+ mov rax, 1
+ push rax
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_354
+.if_else_354:
+ mov rax, 91
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_355
+ mov rax, 1
+ push rax
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_355
+.if_else_355:
+ mov rax, 93
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_356
+ mov rax, 1
+ push rax
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_356
+.if_else_356:
+ mov rax, 59
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_357
+ mov rax, 1
+ push rax
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_357
+.if_else_357:
+ mov rax, 58
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_358
+ mov rax, 1
+ push rax
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_358
+.if_else_358:
+ mov rax, 126
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_359
+ mov rax, 1
+ push rax
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_359
+.if_else_359:
+ mov rax, 63
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_360
+ mov rax, 1
+ push rax
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_360
+.if_else_360:
+ mov rax, 94
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_361
+ mov rax, 1
+ push rax
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_361
+.if_else_361:
+ mov rax, 46
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_362
+ mov rax, 1
+ push rax
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_362
+.if_else_362:
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_363
+ mov rax, 1
+ push rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_363
+.if_else_363:
+ mov rax, 42
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_364
+ mov rax, 1
+ push rax
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_364
+.if_else_364:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_365
+ mov rax, 1
+ push rax
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_365
+.if_else_365:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_367
+ mov rax, 0
+ jmp .and_end_367
+.and_right_367:
+ mov rax, 47
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_367:
+ cmp rax, 0
+ je .if_else_366
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.loop_start_368:
+.loop_continue_368:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_369
+ mov rax, 0
+ jmp .and_end_369
+.and_right_369:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_369:
+ cmp rax, 0
+ je .loop_end_368
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_368
+.loop_end_368:
+ jmp .if_end_366
+.if_else_366:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_370
+ mov rax, 1
+ push rax
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_370
+.if_else_370:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_371
+ mov rax, 38
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_372
+ mov rax, 2
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_372:
+ mov rax, 1
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_371
+.if_else_371:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_373
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_374
+ mov rax, 2
+ push rax
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_374:
+ mov rax, 1
+ push rax
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_373
+.if_else_373:
+ mov rax, 60
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_375
+ mov rax, 60
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_376
+ mov rax, 2
+ push rax
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_376:
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_377
+ mov rax, 2
+ push rax
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_377:
+ mov rax, 1
+ push rax
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_375
+.if_else_375:
+ mov rax, 62
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_378
+ mov rax, 62
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_379
+ mov rax, 2
+ push rax
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_379:
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_380
+ mov rax, 2
+ push rax
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_380:
+ mov rax, 1
+ push rax
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_378
+.if_else_378:
+ mov rax, 61
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_381
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_382
+ mov rax, 2
+ push rax
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_382:
+ mov rax, 1
+ push rax
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_381
+.if_else_381:
+ mov rax, 124
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_383
+ mov rax, 124
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_384
+ mov rax, 2
+ push rax
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_384:
+ mov rax, 1
+ push rax
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_383
+.if_else_383:
+ mov rax, 43
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_385
+ mov rax, 43
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_386
+ mov rax, 2
+ push rax
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_386:
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_387
+ mov rax, 2
+ push rax
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_387:
+ mov rax, 1
+ push rax
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_385
+.if_else_385:
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_388
+ mov rax, 45
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_389
+ mov rax, 2
+ push rax
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_389:
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_390
+ mov rax, 2
+ push rax
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_390:
+ mov rax, 1
+ push rax
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_388
+.if_else_388:
+ mov rax, global_string_278
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_starts_with
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_391
+ mov rax, 128
+ push rax
+ mov rax, 1
+ pop rbx
+ imul rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcpy
+ add rsp, 16
+ mov rax, global_string_279
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_putu_buffer
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, global_string_280
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_putu_buffer
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 72
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 72
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_string
+ add rsp, 24
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_391:
+ mov rax, 1
+ push rax
+ mov rax, 42
+ pop rbx
+ add rax, rbx
+ mov [rbp-16], rax
+.loop_start_392:
+ mov rax, 60
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_392
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_keyword_to_string
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_starts_with
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_393
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_393:
+.loop_continue_392:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_392
+.loop_end_392:
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ push rax
+ call func_is_digit
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_394
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-16], rax
+.loop_start_395:
+.loop_continue_395:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_396
+ mov rax, 0
+ jmp .and_end_396
+.and_right_396:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ call func_is_digit
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_396:
+ cmp rax, 0
+ je .loop_end_395
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_395
+.loop_end_395:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_atoi
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_int
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_394:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ call func_is_alpha
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_397
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-16], rax
+.loop_start_398:
+.loop_continue_398:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_399
+ mov rax, 0
+ jmp .and_end_399
+.and_right_399:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ call func_is_alnum
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_399:
+ cmp rax, 0
+ je .loop_end_398
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_398
+.loop_end_398:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-24], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ call func_memcpy
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_identifier
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_397:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_400
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov [rbp-16], rax
+.loop_start_401:
+.loop_continue_401:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_402
+ mov rax, 0
+ jmp .and_end_402
+.and_right_402:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_402:
+ cmp rax, 0
+ je .loop_end_401
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_401
+.loop_end_401:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_403
+ mov rax, global_string_281
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, global_string_282
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_403:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ sub rax, rbx
+ mov [rbp-48], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_memcpy
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_string
+ add rsp, 24
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_400:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_404
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, 92
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_405
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, 110
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_406
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 10
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_406
+.if_else_406:
+ mov rax, 116
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_407
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 9
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_407
+.if_else_407:
+ mov rax, 110
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_408
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 10
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_408
+.if_else_408:
+ mov rax, 114
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_409
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 13
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_409
+.if_else_409:
+ mov rax, 116
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_410
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 9
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_410
+.if_else_410:
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_411
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_411
+.if_else_411:
+.if_end_411:
+.if_end_410:
+.if_end_409:
+.if_end_408:
+.if_end_407:
+.if_end_406:
+.if_end_405:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_char
+ add rsp, 24
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_404:
+ mov rax, global_string_283
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, global_string_284
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_285
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_388:
+.if_end_385:
+.if_end_383:
+.if_end_381:
+.if_end_378:
+.if_end_375:
+.if_end_373:
+.if_end_371:
+.if_end_370:
+.if_end_366:
+.if_end_365:
+.if_end_364:
+.if_end_363:
+.if_end_362:
+.if_end_361:
+.if_end_360:
+.if_end_359:
+.if_end_358:
+.if_end_357:
+.if_end_356:
+.if_end_355:
+.if_end_354:
+.if_end_353:
+.if_end_352:
+.if_end_351:
+.if_end_350:
+.if_end_349:
+ jmp .loop_start_348
+.loop_end_348:
+ mov rax, 0
+ push rax
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_next_assert
+func_lexer_next_assert:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_412
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ call func_location_print
+ add rsp, 8
+ mov rax, global_string_286
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, global_string_287
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+.if_end_412:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_peek
+func_lexer_peek:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_block_stack_push
+func_block_stack_push:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_block_stack_pop
+func_block_stack_pop:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ push rax
+ call func_vector_pop
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741912
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741912
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_constant_push
+func_constant_push:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 26
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741944
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_local_variable
+func_find_local_variable:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 32
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_413
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_413:
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-8], rax
+.loop_start_414:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_414
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, 0
+ mov [rbp-24], rax
+.loop_start_415:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_415
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_416
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_416:
+.loop_continue_415:
+ mov rax, rbp
+ sub rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_415
+.loop_end_415:
+.loop_continue_414:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_414
+.loop_end_414:
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_417:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_417
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_418
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_418:
+.loop_continue_417:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_417
+.loop_end_417:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_compound_type
+func_find_compound_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-8], rax
+.loop_start_419:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_419
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_420
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_420:
+.loop_continue_419:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_419
+.loop_end_419:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_global_variable
+func_find_global_variable:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_421:
+ mov rax, global_vars
+ add rax, 1073741920
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_421
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741920
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_422
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_422:
+.loop_continue_421:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_421
+.loop_end_421:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_function_definition
+func_find_function_definition:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_423:
+ mov rax, global_vars
+ add rax, 1073741888
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_423
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741888
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_424
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_424:
+.loop_continue_423:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_423
+.loop_end_423:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_constant
+func_find_constant:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_425:
+ mov rax, global_vars
+ add rax, 1073741944
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_425
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741944
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_426
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_426:
+.loop_continue_425:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_425
+.loop_end_425:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_identifier_exists
+func_identifier_exists:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_local_variable
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_427
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_427:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_global_variable
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_428
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_428:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_function_definition
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_429
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_429:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_builtin_function
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_430
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_430:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_compound_type
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_431
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_431:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_constant
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_432
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_432:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_eval_constexp
+func_eval_constexp:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_433
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_434
+ mov rax, global_string_288
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_434:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_433
+.if_else_433:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_binary_op
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_435
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_436
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_436
+.if_else_436:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_437
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_437
+.if_else_437:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_438
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ or rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_438
+.if_else_438:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_439
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ and rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_439
+.if_else_439:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_440
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ xor rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_440
+.if_else_440:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_441
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_441
+.if_else_441:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_442
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cqo
+ idiv rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_442
+.if_else_442:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_443
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cqo
+ idiv rbx
+ mov rax, rdx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_443
+.if_else_443:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_444
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_444
+.if_else_444:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_445
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_445
+.if_else_445:
+ mov rax, global_string_289
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_445:
+.if_end_444:
+.if_end_443:
+.if_end_442:
+.if_end_441:
+.if_end_440:
+.if_end_439:
+.if_end_438:
+.if_end_437:
+.if_end_436:
+ jmp .if_end_435
+.if_else_435:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_446
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ neg rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_446
+.if_else_446:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_447
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ not rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_447
+.if_else_447:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_448
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_448
+.if_else_448:
+ mov rax, global_string_290
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_448:
+.if_end_447:
+.if_end_446:
+.if_end_435:
+.if_end_433:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_constant_declaration
+func_parse_constant_declaration:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_449
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_291
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_292
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_449:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_450
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 51
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_451
+ mov rax, global_string_293
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_294
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_451:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.if_end_450:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_literal
+func_parse_literal:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 48
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 25
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_452
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_452
+.if_else_452:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_453
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 7
+ push rax
+ call func_type_new_ptr
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_453
+.if_else_453:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_454
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 7
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_454
+.if_else_454:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_295
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_296
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_454:
+.if_end_453:
+.if_end_452:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_type
+func_parse_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 80
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 51
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_455
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_455
+.if_else_455:
+ mov rax, 43
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_456
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 7
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_456
+.if_else_456:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_457
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 0
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_457
+.if_else_457:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_compound_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_458
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_297
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_298
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_458:
+.if_end_457:
+.if_end_456:
+.if_end_455:
+ mov rax, 1
+ mov [rbp-56], rax
+.loop_start_459:
+.loop_continue_459:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ cmp rax, 0
+ je .loop_end_459
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_460
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 2
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_460
+.if_else_460:
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_461
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 3
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_462
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_462
+.if_else_462:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_463
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_constant
+ add rsp, 8
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_464
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_299
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_300
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_464:
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-80], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_463
+.if_else_463:
+ mov rax, global_string_301
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_302
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_463:
+.if_end_462:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_461
+.if_else_461:
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_461:
+.if_end_460:
+ jmp .loop_start_459
+.loop_end_459:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_function_call_args
+func_parse_function_call_args:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ mov rax, 27
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_465:
+.loop_continue_465:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_465
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_466
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.if_end_466:
+ jmp .loop_start_465
+.loop_end_465:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_467
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_303
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_304
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_467:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_identifier
+func_parse_identifier:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_local_variable
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_468
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 34
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_decay_array_to_pointer
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_468:
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_global_variable
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_469
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 35
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_decay_array_to_pointer
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_469:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_function_definition
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_470
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_function_call_args
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_470:
+ mov rax, rbp
+ sub rax, 64
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_builtin_function
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_471
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_function_call_args
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_471:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_constant
+ add rsp, 8
+ mov [rbp-72], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_472
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_472:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_305
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_306
+ push rax
+ call func_die_loc2
+ add rsp, 32
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_factor
+func_parse_factor:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 96
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_473
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 0
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_473
+.if_else_473:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_474
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 2
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_474
+.if_else_474:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_475
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 23
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_476
+ mov rax, global_string_307
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_308
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_476:
+ mov rax, 5
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_475
+.if_else_475:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_477
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 23
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_478
+ mov rax, global_string_309
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_310
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_478:
+ mov rax, 6
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_477
+.if_else_477:
+ mov rax, 54
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_479
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_479
+.if_else_479:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_480
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 1
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_480
+.if_else_480:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_481
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ jmp .if_end_481
+.if_else_481:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_literal_token
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_482
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_482
+.if_else_482:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_483
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_identifier
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_483
+.if_else_483:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_484
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 3
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_485
+ mov rax, global_string_311
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_312
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_485:
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_484
+.if_else_484:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_486
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_487
+ mov rax, global_string_313
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_314
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_487:
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 4
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_486
+.if_else_486:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_315
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_316
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_486:
+.if_end_484:
+.if_end_483:
+.if_end_482:
+.if_end_481:
+.if_end_480:
+.if_end_479:
+.if_end_477:
+.if_end_475:
+.if_end_474:
+.if_end_473:
+ mov rax, 1
+ mov [rbp-56], rax
+.loop_start_488:
+.loop_continue_488:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ cmp rax, 0
+ je .loop_end_488
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_489
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_490
+ mov rax, global_string_317
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_318
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_490:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, 5
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 4
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ jmp .if_end_489
+.if_else_489:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_491
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_struct_or_structptr
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_492
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_319
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_320
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_492:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ cmp rax, 0
+ je .cond_else_493
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ jmp .cond_end_493
+.cond_else_493:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+.cond_end_493:
+ mov [rbp-72], rax
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-80], rax
+ mov rax, rbp
+ sub rax, 80
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ push rax
+ call func_compound_find_field
+ add rsp, 16
+ mov [rbp-88], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_494
+ mov rax, global_string_321
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_322
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 80
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_323
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_324
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_494:
+ mov rax, 24
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-96], rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ push rax
+ call func_decay_array_to_pointer
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_491
+.if_else_491:
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_491:
+.if_end_489:
+ jmp .loop_start_488
+.loop_end_488:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_term
+func_parse_term:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_495:
+.loop_continue_495:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_497
+ mov rax, 1
+ jmp .or_end_497
+.or_right_497:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_497:
+ cmp rax, 0
+ je .or_right_496
+ mov rax, 1
+ jmp .or_end_496
+.or_right_496:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_496:
+ cmp rax, 0
+ je .loop_end_495
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_495
+.loop_end_495:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_additive
+func_parse_additive:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_term
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_498:
+.loop_continue_498:
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_501
+ mov rax, 1
+ jmp .or_end_501
+.or_right_501:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_501:
+ cmp rax, 0
+ je .or_right_500
+ mov rax, 1
+ jmp .or_end_500
+.or_right_500:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_500:
+ cmp rax, 0
+ je .or_right_499
+ mov rax, 1
+ jmp .or_end_499
+.or_right_499:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_499:
+ cmp rax, 0
+ je .loop_end_498
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_term
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_498
+.loop_end_498:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_relational
+func_parse_relational:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_additive
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_502:
+.loop_continue_502:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_505
+ mov rax, 1
+ jmp .or_end_505
+.or_right_505:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_505:
+ cmp rax, 0
+ je .or_right_504
+ mov rax, 1
+ jmp .or_end_504
+.or_right_504:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_504:
+ cmp rax, 0
+ je .or_right_503
+ mov rax, 1
+ jmp .or_end_503
+.or_right_503:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_503:
+ cmp rax, 0
+ je .loop_end_502
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_additive
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_502
+.loop_end_502:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_equality
+func_parse_equality:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_relational
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_506:
+.loop_continue_506:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_507
+ mov rax, 1
+ jmp .or_end_507
+.or_right_507:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_507:
+ cmp rax, 0
+ je .loop_end_506
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_relational
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_506
+.loop_end_506:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_and
+func_parse_and:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_equality
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_508:
+.loop_continue_508:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_508
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_equality
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_508
+.loop_end_508:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_exclusive_or
+func_parse_exclusive_or:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_and
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_509:
+.loop_continue_509:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_509
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_and
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_509
+.loop_end_509:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_inclusive_or
+func_parse_inclusive_or:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_exclusive_or
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_510:
+.loop_continue_510:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_510
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_exclusive_or
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_510
+.loop_end_510:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_logical_and
+func_parse_logical_and:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_inclusive_or
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_511:
+.loop_continue_511:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_511
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_inclusive_or
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_511
+.loop_end_511:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_logical_or
+func_parse_logical_or:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_logical_and
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_512:
+.loop_continue_512:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_512
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_logical_and
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_512
+.loop_end_512:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_conditional_exp
+func_parse_conditional_exp:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_logical_or
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_513
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, 28
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_types_equal
+ add rsp, 16
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_514
+ mov rax, global_string_325
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_326
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_514:
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_513:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_expression
+func_parse_expression:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_conditional_exp
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_515
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_516
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 23
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_516:
+.if_end_515:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_add_variable_to_current_block
+func_add_variable_to_current_block:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ push rax
+ call func_vector_top
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_align_up
+ add rsp, 16
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ push rax
+ call func_assert
+ add rsp, 8
+ mov rax, global_vars
+ add rax, 1073741912
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741912
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, global_vars
+ add rax, 1073741912
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741912
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_max
+ add rsp, 16
+ mov [rbp-24], rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_add_global_variable
+func_add_global_variable:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, global_vars
+ add rax, 1073741928
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_align_up
+ add rsp, 16
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741928
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741928
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741920
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_var_declaration
+func_parse_var_declaration:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_517
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_327
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_328
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_517:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ mov [rbp-48], rax
+ mov rax, 33
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 1
+ mov [rbp-72], rax
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_518
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.if_end_518:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_519
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_520
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_520
+.if_else_520:
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_convertible
+ add rsp, 16
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_521
+ mov rax, global_string_329
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_330
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_331
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_332
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_521:
+.if_end_520:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_519
+.if_else_519:
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_522
+ mov rax, global_string_333
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_334
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_522:
+.if_end_519:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_523
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ call func_add_global_variable
+ add rsp, 8
+ jmp .if_end_523
+.if_else_523:
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ call func_add_variable_to_current_block
+ add rsp, 8
+.if_end_523:
+ mov rax, 0
+ cmp rax, 0
+ je .if_end_524
+ mov rax, global_string_335
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ call func_location_print
+ add rsp, 8
+ mov rax, global_string_336
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_337
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_338
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_339
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_abs
+ add rsp, 8
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rax, global_string_340
+ push rax
+ call func_putsln
+ add rsp, 8
+.if_end_524:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_function_params
+func_parse_function_params:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 80
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+.loop_start_525:
+.loop_continue_525:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_525
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_526
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_341
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_342
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_526:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, 24
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_527
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.if_end_527:
+ jmp .loop_start_525
+.loop_end_525:
+ mov rax, 16
+ neg rax
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-56], rax
+ mov rax, 0
+ mov [rbp-64], rax
+.loop_start_528:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_528
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_align_up
+ add rsp, 16
+ mov [rbp-80], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+.loop_continue_528:
+ mov rax, rbp
+ sub rax, 64
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_528
+.loop_end_528:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_for_loop
+func_parse_for_loop:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ mov rax, 49
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 32
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 40
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_block_add_child
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_block_stack_push
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_529
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_var_declaration
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_529
+.if_else_529:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_530
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_530:
+.if_end_529:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_531
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_531:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_532
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_532:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ call func_block_stack_pop
+ add rsp, 0
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_statement
+func_parse_statement:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 48
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_533
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_block
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_533
+.if_else_533:
+ mov rax, 53
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_534
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 36
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_535
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_535
+.if_else_535:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_535:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ jmp .if_end_534
+.if_else_534:
+ mov rax, 50
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_536
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 29
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 46
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_537
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_537:
+ jmp .if_end_536
+.if_else_536:
+ mov rax, 58
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_538
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 30
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_538
+.if_else_538:
+ mov rax, 49
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_539
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_for_loop
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_539
+.if_else_539:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_540
+ mov rax, global_string_343
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 8
+ push rax
+ mov rax, global_string_344
+ push rax
+ call func_die_loc
+ add rsp, 24
+ jmp .if_end_540
+.if_else_540:
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_541
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_var_declaration
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ jmp .if_end_541
+.if_else_541:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+.if_end_541:
+.if_end_540:
+.if_end_539:
+.if_end_538:
+.if_end_536:
+.if_end_534:
+.if_end_533:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_block
+func_parse_block:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 48
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 40
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_block_stack_push
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_542:
+.loop_continue_542:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_542
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_block_add_child
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_542
+.loop_end_542:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ call func_block_stack_pop
+ add rsp, 0
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_enum_declaration
+func_parse_enum_declaration:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 48
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 0
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_543:
+.loop_continue_543:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_543
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_544
+ mov rax, global_string_345
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_346
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_544:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_545
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .if_end_545
+.if_else_545:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_546
+ mov rax, global_string_347
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_348
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_546:
+.if_end_545:
+ jmp .loop_start_543
+.loop_end_543:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_struct_union_declaration
+func_parse_struct_union_declaration:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_548
+ mov rax, 0
+ jmp .and_end_548
+.and_right_548:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_548:
+ cmp rax, 0
+ je .if_end_547
+ mov rax, global_string_349
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_350
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_547:
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_549
+ mov rax, 4
+ jmp .cond_end_549
+.cond_else_549:
+ mov rax, 5
+.cond_end_549:
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_551
+ mov rax, 0
+ jmp .and_end_551
+.and_right_551:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ cmp rax, 0
+ setne al
+.and_end_551:
+ cmp rax, 0
+ je .if_end_550
+ mov rax, global_string_351
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_352
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_550:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_552
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ jmp .if_end_552
+.if_else_552:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, global_string_353
+ pop rbx
+ mov [rbx], rax
+.if_end_552:
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_553:
+.loop_continue_553:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_553
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-56], rax
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_555
+ mov rax, 1
+ jmp .or_end_555
+.or_right_555:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_555:
+ cmp rax, 0
+ je .if_else_554
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 64
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_struct_union_declaration
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_554
+.if_else_554:
+ mov rax, rbp
+ sub rax, 64
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_554:
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_compound_push_field
+ add rsp, 24
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_553
+.loop_end_553:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_function
+func_parse_function:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 37
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_556
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_function_definition
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_557
+ mov rax, global_string_354
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_355
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_557:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 32
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_558
+ mov rax, global_string_356
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_357
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_558:
+ mov rax, global_vars
+ add rax, 1073741896
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_556
+.if_else_556:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741888
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, global_vars
+ add rax, 1073741896
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_556:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_function_params
+ add rsp, 16
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_559
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_559
+.if_else_559:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 0
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_559:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_560
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_block
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 32
+ push rax
+ mov rax, 1
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_560
+.if_else_560:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 32
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_560:
+ mov rax, global_vars
+ add rax, 1073741896
+ push rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parser_open_new_file
+func_parser_open_new_file:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_561:
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_561
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_562
+ mov rax, global_string_358
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, global_string_359
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+.if_end_562:
+.loop_continue_561:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_561
+.loop_end_561:
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_563:
+ mov rax, global_vars
+ add rax, 1073741960
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_563
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741960
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_564
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_564:
+.loop_continue_563:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_563
+.loop_end_563:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741960
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_new_open_file
+ add rsp, 8
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_program
+func_parse_program:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ call func_initialize_builtins
+ add rsp, 0
+ mov rax, 39
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+.loop_start_565:
+.loop_continue_565:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_565
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_566
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_function
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_block_add_child
+ add rsp, 16
+ jmp .if_end_566
+.if_else_566:
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_567
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_var_declaration
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_block_add_child
+ add rsp, 16
+ jmp .if_end_567
+.if_else_567:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_568
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ jmp .if_end_568
+.if_else_568:
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_569
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_constant_declaration
+ add rsp, 8
+ jmp .if_end_569
+.if_else_569:
+ mov rax, 59
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_570
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_parser_open_new_file
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_top
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_570
+.if_else_570:
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_572
+ mov rax, 1
+ jmp .or_end_572
+.or_right_572:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_572:
+ cmp rax, 0
+ je .if_else_571
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_struct_union_declaration
+ add rsp, 16
+ jmp .if_end_571
+.if_else_571:
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_573
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_enum_declaration
+ add rsp, 8
+ jmp .if_end_573
+.if_else_573:
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_360
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 8
+ push rax
+ mov rax, global_string_361
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_573:
+.if_end_571:
+.if_end_570:
+.if_end_569:
+.if_end_568:
+.if_end_567:
+.if_end_566:
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_574:
+.loop_continue_574:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_575
+ mov rax, 0
+ jmp .and_end_575
+.and_right_575:
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_575:
+ cmp rax, 0
+ je .loop_end_574
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_pop
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_top
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_574
+.loop_end_574:
+ jmp .loop_start_565
+.loop_end_565:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_asm4
+func_emit_asm4:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_asm3
+func_emit_asm3:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_asm2
+func_emit_asm2:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_asm
+func_emit_asm:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_num
+func_emit_num:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_576
+ mov rax, global_string_362
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ neg rax
+ pop rbx
+ mov [rbx], rax
+.if_end_576:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fputu
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_syscall
+func_generate_syscall:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_string_363
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_364
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_365
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_subregister_for_type
+func_subregister_for_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_577
+ mov rax, global_string_366
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_577:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_578
+ mov rax, global_string_367
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_578:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_579
+ mov rax, global_string_368
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_579:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_580
+ mov rax, global_string_369
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_580:
+ mov rax, global_string_370
+ push rax
+ mov rax, global_string_371
+ push rax
+ call func_die2
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_specifier_for_type
+func_specifier_for_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_581
+ mov rax, global_string_372
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_581:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_582
+ mov rax, global_string_373
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_582:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_583
+ mov rax, global_string_374
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_583:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_584
+ mov rax, global_string_375
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_584:
+ mov rax, global_string_376
+ push rax
+ mov rax, global_string_377
+ push rax
+ call func_die2
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_lvalue_into_rax
+func_generate_lvalue_into_rax:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_585
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, global_string_378
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_379
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_380
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_585
+.if_else_585:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_586
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, global_string_381
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_382
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_383
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_586
+.if_else_586:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_587
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_588
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ jmp .if_end_588
+.if_else_588:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_lvalue_into_rax
+ add rsp, 8
+.if_end_588:
+ mov rax, global_string_384
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_385
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_587
+.if_else_587:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_589
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ jmp .if_end_589
+.if_else_589:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_386
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_589:
+.if_end_587:
+.if_end_586:
+.if_end_585:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_function_call
+func_generate_function_call:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 32
+ mov rax, 0
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-24], rax
+.loop_start_590:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_590
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_387
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.loop_continue_590:
+ mov rax, rbp
+ sub rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_590
+.loop_end_590:
+ mov rax, global_string_388
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_389
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+ mov rax, global_string_390
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_391
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_expr_into_rax
+func_generate_expr_into_rax:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_591
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_592
+ mov rax, global_string_392
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_393
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_592
+.if_else_592:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_593
+ mov rax, global_string_394
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ movsx rax, byte [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_395
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_593
+.if_else_593:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_594
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741984
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741984
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, global_string_396
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_397
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_594
+.if_else_594:
+ mov rax, global_string_398
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_594:
+.if_end_593:
+.if_end_592:
+ jmp .if_end_591
+.if_else_591:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_595
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_lvalue_into_rax
+ add rsp, 8
+ jmp .if_end_595
+.if_else_595:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_596
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_399
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_400
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_401
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_402
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_403
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_404
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_405
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_406
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_407
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_596
+.if_else_596:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_597
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_408
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_409
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_410
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_597
+.if_else_597:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_598
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_411
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_412
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_413
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_598
+.if_else_598:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_599
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_414
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_415
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_416
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_599
+.if_else_599:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_600
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_417
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_418
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_419
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_600
+.if_else_600:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_601
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_420
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_421
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_422
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_423
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_601
+.if_else_601:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_602
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_424
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_425
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_426
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_427
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_428
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_602
+.if_else_602:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_603
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_429
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_430
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_431
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_603
+.if_else_603:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_604
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_432
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_433
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_434
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_435
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_436
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_604
+.if_else_604:
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_605
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_437
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_438
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_439
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_440
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_441
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_605
+.if_else_605:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_606
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_442
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_443
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_444
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_445
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_446
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_606
+.if_else_606:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_607
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_447
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_448
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_449
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_450
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_451
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_607
+.if_else_607:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_608
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_452
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_453
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_454
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_455
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_456
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_608
+.if_else_608:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_609
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_457
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_458
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_459
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_460
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_461
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_609
+.if_else_609:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_610
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_462
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_463
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_464
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_610
+.if_else_610:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_611
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_465
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_466
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_467
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_611
+.if_else_611:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_612
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_468
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_469
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_470
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_612
+.if_else_612:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_613
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_471
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_613
+.if_else_613:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_614
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_472
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_614
+.if_else_614:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_615
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_473
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_474
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_475
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_615
+.if_else_615:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_616
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_476
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_477
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_478
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_479
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_480
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_481
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_482
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_483
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_484
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_485
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_486
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_487
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_616
+.if_else_616:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_617
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_488
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_489
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_490
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_491
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_492
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_493
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_494
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_495
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_496
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_497
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_498
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_499
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_617
+.if_else_617:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_618
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_generate_lvalue_into_rax
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_619
+ mov rax, global_string_500
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_619
+.if_else_619:
+ mov rax, global_string_501
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_specifier_for_type
+ add rsp, 8
+ push rax
+ mov rax, global_string_502
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+.if_end_619:
+ jmp .if_end_618
+.if_else_618:
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_620
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_lvalue_into_rax
+ add rsp, 8
+ mov rax, global_string_503
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_504
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_505
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_subregister_for_type
+ add rsp, 8
+ push rax
+ mov rax, global_string_506
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+ jmp .if_end_620
+.if_else_620:
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_621
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_generate_function_call
+ add rsp, 8
+ jmp .if_end_621
+.if_else_621:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_507
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_621:
+.if_end_620:
+.if_end_618:
+.if_end_617:
+.if_end_616:
+.if_end_615:
+.if_end_614:
+.if_end_613:
+.if_end_612:
+.if_end_611:
+.if_end_610:
+.if_end_609:
+.if_end_608:
+.if_end_607:
+.if_end_606:
+.if_end_605:
+.if_end_604:
+.if_end_603:
+.if_end_602:
+.if_end_601:
+.if_end_600:
+.if_end_599:
+.if_end_598:
+.if_end_597:
+.if_end_596:
+.if_end_595:
+.if_end_591:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_statement
+func_generate_statement:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_622
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_623
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ jmp .if_end_623
+.if_else_623:
+ mov rax, global_string_508
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_623:
+ mov rax, global_string_509
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_510
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_511
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_512
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_513
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_622
+.if_else_622:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_624
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_625
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, global_string_514
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_515
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_625:
+ jmp .if_end_624
+.if_else_624:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_626
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_generate_block
+ add rsp, 8
+ jmp .if_end_626
+.if_else_626:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_627
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_628
+ mov rax, global_string_516
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_517
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_518
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_519
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_520
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_628
+.if_else_628:
+ mov rax, global_string_521
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_522
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_523
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_524
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_525
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_526
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_527
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_528
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_529
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_628:
+ jmp .if_end_627
+.if_else_627:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_629
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, global_string_530
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_531
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_532
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_533
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_534
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_535
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_536
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_537
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_538
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_539
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_540
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_629
+.if_else_629:
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_630
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_631
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+.if_end_631:
+ mov rax, global_string_541
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_542
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_632
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_543
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_544
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_545
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_632:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_546
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_547
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_633
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+.if_end_633:
+ mov rax, global_string_548
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_549
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_550
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_551
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_630
+.if_else_630:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+.if_end_630:
+.if_end_629:
+.if_end_627:
+.if_end_626:
+.if_end_624:
+.if_end_622:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_block
+func_generate_block:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_634:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_634
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+.loop_continue_634:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_634
+.loop_end_634:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_function
+func_generate_function:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_635
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_635:
+ mov rax, global_string_552
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_553
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+ mov rax, global_string_554
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_555
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+ mov rax, global_string_556
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_557
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_558
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_559
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_block
+ add rsp, 8
+ mov rax, global_string_560
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_561
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_562
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_563
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_program
+func_generate_program:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 40
+ mov rax, global_vars
+ add rax, 1073741968
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_636:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_636
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-24], rax
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_637
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ call func_generate_function
+ add rsp, 8
+ jmp .if_end_637
+.if_else_637:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_638
+ jmp .if_end_638
+.if_else_638:
+ mov rax, global_string_564
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_638:
+.if_end_637:
+.loop_continue_636:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_636
+.loop_end_636:
+ mov rax, 0
+ cmp rax, 0
+ je .if_else_639
+ mov rax, global_string_565
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_566
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_567
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_568
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_569
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_570
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_639
+.if_else_639:
+ mov rax, global_string_571
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_572
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_573
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_574
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_575
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_576
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_577
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_578
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_639:
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_640:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_640
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-24], rax
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_642
+ mov rax, 0
+ jmp .and_end_642
+.and_right_642:
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ cmp rax, 0
+ setne al
+.and_end_642:
+ cmp rax, 0
+ je .if_end_641
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-40], rax
+ mov rax, global_string_579
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_580
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 40
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_581
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_582
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_subregister_for_type
+ add rsp, 8
+ push rax
+ mov rax, global_string_583
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+.if_end_641:
+.loop_continue_640:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_640
+.loop_end_640:
+ mov rax, global_string_584
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_585
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 60
+ push rax
+ call func_generate_syscall
+ add rsp, 8
+ call func_generate_builtins
+ add rsp, 0
+ mov rax, global_string_586
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_587
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_vars
+ add rax, 1073741928
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_588
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_589
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_643:
+ mov rax, global_vars
+ add rax, 1073741984
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_643
+ mov rax, global_string_590
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_591
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741984
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_592
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.loop_continue_643:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_643
+.loop_end_643:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_print_usage_and_exit
+func_print_usage_and_exit:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_string_593
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, global_string_594
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_595
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_596
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_597
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_598
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_599
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_600
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_cli_args
+func_parse_cli_args:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 1
+ mov [rbp-8], rax
+.loop_start_644:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_644
+ mov rax, global_string_601
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_645
+ mov rax, global_vars
+ add rax, 1073742016
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742008
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741992
+ push rax
+ mov rax, global_string_602
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_645
+.if_else_645:
+ mov rax, global_string_603
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_646
+ mov rax, 0
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_print_usage_and_exit
+ add rsp, 16
+ jmp .if_end_646
+.if_else_646:
+ mov rax, global_string_604
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_647
+ mov rax, global_vars
+ add rax, 1073742024
+ push rax
+ mov rax, 1
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_647
+.if_else_647:
+ mov rax, global_string_605
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_648
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742000
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_648
+.if_else_648:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741992
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_649
+ mov rax, global_string_606
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_650
+ mov rax, global_vars
+ add rax, 1073741992
+ push rax
+ mov rax, global_string_607
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742008
+ push rax
+ mov rax, 4096
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742016
+ push rax
+ mov rax, 4096
+ push rax
+ mov rax, global_vars
+ add rax, 1073742008
+ mov rax, [rax]
+ push rax
+ mov rax, 0
+ push rax
+ call func_read
+ add rsp, 24
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742016
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073742008
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, 4096
+ push rax
+ mov rax, global_vars
+ add rax, 1073742016
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_651
+ mov rax, global_string_608
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+.if_end_651:
+ jmp .if_end_650
+.if_else_650:
+ mov rax, global_vars
+ add rax, 1073741992
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 114
+ push rax
+ mov rax, global_vars
+ add rax, 1073741992
+ mov rax, [rax]
+ push rax
+ call func_fopen
+ add rsp, 16
+ mov [rbp-16], rax
+ mov rax, global_vars
+ add rax, 1073742008
+ push rax
+ mov rax, global_vars
+ add rax, 1073742016
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_fread_to_string
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_fclose
+ add rsp, 8
+.if_end_650:
+ jmp .if_end_649
+.if_else_649:
+ mov rax, 1
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_print_usage_and_exit
+ add rsp, 16
+.if_end_649:
+.if_end_648:
+.if_end_647:
+.if_end_646:
+.if_end_645:
+.loop_continue_644:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_644
+.loop_end_644:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741992
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_652
+ mov rax, 1
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_print_usage_and_exit
+ add rsp, 16
+.if_end_652:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_main
+func_main:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_cli_args
+ add rsp, 16
+ mov rax, global_vars
+ add rax, 1073742016
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073742008
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741992
+ mov rax, [rax]
+ push rax
+ call func_lexer_new
+ add rsp, 24
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_parse_program
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, global_vars
+ add rax, 1073742024
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_653
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+.if_end_653:
+ mov rax, 119
+ push rax
+ mov rax, global_vars
+ add rax, 1073742000
+ mov rax, [rax]
+ push rax
+ call func_fopen
+ add rsp, 16
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_generate_program
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ call func_fclose
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global _start
+_start:
+ mov rbp, rsp
+ mov rax, rbp
+ add rax, 8
+ push rax
+ mov rax, [rbp]
+ push rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073741832
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741840
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741848
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741856
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741864
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073741872
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741880
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741888
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741896
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741904
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073741912
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741920
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073741928
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741936
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741944
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741952
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741960
+ mov [rbx], rax
+ mov rax, 1
+ neg rax
+ mov rbx, global_vars
+ add rbx, 1073741976
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741984
+ mov [rbx], rax
+ mov rax, global_string_609
+ mov rbx, global_vars
+ add rbx, 1073742000
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073742016
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073742024
+ mov [rbx], rax
+ call func_main
+ mov rdi, rax
+ mov rax, 60
+ syscall
+func_print:
+ mov rdi, [rsp+8]
+ mov r9, -3689348814741910323
+ sub rsp, 40
+ mov byte [rsp+31], 10
+ lea rcx, [rsp+30]
+ mov qword rbx, 0
+.L2:
+ mov rax, rdi
+ lea r8, [rsp+32]
+ mul r9
+ mov rax, rdi
+ sub r8, rcx
+ shr rdx, 3
+ lea rsi, [rdx+rdx*4]
+ add rsi, rsi
+ sub rax, rsi
+ add eax, 48
+ mov byte [rcx], al
+ mov rax, rdi
+ mov rdi, rdx
+ mov rdx, rcx
+ sub rcx, 1
+ cmp rax, 9
+ ja .L2
+ lea rax, [rsp+32]
+ mov edi, 1
+ sub rdx, rax
+ xor eax, eax
+ lea rsi, [rsp+32+rdx]
+ mov rdx, r8
+ mov rax, 1
+ syscall
+ add rsp, 40
+ ret
+func_syscall0:
+ mov rax, [rsp+8]
+ syscall
+ ret
+func_syscall1:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ syscall
+ ret
+func_syscall2:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ syscall
+ ret
+func_syscall3:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ mov rdx, [rsp+32]
+ syscall
+ ret
+func_syscall4:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ mov rdx, [rsp+32]
+ mov rcx, [rsp+40]
+ syscall
+ ret
+func_syscall5:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ mov rdx, [rsp+32]
+ mov rcx, [rsp+40]
+ mov r8, [rsp+48]
+ syscall
+ ret
+func_syscall6:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ mov rdx, [rsp+32]
+ mov rcx, [rsp+40]
+ mov r8, [rsp+48]
+ mov r9, [rsp+56]
+ syscall
+ ret
+func_fork:
+ mov rdi, [rsp+8]
+ mov rax, 57
+ syscall
+ ret
+section .bss
+ global_vars: resb 1073742032
+section .data
+ global_string_0: db `assertion failed`, 0
+ global_string_1: db `malloc: out of memory. only 1gb available`, 0
+ global_string_2: db `: Error in execve()`, 0
+ global_string_3: db `std/common.cup:261:14`, 0
+ global_string_4: db `: Error in wait()`, 0
+ global_string_5: db `std/common.cup:266:14`, 0
+ global_string_6: db `: Child did not exit normally`, 0
+ global_string_7: db `std/common.cup:269:14`, 0
+ global_string_8: db `: Child exited with non-zero status`, 0
+ global_string_9: db `std/common.cup:272:14`, 0
+ global_string_10: db `Unknown file open mode`, 0
+ global_string_11: db `Could not open file`, 0
+ global_string_12: db `Could not write to file`, 0
+ global_string_13: db `Could not read from file`, 0
+ global_string_14: db `Could not map file`, 0
+ global_string_15: db `TOKEN_AMPERSAND`, 0
+ global_string_16: db `TOKEN_AND`, 0
+ global_string_17: db `TOKEN_ASSIGN`, 0
+ global_string_18: db `TOKEN_BAR`, 0
+ global_string_19: db `TOKEN_CARET`, 0
+ global_string_20: db `TOKEN_CHARLIT`, 0
+ global_string_21: db `TOKEN_CLOSE_BRACE`, 0
+ global_string_22: db `TOKEN_CLOSE_BRACKET`, 0
+ global_string_23: db `TOKEN_CLOSE_PAREN`, 0
+ global_string_24: db `TOKEN_COLON`, 0
+ global_string_25: db `TOKEN_COMMA`, 0
+ global_string_26: db `TOKEN_DOT`, 0
+ global_string_27: db `TOKEN_EOF`, 0
+ global_string_28: db `TOKEN_EQ`, 0
+ global_string_29: db `TOKEN_EXCLAMATION`, 0
+ global_string_30: db `TOKEN_GEQ`, 0
+ global_string_31: db `TOKEN_GT`, 0
+ global_string_32: db `TOKEN_IDENTIFIER`, 0
+ global_string_33: db `TOKEN_INTLIT`, 0
+ global_string_34: db `TOKEN_LEQ`, 0
+ global_string_35: db `TOKEN_LSHIFT`, 0
+ global_string_36: db `TOKEN_LT`, 0
+ global_string_37: db `TOKEN_MINUS`, 0
+ global_string_38: db `TOKEN_MINUSEQUALS`, 0
+ global_string_39: db `TOKEN_MINUSMINUS`, 0
+ global_string_40: db `TOKEN_NEQ`, 0
+ global_string_41: db `TOKEN_OPEN_BRACE`, 0
+ global_string_42: db `TOKEN_OPEN_BRACKET`, 0
+ global_string_43: db `TOKEN_OPEN_PAREN`, 0
+ global_string_44: db `TOKEN_OR`, 0
+ global_string_45: db `TOKEN_PERCENT`, 0
+ global_string_46: db `TOKEN_PLUS`, 0
+ global_string_47: db `TOKEN_PLUSEQUALS`, 0
+ global_string_48: db `TOKEN_PLUSPLUS`, 0
+ global_string_49: db `TOKEN_QUESTION`, 0
+ global_string_50: db `TOKEN_RSHIFT`, 0
+ global_string_51: db `TOKEN_SEMICOLON`, 0
+ global_string_52: db `TOKEN_SLASH`, 0
+ global_string_53: db `TOKEN_STAR`, 0
+ global_string_54: db `TOKEN_STRINGLIT`, 0
+ global_string_55: db `TOKEN_TILDE`, 0
+ global_string_56: db `TOKEN_XOR`, 0
+ global_string_57: db `TOKEN_CHAR`, 0
+ global_string_58: db `TOKEN_CONST`, 0
+ global_string_59: db `TOKEN_ENUM`, 0
+ global_string_60: db `TOKEN_ELSE`, 0
+ global_string_61: db `TOKEN_DEFER`, 0
+ global_string_62: db `TOKEN_FN`, 0
+ global_string_63: db `TOKEN_FOR`, 0
+ global_string_64: db `TOKEN_IF`, 0
+ global_string_65: db `TOKEN_INT`, 0
+ global_string_66: db `TOKEN_LET`, 0
+ global_string_67: db `TOKEN_RETURN`, 0
+ global_string_68: db `TOKEN_SIZEOF`, 0
+ global_string_69: db `TOKEN_STRUCT`, 0
+ global_string_70: db `TOKEN_UNION`, 0
+ global_string_71: db `TOKEN_VOID`, 0
+ global_string_72: db `TOKEN_WHILE`, 0
+ global_string_73: db `TOKEN_IMPORT`, 0
+ global_string_74: db `\nUnknown token type in token_type_to_string: `, 0
+ global_string_75: db `char`, 0
+ global_string_76: db `const`, 0
+ global_string_77: db `enum`, 0
+ global_string_78: db `else`, 0
+ global_string_79: db `defer`, 0
+ global_string_80: db `fn`, 0
+ global_string_81: db `for`, 0
+ global_string_82: db `if`, 0
+ global_string_83: db `int`, 0
+ global_string_84: db `let`, 0
+ global_string_85: db `return`, 0
+ global_string_86: db `sizeof`, 0
+ global_string_87: db `struct`, 0
+ global_string_88: db `union`, 0
+ global_string_89: db `void`, 0
+ global_string_90: db `while`, 0
+ global_string_91: db `import`, 0
+ global_string_92: db `Unknown keyword in keyword_to_string: `, 0
+ global_string_93: db `: `, 0
+ global_string_94: db `Note: Error happened here: `, 0
+ global_string_95: db ``, 0
+ global_string_96: db `Vector is empty, nothing to pop.`, 0
+ global_string_97: db `Vector is empty, nothing to return.`, 0
+ global_string_98: db `Unknown type in size_for_type`, 0
+ global_string_99: db `*`, 0
+ global_string_100: db `[]`, 0
+ global_string_101: db `int`, 0
+ global_string_102: db `char`, 0
+ global_string_103: db `void`, 0
+ global_string_104: db `any`, 0
+ global_string_105: db `create_type_string: unknown type`, 0
+ global_string_106: db `AST_NEG`, 0
+ global_string_107: db `AST_NOT`, 0
+ global_string_108: db `AST_BWINV`, 0
+ global_string_109: db `AST_ADDROF`, 0
+ global_string_110: db `AST_DEREF`, 0
+ global_string_111: db `AST_PLUS`, 0
+ global_string_112: db `AST_MINUS`, 0
+ global_string_113: db `AST_MUL`, 0
+ global_string_114: db `AST_DIV`, 0
+ global_string_115: db `AST_MOD`, 0
+ global_string_116: db `AST_LSHIFT`, 0
+ global_string_117: db `AST_RSHIFT`, 0
+ global_string_118: db `AST_AND`, 0
+ global_string_119: db `AST_BWAND`, 0
+ global_string_120: db `AST_OR`, 0
+ global_string_121: db `AST_BWOR`, 0
+ global_string_122: db `AST_XOR`, 0
+ global_string_123: db `AST_EQ`, 0
+ global_string_124: db `AST_NEQ`, 0
+ global_string_125: db `AST_LT`, 0
+ global_string_126: db `AST_LEQ`, 0
+ global_string_127: db `AST_GT`, 0
+ global_string_128: db `AST_GEQ`, 0
+ global_string_129: db `AST_ASSIGN`, 0
+ global_string_130: db `AST_MEMBER`, 0
+ global_string_131: db `AST_LITERAL`, 0
+ global_string_132: db `AST_CONSTANT`, 0
+ global_string_133: db `AST_FUNCCALL`, 0
+ global_string_134: db `AST_CONDITIONAL`, 0
+ global_string_135: db `AST_IF`, 0
+ global_string_136: db `AST_WHILE`, 0
+ global_string_137: db `AST_DEFER`, 0
+ global_string_138: db `AST_FOR`, 0
+ global_string_139: db `AST_VARDECL`, 0
+ global_string_140: db `AST_LOCAL_VAR`, 0
+ global_string_141: db `AST_GLOBAL_VAR`, 0
+ global_string_142: db `AST_RETURN`, 0
+ global_string_143: db `AST_FUNC`, 0
+ global_string_144: db `AST_BUILTIN`, 0
+ global_string_145: db `AST_PROGRAM`, 0
+ global_string_146: db `AST_BLOCK`, 0
+ global_string_147: db `Unknown node type in node_type_to_string: `, 0
+ global_string_148: db `Unknown token in binary_token_to_op: `, 0
+ global_string_149: db `Unknown literal type in dump_ast`, 0
+ global_string_150: db `func `, 0
+ global_string_151: db `()\n`, 0
+ global_string_152: db `let `, 0
+ global_string_153: db `: `, 0
+ global_string_154: db ` =\n`, 0
+ global_string_155: db `Performing invalid unary operation on struct type`, 0
+ global_string_156: db `compiler/ast.cup:360:17`, 0
+ global_string_157: db `Cannot dereference non-pointer type`, 0
+ global_string_158: db `compiler/ast.cup:371:21`, 0
+ global_string_159: db `Cannot negate non-integer type`, 0
+ global_string_160: db `compiler/ast.cup:378:21`, 0
+ global_string_161: db `Performing invalid binary operation on struct type`, 0
+ global_string_162: db `compiler/ast.cup:393:17`, 0
+ global_string_163: db `Cannot add non-integer types`, 0
+ global_string_164: db `compiler/ast.cup:417:21`, 0
+ global_string_165: db `Cannot subtract pointers of different types`, 0
+ global_string_166: db `compiler/ast.cup:443:25`, 0
+ global_string_167: db `Cannot subtract non-integer types`, 0
+ global_string_168: db `compiler/ast.cup:453:21`, 0
+ global_string_169: db `Cannot do operation non-integer types:`, 0
+ global_string_170: db `compiler/ast.cup:459:22`, 0
+ global_string_171: db `compound_push_field: not a compound type`, 0
+ global_string_172: db `val`, 0
+ global_string_173: db `arg`, 0
+ global_string_174: db `SYS_execve`, 0
+ global_string_175: db `SYS_execve`, 0
+ global_string_176: db `SYS_read`, 0
+ global_string_177: db `SYS_write`, 0
+ global_string_178: db `SYS_exit`, 0
+ global_string_179: db `SYS_open`, 0
+ global_string_180: db `SYS_lseek`, 0
+ global_string_181: db `SYS_openat`, 0
+ global_string_182: db `SYS_close`, 0
+ global_string_183: db `SYS_fork`, 0
+ global_string_184: db `SYS_wait4`, 0
+ global_string_185: db `SYS_mmap`, 0
+ global_string_186: db `SEEK_SET`, 0
+ global_string_187: db `SEEK_CUR`, 0
+ global_string_188: db `SEEK_END`, 0
+ global_string_189: db `O_RDONLY`, 0
+ global_string_190: db `O_WRONLY`, 0
+ global_string_191: db `O_RDWR`, 0
+ global_string_192: db `O_CREAT`, 0
+ global_string_193: db `O_EXCL`, 0
+ global_string_194: db `O_TRUNC`, 0
+ global_string_195: db `AT_FDCWD`, 0
+ global_string_196: db `PROT_READ`, 0
+ global_string_197: db `PROT_WRITE`, 0
+ global_string_198: db `PROT_EXEC`, 0
+ global_string_199: db `PROT_NONE`, 0
+ global_string_200: db `MAP_SHARED`, 0
+ global_string_201: db `MAP_PRIVATE`, 0
+ global_string_202: db `MAP_ANONYMOUS`, 0
+ global_string_203: db `MAP_FIXED`, 0
+ global_string_204: db `MAP_FAILED`, 0
+ global_string_205: db `OS_IS_MACOS`, 0
+ global_string_206: db `OS_IS_LINUX`, 0
+ global_string_207: db `print`, 0
+ global_string_208: db `val`, 0
+ global_string_209: db `fork`, 0
+ global_string_210: db `syscall0`, 0
+ global_string_211: db `syscall1`, 0
+ global_string_212: db `syscall2`, 0
+ global_string_213: db `syscall3`, 0
+ global_string_214: db `syscall4`, 0
+ global_string_215: db `syscall5`, 0
+ global_string_216: db `syscall6`, 0
+ global_string_217: db `syscall7`, 0
+ global_string_218: db `func_print:\n`, 0
+ global_string_219: db ` mov rdi, [rsp+8]\n`, 0
+ global_string_220: db ` mov r9, -3689348814741910323\n`, 0
+ global_string_221: db ` sub rsp, 40\n`, 0
+ global_string_222: db ` mov byte [rsp+31], 10\n`, 0
+ global_string_223: db ` lea rcx, [rsp+30]\n`, 0
+ global_string_224: db ` mov qword rbx, 0\n`, 0
+ global_string_225: db `.L2:\n`, 0
+ global_string_226: db ` mov rax, rdi\n`, 0
+ global_string_227: db ` lea r8, [rsp+32]\n`, 0
+ global_string_228: db ` mul r9\n`, 0
+ global_string_229: db ` mov rax, rdi\n`, 0
+ global_string_230: db ` sub r8, rcx\n`, 0
+ global_string_231: db ` shr rdx, 3\n`, 0
+ global_string_232: db ` lea rsi, [rdx+rdx*4]\n`, 0
+ global_string_233: db ` add rsi, rsi\n`, 0
+ global_string_234: db ` sub rax, rsi\n`, 0
+ global_string_235: db ` add eax, 48\n`, 0
+ global_string_236: db ` mov byte [rcx], al\n`, 0
+ global_string_237: db ` mov rax, rdi\n`, 0
+ global_string_238: db ` mov rdi, rdx\n`, 0
+ global_string_239: db ` mov rdx, rcx\n`, 0
+ global_string_240: db ` sub rcx, 1\n`, 0
+ global_string_241: db ` cmp rax, 9\n`, 0
+ global_string_242: db ` ja .L2\n`, 0
+ global_string_243: db ` lea rax, [rsp+32]\n`, 0
+ global_string_244: db ` mov edi, 1\n`, 0
+ global_string_245: db ` sub rdx, rax\n`, 0
+ global_string_246: db ` xor eax, eax\n`, 0
+ global_string_247: db ` lea rsi, [rsp+32+rdx]\n`, 0
+ global_string_248: db ` mov rdx, r8\n`, 0
+ global_string_249: db ` add rsp, 40\n`, 0
+ global_string_250: db ` ret\n`, 0
+ global_string_251: db `rax`, 0
+ global_string_252: db `rdi`, 0
+ global_string_253: db `rsi`, 0
+ global_string_254: db `rdx`, 0
+ global_string_255: db `rcx`, 0
+ global_string_256: db `r8`, 0
+ global_string_257: db `r9`, 0
+ global_string_258: db `r10`, 0
+ global_string_259: db `r11`, 0
+ global_string_260: db `r12`, 0
+ global_string_261: db `func_syscall`, 0
+ global_string_262: db `:\n`, 0
+ global_string_263: db ` mov `, 0
+ global_string_264: db `, [rsp+`, 0
+ global_string_265: db `]\n`, 0
+ global_string_266: db ` syscall\n`, 0
+ global_string_267: db ` ret\n`, 0
+ global_string_268: db `func_fork:\n`, 0
+ global_string_269: db ` mov rdi, [rsp+8]\n`, 0
+ global_string_270: db ` mov rax, `, 0
+ global_string_271: db `\n`, 0
+ global_string_272: db ` syscall\n`, 0
+ global_string_273: db ` cmp rdx, 0\n`, 0
+ global_string_274: db ` je .L1\n`, 0
+ global_string_275: db ` mov rax, 0\n`, 0
+ global_string_276: db `.L1:\n`, 0
+ global_string_277: db ` ret\n`, 0
+ global_string_278: db `here`, 0
+ global_string_279: db `:`, 0
+ global_string_280: db `:`, 0
+ global_string_281: db `EOF while parsing string literal`, 0
+ global_string_282: db `compiler/lexer.cup:248:29`, 0
+ global_string_283: db `Unknown character in lexer_next: '`, 0
+ global_string_284: db `'`, 0
+ global_string_285: db `Exiting`, 0
+ global_string_286: db `: Expected `, 0
+ global_string_287: db ` but got `, 0
+ global_string_288: db `Constant expressions can only contain integer literals/constants.`, 0
+ global_string_289: db `Unsupported binary operator in constant expression.`, 0
+ global_string_290: db `Unsupported constant expression.`, 0
+ global_string_291: db `Identifier already exists: `, 0
+ global_string_292: db `compiler/parser.cup:147:18`, 0
+ global_string_293: db `Expected 'int' type for constant`, 0
+ global_string_294: db `compiler/parser.cup:155:21`, 0
+ global_string_295: db `Unexpected token in parse_literal: `, 0
+ global_string_296: db `compiler/parser.cup:182:18`, 0
+ global_string_297: db `Unknown token in parse_type: `, 0
+ global_string_298: db `compiler/parser.cup:204:22`, 0
+ global_string_299: db `Could not find constant: `, 0
+ global_string_300: db `compiler/parser.cup:226:30`, 0
+ global_string_301: db `Expected a constant expression for array size`, 0
+ global_string_302: db `compiler/parser.cup:231:25`, 0
+ global_string_303: db `Function call argument count mismatch: `, 0
+ global_string_304: db `compiler/parser.cup:269:18`, 0
+ global_string_305: db `Unknown identifier in parse_identifier: `, 0
+ global_string_306: db `compiler/parser.cup:311:14`, 0
+ global_string_307: db `Cannot increment non-lvalue`, 0
+ global_string_308: db `compiler/parser.cup:337:21`, 0
+ global_string_309: db `Cannot decrement non-lvalue`, 0
+ global_string_310: db `compiler/parser.cup:351:21`, 0
+ global_string_311: db `Cannot take address of non-lvalue`, 0
+ global_string_312: db `compiler/parser.cup:389:21`, 0
+ global_string_313: db `Cannot dereference non-pointer type`, 0
+ global_string_314: db `compiler/parser.cup:396:21`, 0
+ global_string_315: db `: Unexpected token found in parse_factor: `, 0
+ global_string_316: db `compiler/parser.cup:403:18`, 0
+ global_string_317: db `Cannot index non-pointer/array type`, 0
+ global_string_318: db `compiler/parser.cup:411:25`, 0
+ global_string_319: db `Cannot access member of non-struct type`, 0
+ global_string_320: db `compiler/parser.cup:431:25`, 0
+ global_string_321: db `Struct type: `, 0
+ global_string_322: db `Field name: `, 0
+ global_string_323: db `Invalid field name for struct`, 0
+ global_string_324: db `compiler/parser.cup:444:25`, 0
+ global_string_325: db `THEN and ELSE branches of conditional expression have different types`, 0
+ global_string_326: db `compiler/parser.cup:634:21`, 0
+ global_string_327: db `Identifier already defined: %s`, 0
+ global_string_328: db `compiler/parser.cup:692:18`, 0
+ global_string_329: db `- Variable type: `, 0
+ global_string_330: db `- Value type: `, 0
+ global_string_331: db `Type mismatch for variable declaration: `, 0
+ global_string_332: db `compiler/parser.cup:719:22`, 0
+ global_string_333: db `Expected ':' or '=' after variable declaration`, 0
+ global_string_334: db `compiler/parser.cup:724:17`, 0
+ global_string_335: db `------------------`, 0
+ global_string_336: db ` : Variable declared`, 0
+ global_string_337: db `Name: `, 0
+ global_string_338: db `Type: `, 0
+ global_string_339: db `Offset: `, 0
+ global_string_340: db `\n------------------`, 0
+ global_string_341: db `Identifier already defined: `, 0
+ global_string_342: db `compiler/parser.cup:761:22`, 0
+ global_string_343: db `defer is not implemented yet`, 0
+ global_string_344: db `compiler/parser.cup:885:17`, 0
+ global_string_345: db `Identifier already exists, enums just behave like numbered constants.`, 0
+ global_string_346: db `compiler/parser.cup:934:21`, 0
+ global_string_347: db `Expected a comma or a closing brace.`, 0
+ global_string_348: db `compiler/parser.cup:944:21`, 0
+ global_string_349: db `Expected STRUCT or UNION in parse_struct_union_declaration`, 0
+ global_string_350: db `compiler/parser.cup:958:17`, 0
+ global_string_351: db `You need to specify a name for the struct defined globally.`, 0
+ global_string_352: db `compiler/parser.cup:967:17`, 0
+ global_string_353: db `<anonymous>`, 0
+ global_string_354: db `Function name already exists as an identifier`, 0
+ global_string_355: db `compiler/parser.cup:1045:21`, 0
+ global_string_356: db `Function already defined earlier`, 0
+ global_string_357: db `compiler/parser.cup:1048:21`, 0
+ global_string_358: db `Found a circular import dependency in: `, 0
+ global_string_359: db `: Exiting.`, 0
+ global_string_360: db `unexpected token in parse_program: `, 0
+ global_string_361: db `compiler/parser.cup:1132:22`, 0
+ global_string_362: db `-`, 0
+ global_string_363: db ` mov rax, `, 0
+ global_string_364: db `\n`, 0
+ global_string_365: db ` syscall\n`, 0
+ global_string_366: db `al`, 0
+ global_string_367: db `ax`, 0
+ global_string_368: db `eax`, 0
+ global_string_369: db `rax`, 0
+ global_string_370: db `Unsupported type size`, 0
+ global_string_371: db `compiler/codegen.cup:52:10`, 0
+ global_string_372: db `byte`, 0
+ global_string_373: db `word`, 0
+ global_string_374: db `dword`, 0
+ global_string_375: db `qword`, 0
+ global_string_376: db `Unsupported type size`, 0
+ global_string_377: db `compiler/codegen.cup:61:10`, 0
+ global_string_378: db ` mov rax, rbp\n`, 0
+ global_string_379: db ` sub rax, `, 0
+ global_string_380: db `\n`, 0
+ global_string_381: db ` mov rax, global_vars\n`, 0
+ global_string_382: db ` add rax, `, 0
+ global_string_383: db `\n`, 0
+ global_string_384: db ` add rax, `, 0
+ global_string_385: db `\n`, 0
+ global_string_386: db `Unsupported type in generate_lvalue_into_rax: `, 0
+ global_string_387: db ` push rax\n`, 0
+ global_string_388: db `\n`, 0
+ global_string_389: db ` call func_`, 0
+ global_string_390: db ` add rsp, `, 0
+ global_string_391: db `\n`, 0
+ global_string_392: db ` mov rax, `, 0
+ global_string_393: db `\n`, 0
+ global_string_394: db ` mov rax, `, 0
+ global_string_395: db `\n`, 0
+ global_string_396: db ` mov rax, global_string_`, 0
+ global_string_397: db `\n`, 0
+ global_string_398: db `Unsupported literal type in generate_expr_into_rax`, 0
+ global_string_399: db ` cmp rax, 0\n`, 0
+ global_string_400: db ` je .cond_else_`, 0
+ global_string_401: db `\n`, 0
+ global_string_402: db ` jmp .cond_end_`, 0
+ global_string_403: db `\n`, 0
+ global_string_404: db `.cond_else_`, 0
+ global_string_405: db `:\n`, 0
+ global_string_406: db `.cond_end_`, 0
+ global_string_407: db `:\n`, 0
+ global_string_408: db ` push rax\n`, 0
+ global_string_409: db ` pop rbx\n`, 0
+ global_string_410: db ` add rax, rbx\n`, 0
+ global_string_411: db ` push rax\n`, 0
+ global_string_412: db ` pop rbx\n`, 0
+ global_string_413: db ` sub rax, rbx\n`, 0
+ global_string_414: db ` push rax\n`, 0
+ global_string_415: db ` pop rcx\n`, 0
+ global_string_416: db ` shl rax, cl\n`, 0
+ global_string_417: db ` push rax\n`, 0
+ global_string_418: db ` pop rcx\n`, 0
+ global_string_419: db ` shr rax, cl\n`, 0
+ global_string_420: db ` push rax\n`, 0
+ global_string_421: db ` pop rbx\n`, 0
+ global_string_422: db ` cqo\n`, 0
+ global_string_423: db ` idiv rbx\n`, 0
+ global_string_424: db ` push rax\n`, 0
+ global_string_425: db ` pop rbx\n`, 0
+ global_string_426: db ` cqo\n`, 0
+ global_string_427: db ` idiv rbx\n`, 0
+ global_string_428: db ` mov rax, rdx\n`, 0
+ global_string_429: db ` push rax\n`, 0
+ global_string_430: db ` pop rbx\n`, 0
+ global_string_431: db ` imul rbx\n`, 0
+ global_string_432: db ` push rax\n`, 0
+ global_string_433: db ` pop rbx\n`, 0
+ global_string_434: db ` cmp rax, rbx\n`, 0
+ global_string_435: db ` sete al\n`, 0
+ global_string_436: db ` movzx rax, al\n`, 0
+ global_string_437: db ` push rax\n`, 0
+ global_string_438: db ` pop rbx\n`, 0
+ global_string_439: db ` cmp rax, rbx\n`, 0
+ global_string_440: db ` setne al\n`, 0
+ global_string_441: db ` movzx rax, al\n`, 0
+ global_string_442: db ` push rax\n`, 0
+ global_string_443: db ` pop rbx\n`, 0
+ global_string_444: db ` cmp rax, rbx\n`, 0
+ global_string_445: db ` setl al\n`, 0
+ global_string_446: db ` movzx rax, al\n`, 0
+ global_string_447: db ` push rax\n`, 0
+ global_string_448: db ` pop rbx\n`, 0
+ global_string_449: db ` cmp rax, rbx\n`, 0
+ global_string_450: db ` setle al\n`, 0
+ global_string_451: db ` movzx rax, al\n`, 0
+ global_string_452: db ` push rax\n`, 0
+ global_string_453: db ` pop rbx\n`, 0
+ global_string_454: db ` cmp rax, rbx\n`, 0
+ global_string_455: db ` setg al\n`, 0
+ global_string_456: db ` movzx rax, al\n`, 0
+ global_string_457: db ` push rax\n`, 0
+ global_string_458: db ` pop rbx\n`, 0
+ global_string_459: db ` cmp rax, rbx\n`, 0
+ global_string_460: db ` setge al\n`, 0
+ global_string_461: db ` movzx rax, al\n`, 0
+ global_string_462: db ` push rax\n`, 0
+ global_string_463: db ` pop rbx\n`, 0
+ global_string_464: db ` and rax, rbx\n`, 0
+ global_string_465: db ` push rax\n`, 0
+ global_string_466: db ` pop rbx\n`, 0
+ global_string_467: db ` or rax, rbx\n`, 0
+ global_string_468: db ` push rax\n`, 0
+ global_string_469: db ` pop rbx\n`, 0
+ global_string_470: db ` xor rax, rbx\n`, 0
+ global_string_471: db ` not rax\n`, 0
+ global_string_472: db ` neg rax\n`, 0
+ global_string_473: db ` cmp rax, 0\n`, 0
+ global_string_474: db ` sete al\n`, 0
+ global_string_475: db ` movzx rax, al\n`, 0
+ global_string_476: db ` cmp rax, 0\n`, 0
+ global_string_477: db ` je .or_right_`, 0
+ global_string_478: db `\n`, 0
+ global_string_479: db ` mov rax, 1\n`, 0
+ global_string_480: db ` jmp .or_end_`, 0
+ global_string_481: db `\n`, 0
+ global_string_482: db `.or_right_`, 0
+ global_string_483: db `:\n`, 0
+ global_string_484: db ` cmp rax, 0\n`, 0
+ global_string_485: db ` setne al\n`, 0
+ global_string_486: db `.or_end_`, 0
+ global_string_487: db `:\n`, 0
+ global_string_488: db ` cmp rax, 0\n`, 0
+ global_string_489: db ` jne .and_right_`, 0
+ global_string_490: db `\n`, 0
+ global_string_491: db ` mov rax, 0\n`, 0
+ global_string_492: db ` jmp .and_end_`, 0
+ global_string_493: db `\n`, 0
+ global_string_494: db `.and_right_`, 0
+ global_string_495: db `:\n`, 0
+ global_string_496: db ` cmp rax, 0\n`, 0
+ global_string_497: db ` setne al\n`, 0
+ global_string_498: db `.and_end_`, 0
+ global_string_499: db `:\n`, 0
+ global_string_500: db ` mov rax, [rax]\n`, 0
+ global_string_501: db ` [rax]\n`, 0
+ global_string_502: db ` movsx rax, `, 0
+ global_string_503: db ` push rax\n`, 0
+ global_string_504: db ` pop rbx\n`, 0
+ global_string_505: db `\n`, 0
+ global_string_506: db ` mov [rbx], `, 0
+ global_string_507: db `Unsupported node type in generate_expr_into_rax: `, 0
+ global_string_508: db ` xor rax, rax\n`, 0
+ global_string_509: db ` push rax\n`, 0
+ global_string_510: db ` pop rax\n`, 0
+ global_string_511: db ` mov rsp, rbp\n`, 0
+ global_string_512: db ` pop rbp\n`, 0
+ global_string_513: db ` ret\n`, 0
+ global_string_514: db ` mov [rbp-`, 0
+ global_string_515: db `], rax\n`, 0
+ global_string_516: db ` cmp rax, 0\n`, 0
+ global_string_517: db ` je .if_end_`, 0
+ global_string_518: db `\n`, 0
+ global_string_519: db `.if_end_`, 0
+ global_string_520: db `:\n`, 0
+ global_string_521: db ` cmp rax, 0\n`, 0
+ global_string_522: db ` je .if_else_`, 0
+ global_string_523: db `\n`, 0
+ global_string_524: db ` jmp .if_end_`, 0
+ global_string_525: db `\n`, 0
+ global_string_526: db `.if_else_`, 0
+ global_string_527: db `:\n`, 0
+ global_string_528: db `.if_end_`, 0
+ global_string_529: db `:\n`, 0
+ global_string_530: db `.loop_start_`, 0
+ global_string_531: db `:\n`, 0
+ global_string_532: db `.loop_continue_`, 0
+ global_string_533: db `:\n`, 0
+ global_string_534: db ` cmp rax, 0\n`, 0
+ global_string_535: db ` je .loop_end_`, 0
+ global_string_536: db `\n`, 0
+ global_string_537: db ` jmp .loop_start_`, 0
+ global_string_538: db `\n`, 0
+ global_string_539: db `.loop_end_`, 0
+ global_string_540: db `:\n`, 0
+ global_string_541: db `.loop_start_`, 0
+ global_string_542: db `:\n`, 0
+ global_string_543: db ` cmp rax, 0\n`, 0
+ global_string_544: db ` je .loop_end_`, 0
+ global_string_545: db `\n`, 0
+ global_string_546: db `.loop_continue_`, 0
+ global_string_547: db `:\n`, 0
+ global_string_548: db ` jmp .loop_start_`, 0
+ global_string_549: db `\n`, 0
+ global_string_550: db `.loop_end_`, 0
+ global_string_551: db `:\n`, 0
+ global_string_552: db `\n`, 0
+ global_string_553: db `global func_`, 0
+ global_string_554: db `:\n`, 0
+ global_string_555: db `func_`, 0
+ global_string_556: db ` push rbp\n`, 0
+ global_string_557: db ` mov rbp, rsp\n`, 0
+ global_string_558: db ` sub rsp, `, 0
+ global_string_559: db `\n`, 0
+ global_string_560: db ` mov rsp, rbp\n`, 0
+ global_string_561: db ` pop rbp\n`, 0
+ global_string_562: db ` mov qword rax, 0\n`, 0
+ global_string_563: db ` ret\n`, 0
+ global_string_564: db `Unknown node type in generate_program`, 0
+ global_string_565: db `global _main\n`, 0
+ global_string_566: db `_main:\n`, 0
+ global_string_567: db ` mov rax, rsi\n`, 0
+ global_string_568: db ` push rax\n`, 0
+ global_string_569: db ` mov rax, rdi\n`, 0
+ global_string_570: db ` push rax\n`, 0
+ global_string_571: db `global _start\n`, 0
+ global_string_572: db `_start:\n`, 0
+ global_string_573: db ` mov rbp, rsp\n`, 0
+ global_string_574: db ` mov rax, rbp\n`, 0
+ global_string_575: db ` add rax, 8\n`, 0
+ global_string_576: db ` push rax\n`, 0
+ global_string_577: db ` mov rax, [rbp]\n`, 0
+ global_string_578: db ` push rax\n`, 0
+ global_string_579: db ` mov rbx, global_vars\n`, 0
+ global_string_580: db ` add rbx, `, 0
+ global_string_581: db `\n`, 0
+ global_string_582: db `\n`, 0
+ global_string_583: db ` mov [rbx], `, 0
+ global_string_584: db ` call func_main\n`, 0
+ global_string_585: db ` mov rdi, rax\n`, 0
+ global_string_586: db `section .bss\n`, 0
+ global_string_587: db ` global_vars: resb `, 0
+ global_string_588: db `\n`, 0
+ global_string_589: db `section .data\n`, 0
+ global_string_590: db ` global_string_`, 0
+ global_string_591: db `: db \``, 0
+ global_string_592: db `\`, 0\n`, 0
+ global_string_593: db `Usage: `, 0
+ global_string_594: db ` [options] <file>`, 0
+ global_string_595: db `Options:`, 0
+ global_string_596: db ` -c <code> Code to compile`, 0
+ global_string_597: db ` -h Show this help`, 0
+ global_string_598: db ` -o <file> Output file`, 0
+ global_string_599: db ` -d Dump AST to stdout`, 0
+ global_string_600: db `Output file will be named 'build/host.nasm' by default`, 0
+ global_string_601: db `-c`, 0
+ global_string_602: db `CLI`, 0
+ global_string_603: db `-h`, 0
+ global_string_604: db `-d`, 0
+ global_string_605: db `-o`, 0
+ global_string_606: db `-`, 0
+ global_string_607: db `stdin`, 0
+ global_string_608: db `Source too long to use through stdin`, 0
+ global_string_609: db `build/host.nasm`, 0
diff --git a/bootstrap/macos.nasm b/bootstrap/macos.nasm
new file mode 100644
index 0000000..9b666f0
--- /dev/null
+++ b/bootstrap/macos.nasm
@@ -0,0 +1,28513 @@
+global func_write
+func_write:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554436
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_exit
+func_exit:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554433
+ push rax
+ call func_syscall1
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_read
+func_read:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554435
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_open
+func_open:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554437
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_close
+func_close:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554438
+ push rax
+ call func_syscall1
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_openat
+func_openat:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554895
+ push rax
+ call func_syscall4
+ add rsp, 40
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_wait
+func_wait:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 1
+ neg rax
+ push rax
+ mov rax, 33554439
+ push rax
+ call func_syscall4
+ add rsp, 40
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lseek
+func_lseek:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554631
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_mmap
+func_mmap:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554629
+ push rax
+ call func_syscall6
+ add rsp, 56
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_execve
+func_execve:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 33554491
+ push rax
+ call func_syscall3
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_strlen
+func_strlen:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_0:
+.loop_continue_0:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_0
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_0
+.loop_end_0:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_strcpy
+func_strcpy:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+.loop_start_1:
+.loop_continue_1:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_1
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_1
+.loop_end_1:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_strcat
+func_strcat:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+.loop_start_2:
+.loop_continue_2:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_2
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_2
+.loop_end_2:
+.loop_start_3:
+.loop_continue_3:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_3
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_3
+.loop_end_3:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_streq
+func_streq:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+.loop_start_4:
+.loop_continue_4:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_5
+ mov rax, 0
+ jmp .and_end_5
+.and_right_5:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_5:
+ cmp rax, 0
+ je .loop_end_4
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_6
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_6:
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_4
+.loop_end_4:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_strrev
+func_strrev:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 32
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-24], rax
+.loop_start_7:
+.loop_continue_7:
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_7
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_7
+.loop_end_7:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_atoi_end
+func_atoi_end:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+ mov rax, 1
+ mov [rbp-16], rax
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_8
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ neg rax
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.if_end_8:
+.loop_start_9:
+.loop_continue_9:
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_10
+ mov rax, 0
+ jmp .and_end_10
+.and_right_10:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setle al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_10:
+ cmp rax, 0
+ je .loop_end_9
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ movsx rax, byte [rax]
+ pop rbx
+ sub rax, rbx
+ push rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_9
+.loop_end_9:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_atoi
+func_atoi:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_atoi_end
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_putc
+func_putc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 0
+ push rax
+ call func_write
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_puts
+func_puts:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 1
+ push rax
+ call func_write
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_putsln
+func_putsln:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_putu_buffer
+func_putu_buffer:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_11:
+.loop_continue_11:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_11
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 48
+ push rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cqo
+ idiv rbx
+ mov rax, rdx
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cqo
+ idiv rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_11
+.loop_end_11:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_12
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 48
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.if_end_12:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_13
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strrev
+ add rsp, 8
+.if_end_13:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_putu
+func_putu:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 40
+ mov rax, rbp
+ sub rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_putu_buffer
+ add rsp, 16
+ mov [rbp-40], rax
+ mov rax, rbp
+ sub rax, 40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ push rax
+ mov rax, 1
+ push rax
+ call func_write
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_die
+func_die:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_die2
+func_die2:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_assert
+func_assert:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_14
+ mov rax, global_string_0
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_14:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_min
+func_min:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_15
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ jmp .cond_end_15
+.cond_else_15:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+.cond_end_15:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_max
+func_max:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ jmp .cond_end_16
+.cond_else_16:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+.cond_end_16:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_sign
+func_sign:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_17
+ mov rax, 1
+ jmp .cond_end_17
+.cond_else_17:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_18
+ mov rax, 0
+ jmp .cond_end_18
+.cond_else_18:
+ mov rax, 1
+ neg rax
+.cond_end_18:
+.cond_end_17:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_abs
+func_abs:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_sign
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_factorial
+func_factorial:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 1
+ mov [rbp-8], rax
+.loop_start_19:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_19
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ pop rbx
+ mov [rbx], rax
+.loop_continue_19:
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_19
+.loop_end_19:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_align_up
+func_align_up:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ not rax
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ and rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_memcpy
+func_memcpy:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, 0
+ mov [rbp-24], rax
+.loop_start_20:
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_20
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+.loop_continue_20:
+ mov rax, rbp
+ sub rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_20
+.loop_end_20:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_malloc
+func_malloc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 1073741824
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741832
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_21
+ mov rax, global_string_1
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_21:
+ mov rax, global_vars
+ add rax, 1073741832
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 8
+ pop rbx
+ add rax, rbx
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741832
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741832
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_free
+func_free:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_WIFEXITED
+func_WIFEXITED:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, 127
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ and rax, rbx
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_WEXITSTATUS
+func_WEXITSTATUS:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 127
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rcx
+ shr rax, cl
+ pop rbx
+ and rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_run_command
+func_run_command:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ call func_fork
+ add rsp, 0
+ mov [rbp-8], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_22
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_execve
+ add rsp, 24
+ mov rax, global_string_2
+ push rax
+ mov rax, global_string_3
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_22:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ call func_wait
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_23
+ mov rax, global_string_4
+ push rax
+ mov rax, global_string_5
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_23:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_WIFEXITED
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_24
+ mov rax, global_string_6
+ push rax
+ mov rax, global_string_7
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_24:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_WEXITSTATUS
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_25
+ mov rax, global_string_8
+ push rax
+ mov rax, global_string_9
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_25:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fopen
+func_fopen:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 119
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_26
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1024
+ push rax
+ mov rax, 512
+ push rax
+ mov rax, 1
+ pop rbx
+ or rax, rbx
+ pop rbx
+ or rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_26
+.if_else_26:
+ mov rax, 114
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_27
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_27
+.if_else_27:
+ mov rax, global_string_10
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_27:
+.if_end_26:
+ mov rax, 1048
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 438
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_open
+ add rsp, 24
+ pop rbx
+ mov [rbx], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_28
+ mov rax, global_string_11
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_28:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 1040
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fflush
+func_fflush:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_29
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_write
+ add rsp, 24
+ mov [rbp-8], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_30
+ mov rax, global_string_12
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_30:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_29:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fwrite
+func_fwrite:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1024
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_31
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fflush
+ add rsp, 8
+.if_end_31:
+ mov rax, 1024
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_32
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_write
+ add rsp, 24
+ jmp .if_end_32
+.if_else_32:
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_memcpy
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 1040
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.if_end_32:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fread
+func_fread:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_read
+ add rsp, 24
+ mov [rbp-8], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_33
+ mov rax, global_string_13
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_33:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fclose
+func_fclose:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fflush
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_close
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fputs
+func_fputs:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fputc
+func_fputc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fputu
+func_fputu:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 40
+ mov rax, rbp
+ sub rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_putu_buffer
+ add rsp, 16
+ mov [rbp-40], rax
+ mov rax, rbp
+ sub rax, 40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fsize
+func_fsize:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_lseek
+ add rsp, 24
+ mov [rbp-8], rax
+ mov rax, 2
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_lseek
+ add rsp, 24
+ mov [rbp-16], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_lseek
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fmap
+func_fmap:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fsize
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, 2
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_mmap
+ add rsp, 48
+ mov [rbp-16], rax
+ mov rax, -1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_34
+ mov rax, global_string_14
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_34:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_35
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_35:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_fread_to_string
+func_fread_to_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fsize
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fread
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_36
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_36:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_type_to_string
+func_token_type_to_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_37
+ mov rax, global_string_15
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_37:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_38
+ mov rax, global_string_16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_38:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_39
+ mov rax, global_string_17
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_39:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_40
+ mov rax, global_string_18
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_40:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_41
+ mov rax, global_string_19
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_41:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_42
+ mov rax, global_string_20
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_42:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_43
+ mov rax, global_string_21
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_43:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_44
+ mov rax, global_string_22
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_44:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_45
+ mov rax, global_string_23
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_45:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_46
+ mov rax, global_string_24
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_46:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_47
+ mov rax, global_string_25
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_47:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_48
+ mov rax, global_string_26
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_48:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_49
+ mov rax, global_string_27
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_49:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_50
+ mov rax, global_string_28
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_50:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_51
+ mov rax, global_string_29
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_51:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_52
+ mov rax, global_string_30
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_52:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_53
+ mov rax, global_string_31
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_53:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_54
+ mov rax, global_string_32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_54:
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_55
+ mov rax, global_string_33
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_55:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_56
+ mov rax, global_string_34
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_56:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_57
+ mov rax, global_string_35
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_57:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_58
+ mov rax, global_string_36
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_58:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_59
+ mov rax, global_string_37
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_59:
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_60
+ mov rax, global_string_38
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_60:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_61
+ mov rax, global_string_39
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_61:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_62
+ mov rax, global_string_40
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_62:
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_63
+ mov rax, global_string_41
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_63:
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_64
+ mov rax, global_string_42
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_64:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_65
+ mov rax, global_string_43
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_65:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_66
+ mov rax, global_string_44
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_66:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_67
+ mov rax, global_string_45
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_67:
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_68
+ mov rax, global_string_46
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_68:
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_69
+ mov rax, global_string_47
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_69:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_70
+ mov rax, global_string_48
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_70:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_71
+ mov rax, global_string_49
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_71:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_72
+ mov rax, global_string_50
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_72:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_73
+ mov rax, global_string_51
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_73:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_74
+ mov rax, global_string_52
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_74:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_75
+ mov rax, global_string_53
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_75:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_76
+ mov rax, global_string_54
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_76:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_77
+ mov rax, global_string_55
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_77:
+ mov rax, 41
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_78
+ mov rax, global_string_56
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_78:
+ mov rax, 43
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_79
+ mov rax, global_string_57
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_79:
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_80
+ mov rax, global_string_58
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_80:
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_81
+ mov rax, global_string_59
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_81:
+ mov rax, 46
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_82
+ mov rax, global_string_60
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_82:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_83
+ mov rax, global_string_61
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_83:
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_84
+ mov rax, global_string_62
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_84:
+ mov rax, 49
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_85
+ mov rax, global_string_63
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_85:
+ mov rax, 50
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_86
+ mov rax, global_string_64
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_86:
+ mov rax, 51
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_87
+ mov rax, global_string_65
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_87:
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_88
+ mov rax, global_string_66
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_88:
+ mov rax, 53
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_89
+ mov rax, global_string_67
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_89:
+ mov rax, 54
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_90
+ mov rax, global_string_68
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_90:
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_91
+ mov rax, global_string_69
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_91:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_92
+ mov rax, global_string_70
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_92:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_93
+ mov rax, global_string_71
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_93:
+ mov rax, 58
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_94
+ mov rax, global_string_72
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_94:
+ mov rax, 59
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_95
+ mov rax, global_string_73
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_95:
+ mov rax, global_string_74
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_print
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_keyword_to_string
+func_keyword_to_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 43
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_96
+ mov rax, global_string_75
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_96:
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_97
+ mov rax, global_string_76
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_97:
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_98
+ mov rax, global_string_77
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_98:
+ mov rax, 46
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_99
+ mov rax, global_string_78
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_99:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_100
+ mov rax, global_string_79
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_100:
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_101
+ mov rax, global_string_80
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_101:
+ mov rax, 49
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_102
+ mov rax, global_string_81
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_102:
+ mov rax, 50
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_103
+ mov rax, global_string_82
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_103:
+ mov rax, 51
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_104
+ mov rax, global_string_83
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_104:
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_105
+ mov rax, global_string_84
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_105:
+ mov rax, 53
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_106
+ mov rax, global_string_85
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_106:
+ mov rax, 54
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_107
+ mov rax, global_string_86
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_107:
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_108
+ mov rax, global_string_87
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_108:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_109
+ mov rax, global_string_88
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_109:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_110
+ mov rax, global_string_89
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_110:
+ mov rax, 58
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_111
+ mov rax, global_string_90
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_111:
+ mov rax, 59
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_112
+ mov rax, global_string_91
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_112:
+ mov rax, global_string_92
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_location_init
+func_location_init:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_location_print
+func_location_print:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 58
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rax, 58
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_die_loc2
+func_die_loc2:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_location_print
+ add rsp, 8
+ mov rax, global_string_93
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_94
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_die_loc
+func_die_loc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_string_95
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_die_loc2
+ add rsp, 32
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_type
+func_token_from_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_int
+func_token_from_int:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 18
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_string
+func_token_from_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 39
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_char
+func_token_from_char:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 5
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_token_from_identifier
+func_token_from_identifier:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 17
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_literal_token
+func_is_literal_token:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_113
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_113:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_114
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_114:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_115
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_115:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_new_sized
+func_vector_new_sized:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 24
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_new
+func_vector_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_push
+func_vector_push:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_116
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ mov [rbp-8], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_memcpy
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_116:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_pop
+func_vector_pop:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_117
+ mov rax, global_string_96
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_117:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_vector_top
+func_vector_top:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_118
+ mov rax, global_string_97
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_118:
+ mov rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_size_for_base_type
+func_size_for_base_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_119
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_119:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_120
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_120:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_121
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_121:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_size_for_type
+func_size_for_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_122
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_122:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_123
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_123:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_124
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_124:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_125
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_125:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_126
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_126:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_127
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_127:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_128
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_128:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_129
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_129:
+ mov rax, global_string_98
+ push rax
+ call func_die
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_type_new
+func_type_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741840
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_130
+ mov rax, global_vars
+ add rax, 1073741840
+ push rax
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741840
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 6
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741840
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_130:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741848
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_131
+ mov rax, global_vars
+ add rax, 1073741848
+ push rax
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741848
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 7
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741848
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, 1
+ pop rbx
+ mov [rbx], rax
+.if_end_131:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741856
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_132
+ mov rax, global_vars
+ add rax, 1073741856
+ push rax
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741856
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741856
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_132:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741864
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_133
+ mov rax, global_vars
+ add rax, 1073741864
+ push rax
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741864
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, 1
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741864
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_133:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_134
+ mov rax, global_vars
+ add rax, 1073741840
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_134:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_135
+ mov rax, global_vars
+ add rax, 1073741848
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_135:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_136
+ mov rax, global_vars
+ add rax, 1073741856
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_136:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_137
+ mov rax, global_vars
+ add rax, 1073741864
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_137:
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_size_for_base_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_type_new_ptr
+func_type_new_ptr:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 2
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_create_type_string
+func_create_type_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 32
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+.loop_start_138:
+.loop_continue_138:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_139
+ mov rax, 1
+ jmp .or_end_139
+.or_right_139:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_139:
+ cmp rax, 0
+ je .loop_end_138
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_140
+ mov rax, global_string_99
+ jmp .cond_end_140
+.cond_else_140:
+ mov rax, global_string_100
+.cond_end_140:
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_138
+.loop_end_138:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_141
+ mov rax, global_string_101
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_141
+.if_else_141:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_142
+ mov rax, global_string_102
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_142
+.if_else_142:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_143
+ mov rax, global_string_103
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_143
+.if_else_143:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_144
+ mov rax, global_string_104
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_144
+.if_else_144:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_145
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ jmp .if_end_145
+.if_else_145:
+ mov rax, global_string_105
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_145:
+.if_end_144:
+.if_end_143:
+.if_end_142:
+.if_end_141:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_int_type
+func_is_int_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_146
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_146:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_147
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_147:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_types_equal
+func_types_equal:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_149
+ mov rax, 0
+ jmp .and_end_149
+.and_right_149:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_149:
+ cmp rax, 0
+ je .if_end_148
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_148:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_151
+ mov rax, 1
+ jmp .or_end_151
+.or_right_151:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_151:
+ cmp rax, 0
+ je .if_end_150
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_150:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_153
+ mov rax, 1
+ jmp .or_end_153
+.or_right_153:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_153:
+ cmp rax, 0
+ je .if_end_152
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_152:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_154
+ mov rax, 0
+ jmp .and_end_154
+.and_right_154:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_types_equal
+ add rsp, 16
+ cmp rax, 0
+ setne al
+.and_end_154:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_convertible
+func_is_convertible:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_156
+ mov rax, 1
+ jmp .or_end_156
+.or_right_156:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_156:
+ cmp rax, 0
+ je .if_end_155
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_155:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_158
+ mov rax, 0
+ jmp .and_end_158
+.and_right_158:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_158:
+ cmp rax, 0
+ je .if_end_157
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_160
+ mov rax, 1
+ jmp .or_end_160
+.or_right_160:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_160:
+ cmp rax, 0
+ je .if_end_159
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_159:
+.if_end_157:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_162
+ mov rax, 0
+ jmp .and_end_162
+.and_right_162:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_162:
+ cmp rax, 0
+ je .if_end_161
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_161:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_types_equal
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_struct_or_structptr
+func_is_struct_or_structptr:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_164
+ mov rax, 1
+ jmp .or_end_164
+.or_right_164:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_164:
+ cmp rax, 0
+ je .if_end_163
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_163:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_165
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_167
+ mov rax, 1
+ jmp .or_end_167
+.or_right_167:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_167:
+ cmp rax, 0
+ je .if_end_166
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_166:
+.if_end_165:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_node_new
+func_node_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 56
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741872
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741872
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_node_from_int_literal
+func_node_from_int_literal:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 25
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_variable_new
+func_variable_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 24
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_block_add_child
+func_block_add_child:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_168
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_168:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_node_type_to_string
+func_node_type_to_string:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_169
+ mov rax, global_string_106
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_169:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_170
+ mov rax, global_string_107
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_170:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_171
+ mov rax, global_string_108
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_171:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_172
+ mov rax, global_string_109
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_172:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_173
+ mov rax, global_string_110
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_173:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_174
+ mov rax, global_string_111
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_174:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_175
+ mov rax, global_string_112
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_175:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_176
+ mov rax, global_string_113
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_176:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_177
+ mov rax, global_string_114
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_177:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_178
+ mov rax, global_string_115
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_178:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_179
+ mov rax, global_string_116
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_179:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_180
+ mov rax, global_string_117
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_180:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_181
+ mov rax, global_string_118
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_181:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_182
+ mov rax, global_string_119
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_182:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_183
+ mov rax, global_string_120
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_183:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_184
+ mov rax, global_string_121
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_184:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_185
+ mov rax, global_string_122
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_185:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_186
+ mov rax, global_string_123
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_186:
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_187
+ mov rax, global_string_124
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_187:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_188
+ mov rax, global_string_125
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_188:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_189
+ mov rax, global_string_126
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_189:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_190
+ mov rax, global_string_127
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_190:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_191
+ mov rax, global_string_128
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_191:
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_192
+ mov rax, global_string_129
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_192:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_193
+ mov rax, global_string_130
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_193:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_194
+ mov rax, global_string_131
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_194:
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_195
+ mov rax, global_string_132
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_195:
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_196
+ mov rax, global_string_133
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_196:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_197
+ mov rax, global_string_134
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_197:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_198
+ mov rax, global_string_135
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_198:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_199
+ mov rax, global_string_136
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_199:
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_200
+ mov rax, global_string_137
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_200:
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_201
+ mov rax, global_string_138
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_201:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_202
+ mov rax, global_string_139
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_202:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_203
+ mov rax, global_string_140
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_203:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_204
+ mov rax, global_string_141
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_204:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_205
+ mov rax, global_string_142
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_205:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_206
+ mov rax, global_string_143
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_206:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_207
+ mov rax, global_string_144
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_207:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_208
+ mov rax, global_string_145
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_208:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_209
+ mov rax, global_string_146
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_209:
+ mov rax, global_string_147
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_binary_op
+func_is_binary_op:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_210
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_210:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_211
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_211:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_212
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_212:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_213
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_213:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_214
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_214:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_215
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_215:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_216
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_216:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_217
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_217:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_218
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_218:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_219
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_219:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_220
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_220:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_221
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_221:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_222
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_222:
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_223
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_223:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_224
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_224:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_225
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_225:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_226
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_226:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_227
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_227:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_unary_op
+func_is_unary_op:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_228
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_228:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_229
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_229:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_230
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_230:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_231
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_231:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_232
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_232:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_lvalue
+func_is_lvalue:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_233
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_233:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_234
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_234:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_235
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_235:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_236
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_236:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_binary_token_to_op
+func_binary_token_to_op:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_237
+ mov rax, 5
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_237:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_238
+ mov rax, 6
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_238:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_239
+ mov rax, 7
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_239:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_240
+ mov rax, 8
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_240:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_241
+ mov rax, 9
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_241:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_242
+ mov rax, 10
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_242:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_243
+ mov rax, 11
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_243:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_244
+ mov rax, 12
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_244:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_245
+ mov rax, 14
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_245:
+ mov rax, 41
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_246
+ mov rax, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_246:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_247
+ mov rax, 17
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_247:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_248
+ mov rax, 18
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_248:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_249
+ mov rax, 19
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_249:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_250
+ mov rax, 20
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_250:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_251
+ mov rax, 21
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_251:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_252
+ mov rax, 22
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_252:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_253
+ mov rax, 13
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_253:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_254
+ mov rax, 15
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_254:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_255
+ mov rax, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_255:
+ mov rax, global_string_148
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_dump_ast
+func_dump_ast:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_256:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, 2
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_256
+ mov rax, 32
+ push rax
+ call func_putc
+ add rsp, 8
+.loop_continue_256:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_256
+.loop_end_256:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_258
+ mov rax, 1
+ jmp .or_end_258
+.or_right_258:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_258:
+ cmp rax, 0
+ je .if_else_257
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_259:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_259
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+.loop_continue_259:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_259
+.loop_end_259:
+ jmp .if_end_257
+.if_else_257:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_binary_op
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_260
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_260
+.if_else_260:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_unary_op
+ add rsp, 8
+ cmp rax, 0
+ je .or_right_262
+ mov rax, 1
+ jmp .or_end_262
+.or_right_262:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_262:
+ cmp rax, 0
+ je .if_else_261
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_261
+.if_else_261:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_264
+ mov rax, 1
+ jmp .or_end_264
+.or_right_264:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_264:
+ cmp rax, 0
+ je .if_else_263
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_265
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+.if_end_265:
+ jmp .if_end_263
+.if_else_263:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_266
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_267
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ jmp .if_end_267
+.if_else_267:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_268
+ mov rax, 34
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 34
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ jmp .if_end_268
+.if_else_268:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_269
+ mov rax, 39
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ movsx rax, byte [rax]
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 39
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ jmp .if_end_269
+.if_else_269:
+ mov rax, global_string_149
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_269:
+.if_end_268:
+.if_end_267:
+ jmp .if_end_266
+.if_else_266:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_270
+ mov rax, global_string_150
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, global_string_151
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_270
+.if_else_270:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_271
+ mov rax, global_string_152
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_272
+ mov rax, global_string_153
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_puts
+ add rsp, 8
+.if_end_272:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_273
+ mov rax, global_string_154
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_273
+.if_else_273:
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+.if_end_273:
+ jmp .if_end_271
+.if_else_271:
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_274
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+ jmp .if_end_274
+.if_else_274:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_276
+ mov rax, 1
+ jmp .or_end_276
+.or_right_276:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_276:
+ cmp rax, 0
+ je .if_else_275
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ jmp .if_end_275
+.if_else_275:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+.if_end_275:
+.if_end_274:
+.if_end_271:
+.if_end_270:
+.if_end_266:
+.if_end_263:
+.if_end_261:
+.if_end_260:
+.if_end_257:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_decay_array_to_pointer
+func_decay_array_to_pointer:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_278
+ mov rax, 0
+ jmp .and_end_278
+.and_right_278:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_278:
+ cmp rax, 0
+ je .if_end_277
+ mov rax, 3
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_277:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_type_check_unary
+func_type_check_unary:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_280
+ mov rax, 0
+ jmp .and_end_280
+.and_right_280:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_280:
+ cmp rax, 0
+ je .if_end_279
+ mov rax, global_string_155
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_156
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_279:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_281
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_281
+.if_else_281:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_282
+ mov rax, 2
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_283
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ jmp .cond_end_283
+.cond_else_283:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+.cond_end_283:
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_282
+.if_else_282:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_284
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_285
+ mov rax, global_string_157
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_158
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_285:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_decay_array_to_pointer
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_284
+.if_else_284:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_286
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_287
+ mov rax, global_string_159
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_160
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_287:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_286
+.if_else_286:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_286:
+.if_end_284:
+.if_end_282:
+.if_end_281:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_type_check_binary
+func_type_check_binary:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_289
+ mov rax, 1
+ jmp .or_end_289
+.or_right_289:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_289:
+ cmp rax, 0
+ je .if_end_288
+ mov rax, global_string_161
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_162
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_288:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_290
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_292
+ mov rax, 0
+ jmp .and_end_292
+.and_right_292:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_292:
+ cmp rax, 0
+ je .if_else_291
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_291
+.if_else_291:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_294
+ mov rax, 0
+ jmp .and_end_294
+.and_right_294:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_294:
+ cmp rax, 0
+ je .if_else_293
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_295
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_295:
+ jmp .if_end_293
+.if_else_293:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_297
+ mov rax, 0
+ jmp .and_end_297
+.and_right_297:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_297:
+ cmp rax, 0
+ je .if_else_296
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_298
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_298:
+ jmp .if_end_296
+.if_else_296:
+ mov rax, global_string_163
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_164
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_296:
+.if_end_293:
+.if_end_291:
+ jmp .if_end_290
+.if_else_290:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_299
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_301
+ mov rax, 0
+ jmp .and_end_301
+.and_right_301:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_301:
+ cmp rax, 0
+ je .if_else_300
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_300
+.if_else_300:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_303
+ mov rax, 0
+ jmp .and_end_303
+.and_right_303:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_303:
+ cmp rax, 0
+ je .if_else_302
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_304
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_304:
+ jmp .if_end_302
+.if_else_302:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_306
+ mov rax, 0
+ jmp .and_end_306
+.and_right_306:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_306:
+ cmp rax, 0
+ je .if_else_305
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_307
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_307:
+ jmp .if_end_305
+.if_else_305:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_309
+ mov rax, 0
+ jmp .and_end_309
+.and_right_309:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_309:
+ cmp rax, 0
+ je .if_else_308
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_types_equal
+ add rsp, 16
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_310
+ mov rax, global_string_165
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_166
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_310:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_311
+ mov rax, 7
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_311:
+ jmp .if_end_308
+.if_else_308:
+ mov rax, global_string_167
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_168
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_308:
+.if_end_305:
+.if_end_302:
+.if_end_300:
+ jmp .if_end_299
+.if_else_299:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_314
+ mov rax, 1
+ jmp .or_end_314
+.or_right_314:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_314:
+ cmp rax, 0
+ je .or_right_313
+ mov rax, 1
+ jmp .or_end_313
+.or_right_313:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_313:
+ cmp rax, 0
+ je .if_else_312
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ jne .and_right_316
+ mov rax, 0
+ jmp .and_end_316
+.and_right_316:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_is_int_type
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_316:
+ cmp rax, 0
+ je .if_else_315
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_315
+.if_else_315:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_169
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, global_string_170
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_315:
+ jmp .if_end_312
+.if_else_312:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_312:
+.if_end_299:
+.if_end_290:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_compound_push_field
+func_compound_push_field:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 32
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_318
+ mov rax, 0
+ jmp .and_end_318
+.and_right_318:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_318:
+ cmp rax, 0
+ je .if_end_317
+ mov rax, global_string_171
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_317:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_min
+ add rsp, 16
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ cmp rax, 0
+ je .cond_else_319
+ mov rax, 0
+ jmp .cond_end_319
+.cond_else_319:
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_align_up
+ add rsp, 16
+.cond_end_319:
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ cmp rax, 0
+ je .cond_else_320
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_max
+ add rsp, 16
+ jmp .cond_end_320
+.cond_else_320:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+.cond_end_320:
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_variable_new
+ add rsp, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_compound_find_field
+func_compound_find_field:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_321:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_321
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_322
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_322:
+.loop_continue_321:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_321
+.loop_end_321:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_builtin_create_syscall
+func_builtin_create_syscall:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 38
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 0
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ push rax
+ mov rax, global_string_172
+ push rax
+ call func_variable_new
+ add rsp, 24
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_323:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_323
+ mov rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ call func_type_new
+ add rsp, 8
+ push rax
+ mov rax, global_string_173
+ push rax
+ call func_variable_new
+ add rsp, 24
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+.loop_continue_323:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_323
+.loop_end_323:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_builtins_push_posix_constants
+func_builtins_push_posix_constants:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 1
+ cmp rax, 0
+ je .if_else_324
+ mov rax, 33554432
+ push rax
+ mov rax, 59
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_174
+ push rax
+ call func_constant_push
+ add rsp, 16
+ jmp .if_end_324
+.if_else_324:
+ mov rax, 59
+ push rax
+ mov rax, global_string_175
+ push rax
+ call func_constant_push
+ add rsp, 16
+.if_end_324:
+ mov rax, 33554435
+ push rax
+ mov rax, global_string_176
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554436
+ push rax
+ mov rax, global_string_177
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554433
+ push rax
+ mov rax, global_string_178
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554437
+ push rax
+ mov rax, global_string_179
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554631
+ push rax
+ mov rax, global_string_180
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554895
+ push rax
+ mov rax, global_string_181
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554438
+ push rax
+ mov rax, global_string_182
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554434
+ push rax
+ mov rax, global_string_183
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554439
+ push rax
+ mov rax, global_string_184
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 33554629
+ push rax
+ mov rax, global_string_185
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_186
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_187
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_188
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_189
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_190
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_191
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 512
+ push rax
+ mov rax, global_string_192
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2048
+ push rax
+ mov rax, global_string_193
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1024
+ push rax
+ mov rax, global_string_194
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, -2
+ push rax
+ mov rax, global_string_195
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_196
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_197
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 4
+ push rax
+ mov rax, global_string_198
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_199
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_200
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_201
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 4096
+ push rax
+ mov rax, global_string_202
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 16
+ push rax
+ mov rax, global_string_203
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, -1
+ push rax
+ mov rax, global_string_204
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_initialize_builtins
+func_initialize_builtins:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ call func_builtins_push_posix_constants
+ add rsp, 0
+ mov rax, 1
+ push rax
+ mov rax, global_string_205
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_206
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 38
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 0
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, global_string_207
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ call func_type_new
+ add rsp, 8
+ push rax
+ mov rax, global_string_208
+ push rax
+ call func_variable_new
+ add rsp, 24
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 38
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, global_string_209
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ mov rax, 0
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, 0
+ push rax
+ mov rax, global_string_210
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_string_211
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, global_string_212
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 3
+ push rax
+ mov rax, global_string_213
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 4
+ push rax
+ mov rax, global_string_214
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 5
+ push rax
+ mov rax, global_string_215
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 6
+ push rax
+ mov rax, global_string_216
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rax, 7
+ push rax
+ mov rax, global_string_217
+ push rax
+ call func_builtin_create_syscall
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_builtin_function
+func_find_builtin_function:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_325:
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_325
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741880
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_326
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_326:
+.loop_continue_325:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_325
+.loop_end_325:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_builtins
+func_generate_builtins:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 96
+ mov rax, global_string_218
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_219
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_220
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_221
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_222
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_223
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_224
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_225
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_226
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_227
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_228
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_229
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_230
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_231
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_232
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_233
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_234
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_235
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_236
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_237
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_238
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_239
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_240
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_241
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_242
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_243
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_244
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_245
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_246
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_247
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_248
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 33554436
+ push rax
+ call func_generate_syscall
+ add rsp, 8
+ mov rax, global_string_249
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_250
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_251
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 1
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_252
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 2
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_253
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 3
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_254
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 4
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_255
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 5
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_256
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 6
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_257
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 7
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_258
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 8
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_259
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, 9
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, global_string_260
+ pop rbx
+ mov [rbx], rax
+ mov rax, 0
+ mov [rbp-88], rax
+.loop_start_327:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_327
+ mov rax, global_string_261
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_262
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 0
+ mov [rbp-96], rax
+.loop_start_328:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_328
+ mov rax, global_string_263
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_264
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ imul rbx
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_265
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.loop_continue_328:
+ mov rax, rbp
+ sub rax, 96
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_328
+.loop_end_328:
+ mov rax, global_string_266
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_267
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.loop_continue_327:
+ mov rax, rbp
+ sub rax, 88
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_327
+.loop_end_327:
+ mov rax, global_string_268
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_269
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_270
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 33554434
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_271
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_272
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 1
+ cmp rax, 0
+ je .if_end_329
+ mov rax, global_string_273
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_274
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_275
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_276
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_329:
+ mov rax, global_string_277
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_new
+func_lexer_new:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 48
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_new_open_file
+func_lexer_new_open_file:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, 114
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_fopen
+ add rsp, 16
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_fread_to_string
+ add rsp, 16
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_fclose
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_new
+ add rsp, 24
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_loc
+func_lexer_loc:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_space
+func_is_space:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_332
+ mov rax, 1
+ jmp .or_end_332
+.or_right_332:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_332:
+ cmp rax, 0
+ je .or_right_331
+ mov rax, 1
+ jmp .or_end_331
+.or_right_331:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_331:
+ cmp rax, 0
+ je .or_right_330
+ mov rax, 1
+ jmp .or_end_330
+.or_right_330:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_330:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_digit
+func_is_digit:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_333
+ mov rax, 0
+ jmp .and_end_333
+.and_right_333:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setle al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_333:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_alpha
+func_is_alpha:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 97
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_336
+ mov rax, 0
+ jmp .and_end_336
+.and_right_336:
+ mov rax, 122
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setle al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_336:
+ cmp rax, 0
+ je .or_right_335
+ mov rax, 1
+ jmp .or_end_335
+.or_right_335:
+ mov rax, 65
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_337
+ mov rax, 0
+ jmp .and_end_337
+.and_right_337:
+ mov rax, 90
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setle al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_337:
+ cmp rax, 0
+ setne al
+.or_end_335:
+ cmp rax, 0
+ je .or_right_334
+ mov rax, 1
+ jmp .or_end_334
+.or_right_334:
+ mov rax, 95
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_334:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_is_alnum
+func_is_alnum:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ push rax
+ call func_is_digit
+ add rsp, 8
+ cmp rax, 0
+ je .or_right_338
+ mov rax, 1
+ jmp .or_end_338
+.or_right_338:
+ mov rax, rbp
+ sub rax, -16
+ movsx rax, byte [rax]
+ push rax
+ call func_is_alpha
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.or_end_338:
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_skip_whitespace
+func_lexer_skip_whitespace:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+.loop_start_339:
+.loop_continue_339:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_340
+ mov rax, 0
+ jmp .and_end_340
+.and_right_340:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ call func_is_space
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_340:
+ cmp rax, 0
+ je .loop_end_339
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_341
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_341
+.if_else_341:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.if_end_341:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_339
+.loop_end_339:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_starts_with
+func_lexer_starts_with:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_342
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_342:
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_343:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_343
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_344
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_344:
+.loop_continue_343:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_343
+.loop_end_343:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_345
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_345:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ movsx rax, byte [rax]
+ push rax
+ call func_is_digit
+ add rsp, 8
+ cmp rax, 0
+ je .or_right_346
+ mov rax, 1
+ jmp .or_end_346
+.or_right_346:
+ mov rax, rbp
+ sub rax, 24
+ movsx rax, byte [rax]
+ push rax
+ call func_is_alpha
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.or_end_346:
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_advance
+func_lexer_advance:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_peek_char
+func_lexer_peek_char:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_347
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_347:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_make_token
+func_lexer_make_token:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_next
+func_lexer_next:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+.loop_start_348:
+.loop_continue_348:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_348
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ mov [rbp-8], rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_349
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_349
+.if_else_349:
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ push rax
+ call func_is_space
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_350
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ jmp .if_end_350
+.if_else_350:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_351
+ mov rax, 1
+ push rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_351
+.if_else_351:
+ mov rax, 41
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_352
+ mov rax, 1
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_352
+.if_else_352:
+ mov rax, 123
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_353
+ mov rax, 1
+ push rax
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_353
+.if_else_353:
+ mov rax, 125
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_354
+ mov rax, 1
+ push rax
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_354
+.if_else_354:
+ mov rax, 91
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_355
+ mov rax, 1
+ push rax
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_355
+.if_else_355:
+ mov rax, 93
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_356
+ mov rax, 1
+ push rax
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_356
+.if_else_356:
+ mov rax, 59
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_357
+ mov rax, 1
+ push rax
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_357
+.if_else_357:
+ mov rax, 58
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_358
+ mov rax, 1
+ push rax
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_358
+.if_else_358:
+ mov rax, 126
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_359
+ mov rax, 1
+ push rax
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_359
+.if_else_359:
+ mov rax, 63
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_360
+ mov rax, 1
+ push rax
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_360
+.if_else_360:
+ mov rax, 94
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_361
+ mov rax, 1
+ push rax
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_361
+.if_else_361:
+ mov rax, 46
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_362
+ mov rax, 1
+ push rax
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_362
+.if_else_362:
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_363
+ mov rax, 1
+ push rax
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_363
+.if_else_363:
+ mov rax, 42
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_364
+ mov rax, 1
+ push rax
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_364
+.if_else_364:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_365
+ mov rax, 1
+ push rax
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_365
+.if_else_365:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_367
+ mov rax, 0
+ jmp .and_end_367
+.and_right_367:
+ mov rax, 47
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_367:
+ cmp rax, 0
+ je .if_else_366
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.loop_start_368:
+.loop_continue_368:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_369
+ mov rax, 0
+ jmp .and_end_369
+.and_right_369:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_369:
+ cmp rax, 0
+ je .loop_end_368
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_368
+.loop_end_368:
+ jmp .if_end_366
+.if_else_366:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_370
+ mov rax, 1
+ push rax
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_370
+.if_else_370:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_371
+ mov rax, 38
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_372
+ mov rax, 2
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_372:
+ mov rax, 1
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_371
+.if_else_371:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_373
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_374
+ mov rax, 2
+ push rax
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_374:
+ mov rax, 1
+ push rax
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_373
+.if_else_373:
+ mov rax, 60
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_375
+ mov rax, 60
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_376
+ mov rax, 2
+ push rax
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_376:
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_377
+ mov rax, 2
+ push rax
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_377:
+ mov rax, 1
+ push rax
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_375
+.if_else_375:
+ mov rax, 62
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_378
+ mov rax, 62
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_379
+ mov rax, 2
+ push rax
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_379:
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_380
+ mov rax, 2
+ push rax
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_380:
+ mov rax, 1
+ push rax
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_378
+.if_else_378:
+ mov rax, 61
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_381
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_382
+ mov rax, 2
+ push rax
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_382:
+ mov rax, 1
+ push rax
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_381
+.if_else_381:
+ mov rax, 124
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_383
+ mov rax, 124
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_384
+ mov rax, 2
+ push rax
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_384:
+ mov rax, 1
+ push rax
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_383
+.if_else_383:
+ mov rax, 43
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_385
+ mov rax, 43
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_386
+ mov rax, 2
+ push rax
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_386:
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_387
+ mov rax, 2
+ push rax
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_387:
+ mov rax, 1
+ push rax
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_385
+.if_else_385:
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_388
+ mov rax, 45
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_389
+ mov rax, 2
+ push rax
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_389:
+ mov rax, 61
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek_char
+ add rsp, 16
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_390
+ mov rax, 2
+ push rax
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_390:
+ mov rax, 1
+ push rax
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_388
+.if_else_388:
+ mov rax, global_string_278
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_starts_with
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_391
+ mov rax, 128
+ push rax
+ mov rax, 1
+ pop rbx
+ imul rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcpy
+ add rsp, 16
+ mov rax, global_string_279
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_putu_buffer
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, global_string_280
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_putu_buffer
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_strcat
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 72
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 72
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_string
+ add rsp, 24
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_391:
+ mov rax, 1
+ push rax
+ mov rax, 42
+ pop rbx
+ add rax, rbx
+ mov [rbp-16], rax
+.loop_start_392:
+ mov rax, 60
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_392
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_keyword_to_string
+ add rsp, 8
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_starts_with
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_393
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_393:
+.loop_continue_392:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_392
+.loop_end_392:
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ push rax
+ call func_is_digit
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_394
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-16], rax
+.loop_start_395:
+.loop_continue_395:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_396
+ mov rax, 0
+ jmp .and_end_396
+.and_right_396:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ call func_is_digit
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_396:
+ cmp rax, 0
+ je .loop_end_395
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_395
+.loop_end_395:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_atoi
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_int
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_394:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ call func_is_alpha
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_397
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-16], rax
+.loop_start_398:
+.loop_continue_398:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_399
+ mov rax, 0
+ jmp .and_end_399
+.and_right_399:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ push rax
+ call func_is_alnum
+ add rsp, 8
+ cmp rax, 0
+ setne al
+.and_end_399:
+ cmp rax, 0
+ je .loop_end_398
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_398
+.loop_end_398:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-24], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ call func_memcpy
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_identifier
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_397:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_400
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov [rbp-16], rax
+.loop_start_401:
+.loop_continue_401:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_402
+ mov rax, 0
+ jmp .and_end_402
+.and_right_402:
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_402:
+ cmp rax, 0
+ je .loop_end_401
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_401
+.loop_end_401:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_403
+ mov rax, global_string_281
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, global_string_282
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_403:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ sub rax, rbx
+ mov [rbp-48], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_memcpy
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_string
+ add rsp, 24
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_400:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_404
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, 92
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_405
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, 110
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_406
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 10
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_406
+.if_else_406:
+ mov rax, 116
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_407
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 9
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_407
+.if_else_407:
+ mov rax, 110
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_408
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 10
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_408
+.if_else_408:
+ mov rax, 114
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_409
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 13
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_409
+.if_else_409:
+ mov rax, 116
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_410
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 9
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_410
+.if_else_410:
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_411
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ jmp .if_end_411
+.if_else_411:
+.if_end_411:
+.if_end_410:
+.if_end_409:
+.if_end_408:
+.if_end_407:
+.if_end_406:
+.if_end_405:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_loc
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_token_from_char
+ add rsp, 24
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_advance
+ add rsp, 16
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_404:
+ mov rax, global_string_283
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ movsx rax, byte [rax]
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, global_string_284
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_285
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_388:
+.if_end_385:
+.if_end_383:
+.if_end_381:
+.if_end_378:
+.if_end_375:
+.if_end_373:
+.if_end_371:
+.if_end_370:
+.if_end_366:
+.if_end_365:
+.if_end_364:
+.if_end_363:
+.if_end_362:
+.if_end_361:
+.if_end_360:
+.if_end_359:
+.if_end_358:
+.if_end_357:
+.if_end_356:
+.if_end_355:
+.if_end_354:
+.if_end_353:
+.if_end_352:
+.if_end_351:
+.if_end_350:
+.if_end_349:
+ jmp .loop_start_348
+.loop_end_348:
+ mov rax, 0
+ push rax
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_make_token
+ add rsp, 32
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_next_assert
+func_lexer_next_assert:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_412
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ call func_location_print
+ add rsp, 8
+ mov rax, global_string_286
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, global_string_287
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, 10
+ push rax
+ call func_putc
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+.if_end_412:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_lexer_peek
+func_lexer_peek:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ mov rax, [rax]
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_block_stack_push
+func_block_stack_push:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_block_stack_pop
+func_block_stack_pop:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ push rax
+ call func_vector_pop
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741912
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741912
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_constant_push
+func_constant_push:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 26
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741944
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_local_variable
+func_find_local_variable:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 32
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_413
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_413:
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-8], rax
+.loop_start_414:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_414
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, 0
+ mov [rbp-24], rax
+.loop_start_415:
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_415
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_416
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_416:
+.loop_continue_415:
+ mov rax, rbp
+ sub rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_415
+.loop_end_415:
+.loop_continue_414:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_414
+.loop_end_414:
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_417:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_417
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_418
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_418:
+.loop_continue_417:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_417
+.loop_end_417:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_compound_type
+func_find_compound_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-8], rax
+.loop_start_419:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_419
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_420
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_420:
+.loop_continue_419:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_419
+.loop_end_419:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_global_variable
+func_find_global_variable:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_421:
+ mov rax, global_vars
+ add rax, 1073741920
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_421
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741920
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_422
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_422:
+.loop_continue_421:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_421
+.loop_end_421:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_function_definition
+func_find_function_definition:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_423:
+ mov rax, global_vars
+ add rax, 1073741888
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_423
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741888
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_424
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_424:
+.loop_continue_423:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_423
+.loop_end_423:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_find_constant
+func_find_constant:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_425:
+ mov rax, global_vars
+ add rax, 1073741944
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_425
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741944
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_426
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_426:
+.loop_continue_425:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_425
+.loop_end_425:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_identifier_exists
+func_identifier_exists:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_local_variable
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_427
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_427:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_global_variable
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_428
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_428:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_function_definition
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_429
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_429:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_builtin_function
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_430
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_430:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_compound_type
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_431
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_431:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_find_constant
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_432
+ mov rax, 1
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_432:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_eval_constexp
+func_eval_constexp:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_433
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_434
+ mov rax, global_string_288
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_434:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_433
+.if_else_433:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_binary_op
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_435
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_436
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_436
+.if_else_436:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_437
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_437
+.if_else_437:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_438
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ or rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_438
+.if_else_438:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_439
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ and rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_439
+.if_else_439:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_440
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ xor rax, rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_440
+.if_else_440:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_441
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_441
+.if_else_441:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_442
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cqo
+ idiv rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_442
+.if_else_442:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_443
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cqo
+ idiv rbx
+ mov rax, rdx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_443
+.if_else_443:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_444
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_444
+.if_else_444:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_445
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_445
+.if_else_445:
+ mov rax, global_string_289
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_445:
+.if_end_444:
+.if_end_443:
+.if_end_442:
+.if_end_441:
+.if_end_440:
+.if_end_439:
+.if_end_438:
+.if_end_437:
+.if_end_436:
+ jmp .if_end_435
+.if_else_435:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_446
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ neg rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_446
+.if_else_446:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_447
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ not rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_447
+.if_else_447:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_448
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ jmp .if_end_448
+.if_else_448:
+ mov rax, global_string_290
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_448:
+.if_end_447:
+.if_end_446:
+.if_end_435:
+.if_end_433:
+ mov rax, 0
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_constant_declaration
+func_parse_constant_declaration:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_449
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_291
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_292
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_449:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_450
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 51
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_451
+ mov rax, global_string_293
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_294
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_451:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.if_end_450:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_eval_constexp
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_literal
+func_parse_literal:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 48
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 25
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_452
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_452
+.if_else_452:
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_453
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 7
+ push rax
+ call func_type_new_ptr
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_453
+.if_else_453:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_454
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ movsx rax, byte [rax]
+ pop rbx
+ mov [rbx], al
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 7
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_454
+.if_else_454:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_295
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_296
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_454:
+.if_end_453:
+.if_end_452:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_type
+func_parse_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 80
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 51
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_455
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 6
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_455
+.if_else_455:
+ mov rax, 43
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_456
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 7
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_456
+.if_else_456:
+ mov rax, 57
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_457
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 0
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_457
+.if_else_457:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_compound_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_458
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_297
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_298
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_458:
+.if_end_457:
+.if_end_456:
+.if_end_455:
+ mov rax, 1
+ mov [rbp-56], rax
+.loop_start_459:
+.loop_continue_459:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ cmp rax, 0
+ je .loop_end_459
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_460
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 2
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_460
+.if_else_460:
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_461
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 3
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_462
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_462
+.if_else_462:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_463
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_constant
+ add rsp, 8
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_464
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_299
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_300
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_464:
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-80], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_463
+.if_else_463:
+ mov rax, global_string_301
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_302
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_463:
+.if_end_462:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_461
+.if_else_461:
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_461:
+.if_end_460:
+ jmp .loop_start_459
+.loop_end_459:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_function_call_args
+func_parse_function_call_args:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ mov rax, 27
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_465:
+.loop_continue_465:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_465
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_466
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.if_end_466:
+ jmp .loop_start_465
+.loop_end_465:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_467
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_303
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_304
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_467:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_identifier
+func_parse_identifier:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_local_variable
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_468
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 34
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_decay_array_to_pointer
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_468:
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_global_variable
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_469
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 35
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_decay_array_to_pointer
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_469:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_function_definition
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_470
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_function_call_args
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_470:
+ mov rax, rbp
+ sub rax, 64
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_builtin_function
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_471
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_function_call_args
+ add rsp, 16
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_471:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_constant
+ add rsp, 8
+ mov [rbp-72], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_472
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_472:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_305
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_306
+ push rax
+ call func_die_loc2
+ add rsp, 32
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_factor
+func_parse_factor:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 96
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_473
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 0
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_473
+.if_else_473:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_474
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 2
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_474
+.if_else_474:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_475
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 23
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_476
+ mov rax, global_string_307
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_308
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_476:
+ mov rax, 5
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_475
+.if_else_475:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_477
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 23
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_478
+ mov rax, global_string_309
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_310
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_478:
+ mov rax, 6
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_477
+.if_else_477:
+ mov rax, 54
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_479
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_node_from_int_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_479
+.if_else_479:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_480
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 1
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_480
+.if_else_480:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_481
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ jmp .if_end_481
+.if_else_481:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_literal_token
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_482
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_literal
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_482
+.if_else_482:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_483
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_identifier
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_483
+.if_else_483:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_484
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 3
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_485
+ mov rax, global_string_311
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_312
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_485:
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_484
+.if_else_484:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_486
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_487
+ mov rax, global_string_313
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_314
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_487:
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 4
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_486
+.if_else_486:
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_315
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_316
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_486:
+.if_end_484:
+.if_end_483:
+.if_end_482:
+.if_end_481:
+.if_end_480:
+.if_end_479:
+.if_end_477:
+.if_end_475:
+.if_end_474:
+.if_end_473:
+ mov rax, 1
+ mov [rbp-56], rax
+.loop_start_488:
+.loop_continue_488:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ cmp rax, 0
+ je .loop_end_488
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_489
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_490
+ mov rax, global_string_317
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_318
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_490:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, 5
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 4
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_type_check_unary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ jmp .if_end_489
+.if_else_489:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_491
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_struct_or_structptr
+ add rsp, 8
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_492
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_319
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_320
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_492:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ cmp rax, 0
+ je .cond_else_493
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ jmp .cond_end_493
+.cond_else_493:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+.cond_end_493:
+ mov [rbp-72], rax
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-80], rax
+ mov rax, rbp
+ sub rax, 80
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ push rax
+ call func_compound_find_field
+ add rsp, 16
+ mov [rbp-88], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_494
+ mov rax, global_string_321
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_322
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 80
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_323
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_324
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_494:
+ mov rax, 24
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-96], rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 88
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 96
+ mov rax, [rax]
+ push rax
+ call func_decay_array_to_pointer
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_491
+.if_else_491:
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_491:
+.if_end_489:
+ jmp .loop_start_488
+.loop_end_488:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_term
+func_parse_term:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_495:
+.loop_continue_495:
+ mov rax, 38
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_497
+ mov rax, 1
+ jmp .or_end_497
+.or_right_497:
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_497:
+ cmp rax, 0
+ je .or_right_496
+ mov rax, 1
+ jmp .or_end_496
+.or_right_496:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_496:
+ cmp rax, 0
+ je .loop_end_495
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_factor
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_495
+.loop_end_495:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_additive
+func_parse_additive:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_term
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_498:
+.loop_continue_498:
+ mov rax, 31
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_501
+ mov rax, 1
+ jmp .or_end_501
+.or_right_501:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_501:
+ cmp rax, 0
+ je .or_right_500
+ mov rax, 1
+ jmp .or_end_500
+.or_right_500:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_500:
+ cmp rax, 0
+ je .or_right_499
+ mov rax, 1
+ jmp .or_end_499
+.or_right_499:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_499:
+ cmp rax, 0
+ je .loop_end_498
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_term
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_498
+.loop_end_498:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_relational
+func_parse_relational:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_additive
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_502:
+.loop_continue_502:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_505
+ mov rax, 1
+ jmp .or_end_505
+.or_right_505:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_505:
+ cmp rax, 0
+ je .or_right_504
+ mov rax, 1
+ jmp .or_end_504
+.or_right_504:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_504:
+ cmp rax, 0
+ je .or_right_503
+ mov rax, 1
+ jmp .or_end_503
+.or_right_503:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_503:
+ cmp rax, 0
+ je .loop_end_502
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_additive
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_502
+.loop_end_502:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_equality
+func_parse_equality:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_relational
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_506:
+.loop_continue_506:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_507
+ mov rax, 1
+ jmp .or_end_507
+.or_right_507:
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_507:
+ cmp rax, 0
+ je .loop_end_506
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_relational
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_506
+.loop_end_506:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_and
+func_parse_and:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_equality
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_508:
+.loop_continue_508:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_508
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_equality
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_508
+.loop_end_508:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_exclusive_or
+func_parse_exclusive_or:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_and
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_509:
+.loop_continue_509:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_509
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_and
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_509
+.loop_end_509:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_inclusive_or
+func_parse_inclusive_or:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_exclusive_or
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_510:
+.loop_continue_510:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_510
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_exclusive_or
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_510
+.loop_end_510:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_logical_and
+func_parse_logical_and:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_inclusive_or
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_511:
+.loop_continue_511:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_511
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_inclusive_or
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_511
+.loop_end_511:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_logical_or
+func_parse_logical_or:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 64
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_logical_and
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_512:
+.loop_continue_512:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_512
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_binary_token_to_op
+ add rsp, 8
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_logical_and
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_type_check_binary
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_512
+.loop_end_512:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_conditional_exp
+func_parse_conditional_exp:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_logical_or
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_513
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, 28
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_types_equal
+ add rsp, 16
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_514
+ mov rax, global_string_325
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_326
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_514:
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_513:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_expression
+func_parse_expression:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_conditional_exp
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_515
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_516
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 23
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_516:
+.if_end_515:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_add_variable_to_current_block
+func_add_variable_to_current_block:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, global_vars
+ add rax, 1073741904
+ mov rax, [rax]
+ push rax
+ call func_vector_top
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_align_up
+ add rsp, 16
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ push rax
+ call func_assert
+ add rsp, 8
+ mov rax, global_vars
+ add rax, 1073741912
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741912
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, global_vars
+ add rax, 1073741912
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741912
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_max
+ add rsp, 16
+ mov [rbp-24], rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_add_global_variable
+func_add_global_variable:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, global_vars
+ add rax, 1073741928
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_align_up
+ add rsp, 16
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741928
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741928
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741920
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_var_declaration
+func_parse_var_declaration:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_517
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_327
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_328
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_517:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741896
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ mov [rbp-48], rax
+ mov rax, 33
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 1
+ mov [rbp-72], rax
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_518
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.if_end_518:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_519
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_520
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_520
+.if_else_520:
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_is_convertible
+ add rsp, 16
+ cmp rax, 0
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_521
+ mov rax, global_string_329
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_330
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_331
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_332
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_521:
+.if_end_520:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_519
+.if_else_519:
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_522
+ mov rax, global_string_333
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_334
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_522:
+.if_end_519:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_523
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ call func_add_global_variable
+ add rsp, 8
+ jmp .if_end_523
+.if_else_523:
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ call func_add_variable_to_current_block
+ add rsp, 8
+.if_end_523:
+ mov rax, 0
+ cmp rax, 0
+ je .if_end_524
+ mov rax, global_string_335
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ call func_location_print
+ add rsp, 8
+ mov rax, global_string_336
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_337
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_338
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_create_type_string
+ add rsp, 8
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_339
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_abs
+ add rsp, 8
+ push rax
+ call func_putu
+ add rsp, 8
+ mov rax, global_string_340
+ push rax
+ call func_putsln
+ add rsp, 8
+.if_end_524:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_function_params
+func_parse_function_params:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 80
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+.loop_start_525:
+.loop_continue_525:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_525
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_526
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_341
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_342
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_526:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, 24
+ push rax
+ call func_malloc
+ add rsp, 8
+ mov [rbp-64], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_527
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.if_end_527:
+ jmp .loop_start_525
+.loop_end_525:
+ mov rax, 16
+ neg rax
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-56], rax
+ mov rax, 0
+ mov [rbp-64], rax
+.loop_start_528:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_528
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ push rax
+ call func_align_up
+ add rsp, 16
+ mov [rbp-80], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 80
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+.loop_continue_528:
+ mov rax, rbp
+ sub rax, 64
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_528
+.loop_end_528:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_for_loop
+func_parse_for_loop:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ mov rax, 49
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 32
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 40
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, 1
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ call func_vector_new_sized
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_block_add_child
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_block_stack_push
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_529
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_var_declaration
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_529
+.if_else_529:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_530
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_530:
+.if_end_529:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_531
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_531:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_532
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_532:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ call func_block_stack_pop
+ add rsp, 0
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_statement
+func_parse_statement:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 48
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_533
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_block
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_533
+.if_else_533:
+ mov rax, 53
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_534
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 36
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_535
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_535
+.if_else_535:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ push rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_535:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ jmp .if_end_534
+.if_else_534:
+ mov rax, 50
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_536
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 29
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 46
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_537
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_537:
+ jmp .if_end_536
+.if_else_536:
+ mov rax, 58
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_538
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 30
+ push rax
+ call func_node_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_538
+.if_else_538:
+ mov rax, 49
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_539
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_for_loop
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_539
+.if_else_539:
+ mov rax, 47
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_540
+ mov rax, global_string_343
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 8
+ push rax
+ mov rax, global_string_344
+ push rax
+ call func_die_loc
+ add rsp, 24
+ jmp .if_end_540
+.if_else_540:
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_541
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_var_declaration
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ jmp .if_end_541
+.if_else_541:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_expression
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+.if_end_541:
+.if_end_540:
+.if_end_539:
+.if_end_538:
+.if_end_536:
+.if_end_534:
+.if_end_533:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_block
+func_parse_block:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 48
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 40
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_block_stack_push
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_542:
+.loop_continue_542:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_542
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_statement
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_block_add_child
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_542
+.loop_end_542:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ call func_block_stack_pop
+ add rsp, 0
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_enum_declaration
+func_parse_enum_declaration:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 48
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 0
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_543:
+.loop_continue_543:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_543
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_end_544
+ mov rax, global_string_345
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_346
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_544:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_constant_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_545
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .if_end_545
+.if_else_545:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_546
+ mov rax, global_string_347
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_348
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_546:
+.if_end_545:
+ jmp .loop_start_543
+.loop_end_543:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_struct_union_declaration
+func_parse_struct_union_declaration:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 72
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_548
+ mov rax, 0
+ jmp .and_end_548
+.and_right_548:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_548:
+ cmp rax, 0
+ je .if_end_547
+ mov rax, global_string_349
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_350
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_547:
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .cond_else_549
+ mov rax, 4
+ jmp .cond_end_549
+.cond_else_549:
+ mov rax, 5
+.cond_end_549:
+ push rax
+ call func_type_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 40
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_551
+ mov rax, 0
+ jmp .and_end_551
+.and_right_551:
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ cmp rax, 0
+ setne al
+.and_end_551:
+ cmp rax, 0
+ je .if_end_550
+ mov rax, global_string_351
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_352
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_550:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_552
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ jmp .if_end_552
+.if_else_552:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ push rax
+ mov rax, global_string_353
+ pop rbx
+ mov [rbx], rax
+.if_end_552:
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_553:
+.loop_continue_553:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_553
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-56], rax
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_555
+ mov rax, 1
+ jmp .or_end_555
+.or_right_555:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_555:
+ cmp rax, 0
+ je .if_else_554
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-72], rax
+ mov rax, rbp
+ sub rax, 64
+ push rax
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_struct_union_declaration
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741952
+ mov rax, [rax]
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 72
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_554
+.if_else_554:
+ mov rax, rbp
+ sub rax, 64
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_554:
+ mov rax, rbp
+ sub rax, 64
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ call func_compound_push_field
+ add rsp, 24
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_553
+.loop_end_553:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_function
+func_parse_function:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, 37
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-48], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_identifier_exists
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_556
+ mov rax, rbp
+ sub rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ call func_find_function_definition
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_557
+ mov rax, global_string_354
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_355
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_557:
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 32
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_558
+ mov rax, global_string_356
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 8
+ push rax
+ mov rax, global_string_357
+ push rax
+ call func_die_loc
+ add rsp, 24
+.if_end_558:
+ mov rax, global_vars
+ add rax, 1073741896
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_556
+.if_else_556:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741888
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, global_vars
+ add rax, 1073741896
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+.if_end_556:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_function_params
+ add rsp, 16
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_559
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_type
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_559
+.if_else_559:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 8
+ push rax
+ mov rax, 0
+ push rax
+ call func_type_new
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+.if_end_559:
+ mov rax, rbp
+ sub rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, 26
+ push rax
+ mov rax, rbp
+ sub rax, 40
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_560
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_block
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 32
+ push rax
+ mov rax, 1
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_560
+.if_else_560:
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 32
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], rax
+.if_end_560:
+ mov rax, global_vars
+ add rax, 1073741896
+ push rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parser_open_new_file
+func_parser_open_new_file:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_561:
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_561
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_562
+ mov rax, global_string_358
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, global_string_359
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+.if_end_562:
+.loop_continue_561:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_561
+.loop_end_561:
+ mov rax, 0
+ mov [rbp-8], rax
+.loop_start_563:
+ mov rax, global_vars
+ add rax, 1073741960
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_563
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741960
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_end_564
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_564:
+.loop_continue_563:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_563
+.loop_end_563:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741960
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_new_open_file
+ add rsp, 8
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_program
+func_parse_program:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 56
+ call func_initialize_builtins
+ add rsp, 0
+ mov rax, 39
+ push rax
+ call func_node_new
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ push rax
+ call func_vector_new
+ add rsp, 0
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+.loop_start_565:
+.loop_continue_565:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setne al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_565
+ mov rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_566
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_function
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_block_add_child
+ add rsp, 16
+ jmp .if_end_566
+.if_else_566:
+ mov rax, 52
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_567
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_var_declaration
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_block_add_child
+ add rsp, 16
+ jmp .if_end_567
+.if_else_567:
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_568
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ jmp .if_end_568
+.if_else_568:
+ mov rax, 44
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_569
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_constant_declaration
+ add rsp, 8
+ jmp .if_end_569
+.if_else_569:
+ mov rax, 59
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_570
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next
+ add rsp, 16
+ mov rax, 39
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_next_assert
+ add rsp, 24
+ mov rax, rbp
+ sub rax, 48
+ add rax, 32
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-56], rax
+ mov rax, rbp
+ sub rax, 56
+ mov rax, [rax]
+ push rax
+ call func_parser_open_new_file
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_top
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_570
+.if_else_570:
+ mov rax, 55
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .or_right_572
+ mov rax, 1
+ jmp .or_end_572
+.or_right_572:
+ mov rax, 56
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.or_end_572:
+ cmp rax, 0
+ je .if_else_571
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_struct_union_declaration
+ add rsp, 16
+ jmp .if_end_571
+.if_else_571:
+ mov rax, 45
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_573
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_enum_declaration
+ add rsp, 8
+ jmp .if_end_573
+.if_else_573:
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_token_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_360
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 8
+ push rax
+ mov rax, global_string_361
+ push rax
+ call func_die_loc2
+ add rsp, 32
+.if_end_573:
+.if_end_571:
+.if_end_570:
+.if_end_569:
+.if_end_568:
+.if_end_567:
+.if_end_566:
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+.loop_start_574:
+.loop_continue_574:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, 48
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_575
+ mov rax, 0
+ jmp .and_end_575
+.and_right_575:
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setg al
+ movzx rax, al
+ cmp rax, 0
+ setne al
+.and_end_575:
+ cmp rax, 0
+ je .loop_end_574
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_pop
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, global_vars
+ add rax, 1073741936
+ mov rax, [rax]
+ push rax
+ call func_vector_top
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 48
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_lexer_peek
+ add rsp, 16
+ jmp .loop_start_574
+.loop_end_574:
+ jmp .loop_start_565
+.loop_end_565:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_asm4
+func_emit_asm4:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -40
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_asm3
+func_emit_asm3:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -32
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_asm2
+func_emit_asm2:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_asm
+func_emit_asm:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fwrite
+ add rsp, 24
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_emit_num
+func_emit_num:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_576
+ mov rax, global_string_362
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ neg rax
+ pop rbx
+ mov [rbx], rax
+.if_end_576:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741968
+ mov rax, [rax]
+ push rax
+ call func_fputu
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_syscall
+func_generate_syscall:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_string_363
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_364
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_365
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_subregister_for_type
+func_subregister_for_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_577
+ mov rax, global_string_366
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_577:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_578
+ mov rax, global_string_367
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_578:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_579
+ mov rax, global_string_368
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_579:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_580
+ mov rax, global_string_369
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_580:
+ mov rax, global_string_370
+ push rax
+ mov rax, global_string_371
+ push rax
+ call func_die2
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_specifier_for_type
+func_specifier_for_type:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ mov [rbp-8], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_581
+ mov rax, global_string_372
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_581:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_582
+ mov rax, global_string_373
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_582:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_583
+ mov rax, global_string_374
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_583:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_584
+ mov rax, global_string_375
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_584:
+ mov rax, global_string_376
+ push rax
+ mov rax, global_string_377
+ push rax
+ call func_die2
+ add rsp, 16
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_lvalue_into_rax
+func_generate_lvalue_into_rax:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 34
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_585
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, global_string_378
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_379
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_380
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_585
+.if_else_585:
+ mov rax, 35
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_586
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, global_string_381
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_382
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_383
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_586
+.if_else_586:
+ mov rax, 24
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_587
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_588
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ jmp .if_end_588
+.if_else_588:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_lvalue_into_rax
+ add rsp, 8
+.if_end_588:
+ mov rax, global_string_384
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_385
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_587
+.if_else_587:
+ mov rax, 4
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_589
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ jmp .if_end_589
+.if_else_589:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_386
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_589:
+.if_end_587:
+.if_end_586:
+.if_end_585:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_function_call
+func_generate_function_call:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 32
+ mov rax, 0
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ mov [rbp-24], rax
+.loop_start_590:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setge al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_590
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_387
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+.loop_continue_590:
+ mov rax, rbp
+ sub rax, 24
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ pop rbx
+ sub rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_590
+.loop_end_590:
+ mov rax, global_string_388
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_389
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+ mov rax, global_string_390
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_391
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_expr_into_rax
+func_generate_expr_into_rax:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 25
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_591
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_592
+ mov rax, global_string_392
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_393
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_592
+.if_else_592:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_593
+ mov rax, global_string_394
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ movsx rax, byte [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_395
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_593
+.if_else_593:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_594
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, global_vars
+ add rax, 1073741984
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-16], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741984
+ mov rax, [rax]
+ push rax
+ call func_vector_push
+ add rsp, 16
+ mov rax, global_string_396
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_397
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_594
+.if_else_594:
+ mov rax, global_string_398
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_594:
+.if_end_593:
+.if_end_592:
+ jmp .if_end_591
+.if_else_591:
+ mov rax, 3
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_595
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_lvalue_into_rax
+ add rsp, 8
+ jmp .if_end_595
+.if_else_595:
+ mov rax, 28
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_596
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_399
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_400
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_401
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_402
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_403
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_404
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_405
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_406
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_407
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_596
+.if_else_596:
+ mov rax, 5
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_597
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_408
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_409
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_410
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_597
+.if_else_597:
+ mov rax, 6
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_598
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_411
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_412
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_413
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_598
+.if_else_598:
+ mov rax, 10
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_599
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_414
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_415
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_416
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_599
+.if_else_599:
+ mov rax, 11
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_600
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_417
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_418
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_419
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_600
+.if_else_600:
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_601
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_420
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_421
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_422
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_423
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_601
+.if_else_601:
+ mov rax, 9
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_602
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_424
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_425
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_426
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_427
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_428
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_602
+.if_else_602:
+ mov rax, 7
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_603
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_429
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_430
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_431
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_603
+.if_else_603:
+ mov rax, 17
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_604
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_432
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_433
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_434
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_435
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_436
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_604
+.if_else_604:
+ mov rax, 18
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_605
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_437
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_438
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_439
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_440
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_441
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_605
+.if_else_605:
+ mov rax, 19
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_606
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_442
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_443
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_444
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_445
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_446
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_606
+.if_else_606:
+ mov rax, 20
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_607
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_447
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_448
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_449
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_450
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_451
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_607
+.if_else_607:
+ mov rax, 21
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_608
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_452
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_453
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_454
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_455
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_456
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_608
+.if_else_608:
+ mov rax, 22
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_609
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_457
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_458
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_459
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_460
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_461
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_609
+.if_else_609:
+ mov rax, 13
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_610
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_462
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_463
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_464
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_610
+.if_else_610:
+ mov rax, 15
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_611
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_465
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_466
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_467
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_611
+.if_else_611:
+ mov rax, 16
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_612
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_468
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_469
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_470
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_612
+.if_else_612:
+ mov rax, 2
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_613
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_471
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_613
+.if_else_613:
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_614
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_472
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_614
+.if_else_614:
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_615
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_473
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_474
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_475
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_615
+.if_else_615:
+ mov rax, 14
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_616
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_476
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_477
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_478
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_479
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_480
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_481
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_482
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_483
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_484
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_485
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_486
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_487
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_616
+.if_else_616:
+ mov rax, 12
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_617
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_488
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_489
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_490
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_491
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_492
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_493
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_494
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_495
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_496
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_497
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_498
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_499
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_617
+.if_else_617:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_is_lvalue
+ add rsp, 8
+ cmp rax, 0
+ je .if_else_618
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_generate_lvalue_into_rax
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_size_for_type
+ add rsp, 8
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_619
+ mov rax, global_string_500
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_619
+.if_else_619:
+ mov rax, global_string_501
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_specifier_for_type
+ add rsp, 8
+ push rax
+ mov rax, global_string_502
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+.if_end_619:
+ jmp .if_end_618
+.if_else_618:
+ mov rax, 23
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_620
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_lvalue_into_rax
+ add rsp, 8
+ mov rax, global_string_503
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_504
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_505
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_subregister_for_type
+ add rsp, 8
+ push rax
+ mov rax, global_string_506
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+ jmp .if_end_620
+.if_else_620:
+ mov rax, 27
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_621
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_generate_function_call
+ add rsp, 8
+ jmp .if_end_621
+.if_else_621:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_node_type_to_string
+ add rsp, 8
+ push rax
+ mov rax, global_string_507
+ push rax
+ call func_die2
+ add rsp, 16
+.if_end_621:
+.if_end_620:
+.if_end_618:
+.if_end_617:
+.if_end_616:
+.if_end_615:
+.if_end_614:
+.if_end_613:
+.if_end_612:
+.if_end_611:
+.if_end_610:
+.if_end_609:
+.if_end_608:
+.if_end_607:
+.if_end_606:
+.if_end_605:
+.if_end_604:
+.if_end_603:
+.if_end_602:
+.if_end_601:
+.if_end_600:
+.if_end_599:
+.if_end_598:
+.if_end_597:
+.if_end_596:
+.if_end_595:
+.if_end_591:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_statement
+func_generate_statement:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+ mov rax, 36
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_622
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_else_623
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ jmp .if_end_623
+.if_else_623:
+ mov rax, global_string_508
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_623:
+ mov rax, global_string_509
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_510
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_511
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_512
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_513
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_622
+.if_else_622:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_624
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_625
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, global_string_514
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_515
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_625:
+ jmp .if_end_624
+.if_else_624:
+ mov rax, 40
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_626
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_generate_block
+ add rsp, 8
+ jmp .if_end_626
+.if_else_626:
+ mov rax, 29
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_627
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_628
+ mov rax, global_string_516
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_517
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_518
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_519
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_520
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_628
+.if_else_628:
+ mov rax, global_string_521
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_522
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_523
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_524
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_525
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_526
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_527
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_528
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_529
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_628:
+ jmp .if_end_627
+.if_else_627:
+ mov rax, 30
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_629
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, global_string_530
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_531
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_532
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_533
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_534
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_535
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_536
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_537
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_538
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_539
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_540
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_629
+.if_else_629:
+ mov rax, 32
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_630
+ mov rax, global_vars
+ add rax, 1073741976
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, global_vars
+ add rax, 1073741976
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_631
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+.if_end_631:
+ mov rax, global_string_541
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_542
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_632
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, global_string_543
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_544
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_545
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_632:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+ mov rax, global_string_546
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_547
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_633
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+.if_end_633:
+ mov rax, global_string_548
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_549
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_550
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_551
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_630
+.if_else_630:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+.if_end_630:
+.if_end_629:
+.if_end_627:
+.if_end_626:
+.if_end_624:
+.if_end_622:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_block
+func_generate_block:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_634:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_634
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_generate_statement
+ add rsp, 8
+.loop_continue_634:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_634
+.loop_end_634:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_function
+func_generate_function:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_635
+ xor rax, rax
+ push rax
+ pop rax
+ mov rsp, rbp
+ pop rbp
+ ret
+.if_end_635:
+ mov rax, global_string_552
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_553
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+ mov rax, global_string_554
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_string_555
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+ mov rax, global_string_556
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_557
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_558
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_559
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_generate_block
+ add rsp, 8
+ mov rax, global_string_560
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_561
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_562
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_563
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_generate_program
+func_generate_program:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 40
+ mov rax, global_vars
+ add rax, 1073741968
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ mov [rbp-8], rax
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_636:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_636
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-24], rax
+ mov rax, 37
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_637
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ call func_generate_function
+ add rsp, 8
+ jmp .if_end_637
+.if_else_637:
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_638
+ jmp .if_end_638
+.if_else_638:
+ mov rax, global_string_564
+ push rax
+ call func_die
+ add rsp, 8
+.if_end_638:
+.if_end_637:
+.loop_continue_636:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_636
+.loop_end_636:
+ mov rax, 1
+ cmp rax, 0
+ je .if_else_639
+ mov rax, global_string_565
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_566
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_567
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_568
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_569
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_570
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ jmp .if_end_639
+.if_else_639:
+ mov rax, global_string_571
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_572
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_573
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_574
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_575
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_576
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_577
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_578
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.if_end_639:
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_640:
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_640
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ mov [rbp-24], rax
+ mov rax, 33
+ push rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ jne .and_right_642
+ mov rax, 0
+ jmp .and_end_642
+.and_right_642:
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ cmp rax, 0
+ setne al
+.and_end_642:
+ cmp rax, 0
+ je .if_end_641
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ mov [rbp-32], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 24
+ mov rax, [rax]
+ push rax
+ call func_generate_expr_into_rax
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ add rax, 16
+ add rax, 0
+ add rax, 0
+ add rax, 16
+ mov rax, [rax]
+ mov [rbp-40], rax
+ mov rax, global_string_579
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_580
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 40
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_581
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_582
+ push rax
+ mov rax, rbp
+ sub rax, 32
+ mov rax, [rax]
+ add rax, 8
+ mov rax, [rax]
+ push rax
+ call func_subregister_for_type
+ add rsp, 8
+ push rax
+ mov rax, global_string_583
+ push rax
+ call func_emit_asm3
+ add rsp, 24
+.if_end_641:
+.loop_continue_640:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_640
+.loop_end_640:
+ mov rax, global_string_584
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_585
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 33554433
+ push rax
+ call func_generate_syscall
+ add rsp, 8
+ call func_generate_builtins
+ add rsp, 0
+ mov rax, global_string_586
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_587
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_vars
+ add rax, 1073741928
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_588
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_589
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 0
+ mov [rbp-16], rax
+.loop_start_643:
+ mov rax, global_vars
+ add rax, 1073741984
+ mov rax, [rax]
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_643
+ mov rax, global_string_590
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_emit_num
+ add rsp, 8
+ mov rax, global_string_591
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, global_vars
+ add rax, 1073741984
+ mov rax, [rax]
+ add rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_emit_asm
+ add rsp, 8
+ mov rax, global_string_592
+ push rax
+ call func_emit_asm
+ add rsp, 8
+.loop_continue_643:
+ mov rax, rbp
+ sub rax, 16
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_643
+.loop_end_643:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_print_usage_and_exit
+func_print_usage_and_exit:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0
+ mov rax, global_string_593
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_puts
+ add rsp, 8
+ mov rax, global_string_594
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_595
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_596
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_597
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_598
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_599
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, global_string_600
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ call func_exit
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_parse_cli_args
+func_parse_cli_args:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 16
+ mov rax, 1
+ mov [rbp-8], rax
+.loop_start_644:
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ setl al
+ movzx rax, al
+ cmp rax, 0
+ je .loop_end_644
+ mov rax, global_string_601
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_645
+ mov rax, global_vars
+ add rax, 1073742016
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_strlen
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742008
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073741992
+ push rax
+ mov rax, global_string_602
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_645
+.if_else_645:
+ mov rax, global_string_603
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_646
+ mov rax, 0
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_print_usage_and_exit
+ add rsp, 16
+ jmp .if_end_646
+.if_else_646:
+ mov rax, global_string_604
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_647
+ mov rax, global_vars
+ add rax, 1073742024
+ push rax
+ mov rax, 1
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_647
+.if_else_647:
+ mov rax, global_string_605
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_648
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742000
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ jmp .if_end_648
+.if_else_648:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741992
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_else_649
+ mov rax, global_string_606
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_streq
+ add rsp, 16
+ cmp rax, 0
+ je .if_else_650
+ mov rax, global_vars
+ add rax, 1073741992
+ push rax
+ mov rax, global_string_607
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742008
+ push rax
+ mov rax, 4096
+ push rax
+ call func_malloc
+ add rsp, 8
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742016
+ push rax
+ mov rax, 4096
+ push rax
+ mov rax, global_vars
+ add rax, 1073742008
+ mov rax, [rax]
+ push rax
+ mov rax, 0
+ push rax
+ call func_read
+ add rsp, 24
+ pop rbx
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 1073742016
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073742008
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ push rax
+ mov rax, 0
+ pop rbx
+ mov [rbx], al
+ mov rax, 4096
+ push rax
+ mov rax, global_vars
+ add rax, 1073742016
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_651
+ mov rax, global_string_608
+ push rax
+ call func_putsln
+ add rsp, 8
+ mov rax, 1
+ push rax
+ call func_exit
+ add rsp, 8
+.if_end_651:
+ jmp .if_end_650
+.if_else_650:
+ mov rax, global_vars
+ add rax, 1073741992
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ pop rbx
+ mov [rbx], rax
+ mov rax, 114
+ push rax
+ mov rax, global_vars
+ add rax, 1073741992
+ mov rax, [rax]
+ push rax
+ call func_fopen
+ add rsp, 16
+ mov [rbp-16], rax
+ mov rax, global_vars
+ add rax, 1073742008
+ push rax
+ mov rax, global_vars
+ add rax, 1073742016
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_fread_to_string
+ add rsp, 16
+ pop rbx
+ mov [rbx], rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_fclose
+ add rsp, 8
+.if_end_650:
+ jmp .if_end_649
+.if_else_649:
+ mov rax, 1
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_print_usage_and_exit
+ add rsp, 16
+.if_end_649:
+.if_end_648:
+.if_end_647:
+.if_end_646:
+.if_end_645:
+.loop_continue_644:
+ mov rax, rbp
+ sub rax, 8
+ push rax
+ mov rax, 1
+ push rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ pop rbx
+ mov [rbx], rax
+ jmp .loop_start_644
+.loop_end_644:
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741992
+ mov rax, [rax]
+ pop rbx
+ cmp rax, rbx
+ sete al
+ movzx rax, al
+ cmp rax, 0
+ je .if_end_652
+ mov rax, 1
+ push rax
+ mov rax, 8
+ push rax
+ mov rax, 0
+ pop rbx
+ imul rbx
+ push rax
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ pop rbx
+ add rax, rbx
+ mov rax, [rax]
+ push rax
+ call func_print_usage_and_exit
+ add rsp, 16
+.if_end_652:
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global func_main
+func_main:
+ push rbp
+ mov rbp, rsp
+ sub rsp, 24
+ mov rax, rbp
+ sub rax, -24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, -16
+ mov rax, [rax]
+ push rax
+ call func_parse_cli_args
+ add rsp, 16
+ mov rax, global_vars
+ add rax, 1073742016
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073742008
+ mov rax, [rax]
+ push rax
+ mov rax, global_vars
+ add rax, 1073741992
+ mov rax, [rax]
+ push rax
+ call func_lexer_new
+ add rsp, 24
+ mov [rbp-8], rax
+ mov rax, rbp
+ sub rax, 8
+ mov rax, [rax]
+ push rax
+ call func_parse_program
+ add rsp, 8
+ mov [rbp-16], rax
+ mov rax, global_vars
+ add rax, 1073742024
+ mov rax, [rax]
+ cmp rax, 0
+ je .if_end_653
+ mov rax, 0
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_dump_ast
+ add rsp, 16
+.if_end_653:
+ mov rax, 119
+ push rax
+ mov rax, global_vars
+ add rax, 1073742000
+ mov rax, [rax]
+ push rax
+ call func_fopen
+ add rsp, 16
+ mov [rbp-24], rax
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ mov rax, rbp
+ sub rax, 16
+ mov rax, [rax]
+ push rax
+ call func_generate_program
+ add rsp, 16
+ mov rax, rbp
+ sub rax, 24
+ mov rax, [rax]
+ push rax
+ call func_fclose
+ add rsp, 8
+ mov rsp, rbp
+ pop rbp
+ mov qword rax, 0
+ ret
+global _main
+_main:
+ mov rax, rsi
+ push rax
+ mov rax, rdi
+ push rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073741832
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741840
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741848
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741856
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741864
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073741872
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741880
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741888
+ mov [rbx], rax
+ mov rax, global_vars
+ add rax, 0
+ mov rax, [rax]
+ mov rbx, global_vars
+ add rbx, 1073741896
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741904
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073741912
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741920
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073741928
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741936
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741944
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741952
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741960
+ mov [rbx], rax
+ mov rax, 1
+ neg rax
+ mov rbx, global_vars
+ add rbx, 1073741976
+ mov [rbx], rax
+ call func_vector_new
+ add rsp, 0
+ mov rbx, global_vars
+ add rbx, 1073741984
+ mov [rbx], rax
+ mov rax, global_string_609
+ mov rbx, global_vars
+ add rbx, 1073742000
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073742016
+ mov [rbx], rax
+ mov rax, 0
+ mov rbx, global_vars
+ add rbx, 1073742024
+ mov [rbx], rax
+ call func_main
+ mov rdi, rax
+ mov rax, 33554433
+ syscall
+func_print:
+ mov rdi, [rsp+8]
+ mov r9, -3689348814741910323
+ sub rsp, 40
+ mov byte [rsp+31], 10
+ lea rcx, [rsp+30]
+ mov qword rbx, 0
+.L2:
+ mov rax, rdi
+ lea r8, [rsp+32]
+ mul r9
+ mov rax, rdi
+ sub r8, rcx
+ shr rdx, 3
+ lea rsi, [rdx+rdx*4]
+ add rsi, rsi
+ sub rax, rsi
+ add eax, 48
+ mov byte [rcx], al
+ mov rax, rdi
+ mov rdi, rdx
+ mov rdx, rcx
+ sub rcx, 1
+ cmp rax, 9
+ ja .L2
+ lea rax, [rsp+32]
+ mov edi, 1
+ sub rdx, rax
+ xor eax, eax
+ lea rsi, [rsp+32+rdx]
+ mov rdx, r8
+ mov rax, 33554436
+ syscall
+ add rsp, 40
+ ret
+func_syscall0:
+ mov rax, [rsp+8]
+ syscall
+ ret
+func_syscall1:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ syscall
+ ret
+func_syscall2:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ syscall
+ ret
+func_syscall3:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ mov rdx, [rsp+32]
+ syscall
+ ret
+func_syscall4:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ mov rdx, [rsp+32]
+ mov rcx, [rsp+40]
+ syscall
+ ret
+func_syscall5:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ mov rdx, [rsp+32]
+ mov rcx, [rsp+40]
+ mov r8, [rsp+48]
+ syscall
+ ret
+func_syscall6:
+ mov rax, [rsp+8]
+ mov rdi, [rsp+16]
+ mov rsi, [rsp+24]
+ mov rdx, [rsp+32]
+ mov rcx, [rsp+40]
+ mov r8, [rsp+48]
+ mov r9, [rsp+56]
+ syscall
+ ret
+func_fork:
+ mov rdi, [rsp+8]
+ mov rax, 33554434
+ syscall
+ cmp rdx, 0
+ je .L1
+ mov rax, 0
+.L1:
+ ret
+section .bss
+ global_vars: resb 1073742032
+section .data
+ global_string_0: db `assertion failed`, 0
+ global_string_1: db `malloc: out of memory. only 1gb available`, 0
+ global_string_2: db `: Error in execve()`, 0
+ global_string_3: db `std/common.cup:261:14`, 0
+ global_string_4: db `: Error in wait()`, 0
+ global_string_5: db `std/common.cup:266:14`, 0
+ global_string_6: db `: Child did not exit normally`, 0
+ global_string_7: db `std/common.cup:269:14`, 0
+ global_string_8: db `: Child exited with non-zero status`, 0
+ global_string_9: db `std/common.cup:272:14`, 0
+ global_string_10: db `Unknown file open mode`, 0
+ global_string_11: db `Could not open file`, 0
+ global_string_12: db `Could not write to file`, 0
+ global_string_13: db `Could not read from file`, 0
+ global_string_14: db `Could not map file`, 0
+ global_string_15: db `TOKEN_AMPERSAND`, 0
+ global_string_16: db `TOKEN_AND`, 0
+ global_string_17: db `TOKEN_ASSIGN`, 0
+ global_string_18: db `TOKEN_BAR`, 0
+ global_string_19: db `TOKEN_CARET`, 0
+ global_string_20: db `TOKEN_CHARLIT`, 0
+ global_string_21: db `TOKEN_CLOSE_BRACE`, 0
+ global_string_22: db `TOKEN_CLOSE_BRACKET`, 0
+ global_string_23: db `TOKEN_CLOSE_PAREN`, 0
+ global_string_24: db `TOKEN_COLON`, 0
+ global_string_25: db `TOKEN_COMMA`, 0
+ global_string_26: db `TOKEN_DOT`, 0
+ global_string_27: db `TOKEN_EOF`, 0
+ global_string_28: db `TOKEN_EQ`, 0
+ global_string_29: db `TOKEN_EXCLAMATION`, 0
+ global_string_30: db `TOKEN_GEQ`, 0
+ global_string_31: db `TOKEN_GT`, 0
+ global_string_32: db `TOKEN_IDENTIFIER`, 0
+ global_string_33: db `TOKEN_INTLIT`, 0
+ global_string_34: db `TOKEN_LEQ`, 0
+ global_string_35: db `TOKEN_LSHIFT`, 0
+ global_string_36: db `TOKEN_LT`, 0
+ global_string_37: db `TOKEN_MINUS`, 0
+ global_string_38: db `TOKEN_MINUSEQUALS`, 0
+ global_string_39: db `TOKEN_MINUSMINUS`, 0
+ global_string_40: db `TOKEN_NEQ`, 0
+ global_string_41: db `TOKEN_OPEN_BRACE`, 0
+ global_string_42: db `TOKEN_OPEN_BRACKET`, 0
+ global_string_43: db `TOKEN_OPEN_PAREN`, 0
+ global_string_44: db `TOKEN_OR`, 0
+ global_string_45: db `TOKEN_PERCENT`, 0
+ global_string_46: db `TOKEN_PLUS`, 0
+ global_string_47: db `TOKEN_PLUSEQUALS`, 0
+ global_string_48: db `TOKEN_PLUSPLUS`, 0
+ global_string_49: db `TOKEN_QUESTION`, 0
+ global_string_50: db `TOKEN_RSHIFT`, 0
+ global_string_51: db `TOKEN_SEMICOLON`, 0
+ global_string_52: db `TOKEN_SLASH`, 0
+ global_string_53: db `TOKEN_STAR`, 0
+ global_string_54: db `TOKEN_STRINGLIT`, 0
+ global_string_55: db `TOKEN_TILDE`, 0
+ global_string_56: db `TOKEN_XOR`, 0
+ global_string_57: db `TOKEN_CHAR`, 0
+ global_string_58: db `TOKEN_CONST`, 0
+ global_string_59: db `TOKEN_ENUM`, 0
+ global_string_60: db `TOKEN_ELSE`, 0
+ global_string_61: db `TOKEN_DEFER`, 0
+ global_string_62: db `TOKEN_FN`, 0
+ global_string_63: db `TOKEN_FOR`, 0
+ global_string_64: db `TOKEN_IF`, 0
+ global_string_65: db `TOKEN_INT`, 0
+ global_string_66: db `TOKEN_LET`, 0
+ global_string_67: db `TOKEN_RETURN`, 0
+ global_string_68: db `TOKEN_SIZEOF`, 0
+ global_string_69: db `TOKEN_STRUCT`, 0
+ global_string_70: db `TOKEN_UNION`, 0
+ global_string_71: db `TOKEN_VOID`, 0
+ global_string_72: db `TOKEN_WHILE`, 0
+ global_string_73: db `TOKEN_IMPORT`, 0
+ global_string_74: db `\nUnknown token type in token_type_to_string: `, 0
+ global_string_75: db `char`, 0
+ global_string_76: db `const`, 0
+ global_string_77: db `enum`, 0
+ global_string_78: db `else`, 0
+ global_string_79: db `defer`, 0
+ global_string_80: db `fn`, 0
+ global_string_81: db `for`, 0
+ global_string_82: db `if`, 0
+ global_string_83: db `int`, 0
+ global_string_84: db `let`, 0
+ global_string_85: db `return`, 0
+ global_string_86: db `sizeof`, 0
+ global_string_87: db `struct`, 0
+ global_string_88: db `union`, 0
+ global_string_89: db `void`, 0
+ global_string_90: db `while`, 0
+ global_string_91: db `import`, 0
+ global_string_92: db `Unknown keyword in keyword_to_string: `, 0
+ global_string_93: db `: `, 0
+ global_string_94: db `Note: Error happened here: `, 0
+ global_string_95: db ``, 0
+ global_string_96: db `Vector is empty, nothing to pop.`, 0
+ global_string_97: db `Vector is empty, nothing to return.`, 0
+ global_string_98: db `Unknown type in size_for_type`, 0
+ global_string_99: db `*`, 0
+ global_string_100: db `[]`, 0
+ global_string_101: db `int`, 0
+ global_string_102: db `char`, 0
+ global_string_103: db `void`, 0
+ global_string_104: db `any`, 0
+ global_string_105: db `create_type_string: unknown type`, 0
+ global_string_106: db `AST_NEG`, 0
+ global_string_107: db `AST_NOT`, 0
+ global_string_108: db `AST_BWINV`, 0
+ global_string_109: db `AST_ADDROF`, 0
+ global_string_110: db `AST_DEREF`, 0
+ global_string_111: db `AST_PLUS`, 0
+ global_string_112: db `AST_MINUS`, 0
+ global_string_113: db `AST_MUL`, 0
+ global_string_114: db `AST_DIV`, 0
+ global_string_115: db `AST_MOD`, 0
+ global_string_116: db `AST_LSHIFT`, 0
+ global_string_117: db `AST_RSHIFT`, 0
+ global_string_118: db `AST_AND`, 0
+ global_string_119: db `AST_BWAND`, 0
+ global_string_120: db `AST_OR`, 0
+ global_string_121: db `AST_BWOR`, 0
+ global_string_122: db `AST_XOR`, 0
+ global_string_123: db `AST_EQ`, 0
+ global_string_124: db `AST_NEQ`, 0
+ global_string_125: db `AST_LT`, 0
+ global_string_126: db `AST_LEQ`, 0
+ global_string_127: db `AST_GT`, 0
+ global_string_128: db `AST_GEQ`, 0
+ global_string_129: db `AST_ASSIGN`, 0
+ global_string_130: db `AST_MEMBER`, 0
+ global_string_131: db `AST_LITERAL`, 0
+ global_string_132: db `AST_CONSTANT`, 0
+ global_string_133: db `AST_FUNCCALL`, 0
+ global_string_134: db `AST_CONDITIONAL`, 0
+ global_string_135: db `AST_IF`, 0
+ global_string_136: db `AST_WHILE`, 0
+ global_string_137: db `AST_DEFER`, 0
+ global_string_138: db `AST_FOR`, 0
+ global_string_139: db `AST_VARDECL`, 0
+ global_string_140: db `AST_LOCAL_VAR`, 0
+ global_string_141: db `AST_GLOBAL_VAR`, 0
+ global_string_142: db `AST_RETURN`, 0
+ global_string_143: db `AST_FUNC`, 0
+ global_string_144: db `AST_BUILTIN`, 0
+ global_string_145: db `AST_PROGRAM`, 0
+ global_string_146: db `AST_BLOCK`, 0
+ global_string_147: db `Unknown node type in node_type_to_string: `, 0
+ global_string_148: db `Unknown token in binary_token_to_op: `, 0
+ global_string_149: db `Unknown literal type in dump_ast`, 0
+ global_string_150: db `func `, 0
+ global_string_151: db `()\n`, 0
+ global_string_152: db `let `, 0
+ global_string_153: db `: `, 0
+ global_string_154: db ` =\n`, 0
+ global_string_155: db `Performing invalid unary operation on struct type`, 0
+ global_string_156: db `compiler/ast.cup:360:17`, 0
+ global_string_157: db `Cannot dereference non-pointer type`, 0
+ global_string_158: db `compiler/ast.cup:371:21`, 0
+ global_string_159: db `Cannot negate non-integer type`, 0
+ global_string_160: db `compiler/ast.cup:378:21`, 0
+ global_string_161: db `Performing invalid binary operation on struct type`, 0
+ global_string_162: db `compiler/ast.cup:393:17`, 0
+ global_string_163: db `Cannot add non-integer types`, 0
+ global_string_164: db `compiler/ast.cup:417:21`, 0
+ global_string_165: db `Cannot subtract pointers of different types`, 0
+ global_string_166: db `compiler/ast.cup:443:25`, 0
+ global_string_167: db `Cannot subtract non-integer types`, 0
+ global_string_168: db `compiler/ast.cup:453:21`, 0
+ global_string_169: db `Cannot do operation non-integer types:`, 0
+ global_string_170: db `compiler/ast.cup:459:22`, 0
+ global_string_171: db `compound_push_field: not a compound type`, 0
+ global_string_172: db `val`, 0
+ global_string_173: db `arg`, 0
+ global_string_174: db `SYS_execve`, 0
+ global_string_175: db `SYS_execve`, 0
+ global_string_176: db `SYS_read`, 0
+ global_string_177: db `SYS_write`, 0
+ global_string_178: db `SYS_exit`, 0
+ global_string_179: db `SYS_open`, 0
+ global_string_180: db `SYS_lseek`, 0
+ global_string_181: db `SYS_openat`, 0
+ global_string_182: db `SYS_close`, 0
+ global_string_183: db `SYS_fork`, 0
+ global_string_184: db `SYS_wait4`, 0
+ global_string_185: db `SYS_mmap`, 0
+ global_string_186: db `SEEK_SET`, 0
+ global_string_187: db `SEEK_CUR`, 0
+ global_string_188: db `SEEK_END`, 0
+ global_string_189: db `O_RDONLY`, 0
+ global_string_190: db `O_WRONLY`, 0
+ global_string_191: db `O_RDWR`, 0
+ global_string_192: db `O_CREAT`, 0
+ global_string_193: db `O_EXCL`, 0
+ global_string_194: db `O_TRUNC`, 0
+ global_string_195: db `AT_FDCWD`, 0
+ global_string_196: db `PROT_READ`, 0
+ global_string_197: db `PROT_WRITE`, 0
+ global_string_198: db `PROT_EXEC`, 0
+ global_string_199: db `PROT_NONE`, 0
+ global_string_200: db `MAP_SHARED`, 0
+ global_string_201: db `MAP_PRIVATE`, 0
+ global_string_202: db `MAP_ANONYMOUS`, 0
+ global_string_203: db `MAP_FIXED`, 0
+ global_string_204: db `MAP_FAILED`, 0
+ global_string_205: db `OS_IS_MACOS`, 0
+ global_string_206: db `OS_IS_LINUX`, 0
+ global_string_207: db `print`, 0
+ global_string_208: db `val`, 0
+ global_string_209: db `fork`, 0
+ global_string_210: db `syscall0`, 0
+ global_string_211: db `syscall1`, 0
+ global_string_212: db `syscall2`, 0
+ global_string_213: db `syscall3`, 0
+ global_string_214: db `syscall4`, 0
+ global_string_215: db `syscall5`, 0
+ global_string_216: db `syscall6`, 0
+ global_string_217: db `syscall7`, 0
+ global_string_218: db `func_print:\n`, 0
+ global_string_219: db ` mov rdi, [rsp+8]\n`, 0
+ global_string_220: db ` mov r9, -3689348814741910323\n`, 0
+ global_string_221: db ` sub rsp, 40\n`, 0
+ global_string_222: db ` mov byte [rsp+31], 10\n`, 0
+ global_string_223: db ` lea rcx, [rsp+30]\n`, 0
+ global_string_224: db ` mov qword rbx, 0\n`, 0
+ global_string_225: db `.L2:\n`, 0
+ global_string_226: db ` mov rax, rdi\n`, 0
+ global_string_227: db ` lea r8, [rsp+32]\n`, 0
+ global_string_228: db ` mul r9\n`, 0
+ global_string_229: db ` mov rax, rdi\n`, 0
+ global_string_230: db ` sub r8, rcx\n`, 0
+ global_string_231: db ` shr rdx, 3\n`, 0
+ global_string_232: db ` lea rsi, [rdx+rdx*4]\n`, 0
+ global_string_233: db ` add rsi, rsi\n`, 0
+ global_string_234: db ` sub rax, rsi\n`, 0
+ global_string_235: db ` add eax, 48\n`, 0
+ global_string_236: db ` mov byte [rcx], al\n`, 0
+ global_string_237: db ` mov rax, rdi\n`, 0
+ global_string_238: db ` mov rdi, rdx\n`, 0
+ global_string_239: db ` mov rdx, rcx\n`, 0
+ global_string_240: db ` sub rcx, 1\n`, 0
+ global_string_241: db ` cmp rax, 9\n`, 0
+ global_string_242: db ` ja .L2\n`, 0
+ global_string_243: db ` lea rax, [rsp+32]\n`, 0
+ global_string_244: db ` mov edi, 1\n`, 0
+ global_string_245: db ` sub rdx, rax\n`, 0
+ global_string_246: db ` xor eax, eax\n`, 0
+ global_string_247: db ` lea rsi, [rsp+32+rdx]\n`, 0
+ global_string_248: db ` mov rdx, r8\n`, 0
+ global_string_249: db ` add rsp, 40\n`, 0
+ global_string_250: db ` ret\n`, 0
+ global_string_251: db `rax`, 0
+ global_string_252: db `rdi`, 0
+ global_string_253: db `rsi`, 0
+ global_string_254: db `rdx`, 0
+ global_string_255: db `rcx`, 0
+ global_string_256: db `r8`, 0
+ global_string_257: db `r9`, 0
+ global_string_258: db `r10`, 0
+ global_string_259: db `r11`, 0
+ global_string_260: db `r12`, 0
+ global_string_261: db `func_syscall`, 0
+ global_string_262: db `:\n`, 0
+ global_string_263: db ` mov `, 0
+ global_string_264: db `, [rsp+`, 0
+ global_string_265: db `]\n`, 0
+ global_string_266: db ` syscall\n`, 0
+ global_string_267: db ` ret\n`, 0
+ global_string_268: db `func_fork:\n`, 0
+ global_string_269: db ` mov rdi, [rsp+8]\n`, 0
+ global_string_270: db ` mov rax, `, 0
+ global_string_271: db `\n`, 0
+ global_string_272: db ` syscall\n`, 0
+ global_string_273: db ` cmp rdx, 0\n`, 0
+ global_string_274: db ` je .L1\n`, 0
+ global_string_275: db ` mov rax, 0\n`, 0
+ global_string_276: db `.L1:\n`, 0
+ global_string_277: db ` ret\n`, 0
+ global_string_278: db `here`, 0
+ global_string_279: db `:`, 0
+ global_string_280: db `:`, 0
+ global_string_281: db `EOF while parsing string literal`, 0
+ global_string_282: db `compiler/lexer.cup:248:29`, 0
+ global_string_283: db `Unknown character in lexer_next: '`, 0
+ global_string_284: db `'`, 0
+ global_string_285: db `Exiting`, 0
+ global_string_286: db `: Expected `, 0
+ global_string_287: db ` but got `, 0
+ global_string_288: db `Constant expressions can only contain integer literals/constants.`, 0
+ global_string_289: db `Unsupported binary operator in constant expression.`, 0
+ global_string_290: db `Unsupported constant expression.`, 0
+ global_string_291: db `Identifier already exists: `, 0
+ global_string_292: db `compiler/parser.cup:147:18`, 0
+ global_string_293: db `Expected 'int' type for constant`, 0
+ global_string_294: db `compiler/parser.cup:155:21`, 0
+ global_string_295: db `Unexpected token in parse_literal: `, 0
+ global_string_296: db `compiler/parser.cup:182:18`, 0
+ global_string_297: db `Unknown token in parse_type: `, 0
+ global_string_298: db `compiler/parser.cup:204:22`, 0
+ global_string_299: db `Could not find constant: `, 0
+ global_string_300: db `compiler/parser.cup:226:30`, 0
+ global_string_301: db `Expected a constant expression for array size`, 0
+ global_string_302: db `compiler/parser.cup:231:25`, 0
+ global_string_303: db `Function call argument count mismatch: `, 0
+ global_string_304: db `compiler/parser.cup:269:18`, 0
+ global_string_305: db `Unknown identifier in parse_identifier: `, 0
+ global_string_306: db `compiler/parser.cup:311:14`, 0
+ global_string_307: db `Cannot increment non-lvalue`, 0
+ global_string_308: db `compiler/parser.cup:337:21`, 0
+ global_string_309: db `Cannot decrement non-lvalue`, 0
+ global_string_310: db `compiler/parser.cup:351:21`, 0
+ global_string_311: db `Cannot take address of non-lvalue`, 0
+ global_string_312: db `compiler/parser.cup:389:21`, 0
+ global_string_313: db `Cannot dereference non-pointer type`, 0
+ global_string_314: db `compiler/parser.cup:396:21`, 0
+ global_string_315: db `: Unexpected token found in parse_factor: `, 0
+ global_string_316: db `compiler/parser.cup:403:18`, 0
+ global_string_317: db `Cannot index non-pointer/array type`, 0
+ global_string_318: db `compiler/parser.cup:411:25`, 0
+ global_string_319: db `Cannot access member of non-struct type`, 0
+ global_string_320: db `compiler/parser.cup:431:25`, 0
+ global_string_321: db `Struct type: `, 0
+ global_string_322: db `Field name: `, 0
+ global_string_323: db `Invalid field name for struct`, 0
+ global_string_324: db `compiler/parser.cup:444:25`, 0
+ global_string_325: db `THEN and ELSE branches of conditional expression have different types`, 0
+ global_string_326: db `compiler/parser.cup:634:21`, 0
+ global_string_327: db `Identifier already defined: %s`, 0
+ global_string_328: db `compiler/parser.cup:692:18`, 0
+ global_string_329: db `- Variable type: `, 0
+ global_string_330: db `- Value type: `, 0
+ global_string_331: db `Type mismatch for variable declaration: `, 0
+ global_string_332: db `compiler/parser.cup:719:22`, 0
+ global_string_333: db `Expected ':' or '=' after variable declaration`, 0
+ global_string_334: db `compiler/parser.cup:724:17`, 0
+ global_string_335: db `------------------`, 0
+ global_string_336: db ` : Variable declared`, 0
+ global_string_337: db `Name: `, 0
+ global_string_338: db `Type: `, 0
+ global_string_339: db `Offset: `, 0
+ global_string_340: db `\n------------------`, 0
+ global_string_341: db `Identifier already defined: `, 0
+ global_string_342: db `compiler/parser.cup:761:22`, 0
+ global_string_343: db `defer is not implemented yet`, 0
+ global_string_344: db `compiler/parser.cup:885:17`, 0
+ global_string_345: db `Identifier already exists, enums just behave like numbered constants.`, 0
+ global_string_346: db `compiler/parser.cup:934:21`, 0
+ global_string_347: db `Expected a comma or a closing brace.`, 0
+ global_string_348: db `compiler/parser.cup:944:21`, 0
+ global_string_349: db `Expected STRUCT or UNION in parse_struct_union_declaration`, 0
+ global_string_350: db `compiler/parser.cup:958:17`, 0
+ global_string_351: db `You need to specify a name for the struct defined globally.`, 0
+ global_string_352: db `compiler/parser.cup:967:17`, 0
+ global_string_353: db `<anonymous>`, 0
+ global_string_354: db `Function name already exists as an identifier`, 0
+ global_string_355: db `compiler/parser.cup:1045:21`, 0
+ global_string_356: db `Function already defined earlier`, 0
+ global_string_357: db `compiler/parser.cup:1048:21`, 0
+ global_string_358: db `Found a circular import dependency in: `, 0
+ global_string_359: db `: Exiting.`, 0
+ global_string_360: db `unexpected token in parse_program: `, 0
+ global_string_361: db `compiler/parser.cup:1132:22`, 0
+ global_string_362: db `-`, 0
+ global_string_363: db ` mov rax, `, 0
+ global_string_364: db `\n`, 0
+ global_string_365: db ` syscall\n`, 0
+ global_string_366: db `al`, 0
+ global_string_367: db `ax`, 0
+ global_string_368: db `eax`, 0
+ global_string_369: db `rax`, 0
+ global_string_370: db `Unsupported type size`, 0
+ global_string_371: db `compiler/codegen.cup:52:10`, 0
+ global_string_372: db `byte`, 0
+ global_string_373: db `word`, 0
+ global_string_374: db `dword`, 0
+ global_string_375: db `qword`, 0
+ global_string_376: db `Unsupported type size`, 0
+ global_string_377: db `compiler/codegen.cup:61:10`, 0
+ global_string_378: db ` mov rax, rbp\n`, 0
+ global_string_379: db ` sub rax, `, 0
+ global_string_380: db `\n`, 0
+ global_string_381: db ` mov rax, global_vars\n`, 0
+ global_string_382: db ` add rax, `, 0
+ global_string_383: db `\n`, 0
+ global_string_384: db ` add rax, `, 0
+ global_string_385: db `\n`, 0
+ global_string_386: db `Unsupported type in generate_lvalue_into_rax: `, 0
+ global_string_387: db ` push rax\n`, 0
+ global_string_388: db `\n`, 0
+ global_string_389: db ` call func_`, 0
+ global_string_390: db ` add rsp, `, 0
+ global_string_391: db `\n`, 0
+ global_string_392: db ` mov rax, `, 0
+ global_string_393: db `\n`, 0
+ global_string_394: db ` mov rax, `, 0
+ global_string_395: db `\n`, 0
+ global_string_396: db ` mov rax, global_string_`, 0
+ global_string_397: db `\n`, 0
+ global_string_398: db `Unsupported literal type in generate_expr_into_rax`, 0
+ global_string_399: db ` cmp rax, 0\n`, 0
+ global_string_400: db ` je .cond_else_`, 0
+ global_string_401: db `\n`, 0
+ global_string_402: db ` jmp .cond_end_`, 0
+ global_string_403: db `\n`, 0
+ global_string_404: db `.cond_else_`, 0
+ global_string_405: db `:\n`, 0
+ global_string_406: db `.cond_end_`, 0
+ global_string_407: db `:\n`, 0
+ global_string_408: db ` push rax\n`, 0
+ global_string_409: db ` pop rbx\n`, 0
+ global_string_410: db ` add rax, rbx\n`, 0
+ global_string_411: db ` push rax\n`, 0
+ global_string_412: db ` pop rbx\n`, 0
+ global_string_413: db ` sub rax, rbx\n`, 0
+ global_string_414: db ` push rax\n`, 0
+ global_string_415: db ` pop rcx\n`, 0
+ global_string_416: db ` shl rax, cl\n`, 0
+ global_string_417: db ` push rax\n`, 0
+ global_string_418: db ` pop rcx\n`, 0
+ global_string_419: db ` shr rax, cl\n`, 0
+ global_string_420: db ` push rax\n`, 0
+ global_string_421: db ` pop rbx\n`, 0
+ global_string_422: db ` cqo\n`, 0
+ global_string_423: db ` idiv rbx\n`, 0
+ global_string_424: db ` push rax\n`, 0
+ global_string_425: db ` pop rbx\n`, 0
+ global_string_426: db ` cqo\n`, 0
+ global_string_427: db ` idiv rbx\n`, 0
+ global_string_428: db ` mov rax, rdx\n`, 0
+ global_string_429: db ` push rax\n`, 0
+ global_string_430: db ` pop rbx\n`, 0
+ global_string_431: db ` imul rbx\n`, 0
+ global_string_432: db ` push rax\n`, 0
+ global_string_433: db ` pop rbx\n`, 0
+ global_string_434: db ` cmp rax, rbx\n`, 0
+ global_string_435: db ` sete al\n`, 0
+ global_string_436: db ` movzx rax, al\n`, 0
+ global_string_437: db ` push rax\n`, 0
+ global_string_438: db ` pop rbx\n`, 0
+ global_string_439: db ` cmp rax, rbx\n`, 0
+ global_string_440: db ` setne al\n`, 0
+ global_string_441: db ` movzx rax, al\n`, 0
+ global_string_442: db ` push rax\n`, 0
+ global_string_443: db ` pop rbx\n`, 0
+ global_string_444: db ` cmp rax, rbx\n`, 0
+ global_string_445: db ` setl al\n`, 0
+ global_string_446: db ` movzx rax, al\n`, 0
+ global_string_447: db ` push rax\n`, 0
+ global_string_448: db ` pop rbx\n`, 0
+ global_string_449: db ` cmp rax, rbx\n`, 0
+ global_string_450: db ` setle al\n`, 0
+ global_string_451: db ` movzx rax, al\n`, 0
+ global_string_452: db ` push rax\n`, 0
+ global_string_453: db ` pop rbx\n`, 0
+ global_string_454: db ` cmp rax, rbx\n`, 0
+ global_string_455: db ` setg al\n`, 0
+ global_string_456: db ` movzx rax, al\n`, 0
+ global_string_457: db ` push rax\n`, 0
+ global_string_458: db ` pop rbx\n`, 0
+ global_string_459: db ` cmp rax, rbx\n`, 0
+ global_string_460: db ` setge al\n`, 0
+ global_string_461: db ` movzx rax, al\n`, 0
+ global_string_462: db ` push rax\n`, 0
+ global_string_463: db ` pop rbx\n`, 0
+ global_string_464: db ` and rax, rbx\n`, 0
+ global_string_465: db ` push rax\n`, 0
+ global_string_466: db ` pop rbx\n`, 0
+ global_string_467: db ` or rax, rbx\n`, 0
+ global_string_468: db ` push rax\n`, 0
+ global_string_469: db ` pop rbx\n`, 0
+ global_string_470: db ` xor rax, rbx\n`, 0
+ global_string_471: db ` not rax\n`, 0
+ global_string_472: db ` neg rax\n`, 0
+ global_string_473: db ` cmp rax, 0\n`, 0
+ global_string_474: db ` sete al\n`, 0
+ global_string_475: db ` movzx rax, al\n`, 0
+ global_string_476: db ` cmp rax, 0\n`, 0
+ global_string_477: db ` je .or_right_`, 0
+ global_string_478: db `\n`, 0
+ global_string_479: db ` mov rax, 1\n`, 0
+ global_string_480: db ` jmp .or_end_`, 0
+ global_string_481: db `\n`, 0
+ global_string_482: db `.or_right_`, 0
+ global_string_483: db `:\n`, 0
+ global_string_484: db ` cmp rax, 0\n`, 0
+ global_string_485: db ` setne al\n`, 0
+ global_string_486: db `.or_end_`, 0
+ global_string_487: db `:\n`, 0
+ global_string_488: db ` cmp rax, 0\n`, 0
+ global_string_489: db ` jne .and_right_`, 0
+ global_string_490: db `\n`, 0
+ global_string_491: db ` mov rax, 0\n`, 0
+ global_string_492: db ` jmp .and_end_`, 0
+ global_string_493: db `\n`, 0
+ global_string_494: db `.and_right_`, 0
+ global_string_495: db `:\n`, 0
+ global_string_496: db ` cmp rax, 0\n`, 0
+ global_string_497: db ` setne al\n`, 0
+ global_string_498: db `.and_end_`, 0
+ global_string_499: db `:\n`, 0
+ global_string_500: db ` mov rax, [rax]\n`, 0
+ global_string_501: db ` [rax]\n`, 0
+ global_string_502: db ` movsx rax, `, 0
+ global_string_503: db ` push rax\n`, 0
+ global_string_504: db ` pop rbx\n`, 0
+ global_string_505: db `\n`, 0
+ global_string_506: db ` mov [rbx], `, 0
+ global_string_507: db `Unsupported node type in generate_expr_into_rax: `, 0
+ global_string_508: db ` xor rax, rax\n`, 0
+ global_string_509: db ` push rax\n`, 0
+ global_string_510: db ` pop rax\n`, 0
+ global_string_511: db ` mov rsp, rbp\n`, 0
+ global_string_512: db ` pop rbp\n`, 0
+ global_string_513: db ` ret\n`, 0
+ global_string_514: db ` mov [rbp-`, 0
+ global_string_515: db `], rax\n`, 0
+ global_string_516: db ` cmp rax, 0\n`, 0
+ global_string_517: db ` je .if_end_`, 0
+ global_string_518: db `\n`, 0
+ global_string_519: db `.if_end_`, 0
+ global_string_520: db `:\n`, 0
+ global_string_521: db ` cmp rax, 0\n`, 0
+ global_string_522: db ` je .if_else_`, 0
+ global_string_523: db `\n`, 0
+ global_string_524: db ` jmp .if_end_`, 0
+ global_string_525: db `\n`, 0
+ global_string_526: db `.if_else_`, 0
+ global_string_527: db `:\n`, 0
+ global_string_528: db `.if_end_`, 0
+ global_string_529: db `:\n`, 0
+ global_string_530: db `.loop_start_`, 0
+ global_string_531: db `:\n`, 0
+ global_string_532: db `.loop_continue_`, 0
+ global_string_533: db `:\n`, 0
+ global_string_534: db ` cmp rax, 0\n`, 0
+ global_string_535: db ` je .loop_end_`, 0
+ global_string_536: db `\n`, 0
+ global_string_537: db ` jmp .loop_start_`, 0
+ global_string_538: db `\n`, 0
+ global_string_539: db `.loop_end_`, 0
+ global_string_540: db `:\n`, 0
+ global_string_541: db `.loop_start_`, 0
+ global_string_542: db `:\n`, 0
+ global_string_543: db ` cmp rax, 0\n`, 0
+ global_string_544: db ` je .loop_end_`, 0
+ global_string_545: db `\n`, 0
+ global_string_546: db `.loop_continue_`, 0
+ global_string_547: db `:\n`, 0
+ global_string_548: db ` jmp .loop_start_`, 0
+ global_string_549: db `\n`, 0
+ global_string_550: db `.loop_end_`, 0
+ global_string_551: db `:\n`, 0
+ global_string_552: db `\n`, 0
+ global_string_553: db `global func_`, 0
+ global_string_554: db `:\n`, 0
+ global_string_555: db `func_`, 0
+ global_string_556: db ` push rbp\n`, 0
+ global_string_557: db ` mov rbp, rsp\n`, 0
+ global_string_558: db ` sub rsp, `, 0
+ global_string_559: db `\n`, 0
+ global_string_560: db ` mov rsp, rbp\n`, 0
+ global_string_561: db ` pop rbp\n`, 0
+ global_string_562: db ` mov qword rax, 0\n`, 0
+ global_string_563: db ` ret\n`, 0
+ global_string_564: db `Unknown node type in generate_program`, 0
+ global_string_565: db `global _main\n`, 0
+ global_string_566: db `_main:\n`, 0
+ global_string_567: db ` mov rax, rsi\n`, 0
+ global_string_568: db ` push rax\n`, 0
+ global_string_569: db ` mov rax, rdi\n`, 0
+ global_string_570: db ` push rax\n`, 0
+ global_string_571: db `global _start\n`, 0
+ global_string_572: db `_start:\n`, 0
+ global_string_573: db ` mov rbp, rsp\n`, 0
+ global_string_574: db ` mov rax, rbp\n`, 0
+ global_string_575: db ` add rax, 8\n`, 0
+ global_string_576: db ` push rax\n`, 0
+ global_string_577: db ` mov rax, [rbp]\n`, 0
+ global_string_578: db ` push rax\n`, 0
+ global_string_579: db ` mov rbx, global_vars\n`, 0
+ global_string_580: db ` add rbx, `, 0
+ global_string_581: db `\n`, 0
+ global_string_582: db `\n`, 0
+ global_string_583: db ` mov [rbx], `, 0
+ global_string_584: db ` call func_main\n`, 0
+ global_string_585: db ` mov rdi, rax\n`, 0
+ global_string_586: db `section .bss\n`, 0
+ global_string_587: db ` global_vars: resb `, 0
+ global_string_588: db `\n`, 0
+ global_string_589: db `section .data\n`, 0
+ global_string_590: db ` global_string_`, 0
+ global_string_591: db `: db \``, 0
+ global_string_592: db `\`, 0\n`, 0
+ global_string_593: db `Usage: `, 0
+ global_string_594: db ` [options] <file>`, 0
+ global_string_595: db `Options:`, 0
+ global_string_596: db ` -c <code> Code to compile`, 0
+ global_string_597: db ` -h Show this help`, 0
+ global_string_598: db ` -o <file> Output file`, 0
+ global_string_599: db ` -d Dump AST to stdout`, 0
+ global_string_600: db `Output file will be named 'build/host.nasm' by default`, 0
+ global_string_601: db `-c`, 0
+ global_string_602: db `CLI`, 0
+ global_string_603: db `-h`, 0
+ global_string_604: db `-d`, 0
+ global_string_605: db `-o`, 0
+ global_string_606: db `-`, 0
+ global_string_607: db `stdin`, 0
+ global_string_608: db `Source too long to use through stdin`, 0
+ global_string_609: db `build/host.nasm`, 0
diff --git a/compiler/builtins.cup b/compiler/builtins.cup
index 8aae3d9..bee24e0 100644
--- a/compiler/builtins.cup
+++ b/compiler/builtins.cup
@@ -18,7 +18,16 @@ fn builtin_create_syscall(name: char*, num_args: int) {
// Defined in `parser.cup`
fn constant_push(name: char*, val: int);
+const MACOS_SYSCALL_OFFSET = 33554432; // 0x2000000;
fn builtins_push_posix_constants() {
+
+ // TODO: make this permanent?
+ if (OS_IS_MACOS) {
+ constant_push("SYS_execve", 59 + MACOS_SYSCALL_OFFSET);
+ } else {
+ constant_push("SYS_execve", 59);
+ }
+
constant_push("SYS_read", SYS_read);
constant_push("SYS_write", SYS_write);
constant_push("SYS_exit", SYS_exit);
@@ -72,6 +81,14 @@ fn initialize_builtins() {
vector_push(node.d.func.args, variable_new("val", type_new(TYPE_ANY), 0));
vector_push(all_builtins, node);
+ // The return value of fork() is weird on macOS, parent/child is returned in rdx
+ // and the child pid is returned in rax, so we'll make our own wrapper.
+ node = node_new(AST_BUILTIN);
+ node.etyp = type_new(TYPE_INT);
+ node.d.func.name = "fork";
+ node.d.func.args = vector_new_sized(0);
+ vector_push(all_builtins, node);
+
builtin_create_syscall("syscall0", 0);
builtin_create_syscall("syscall1", 1);
builtin_create_syscall("syscall2", 2);
@@ -155,4 +172,17 @@ fn generate_builtins() {
emit_asm(" syscall\n");
emit_asm(" ret\n");
}
+
+ emit_asm("func_fork:\n");
+ emit_asm(" mov rdi, [rsp+8]\n");
+ emit_asm(" mov rax, "); emit_num(SYS_fork); emit_asm("\n");
+ emit_asm(" syscall\n");
+ if (OS_IS_MACOS) {
+ // If rdx is 0, we are in the child, so set rax to 0 to match Linux
+ emit_asm(" cmp rdx, 0\n");
+ emit_asm(" je .L1\n");
+ emit_asm(" mov rax, 0\n");
+ emit_asm(".L1:\n");
+ }
+ emit_asm(" ret\n");
} \ No newline at end of file
diff --git a/compiler/codegen.cup b/compiler/codegen.cup
index 67a401c..bf20a8b 100644
--- a/compiler/codegen.cup
+++ b/compiler/codegen.cup
@@ -142,6 +142,21 @@ fn generate_expr_into_rax(node: Node*) {
emit_asm(" pop rbx\n");
emit_asm(" sub rax, rbx\n");
+ } else if (node.typ == AST_LSHIFT) {
+ generate_expr_into_rax(node.d.binary.rhs);
+ emit_asm(" push rax\n");
+ generate_expr_into_rax(node.d.binary.lhs);
+ emit_asm(" pop rcx\n");
+ emit_asm(" shl rax, cl\n");
+
+
+ } else if (node.typ == AST_RSHIFT) {
+ generate_expr_into_rax(node.d.binary.rhs);
+ emit_asm(" push rax\n");
+ generate_expr_into_rax(node.d.binary.lhs);
+ emit_asm(" pop rcx\n");
+ emit_asm(" shr rax, cl\n");
+
} else if (node.typ == AST_DIV) {
generate_expr_into_rax(node.d.binary.rhs);
emit_asm(" push rax\n");
diff --git a/compiler/lexer.cup b/compiler/lexer.cup
index 9e967f8..e6d0c0b 100644
--- a/compiler/lexer.cup
+++ b/compiler/lexer.cup
@@ -138,12 +138,16 @@ fn lexer_next(lexer: Lexer*, token: Token*) {
}
else if (c == '<') {
+ if (lexer_peek_char(lexer, 1) == '<')
+ return lexer_make_token(lexer, token, TOKEN_LSHIFT, 2);
if (lexer_peek_char(lexer, 1) == '=')
return lexer_make_token(lexer, token, TOKEN_LEQ, 2);
return lexer_make_token(lexer, token, TOKEN_LT, 1);
}
else if (c == '>') {
+ if (lexer_peek_char(lexer, 1) == '>')
+ return lexer_make_token(lexer, token, TOKEN_RSHIFT, 2);
if (lexer_peek_char(lexer, 1) == '=')
return lexer_make_token(lexer, token, TOKEN_GEQ, 2);
return lexer_make_token(lexer, token, TOKEN_GT, 1);
diff --git a/compiler/parser.cup b/compiler/parser.cup
index d57885e..d3fa64f 100644
--- a/compiler/parser.cup
+++ b/compiler/parser.cup
@@ -482,7 +482,7 @@ fn parse_additive(lexer: Lexer*): Node* {
let lhs = parse_term(lexer);
lexer_peek(lexer, &token);
- while (token.typ == TOKEN_PLUS || token.typ == TOKEN_MINUS) {
+ while (token.typ == TOKEN_PLUS || token.typ == TOKEN_MINUS || token.typ == TOKEN_LSHIFT || token.typ == TOKEN_RSHIFT) {
lexer_next(lexer, &token);
let op = node_new(binary_token_to_op(token.typ));
let rhs = parse_term(lexer);
diff --git a/meta/bootstrap.sh b/meta/bootstrap.sh
new file mode 100755
index 0000000..bc8b437
--- /dev/null
+++ b/meta/bootstrap.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Bootstrap the initial compiler, and verify that it works.
+
+set -e
+
+case "$(uname -s)" in
+ Darwin)
+ cp bootstrap/macos.nasm bootstrap/cup.nasm
+ ;;
+ Linux)
+ cp bootstrap/linux.nasm bootstrap/cup.nasm
+ ;;
+esac
+
+echo "[+] Compiling the bootstrap compiler..."
+make bootstrap/cup.out
+mkdir -p build
+
+echo "[+] Creating build/cup.out with bootstrap compiler..."
+./bootstrap/cup.out compiler/main.cup -o build/cup.nasm
+make build/cup.out
+rm -f bootstrap/cup.nasm
+
+echo "[+] Bootstrap complete!" \ No newline at end of file
diff --git a/meta/create_bootstrap.sh b/meta/create_bootstrap.sh
new file mode 100755
index 0000000..312b395
--- /dev/null
+++ b/meta/create_bootstrap.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Checkpoint the current state of the system by creating a new bootstrap
+# NASM file for MacOS and Linux to ./bootstrap/
+
+# TODO
+set -xe
+
+build/cup.out compiler/main.cup -o bootstrap/cup.nasm
+make bootstrap/cup.out
+
+case "$(uname -s)" in
+ Darwin)
+ cp bootstrap/cup.nasm bootstrap/macos.nasm
+ ;;
+ Linux)
+ cp bootstrap/cup.nasm bootstrap/linux.nasm
+ ;;
+esac
+
+rm -f bootstrap/cup.nasm
diff --git a/meta/run.sh b/meta/run.sh
new file mode 100755
index 0000000..020e0cd
--- /dev/null
+++ b/meta/run.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+build/cup.out "$1" -o build/output.nasm
+shift
+make build/output.out
+build/output.out "$@" \ No newline at end of file
diff --git a/std/common.cup b/std/common.cup
index dac8148..11892ac 100644
--- a/std/common.cup
+++ b/std/common.cup
@@ -32,9 +32,7 @@ fn openat(fd: int, path: char*, flags: int, mode: int): int {
return syscall4(SYS_openat, fd, path, flags, mode);
}
-fn fork(): int {
- return syscall0(SYS_fork);
-}
+// fork() is a builtin because of OS-specific semantics.
fn wait(status: int*): int {
return syscall4(SYS_wait4, -1, status, 0, 0);
@@ -48,6 +46,9 @@ fn mmap(addr: void*, len: int, prot: int, flags: int, fd: int, offset: int): voi
return syscall6(SYS_mmap, addr, len, prot, flags, fd, offset);
}
+fn execve(filename: char*, argv: char**, envp: char**): int {
+ return syscall3(SYS_execve, filename, argv, envp);
+}
///////////////////////////////////////////////////////////////////////////////
// Strings
@@ -241,3 +242,32 @@ fn malloc(size: int): void* {
}
fn free(ptr: void*) {} // Placeholder
+
+///////////////////////////////////////////////////////////////////////////////
+// External processes
+
+fn WIFEXITED(status: int): int {
+ return (status & 127) == 0;
+}
+
+fn WEXITSTATUS(status: int): int {
+ return (status >> 8) & 127;
+}
+
+fn run_command(args: char**) {
+ let pid = fork();
+ if (pid == 0) {
+ execve(args[0], args, 0);
+ die2(here, ": Error in execve()");
+ }
+ // Parent
+ let status: int;
+ if (wait(&status) < 0)
+ die2(here, ": Error in wait()");
+
+ if (!WIFEXITED(status))
+ die2(here, ": Child did not exit normally");
+
+ if (WEXITSTATUS(status) != 0)
+ die2(here, ": Child exited with non-zero status");
+} \ No newline at end of file