From e8ae19cda97fdff2fcf3acbcbc358bfd847c2b44 Mon Sep 17 00:00:00 2001 From: v420v Date: Sun, 22 Dec 2024 18:39:27 +0900 Subject: [PATCH] feat: switch statement close #8 --- bootstrap/codegen.s | 2684 ++++++++++++++++-------- bootstrap/ibu.s | 62 +- bootstrap/parser.s | 4311 +++++++++++++++++++++----------------- bootstrap/preprocessor.s | 486 ++--- bootstrap/std.s | 994 ++++----- bootstrap/tokenizer.s | 1224 +++++------ src/codegen/codegen.ibu | 60 +- src/parser/header.ibu | 6 + src/parser/parser.ibu | 53 + 9 files changed, 5683 insertions(+), 4197 deletions(-) diff --git a/bootstrap/codegen.s b/bootstrap/codegen.s index b0bc1f6..6f5d35e 100644 --- a/bootstrap/codegen.s +++ b/bootstrap/codegen.s @@ -4,26 +4,26 @@ has_main: push %rbp movq %rsp, %rbp subq $0, %rsp -.L.while.start.0: +.L.while.start.1: movq $0, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.0 + jne .L.while.end.1 .data -.L.str.0: +.L.str.1: .byte 109 .byte 97 .byte 105 .byte 110 .byte 0 .text - leaq .L.str.0(%rip), %rax + leaq .L.str.1(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -35,15 +35,15 @@ has_main: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.1 + jne .L.else.2 movq $1, %rax leave ret - jmp .L.end.1 -.L.else.1: -.L.end.1: + jmp .L.end.2 +.L.else.2: +.L.end.2: leaq 16(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -52,8 +52,8 @@ has_main: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.0 -.L.while.end.0: + jmp .L.while.start.1 +.L.while.end.1: movq $0, %rax leave ret @@ -69,11 +69,11 @@ assign_local_var_offset: leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.2 + jne .L.else.3 movq $16, %rax push %rax leaq 16(%rbp), %rax @@ -88,9 +88,9 @@ assign_local_var_offset: addq $16, %rsp leave ret - jmp .L.end.2 -.L.else.2: -.L.end.2: + jmp .L.end.3 +.L.else.3: +.L.end.3: leaq 24(%rbp), %rax movq (%rax), %rax addq $64, %rax @@ -99,7 +99,7 @@ assign_local_var_offset: sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.3 + jne .L.else.4 leaq 16(%rbp), %rax movq (%rax), %rax addq $20, %rax @@ -116,7 +116,7 @@ assign_local_var_offset: addq $20, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq 24(%rbp), %rax @@ -130,12 +130,12 @@ assign_local_var_offset: push %rax movq $0, %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.3 -.L.else.3: -.L.end.3: + jmp .L.end.4 +.L.else.4: +.L.end.4: movq $0, %rax push %rax leaq 24(%rbp), %rax @@ -143,11 +143,11 @@ assign_local_var_offset: addq $72, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.4 + jne .L.else.5 leaq 24(%rbp), %rax movq (%rax), %rax addq $72, %rax @@ -161,9 +161,9 @@ assign_local_var_offset: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.4 -.L.else.4: -.L.end.4: + jmp .L.end.5 +.L.else.5: +.L.end.5: movq $16, %rax push %rax leaq 16(%rbp), %rax @@ -190,17 +190,17 @@ assign_func_params_offset: leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.5 + jne .L.else.6 movq $0, %rax leave ret - jmp .L.end.5 -.L.else.5: -.L.end.5: + jmp .L.end.6 +.L.else.6: +.L.end.6: movq $0, %rax push %rax leaq 24(%rbp), %rax @@ -208,11 +208,11 @@ assign_func_params_offset: addq $72, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.6 + jne .L.else.7 leaq 24(%rbp), %rax movq (%rax), %rax addq $72, %rax @@ -226,15 +226,15 @@ assign_func_params_offset: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.6 -.L.else.6: -.L.end.6: + jmp .L.end.7 +.L.else.7: +.L.end.7: leaq 24(%rbp), %rax movq (%rax), %rax addq $64, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.7 + jne .L.else.8 leaq 24(%rbp), %rax movq (%rax), %rax addq $24, %rax @@ -256,15 +256,600 @@ assign_func_params_offset: addq $24, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax + pop %rdi + movl %eax, (%rdi) + jmp .L.end.8 +.L.else.8: +.L.end.8: + movq $0, %rax + leave + ret + leave + ret +.global gen_jmp_table +gen_jmp_table: + push %rbp + movq %rsp, %rbp + subq $48, %rsp + leaq -44(%rbp), %rax + push %rax + movq $0, %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + push %rax + leaq vec_get(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + pop %rdi + movq %rax, (%rdi) + leaq -36(%rbp), %rax + push %rax + leaq -44(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + movq (%rax), %rax + addq $88, %rax + movslq (%rax), %rax + pop %rdi + movl %eax, (%rdi) +.data +.L.str.2: + .byte 46 + .byte 100 + .byte 97 + .byte 116 + .byte 97 + .byte 10 + .byte 0 +.text + leaq .L.str.2(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp +.data +.L.str.3: + .byte 106 + .byte 117 + .byte 109 + .byte 112 + .byte 95 + .byte 116 + .byte 97 + .byte 98 + .byte 108 + .byte 101 + .byte 58 + .byte 10 + .byte 0 +.text + leaq .L.str.3(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + leaq -32(%rbp), %rax + push %rax + movq $0, %rax + pop %rdi + movl %eax, (%rdi) +.L.while.start.9: + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + addq $8, %rax + movslq (%rax), %rax + push %rax + leaq -32(%rbp), %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + setl %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.while.end.9 + leaq -28(%rbp), %rax + push %rax + leaq -32(%rbp), %rax + movslq (%rax), %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + push %rax + leaq vec_get(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + pop %rdi + movq %rax, (%rdi) + leaq -20(%rbp), %rax + push %rax + movq $40, %rax + push %rax + leaq alloc(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + pop %rdi + movq %rax, (%rdi) + leaq -28(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + movq (%rax), %rax + addq $88, %rax + movslq (%rax), %rax + push %rax + leaq 32(%rbp), %rax + movslq (%rax), %rax + push %rax + leaq (%rsp), %rax + push %rax + push $2 +.data +.L.str.4: + .byte 46 + .byte 76 + .byte 46 + .byte 99 + .byte 97 + .byte 115 + .byte 101 + .byte 46 + .byte 37 + .byte 100 + .byte 46 + .byte 37 + .byte 100 + .byte 0 +.text + leaq .L.str.4(%rip), %rax + push %rax + leaq -20(%rbp), %rax + movq (%rax), %rax + push %rax + leaq sprintf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $48, %rsp + leaq -28(%rbp), %rax + movq (%rax), %rax + addq $80, %rax + push %rax + leaq -20(%rbp), %rax + movq (%rax), %rax + pop %rdi + movq %rax, (%rdi) + movq $0, %rax + push %rax + leaq -32(%rbp), %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + setne %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.10 + leaq -12(%rbp), %rax + push %rax + movq $1, %rax + push %rax + leaq -32(%rbp), %rax + movslq (%rax), %rax + pop %rdi + subq %rdi, %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + push %rax + leaq vec_get(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + pop %rdi + movq %rax, (%rdi) + leaq -4(%rbp), %rax + push %rax + movq $1, %rax + push %rax + leaq -12(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + movq (%rax), %rax + addq $88, %rax + movslq (%rax), %rax + push %rax + leaq -28(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + movq (%rax), %rax + addq $88, %rax + movslq (%rax), %rax + pop %rdi + subq %rdi, %rax + pop %rdi + subq %rdi, %rax + pop %rdi + movl %eax, (%rdi) + leaq -4(%rbp), %rax + movslq (%rax), %rax + push %rax + leaq (%rsp), %rax + push %rax + push $1 +.data +.L.str.5: + .byte 9 + .byte 46 + .byte 114 + .byte 101 + .byte 112 + .byte 116 + .byte 32 + .byte 37 + .byte 100 + .byte 10 + .byte 0 +.text + leaq .L.str.5(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $32, %rsp +.data +.L.str.6: + .byte 9 + .byte 46 + .byte 113 + .byte 117 + .byte 97 + .byte 100 + .byte 32 + .byte 48 + .byte 10 + .byte 0 +.text + leaq .L.str.6(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp +.data +.L.str.7: + .byte 9 + .byte 46 + .byte 101 + .byte 110 + .byte 100 + .byte 114 + .byte 10 + .byte 0 +.text + leaq .L.str.7(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + leaq -28(%rbp), %rax + movq (%rax), %rax + addq $80, %rax + movq (%rax), %rax + push %rax + leaq (%rsp), %rax + push %rax + push $1 +.data +.L.str.8: + .byte 9 + .byte 46 + .byte 113 + .byte 117 + .byte 97 + .byte 100 + .byte 32 + .byte 37 + .byte 115 + .byte 10 + .byte 0 +.text + leaq .L.str.8(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $32, %rsp + jmp .L.end.10 +.L.else.10: + leaq -28(%rbp), %rax + movq (%rax), %rax + addq $80, %rax + movq (%rax), %rax + push %rax + leaq (%rsp), %rax + push %rax + push $1 +.data +.L.str.9: + .byte 9 + .byte 46 + .byte 113 + .byte 117 + .byte 97 + .byte 100 + .byte 32 + .byte 37 + .byte 115 + .byte 10 + .byte 0 +.text + leaq .L.str.9(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $32, %rsp +.L.end.10: + movq $1, %rax + push %rax + leaq -32(%rbp), %rax + push %rax + movq $1, %rax + push %rax + leaq -32(%rbp), %rax + movslq (%rax), %rax + pop %rdi + addq %rdi, %rax + pop %rdi + movl %eax, (%rdi) + pop %rdi + subq %rdi, %rax + jmp .L.while.start.9 +.L.while.end.9: +.data +.L.str.10: + .byte 46 + .byte 116 + .byte 101 + .byte 120 + .byte 116 + .byte 10 + .byte 0 +.text + leaq .L.str.10(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + leaq -36(%rbp), %rax + movslq (%rax), %rax + leave + ret + leave + ret +.global sort_switch_cases +sort_switch_cases: + push %rbp + movq %rsp, %rbp + subq $32, %rsp + leaq -24(%rbp), %rax + push %rax + movq $0, %rax + pop %rdi + movl %eax, (%rdi) +.L.while.start.11: + movq $1, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + addq $8, %rax + movslq (%rax), %rax + pop %rdi + subq %rdi, %rax + push %rax + leaq -24(%rbp), %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + setl %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.while.end.11 + leaq -20(%rbp), %rax + push %rax + movq $0, %rax + pop %rdi + movl %eax, (%rdi) +.L.while.start.12: + movq $1, %rax + push %rax + leaq -24(%rbp), %rax + movslq (%rax), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + addq $8, %rax + movslq (%rax), %rax + pop %rdi + subq %rdi, %rax + pop %rdi + subq %rdi, %rax + push %rax + leaq -20(%rbp), %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + setl %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.while.end.12 + leaq -16(%rbp), %rax + push %rax + leaq -20(%rbp), %rax + movslq (%rax), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + push %rax + leaq vec_get(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + pop %rdi + movq %rax, (%rdi) + leaq -8(%rbp), %rax + push %rax + movq $1, %rax + push %rax + leaq -20(%rbp), %rax + movslq (%rax), %rax + pop %rdi + addq %rdi, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + push %rax + leaq vec_get(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + pop %rdi + movq %rax, (%rdi) + leaq -8(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + movq (%rax), %rax + addq $88, %rax + movslq (%rax), %rax + push %rax + leaq -16(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + movq (%rax), %rax + addq $88, %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + setg %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.13 + movq $8, %rax + push %rax + leaq -20(%rbp), %rax + movslq (%rax), %rax + pop %rdi + imulq %rdi, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + addq $0, %rax + movq (%rax), %rax + pop %rdi + addq %rdi, %rax + push %rax + leaq -8(%rbp), %rax + movq (%rax), %rax + pop %rdi + movq %rax, (%rdi) + movq $8, %rax + push %rax + movq $1, %rax + push %rax + leaq -20(%rbp), %rax + movslq (%rax), %rax + pop %rdi + addq %rdi, %rax + pop %rdi + imulq %rdi, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + addq $0, %rax + movq (%rax), %rax + pop %rdi + addq %rdi, %rax + push %rax + leaq -16(%rbp), %rax + movq (%rax), %rax + pop %rdi + movq %rax, (%rdi) + jmp .L.end.13 +.L.else.13: +.L.end.13: + movq $1, %rax + push %rax + leaq -20(%rbp), %rax + push %rax + movq $1, %rax + push %rax + leaq -20(%rbp), %rax + movslq (%rax), %rax + pop %rdi + addq %rdi, %rax + pop %rdi + movl %eax, (%rdi) + pop %rdi + subq %rdi, %rax + jmp .L.while.start.12 +.L.while.end.12: + movq $1, %rax + push %rax + leaq -24(%rbp), %rax + push %rax + movq $1, %rax + push %rax + leaq -24(%rbp), %rax + movslq (%rax), %rax + pop %rdi + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.7 -.L.else.7: -.L.end.7: - movq $0, %rax - leave - ret + pop %rdi + subq %rdi, %rax + jmp .L.while.start.11 +.L.while.end.11: leave ret .global gen_node_block @@ -277,7 +862,7 @@ gen_node_block: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.8: +.L.while.start.14: leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -286,11 +871,11 @@ gen_node_block: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.8 + jne .L.while.end.14 leaq -8(%rbp), %rax push %rax leaq -12(%rbp), %rax @@ -326,13 +911,13 @@ gen_node_block: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.8 -.L.while.end.8: + subq %rdi, %rax + jmp .L.while.start.14 +.L.while.end.14: movq $0, %rax leave ret @@ -350,17 +935,17 @@ func_call_args_to_stack: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.9 + jne .L.else.15 movq $0, %rax leave ret - jmp .L.end.9 -.L.else.9: -.L.end.9: + jmp .L.end.15 +.L.else.15: +.L.end.15: leaq -20(%rbp), %rax push %rax movq $0, %rax @@ -375,20 +960,20 @@ func_call_args_to_stack: addq $8, %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.10: +.L.while.start.16: leaq -16(%rbp), %rax movslq (%rax), %rax push %rax movq $0, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.10 + jne .L.while.end.16 leaq -12(%rbp), %rax push %rax leaq -16(%rbp), %rax @@ -416,14 +1001,14 @@ func_call_args_to_stack: callq *%r10 addq $16, %rsp .data -.L.str.1: +.L.str.11: .byte 37 .byte 114 .byte 97 .byte 120 .byte 0 .text - leaq .L.str.1(%rip), %rax + leaq .L.str.11(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -440,7 +1025,7 @@ func_call_args_to_stack: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq 32(%rbp), %rax @@ -448,7 +1033,7 @@ func_call_args_to_stack: addq $40, %rax movslq (%rax), %rax cmpq $0, %rax - je .L.false.12 + je .L.false.18 movq $2, %rax push %rax leaq 32(%rbp), %rax @@ -458,23 +1043,23 @@ func_call_args_to_stack: addq $8, %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax push %rax leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.12 + je .L.false.18 movq $1, %rax - jmp .L.end.12 -.L.false.12: + jmp .L.end.18 +.L.false.18: movq $0, %rax -.L.end.12: +.L.end.18: cmpq $1, %rax - jne .L.else.11 + jne .L.else.17 leaq -4(%rbp), %rax push %rax movq $0, %rax @@ -489,18 +1074,18 @@ func_call_args_to_stack: addq $8, %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setg %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.13 + jne .L.else.19 leaq -4(%rbp), %rax push %rax movq $2, %rax @@ -512,21 +1097,21 @@ func_call_args_to_stack: addq $8, %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.13 -.L.else.13: -.L.end.13: + jmp .L.end.19 +.L.else.19: +.L.end.19: .data -.L.str.2: +.L.str.12: .byte 9 .byte 108 .byte 101 @@ -550,7 +1135,7 @@ func_call_args_to_stack: .byte 10 .byte 0 .text - leaq .L.str.2(%rip), %rax + leaq .L.str.12(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -558,14 +1143,14 @@ func_call_args_to_stack: callq *%r10 addq $8, %rsp .data -.L.str.3: +.L.str.13: .byte 37 .byte 114 .byte 97 .byte 120 .byte 0 .text - leaq .L.str.3(%rip), %rax + leaq .L.str.13(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -593,12 +1178,12 @@ func_call_args_to_stack: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.11 -.L.else.11: -.L.end.11: + jmp .L.end.17 +.L.else.17: +.L.end.17: movq $1, %rax push %rax leaq -16(%rbp), %rax @@ -608,13 +1193,13 @@ func_call_args_to_stack: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - addl %edi, %eax - jmp .L.while.start.10 -.L.while.end.10: + addq %rdi, %rax + jmp .L.while.start.16 +.L.while.end.16: leaq -20(%rbp), %rax movslq (%rax), %rax leave @@ -627,7 +1212,7 @@ gen_condition_store: movq %rsp, %rbp subq $0, %rsp .data -.L.str.4: +.L.str.14: .byte 9 .byte 109 .byte 111 @@ -650,7 +1235,7 @@ gen_condition_store: .byte 10 .byte 0 .text - leaq .L.str.4(%rip), %rax + leaq .L.str.14(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -671,11 +1256,11 @@ gen_load: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.16 + jne .L.true.22 movq $13, %rax push %rax leaq 24(%rbp), %rax @@ -683,18 +1268,18 @@ gen_load: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.16 + jne .L.true.22 mov $0, %rax - jmp .L.end.16 -.L.true.16: + jmp .L.end.22 +.L.true.22: mov $1, %rax -.L.end.16: +.L.end.22: cmpq $0, %rax - jne .L.true.15 + jne .L.true.21 movq $6, %rax push %rax leaq 24(%rbp), %rax @@ -702,24 +1287,24 @@ gen_load: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.15 + jne .L.true.21 mov $0, %rax - jmp .L.end.15 -.L.true.15: + jmp .L.end.21 +.L.true.21: mov $1, %rax -.L.end.15: +.L.end.21: cmpq $1, %rax - jne .L.else.14 + jne .L.else.20 movq $0, %rax leave ret - jmp .L.end.14 -.L.else.14: -.L.end.14: + jmp .L.end.20 +.L.else.20: +.L.end.20: movq $8, %rax push %rax leaq 24(%rbp), %rax @@ -727,13 +1312,13 @@ gen_load: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.17 + jne .L.else.23 .data -.L.str.5: +.L.str.15: .byte 9 .byte 109 .byte 111 @@ -757,15 +1342,15 @@ gen_load: .byte 10 .byte 0 .text - leaq .L.str.5(%rip), %rax + leaq .L.str.15(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.17 -.L.else.17: + jmp .L.end.23 +.L.else.23: movq $4, %rax push %rax leaq 24(%rbp), %rax @@ -773,13 +1358,13 @@ gen_load: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.18 + jne .L.else.24 .data -.L.str.6: +.L.str.16: .byte 9 .byte 109 .byte 111 @@ -805,15 +1390,15 @@ gen_load: .byte 10 .byte 0 .text - leaq .L.str.6(%rip), %rax + leaq .L.str.16(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.18 -.L.else.18: + jmp .L.end.24 +.L.else.24: movq $2, %rax push %rax leaq 24(%rbp), %rax @@ -821,19 +1406,19 @@ gen_load: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.19 + jne .L.else.25 leaq 24(%rbp), %rax movq (%rax), %rax addq $60, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.20 + jne .L.else.26 .data -.L.str.7: +.L.str.17: .byte 9 .byte 109 .byte 111 @@ -859,17 +1444,17 @@ gen_load: .byte 10 .byte 0 .text - leaq .L.str.7(%rip), %rax + leaq .L.str.17(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.20 -.L.else.20: + jmp .L.end.26 +.L.else.26: .data -.L.str.8: +.L.str.18: .byte 9 .byte 109 .byte 111 @@ -895,16 +1480,16 @@ gen_load: .byte 10 .byte 0 .text - leaq .L.str.8(%rip), %rax + leaq .L.str.18(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.20: - jmp .L.end.19 -.L.else.19: +.L.end.26: + jmp .L.end.25 +.L.else.25: movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -912,19 +1497,19 @@ gen_load: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.21 + jne .L.else.27 leaq 24(%rbp), %rax movq (%rax), %rax addq $60, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.22 + jne .L.else.28 .data -.L.str.9: +.L.str.19: .byte 9 .byte 109 .byte 111 @@ -950,17 +1535,17 @@ gen_load: .byte 10 .byte 0 .text - leaq .L.str.9(%rip), %rax + leaq .L.str.19(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.22 -.L.else.22: + jmp .L.end.28 +.L.else.28: .data -.L.str.10: +.L.str.20: .byte 9 .byte 109 .byte 111 @@ -986,18 +1571,18 @@ gen_load: .byte 10 .byte 0 .text - leaq .L.str.10(%rip), %rax + leaq .L.str.20(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.22: - jmp .L.end.21 -.L.else.21: +.L.end.28: + jmp .L.end.27 +.L.else.27: .data -.L.str.11: +.L.str.21: .byte 117 .byte 110 .byte 114 @@ -1012,7 +1597,7 @@ gen_load: .byte 10 .byte 0 .text - leaq .L.str.11(%rip), %rax + leaq .L.str.21(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -1026,10 +1611,10 @@ gen_load: movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.21: -.L.end.19: -.L.end.18: -.L.end.17: +.L.end.27: +.L.end.25: +.L.end.24: +.L.end.23: movq $0, %rax leave ret @@ -1047,17 +1632,17 @@ gen_store: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.23 + jne .L.else.29 leaq -4(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.24: +.L.while.start.30: leaq 16(%rbp), %rax movq (%rax), %rax addq $4, %rax @@ -1066,11 +1651,11 @@ gen_store: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.24 + jne .L.while.end.30 leaq -4(%rbp), %rax movslq (%rax), %rax push %rax @@ -1078,7 +1663,7 @@ gen_store: push %rax push $1 .data -.L.str.12: +.L.str.22: .byte 9 .byte 109 .byte 111 @@ -1104,7 +1689,7 @@ gen_store: .byte 10 .byte 0 .text - leaq .L.str.12(%rip), %rax + leaq .L.str.22(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -1118,7 +1703,7 @@ gen_store: push %rax push $1 .data -.L.str.13: +.L.str.23: .byte 9 .byte 109 .byte 111 @@ -1144,7 +1729,7 @@ gen_store: .byte 10 .byte 0 .text - leaq .L.str.13(%rip), %rax + leaq .L.str.23(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -1160,19 +1745,19 @@ gen_store: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.24 -.L.while.end.24: + subq %rdi, %rax + jmp .L.while.start.30 +.L.while.end.30: movq $0, %rax leave ret - jmp .L.end.23 -.L.else.23: -.L.end.23: + jmp .L.end.29 +.L.else.29: +.L.end.29: movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -1180,13 +1765,13 @@ gen_store: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.25 + jne .L.else.31 .data -.L.str.14: +.L.str.24: .byte 9 .byte 109 .byte 111 @@ -1209,15 +1794,15 @@ gen_store: .byte 10 .byte 0 .text - leaq .L.str.14(%rip), %rax + leaq .L.str.24(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.25 -.L.else.25: + jmp .L.end.31 +.L.else.31: movq $2, %rax push %rax leaq 16(%rbp), %rax @@ -1225,13 +1810,13 @@ gen_store: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.26 + jne .L.else.32 .data -.L.str.15: +.L.str.25: .byte 9 .byte 109 .byte 111 @@ -1254,15 +1839,15 @@ gen_store: .byte 10 .byte 0 .text - leaq .L.str.15(%rip), %rax + leaq .L.str.25(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.26 -.L.else.26: + jmp .L.end.32 +.L.else.32: movq $4, %rax push %rax leaq 16(%rbp), %rax @@ -1270,13 +1855,13 @@ gen_store: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.27 + jne .L.else.33 .data -.L.str.16: +.L.str.26: .byte 9 .byte 109 .byte 111 @@ -1300,17 +1885,17 @@ gen_store: .byte 10 .byte 0 .text - leaq .L.str.16(%rip), %rax + leaq .L.str.26(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.27 -.L.else.27: + jmp .L.end.33 +.L.else.33: .data -.L.str.17: +.L.str.27: .byte 9 .byte 109 .byte 111 @@ -1334,16 +1919,16 @@ gen_store: .byte 10 .byte 0 .text - leaq .L.str.17(%rip), %rax + leaq .L.str.27(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.27: -.L.end.26: -.L.end.25: +.L.end.33: +.L.end.32: +.L.end.31: movq $0, %rax leave ret @@ -1361,11 +1946,11 @@ gen_addr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.28 + jne .L.else.34 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -1381,14 +1966,14 @@ gen_addr: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $120, %rax + addq $128, %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.18: +.L.str.28: .byte 9 .byte 97 .byte 100 @@ -1408,15 +1993,15 @@ gen_addr: .byte 10 .byte 0 .text - leaq .L.str.18(%rip), %rax + leaq .L.str.28(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp - jmp .L.end.28 -.L.else.28: + jmp .L.end.34 +.L.else.34: movq $14, %rax push %rax leaq 24(%rbp), %rax @@ -1424,22 +2009,22 @@ gen_addr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.29 + jne .L.else.35 leaq 24(%rbp), %rax movq (%rax), %rax - addq $96, %rax + addq $104, %rax movq (%rax), %rax addq $68, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.30 + jne .L.else.36 leaq 24(%rbp), %rax movq (%rax), %rax - addq $96, %rax + addq $104, %rax movq (%rax), %rax addq $0, %rax movq (%rax), %rax @@ -1448,7 +2033,7 @@ gen_addr: push %rax push $1 .data -.L.str.19: +.L.str.29: .byte 9 .byte 108 .byte 101 @@ -1474,18 +2059,18 @@ gen_addr: .byte 10 .byte 0 .text - leaq .L.str.19(%rip), %rax + leaq .L.str.29(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp - jmp .L.end.30 -.L.else.30: + jmp .L.end.36 +.L.else.36: leaq 24(%rbp), %rax movq (%rax), %rax - addq $96, %rax + addq $104, %rax movq (%rax), %rax addq $24, %rax movslq (%rax), %rax @@ -1494,7 +2079,7 @@ gen_addr: push %rax push $1 .data -.L.str.20: +.L.str.30: .byte 9 .byte 108 .byte 101 @@ -1520,16 +2105,16 @@ gen_addr: .byte 10 .byte 0 .text - leaq .L.str.20(%rip), %rax + leaq .L.str.30(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp -.L.end.30: - jmp .L.end.29 -.L.else.29: +.L.end.36: + jmp .L.end.35 +.L.else.35: movq $20, %rax push %rax leaq 24(%rbp), %rax @@ -1537,11 +2122,11 @@ gen_addr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.31 + jne .L.else.37 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -1555,11 +2140,11 @@ gen_addr: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.31 -.L.else.31: -.L.end.31: -.L.end.29: -.L.end.28: + jmp .L.end.37 +.L.else.37: +.L.end.37: +.L.end.35: +.L.end.34: movq $0, %rax leave ret @@ -1582,14 +2167,14 @@ gen_lhs_rhs: callq *%r10 addq $16, %rsp .data -.L.str.21: +.L.str.31: .byte 37 .byte 114 .byte 97 .byte 120 .byte 0 .text - leaq .L.str.21(%rip), %rax + leaq .L.str.31(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1611,14 +2196,14 @@ gen_lhs_rhs: callq *%r10 addq $16, %rsp .data -.L.str.22: +.L.str.32: .byte 37 .byte 114 .byte 100 .byte 105 .byte 0 .text - leaq .L.str.22(%rip), %rax + leaq .L.str.32(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1644,15 +2229,15 @@ alloc_stack: leaq 24(%rbp), %rax movslq (%rax), %rax pop %rdi - cltd - idivl %edi + cqto + idivq %rdi push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $16, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq 24(%rbp), %rax @@ -1662,7 +2247,7 @@ alloc_stack: push %rax push $1 .data -.L.str.23: +.L.str.33: .byte 9 .byte 115 .byte 117 @@ -1682,7 +2267,7 @@ alloc_stack: .byte 10 .byte 0 .text - leaq .L.str.23(%rip), %rax + leaq .L.str.33(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -1705,15 +2290,15 @@ gen_pop_size: leaq 24(%rbp), %rax movslq (%rax), %rax pop %rdi - cltd - idivl %edi + cqto + idivq %rdi push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $16, %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq 24(%rbp), %rax @@ -1723,7 +2308,7 @@ gen_pop_size: push %rax push $1 .data -.L.str.24: +.L.str.34: .byte 9 .byte 97 .byte 100 @@ -1743,7 +2328,7 @@ gen_pop_size: .byte 10 .byte 0 .text - leaq .L.str.24(%rip), %rax + leaq .L.str.34(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -1764,7 +2349,7 @@ gen_pop: push %rax push $1 .data -.L.str.25: +.L.str.35: .byte 9 .byte 112 .byte 111 @@ -1775,7 +2360,7 @@ gen_pop: .byte 10 .byte 0 .text - leaq .L.str.25(%rip), %rax + leaq .L.str.35(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -1795,11 +2380,11 @@ gen_pop: addq $16, %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - addl %edi, %eax + addq %rdi, %rax leave ret .global gen_push_num @@ -1814,7 +2399,7 @@ gen_push_num: push %rax push $1 .data -.L.str.26: +.L.str.36: .byte 9 .byte 112 .byte 117 @@ -1827,7 +2412,7 @@ gen_push_num: .byte 10 .byte 0 .text - leaq .L.str.26(%rip), %rax + leaq .L.str.36(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -1847,11 +2432,11 @@ gen_push_num: addq $16, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax leave ret .global gen_push @@ -1866,7 +2451,7 @@ gen_push: push %rax push $1 .data -.L.str.27: +.L.str.37: .byte 9 .byte 112 .byte 117 @@ -1878,7 +2463,7 @@ gen_push: .byte 10 .byte 0 .text - leaq .L.str.27(%rip), %rax + leaq .L.str.37(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -1898,11 +2483,11 @@ gen_push: addq $16, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax leave ret .global gen_stmt @@ -1910,50 +2495,277 @@ gen_stmt: push %rbp movq %rsp, %rbp subq $16, %rsp + leaq -12(%rbp), %rax + push %rax + movq $0, %rax + pop %rdi + movl %eax, (%rdi) + movq $29, %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + sete %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.38 + movq $0, %rax + leave + ret + jmp .L.end.38 +.L.else.38: +.L.end.38: + movq $21, %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + sete %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.39 + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $24, %rax + movq (%rax), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq gen_node_block(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + movq $0, %rax + leave + ret + jmp .L.end.39 +.L.else.39: +.L.end.39: + movq $22, %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + sete %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.40 + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $8, %rax + movq (%rax), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq gen_expr(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + movq $0, %rax + leave + ret + jmp .L.end.40 +.L.else.40: +.L.end.40: + movq $35, %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + sete %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.41 + leaq 24(%rbp), %rax + movq (%rax), %rax + push %rax + leaq sort_switch_cases(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + leaq -8(%rbp), %rax + push %rax + movq $1, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + push %rax + movq $1, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movslq (%rax), %rax + pop %rdi + addq %rdi, %rax + pop %rdi + movl %eax, (%rdi) + pop %rdi + subq %rdi, %rax + pop %rdi + movl %eax, (%rdi) + leaq -4(%rbp), %rax + push %rax + leaq -8(%rbp), %rax + movslq (%rax), %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq gen_jmp_table(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $24, %rsp + pop %rdi + movl %eax, (%rdi) + leaq 24(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + movq (%rax), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq gen_expr(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp leaq -4(%rbp), %rax + movslq (%rax), %rax + push %rax + leaq (%rsp), %rax + push %rax + push $1 +.data +.L.str.38: + .byte 9 + .byte 115 + .byte 117 + .byte 98 + .byte 113 + .byte 32 + .byte 36 + .byte 37 + .byte 100 + .byte 44 + .byte 32 + .byte 37 + .byte 37 + .byte 114 + .byte 97 + .byte 120 + .byte 10 + .byte 0 +.text + leaq .L.str.38(%rip), %rax + push %rax + leaq printf(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $32, %rsp +.data +.L.str.39: + .byte 9 + .byte 109 + .byte 111 + .byte 118 + .byte 113 + .byte 32 + .byte 106 + .byte 117 + .byte 109 + .byte 112 + .byte 95 + .byte 116 + .byte 97 + .byte 98 + .byte 108 + .byte 101 + .byte 40 + .byte 44 + .byte 32 + .byte 37 + .byte 37 + .byte 114 + .byte 97 + .byte 120 + .byte 44 + .byte 32 + .byte 56 + .byte 41 + .byte 44 + .byte 32 + .byte 37 + .byte 37 + .byte 114 + .byte 97 + .byte 120 + .byte 10 + .byte 0 +.text + leaq .L.str.39(%rip), %rax push %rax + leaq printf(%rip), %rax + movq %rax, %r10 movq $0, %rax - pop %rdi - movl %eax, (%rdi) - movq $29, %rax + callq *%r10 + addq $8, %rsp +.data +.L.str.40: + .byte 9 + .byte 106 + .byte 109 + .byte 112 + .byte 32 + .byte 42 + .byte 37 + .byte 37 + .byte 114 + .byte 97 + .byte 120 + .byte 10 + .byte 0 +.text + leaq .L.str.40(%rip), %rax push %rax - leaq 24(%rbp), %rax - movq (%rax), %rax - addq $0, %rax - movslq (%rax), %rax - pop %rdi - cmpl %edi, %eax - sete %al - movzbl %al, %eax - cmpq $1, %rax - jne .L.else.32 + leaq printf(%rip), %rax + movq %rax, %r10 movq $0, %rax - leave - ret - jmp .L.end.32 -.L.else.32: -.L.end.32: - movq $21, %rax - push %rax - leaq 24(%rbp), %rax - movq (%rax), %rax - addq $0, %rax - movslq (%rax), %rax - pop %rdi - cmpl %edi, %eax - sete %al - movzbl %al, %eax - cmpq $1, %rax - jne .L.else.33 + callq *%r10 + addq $8, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $24, %rax + addq $32, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax push %rax - leaq gen_node_block(%rip), %rax + leaq gen_stmt(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 @@ -1961,40 +2773,50 @@ gen_stmt: movq $0, %rax leave ret - jmp .L.end.33 -.L.else.33: -.L.end.33: - movq $22, %rax + jmp .L.end.41 +.L.else.41: +.L.end.41: + movq $36, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.34 + jne .L.else.42 leaq 24(%rbp), %rax movq (%rax), %rax - addq $8, %rax + addq $80, %rax movq (%rax), %rax push %rax - leaq 16(%rbp), %rax - movq (%rax), %rax + leaq (%rsp), %rax push %rax - leaq gen_expr(%rip), %rax + push $1 +.data +.L.str.41: + .byte 37 + .byte 115 + .byte 58 + .byte 10 + .byte 0 +.text + leaq .L.str.41(%rip), %rax + push %rax + leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 - addq $16, %rsp + addq $32, %rsp movq $0, %rax leave ret - jmp .L.end.34 -.L.else.34: -.L.end.34: + jmp .L.end.42 +.L.else.42: +.L.end.42: movq $32, %rax push %rax leaq 24(%rbp), %rax @@ -2002,11 +2824,11 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.35 + jne .L.else.43 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -2021,7 +2843,7 @@ gen_stmt: callq *%r10 addq $16, %rsp .data -.L.str.28: +.L.str.42: .byte 9 .byte 109 .byte 111 @@ -2043,7 +2865,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.28(%rip), %rax + leaq .L.str.42(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2052,7 +2874,7 @@ gen_stmt: addq $8, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $4, %rax movslq (%rax), %rax @@ -2061,7 +2883,7 @@ gen_stmt: push %rax push $1 .data -.L.str.29: +.L.str.43: .byte 9 .byte 109 .byte 111 @@ -2081,7 +2903,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.29(%rip), %rax + leaq .L.str.43(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2089,7 +2911,7 @@ gen_stmt: callq *%r10 addq $32, %rsp .data -.L.str.30: +.L.str.44: .byte 9 .byte 109 .byte 111 @@ -2106,7 +2928,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.30(%rip), %rax + leaq .L.str.44(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2114,7 +2936,7 @@ gen_stmt: callq *%r10 addq $8, %rsp .data -.L.str.31: +.L.str.45: .byte 9 .byte 114 .byte 101 @@ -2128,7 +2950,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.31(%rip), %rax + leaq .L.str.45(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2138,9 +2960,9 @@ gen_stmt: movq $0, %rax leave ret - jmp .L.end.35 -.L.else.35: -.L.end.35: + jmp .L.end.43 +.L.else.43: +.L.end.43: movq $18, %rax push %rax leaq 24(%rbp), %rax @@ -2148,11 +2970,11 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.36 + jne .L.else.44 movq $0, %rax push %rax leaq 24(%rbp), %rax @@ -2160,11 +2982,11 @@ gen_stmt: addq $8, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.37 + jne .L.else.45 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -2178,11 +3000,11 @@ gen_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.37 -.L.else.37: -.L.end.37: + jmp .L.end.45 +.L.else.45: +.L.end.45: .data -.L.str.32: +.L.str.46: .byte 9 .byte 108 .byte 101 @@ -2192,7 +3014,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.32(%rip), %rax + leaq .L.str.46(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2200,7 +3022,7 @@ gen_stmt: callq *%r10 addq $8, %rsp .data -.L.str.33: +.L.str.47: .byte 9 .byte 114 .byte 101 @@ -2208,7 +3030,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.33(%rip), %rax + leaq .L.str.47(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2218,9 +3040,9 @@ gen_stmt: movq $0, %rax leave ret - jmp .L.end.36 -.L.else.36: -.L.end.36: + jmp .L.end.44 +.L.else.44: +.L.end.44: movq $15, %rax push %rax leaq 24(%rbp), %rax @@ -2228,12 +3050,12 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.38 - leaq -4(%rbp), %rax + jne .L.else.46 + leaq -12(%rbp), %rax push %rax movq $1, %rax push %rax @@ -2248,16 +3070,16 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq 24(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -2269,7 +3091,7 @@ gen_stmt: callq *%r10 addq $16, %rsp .data -.L.str.34: +.L.str.48: .byte 9 .byte 99 .byte 109 @@ -2288,21 +3110,21 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.34(%rip), %rax + leaq .L.str.48(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - leaq -4(%rbp), %rax + leaq -12(%rbp), %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.35: +.L.str.49: .byte 9 .byte 106 .byte 110 @@ -2321,7 +3143,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.35(%rip), %rax + leaq .L.str.49(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2341,14 +3163,14 @@ gen_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - leaq -4(%rbp), %rax + leaq -12(%rbp), %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.36: +.L.str.50: .byte 9 .byte 106 .byte 109 @@ -2366,21 +3188,21 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.36(%rip), %rax + leaq .L.str.50(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp - leaq -4(%rbp), %rax + leaq -12(%rbp), %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.37: +.L.str.51: .byte 46 .byte 76 .byte 46 @@ -2395,7 +3217,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.37(%rip), %rax + leaq .L.str.51(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2409,11 +3231,11 @@ gen_stmt: addq $40, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.39 + jne .L.else.47 leaq 24(%rbp), %rax movq (%rax), %rax addq $40, %rax @@ -2427,17 +3249,17 @@ gen_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.39 -.L.else.39: -.L.end.39: - leaq -4(%rbp), %rax + jmp .L.end.47 +.L.else.47: +.L.end.47: + leaq -12(%rbp), %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.38: +.L.str.52: .byte 46 .byte 76 .byte 46 @@ -2451,7 +3273,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.38(%rip), %rax + leaq .L.str.52(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2461,9 +3283,9 @@ gen_stmt: movq $0, %rax leave ret - jmp .L.end.38 -.L.else.38: -.L.end.38: + jmp .L.end.46 +.L.else.46: +.L.end.46: movq $23, %rax push %rax leaq 24(%rbp), %rax @@ -2471,14 +3293,14 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.40 + jne .L.else.48 leaq 24(%rbp), %rax movq (%rax), %rax - addq $72, %rax + addq $80, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -2490,7 +3312,7 @@ gen_stmt: push %rax push $2 .data -.L.str.39: +.L.str.53: .byte 9 .byte 106 .byte 109 @@ -2507,7 +3329,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.39(%rip), %rax + leaq .L.str.53(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2517,9 +3339,9 @@ gen_stmt: movq $0, %rax leave ret - jmp .L.end.40 -.L.else.40: -.L.end.40: + jmp .L.end.48 +.L.else.48: +.L.end.48: movq $24, %rax push %rax leaq 24(%rbp), %rax @@ -2527,14 +3349,14 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.41 + jne .L.else.49 leaq 24(%rbp), %rax movq (%rax), %rax - addq $72, %rax + addq $80, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -2546,7 +3368,7 @@ gen_stmt: push %rax push $2 .data -.L.str.40: +.L.str.54: .byte 46 .byte 76 .byte 46 @@ -2559,7 +3381,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.40(%rip), %rax + leaq .L.str.54(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2569,9 +3391,9 @@ gen_stmt: movq $0, %rax leave ret - jmp .L.end.41 -.L.else.41: -.L.end.41: + jmp .L.end.49 +.L.else.49: +.L.end.49: movq $16, %rax push %rax leaq 24(%rbp), %rax @@ -2579,12 +3401,12 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.42 - leaq -4(%rbp), %rax + jne .L.else.50 + leaq -12(%rbp), %rax push %rax movq $1, %rax push %rax @@ -2599,28 +3421,28 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) movq $0, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $48, %rax + addq $56, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.43 + jne .L.else.51 leaq 24(%rbp), %rax movq (%rax), %rax - addq $48, %rax + addq $56, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -2631,17 +3453,17 @@ gen_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.43 -.L.else.43: -.L.end.43: - leaq -4(%rbp), %rax + jmp .L.end.51 +.L.else.51: +.L.end.51: + leaq -12(%rbp), %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.41: +.L.str.55: .byte 46 .byte 76 .byte 46 @@ -2663,7 +3485,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.41(%rip), %rax + leaq .L.str.55(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2672,7 +3494,7 @@ gen_stmt: addq $32, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -2684,7 +3506,7 @@ gen_stmt: callq *%r10 addq $16, %rsp .data -.L.str.42: +.L.str.56: .byte 9 .byte 99 .byte 109 @@ -2703,21 +3525,21 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.42(%rip), %rax + leaq .L.str.56(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - leaq -4(%rbp), %rax + leaq -12(%rbp), %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.43: +.L.str.57: .byte 9 .byte 106 .byte 110 @@ -2741,7 +3563,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.43(%rip), %rax + leaq .L.str.57(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2765,17 +3587,17 @@ gen_stmt: push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.44 + jne .L.else.52 leaq 24(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -2786,17 +3608,17 @@ gen_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.44 -.L.else.44: -.L.end.44: - leaq -4(%rbp), %rax + jmp .L.end.52 +.L.else.52: +.L.end.52: + leaq -12(%rbp), %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.44: +.L.str.58: .byte 9 .byte 106 .byte 109 @@ -2822,21 +3644,21 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.44(%rip), %rax + leaq .L.str.58(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp - leaq -4(%rbp), %rax + leaq -12(%rbp), %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.45: +.L.str.59: .byte 46 .byte 76 .byte 46 @@ -2856,7 +3678,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.45(%rip), %rax + leaq .L.str.59(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -2866,9 +3688,9 @@ gen_stmt: movq $0, %rax leave ret - jmp .L.end.42 -.L.else.42: -.L.end.42: + jmp .L.end.50 +.L.else.50: +.L.end.50: movq $17, %rax push %rax leaq 24(%rbp), %rax @@ -2876,11 +3698,11 @@ gen_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.45 + jne .L.else.53 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -2895,14 +3717,14 @@ gen_stmt: callq *%r10 addq $16, %rsp .data -.L.str.46: +.L.str.60: .byte 37 .byte 114 .byte 97 .byte 120 .byte 0 .text - leaq .L.str.46(%rip), %rax + leaq .L.str.60(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2926,14 +3748,14 @@ gen_stmt: callq *%r10 addq $16, %rsp .data -.L.str.47: +.L.str.61: .byte 37 .byte 114 .byte 100 .byte 105 .byte 0 .text - leaq .L.str.47(%rip), %rax + leaq .L.str.61(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2945,7 +3767,7 @@ gen_stmt: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq gen_store(%rip), %rax @@ -2956,11 +3778,11 @@ gen_stmt: movq $0, %rax leave ret - jmp .L.end.45 -.L.else.45: -.L.end.45: + jmp .L.end.53 +.L.else.53: +.L.end.53: .data -.L.str.48: +.L.str.62: .byte 103 .byte 101 .byte 110 @@ -2984,7 +3806,7 @@ gen_stmt: .byte 10 .byte 0 .text - leaq .L.str.48(%rip), %rax + leaq .L.str.62(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3017,17 +3839,17 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.46 + jne .L.else.54 movq $0, %rax leave ret - jmp .L.end.46 -.L.else.46: -.L.end.46: + jmp .L.end.54 +.L.else.54: +.L.end.54: movq $28, %rax push %rax leaq 24(%rbp), %rax @@ -3035,11 +3857,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.47 + jne .L.else.55 leaq 24(%rbp), %rax movq (%rax), %rax push %rax @@ -3053,7 +3875,7 @@ gen_expr: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -3067,9 +3889,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.47 -.L.else.47: -.L.end.47: + jmp .L.end.55 +.L.else.55: +.L.end.55: movq $12, %rax push %rax leaq 24(%rbp), %rax @@ -3077,11 +3899,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.48 + jne .L.else.56 leaq -16(%rbp), %rax push %rax movq $1, %rax @@ -3097,15 +3919,15 @@ gen_expr: addq $4, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) .data -.L.str.49: +.L.str.63: .byte 46 .byte 100 .byte 97 @@ -3114,7 +3936,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.49(%rip), %rax + leaq .L.str.63(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3128,7 +3950,7 @@ gen_expr: push %rax push $1 .data -.L.str.50: +.L.str.64: .byte 46 .byte 76 .byte 46 @@ -3142,7 +3964,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.50(%rip), %rax + leaq .L.str.64(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3153,31 +3975,31 @@ gen_expr: push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $88, %rax + addq $96, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.49: +.L.while.start.57: movq $0, %rax push %rax leaq -12(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.49 + jne .L.while.end.57 leaq -12(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.51: +.L.str.65: .byte 9 .byte 46 .byte 98 @@ -3190,7 +4012,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.51(%rip), %rax + leaq .L.str.65(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3211,10 +4033,10 @@ gen_expr: movq %rax, (%rdi) pop %rdi subq %rdi, %rax - jmp .L.while.start.49 -.L.while.end.49: + jmp .L.while.start.57 +.L.while.end.57: .data -.L.str.52: +.L.str.66: .byte 9 .byte 46 .byte 98 @@ -3226,7 +4048,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.52(%rip), %rax + leaq .L.str.66(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3234,7 +4056,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.53: +.L.str.67: .byte 46 .byte 116 .byte 101 @@ -3243,7 +4065,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.53(%rip), %rax + leaq .L.str.67(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3257,7 +4079,7 @@ gen_expr: push %rax push $1 .data -.L.str.54: +.L.str.68: .byte 9 .byte 108 .byte 101 @@ -3290,7 +4112,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.54(%rip), %rax + leaq .L.str.68(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3300,9 +4122,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.48 -.L.else.48: -.L.end.48: + jmp .L.end.56 +.L.else.56: +.L.end.56: movq $13, %rax push %rax leaq 24(%rbp), %rax @@ -3310,21 +4132,21 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.50 + jne .L.else.58 leaq 24(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax movslq (%rax), %rax push %rax leaq (%rsp), %rax push %rax push $1 .data -.L.str.55: +.L.str.69: .byte 9 .byte 109 .byte 111 @@ -3344,7 +4166,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.55(%rip), %rax + leaq .L.str.69(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3354,9 +4176,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.50 -.L.else.50: -.L.end.50: + jmp .L.end.58 +.L.else.58: +.L.end.58: movq $17, %rax push %rax leaq 24(%rbp), %rax @@ -3364,11 +4186,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.51 + jne .L.else.59 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -3383,14 +4205,14 @@ gen_expr: callq *%r10 addq $16, %rsp .data -.L.str.56: +.L.str.70: .byte 37 .byte 114 .byte 97 .byte 120 .byte 0 .text - leaq .L.str.56(%rip), %rax + leaq .L.str.70(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3414,14 +4236,14 @@ gen_expr: callq *%r10 addq $16, %rsp .data -.L.str.57: +.L.str.71: .byte 37 .byte 114 .byte 100 .byte 105 .byte 0 .text - leaq .L.str.57(%rip), %rax + leaq .L.str.71(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3433,7 +4255,7 @@ gen_expr: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq gen_store(%rip), %rax @@ -3444,9 +4266,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.51 -.L.else.51: -.L.end.51: + jmp .L.end.59 +.L.else.59: +.L.end.59: movq $14, %rax push %rax leaq 24(%rbp), %rax @@ -3454,11 +4276,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.52 + jne .L.else.60 leaq 24(%rbp), %rax movq (%rax), %rax push %rax @@ -3472,7 +4294,7 @@ gen_expr: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -3486,9 +4308,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.52 -.L.else.52: -.L.end.52: + jmp .L.end.60 +.L.else.60: +.L.end.60: movq $25, %rax push %rax leaq 24(%rbp), %rax @@ -3496,23 +4318,23 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.53 + jne .L.else.61 leaq -4(%rbp), %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $128, %rax + addq $136, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -3539,7 +4361,7 @@ gen_expr: callq *%r10 addq $16, %rsp .data -.L.str.58: +.L.str.72: .byte 9 .byte 109 .byte 111 @@ -3561,7 +4383,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.58(%rip), %rax + leaq .L.str.72(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3569,7 +4391,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.59: +.L.str.73: .byte 9 .byte 109 .byte 111 @@ -3588,7 +4410,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.59(%rip), %rax + leaq .L.str.73(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3596,7 +4418,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.60: +.L.str.74: .byte 9 .byte 99 .byte 97 @@ -3613,7 +4435,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.60(%rip), %rax + leaq .L.str.74(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -3635,18 +4457,18 @@ gen_expr: push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.54 + jne .L.else.62 .data -.L.str.61: +.L.str.75: .byte 9 .byte 109 .byte 111 @@ -3668,31 +4490,31 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.61(%rip), %rax + leaq .L.str.75(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.54 -.L.else.54: + jmp .L.end.62 +.L.else.62: movq $3, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.55 + jne .L.else.63 .data -.L.str.62: +.L.str.76: .byte 9 .byte 109 .byte 111 @@ -3715,31 +4537,31 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.62(%rip), %rax + leaq .L.str.76(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.55 -.L.else.55: + jmp .L.end.63 +.L.else.63: movq $11, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.56 + jne .L.else.64 .data -.L.str.63: +.L.str.77: .byte 9 .byte 109 .byte 111 @@ -3762,31 +4584,31 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.63(%rip), %rax + leaq .L.str.77(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.56 -.L.else.56: + jmp .L.end.64 +.L.else.64: movq $2, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.57 + jne .L.else.65 .data -.L.str.64: +.L.str.78: .byte 9 .byte 109 .byte 111 @@ -3809,31 +4631,31 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.64(%rip), %rax + leaq .L.str.78(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.57 -.L.else.57: + jmp .L.end.65 +.L.else.65: movq $10, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.58 + jne .L.else.66 .data -.L.str.65: +.L.str.79: .byte 9 .byte 109 .byte 111 @@ -3856,26 +4678,26 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.65(%rip), %rax + leaq .L.str.79(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.58 -.L.else.58: -.L.end.58: -.L.end.57: -.L.end.56: -.L.end.55: -.L.end.54: + jmp .L.end.66 +.L.else.66: +.L.end.66: +.L.end.65: +.L.end.64: +.L.end.63: +.L.end.62: movq $0, %rax leave ret - jmp .L.end.53 -.L.else.53: -.L.end.53: + jmp .L.end.61 +.L.else.61: +.L.end.61: movq $22, %rax push %rax leaq 24(%rbp), %rax @@ -3883,11 +4705,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.59 + jne .L.else.67 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -3904,9 +4726,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.59 -.L.else.59: -.L.end.59: + jmp .L.end.67 +.L.else.67: +.L.end.67: movq $19, %rax push %rax leaq 24(%rbp), %rax @@ -3914,11 +4736,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.60 + jne .L.else.68 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -3935,9 +4757,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.60 -.L.else.60: -.L.end.60: + jmp .L.end.68 +.L.else.68: +.L.end.68: movq $20, %rax push %rax leaq 24(%rbp), %rax @@ -3945,11 +4767,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.61 + jne .L.else.69 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -3965,7 +4787,7 @@ gen_expr: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -3979,9 +4801,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.61 -.L.else.61: -.L.end.61: + jmp .L.end.69 +.L.else.69: +.L.end.69: movq $5, %rax push %rax leaq 24(%rbp), %rax @@ -3989,11 +4811,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.62 + jne .L.else.70 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -4008,7 +4830,7 @@ gen_expr: callq *%r10 addq $16, %rsp .data -.L.str.66: +.L.str.80: .byte 9 .byte 99 .byte 109 @@ -4027,7 +4849,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.66(%rip), %rax + leaq .L.str.80(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4035,7 +4857,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.67: +.L.str.81: .byte 9 .byte 115 .byte 101 @@ -4049,7 +4871,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.67(%rip), %rax + leaq .L.str.81(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4057,7 +4879,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.68: +.L.str.82: .byte 9 .byte 109 .byte 111 @@ -4080,7 +4902,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.68(%rip), %rax + leaq .L.str.82(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4090,9 +4912,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.62 -.L.else.62: -.L.end.62: + jmp .L.end.70 +.L.else.70: +.L.end.70: movq $0, %rax push %rax leaq 24(%rbp), %rax @@ -4100,11 +4922,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.63 + jne .L.else.71 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4124,7 +4946,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.69: +.L.str.83: .byte 9 .byte 97 .byte 100 @@ -4146,7 +4968,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.69(%rip), %rax + leaq .L.str.83(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4156,9 +4978,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.63 -.L.else.63: -.L.end.63: + jmp .L.end.71 +.L.else.71: +.L.end.71: movq $30, %rax push %rax leaq 24(%rbp), %rax @@ -4166,11 +4988,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.64 + jne .L.else.72 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4190,7 +5012,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.70: +.L.str.84: .byte 9 .byte 109 .byte 111 @@ -4212,7 +5034,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.70(%rip), %rax + leaq .L.str.84(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4220,7 +5042,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.71: +.L.str.85: .byte 9 .byte 115 .byte 104 @@ -4240,7 +5062,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.71(%rip), %rax + leaq .L.str.85(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4250,9 +5072,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.64 -.L.else.64: -.L.end.64: + jmp .L.end.72 +.L.else.72: +.L.end.72: movq $31, %rax push %rax leaq 24(%rbp), %rax @@ -4260,11 +5082,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.65 + jne .L.else.73 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4284,7 +5106,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.72: +.L.str.86: .byte 9 .byte 109 .byte 111 @@ -4306,7 +5128,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.72(%rip), %rax + leaq .L.str.86(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4314,7 +5136,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.73: +.L.str.87: .byte 9 .byte 115 .byte 104 @@ -4334,7 +5156,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.73(%rip), %rax + leaq .L.str.87(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4344,9 +5166,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.65 -.L.else.65: -.L.end.65: + jmp .L.end.73 +.L.else.73: +.L.end.73: movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -4354,11 +5176,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.66 + jne .L.else.74 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4378,7 +5200,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.74: +.L.str.88: .byte 9 .byte 115 .byte 117 @@ -4400,7 +5222,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.74(%rip), %rax + leaq .L.str.88(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4410,9 +5232,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.66 -.L.else.66: -.L.end.66: + jmp .L.end.74 +.L.else.74: +.L.end.74: movq $33, %rax push %rax leaq 24(%rbp), %rax @@ -4420,11 +5242,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.67 + jne .L.else.75 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4444,7 +5266,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.75: +.L.str.89: .byte 9 .byte 97 .byte 110 @@ -4466,7 +5288,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.75(%rip), %rax + leaq .L.str.89(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4476,9 +5298,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.67 -.L.else.67: -.L.end.67: + jmp .L.end.75 +.L.else.75: +.L.end.75: movq $34, %rax push %rax leaq 24(%rbp), %rax @@ -4486,11 +5308,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.68 + jne .L.else.76 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4510,7 +5332,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.76: +.L.str.90: .byte 9 .byte 111 .byte 114 @@ -4531,7 +5353,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.76(%rip), %rax + leaq .L.str.90(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4541,9 +5363,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.68 -.L.else.68: -.L.end.68: + jmp .L.end.76 +.L.else.76: +.L.end.76: movq $2, %rax push %rax leaq 24(%rbp), %rax @@ -4551,11 +5373,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.69 + jne .L.else.77 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4575,7 +5397,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.77: +.L.str.91: .byte 9 .byte 105 .byte 109 @@ -4598,7 +5420,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.77(%rip), %rax + leaq .L.str.91(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4608,9 +5430,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.69 -.L.else.69: -.L.end.69: + jmp .L.end.77 +.L.else.77: +.L.end.77: movq $3, %rax push %rax leaq 24(%rbp), %rax @@ -4618,11 +5440,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.71 + jne .L.true.79 movq $4, %rax push %rax leaq 24(%rbp), %rax @@ -4630,18 +5452,18 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.71 + jne .L.true.79 mov $0, %rax - jmp .L.end.71 -.L.true.71: + jmp .L.end.79 +.L.true.79: mov $1, %rax -.L.end.71: +.L.end.79: cmpq $1, %rax - jne .L.else.70 + jne .L.else.78 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4662,14 +5484,14 @@ gen_expr: addq $24, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $60, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.72 + jne .L.else.80 .data -.L.str.78: +.L.str.92: .byte 9 .byte 109 .byte 111 @@ -4687,7 +5509,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.78(%rip), %rax + leaq .L.str.92(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4695,7 +5517,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.79: +.L.str.93: .byte 9 .byte 100 .byte 105 @@ -4710,17 +5532,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.79(%rip), %rax + leaq .L.str.93(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.72 -.L.else.72: + jmp .L.end.80 +.L.else.80: .data -.L.str.80: +.L.str.94: .byte 9 .byte 99 .byte 113 @@ -4729,7 +5551,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.80(%rip), %rax + leaq .L.str.94(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4737,7 +5559,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.81: +.L.str.95: .byte 9 .byte 105 .byte 100 @@ -4753,14 +5575,14 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.81(%rip), %rax + leaq .L.str.95(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.72: +.L.end.80: movq $4, %rax push %rax leaq 24(%rbp), %rax @@ -4768,13 +5590,13 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.73 + jne .L.else.81 .data -.L.str.82: +.L.str.96: .byte 9 .byte 109 .byte 111 @@ -4796,22 +5618,22 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.82(%rip), %rax + leaq .L.str.96(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.73 -.L.else.73: -.L.end.73: + jmp .L.end.81 +.L.else.81: +.L.end.81: movq $0, %rax leave ret - jmp .L.end.70 -.L.else.70: -.L.end.70: + jmp .L.end.78 +.L.else.78: +.L.end.78: movq $7, %rax push %rax leaq 24(%rbp), %rax @@ -4819,11 +5641,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.74 + jne .L.else.82 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4843,7 +5665,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.83: +.L.str.97: .byte 9 .byte 99 .byte 109 @@ -4865,7 +5687,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.83(%rip), %rax + leaq .L.str.97(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4873,7 +5695,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.84: +.L.str.98: .byte 9 .byte 115 .byte 101 @@ -4887,7 +5709,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.84(%rip), %rax + leaq .L.str.98(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4896,7 +5718,7 @@ gen_expr: addq $8, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq gen_condition_store(%rip), %rax @@ -4907,9 +5729,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.74 -.L.else.74: -.L.end.74: + jmp .L.end.82 +.L.else.82: +.L.end.82: movq $6, %rax push %rax leaq 24(%rbp), %rax @@ -4917,11 +5739,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.75 + jne .L.else.83 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -4941,7 +5763,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.85: +.L.str.99: .byte 9 .byte 99 .byte 109 @@ -4963,7 +5785,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.85(%rip), %rax + leaq .L.str.99(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4971,7 +5793,7 @@ gen_expr: callq *%r10 addq $8, %rsp .data -.L.str.86: +.L.str.100: .byte 9 .byte 115 .byte 101 @@ -4986,7 +5808,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.86(%rip), %rax + leaq .L.str.100(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -4995,7 +5817,7 @@ gen_expr: addq $8, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq gen_condition_store(%rip), %rax @@ -5006,9 +5828,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.75 -.L.else.75: -.L.end.75: + jmp .L.end.83 +.L.else.83: +.L.end.83: movq $26, %rax push %rax leaq 24(%rbp), %rax @@ -5016,11 +5838,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.76 + jne .L.else.84 leaq -16(%rbp), %rax push %rax movq $1, %rax @@ -5036,11 +5858,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq 24(%rbp), %rax @@ -5057,7 +5879,7 @@ gen_expr: callq *%r10 addq $16, %rsp .data -.L.str.87: +.L.str.101: .byte 9 .byte 99 .byte 109 @@ -5076,7 +5898,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.87(%rip), %rax + leaq .L.str.101(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5090,7 +5912,7 @@ gen_expr: push %rax push $1 .data -.L.str.88: +.L.str.102: .byte 9 .byte 106 .byte 101 @@ -5109,7 +5931,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.88(%rip), %rax + leaq .L.str.102(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5130,7 +5952,7 @@ gen_expr: callq *%r10 addq $16, %rsp .data -.L.str.89: +.L.str.103: .byte 9 .byte 99 .byte 109 @@ -5149,7 +5971,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.89(%rip), %rax + leaq .L.str.103(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5163,7 +5985,7 @@ gen_expr: push %rax push $1 .data -.L.str.90: +.L.str.104: .byte 9 .byte 106 .byte 101 @@ -5182,7 +6004,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.90(%rip), %rax + leaq .L.str.104(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5190,7 +6012,7 @@ gen_expr: callq *%r10 addq $32, %rsp .data -.L.str.91: +.L.str.105: .byte 9 .byte 109 .byte 111 @@ -5209,7 +6031,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.91(%rip), %rax + leaq .L.str.105(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5223,7 +6045,7 @@ gen_expr: push %rax push $1 .data -.L.str.92: +.L.str.106: .byte 9 .byte 106 .byte 109 @@ -5241,7 +6063,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.92(%rip), %rax + leaq .L.str.106(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5255,7 +6077,7 @@ gen_expr: push %rax push $1 .data -.L.str.93: +.L.str.107: .byte 46 .byte 76 .byte 46 @@ -5271,7 +6093,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.93(%rip), %rax + leaq .L.str.107(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5279,7 +6101,7 @@ gen_expr: callq *%r10 addq $32, %rsp .data -.L.str.94: +.L.str.108: .byte 9 .byte 109 .byte 111 @@ -5298,7 +6120,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.94(%rip), %rax + leaq .L.str.108(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5312,7 +6134,7 @@ gen_expr: push %rax push $1 .data -.L.str.95: +.L.str.109: .byte 46 .byte 76 .byte 46 @@ -5326,7 +6148,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.95(%rip), %rax + leaq .L.str.109(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5336,9 +6158,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.76 -.L.else.76: -.L.end.76: + jmp .L.end.84 +.L.else.84: +.L.end.84: movq $27, %rax push %rax leaq 24(%rbp), %rax @@ -5346,11 +6168,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.77 + jne .L.else.85 leaq -16(%rbp), %rax push %rax movq $1, %rax @@ -5366,11 +6188,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq 24(%rbp), %rax @@ -5387,7 +6209,7 @@ gen_expr: callq *%r10 addq $16, %rsp .data -.L.str.96: +.L.str.110: .byte 9 .byte 99 .byte 109 @@ -5406,7 +6228,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.96(%rip), %rax + leaq .L.str.110(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5420,7 +6242,7 @@ gen_expr: push %rax push $1 .data -.L.str.97: +.L.str.111: .byte 9 .byte 106 .byte 110 @@ -5439,7 +6261,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.97(%rip), %rax + leaq .L.str.111(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5460,7 +6282,7 @@ gen_expr: callq *%r10 addq $16, %rsp .data -.L.str.98: +.L.str.112: .byte 9 .byte 99 .byte 109 @@ -5478,7 +6300,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.98(%rip), %rax + leaq .L.str.112(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5492,7 +6314,7 @@ gen_expr: push %rax push $1 .data -.L.str.99: +.L.str.113: .byte 9 .byte 106 .byte 110 @@ -5511,7 +6333,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.99(%rip), %rax + leaq .L.str.113(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5519,7 +6341,7 @@ gen_expr: callq *%r10 addq $32, %rsp .data -.L.str.100: +.L.str.114: .byte 9 .byte 109 .byte 111 @@ -5537,7 +6359,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.100(%rip), %rax + leaq .L.str.114(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5551,7 +6373,7 @@ gen_expr: push %rax push $1 .data -.L.str.101: +.L.str.115: .byte 9 .byte 106 .byte 109 @@ -5569,7 +6391,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.101(%rip), %rax + leaq .L.str.115(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5583,7 +6405,7 @@ gen_expr: push %rax push $1 .data -.L.str.102: +.L.str.116: .byte 46 .byte 76 .byte 46 @@ -5598,7 +6420,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.102(%rip), %rax + leaq .L.str.116(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5606,7 +6428,7 @@ gen_expr: callq *%r10 addq $32, %rsp .data -.L.str.103: +.L.str.117: .byte 9 .byte 109 .byte 111 @@ -5624,7 +6446,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.103(%rip), %rax + leaq .L.str.117(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5638,7 +6460,7 @@ gen_expr: push %rax push $1 .data -.L.str.104: +.L.str.118: .byte 46 .byte 76 .byte 46 @@ -5652,7 +6474,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.104(%rip), %rax + leaq .L.str.118(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5662,9 +6484,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.77 -.L.else.77: -.L.end.77: + jmp .L.end.85 +.L.else.85: +.L.end.85: movq $10, %rax push %rax leaq 24(%rbp), %rax @@ -5672,11 +6494,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.78 + jne .L.else.86 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -5696,7 +6518,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.105: +.L.str.119: .byte 9 .byte 99 .byte 109 @@ -5718,7 +6540,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.105(%rip), %rax + leaq .L.str.119(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5729,14 +6551,14 @@ gen_expr: movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $60, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.79 + jne .L.else.87 .data -.L.str.106: +.L.str.120: .byte 9 .byte 115 .byte 101 @@ -5751,17 +6573,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.106(%rip), %rax + leaq .L.str.120(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.79 -.L.else.79: + jmp .L.end.87 +.L.else.87: .data -.L.str.107: +.L.str.121: .byte 9 .byte 115 .byte 101 @@ -5776,17 +6598,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.107(%rip), %rax + leaq .L.str.121(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.79: +.L.end.87: leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq gen_condition_store(%rip), %rax @@ -5797,9 +6619,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.78 -.L.else.78: -.L.end.78: + jmp .L.end.86 +.L.else.86: +.L.end.86: movq $11, %rax push %rax leaq 24(%rbp), %rax @@ -5807,11 +6629,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.80 + jne .L.else.88 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -5831,7 +6653,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.108: +.L.str.122: .byte 9 .byte 99 .byte 109 @@ -5853,7 +6675,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.108(%rip), %rax + leaq .L.str.122(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5864,14 +6686,14 @@ gen_expr: movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $60, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.81 + jne .L.else.89 .data -.L.str.109: +.L.str.123: .byte 9 .byte 115 .byte 101 @@ -5885,17 +6707,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.109(%rip), %rax + leaq .L.str.123(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.81 -.L.else.81: + jmp .L.end.89 +.L.else.89: .data -.L.str.110: +.L.str.124: .byte 9 .byte 115 .byte 101 @@ -5909,17 +6731,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.110(%rip), %rax + leaq .L.str.124(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.81: +.L.end.89: leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq gen_condition_store(%rip), %rax @@ -5930,9 +6752,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.80 -.L.else.80: -.L.end.80: + jmp .L.end.88 +.L.else.88: +.L.end.88: movq $8, %rax push %rax leaq 24(%rbp), %rax @@ -5940,11 +6762,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.82 + jne .L.else.90 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -5964,7 +6786,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.111: +.L.str.125: .byte 9 .byte 99 .byte 109 @@ -5986,7 +6808,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.111(%rip), %rax + leaq .L.str.125(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -5997,14 +6819,14 @@ gen_expr: movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $60, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.83 + jne .L.else.91 .data -.L.str.112: +.L.str.126: .byte 9 .byte 115 .byte 101 @@ -6019,17 +6841,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.112(%rip), %rax + leaq .L.str.126(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.83 -.L.else.83: + jmp .L.end.91 +.L.else.91: .data -.L.str.113: +.L.str.127: .byte 9 .byte 115 .byte 101 @@ -6044,17 +6866,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.113(%rip), %rax + leaq .L.str.127(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.83: +.L.end.91: leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq gen_condition_store(%rip), %rax @@ -6065,9 +6887,9 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.82 -.L.else.82: -.L.end.82: + jmp .L.end.90 +.L.else.90: +.L.end.90: movq $9, %rax push %rax leaq 24(%rbp), %rax @@ -6075,11 +6897,11 @@ gen_expr: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.84 + jne .L.else.92 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -6099,7 +6921,7 @@ gen_expr: callq *%r10 addq $24, %rsp .data -.L.str.114: +.L.str.128: .byte 9 .byte 99 .byte 109 @@ -6121,7 +6943,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.114(%rip), %rax + leaq .L.str.128(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6132,14 +6954,14 @@ gen_expr: movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $60, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.85 + jne .L.else.93 .data -.L.str.115: +.L.str.129: .byte 9 .byte 115 .byte 101 @@ -6153,17 +6975,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.115(%rip), %rax + leaq .L.str.129(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.85 -.L.else.85: + jmp .L.end.93 +.L.else.93: .data -.L.str.116: +.L.str.130: .byte 9 .byte 115 .byte 101 @@ -6177,17 +6999,17 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.116(%rip), %rax + leaq .L.str.130(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.end.85: +.L.end.93: leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq gen_condition_store(%rip), %rax @@ -6198,11 +7020,11 @@ gen_expr: movq $0, %rax leave ret - jmp .L.end.84 -.L.else.84: -.L.end.84: + jmp .L.end.92 +.L.else.92: +.L.end.92: .data -.L.str.117: +.L.str.131: .byte 103 .byte 101 .byte 110 @@ -6226,7 +7048,7 @@ gen_expr: .byte 10 .byte 0 .text - leaq .L.str.117(%rip), %rax + leaq .L.str.131(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6248,7 +7070,7 @@ gen: movq %rsp, %rbp subq $0, %rsp .data -.L.str.118: +.L.str.132: .byte 46 .byte 116 .byte 101 @@ -6257,7 +7079,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.118(%rip), %rax + leaq .L.str.132(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6272,11 +7094,11 @@ gen: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.86 + jne .L.else.94 .data -.L.str.119: +.L.str.133: .byte 46 .byte 103 .byte 108 @@ -6294,7 +7116,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.119(%rip), %rax + leaq .L.str.133(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6302,7 +7124,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.120: +.L.str.134: .byte 95 .byte 115 .byte 116 @@ -6313,7 +7135,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.120(%rip), %rax + leaq .L.str.134(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6321,7 +7143,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.121: +.L.str.135: .byte 9 .byte 112 .byte 117 @@ -6336,7 +7158,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.121(%rip), %rax + leaq .L.str.135(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6344,7 +7166,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.122: +.L.str.136: .byte 9 .byte 109 .byte 111 @@ -6366,7 +7188,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.122(%rip), %rax + leaq .L.str.136(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6374,7 +7196,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.123: +.L.str.137: .byte 9 .byte 108 .byte 101 @@ -6400,7 +7222,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.123(%rip), %rax + leaq .L.str.137(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6408,7 +7230,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.124: +.L.str.138: .byte 9 .byte 112 .byte 117 @@ -6423,7 +7245,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.124(%rip), %rax + leaq .L.str.138(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6431,7 +7253,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.125: +.L.str.139: .byte 9 .byte 112 .byte 117 @@ -6450,7 +7272,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.125(%rip), %rax + leaq .L.str.139(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6458,7 +7280,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.126: +.L.str.140: .byte 9 .byte 99 .byte 97 @@ -6473,7 +7295,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.126(%rip), %rax + leaq .L.str.140(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6481,7 +7303,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.127: +.L.str.141: .byte 9 .byte 109 .byte 111 @@ -6503,7 +7325,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.127(%rip), %rax + leaq .L.str.141(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6511,7 +7333,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.128: +.L.str.142: .byte 9 .byte 109 .byte 111 @@ -6531,7 +7353,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.128(%rip), %rax + leaq .L.str.142(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6539,7 +7361,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.129: +.L.str.143: .byte 9 .byte 115 .byte 121 @@ -6551,27 +7373,27 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.129(%rip), %rax + leaq .L.str.143(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.86 -.L.else.86: -.L.end.86: -.L.while.start.87: + jmp .L.end.94 +.L.else.94: +.L.end.94: +.L.while.start.95: movq $0, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.87 + jne .L.while.end.95 movq $0, %rax push %rax leaq 24(%rbp), %rax @@ -6579,11 +7401,11 @@ gen: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.89 + je .L.false.97 leaq 24(%rbp), %rax movq (%rax), %rax addq $60, %rax @@ -6592,14 +7414,14 @@ gen: sete %al movzbq %al, %rax cmpq $0, %rax - je .L.false.89 + je .L.false.97 movq $1, %rax - jmp .L.end.89 -.L.false.89: + jmp .L.end.97 +.L.false.97: movq $0, %rax -.L.end.89: +.L.end.97: cmpq $1, %rax - jne .L.else.88 + jne .L.else.96 leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -6665,7 +7487,7 @@ gen: push %rax push $1 .data -.L.str.130: +.L.str.144: .byte 46 .byte 103 .byte 108 @@ -6679,7 +7501,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.130(%rip), %rax + leaq .L.str.144(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6695,14 +7517,14 @@ gen: push %rax push $1 .data -.L.str.131: +.L.str.145: .byte 37 .byte 115 .byte 58 .byte 10 .byte 0 .text - leaq .L.str.131(%rip), %rax + leaq .L.str.145(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6710,7 +7532,7 @@ gen: callq *%r10 addq $32, %rsp .data -.L.str.132: +.L.str.146: .byte 9 .byte 112 .byte 117 @@ -6725,7 +7547,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.132(%rip), %rax + leaq .L.str.146(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6733,7 +7555,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.133: +.L.str.147: .byte 9 .byte 109 .byte 111 @@ -6755,7 +7577,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.133(%rip), %rax + leaq .L.str.147(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6771,7 +7593,7 @@ gen: push %rax push $1 .data -.L.str.134: +.L.str.148: .byte 9 .byte 115 .byte 117 @@ -6791,7 +7613,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.134(%rip), %rax + leaq .L.str.148(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6818,13 +7640,13 @@ gen: addq $16, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.90 + jne .L.else.98 .data -.L.str.135: +.L.str.149: .byte 105 .byte 110 .byte 116 @@ -6882,7 +7704,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.135(%rip), %rax + leaq .L.str.149(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -6896,11 +7718,11 @@ gen: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.90 -.L.else.90: -.L.end.90: + jmp .L.end.98 +.L.else.98: +.L.end.98: .data -.L.str.136: +.L.str.150: .byte 9 .byte 108 .byte 101 @@ -6910,7 +7732,7 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.136(%rip), %rax + leaq .L.str.150(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -6918,7 +7740,7 @@ gen: callq *%r10 addq $8, %rsp .data -.L.str.137: +.L.str.151: .byte 9 .byte 114 .byte 101 @@ -6926,16 +7748,16 @@ gen: .byte 10 .byte 0 .text - leaq .L.str.137(%rip), %rax + leaq .L.str.151(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.88 -.L.else.88: -.L.end.88: + jmp .L.end.96 +.L.else.96: +.L.end.96: leaq 24(%rbp), %rax push %rax leaq 24(%rbp), %rax @@ -6944,8 +7766,8 @@ gen: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.87 -.L.while.end.87: + jmp .L.while.start.95 +.L.while.end.95: leave ret .global new_gen @@ -6969,13 +7791,13 @@ new_gen: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.91 + jne .L.else.99 .data -.L.str.138: +.L.str.152: .byte 109 .byte 101 .byte 109 @@ -7003,7 +7825,7 @@ new_gen: .byte 10 .byte 0 .text - leaq .L.str.138(%rip), %rax + leaq .L.str.152(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -7017,21 +7839,21 @@ new_gen: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.91 -.L.else.91: -.L.end.91: + jmp .L.end.99 +.L.else.99: +.L.end.99: leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax push %rax - movq $0, %rax + movq $1, %rax pop %rdi movl %eax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax addq $4, %rax push %rax - movq $0, %rax + movq $1, %rax pop %rdi movl %eax, (%rdi) leaq -8(%rbp), %rax diff --git a/bootstrap/ibu.s b/bootstrap/ibu.s index ba88396..07d2b5f 100644 --- a/bootstrap/ibu.s +++ b/bootstrap/ibu.s @@ -20,13 +20,13 @@ main: leaq 16(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.0 + jne .L.else.1 .data -.L.str.0: +.L.str.1: .byte 117 .byte 115 .byte 97 @@ -56,7 +56,7 @@ main: .byte 10 .byte 0 .text - leaq .L.str.0(%rip), %rax + leaq .L.str.1(%rip), %rax push %rax leaq printf(%rip), %rax movq %rax, %r10 @@ -70,16 +70,16 @@ main: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.0 -.L.else.0: -.L.end.0: + jmp .L.end.1 +.L.else.1: +.L.end.1: leaq -60(%rbp), %rax push %rax movq $8, %rax push %rax movq $1, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax @@ -94,11 +94,11 @@ main: pop %rdi movl %eax, (%rdi) .data -.L.str.1: +.L.str.2: .byte 45 .byte 0 .text - leaq .L.str.1(%rip), %rax + leaq .L.str.2(%rip), %rax push %rax leaq -60(%rbp), %rax movq (%rax), %rax @@ -108,16 +108,16 @@ main: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.1 + jne .L.else.2 leaq -52(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.1 -.L.else.1: + jmp .L.end.2 +.L.else.2: leaq -52(%rbp), %rax push %rax movq $420, %rax @@ -139,11 +139,11 @@ main: leaq -52(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.2 + jne .L.else.3 leaq -60(%rbp), %rax movq (%rax), %rax push %rax @@ -151,7 +151,7 @@ main: push %rax push $1 .data -.L.str.2: +.L.str.3: .byte 27 .byte 91 .byte 49 @@ -190,7 +190,7 @@ main: .byte 10 .byte 0 .text - leaq .L.str.2(%rip), %rax + leaq .L.str.3(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -204,10 +204,10 @@ main: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.2 -.L.else.2: + jmp .L.end.3 +.L.else.3: +.L.end.3: .L.end.2: -.L.end.1: leaq -48(%rbp), %rax push %rax movq $150000, %rax @@ -224,13 +224,13 @@ main: leaq -48(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.3 + jne .L.else.4 .data -.L.str.3: +.L.str.4: .byte 109 .byte 101 .byte 109 @@ -258,7 +258,7 @@ main: .byte 10 .byte 0 .text - leaq .L.str.3(%rip), %rax + leaq .L.str.4(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -272,9 +272,9 @@ main: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.3 -.L.else.3: -.L.end.3: + jmp .L.end.4 +.L.else.4: +.L.end.4: movq $150000, %rax push %rax leaq -48(%rbp), %rax diff --git a/bootstrap/parser.s b/bootstrap/parser.s index 47ad7ba..30f676b 100644 --- a/bootstrap/parser.s +++ b/bootstrap/parser.s @@ -5,14 +5,14 @@ parse_func: movq %rsp, %rbp subq $64, %rsp .data -.L.str.0: +.L.str.1: .byte 102 .byte 117 .byte 110 .byte 99 .byte 0 .text - leaq .L.str.0(%rip), %rax + leaq .L.str.1(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -91,7 +91,7 @@ parse_func: movq $0, %rax callq *%r10 addq $24, %rsp - movzx %al, %eax + movzx %al, %rax pop %rdi movl %eax, (%rdi) leaq -28(%rbp), %rax @@ -136,11 +136,11 @@ parse_func: leaq -12(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.0 + jne .L.else.1 leaq -40(%rbp), %rax movq (%rax), %rax push %rax @@ -154,14 +154,14 @@ parse_func: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.1 + jne .L.else.2 .data -.L.str.1: +.L.str.2: .byte 97 .byte 114 .byte 103 @@ -200,7 +200,7 @@ parse_func: .byte 101 .byte 0 .text - leaq .L.str.1(%rip), %rax + leaq .L.str.2(%rip), %rax push %rax leaq -56(%rbp), %rax movq (%rax), %rax @@ -210,9 +210,9 @@ parse_func: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.1 -.L.else.1: -.L.end.1: + jmp .L.end.2 +.L.else.2: +.L.end.2: leaq -12(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -228,14 +228,14 @@ parse_func: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.2 + jne .L.else.3 .data -.L.str.2: +.L.str.3: .byte 114 .byte 101 .byte 116 @@ -276,7 +276,7 @@ parse_func: .byte 101 .byte 0 .text - leaq .L.str.2(%rip), %rax + leaq .L.str.3(%rip), %rax push %rax leaq -56(%rbp), %rax movq (%rax), %rax @@ -286,12 +286,12 @@ parse_func: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.2 -.L.else.2: -.L.end.2: - jmp .L.end.0 -.L.else.0: -.L.end.0: + jmp .L.end.3 +.L.else.3: +.L.end.3: + jmp .L.end.1 +.L.else.1: +.L.end.1: movq $5, %rax push %rax leaq -20(%rbp), %rax @@ -299,13 +299,13 @@ parse_func: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.3 + jne .L.else.4 .data -.L.str.3: +.L.str.4: .byte 117 .byte 110 .byte 115 @@ -354,7 +354,7 @@ parse_func: .byte 116 .byte 0 .text - leaq .L.str.3(%rip), %rax + leaq .L.str.4(%rip), %rax push %rax leaq -28(%rbp), %rax movq (%rax), %rax @@ -364,20 +364,20 @@ parse_func: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.3 -.L.else.3: -.L.end.3: + jmp .L.end.4 +.L.else.4: +.L.end.4: leaq -4(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) .data -.L.str.4: +.L.str.5: .byte 59 .byte 0 .text - leaq .L.str.4(%rip), %rax + leaq .L.str.5(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -391,15 +391,15 @@ parse_func: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.4 + jne .L.else.5 .data -.L.str.5: +.L.str.6: .byte 59 .byte 0 .text - leaq .L.str.5(%rip), %rax + leaq .L.str.6(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -414,19 +414,19 @@ parse_func: movq $1, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.4 -.L.else.4: -.L.end.4: + jmp .L.end.5 +.L.else.5: +.L.end.5: movq $0, %rax push %rax leaq -12(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.5 + jne .L.else.6 leaq -12(%rbp), %rax push %rax movq $80, %rax @@ -443,13 +443,13 @@ parse_func: leaq -12(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.6 + jne .L.else.7 .data -.L.str.6: +.L.str.7: .byte 109 .byte 101 .byte 109 @@ -477,16 +477,16 @@ parse_func: .byte 10 .byte 0 .text - leaq .L.str.6(%rip), %rax + leaq .L.str.7(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.6 -.L.else.6: -.L.end.6: + jmp .L.end.7 +.L.else.7: +.L.end.7: leaq -12(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -553,7 +553,7 @@ parse_func: leaq -4(%rbp), %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.7 + jne .L.else.8 leaq -12(%rbp), %rax movq (%rax), %rax addq $60, %rax @@ -571,8 +571,8 @@ parse_func: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.7 -.L.else.7: + jmp .L.end.8 +.L.else.8: leaq -12(%rbp), %rax movq (%rax), %rax addq $32, %rax @@ -597,29 +597,29 @@ parse_func: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.end.7: - jmp .L.end.5 -.L.else.5: +.L.end.8: + jmp .L.end.6 +.L.else.6: leaq -12(%rbp), %rax movq (%rax), %rax addq $60, %rax movslq (%rax), %rax cmpq $0, %rax - je .L.false.9 + je .L.false.10 leaq -4(%rbp), %rax movslq (%rax), %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $0, %rax - je .L.false.9 + je .L.false.10 movq $1, %rax - jmp .L.end.9 -.L.false.9: + jmp .L.end.10 +.L.false.10: movq $0, %rax -.L.end.9: +.L.end.10: cmpq $1, %rax - jne .L.else.8 + jne .L.else.9 leaq -12(%rbp), %rax movq (%rax), %rax addq $60, %rax @@ -651,17 +651,17 @@ parse_func: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.8 -.L.else.8: + jmp .L.end.9 +.L.else.9: leaq -4(%rbp), %rax movslq (%rax), %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.10 + jne .L.else.11 .data -.L.str.7: +.L.str.8: .byte 102 .byte 117 .byte 110 @@ -701,7 +701,7 @@ parse_func: .byte 101 .byte 0 .text - leaq .L.str.7(%rip), %rax + leaq .L.str.8(%rip), %rax push %rax leaq -56(%rbp), %rax movq (%rax), %rax @@ -711,11 +711,11 @@ parse_func: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.10 -.L.else.10: -.L.end.10: -.L.end.8: -.L.end.5: + jmp .L.end.11 +.L.else.11: +.L.end.11: +.L.end.9: +.L.end.6: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -762,11 +762,11 @@ parse_function_params: pop %rdi movl %eax, (%rdi) .data -.L.str.8: +.L.str.9: .byte 40 .byte 0 .text - leaq .L.str.8(%rip), %rax + leaq .L.str.9(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -776,13 +776,13 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp -.L.while.start.11: +.L.while.start.12: .data -.L.str.9: +.L.str.10: .byte 41 .byte 0 .text - leaq .L.str.9(%rip), %rax + leaq .L.str.10(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -796,12 +796,12 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.11 + jne .L.while.end.12 leaq -32(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -837,13 +837,13 @@ parse_function_params: pop %rdi movq %rax, (%rdi) .data -.L.str.10: +.L.str.11: .byte 46 .byte 46 .byte 46 .byte 0 .text - leaq .L.str.10(%rip), %rax + leaq .L.str.11(%rip), %rax push %rax leaq -32(%rbp), %rax movq (%rax), %rax @@ -853,15 +853,15 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.12 + jne .L.else.13 .data -.L.str.11: +.L.str.12: .byte 41 .byte 0 .text - leaq .L.str.11(%rip), %rax + leaq .L.str.12(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -875,14 +875,14 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.13 + jne .L.else.14 .data -.L.str.12: +.L.str.13: .byte 109 .byte 117 .byte 115 @@ -921,7 +921,7 @@ parse_function_params: .byte 115 .byte 0 .text - leaq .L.str.12(%rip), %rax + leaq .L.str.13(%rip), %rax push %rax leaq -24(%rbp), %rax movq (%rax), %rax @@ -931,9 +931,9 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.13 -.L.else.13: -.L.end.13: + jmp .L.end.14 +.L.else.14: +.L.end.14: leaq -36(%rbp), %rax push %rax movq $1, %rax @@ -941,7 +941,7 @@ parse_function_params: movl %eax, (%rdi) leaq 16(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax movq (%rax), %rax push %rax leaq 24(%rbp), %rax @@ -959,18 +959,18 @@ parse_function_params: push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax push %rax .data -.L.str.13: +.L.str.14: .byte 97 .byte 114 .byte 103 .byte 99 .byte 0 .text - leaq .L.str.13(%rip), %rax + leaq .L.str.14(%rip), %rax push %rax movq $1, %rax push %rax @@ -995,7 +995,7 @@ parse_function_params: push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax movq (%rax), %rax push %rax leaq new_pointer_type(%rip), %rax @@ -1025,14 +1025,14 @@ parse_function_params: movq (%rax), %rax push %rax .data -.L.str.14: +.L.str.15: .byte 97 .byte 114 .byte 103 .byte 118 .byte 0 .text - leaq .L.str.14(%rip), %rax + leaq .L.str.15(%rip), %rax push %rax movq $1, %rax push %rax @@ -1053,8 +1053,8 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.12 -.L.else.12: + jmp .L.end.13 +.L.else.13: leaq -16(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -1074,13 +1074,13 @@ parse_function_params: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.14 + jne .L.else.15 .data -.L.str.15: +.L.str.16: .byte 117 .byte 110 .byte 115 @@ -1132,7 +1132,7 @@ parse_function_params: .byte 116 .byte 0 .text - leaq .L.str.15(%rip), %rax + leaq .L.str.16(%rip), %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax @@ -1142,9 +1142,9 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.14 -.L.else.14: -.L.end.14: + jmp .L.end.15 +.L.else.15: +.L.end.15: movq $13, %rax push %rax leaq -16(%rbp), %rax @@ -1152,11 +1152,11 @@ parse_function_params: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.15 + jne .L.else.16 leaq -16(%rbp), %rax push %rax leaq -16(%rbp), %rax @@ -1171,9 +1171,9 @@ parse_function_params: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.15 -.L.else.15: -.L.end.15: + jmp .L.end.16 +.L.else.16: +.L.end.16: leaq -16(%rbp), %rax movq (%rax), %rax push %rax @@ -1216,11 +1216,11 @@ parse_function_params: callq *%r10 addq $16, %rsp .data -.L.str.16: +.L.str.17: .byte 41 .byte 0 .text - leaq .L.str.16(%rip), %rax + leaq .L.str.17(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1234,18 +1234,18 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $0, %rax - je .L.false.17 + je .L.false.18 .data -.L.str.17: +.L.str.18: .byte 44 .byte 0 .text - leaq .L.str.17(%rip), %rax + leaq .L.str.18(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1259,28 +1259,28 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $0, %rax - je .L.false.17 + je .L.false.18 movq $1, %rax - jmp .L.end.17 -.L.false.17: + jmp .L.end.18 +.L.false.18: movq $0, %rax -.L.end.17: +.L.end.18: cmpq $1, %rax - jne .L.else.16 + jne .L.else.17 jmp .L.parse_function_params.break - jmp .L.end.16 -.L.else.16: + jmp .L.end.17 +.L.else.17: .data -.L.str.18: +.L.str.19: .byte 41 .byte 0 .text - leaq .L.str.18(%rip), %rax + leaq .L.str.19(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1294,18 +1294,18 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.18 + jne .L.else.19 .data -.L.str.19: +.L.str.20: .byte 44 .byte 0 .text - leaq .L.str.19(%rip), %rax + leaq .L.str.20(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1315,20 +1315,20 @@ parse_function_params: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.18 -.L.else.18: -.L.end.18: -.L.end.16: -.L.end.12: - jmp .L.while.start.11 -.L.while.end.11: + jmp .L.end.19 +.L.else.19: +.L.end.19: +.L.end.17: +.L.end.13: + jmp .L.while.start.12 +.L.while.end.12: .L.parse_function_params.break: .data -.L.str.20: +.L.str.21: .byte 41 .byte 0 .text - leaq .L.str.20(%rip), %rax + leaq .L.str.21(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1350,7 +1350,7 @@ parse_struct: movq %rsp, %rbp subq $48, %rsp .data -.L.str.21: +.L.str.22: .byte 115 .byte 116 .byte 114 @@ -1359,7 +1359,7 @@ parse_struct: .byte 116 .byte 0 .text - leaq .L.str.21(%rip), %rax + leaq .L.str.22(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1461,17 +1461,17 @@ parse_struct: leaq -20(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.19 + jne .L.else.20 leaq -28(%rbp), %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $32, %rax + addq $40, %rax movq (%rax), %rax push %rax leaq vec_append(%rip), %rax @@ -1479,15 +1479,15 @@ parse_struct: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.19 -.L.else.19: -.L.end.19: + jmp .L.end.20 +.L.else.20: +.L.end.20: .data -.L.str.22: +.L.str.23: .byte 59 .byte 0 .text - leaq .L.str.22(%rip), %rax + leaq .L.str.23(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1501,19 +1501,19 @@ parse_struct: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.20 + jne .L.else.21 movq $0, %rax push %rax leaq -20(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.21 + jne .L.else.22 leaq -28(%rbp), %rax movq (%rax), %rax addq $64, %rax @@ -1521,15 +1521,15 @@ parse_struct: movq $1, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.21 -.L.else.21: -.L.end.21: + jmp .L.end.22 +.L.else.22: +.L.end.22: .data -.L.str.23: +.L.str.24: .byte 59 .byte 0 .text - leaq .L.str.23(%rip), %rax + leaq .L.str.24(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1539,14 +1539,14 @@ parse_struct: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.20 -.L.else.20: + jmp .L.end.21 +.L.else.21: .data -.L.str.24: +.L.str.25: .byte 123 .byte 0 .text - leaq .L.str.24(%rip), %rax + leaq .L.str.25(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1556,13 +1556,13 @@ parse_struct: movq $0, %rax callq *%r10 addq $16, %rsp -.L.while.start.22: +.L.while.start.23: .data -.L.str.25: +.L.str.26: .byte 125 .byte 0 .text - leaq .L.str.25(%rip), %rax + leaq .L.str.26(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1576,12 +1576,12 @@ parse_struct: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.22 + jne .L.while.end.23 leaq -12(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -1627,11 +1627,11 @@ parse_struct: callq *%r10 addq $16, %rsp .data -.L.str.26: +.L.str.27: .byte 44 .byte 0 .text - leaq .L.str.26(%rip), %rax + leaq .L.str.27(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1641,14 +1641,14 @@ parse_struct: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.while.start.22 -.L.while.end.22: + jmp .L.while.start.23 +.L.while.end.23: .data -.L.str.27: +.L.str.28: .byte 125 .byte 0 .text - leaq .L.str.27(%rip), %rax + leaq .L.str.28(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1675,11 +1675,11 @@ parse_struct: leaq -20(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.23 + jne .L.else.24 leaq -28(%rbp), %rax movq (%rax), %rax addq $4, %rax @@ -1696,8 +1696,8 @@ parse_struct: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.23 -.L.else.23: + jmp .L.end.24 +.L.else.24: leaq -20(%rbp), %rax movq (%rax), %rax addq $64, %rax @@ -1706,9 +1706,9 @@ parse_struct: sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.24 + jne .L.else.25 .data -.L.str.28: +.L.str.29: .byte 115 .byte 116 .byte 114 @@ -1736,7 +1736,7 @@ parse_struct: .byte 100 .byte 0 .text - leaq .L.str.28(%rip), %rax + leaq .L.str.29(%rip), %rax push %rax leaq -44(%rbp), %rax movq (%rax), %rax @@ -1746,8 +1746,8 @@ parse_struct: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.24 -.L.else.24: + jmp .L.end.25 +.L.else.25: leaq -20(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -1771,9 +1771,9 @@ parse_struct: movq $0, %rax pop %rdi movl %eax, (%rdi) +.L.end.25: .L.end.24: -.L.end.23: -.L.end.20: +.L.end.21: leave ret .global calc_sizof_struct_members @@ -1791,7 +1791,7 @@ calc_sizof_struct_members: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.25: +.L.while.start.26: leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -1800,11 +1800,11 @@ calc_sizof_struct_members: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.25 + jne .L.while.end.26 leaq -8(%rbp), %rax push %rax leaq -12(%rbp), %rax @@ -1829,11 +1829,11 @@ calc_sizof_struct_members: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.27 + je .L.false.28 movq $8, %rax push %rax leaq -8(%rbp), %rax @@ -1846,7 +1846,7 @@ calc_sizof_struct_members: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax push %rax leaq align_to(%rip), %rax movq %rax, %r10 @@ -1865,18 +1865,18 @@ calc_sizof_struct_members: callq *%r10 addq $16, %rsp pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.27 + je .L.false.28 movq $1, %rax - jmp .L.end.27 -.L.false.27: + jmp .L.end.28 +.L.false.28: movq $0, %rax -.L.end.27: +.L.end.28: cmpq $1, %rax - jne .L.else.26 + jne .L.else.27 leaq -16(%rbp), %rax push %rax movq $8, %rax @@ -1891,9 +1891,9 @@ calc_sizof_struct_members: addq $16, %rsp pop %rdi movl %eax, (%rdi) - jmp .L.end.26 -.L.else.26: -.L.end.26: + jmp .L.end.27 +.L.else.27: +.L.end.27: leaq -8(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -1914,7 +1914,7 @@ calc_sizof_struct_members: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) movq $1, %rax @@ -1926,37 +1926,428 @@ calc_sizof_struct_members: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax + pop %rdi + movl %eax, (%rdi) + pop %rdi + subq %rdi, %rax + jmp .L.while.start.26 +.L.while.end.26: + movq $8, %rax + push %rax + leaq -16(%rbp), %rax + movslq (%rax), %rax + push %rax + leaq align_to(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + leave + ret + leave + ret +.global new_member +new_member: + push %rbp + movq %rsp, %rbp + subq $16, %rsp + leaq -8(%rbp), %rax + push %rax + movq $24, %rax + push %rax + leaq alloc(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + pop %rdi + movq %rax, (%rdi) + leaq -8(%rbp), %rax + movq (%rax), %rax + addq $8, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + pop %rdi + movq %rax, (%rdi) + leaq -8(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + push %rax + leaq 24(%rbp), %rax + movq (%rax), %rax + pop %rdi + movq %rax, (%rdi) + leaq -8(%rbp), %rax + movq (%rax), %rax + leave + ret + leave + ret +.global parse_case +parse_case: + push %rbp + movq %rsp, %rbp + subq $16, %rsp + movq $0, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $32, %rax + movq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + sete %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.29 +.data +.L.str.30: + .byte 99 + .byte 97 + .byte 115 + .byte 101 + .byte 32 + .byte 111 + .byte 117 + .byte 116 + .byte 115 + .byte 105 + .byte 100 + .byte 101 + .byte 32 + .byte 111 + .byte 102 + .byte 32 + .byte 115 + .byte 119 + .byte 105 + .byte 116 + .byte 99 + .byte 104 + .byte 0 +.text + leaq .L.str.30(%rip), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movq (%rax), %rax + push %rax + leaq print_error(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + jmp .L.end.29 +.L.else.29: +.L.end.29: +.data +.L.str.31: + .byte 99 + .byte 97 + .byte 115 + .byte 101 + .byte 0 +.text + leaq .L.str.31(%rip), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq parser_skip(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + leaq -16(%rbp), %rax + push %rax + movq $36, %rax + push %rax + leaq new_node(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + pop %rdi + movq %rax, (%rdi) + leaq -8(%rbp), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movq (%rax), %rax + pop %rdi + movq %rax, (%rdi) + leaq -16(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq parse_expr(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + pop %rdi + movq %rax, (%rdi) + movq $13, %rax + push %rax + leaq -16(%rbp), %rax + movq (%rax), %rax + addq $64, %rax + movq (%rax), %rax + addq $0, %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + setne %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.30 +.data +.L.str.32: + .byte 99 + .byte 97 + .byte 115 + .byte 101 + .byte 32 + .byte 118 + .byte 97 + .byte 108 + .byte 117 + .byte 101 + .byte 32 + .byte 109 + .byte 117 + .byte 115 + .byte 116 + .byte 32 + .byte 98 + .byte 101 + .byte 32 + .byte 97 + .byte 32 + .byte 105 + .byte 110 + .byte 116 + .byte 101 + .byte 103 + .byte 101 + .byte 114 + .byte 32 + .byte 99 + .byte 111 + .byte 110 + .byte 115 + .byte 116 + .byte 97 + .byte 110 + .byte 116 + .byte 0 +.text + leaq .L.str.32(%rip), %rax + push %rax + leaq -8(%rbp), %rax + movq (%rax), %rax + push %rax + leaq print_error(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + jmp .L.end.30 +.L.else.30: +.L.end.30: +.data +.L.str.33: + .byte 58 + .byte 0 +.text + leaq .L.str.33(%rip), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq parser_skip(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + leaq -16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $32, %rax + movq (%rax), %rax + addq $48, %rax + movq (%rax), %rax + push %rax + leaq vec_append(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + leaq -16(%rbp), %rax + movq (%rax), %rax + leave + ret + leave + ret +.global parse_switch +parse_switch: + push %rbp + movq %rsp, %rbp + subq $16, %rsp + movq $0, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $32, %rax + movq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + setne %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.31 +.data +.L.str.34: + .byte 110 + .byte 101 + .byte 115 + .byte 116 + .byte 101 + .byte 100 + .byte 32 + .byte 115 + .byte 119 + .byte 105 + .byte 116 + .byte 99 + .byte 104 + .byte 32 + .byte 115 + .byte 116 + .byte 97 + .byte 116 + .byte 101 + .byte 109 + .byte 101 + .byte 110 + .byte 116 + .byte 115 + .byte 32 + .byte 97 + .byte 114 + .byte 101 + .byte 32 + .byte 110 + .byte 111 + .byte 116 + .byte 32 + .byte 115 + .byte 117 + .byte 112 + .byte 112 + .byte 111 + .byte 114 + .byte 116 + .byte 101 + .byte 100 + .byte 32 + .byte 121 + .byte 101 + .byte 116 + .byte 0 +.text + leaq .L.str.34(%rip), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movq (%rax), %rax + push %rax + leaq print_error(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + jmp .L.end.31 +.L.else.31: +.L.end.31: + leaq -16(%rbp), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movq (%rax), %rax + pop %rdi + movq %rax, (%rdi) +.data +.L.str.35: + .byte 115 + .byte 119 + .byte 105 + .byte 116 + .byte 99 + .byte 104 + .byte 0 +.text + leaq .L.str.35(%rip), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq parser_skip(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + leaq -8(%rbp), %rax + push %rax + movq $35, %rax + push %rax + leaq new_node(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp pop %rdi - movl %eax, (%rdi) + movq %rax, (%rdi) + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $32, %rax + push %rax + leaq -8(%rbp), %rax + movq (%rax), %rax pop %rdi - subl %edi, %eax - jmp .L.while.start.25 -.L.while.end.25: - movq $8, %rax + movq %rax, (%rdi) + leaq -8(%rbp), %rax + movq (%rax), %rax + addq $64, %rax push %rax - leaq -16(%rbp), %rax - movslq (%rax), %rax + leaq 16(%rbp), %rax + movq (%rax), %rax push %rax - leaq align_to(%rip), %rax + leaq parse_expr(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 - addq $16, %rsp - leave - ret - leave - ret -.global new_member -new_member: - push %rbp - movq %rsp, %rbp - subq $16, %rsp + addq $8, %rsp + pop %rdi + movq %rax, (%rdi) leaq -8(%rbp), %rax + movq (%rax), %rax + addq $48, %rax push %rax - movq $24, %rax + movq $4, %rax push %rax - leaq alloc(%rip), %rax + leaq new_vec(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 @@ -1965,18 +2356,98 @@ new_member: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $8, %rax + addq $32, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax + push %rax + leaq parse_block(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp pop %rdi movq %rax, (%rdi) + movq $0, %rax + push %rax leaq -8(%rbp), %rax movq (%rax), %rax - addq $0, %rax + addq $48, %rax + movq (%rax), %rax + addq $8, %rax + movslq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + sete %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.32 +.data +.L.str.36: + .byte 115 + .byte 119 + .byte 105 + .byte 116 + .byte 99 + .byte 104 + .byte 32 + .byte 115 + .byte 116 + .byte 97 + .byte 116 + .byte 101 + .byte 109 + .byte 101 + .byte 110 + .byte 116 + .byte 32 + .byte 109 + .byte 117 + .byte 115 + .byte 116 + .byte 32 + .byte 104 + .byte 97 + .byte 118 + .byte 101 + .byte 32 + .byte 97 + .byte 116 + .byte 32 + .byte 108 + .byte 101 + .byte 97 + .byte 115 + .byte 116 + .byte 32 + .byte 111 + .byte 110 + .byte 101 + .byte 32 + .byte 99 + .byte 97 + .byte 115 + .byte 101 + .byte 0 +.text + leaq .L.str.36(%rip), %rax push %rax - leaq 24(%rbp), %rax + leaq -16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq print_error(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + jmp .L.end.32 +.L.else.32: +.L.end.32: + leaq 16(%rbp), %rax movq (%rax), %rax + addq $32, %rax + push %rax + movq $0, %rax pop %rdi movq %rax, (%rdi) leaq -8(%rbp), %rax @@ -2003,7 +2474,7 @@ parse_label: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $72, %rax + addq $80, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2022,11 +2493,11 @@ parse_label: callq *%r10 addq $8, %rsp .data -.L.str.29: +.L.str.37: .byte 58 .byte 0 .text - leaq .L.str.29(%rip), %rax + leaq .L.str.37(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2048,7 +2519,7 @@ parse_while: movq %rsp, %rbp subq $16, %rsp .data -.L.str.30: +.L.str.38: .byte 119 .byte 104 .byte 105 @@ -2056,7 +2527,7 @@ parse_while: .byte 101 .byte 0 .text - leaq .L.str.30(%rip), %rax + leaq .L.str.38(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2078,11 +2549,11 @@ parse_while: pop %rdi movq %rax, (%rdi) .data -.L.str.31: +.L.str.39: .byte 123 .byte 0 .text - leaq .L.str.31(%rip), %rax + leaq .L.str.39(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2096,15 +2567,15 @@ parse_while: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.28 + jne .L.else.33 leaq -8(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2116,11 +2587,11 @@ parse_while: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.28 -.L.else.28: + jmp .L.end.33 +.L.else.33: leaq -8(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax push %rax leaq node_true(%rip), %rax movq %rax, %r10 @@ -2129,7 +2600,7 @@ parse_while: addq $0, %rsp pop %rdi movq %rax, (%rdi) -.L.end.28: +.L.end.33: leaq -8(%rbp), %rax movq (%rax), %rax addq $32, %rax @@ -2156,13 +2627,13 @@ parse_for: movq %rsp, %rbp subq $16, %rsp .data -.L.str.32: +.L.str.40: .byte 102 .byte 111 .byte 114 .byte 0 .text - leaq .L.str.32(%rip), %rax + leaq .L.str.40(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2184,11 +2655,11 @@ parse_for: pop %rdi movq %rax, (%rdi) .data -.L.str.33: +.L.str.41: .byte 123 .byte 0 .text - leaq .L.str.33(%rip), %rax + leaq .L.str.41(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2202,12 +2673,12 @@ parse_for: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.29 + jne .L.else.34 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2217,11 +2688,11 @@ parse_for: callq *%r10 addq $8, %rsp .data -.L.str.34: +.L.str.42: .byte 59 .byte 0 .text - leaq .L.str.34(%rip), %rax + leaq .L.str.42(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2235,22 +2706,22 @@ parse_for: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.30 + jne .L.else.35 leaq -8(%rbp), %rax movq (%rax), %rax - addq $48, %rax + addq $56, %rax push %rax movq $0, %rax pop %rdi movq %rax, (%rdi) .data -.L.str.35: +.L.str.43: .byte 59 .byte 0 .text - leaq .L.str.35(%rip), %rax + leaq .L.str.43(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2260,16 +2731,16 @@ parse_for: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.30 -.L.else.30: + jmp .L.end.35 +.L.else.35: .data -.L.str.36: +.L.str.44: .byte 108 .byte 101 .byte 116 .byte 0 .text - leaq .L.str.36(%rip), %rax + leaq .L.str.44(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2283,12 +2754,12 @@ parse_for: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.31 + jne .L.else.36 leaq -8(%rbp), %rax movq (%rax), %rax - addq $48, %rax + addq $56, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2300,11 +2771,11 @@ parse_for: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.31 -.L.else.31: + jmp .L.end.36 +.L.else.36: leaq -8(%rbp), %rax movq (%rax), %rax - addq $48, %rax + addq $56, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2316,14 +2787,14 @@ parse_for: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.end.31: -.L.end.30: +.L.end.36: +.L.end.35: .data -.L.str.37: +.L.str.45: .byte 59 .byte 0 .text - leaq .L.str.37(%rip), %rax + leaq .L.str.45(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2337,21 +2808,21 @@ parse_for: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.32 + jne .L.else.37 leaq -8(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax push %rax movq $0, %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.32 -.L.else.32: + jmp .L.end.37 +.L.else.37: leaq -8(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2363,13 +2834,13 @@ parse_for: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.end.32: +.L.end.37: .data -.L.str.38: +.L.str.46: .byte 59 .byte 0 .text - leaq .L.str.38(%rip), %rax + leaq .L.str.46(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2380,11 +2851,11 @@ parse_for: callq *%r10 addq $16, %rsp .data -.L.str.39: +.L.str.47: .byte 123 .byte 0 .text - leaq .L.str.39(%rip), %rax + leaq .L.str.47(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2398,21 +2869,21 @@ parse_for: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.33 + jne .L.else.38 leaq -8(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax push %rax movq $0, %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.33 -.L.else.33: + jmp .L.end.38 +.L.else.38: leaq -8(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2424,12 +2895,12 @@ parse_for: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.end.33: - jmp .L.end.29 -.L.else.29: +.L.end.38: + jmp .L.end.34 +.L.else.34: leaq -8(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax push %rax leaq node_true(%rip), %rax movq %rax, %r10 @@ -2438,7 +2909,7 @@ parse_for: addq $0, %rsp pop %rdi movq %rax, (%rdi) -.L.end.29: +.L.end.34: leaq -8(%rbp), %rax movq (%rax), %rax addq $32, %rax @@ -2473,7 +2944,7 @@ parse_return: movq %rsp, %rbp subq $16, %rsp .data -.L.str.40: +.L.str.48: .byte 114 .byte 101 .byte 116 @@ -2482,7 +2953,7 @@ parse_return: .byte 110 .byte 0 .text - leaq .L.str.40(%rip), %rax + leaq .L.str.48(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2493,11 +2964,11 @@ parse_return: callq *%r10 addq $16, %rsp .data -.L.str.41: +.L.str.49: .byte 59 .byte 0 .text - leaq .L.str.41(%rip), %rax + leaq .L.str.49(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2511,15 +2982,15 @@ parse_return: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.34 + jne .L.else.39 .data -.L.str.42: +.L.str.50: .byte 59 .byte 0 .text - leaq .L.str.42(%rip), %rax + leaq .L.str.50(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2537,10 +3008,10 @@ parse_return: callq *%r10 addq $8, %rsp leave - ret - jmp .L.end.34 -.L.else.34: -.L.end.34: + ret + jmp .L.end.39 +.L.else.39: +.L.end.39: leaq -8(%rbp), %rax push %rax movq $18, %rax @@ -2578,12 +3049,12 @@ parse_if: movq %rsp, %rbp subq $16, %rsp .data -.L.str.43: +.L.str.51: .byte 105 .byte 102 .byte 0 .text - leaq .L.str.43(%rip), %rax + leaq .L.str.51(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2606,7 +3077,7 @@ parse_if: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2633,14 +3104,14 @@ parse_if: pop %rdi movq %rax, (%rdi) .data -.L.str.44: +.L.str.52: .byte 101 .byte 108 .byte 115 .byte 101 .byte 0 .text - leaq .L.str.44(%rip), %rax + leaq .L.str.52(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2654,9 +3125,9 @@ parse_if: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.35 + jne .L.else.40 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2679,8 +3150,8 @@ parse_if: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.35 -.L.else.35: + jmp .L.end.40 +.L.else.40: leaq -8(%rbp), %rax movq (%rax), %rax addq $40, %rax @@ -2694,7 +3165,7 @@ parse_if: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.end.35: +.L.end.40: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -2707,14 +3178,14 @@ parse_goto: movq %rsp, %rbp subq $16, %rsp .data -.L.str.45: +.L.str.53: .byte 103 .byte 111 .byte 116 .byte 111 .byte 0 .text - leaq .L.str.45(%rip), %rax + leaq .L.str.53(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2743,11 +3214,11 @@ parse_goto: callq *%r10 addq $8, %rsp .data -.L.str.46: +.L.str.54: .byte 59 .byte 0 .text - leaq .L.str.46(%rip), %rax + leaq .L.str.54(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2770,7 +3241,7 @@ parse_goto: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $72, %rax + addq $80, %rax push %rax leaq -16(%rbp), %rax movq (%rax), %rax @@ -2788,13 +3259,13 @@ parse_let: movq %rsp, %rbp subq $48, %rsp .data -.L.str.47: +.L.str.55: .byte 108 .byte 101 .byte 116 .byte 0 .text - leaq .L.str.47(%rip), %rax + leaq .L.str.55(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2860,11 +3331,11 @@ parse_let: pop %rdi movq %rax, (%rdi) .data -.L.str.48: +.L.str.56: .byte 61 .byte 0 .text - leaq .L.str.48(%rip), %rax + leaq .L.str.56(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2878,15 +3349,15 @@ parse_let: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.36 + jne .L.else.41 .data -.L.str.49: +.L.str.57: .byte 61 .byte 0 .text - leaq .L.str.49(%rip), %rax + leaq .L.str.57(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2909,7 +3380,7 @@ parse_let: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $96, %rax + addq $104, %rax push %rax leaq -16(%rbp), %rax movq (%rax), %rax @@ -2927,11 +3398,11 @@ parse_let: callq *%r10 addq $16, %rsp .data -.L.str.50: +.L.str.58: .byte 123 .byte 0 .text - leaq .L.str.50(%rip), %rax + leaq .L.str.58(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2945,9 +3416,9 @@ parse_let: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.37 + jne .L.else.42 leaq -40(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -2964,11 +3435,11 @@ parse_let: pop %rdi movq %rax, (%rdi) .data -.L.str.51: +.L.str.59: .byte 59 .byte 0 .text - leaq .L.str.51(%rip), %rax + leaq .L.str.59(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2978,8 +3449,8 @@ parse_let: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.37 -.L.else.37: + jmp .L.end.42 +.L.else.42: leaq -40(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -3003,19 +3474,19 @@ parse_let: addq $24, %rsp pop %rdi movq %rax, (%rdi) -.L.end.37: +.L.end.42: leaq -40(%rbp), %rax movq (%rax), %rax leave ret - jmp .L.end.36 -.L.else.36: + jmp .L.end.41 +.L.else.41: .data -.L.str.52: +.L.str.60: .byte 59 .byte 0 .text - leaq .L.str.52(%rip), %rax + leaq .L.str.60(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3028,7 +3499,7 @@ parse_let: movq $0, %rax leave ret -.L.end.36: +.L.end.41: leave ret .global initializer @@ -3051,39 +3522,39 @@ initializer: push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.39 + je .L.false.44 movq $5, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.39 + je .L.false.44 movq $1, %rax - jmp .L.end.39 -.L.false.39: + jmp .L.end.44 +.L.false.44: movq $0, %rax -.L.end.39: +.L.end.44: cmpq $1, %rax - jne .L.else.38 + jne .L.else.43 .data -.L.str.53: +.L.str.61: .byte 117 .byte 110 .byte 101 @@ -3108,7 +3579,7 @@ initializer: .byte 114 .byte 0 .text - leaq .L.str.53(%rip), %rax + leaq .L.str.61(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3120,15 +3591,15 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.38 -.L.else.38: -.L.end.38: + jmp .L.end.43 +.L.else.43: +.L.end.43: .data -.L.str.54: +.L.str.62: .byte 123 .byte 0 .text - leaq .L.str.54(%rip), %rax + leaq .L.str.62(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3139,11 +3610,11 @@ initializer: callq *%r10 addq $16, %rsp .data -.L.str.55: +.L.str.63: .byte 125 .byte 0 .text - leaq .L.str.55(%rip), %rax + leaq .L.str.63(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3157,9 +3628,9 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.40 + jne .L.else.45 leaq -48(%rbp), %rax push %rax movq $32, %rax @@ -3190,31 +3661,31 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.40 -.L.else.40: + jmp .L.end.45 +.L.else.45: movq $13, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.41 + jne .L.else.46 leaq -40(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.42: +.L.while.start.47: leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $56, %rax movslq (%rax), %rax @@ -3222,11 +3693,11 @@ initializer: leaq -40(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.42 + jne .L.while.end.47 leaq -36(%rbp), %rax push %rax movq $20, %rax @@ -3247,14 +3718,14 @@ initializer: push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $48, %rax movq (%rax), %rax addq $4, %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq new_node_num(%rip), %rax movq %rax, %r10 @@ -3286,11 +3757,11 @@ initializer: callq *%r10 addq $16, %rsp .data -.L.str.56: +.L.str.64: .byte 123 .byte 0 .text - leaq .L.str.56(%rip), %rax + leaq .L.str.64(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3304,9 +3775,9 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.43 + jne .L.else.48 leaq -36(%rbp), %rax movq (%rax), %rax push %rax @@ -3327,8 +3798,8 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.43 -.L.else.43: + jmp .L.end.48 +.L.else.48: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -3357,7 +3828,7 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp -.L.end.43: +.L.end.48: movq $1, %rax push %rax leaq -40(%rbp), %rax @@ -3367,14 +3838,14 @@ initializer: leaq -40(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $56, %rax movslq (%rax), %rax @@ -3382,17 +3853,17 @@ initializer: leaq -40(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.44 + jne .L.else.49 .data -.L.str.57: +.L.str.65: .byte 44 .byte 0 .text - leaq .L.str.57(%rip), %rax + leaq .L.str.65(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3402,36 +3873,36 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.44 -.L.else.44: -.L.end.44: - jmp .L.while.start.42 -.L.while.end.42: - jmp .L.end.41 -.L.else.41: + jmp .L.end.49 +.L.else.49: +.L.end.49: + jmp .L.while.start.47 +.L.while.end.47: + jmp .L.end.46 +.L.else.46: movq $5, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.45 + jne .L.else.50 leaq -28(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.46: +.L.while.start.51: leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax @@ -3441,11 +3912,11 @@ initializer: leaq -28(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.46 + jne .L.while.end.51 leaq -24(%rbp), %rax push %rax leaq -28(%rbp), %rax @@ -3453,7 +3924,7 @@ initializer: push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax @@ -3490,11 +3961,11 @@ initializer: pop %rdi movq %rax, (%rdi) .data -.L.str.58: +.L.str.66: .byte 123 .byte 0 .text - leaq .L.str.58(%rip), %rax + leaq .L.str.66(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3508,9 +3979,9 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.47 + jne .L.else.52 leaq -16(%rbp), %rax movq (%rax), %rax push %rax @@ -3531,8 +4002,8 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.47 -.L.else.47: + jmp .L.end.52 +.L.else.52: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -3561,7 +4032,7 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp -.L.end.47: +.L.end.52: movq $1, %rax push %rax leaq -28(%rbp), %rax @@ -3571,14 +4042,14 @@ initializer: leaq -28(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax @@ -3588,17 +4059,17 @@ initializer: leaq -28(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.48 + jne .L.else.53 .data -.L.str.59: +.L.str.67: .byte 44 .byte 0 .text - leaq .L.str.59(%rip), %rax + leaq .L.str.67(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3608,22 +4079,22 @@ initializer: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.48 -.L.else.48: -.L.end.48: - jmp .L.while.start.46 -.L.while.end.46: - jmp .L.end.45 -.L.else.45: + jmp .L.end.53 +.L.else.53: +.L.end.53: + jmp .L.while.start.51 +.L.while.end.51: + jmp .L.end.50 +.L.else.50: +.L.end.50: +.L.end.46: .L.end.45: -.L.end.41: -.L.end.40: .data -.L.str.60: +.L.str.68: .byte 125 .byte 0 .text - leaq .L.str.60(%rip), %rax + leaq .L.str.68(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3687,7 +4158,7 @@ node_true: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax movq $1, %rax pop %rdi @@ -3726,11 +4197,11 @@ parse_block: pop %rdi movq %rax, (%rdi) .data -.L.str.61: +.L.str.69: .byte 123 .byte 0 .text - leaq .L.str.61(%rip), %rax + leaq .L.str.69(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3748,13 +4219,13 @@ parse_block: movq $0, %rax callq *%r10 addq $8, %rsp -.L.while.start.49: +.L.while.start.54: .data -.L.str.62: +.L.str.70: .byte 125 .byte 0 .text - leaq .L.str.62(%rip), %rax + leaq .L.str.70(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3768,12 +4239,12 @@ parse_block: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.49 + jne .L.while.end.54 leaq -8(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -3791,11 +4262,11 @@ parse_block: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.50 + jne .L.else.55 leaq -8(%rbp), %rax movq (%rax), %rax push %rax @@ -3818,11 +4289,11 @@ parse_block: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.50 -.L.else.50: -.L.end.50: - jmp .L.while.start.49 -.L.while.end.49: + jmp .L.end.55 +.L.else.55: +.L.end.55: + jmp .L.while.start.54 +.L.while.end.54: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -3832,11 +4303,11 @@ parse_block: callq *%r10 addq $8, %rsp .data -.L.str.63: +.L.str.71: .byte 125 .byte 0 .text - leaq .L.str.63(%rip), %rax + leaq .L.str.71(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3891,11 +4362,11 @@ parse_expr_stmt: pop %rdi movq %rax, (%rdi) .data -.L.str.64: +.L.str.72: .byte 59 .byte 0 .text - leaq .L.str.64(%rip), %rax + leaq .L.str.72(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3928,14 +4399,14 @@ parse_logor: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.51: +.L.while.start.56: .data -.L.str.65: +.L.str.73: .byte 124 .byte 124 .byte 0 .text - leaq .L.str.65(%rip), %rax + leaq .L.str.73(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -3949,9 +4420,9 @@ parse_logor: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.51 + jne .L.while.end.56 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -3983,8 +4454,8 @@ parse_logor: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.while.start.51 -.L.while.end.51: + jmp .L.while.start.56 +.L.while.end.56: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -4008,14 +4479,14 @@ parse_logand: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.52: +.L.while.start.57: .data -.L.str.66: +.L.str.74: .byte 38 .byte 38 .byte 0 .text - leaq .L.str.66(%rip), %rax + leaq .L.str.74(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4029,9 +4500,9 @@ parse_logand: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.52 + jne .L.while.end.57 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4063,8 +4534,8 @@ parse_logand: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.while.start.52 -.L.while.end.52: + jmp .L.while.start.57 +.L.while.end.57: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -4088,13 +4559,13 @@ parse_or: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.53: +.L.while.start.58: .data -.L.str.67: +.L.str.75: .byte 124 .byte 0 .text - leaq .L.str.67(%rip), %rax + leaq .L.str.75(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4108,9 +4579,9 @@ parse_or: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.53 + jne .L.while.end.58 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4142,8 +4613,8 @@ parse_or: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.while.start.53 -.L.while.end.53: + jmp .L.while.start.58 +.L.while.end.58: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -4167,13 +4638,13 @@ parse_and: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.54: +.L.while.start.59: .data -.L.str.68: +.L.str.76: .byte 38 .byte 0 .text - leaq .L.str.68(%rip), %rax + leaq .L.str.76(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4187,9 +4658,9 @@ parse_and: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.54 + jne .L.while.end.59 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4221,8 +4692,8 @@ parse_and: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.while.start.54 -.L.while.end.54: + jmp .L.while.start.59 +.L.while.end.59: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -4246,17 +4717,17 @@ parse_equality: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.55: +.L.while.start.60: movq $1, %rax cmpq $1, %rax - jne .L.while.end.55 + jne .L.while.end.60 .data -.L.str.69: +.L.str.77: .byte 61 .byte 61 .byte 0 .text - leaq .L.str.69(%rip), %rax + leaq .L.str.77(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4270,9 +4741,9 @@ parse_equality: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.56 + jne .L.else.61 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4301,9 +4772,9 @@ parse_equality: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.57 + jne .L.else.62 leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4321,8 +4792,8 @@ parse_equality: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.57 -.L.else.57: + jmp .L.end.62 +.L.else.62: leaq -16(%rbp), %rax movq (%rax), %rax push %rax @@ -4331,9 +4802,9 @@ parse_equality: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.58 + jne .L.else.63 leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4351,8 +4822,8 @@ parse_equality: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.58 -.L.else.58: + jmp .L.end.63 +.L.else.63: leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4370,17 +4841,17 @@ parse_equality: addq $24, %rsp pop %rdi movq %rax, (%rdi) -.L.end.58: -.L.end.57: - jmp .L.end.56 -.L.else.56: +.L.end.63: +.L.end.62: + jmp .L.end.61 +.L.else.61: .data -.L.str.70: +.L.str.78: .byte 33 .byte 61 .byte 0 .text - leaq .L.str.70(%rip), %rax + leaq .L.str.78(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4394,9 +4865,9 @@ parse_equality: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.59 + jne .L.else.64 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4425,9 +4896,9 @@ parse_equality: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.60 + jne .L.else.65 leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4445,8 +4916,8 @@ parse_equality: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.60 -.L.else.60: + jmp .L.end.65 +.L.else.65: leaq -16(%rbp), %rax movq (%rax), %rax push %rax @@ -4455,9 +4926,9 @@ parse_equality: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.61 + jne .L.else.66 leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4475,8 +4946,8 @@ parse_equality: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.61 -.L.else.61: + jmp .L.end.66 +.L.else.66: leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4494,15 +4965,15 @@ parse_equality: addq $24, %rsp pop %rdi movq %rax, (%rdi) -.L.end.61: -.L.end.60: - jmp .L.end.59 -.L.else.59: +.L.end.66: +.L.end.65: + jmp .L.end.64 +.L.else.64: jmp .L.parse_equality.break -.L.end.59: -.L.end.56: - jmp .L.while.start.55 -.L.while.end.55: +.L.end.64: +.L.end.61: + jmp .L.while.start.60 +.L.while.end.60: .L.parse_equality.break: leaq -16(%rbp), %rax movq (%rax), %rax @@ -4527,17 +4998,17 @@ parse_relational: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.62: +.L.while.start.67: movq $1, %rax cmpq $1, %rax - jne .L.while.end.62 + jne .L.while.end.67 .data -.L.str.71: +.L.str.79: .byte 60 .byte 61 .byte 0 .text - leaq .L.str.71(%rip), %rax + leaq .L.str.79(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4551,9 +5022,9 @@ parse_relational: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.63 + jne .L.else.68 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4582,9 +5053,9 @@ parse_relational: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.64 + jne .L.else.69 leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4602,8 +5073,8 @@ parse_relational: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.64 -.L.else.64: + jmp .L.end.69 +.L.else.69: leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4621,16 +5092,16 @@ parse_relational: addq $24, %rsp pop %rdi movq %rax, (%rdi) -.L.end.64: - jmp .L.end.63 -.L.else.63: +.L.end.69: + jmp .L.end.68 +.L.else.68: .data -.L.str.72: +.L.str.80: .byte 62 .byte 61 .byte 0 .text - leaq .L.str.72(%rip), %rax + leaq .L.str.80(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4644,9 +5115,9 @@ parse_relational: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.65 + jne .L.else.70 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4675,9 +5146,9 @@ parse_relational: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.66 + jne .L.else.71 leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4695,8 +5166,8 @@ parse_relational: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.66 -.L.else.66: + jmp .L.end.71 +.L.else.71: leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4714,15 +5185,15 @@ parse_relational: addq $24, %rsp pop %rdi movq %rax, (%rdi) -.L.end.66: - jmp .L.end.65 -.L.else.65: +.L.end.71: + jmp .L.end.70 +.L.else.70: .data -.L.str.73: +.L.str.81: .byte 60 .byte 0 .text - leaq .L.str.73(%rip), %rax + leaq .L.str.81(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4736,9 +5207,9 @@ parse_relational: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.67 + jne .L.else.72 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4767,9 +5238,9 @@ parse_relational: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.68 + jne .L.else.73 leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4787,8 +5258,8 @@ parse_relational: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.68 -.L.else.68: + jmp .L.end.73 +.L.else.73: leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4806,15 +5277,15 @@ parse_relational: addq $24, %rsp pop %rdi movq %rax, (%rdi) -.L.end.68: - jmp .L.end.67 -.L.else.67: +.L.end.73: + jmp .L.end.72 +.L.else.72: .data -.L.str.74: +.L.str.82: .byte 62 .byte 0 .text - leaq .L.str.74(%rip), %rax + leaq .L.str.82(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -4828,9 +5299,9 @@ parse_relational: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.69 + jne .L.else.74 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -4859,9 +5330,9 @@ parse_relational: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.70 + jne .L.else.75 leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4879,8 +5350,8 @@ parse_relational: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.70 -.L.else.70: + jmp .L.end.75 +.L.else.75: leaq -16(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -4898,16 +5369,16 @@ parse_relational: addq $24, %rsp pop %rdi movq %rax, (%rdi) -.L.end.70: - jmp .L.end.69 -.L.else.69: +.L.end.75: + jmp .L.end.74 +.L.else.74: jmp .L.parse_relational.break -.L.end.69: -.L.end.67: -.L.end.65: -.L.end.63: - jmp .L.while.start.62 -.L.while.end.62: +.L.end.74: +.L.end.72: +.L.end.70: +.L.end.68: + jmp .L.while.start.67 +.L.while.end.67: .L.parse_relational.break: leaq -16(%rbp), %rax movq (%rax), %rax @@ -4928,9 +5399,9 @@ new_equality: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.72 + je .L.false.77 leaq 32(%rbp), %rax movq (%rax), %rax push %rax @@ -4939,16 +5410,16 @@ new_equality: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.72 + je .L.false.77 movq $1, %rax - jmp .L.end.72 -.L.false.72: + jmp .L.end.77 +.L.false.77: movq $0, %rax -.L.end.72: +.L.end.77: cmpq $1, %rax - jne .L.else.71 + jne .L.else.76 leaq -8(%rbp), %rax push %rax leaq 32(%rbp), %rax @@ -5021,9 +5492,9 @@ new_equality: movq (%rax), %rax leave ret - jmp .L.end.71 -.L.else.71: -.L.end.71: + jmp .L.end.76 +.L.else.76: +.L.end.76: leaq -8(%rbp), %rax push %rax leaq 32(%rbp), %rax @@ -5086,9 +5557,9 @@ new_relational: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.74 + je .L.false.79 leaq 32(%rbp), %rax movq (%rax), %rax push %rax @@ -5097,16 +5568,16 @@ new_relational: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.74 + je .L.false.79 movq $1, %rax - jmp .L.end.74 -.L.false.74: + jmp .L.end.79 +.L.false.79: movq $0, %rax -.L.end.74: +.L.end.79: cmpq $1, %rax - jne .L.else.73 + jne .L.else.78 leaq -8(%rbp), %rax push %rax leaq 32(%rbp), %rax @@ -5179,9 +5650,9 @@ new_relational: movq (%rax), %rax leave ret - jmp .L.end.73 -.L.else.73: -.L.end.73: + jmp .L.end.78 +.L.else.78: +.L.end.78: leaq -8(%rbp), %rax push %rax leaq 32(%rbp), %rax @@ -5242,7 +5713,7 @@ search_relational_lhs: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.75: +.L.while.start.80: leaq -8(%rbp), %rax movq (%rax), %rax push %rax @@ -5251,9 +5722,9 @@ search_relational_lhs: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.75 + jne .L.while.end.80 leaq -8(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -5262,8 +5733,8 @@ search_relational_lhs: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.75 -.L.while.end.75: + jmp .L.while.start.80 +.L.while.end.80: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -5281,7 +5752,7 @@ search_relational_rhs: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.76: +.L.while.start.81: leaq -8(%rbp), %rax movq (%rax), %rax push %rax @@ -5290,9 +5761,9 @@ search_relational_rhs: movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.76 + jne .L.while.end.81 leaq -8(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -5301,8 +5772,8 @@ search_relational_rhs: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.76 -.L.while.end.76: + jmp .L.while.start.81 +.L.while.end.81: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -5321,11 +5792,11 @@ is_comparison_node: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.82 + jne .L.true.87 movq $10, %rax push %rax leaq 16(%rbp), %rax @@ -5333,18 +5804,18 @@ is_comparison_node: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.82 + jne .L.true.87 mov $0, %rax - jmp .L.end.82 -.L.true.82: + jmp .L.end.87 +.L.true.87: mov $1, %rax -.L.end.82: +.L.end.87: cmpq $0, %rax - jne .L.true.81 + jne .L.true.86 movq $9, %rax push %rax leaq 16(%rbp), %rax @@ -5352,18 +5823,18 @@ is_comparison_node: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.81 + jne .L.true.86 mov $0, %rax - jmp .L.end.81 -.L.true.81: + jmp .L.end.86 +.L.true.86: mov $1, %rax -.L.end.81: +.L.end.86: cmpq $0, %rax - jne .L.true.80 + jne .L.true.85 movq $11, %rax push %rax leaq 16(%rbp), %rax @@ -5371,18 +5842,18 @@ is_comparison_node: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.80 + jne .L.true.85 mov $0, %rax - jmp .L.end.80 -.L.true.80: + jmp .L.end.85 +.L.true.85: mov $1, %rax -.L.end.80: +.L.end.85: cmpq $0, %rax - jne .L.true.79 + jne .L.true.84 movq $7, %rax push %rax leaq 16(%rbp), %rax @@ -5390,18 +5861,18 @@ is_comparison_node: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.79 + jne .L.true.84 mov $0, %rax - jmp .L.end.79 -.L.true.79: + jmp .L.end.84 +.L.true.84: mov $1, %rax -.L.end.79: +.L.end.84: cmpq $0, %rax - jne .L.true.78 + jne .L.true.83 movq $6, %rax push %rax leaq 16(%rbp), %rax @@ -5409,18 +5880,18 @@ is_comparison_node: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.78 + jne .L.true.83 mov $0, %rax - jmp .L.end.78 -.L.true.78: + jmp .L.end.83 +.L.true.83: mov $1, %rax -.L.end.78: +.L.end.83: cmpq $0, %rax - jne .L.true.77 + jne .L.true.82 movq $26, %rax push %rax leaq 16(%rbp), %rax @@ -5428,16 +5899,16 @@ is_comparison_node: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.77 + jne .L.true.82 mov $0, %rax - jmp .L.end.77 -.L.true.77: + jmp .L.end.82 +.L.true.82: mov $1, %rax -.L.end.77: +.L.end.82: leave ret leave @@ -5459,17 +5930,17 @@ parse_shift: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.83: +.L.while.start.88: movq $1, %rax cmpq $1, %rax - jne .L.while.end.83 + jne .L.while.end.88 .data -.L.str.75: +.L.str.83: .byte 60 .byte 60 .byte 0 .text - leaq .L.str.75(%rip), %rax + leaq .L.str.83(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -5483,9 +5954,9 @@ parse_shift: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.84 + jne .L.else.89 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -5517,15 +5988,15 @@ parse_shift: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.84 -.L.else.84: + jmp .L.end.89 +.L.else.89: .data -.L.str.76: +.L.str.84: .byte 62 .byte 62 .byte 0 .text - leaq .L.str.76(%rip), %rax + leaq .L.str.84(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -5539,9 +6010,9 @@ parse_shift: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.85 + jne .L.else.90 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -5573,13 +6044,13 @@ parse_shift: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.85 -.L.else.85: + jmp .L.end.90 +.L.else.90: jmp .L.parse_shift.break -.L.end.85: -.L.end.84: - jmp .L.while.start.83 -.L.while.end.83: +.L.end.90: +.L.end.89: + jmp .L.while.start.88 +.L.while.end.88: .L.parse_shift.break: leaq -8(%rbp), %rax movq (%rax), %rax @@ -5604,16 +6075,16 @@ parse_add: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.86: +.L.while.start.91: movq $1, %rax cmpq $1, %rax - jne .L.while.end.86 + jne .L.while.end.91 .data -.L.str.77: +.L.str.85: .byte 43 .byte 0 .text - leaq .L.str.77(%rip), %rax + leaq .L.str.85(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -5627,9 +6098,9 @@ parse_add: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.87 + jne .L.else.92 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -5661,14 +6132,14 @@ parse_add: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.87 -.L.else.87: + jmp .L.end.92 +.L.else.92: .data -.L.str.78: +.L.str.86: .byte 45 .byte 0 .text - leaq .L.str.78(%rip), %rax + leaq .L.str.86(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -5682,9 +6153,9 @@ parse_add: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.88 + jne .L.else.93 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -5716,13 +6187,13 @@ parse_add: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.88 -.L.else.88: + jmp .L.end.93 +.L.else.93: jmp .L.parse_add.break -.L.end.88: -.L.end.87: - jmp .L.while.start.86 -.L.while.end.86: +.L.end.93: +.L.end.92: + jmp .L.while.start.91 +.L.while.end.91: .L.parse_add.break: leaq -8(%rbp), %rax movq (%rax), %rax @@ -5747,16 +6218,16 @@ parse_mul: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.89: +.L.while.start.94: movq $1, %rax cmpq $1, %rax - jne .L.while.end.89 + jne .L.while.end.94 .data -.L.str.79: +.L.str.87: .byte 42 .byte 0 .text - leaq .L.str.79(%rip), %rax + leaq .L.str.87(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -5770,9 +6241,9 @@ parse_mul: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.90 + jne .L.else.95 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -5804,14 +6275,14 @@ parse_mul: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.90 -.L.else.90: + jmp .L.end.95 +.L.else.95: .data -.L.str.80: +.L.str.88: .byte 47 .byte 0 .text - leaq .L.str.80(%rip), %rax + leaq .L.str.88(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -5825,9 +6296,9 @@ parse_mul: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.91 + jne .L.else.96 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -5859,14 +6330,14 @@ parse_mul: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.91 -.L.else.91: + jmp .L.end.96 +.L.else.96: .data -.L.str.81: +.L.str.89: .byte 37 .byte 0 .text - leaq .L.str.81(%rip), %rax + leaq .L.str.89(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -5880,9 +6351,9 @@ parse_mul: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.92 + jne .L.else.97 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -5914,14 +6385,14 @@ parse_mul: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.92 -.L.else.92: + jmp .L.end.97 +.L.else.97: jmp .L.parse_mul.break -.L.end.92: -.L.end.91: -.L.end.90: - jmp .L.while.start.89 -.L.while.end.89: +.L.end.97: +.L.end.96: +.L.end.95: + jmp .L.while.start.94 +.L.while.end.94: .L.parse_mul.break: leaq -8(%rbp), %rax movq (%rax), %rax @@ -5935,11 +6406,11 @@ parse_not: movq %rsp, %rbp subq $16, %rsp .data -.L.str.82: +.L.str.90: .byte 33 .byte 0 .text - leaq .L.str.82(%rip), %rax + leaq .L.str.90(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -5986,11 +6457,11 @@ parse_ref: movq %rsp, %rbp subq $16, %rsp .data -.L.str.83: +.L.str.91: .byte 38 .byte 0 .text - leaq .L.str.83(%rip), %rax + leaq .L.str.91(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6041,7 +6512,7 @@ params_length_without_argv_argc: addq $40, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.93 + jne .L.else.98 movq $2, %rax push %rax leaq 16(%rbp), %rax @@ -6051,11 +6522,11 @@ params_length_without_argv_argc: addq $8, %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax leave ret - jmp .L.end.93 -.L.else.93: + jmp .L.end.98 +.L.else.98: leaq 16(%rbp), %rax movq (%rax), %rax addq $32, %rax @@ -6064,7 +6535,7 @@ params_length_without_argv_argc: movslq (%rax), %rax leave ret -.L.end.93: +.L.end.98: leave ret .global new_binop @@ -6171,41 +6642,41 @@ parse_deref: movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.95 + je .L.false.100 movq $13, %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.95 + je .L.false.100 movq $1, %rax - jmp .L.end.95 -.L.false.95: + jmp .L.end.100 +.L.false.100: movq $0, %rax -.L.end.95: +.L.end.100: cmpq $1, %rax - jne .L.else.94 + jne .L.else.99 .data -.L.str.84: +.L.str.92: .byte 105 .byte 110 .byte 118 @@ -6235,7 +6706,7 @@ parse_deref: .byte 101 .byte 0 .text - leaq .L.str.84(%rip), %rax + leaq .L.str.92(%rip), %rax push %rax leaq -16(%rbp), %rax movq (%rax), %rax @@ -6245,9 +6716,9 @@ parse_deref: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.94 -.L.else.94: -.L.end.94: + jmp .L.end.99 +.L.else.99: +.L.end.99: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -6261,7 +6732,7 @@ new_struct_access_node: subq $16, %rsp leaq -8(%rbp), %rax push %rax - movq $136, %rax + movq $144, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -6288,7 +6759,7 @@ new_struct_access_node: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $120, %rax + addq $128, %rax push %rax leaq 32(%rbp), %rax movslq (%rax), %rax @@ -6296,7 +6767,7 @@ new_struct_access_node: movl %eax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 40(%rbp), %rax movq (%rax), %rax @@ -6318,7 +6789,7 @@ search_struct_member: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.96: +.L.while.start.101: leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -6327,11 +6798,11 @@ search_struct_member: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.96 + jne .L.while.end.101 leaq -8(%rbp), %rax push %rax leaq -12(%rbp), %rax @@ -6360,16 +6831,16 @@ search_struct_member: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.97 + jne .L.else.102 leaq -8(%rbp), %rax movq (%rax), %rax leave ret - jmp .L.end.97 -.L.else.97: -.L.end.97: + jmp .L.end.102 +.L.else.102: +.L.end.102: movq $1, %rax push %rax leaq -12(%rbp), %rax @@ -6379,13 +6850,13 @@ search_struct_member: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.96 -.L.while.end.96: + subq %rdi, %rax + jmp .L.while.start.101 +.L.while.end.101: movq $0, %rax leave ret @@ -6405,11 +6876,11 @@ parse_number: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.98 + jne .L.else.103 leaq -8(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -6434,8 +6905,8 @@ parse_number: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.98 -.L.else.98: + jmp .L.end.103 +.L.else.103: movq $3, %rax push %rax leaq 16(%rbp), %rax @@ -6445,11 +6916,11 @@ parse_number: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.99 + jne .L.else.104 leaq -8(%rbp), %rax push %rax movq $12, %rax @@ -6463,7 +6934,7 @@ parse_number: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $88, %rax + addq $96, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6481,16 +6952,16 @@ parse_number: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.99 -.L.else.99: + jmp .L.end.104 +.L.else.104: .data -.L.str.85: +.L.str.93: .byte 110 .byte 105 .byte 108 .byte 0 .text - leaq .L.str.85(%rip), %rax + leaq .L.str.93(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6504,9 +6975,9 @@ parse_number: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.100 + jne .L.else.105 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -6528,32 +6999,32 @@ parse_number: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.100 -.L.else.100: + jmp .L.end.105 +.L.else.105: .data -.L.str.86: +.L.str.94: .byte 116 .byte 114 .byte 117 .byte 101 .byte 0 .text - leaq .L.str.86(%rip), %rax + leaq .L.str.94(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6567,9 +7038,9 @@ parse_number: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.101 + jne .L.else.106 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -6591,25 +7062,25 @@ parse_number: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $112, %rax + addq $120, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax movq $1, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.101 -.L.else.101: + jmp .L.end.106 +.L.else.106: .data -.L.str.87: +.L.str.95: .byte 102 .byte 97 .byte 108 @@ -6617,7 +7088,7 @@ parse_number: .byte 101 .byte 0 .text - leaq .L.str.87(%rip), %rax + leaq .L.str.95(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6631,9 +7102,9 @@ parse_number: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.102 + jne .L.else.107 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -6655,25 +7126,25 @@ parse_number: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $112, %rax + addq $120, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.102 -.L.else.102: + jmp .L.end.107 +.L.else.107: .data -.L.str.88: +.L.str.96: .byte 116 .byte 121 .byte 112 @@ -6684,7 +7155,7 @@ parse_number: .byte 101 .byte 0 .text - leaq .L.str.88(%rip), %rax + leaq .L.str.96(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6698,9 +7169,9 @@ parse_number: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.103 + jne .L.else.108 leaq -8(%rbp), %rax push %rax movq $13, %rax @@ -6721,11 +7192,11 @@ parse_number: callq *%r10 addq $8, %rsp .data -.L.str.89: +.L.str.97: .byte 40 .byte 0 .text - leaq .L.str.89(%rip), %rax + leaq .L.str.97(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6737,7 +7208,7 @@ parse_number: addq $16, %rsp leaq -8(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6753,20 +7224,20 @@ parse_number: movl %eax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) .data -.L.str.90: +.L.str.98: .byte 41 .byte 0 .text - leaq .L.str.90(%rip), %rax + leaq .L.str.98(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6776,10 +7247,10 @@ parse_number: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.103 -.L.else.103: + jmp .L.end.108 +.L.else.108: .data -.L.str.91: +.L.str.99: .byte 115 .byte 105 .byte 122 @@ -6788,7 +7259,7 @@ parse_number: .byte 102 .byte 0 .text - leaq .L.str.91(%rip), %rax + leaq .L.str.99(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6802,9 +7273,9 @@ parse_number: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.104 + jne .L.else.109 leaq -8(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -6817,8 +7288,8 @@ parse_number: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.104 -.L.else.104: + jmp .L.end.109 +.L.else.109: movq $2, %rax push %rax leaq 16(%rbp), %rax @@ -6828,11 +7299,11 @@ parse_number: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.105 + jne .L.else.110 leaq -8(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -6845,14 +7316,14 @@ parse_number: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.105 -.L.else.105: + jmp .L.end.110 +.L.else.110: .data -.L.str.92: +.L.str.100: .byte 40 .byte 0 .text - leaq .L.str.92(%rip), %rax + leaq .L.str.100(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6866,9 +7337,9 @@ parse_number: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.106 + jne .L.else.111 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -6890,11 +7361,11 @@ parse_number: pop %rdi movq %rax, (%rdi) .data -.L.str.93: +.L.str.101: .byte 41 .byte 0 .text - leaq .L.str.93(%rip), %rax + leaq .L.str.101(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6904,10 +7375,10 @@ parse_number: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.106 -.L.else.106: + jmp .L.end.111 +.L.else.111: .data -.L.str.94: +.L.str.102: .byte 101 .byte 120 .byte 112 @@ -6939,7 +7410,7 @@ parse_number: .byte 114 .byte 0 .text - leaq .L.str.94(%rip), %rax + leaq .L.str.102(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -6958,15 +7429,15 @@ parse_number: movq $0, %rax callq *%r10 addq $8, %rsp +.L.end.111: +.L.end.110: +.L.end.109: +.L.end.108: +.L.end.107: .L.end.106: .L.end.105: .L.end.104: .L.end.103: -.L.end.102: -.L.end.101: -.L.end.100: -.L.end.99: -.L.end.98: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -6991,7 +7462,7 @@ new_node_num: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax leaq 16(%rbp), %rax movslq (%rax), %rax @@ -7051,13 +7522,13 @@ parse_ident: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.107 + jne .L.else.112 .data -.L.str.95: +.L.str.103: .byte 117 .byte 110 .byte 107 @@ -7073,7 +7544,7 @@ parse_ident: .byte 116 .byte 0 .text - leaq .L.str.95(%rip), %rax + leaq .L.str.103(%rip), %rax push %rax leaq -24(%rbp), %rax movq (%rax), %rax @@ -7083,12 +7554,12 @@ parse_ident: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.107 -.L.else.107: -.L.end.107: + jmp .L.end.112 +.L.else.112: +.L.end.112: leaq -16(%rbp), %rax movq (%rax), %rax - addq $96, %rax + addq $104, %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax @@ -7133,11 +7604,11 @@ find_object: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.108 + jne .L.else.113 leaq -8(%rbp), %rax push %rax leaq 24(%rbp), %rax @@ -7153,9 +7624,9 @@ find_object: addq $16, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.108 -.L.else.108: -.L.end.108: + jmp .L.end.113 +.L.else.113: +.L.end.113: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -7168,7 +7639,7 @@ parse_sizeof: movq %rsp, %rbp subq $16, %rsp .data -.L.str.96: +.L.str.104: .byte 115 .byte 105 .byte 122 @@ -7177,7 +7648,7 @@ parse_sizeof: .byte 102 .byte 0 .text - leaq .L.str.96(%rip), %rax + leaq .L.str.104(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -7188,11 +7659,11 @@ parse_sizeof: callq *%r10 addq $16, %rsp .data -.L.str.97: +.L.str.105: .byte 40 .byte 0 .text - leaq .L.str.97(%rip), %rax + leaq .L.str.105(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -7215,11 +7686,11 @@ parse_sizeof: pop %rdi movq %rax, (%rdi) .data -.L.str.98: +.L.str.106: .byte 41 .byte 0 .text - leaq .L.str.98(%rip), %rax + leaq .L.str.106(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -7244,7 +7715,7 @@ parse_sizeof: push %rax leaq -12(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $4, %rax movslq (%rax), %rax @@ -7259,7 +7730,7 @@ parse_sizeof: movl %eax, (%rdi) leaq -12(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax @@ -7267,11 +7738,11 @@ parse_sizeof: movl %eax, (%rdi) leaq -12(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) @@ -7297,13 +7768,13 @@ parse_func_call_args: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.109: +.L.while.start.114: .data -.L.str.99: +.L.str.107: .byte 41 .byte 0 .text - leaq .L.str.99(%rip), %rax + leaq .L.str.107(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -7317,12 +7788,12 @@ parse_func_call_args: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.109 + jne .L.while.end.114 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -7341,11 +7812,11 @@ parse_func_call_args: callq *%r10 addq $16, %rsp .data -.L.str.100: +.L.str.108: .byte 44 .byte 0 .text - leaq .L.str.100(%rip), %rax + leaq .L.str.108(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -7359,16 +7830,16 @@ parse_func_call_args: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.110 + jne .L.else.115 jmp .L.parse_func_call_args.break - jmp .L.end.110 -.L.else.110: -.L.end.110: + jmp .L.end.115 +.L.else.115: +.L.end.115: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -7377,8 +7848,8 @@ parse_func_call_args: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.while.start.109 -.L.while.end.109: + jmp .L.while.start.114 +.L.while.end.114: .L.parse_func_call_args.break: leaq -8(%rbp), %rax movq (%rax), %rax @@ -7391,13 +7862,13 @@ parse_params_types: push %rbp movq %rsp, %rbp subq $16, %rsp -.L.while.start.111: +.L.while.start.116: .data -.L.str.101: +.L.str.109: .byte 41 .byte 0 .text - leaq .L.str.101(%rip), %rax + leaq .L.str.109(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -7411,20 +7882,20 @@ parse_params_types: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.111 + jne .L.while.end.116 .data -.L.str.102: +.L.str.110: .byte 46 .byte 46 .byte 46 .byte 0 .text - leaq .L.str.102(%rip), %rax + leaq .L.str.110(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -7438,9 +7909,9 @@ parse_params_types: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.112 + jne .L.else.117 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -7452,8 +7923,8 @@ parse_params_types: movq $1, %rax leave ret - jmp .L.end.112 -.L.else.112: + jmp .L.end.117 +.L.else.117: leaq -8(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -7473,11 +7944,11 @@ parse_params_types: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.113 + jne .L.else.118 leaq -8(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -7492,9 +7963,9 @@ parse_params_types: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.113 -.L.else.113: -.L.end.113: + jmp .L.end.118 +.L.else.118: +.L.end.118: leaq -8(%rbp), %rax movq (%rax), %rax push %rax @@ -7506,13 +7977,13 @@ parse_params_types: movq $0, %rax callq *%r10 addq $16, %rsp -.L.end.112: +.L.end.117: .data -.L.str.103: +.L.str.111: .byte 44 .byte 0 .text - leaq .L.str.103(%rip), %rax + leaq .L.str.111(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -7526,16 +7997,16 @@ parse_params_types: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.114 + jne .L.else.119 jmp .L.parse_params_types.break - jmp .L.end.114 -.L.else.114: -.L.end.114: + jmp .L.end.119 +.L.else.119: +.L.end.119: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -7544,8 +8015,8 @@ parse_params_types: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.while.start.111 -.L.while.end.111: + jmp .L.while.start.116 +.L.while.end.116: .L.parse_params_types.break: movq $0, %rax leave @@ -7562,22 +8033,22 @@ add_type_block: leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.115 + jne .L.else.120 leave ret - jmp .L.end.115 -.L.else.115: -.L.end.115: + jmp .L.end.120 +.L.else.120: +.L.end.120: leaq -12(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.116: +.L.while.start.121: leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -7586,11 +8057,11 @@ add_type_block: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.116 + jne .L.while.end.121 leaq -8(%rbp), %rax push %rax leaq -12(%rbp), %rax @@ -7626,13 +8097,13 @@ add_type_block: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.116 -.L.while.end.116: + subq %rdi, %rax + jmp .L.while.start.121 +.L.while.end.121: leave ret .global new_local_object @@ -7670,13 +8141,13 @@ new_local_object: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.117 + jne .L.else.122 .data -.L.str.104: +.L.str.112: .byte 109 .byte 101 .byte 109 @@ -7704,7 +8175,7 @@ new_local_object: .byte 10 .byte 0 .text - leaq .L.str.104(%rip), %rax + leaq .L.str.112(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -7718,9 +8189,9 @@ new_local_object: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.117 -.L.else.117: -.L.end.117: + jmp .L.end.122 +.L.else.122: +.L.end.122: leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -7876,13 +8347,13 @@ check_local_object_already_exist: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.118 + jne .L.else.123 .data -.L.str.105: +.L.str.113: .byte 110 .byte 97 .byte 109 @@ -7903,7 +8374,7 @@ check_local_object_already_exist: .byte 116 .byte 0 .text - leaq .L.str.105(%rip), %rax + leaq .L.str.113(%rip), %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -7920,9 +8391,9 @@ check_local_object_already_exist: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.118 -.L.else.118: -.L.end.118: + jmp .L.end.123 +.L.else.123: +.L.end.123: movq $0, %rax leave ret @@ -7941,17 +8412,17 @@ find_globals: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.119: +.L.while.start.124: movq $0, %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.119 + jne .L.while.end.124 leaq 24(%rbp), %rax movq (%rax), %rax push %rax @@ -7965,16 +8436,16 @@ find_globals: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.120 + jne .L.else.125 leaq -8(%rbp), %rax movq (%rax), %rax leave ret - jmp .L.end.120 -.L.else.120: -.L.end.120: + jmp .L.end.125 +.L.else.125: +.L.end.125: leaq -8(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -7983,8 +8454,8 @@ find_globals: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.119 -.L.while.end.119: + jmp .L.while.start.124 +.L.while.end.124: movq $0, %rax leave ret @@ -8005,17 +8476,17 @@ find_locals_current_scope: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.121: +.L.while.start.126: movq $0, %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.121 + jne .L.while.end.126 leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -8029,18 +8500,18 @@ find_locals_current_scope: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.122 + jne .L.else.127 leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax leave ret - jmp .L.end.122 -.L.else.122: -.L.end.122: + jmp .L.end.127 +.L.else.127: +.L.end.127: leaq -8(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -8049,8 +8520,8 @@ find_locals_current_scope: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.121 -.L.while.end.121: + jmp .L.while.start.126 +.L.while.end.126: movq $0, %rax leave ret @@ -8069,17 +8540,17 @@ find_locals: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.123: +.L.while.start.128: movq $0, %rax push %rax leaq -16(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.123 + jne .L.while.end.128 leaq -8(%rbp), %rax push %rax leaq -16(%rbp), %rax @@ -8088,17 +8559,17 @@ find_locals: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.124: +.L.while.start.129: movq $0, %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.124 + jne .L.while.end.129 leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -8112,18 +8583,18 @@ find_locals: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.125 + jne .L.else.130 leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax leave - ret - jmp .L.end.125 -.L.else.125: -.L.end.125: + ret + jmp .L.end.130 +.L.else.130: +.L.end.130: leaq -8(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -8132,8 +8603,8 @@ find_locals: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.124 -.L.while.end.124: + jmp .L.while.start.129 +.L.while.end.129: leaq -16(%rbp), %rax push %rax leaq -16(%rbp), %rax @@ -8142,8 +8613,8 @@ find_locals: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.123 -.L.while.end.123: + jmp .L.while.start.128 +.L.while.end.128: movq $0, %rax leave ret @@ -8164,23 +8635,23 @@ cmp_func_params: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.126 + jne .L.else.131 movq $0, %rax leave ret - jmp .L.end.126 -.L.else.126: -.L.end.126: + jmp .L.end.131 +.L.else.131: +.L.end.131: leaq -4(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.127: +.L.while.start.132: leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -8189,11 +8660,11 @@ cmp_func_params: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.127 + jne .L.while.end.132 leaq -4(%rbp), %rax movslq (%rax), %rax push %rax @@ -8223,18 +8694,18 @@ cmp_func_params: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.128 + jne .L.else.133 movq $0, %rax leave ret - jmp .L.end.128 -.L.else.128: -.L.end.128: + jmp .L.end.133 +.L.else.133: +.L.end.133: movq $1, %rax push %rax leaq -4(%rbp), %rax @@ -8244,13 +8715,13 @@ cmp_func_params: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.127 -.L.while.end.127: + subq %rdi, %rax + jmp .L.while.start.132 +.L.while.end.132: movq $1, %rax leave ret @@ -8276,9 +8747,9 @@ cmp_func_param: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.129 + je .L.false.134 leaq 24(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -8294,14 +8765,14 @@ cmp_func_param: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.129 + je .L.false.134 movq $1, %rax - jmp .L.end.129 -.L.false.129: + jmp .L.end.134 +.L.false.134: movq $0, %rax -.L.end.129: +.L.end.134: leave ret leave @@ -8321,23 +8792,23 @@ cmp_type_vec: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.130 + jne .L.else.135 movq $0, %rax leave ret - jmp .L.end.130 -.L.else.130: -.L.end.130: + jmp .L.end.135 +.L.else.135: +.L.end.135: leaq -4(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.131: +.L.while.start.136: leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -8346,11 +8817,11 @@ cmp_type_vec: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.131 + jne .L.while.end.136 leaq -4(%rbp), %rax movslq (%rax), %rax push %rax @@ -8380,18 +8851,18 @@ cmp_type_vec: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.132 + jne .L.else.137 movq $0, %rax leave ret - jmp .L.end.132 -.L.else.132: -.L.end.132: + jmp .L.end.137 +.L.else.137: +.L.end.137: movq $1, %rax push %rax leaq -4(%rbp), %rax @@ -8401,13 +8872,13 @@ cmp_type_vec: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.131 -.L.while.end.131: + subq %rdi, %rax + jmp .L.while.start.136 +.L.while.end.136: movq $1, %rax leave ret @@ -8433,9 +8904,9 @@ parser_skip: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.133 + jne .L.else.138 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -8446,11 +8917,11 @@ parser_skip: addq $8, %rsp leave ret - jmp .L.end.133 -.L.else.133: -.L.end.133: + jmp .L.end.138 +.L.else.138: +.L.end.138: .data -.L.str.106: +.L.str.114: .byte 117 .byte 110 .byte 101 @@ -8469,7 +8940,7 @@ parser_skip: .byte 110 .byte 0 .text - leaq .L.str.106(%rip), %rax + leaq .L.str.114(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -8493,7 +8964,7 @@ new_node: subq $16, %rsp leaq -8(%rbp), %rax push %rax - movq $136, %rax + movq $144, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -8507,13 +8978,13 @@ new_node: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.134 + jne .L.else.139 .data -.L.str.107: +.L.str.115: .byte 109 .byte 101 .byte 109 @@ -8541,7 +9012,7 @@ new_node: .byte 10 .byte 0 .text - leaq .L.str.107(%rip), %rax + leaq .L.str.115(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -8555,9 +9026,9 @@ new_node: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.134 -.L.else.134: -.L.end.134: + jmp .L.end.139 +.L.else.139: +.L.end.139: leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -8586,13 +9057,13 @@ parser_next: addq $64, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.135 + jne .L.else.140 .data -.L.str.108: +.L.str.116: .byte 105 .byte 110 .byte 116 @@ -8634,7 +9105,7 @@ parser_next: .byte 46 .byte 0 .text - leaq .L.str.108(%rip), %rax + leaq .L.str.116(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -8648,9 +9119,9 @@ parser_next: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.135 -.L.else.135: -.L.end.135: + jmp .L.end.140 +.L.else.140: +.L.end.140: leaq 16(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -8688,13 +9159,13 @@ new_func_type: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.136 + jne .L.else.141 .data -.L.str.109: +.L.str.117: .byte 109 .byte 101 .byte 109 @@ -8722,7 +9193,7 @@ new_func_type: .byte 10 .byte 0 .text - leaq .L.str.109(%rip), %rax + leaq .L.str.117(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -8736,9 +9207,9 @@ new_func_type: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.136 -.L.else.136: -.L.end.136: + jmp .L.end.141 +.L.else.141: +.L.end.141: leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -8804,13 +9275,13 @@ new_array_type: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.137 + jne .L.else.142 .data -.L.str.110: +.L.str.118: .byte 109 .byte 101 .byte 109 @@ -8838,7 +9309,7 @@ new_array_type: .byte 10 .byte 0 .text - leaq .L.str.110(%rip), %rax + leaq .L.str.118(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -8852,9 +9323,9 @@ new_array_type: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.137 -.L.else.137: -.L.end.137: + jmp .L.end.142 +.L.else.142: +.L.end.142: leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -8874,7 +9345,7 @@ new_array_type: addq $4, %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq -8(%rbp), %rax @@ -8920,13 +9391,13 @@ new_pointer_type: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.138 + jne .L.else.143 .data -.L.str.111: +.L.str.119: .byte 109 .byte 101 .byte 109 @@ -8954,7 +9425,7 @@ new_pointer_type: .byte 10 .byte 0 .text - leaq .L.str.111(%rip), %rax + leaq .L.str.119(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -8968,9 +9439,9 @@ new_pointer_type: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.138 -.L.else.138: -.L.end.138: + jmp .L.end.143 +.L.else.143: +.L.end.143: leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -9020,13 +9491,13 @@ new_builtin_type: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.139 + jne .L.else.144 .data -.L.str.112: +.L.str.120: .byte 109 .byte 101 .byte 109 @@ -9054,7 +9525,7 @@ new_builtin_type: .byte 10 .byte 0 .text - leaq .L.str.112(%rip), %rax + leaq .L.str.120(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -9068,9 +9539,9 @@ new_builtin_type: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.139 -.L.else.139: -.L.end.139: + jmp .L.end.144 +.L.else.144: +.L.end.144: leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -9126,10 +9597,10 @@ get_user_defined_type: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.140: +.L.while.start.145: leaq 16(%rbp), %rax movq (%rax), %rax - addq $32, %rax + addq $40, %rax movq (%rax), %rax addq $8, %rax movslq (%rax), %rax @@ -9137,11 +9608,11 @@ get_user_defined_type: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.140 + jne .L.while.end.145 leaq -8(%rbp), %rax push %rax leaq -12(%rbp), %rax @@ -9149,7 +9620,7 @@ get_user_defined_type: push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $32, %rax + addq $40, %rax movq (%rax), %rax push %rax leaq vec_get(%rip), %rax @@ -9172,16 +9643,16 @@ get_user_defined_type: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.141 + jne .L.else.146 leaq -8(%rbp), %rax movq (%rax), %rax leave ret - jmp .L.end.141 -.L.else.141: -.L.end.141: + jmp .L.end.146 +.L.else.146: +.L.end.146: movq $1, %rax push %rax leaq -12(%rbp), %rax @@ -9191,13 +9662,13 @@ get_user_defined_type: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.140 -.L.while.end.140: + subq %rdi, %rax + jmp .L.while.start.145 +.L.while.end.145: movq $0, %rax leave ret @@ -9264,11 +9735,11 @@ parse_unary: movq %rsp, %rbp subq $112, %rsp .data -.L.str.113: +.L.str.121: .byte 42 .byte 0 .text - leaq .L.str.113(%rip), %rax + leaq .L.str.121(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9282,9 +9753,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.142 + jne .L.else.147 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -9295,15 +9766,15 @@ parse_unary: addq $8, %rsp leave ret - jmp .L.end.142 -.L.else.142: -.L.end.142: + jmp .L.end.147 +.L.else.147: +.L.end.147: .data -.L.str.114: +.L.str.122: .byte 38 .byte 0 .text - leaq .L.str.114(%rip), %rax + leaq .L.str.122(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9317,9 +9788,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.143 + jne .L.else.148 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -9330,15 +9801,15 @@ parse_unary: addq $8, %rsp leave ret - jmp .L.end.143 -.L.else.143: -.L.end.143: + jmp .L.end.148 +.L.else.148: +.L.end.148: .data -.L.str.115: +.L.str.123: .byte 33 .byte 0 .text - leaq .L.str.115(%rip), %rax + leaq .L.str.123(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9352,9 +9823,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.144 + jne .L.else.149 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -9365,9 +9836,9 @@ parse_unary: addq $8, %rsp leave ret - jmp .L.end.144 -.L.else.144: -.L.end.144: + jmp .L.end.149 +.L.else.149: +.L.end.149: leaq -100(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -9380,16 +9851,16 @@ parse_unary: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.145: +.L.while.start.150: movq $1, %rax cmpq $1, %rax - jne .L.while.end.145 + jne .L.while.end.150 .data -.L.str.116: +.L.str.124: .byte 40 .byte 0 .text - leaq .L.str.116(%rip), %rax + leaq .L.str.124(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9403,9 +9874,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.146 + jne .L.else.151 leaq -92(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -9415,11 +9886,11 @@ parse_unary: pop %rdi movq %rax, (%rdi) .data -.L.str.117: +.L.str.125: .byte 40 .byte 0 .text - leaq .L.str.117(%rip), %rax + leaq .L.str.125(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9444,18 +9915,18 @@ parse_unary: push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.147 + jne .L.else.152 .data -.L.str.118: +.L.str.126: .byte 99 .byte 97 .byte 110 @@ -9498,7 +9969,7 @@ parse_unary: .byte 10 .byte 0 .text - leaq .L.str.118(%rip), %rax + leaq .L.str.126(%rip), %rax push %rax leaq -92(%rbp), %rax movq (%rax), %rax @@ -9508,9 +9979,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.147 -.L.else.147: -.L.end.147: + jmp .L.end.152 +.L.else.152: +.L.end.152: leaq -84(%rbp), %rax push %rax movq $25, %rax @@ -9532,7 +10003,7 @@ parse_unary: movq %rax, (%rdi) leaq -84(%rbp), %rax movq (%rax), %rax - addq $128, %rax + addq $136, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9553,11 +10024,11 @@ parse_unary: pop %rdi movq %rax, (%rdi) .data -.L.str.119: +.L.str.127: .byte 41 .byte 0 .text - leaq .L.str.119(%rip), %rax + leaq .L.str.127(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9569,15 +10040,15 @@ parse_unary: addq $16, %rsp leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $40, %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.148 + jne .L.else.153 leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq params_length_without_argv_argc(%rip), %rax @@ -9588,18 +10059,18 @@ parse_unary: push %rax leaq -84(%rbp), %rax movq (%rax), %rax - addq $128, %rax + addq $136, %rax movq (%rax), %rax addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.149 + jne .L.else.154 .data -.L.str.120: +.L.str.128: .byte 84 .byte 104 .byte 101 @@ -9664,7 +10135,7 @@ parse_unary: .byte 110 .byte 0 .text - leaq .L.str.120(%rip), %rax + leaq .L.str.128(%rip), %rax push %rax leaq -92(%rbp), %rax movq (%rax), %rax @@ -9674,14 +10145,14 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.149 -.L.else.149: -.L.end.149: - jmp .L.end.148 -.L.else.148: + jmp .L.end.154 +.L.else.154: +.L.end.154: + jmp .L.end.153 +.L.else.153: leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $32, %rax movq (%rax), %rax @@ -9690,18 +10161,18 @@ parse_unary: push %rax leaq -84(%rbp), %rax movq (%rax), %rax - addq $128, %rax + addq $136, %rax movq (%rax), %rax addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.150 + jne .L.else.155 .data -.L.str.121: +.L.str.129: .byte 84 .byte 104 .byte 101 @@ -9766,7 +10237,7 @@ parse_unary: .byte 110 .byte 0 .text - leaq .L.str.121(%rip), %rax + leaq .L.str.129(%rip), %rax push %rax leaq -92(%rbp), %rax movq (%rax), %rax @@ -9776,10 +10247,10 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.150 -.L.else.150: -.L.end.150: -.L.end.148: + jmp .L.end.155 +.L.else.155: +.L.end.155: +.L.end.153: leaq -100(%rbp), %rax push %rax leaq -84(%rbp), %rax @@ -9787,9 +10258,9 @@ parse_unary: pop %rdi movq %rax, (%rdi) jmp .L.parse_unary.continue - jmp .L.end.146 -.L.else.146: -.L.end.146: + jmp .L.end.151 +.L.else.151: +.L.end.151: leaq -68(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -9799,12 +10270,12 @@ parse_unary: pop %rdi movq %rax, (%rdi) .data -.L.str.122: +.L.str.130: .byte 43 .byte 43 .byte 0 .text - leaq .L.str.122(%rip), %rax + leaq .L.str.130(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9818,9 +10289,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.151 + jne .L.else.156 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -9879,16 +10350,16 @@ parse_unary: pop %rdi movq %rax, (%rdi) jmp .L.parse_unary.continue - jmp .L.end.151 -.L.else.151: -.L.end.151: + jmp .L.end.156 +.L.else.156: +.L.end.156: .data -.L.str.123: +.L.str.131: .byte 45 .byte 45 .byte 0 .text - leaq .L.str.123(%rip), %rax + leaq .L.str.131(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9902,9 +10373,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.152 + jne .L.else.157 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -9963,15 +10434,15 @@ parse_unary: pop %rdi movq %rax, (%rdi) jmp .L.parse_unary.continue - jmp .L.end.152 -.L.else.152: -.L.end.152: + jmp .L.end.157 +.L.else.157: +.L.end.157: .data -.L.str.124: +.L.str.132: .byte 91 .byte 0 .text - leaq .L.str.124(%rip), %rax + leaq .L.str.132(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -9985,9 +10456,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.153 + jne .L.else.158 leaq -100(%rbp), %rax movq (%rax), %rax push %rax @@ -10020,11 +10491,11 @@ parse_unary: pop %rdi movq %rax, (%rdi) .data -.L.str.125: +.L.str.133: .byte 93 .byte 0 .text - leaq .L.str.125(%rip), %rax + leaq .L.str.133(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -10038,39 +10509,39 @@ parse_unary: push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.155 + je .L.false.160 movq $13, %rax push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.155 + je .L.false.160 movq $1, %rax - jmp .L.end.155 -.L.false.155: + jmp .L.end.160 +.L.false.160: movq $0, %rax -.L.end.155: +.L.end.160: cmpq $1, %rax - jne .L.else.154 + jne .L.else.159 .data -.L.str.126: +.L.str.134: .byte 96 .byte 91 .byte 93 @@ -10113,7 +10584,7 @@ parse_unary: .byte 46 .byte 0 .text - leaq .L.str.126(%rip), %rax + leaq .L.str.134(%rip), %rax push %rax leaq -68(%rbp), %rax movq (%rax), %rax @@ -10123,9 +10594,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.154 -.L.else.154: -.L.end.154: + jmp .L.end.159 +.L.else.159: +.L.end.159: leaq -52(%rbp), %rax push %rax movq $13, %rax @@ -10139,11 +10610,11 @@ parse_unary: movq %rax, (%rdi) leaq -52(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $48, %rax movq (%rax), %rax @@ -10153,11 +10624,11 @@ parse_unary: movl %eax, (%rdi) leaq -52(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) @@ -10214,15 +10685,15 @@ parse_unary: pop %rdi movq %rax, (%rdi) jmp .L.parse_unary.continue - jmp .L.end.153 -.L.else.153: -.L.end.153: + jmp .L.end.158 +.L.else.158: +.L.end.158: .data -.L.str.127: +.L.str.135: .byte 46 .byte 0 .text - leaq .L.str.127(%rip), %rax + leaq .L.str.135(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -10236,9 +10707,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.156 + jne .L.else.161 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -10288,34 +10759,34 @@ parse_unary: push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.157 + jne .L.else.162 movq $5, %rax push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $48, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.158 + jne .L.else.163 .data -.L.str.128: +.L.str.136: .byte 99 .byte 97 .byte 110 @@ -10353,7 +10824,7 @@ parse_unary: .byte 101 .byte 0 .text - leaq .L.str.128(%rip), %rax + leaq .L.str.136(%rip), %rax push %rax leaq -68(%rbp), %rax movq (%rax), %rax @@ -10363,9 +10834,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.158 -.L.else.158: -.L.end.158: + jmp .L.end.163 +.L.else.163: +.L.end.163: leaq -20(%rbp), %rax push %rax leaq -36(%rbp), %rax @@ -10373,7 +10844,7 @@ parse_unary: push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $48, %rax movq (%rax), %rax @@ -10392,13 +10863,13 @@ parse_unary: leaq -20(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.159 + jne .L.else.164 .data -.L.str.129: +.L.str.137: .byte 109 .byte 101 .byte 109 @@ -10422,14 +10893,14 @@ parse_unary: .byte 100 .byte 0 .text - leaq .L.str.129(%rip), %rax + leaq .L.str.137(%rip), %rax push %rax leaq -28(%rbp), %rax movq (%rax), %rax push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $48, %rax movq (%rax), %rax @@ -10441,14 +10912,14 @@ parse_unary: movq $0, %rax callq *%r10 addq $24, %rsp - jmp .L.end.159 -.L.else.159: -.L.end.159: + jmp .L.end.164 +.L.else.164: +.L.end.164: leaq -100(%rbp), %rax push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $48, %rax movq (%rax), %rax @@ -10467,24 +10938,24 @@ parse_unary: addq $32, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.157 -.L.else.157: + jmp .L.end.162 +.L.else.162: movq $5, %rax push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.160 + jne .L.else.165 .data -.L.str.130: +.L.str.138: .byte 99 .byte 97 .byte 110 @@ -10522,7 +10993,7 @@ parse_unary: .byte 101 .byte 0 .text - leaq .L.str.130(%rip), %rax + leaq .L.str.138(%rip), %rax push %rax leaq -68(%rbp), %rax movq (%rax), %rax @@ -10532,9 +11003,9 @@ parse_unary: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.160 -.L.else.160: -.L.end.160: + jmp .L.end.165 +.L.else.165: +.L.end.165: leaq -20(%rbp), %rax push %rax leaq -36(%rbp), %rax @@ -10542,7 +11013,7 @@ parse_unary: push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax @@ -10559,13 +11030,13 @@ parse_unary: leaq -20(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.161 + jne .L.else.166 .data -.L.str.131: +.L.str.139: .byte 109 .byte 101 .byte 109 @@ -10589,14 +11060,14 @@ parse_unary: .byte 100 .byte 0 .text - leaq .L.str.131(%rip), %rax + leaq .L.str.139(%rip), %rax push %rax leaq -28(%rbp), %rax movq (%rax), %rax push %rax leaq -100(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax @@ -10606,10 +11077,10 @@ parse_unary: movq $0, %rax callq *%r10 addq $24, %rsp - jmp .L.end.161 -.L.else.161: -.L.end.161: -.L.end.157: + jmp .L.end.166 +.L.else.166: +.L.end.166: +.L.end.162: leaq -12(%rbp), %rax push %rax leaq -20(%rbp), %rax @@ -10647,13 +11118,13 @@ parse_unary: pop %rdi movq %rax, (%rdi) jmp .L.parse_unary.continue - jmp .L.end.156 -.L.else.156: -.L.end.156: + jmp .L.end.161 +.L.else.161: +.L.end.161: jmp .L.parse_unary.break .L.parse_unary.continue: - jmp .L.while.start.145 -.L.while.end.145: + jmp .L.while.start.150 +.L.while.end.150: .L.parse_unary.break: leaq -100(%rbp), %rax movq (%rax), %rax @@ -10671,30 +11142,30 @@ cmp_type: leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.163 + jne .L.true.168 movq $0, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.163 + jne .L.true.168 mov $0, %rax - jmp .L.end.163 -.L.true.163: + jmp .L.end.168 +.L.true.168: mov $1, %rax -.L.end.163: +.L.end.168: cmpq $1, %rax - jne .L.else.162 + jne .L.else.167 .data -.L.str.132: +.L.str.140: .byte 105 .byte 110 .byte 116 @@ -10736,7 +11207,7 @@ cmp_type: .byte 10 .byte 0 .text - leaq .L.str.132(%rip), %rax + leaq .L.str.140(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -10750,9 +11221,9 @@ cmp_type: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.162 -.L.else.162: -.L.end.162: + jmp .L.end.167 +.L.else.167: +.L.end.167: leaq 24(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -10763,17 +11234,17 @@ cmp_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.164 + jne .L.else.169 movq $0, %rax leave ret - jmp .L.end.164 -.L.else.164: -.L.end.164: + jmp .L.end.169 +.L.else.169: +.L.end.169: movq $6, %rax push %rax leaq 16(%rbp), %rax @@ -10781,11 +11252,11 @@ cmp_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.165 + jne .L.else.170 leaq 24(%rbp), %rax movq (%rax), %rax addq $24, %rax @@ -10801,9 +11272,9 @@ cmp_type: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.167 + je .L.false.172 leaq 24(%rbp), %rax movq (%rax), %rax addq $32, %rax @@ -10819,16 +11290,16 @@ cmp_type: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.167 + je .L.false.172 movq $1, %rax - jmp .L.end.167 -.L.false.167: + jmp .L.end.172 +.L.false.172: movq $0, %rax -.L.end.167: +.L.end.172: cmpq $0, %rax - je .L.false.166 + je .L.false.171 leaq 24(%rbp), %rax movq (%rax), %rax addq $40, %rax @@ -10839,21 +11310,21 @@ cmp_type: addq $40, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.166 + je .L.false.171 movq $1, %rax - jmp .L.end.166 -.L.false.166: + jmp .L.end.171 +.L.false.171: movq $0, %rax -.L.end.166: +.L.end.171: leave ret - jmp .L.end.165 -.L.else.165: -.L.end.165: + jmp .L.end.170 +.L.else.170: +.L.end.170: movq $7, %rax push %rax leaq 16(%rbp), %rax @@ -10861,11 +11332,11 @@ cmp_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.168 + jne .L.else.173 leaq 24(%rbp), %rax movq (%rax), %rax addq $48, %rax @@ -10881,12 +11352,12 @@ cmp_type: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax leave ret - jmp .L.end.168 -.L.else.168: -.L.end.168: + jmp .L.end.173 +.L.else.173: +.L.end.173: leaq 24(%rbp), %rax movq (%rax), %rax addq $4, %rax @@ -10897,11 +11368,11 @@ cmp_type: addq $4, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.170 + je .L.false.175 leaq 24(%rbp), %rax movq (%rax), %rax addq $60, %rax @@ -10912,18 +11383,18 @@ cmp_type: addq $60, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.170 + je .L.false.175 movq $1, %rax - jmp .L.end.170 -.L.false.170: + jmp .L.end.175 +.L.false.175: movq $0, %rax -.L.end.170: +.L.end.175: cmpq $0, %rax - je .L.false.169 + je .L.false.174 leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -10931,7 +11402,86 @@ cmp_type: push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $8, %rax + addq $8, %rax + movq (%rax), %rax + push %rax + leaq strcmp(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + movzx %al, %rax + cmpq $0, %rax + je .L.false.174 + movq $1, %rax + jmp .L.end.174 +.L.false.174: + movq $0, %rax +.L.end.174: + leave + ret + leave + ret +.global parse_stmt +parse_stmt: + push %rbp + movq %rsp, %rbp + subq $0, %rsp +.data +.L.str.141: + .byte 115 + .byte 119 + .byte 105 + .byte 116 + .byte 99 + .byte 104 + .byte 0 +.text + leaq .L.str.141(%rip), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movq (%rax), %rax + addq $32, %rax + movq (%rax), %rax + push %rax + leaq strcmp(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $16, %rsp + movzx %al, %rax + cmpq $1, %rax + jne .L.else.176 + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq parse_switch(%rip), %rax + movq %rax, %r10 + movq $0, %rax + callq *%r10 + addq $8, %rsp + leave + ret + jmp .L.end.176 +.L.else.176: +.L.end.176: +.data +.L.str.142: + .byte 99 + .byte 97 + .byte 115 + .byte 101 + .byte 0 +.text + leaq .L.str.142(%rip), %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $0, %rax + movq (%rax), %rax + addq $32, %rax movq (%rax), %rax push %rax leaq strcmp(%rip), %rax @@ -10939,31 +11489,30 @@ cmp_type: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax - cmpq $0, %rax - je .L.false.169 - movq $1, %rax - jmp .L.end.169 -.L.false.169: + movzx %al, %rax + cmpq $1, %rax + jne .L.else.177 + leaq 16(%rbp), %rax + movq (%rax), %rax + push %rax + leaq parse_case(%rip), %rax + movq %rax, %r10 movq $0, %rax -.L.end.169: - leave - ret + callq *%r10 + addq $8, %rsp leave ret -.global parse_stmt -parse_stmt: - push %rbp - movq %rsp, %rbp - subq $0, %rsp + jmp .L.end.177 +.L.else.177: +.L.end.177: .data -.L.str.133: +.L.str.143: .byte 108 .byte 101 .byte 116 .byte 0 .text - leaq .L.str.133(%rip), %rax + leaq .L.str.143(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -10977,9 +11526,9 @@ parse_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.171 + jne .L.else.178 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -10990,18 +11539,18 @@ parse_stmt: addq $8, %rsp leave ret - jmp .L.end.171 -.L.else.171: -.L.end.171: + jmp .L.end.178 +.L.else.178: +.L.end.178: .data -.L.str.134: +.L.str.144: .byte 103 .byte 111 .byte 116 .byte 111 .byte 0 .text - leaq .L.str.134(%rip), %rax + leaq .L.str.144(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11015,9 +11564,9 @@ parse_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.172 + jne .L.else.179 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11028,16 +11577,16 @@ parse_stmt: addq $8, %rsp leave ret - jmp .L.end.172 -.L.else.172: -.L.end.172: + jmp .L.end.179 +.L.else.179: +.L.end.179: .data -.L.str.135: +.L.str.145: .byte 105 .byte 102 .byte 0 .text - leaq .L.str.135(%rip), %rax + leaq .L.str.145(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11051,9 +11600,9 @@ parse_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.173 + jne .L.else.180 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11064,17 +11613,17 @@ parse_stmt: addq $8, %rsp leave ret - jmp .L.end.173 -.L.else.173: -.L.end.173: + jmp .L.end.180 +.L.else.180: +.L.end.180: .data -.L.str.136: +.L.str.146: .byte 102 .byte 111 .byte 114 .byte 0 .text - leaq .L.str.136(%rip), %rax + leaq .L.str.146(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11088,9 +11637,9 @@ parse_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.174 + jne .L.else.181 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11101,11 +11650,11 @@ parse_stmt: addq $8, %rsp leave ret - jmp .L.end.174 -.L.else.174: -.L.end.174: + jmp .L.end.181 +.L.else.181: +.L.end.181: .data -.L.str.137: +.L.str.147: .byte 119 .byte 104 .byte 105 @@ -11113,7 +11662,7 @@ parse_stmt: .byte 101 .byte 0 .text - leaq .L.str.137(%rip), %rax + leaq .L.str.147(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11127,9 +11676,9 @@ parse_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.175 + jne .L.else.182 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11140,11 +11689,11 @@ parse_stmt: addq $8, %rsp leave ret - jmp .L.end.175 -.L.else.175: -.L.end.175: + jmp .L.end.182 +.L.else.182: +.L.end.182: .data -.L.str.138: +.L.str.148: .byte 114 .byte 101 .byte 116 @@ -11153,7 +11702,7 @@ parse_stmt: .byte 110 .byte 0 .text - leaq .L.str.138(%rip), %rax + leaq .L.str.148(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11167,9 +11716,9 @@ parse_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.176 + jne .L.else.183 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11180,15 +11729,15 @@ parse_stmt: addq $8, %rsp leave ret - jmp .L.end.176 -.L.else.176: -.L.end.176: + jmp .L.end.183 +.L.else.183: +.L.end.183: .data -.L.str.139: +.L.str.149: .byte 123 .byte 0 .text - leaq .L.str.139(%rip), %rax + leaq .L.str.149(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11202,9 +11751,9 @@ parse_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.177 + jne .L.else.184 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11215,9 +11764,9 @@ parse_stmt: addq $8, %rsp leave ret - jmp .L.end.177 -.L.else.177: -.L.end.177: + jmp .L.end.184 +.L.else.184: +.L.end.184: movq $5, %rax push %rax leaq 16(%rbp), %rax @@ -11227,17 +11776,17 @@ parse_stmt: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.178 + jne .L.else.185 .data -.L.str.140: +.L.str.150: .byte 58 .byte 0 .text - leaq .L.str.140(%rip), %rax + leaq .L.str.150(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11253,9 +11802,9 @@ parse_stmt: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.179 + jne .L.else.186 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11266,12 +11815,12 @@ parse_stmt: addq $8, %rsp leave ret - jmp .L.end.179 -.L.else.179: -.L.end.179: - jmp .L.end.178 -.L.else.178: -.L.end.178: + jmp .L.end.186 +.L.else.186: +.L.end.186: + jmp .L.end.185 +.L.else.185: +.L.end.185: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11302,11 +11851,11 @@ parse_expr: pop %rdi movq %rax, (%rdi) .data -.L.str.141: +.L.str.151: .byte 61 .byte 0 .text - leaq .L.str.141(%rip), %rax + leaq .L.str.151(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11320,9 +11869,9 @@ parse_expr: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.180 + jne .L.else.187 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -11354,9 +11903,9 @@ parse_expr: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.180 -.L.else.180: -.L.end.180: + jmp .L.end.187 +.L.else.187: +.L.end.187: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -11395,13 +11944,13 @@ parse_ty: callq *%r10 addq $8, %rsp .data -.L.str.142: +.L.str.152: .byte 105 .byte 54 .byte 52 .byte 0 .text - leaq .L.str.142(%rip), %rax + leaq .L.str.152(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11411,27 +11960,27 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.181 + jne .L.else.188 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.181 -.L.else.181: + jmp .L.end.188 +.L.else.188: .data -.L.str.143: +.L.str.153: .byte 105 .byte 51 .byte 50 .byte 0 .text - leaq .L.str.143(%rip), %rax + leaq .L.str.153(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11441,27 +11990,27 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.182 + jne .L.else.189 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.182 -.L.else.182: + jmp .L.end.189 +.L.else.189: .data -.L.str.144: +.L.str.154: .byte 105 .byte 49 .byte 54 .byte 0 .text - leaq .L.str.144(%rip), %rax + leaq .L.str.154(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11471,26 +12020,26 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.183 + jne .L.else.190 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $48, %rax + addq $56, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.183 -.L.else.183: + jmp .L.end.190 +.L.else.190: .data -.L.str.145: +.L.str.155: .byte 105 .byte 56 .byte 0 .text - leaq .L.str.145(%rip), %rax + leaq .L.str.155(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11500,27 +12049,27 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.184 + jne .L.else.191 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $40, %rax + addq $48, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.184 -.L.else.184: + jmp .L.end.191 +.L.else.191: .data -.L.str.146: +.L.str.156: .byte 117 .byte 54 .byte 52 .byte 0 .text - leaq .L.str.146(%rip), %rax + leaq .L.str.156(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11530,27 +12079,27 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.185 + jne .L.else.192 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.185 -.L.else.185: + jmp .L.end.192 +.L.else.192: .data -.L.str.147: +.L.str.157: .byte 117 .byte 51 .byte 50 .byte 0 .text - leaq .L.str.147(%rip), %rax + leaq .L.str.157(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11560,27 +12109,27 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.186 + jne .L.else.193 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $96, %rax + addq $104, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.186 -.L.else.186: + jmp .L.end.193 +.L.else.193: .data -.L.str.148: +.L.str.158: .byte 117 .byte 49 .byte 54 .byte 0 .text - leaq .L.str.148(%rip), %rax + leaq .L.str.158(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11590,26 +12139,26 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.187 + jne .L.else.194 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $88, %rax + addq $96, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.187 -.L.else.187: + jmp .L.end.194 +.L.else.194: .data -.L.str.149: +.L.str.159: .byte 117 .byte 56 .byte 0 .text - leaq .L.str.149(%rip), %rax + leaq .L.str.159(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11619,26 +12168,26 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.188 + jne .L.else.195 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.188 -.L.else.188: + jmp .L.end.195 +.L.else.195: .data -.L.str.150: +.L.str.160: .byte 117 .byte 48 .byte 0 .text - leaq .L.str.150(%rip), %rax + leaq .L.str.160(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11648,28 +12197,28 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.189 + jne .L.else.196 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $72, %rax + addq $80, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.189 -.L.else.189: + jmp .L.end.196 +.L.else.196: .data -.L.str.151: +.L.str.161: .byte 98 .byte 111 .byte 111 .byte 108 .byte 0 .text - leaq .L.str.151(%rip), %rax + leaq .L.str.161(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11679,25 +12228,25 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.190 + jne .L.else.197 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $112, %rax + addq $120, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.190 -.L.else.190: + jmp .L.end.197 +.L.else.197: .data -.L.str.152: +.L.str.162: .byte 42 .byte 0 .text - leaq .L.str.152(%rip), %rax + leaq .L.str.162(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11707,9 +12256,9 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.191 + jne .L.else.198 leaq -24(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -11728,17 +12277,17 @@ parse_ty: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.191 -.L.else.191: + jmp .L.end.198 +.L.else.198: .data -.L.str.153: +.L.str.163: .byte 102 .byte 117 .byte 110 .byte 99 .byte 0 .text - leaq .L.str.153(%rip), %rax + leaq .L.str.163(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11748,15 +12297,15 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.192 + jne .L.else.199 .data -.L.str.154: +.L.str.164: .byte 40 .byte 0 .text - leaq .L.str.154(%rip), %rax + leaq .L.str.164(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11790,15 +12339,15 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax pop %rdi movl %eax, (%rdi) .data -.L.str.155: +.L.str.165: .byte 41 .byte 0 .text - leaq .L.str.155(%rip), %rax + leaq .L.str.165(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11832,14 +12381,14 @@ parse_ty: addq $24, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.192 -.L.else.192: + jmp .L.end.199 +.L.else.199: .data -.L.str.156: +.L.str.166: .byte 91 .byte 0 .text - leaq .L.str.156(%rip), %rax + leaq .L.str.166(%rip), %rax push %rax leaq -40(%rbp), %rax movq (%rax), %rax @@ -11849,9 +12398,9 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.193 + jne .L.else.200 movq $0, %rax push %rax leaq 16(%rbp), %rax @@ -11861,13 +12410,13 @@ parse_ty: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.194 + jne .L.else.201 .data -.L.str.157: +.L.str.167: .byte 101 .byte 120 .byte 112 @@ -11885,7 +12434,7 @@ parse_ty: .byte 114 .byte 0 .text - leaq .L.str.157(%rip), %rax + leaq .L.str.167(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11897,9 +12446,9 @@ parse_ty: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.194 -.L.else.194: -.L.end.194: + jmp .L.end.201 +.L.else.201: +.L.end.201: leaq -4(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -11925,11 +12474,11 @@ parse_ty: callq *%r10 addq $8, %rsp .data -.L.str.158: +.L.str.168: .byte 93 .byte 0 .text - leaq .L.str.158(%rip), %rax + leaq .L.str.168(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -11960,8 +12509,8 @@ parse_ty: addq $16, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.193 -.L.else.193: + jmp .L.end.200 +.L.else.200: leaq -24(%rbp), %rax push %rax leaq -40(%rbp), %rax @@ -11982,13 +12531,13 @@ parse_ty: leaq -24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.195 + jne .L.else.202 .data -.L.str.159: +.L.str.169: .byte 117 .byte 110 .byte 107 @@ -12008,14 +12557,14 @@ parse_ty: .byte 100 .byte 0 .text - leaq .L.str.159(%rip), %rax + leaq .L.str.169(%rip), %rax push %rax leaq -32(%rbp), %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $32, %rax + addq $40, %rax movq (%rax), %rax push %rax leaq unkown_type_error(%rip), %rax @@ -12023,22 +12572,22 @@ parse_ty: movq $0, %rax callq *%r10 addq $24, %rsp - jmp .L.end.195 -.L.else.195: + jmp .L.end.202 +.L.else.202: +.L.end.202: +.L.end.200: +.L.end.199: +.L.end.198: +.L.end.197: +.L.end.196: .L.end.195: +.L.end.194: .L.end.193: .L.end.192: .L.end.191: .L.end.190: .L.end.189: .L.end.188: -.L.end.187: -.L.end.186: -.L.end.185: -.L.end.184: -.L.end.183: -.L.end.182: -.L.end.181: leaq -24(%rbp), %rax movq (%rax), %rax leave @@ -12055,35 +12604,35 @@ add_type: leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.197 + jne .L.true.204 movq $0, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.197 + jne .L.true.204 mov $0, %rax - jmp .L.end.197 -.L.true.197: + jmp .L.end.204 +.L.true.204: mov $1, %rax -.L.end.197: +.L.end.204: cmpq $1, %rax - jne .L.else.196 + jne .L.else.203 leave ret - jmp .L.end.196 -.L.else.196: -.L.end.196: + jmp .L.end.203 +.L.else.203: +.L.end.203: leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -12112,7 +12661,7 @@ add_type: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $48, %rax + addq $56, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -12125,7 +12674,7 @@ add_type: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -12138,7 +12687,7 @@ add_type: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -12190,7 +12739,7 @@ add_type: addq $16, %rsp leaq 24(%rbp), %rax movq (%rax), %rax - addq $128, %rax + addq $136, %rax movq (%rax), %rax push %rax leaq 16(%rbp), %rax @@ -12208,18 +12757,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.198 + jne .L.else.205 leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $40, %rax + addq $48, %rax movq (%rax), %rax push %rax leaq new_pointer_type(%rip), %rax @@ -12231,9 +12780,9 @@ add_type: movq %rax, (%rdi) leave ret - jmp .L.end.198 -.L.else.198: -.L.end.198: + jmp .L.end.205 +.L.else.205: +.L.end.205: movq $25, %rax push %rax leaq 24(%rbp), %rax @@ -12241,20 +12790,20 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.199 + jne .L.else.206 leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax @@ -12262,9 +12811,9 @@ add_type: movq %rax, (%rdi) leave ret - jmp .L.end.199 -.L.else.199: -.L.end.199: + jmp .L.end.206 +.L.else.206: +.L.end.206: movq $0, %rax push %rax leaq 24(%rbp), %rax @@ -12272,11 +12821,11 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.208 + jne .L.true.215 movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -12284,18 +12833,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.208 + jne .L.true.215 mov $0, %rax - jmp .L.end.208 -.L.true.208: + jmp .L.end.215 +.L.true.215: mov $1, %rax -.L.end.208: +.L.end.215: cmpq $0, %rax - jne .L.true.207 + jne .L.true.214 movq $2, %rax push %rax leaq 24(%rbp), %rax @@ -12303,18 +12852,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.207 + jne .L.true.214 mov $0, %rax - jmp .L.end.207 -.L.true.207: + jmp .L.end.214 +.L.true.214: mov $1, %rax -.L.end.207: +.L.end.214: cmpq $0, %rax - jne .L.true.206 + jne .L.true.213 movq $3, %rax push %rax leaq 24(%rbp), %rax @@ -12322,18 +12871,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.206 + jne .L.true.213 mov $0, %rax - jmp .L.end.206 -.L.true.206: + jmp .L.end.213 +.L.true.213: mov $1, %rax -.L.end.206: +.L.end.213: cmpq $0, %rax - jne .L.true.205 + jne .L.true.212 movq $4, %rax push %rax leaq 24(%rbp), %rax @@ -12341,18 +12890,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.205 + jne .L.true.212 mov $0, %rax - jmp .L.end.205 -.L.true.205: + jmp .L.end.212 +.L.true.212: mov $1, %rax -.L.end.205: +.L.end.212: cmpq $0, %rax - jne .L.true.204 + jne .L.true.211 movq $17, %rax push %rax leaq 24(%rbp), %rax @@ -12360,18 +12909,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.204 + jne .L.true.211 mov $0, %rax - jmp .L.end.204 -.L.true.204: + jmp .L.end.211 +.L.true.211: mov $1, %rax -.L.end.204: +.L.end.211: cmpq $0, %rax - jne .L.true.203 + jne .L.true.210 movq $30, %rax push %rax leaq 24(%rbp), %rax @@ -12379,18 +12928,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.203 + jne .L.true.210 mov $0, %rax - jmp .L.end.203 -.L.true.203: + jmp .L.end.210 +.L.true.210: mov $1, %rax -.L.end.203: +.L.end.210: cmpq $0, %rax - jne .L.true.202 + jne .L.true.209 movq $31, %rax push %rax leaq 24(%rbp), %rax @@ -12398,18 +12947,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.202 + jne .L.true.209 mov $0, %rax - jmp .L.end.202 -.L.true.202: + jmp .L.end.209 +.L.true.209: mov $1, %rax -.L.end.202: +.L.end.209: cmpq $0, %rax - jne .L.true.201 + jne .L.true.208 movq $32, %rax push %rax leaq 24(%rbp), %rax @@ -12417,35 +12966,35 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.201 + jne .L.true.208 mov $0, %rax - jmp .L.end.201 -.L.true.201: + jmp .L.end.208 +.L.true.208: mov $1, %rax -.L.end.201: +.L.end.208: cmpq $1, %rax - jne .L.else.200 + jne .L.else.207 leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) leave ret - jmp .L.end.200 -.L.else.200: -.L.end.200: + jmp .L.end.207 +.L.else.207: +.L.end.207: movq $5, %rax push %rax leaq 24(%rbp), %rax @@ -12453,11 +13002,11 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.220 + jne .L.true.227 movq $7, %rax push %rax leaq 24(%rbp), %rax @@ -12465,18 +13014,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.220 + jne .L.true.227 mov $0, %rax - jmp .L.end.220 -.L.true.220: + jmp .L.end.227 +.L.true.227: mov $1, %rax -.L.end.220: +.L.end.227: cmpq $0, %rax - jne .L.true.219 + jne .L.true.226 movq $6, %rax push %rax leaq 24(%rbp), %rax @@ -12484,18 +13033,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.219 + jne .L.true.226 mov $0, %rax - jmp .L.end.219 -.L.true.219: + jmp .L.end.226 +.L.true.226: mov $1, %rax -.L.end.219: +.L.end.226: cmpq $0, %rax - jne .L.true.218 + jne .L.true.225 movq $8, %rax push %rax leaq 24(%rbp), %rax @@ -12503,18 +13052,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.218 + jne .L.true.225 mov $0, %rax - jmp .L.end.218 -.L.true.218: + jmp .L.end.225 +.L.true.225: mov $1, %rax -.L.end.218: +.L.end.225: cmpq $0, %rax - jne .L.true.217 + jne .L.true.224 movq $9, %rax push %rax leaq 24(%rbp), %rax @@ -12522,18 +13071,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.217 + jne .L.true.224 mov $0, %rax - jmp .L.end.217 -.L.true.217: + jmp .L.end.224 +.L.true.224: mov $1, %rax -.L.end.217: +.L.end.224: cmpq $0, %rax - jne .L.true.216 + jne .L.true.223 movq $11, %rax push %rax leaq 24(%rbp), %rax @@ -12541,18 +13090,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.216 + jne .L.true.223 mov $0, %rax - jmp .L.end.216 -.L.true.216: + jmp .L.end.223 +.L.true.223: mov $1, %rax -.L.end.216: +.L.end.223: cmpq $0, %rax - jne .L.true.215 + jne .L.true.222 movq $10, %rax push %rax leaq 24(%rbp), %rax @@ -12560,18 +13109,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.215 + jne .L.true.222 mov $0, %rax - jmp .L.end.215 -.L.true.215: + jmp .L.end.222 +.L.true.222: mov $1, %rax -.L.end.215: +.L.end.222: cmpq $0, %rax - jne .L.true.214 + jne .L.true.221 movq $26, %rax push %rax leaq 24(%rbp), %rax @@ -12579,18 +13128,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.214 + jne .L.true.221 mov $0, %rax - jmp .L.end.214 -.L.true.214: + jmp .L.end.221 +.L.true.221: mov $1, %rax -.L.end.214: +.L.end.221: cmpq $0, %rax - jne .L.true.213 + jne .L.true.220 movq $27, %rax push %rax leaq 24(%rbp), %rax @@ -12598,18 +13147,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.213 + jne .L.true.220 mov $0, %rax - jmp .L.end.213 -.L.true.213: + jmp .L.end.220 +.L.true.220: mov $1, %rax -.L.end.213: +.L.end.220: cmpq $0, %rax - jne .L.true.212 + jne .L.true.219 movq $13, %rax push %rax leaq 24(%rbp), %rax @@ -12617,18 +13166,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.212 + jne .L.true.219 mov $0, %rax - jmp .L.end.212 -.L.true.212: + jmp .L.end.219 +.L.true.219: mov $1, %rax -.L.end.212: +.L.end.219: cmpq $0, %rax - jne .L.true.211 + jne .L.true.218 movq $33, %rax push %rax leaq 24(%rbp), %rax @@ -12636,18 +13185,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.211 + jne .L.true.218 mov $0, %rax - jmp .L.end.211 -.L.true.211: + jmp .L.end.218 +.L.true.218: mov $1, %rax -.L.end.211: +.L.end.218: cmpq $0, %rax - jne .L.true.210 + jne .L.true.217 movq $34, %rax push %rax leaq 24(%rbp), %rax @@ -12655,33 +13204,33 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.210 + jne .L.true.217 mov $0, %rax - jmp .L.end.210 -.L.true.210: + jmp .L.end.217 +.L.true.217: mov $1, %rax -.L.end.210: +.L.end.217: cmpq $1, %rax - jne .L.else.209 + jne .L.else.216 leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) leave ret - jmp .L.end.209 -.L.else.209: -.L.end.209: + jmp .L.end.216 +.L.else.216: +.L.end.216: movq $14, %rax push %rax leaq 24(%rbp), %rax @@ -12689,18 +13238,18 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.221 + jne .L.else.228 leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - addq $96, %rax + addq $104, %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax @@ -12708,9 +13257,9 @@ add_type: movq %rax, (%rdi) leave ret - jmp .L.end.221 -.L.else.221: -.L.end.221: + jmp .L.end.228 +.L.else.228: +.L.end.228: movq $19, %rax push %rax leaq 24(%rbp), %rax @@ -12718,36 +13267,36 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.222 + jne .L.else.229 movq $13, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.223 + jne .L.else.230 leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $48, %rax movq (%rax), %rax @@ -12759,17 +13308,17 @@ add_type: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.223 -.L.else.223: + jmp .L.end.230 +.L.else.230: leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax push %rax leaq new_pointer_type(%rip), %rax @@ -12779,12 +13328,12 @@ add_type: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.end.223: +.L.end.230: leave ret - jmp .L.end.222 -.L.else.222: -.L.end.222: + jmp .L.end.229 +.L.else.229: +.L.end.229: movq $20, %rax push %rax leaq 24(%rbp), %rax @@ -12792,20 +13341,20 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.224 + jne .L.else.231 leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax addq $48, %rax movq (%rax), %rax @@ -12813,9 +13362,9 @@ add_type: movq %rax, (%rdi) leave ret - jmp .L.end.224 -.L.else.224: -.L.end.224: + jmp .L.end.231 +.L.else.231: +.L.end.231: movq $22, %rax push %rax leaq 24(%rbp), %rax @@ -12823,28 +13372,28 @@ add_type: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.225 + jne .L.else.232 leaq 24(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) leave ret - jmp .L.end.225 -.L.else.225: -.L.end.225: + jmp .L.end.232 +.L.else.232: +.L.end.232: leave ret leave @@ -12854,7 +13403,7 @@ parse: push %rbp movq %rsp, %rbp subq $0, %rsp -.L.while.start.226: +.L.while.start.233: movq $5, %rax push %rax leaq 16(%rbp), %rax @@ -12864,20 +13413,20 @@ parse: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.226 + jne .L.while.end.233 .data -.L.str.160: +.L.str.170: .byte 102 .byte 117 .byte 110 .byte 99 .byte 0 .text - leaq .L.str.160(%rip), %rax + leaq .L.str.170(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -12891,9 +13440,9 @@ parse: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.227 + jne .L.else.234 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -12902,10 +13451,10 @@ parse: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.227 -.L.else.227: + jmp .L.end.234 +.L.else.234: .data -.L.str.161: +.L.str.171: .byte 115 .byte 116 .byte 114 @@ -12914,7 +13463,7 @@ parse: .byte 116 .byte 0 .text - leaq .L.str.161(%rip), %rax + leaq .L.str.171(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -12928,9 +13477,9 @@ parse: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.228 + jne .L.else.235 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -12939,10 +13488,10 @@ parse: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.228 -.L.else.228: + jmp .L.end.235 +.L.else.235: .data -.L.str.162: +.L.str.172: .byte 110 .byte 111 .byte 110 @@ -12992,7 +13541,7 @@ parse: .byte 121 .byte 0 .text - leaq .L.str.162(%rip), %rax + leaq .L.str.172(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -13004,10 +13553,10 @@ parse: movq $0, %rax callq *%r10 addq $16, %rsp -.L.end.228: -.L.end.227: - jmp .L.while.start.226 -.L.while.end.226: +.L.end.235: +.L.end.234: + jmp .L.while.start.233 +.L.while.end.233: leave ret .global new_parser @@ -13017,7 +13566,7 @@ new_parser: subq $16, %rsp leaq -8(%rbp), %rax push %rax - movq $120, %rax + movq $128, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -13031,13 +13580,13 @@ new_parser: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.229 + jne .L.else.236 .data -.L.str.163: +.L.str.173: .byte 109 .byte 101 .byte 109 @@ -13065,7 +13614,7 @@ new_parser: .byte 10 .byte 0 .text - leaq .L.str.163(%rip), %rax + leaq .L.str.173(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -13079,9 +13628,9 @@ new_parser: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.229 -.L.else.229: -.L.end.229: + jmp .L.end.236 +.L.else.236: +.L.end.236: leaq -8(%rbp), %rax movq (%rax), %rax addq $0, %rax @@ -13099,7 +13648,7 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $32, %rax + addq $40, %rax push %rax movq $4, %rax push %rax @@ -13112,18 +13661,18 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $64, %rax + addq $72, %rax push %rax movq $0, %rax push %rax .data -.L.str.164: +.L.str.174: .byte 105 .byte 54 .byte 52 .byte 0 .text - leaq .L.str.164(%rip), %rax + leaq .L.str.174(%rip), %rax push %rax movq $8, %rax push %rax @@ -13138,18 +13687,18 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $56, %rax + addq $64, %rax push %rax movq $0, %rax push %rax .data -.L.str.165: +.L.str.175: .byte 105 .byte 51 .byte 50 .byte 0 .text - leaq .L.str.165(%rip), %rax + leaq .L.str.175(%rip), %rax push %rax movq $4, %rax push %rax @@ -13164,18 +13713,18 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $48, %rax + addq $56, %rax push %rax movq $0, %rax push %rax .data -.L.str.166: +.L.str.176: .byte 105 .byte 49 .byte 54 .byte 0 .text - leaq .L.str.166(%rip), %rax + leaq .L.str.176(%rip), %rax push %rax movq $2, %rax push %rax @@ -13190,17 +13739,17 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $40, %rax + addq $48, %rax push %rax movq $0, %rax push %rax .data -.L.str.167: +.L.str.177: .byte 105 .byte 56 .byte 0 .text - leaq .L.str.167(%rip), %rax + leaq .L.str.177(%rip), %rax push %rax movq $1, %rax push %rax @@ -13215,19 +13764,19 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $112, %rax + addq $120, %rax push %rax movq $0, %rax push %rax .data -.L.str.168: +.L.str.178: .byte 98 .byte 111 .byte 111 .byte 108 .byte 0 .text - leaq .L.str.168(%rip), %rax + leaq .L.str.178(%rip), %rax push %rax movq $4, %rax push %rax @@ -13242,18 +13791,18 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $104, %rax + addq $112, %rax push %rax movq $1, %rax push %rax .data -.L.str.169: +.L.str.179: .byte 117 .byte 54 .byte 52 .byte 0 .text - leaq .L.str.169(%rip), %rax + leaq .L.str.179(%rip), %rax push %rax movq $8, %rax push %rax @@ -13268,18 +13817,18 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $96, %rax + addq $104, %rax push %rax movq $1, %rax push %rax .data -.L.str.170: +.L.str.180: .byte 117 .byte 51 .byte 50 .byte 0 .text - leaq .L.str.170(%rip), %rax + leaq .L.str.180(%rip), %rax push %rax movq $4, %rax push %rax @@ -13294,18 +13843,18 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $88, %rax + addq $96, %rax push %rax movq $1, %rax push %rax .data -.L.str.171: +.L.str.181: .byte 117 .byte 49 .byte 54 .byte 0 .text - leaq .L.str.171(%rip), %rax + leaq .L.str.181(%rip), %rax push %rax movq $2, %rax push %rax @@ -13320,17 +13869,17 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $80, %rax + addq $88, %rax push %rax movq $1, %rax push %rax .data -.L.str.172: +.L.str.182: .byte 117 .byte 56 .byte 0 .text - leaq .L.str.172(%rip), %rax + leaq .L.str.182(%rip), %rax push %rax movq $1, %rax push %rax @@ -13345,17 +13894,17 @@ new_parser: movq %rax, (%rdi) leaq -8(%rbp), %rax movq (%rax), %rax - addq $72, %rax + addq $80, %rax push %rax movq $1, %rax push %rax .data -.L.str.173: +.L.str.183: .byte 117 .byte 48 .byte 0 .text - leaq .L.str.173(%rip), %rax + leaq .L.str.183(%rip), %rax push %rax movq $0, %rax push %rax @@ -13397,11 +13946,11 @@ unkown_member_error: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.230 + jne .L.else.237 movq $1, %rax push %rax leaq exit(%rip), %rax @@ -13409,8 +13958,8 @@ unkown_member_error: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.230 -.L.else.230: + jmp .L.end.237 +.L.else.237: movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -13418,11 +13967,11 @@ unkown_member_error: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.231 + jne .L.else.238 leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13432,7 +13981,7 @@ unkown_member_error: push %rax push $1 .data -.L.str.174: +.L.str.184: .byte 104 .byte 101 .byte 108 @@ -13456,15 +14005,15 @@ unkown_member_error: .byte 58 .byte 0 .text - leaq .L.str.174(%rip), %rax + leaq .L.str.184(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp - jmp .L.end.231 -.L.else.231: + jmp .L.end.238 +.L.else.238: leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13474,7 +14023,7 @@ unkown_member_error: push %rax push $1 .data -.L.str.175: +.L.str.185: .byte 104 .byte 101 .byte 108 @@ -13500,21 +14049,21 @@ unkown_member_error: .byte 58 .byte 0 .text - leaq .L.str.175(%rip), %rax + leaq .L.str.185(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp -.L.end.231: -.L.end.230: +.L.end.238: +.L.end.237: leaq -12(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.232: +.L.while.start.239: leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13523,11 +14072,11 @@ unkown_member_error: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.232 + jne .L.while.end.239 leaq -8(%rbp), %rax push %rax leaq -12(%rbp), %rax @@ -13553,13 +14102,13 @@ unkown_member_error: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.233 + jne .L.else.240 leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13569,7 +14118,7 @@ unkown_member_error: push %rax push $1 .data -.L.str.176: +.L.str.186: .byte 32 .byte 96 .byte 37 @@ -13578,15 +14127,15 @@ unkown_member_error: .byte 44 .byte 0 .text - leaq .L.str.176(%rip), %rax + leaq .L.str.186(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp - jmp .L.end.233 -.L.else.233: + jmp .L.end.240 +.L.else.240: leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13596,7 +14145,7 @@ unkown_member_error: push %rax push $1 .data -.L.str.177: +.L.str.187: .byte 32 .byte 96 .byte 37 @@ -13604,14 +14153,14 @@ unkown_member_error: .byte 96 .byte 0 .text - leaq .L.str.177(%rip), %rax + leaq .L.str.187(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp -.L.end.233: +.L.end.240: movq $1, %rax push %rax leaq -12(%rbp), %rax @@ -13621,19 +14170,19 @@ unkown_member_error: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.232 -.L.while.end.232: + subq %rdi, %rax + jmp .L.while.start.239 +.L.while.end.239: .data -.L.str.178: +.L.str.188: .byte 10 .byte 0 .text - leaq .L.str.178(%rip), %rax + leaq .L.str.188(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -13672,11 +14221,11 @@ unkown_type_error: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.234 + jne .L.else.241 movq $1, %rax push %rax leaq exit(%rip), %rax @@ -13684,8 +14233,8 @@ unkown_type_error: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.234 -.L.else.234: + jmp .L.end.241 +.L.else.241: movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -13693,11 +14242,11 @@ unkown_type_error: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.235 + jne .L.else.242 leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13707,7 +14256,7 @@ unkown_type_error: push %rax push $1 .data -.L.str.179: +.L.str.189: .byte 104 .byte 101 .byte 108 @@ -13731,15 +14280,15 @@ unkown_type_error: .byte 58 .byte 0 .text - leaq .L.str.179(%rip), %rax + leaq .L.str.189(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp - jmp .L.end.235 -.L.else.235: + jmp .L.end.242 +.L.else.242: leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13749,7 +14298,7 @@ unkown_type_error: push %rax push $1 .data -.L.str.180: +.L.str.190: .byte 104 .byte 101 .byte 108 @@ -13775,21 +14324,21 @@ unkown_type_error: .byte 58 .byte 0 .text - leaq .L.str.180(%rip), %rax + leaq .L.str.190(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp -.L.end.235: -.L.end.234: +.L.end.242: +.L.end.241: leaq -12(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.236: +.L.while.start.243: leaq 16(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13798,11 +14347,11 @@ unkown_type_error: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.236 + jne .L.while.end.243 leaq -8(%rbp), %rax push %rax leaq -12(%rbp), %rax @@ -13828,13 +14377,13 @@ unkown_type_error: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.237 + jne .L.else.244 leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13844,7 +14393,7 @@ unkown_type_error: push %rax push $1 .data -.L.str.181: +.L.str.191: .byte 32 .byte 96 .byte 37 @@ -13853,15 +14402,15 @@ unkown_type_error: .byte 44 .byte 0 .text - leaq .L.str.181(%rip), %rax + leaq .L.str.191(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp - jmp .L.end.237 -.L.else.237: + jmp .L.end.244 +.L.else.244: leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -13871,7 +14420,7 @@ unkown_type_error: push %rax push $1 .data -.L.str.182: +.L.str.192: .byte 32 .byte 96 .byte 37 @@ -13879,14 +14428,14 @@ unkown_type_error: .byte 96 .byte 0 .text - leaq .L.str.182(%rip), %rax + leaq .L.str.192(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $32, %rsp -.L.end.237: +.L.end.244: movq $1, %rax push %rax leaq -12(%rbp), %rax @@ -13896,19 +14445,19 @@ unkown_type_error: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.236 -.L.while.end.236: + subq %rdi, %rax + jmp .L.while.start.243 +.L.while.end.243: .data -.L.str.183: +.L.str.193: .byte 10 .byte 0 .text - leaq .L.str.183(%rip), %rax + leaq .L.str.193(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -13952,7 +14501,7 @@ unexpected_token_error: push %rax push $2 .data -.L.str.184: +.L.str.194: .byte 104 .byte 101 .byte 108 @@ -13988,7 +14537,7 @@ unexpected_token_error: .byte 10 .byte 0 .text - leaq .L.str.184(%rip), %rax + leaq .L.str.194(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 diff --git a/bootstrap/preprocessor.s b/bootstrap/preprocessor.s index 8d2479f..1b04a50 100644 --- a/bootstrap/preprocessor.s +++ b/bootstrap/preprocessor.s @@ -20,13 +20,13 @@ fd_get_file_full_path: leaq -20(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.0 + jne .L.else.1 .data -.L.str.0: +.L.str.1: .byte 109 .byte 101 .byte 109 @@ -54,7 +54,7 @@ fd_get_file_full_path: .byte 10 .byte 0 .text - leaq .L.str.0(%rip), %rax + leaq .L.str.1(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -68,9 +68,9 @@ fd_get_file_full_path: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.0 -.L.else.0: -.L.end.0: + jmp .L.end.1 +.L.else.1: +.L.end.1: leaq -12(%rbp), %rax push %rax movq $64, %rax @@ -89,7 +89,7 @@ fd_get_file_full_path: push %rax push $1 .data -.L.str.1: +.L.str.2: .byte 47 .byte 112 .byte 114 @@ -108,7 +108,7 @@ fd_get_file_full_path: .byte 100 .byte 0 .text - leaq .L.str.1(%rip), %rax + leaq .L.str.2(%rip), %rax push %rax leaq -12(%rbp), %rax movq (%rax), %rax @@ -124,7 +124,7 @@ fd_get_file_full_path: push %rax movq $4096, %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax push %rax leaq -20(%rbp), %rax movq (%rax), %rax @@ -144,13 +144,13 @@ fd_get_file_full_path: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.1 + jne .L.else.2 .data -.L.str.2: +.L.str.3: .byte 102 .byte 97 .byte 105 @@ -201,7 +201,7 @@ fd_get_file_full_path: .byte 10 .byte 0 .text - leaq .L.str.2(%rip), %rax + leaq .L.str.3(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -211,15 +211,15 @@ fd_get_file_full_path: movq $1, %rax leave ret - jmp .L.end.1 -.L.else.1: -.L.end.1: + jmp .L.end.2 +.L.else.2: +.L.end.2: movq $1, %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq -20(%rbp), %rax movq (%rax), %rax @@ -251,12 +251,12 @@ get_ibu_lib_path: push %rax movq $4096, %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax push %rax leaq -4116(%rbp), %rax push %rax .data -.L.str.3: +.L.str.4: .byte 47 .byte 112 .byte 114 @@ -273,7 +273,7 @@ get_ibu_lib_path: .byte 101 .byte 0 .text - leaq .L.str.3(%rip), %rax + leaq .L.str.4(%rip), %rax push %rax leaq readlink(%rip), %rax movq %rax, %r10 @@ -287,13 +287,13 @@ get_ibu_lib_path: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.2 + jne .L.else.3 .data -.L.str.4: +.L.str.5: .byte 102 .byte 97 .byte 105 @@ -349,7 +349,7 @@ get_ibu_lib_path: .byte 10 .byte 0 .text - leaq .L.str.4(%rip), %rax + leaq .L.str.5(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -363,15 +363,15 @@ get_ibu_lib_path: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.2 -.L.else.2: -.L.end.2: + jmp .L.end.3 +.L.else.3: +.L.end.3: movq $1, %rax push %rax leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq -4116(%rbp), %rax pop %rdi @@ -414,7 +414,7 @@ get_ibu_lib_path: addq $8, %rsp push %rax .data -.L.str.5: +.L.str.6: .byte 47 .byte 108 .byte 105 @@ -422,7 +422,7 @@ get_ibu_lib_path: .byte 47 .byte 0 .text - leaq .L.str.5(%rip), %rax + leaq .L.str.6(%rip), %rax push %rax leaq strlen(%rip), %rax movq %rax, %r10 @@ -439,11 +439,11 @@ get_ibu_lib_path: callq *%r10 addq $8, %rsp pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -457,13 +457,13 @@ get_ibu_lib_path: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.3 + jne .L.else.4 .data -.L.str.6: +.L.str.7: .byte 109 .byte 101 .byte 109 @@ -491,7 +491,7 @@ get_ibu_lib_path: .byte 10 .byte 0 .text - leaq .L.str.6(%rip), %rax + leaq .L.str.7(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -505,9 +505,9 @@ get_ibu_lib_path: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.3 -.L.else.3: -.L.end.3: + jmp .L.end.4 +.L.else.4: +.L.end.4: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -518,7 +518,7 @@ get_ibu_lib_path: push %rax push $2 .data -.L.str.7: +.L.str.8: .byte 37 .byte 115 .byte 47 @@ -530,7 +530,7 @@ get_ibu_lib_path: .byte 115 .byte 0 .text - leaq .L.str.7(%rip), %rax + leaq .L.str.8(%rip), %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax @@ -568,69 +568,69 @@ dirname: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setge %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.6 + je .L.false.7 movq $46, %rax push %rax movq $1, %rax push %rax movq $0, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.6 + je .L.false.7 movq $1, %rax - jmp .L.end.6 -.L.false.6: + jmp .L.end.7 +.L.false.7: movq $0, %rax -.L.end.6: +.L.end.7: cmpq $0, %rax - je .L.false.5 + je .L.false.6 movq $47, %rax push %rax movq $1, %rax push %rax movq $1, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.5 + je .L.false.6 movq $1, %rax - jmp .L.end.5 -.L.false.5: + jmp .L.end.6 +.L.false.6: movq $0, %rax -.L.end.5: +.L.end.6: cmpq $1, %rax - jne .L.else.4 + jne .L.else.5 movq $2, %rax push %rax leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax push %rax movq $2, %rax push %rax @@ -654,9 +654,9 @@ dirname: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -666,20 +666,20 @@ dirname: movq $0, %rax pop %rdi movb %al, (%rdi) - jmp .L.end.4 -.L.else.4: -.L.end.4: -.L.while.start.7: + jmp .L.end.5 +.L.else.5: +.L.end.5: +.L.while.start.8: movq $0, %rax push %rax leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setg %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.8 + je .L.false.9 movq $47, %rax push %rax movq $1, %rax @@ -689,28 +689,28 @@ dirname: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.8 + je .L.false.9 movq $1, %rax - jmp .L.end.8 -.L.false.8: + jmp .L.end.9 +.L.false.9: movq $0, %rax -.L.end.8: +.L.end.9: cmpq $1, %rax - jne .L.while.end.7 + jne .L.while.end.8 movq $1, %rax push %rax leaq -12(%rbp), %rax @@ -720,17 +720,17 @@ dirname: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - addl %edi, %eax + addq %rdi, %rax movq $1, %rax push %rax leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -740,8 +740,8 @@ dirname: movq $0, %rax pop %rdi movb %al, (%rdi) - jmp .L.while.start.7 -.L.while.end.7: + jmp .L.while.start.8 +.L.while.end.8: leaq -8(%rbp), %rax push %rax movq $47, %rax @@ -761,19 +761,19 @@ dirname: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.9 + jne .L.else.10 movq $2, %rax push %rax .data -.L.str.8: +.L.str.9: .byte 46 .byte 0 .text - leaq .L.str.8(%rip), %rax + leaq .L.str.9(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -783,24 +783,24 @@ dirname: movq $0, %rax callq *%r10 addq $24, %rsp - jmp .L.end.9 -.L.else.9: + jmp .L.end.10 +.L.else.10: leaq 16(%rbp), %rax movq (%rax), %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.10 + jne .L.else.11 movq $1, %rax push %rax movq $1, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax @@ -810,16 +810,16 @@ dirname: movq $0, %rax pop %rdi movb %al, (%rdi) - jmp .L.end.10 -.L.else.10: + jmp .L.end.11 +.L.else.11: leaq -8(%rbp), %rax movq (%rax), %rax push %rax movq $0, %rax pop %rdi movb %al, (%rdi) +.L.end.11: .L.end.10: -.L.end.9: leaq 16(%rbp), %rax movq (%rax), %rax leave @@ -831,7 +831,7 @@ get_eof_from_tokens: push %rbp movq %rsp, %rbp subq $0, %rsp -.L.while.start.11: +.L.while.start.12: movq $5, %rax push %rax leaq 16(%rbp), %rax @@ -839,11 +839,11 @@ get_eof_from_tokens: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.11 + jne .L.while.end.12 leaq 16(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -852,8 +852,8 @@ get_eof_from_tokens: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.11 -.L.while.end.11: + jmp .L.while.start.12 +.L.while.end.12: leaq 16(%rbp), %rax movq (%rax), %rax leave @@ -873,17 +873,17 @@ find_macro: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.12: +.L.while.start.13: movq $0, %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.12 + jne .L.while.end.13 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -897,16 +897,16 @@ find_macro: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.13 + jne .L.else.14 leaq -8(%rbp), %rax movq (%rax), %rax leave ret - jmp .L.end.13 -.L.else.13: -.L.end.13: + jmp .L.end.14 +.L.else.14: +.L.end.14: leaq -8(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -915,8 +915,8 @@ find_macro: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.12 -.L.while.end.12: + jmp .L.while.start.13 +.L.while.end.13: movq $0, %rax leave ret @@ -1003,10 +1003,10 @@ preprocess: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.while.start.14: +.L.while.start.15: movq $1, %rax cmpq $1, %rax - jne .L.while.end.14 + jne .L.while.end.15 movq $0, %rax push %rax leaq 16(%rbp), %rax @@ -1014,17 +1014,17 @@ preprocess: addq $64, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.17 + je .L.false.18 .data -.L.str.9: +.L.str.10: .byte 35 .byte 0 .text - leaq .L.str.9(%rip), %rax + leaq .L.str.10(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1036,18 +1036,18 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.17 + je .L.false.18 movq $1, %rax - jmp .L.end.17 -.L.false.17: + jmp .L.end.18 +.L.false.18: movq $0, %rax -.L.end.17: +.L.end.18: cmpq $0, %rax - je .L.false.16 + je .L.false.17 .data -.L.str.10: +.L.str.11: .byte 100 .byte 101 .byte 102 @@ -1056,7 +1056,7 @@ preprocess: .byte 101 .byte 0 .text - leaq .L.str.10(%rip), %rax + leaq .L.str.11(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1070,16 +1070,16 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.16 + je .L.false.17 movq $1, %rax - jmp .L.end.16 -.L.false.16: + jmp .L.end.17 +.L.false.17: movq $0, %rax -.L.end.16: +.L.end.17: cmpq $1, %rax - jne .L.else.15 + jne .L.else.16 leaq -76(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -1283,8 +1283,8 @@ preprocess: movb %r8b, 70(%rdi) movb 71(%rax), %r8b movb %r8b, 71(%rdi) - jmp .L.end.15 -.L.else.15: + jmp .L.end.16 +.L.else.16: movq $0, %rax push %rax leaq 16(%rbp), %rax @@ -1292,17 +1292,17 @@ preprocess: addq $64, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.20 + je .L.false.21 .data -.L.str.11: +.L.str.12: .byte 35 .byte 0 .text - leaq .L.str.11(%rip), %rax + leaq .L.str.12(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1314,18 +1314,18 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.20 + je .L.false.21 movq $1, %rax - jmp .L.end.20 -.L.false.20: + jmp .L.end.21 +.L.false.21: movq $0, %rax -.L.end.20: +.L.end.21: cmpq $0, %rax - je .L.false.19 + je .L.false.20 .data -.L.str.12: +.L.str.13: .byte 105 .byte 110 .byte 99 @@ -1335,7 +1335,7 @@ preprocess: .byte 101 .byte 0 .text - leaq .L.str.12(%rip), %rax + leaq .L.str.13(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1349,16 +1349,16 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - je .L.false.19 + je .L.false.20 movq $1, %rax - jmp .L.end.19 -.L.false.19: + jmp .L.end.20 +.L.false.20: movq $0, %rax -.L.end.19: +.L.end.20: cmpq $1, %rax - jne .L.else.18 + jne .L.else.19 leaq -68(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -1376,13 +1376,13 @@ preprocess: addq $0, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.21 + jne .L.else.22 .data -.L.str.13: +.L.str.14: .byte 101 .byte 120 .byte 112 @@ -1406,7 +1406,7 @@ preprocess: .byte 103 .byte 0 .text - leaq .L.str.13(%rip), %rax + leaq .L.str.14(%rip), %rax push %rax leaq -68(%rbp), %rax movq (%rax), %rax @@ -1416,9 +1416,9 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.21 -.L.else.21: -.L.end.21: + jmp .L.end.22 +.L.else.22: +.L.end.22: leaq -60(%rbp), %rax push %rax movq $1, %rax @@ -1435,11 +1435,11 @@ preprocess: addq $8, %rsp push %rax .data -.L.str.14: +.L.str.15: .byte 47 .byte 0 .text - leaq .L.str.14(%rip), %rax + leaq .L.str.15(%rip), %rax push %rax leaq strlen(%rip), %rax movq %rax, %r10 @@ -1456,11 +1456,11 @@ preprocess: callq *%r10 addq $8, %rsp pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -1474,13 +1474,13 @@ preprocess: leaq -60(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.22 + jne .L.else.23 .data -.L.str.15: +.L.str.16: .byte 109 .byte 101 .byte 109 @@ -1508,7 +1508,7 @@ preprocess: .byte 10 .byte 0 .text - leaq .L.str.15(%rip), %rax + leaq .L.str.16(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -1522,9 +1522,9 @@ preprocess: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.22 -.L.else.22: -.L.end.22: + jmp .L.end.23 +.L.else.23: +.L.end.23: leaq -68(%rbp), %rax movq (%rax), %rax addq $48, %rax @@ -1537,7 +1537,7 @@ preprocess: push %rax push $2 .data -.L.str.16: +.L.str.17: .byte 37 .byte 115 .byte 47 @@ -1545,7 +1545,7 @@ preprocess: .byte 115 .byte 0 .text - leaq .L.str.16(%rip), %rax + leaq .L.str.17(%rip), %rax push %rax leaq -60(%rbp), %rax movq (%rax), %rax @@ -1576,11 +1576,11 @@ preprocess: leaq -52(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.23 + jne .L.else.24 leaq -52(%rbp), %rax push %rax movq $420, %rax @@ -1610,13 +1610,13 @@ preprocess: leaq -52(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.24 + jne .L.else.25 .data -.L.str.17: +.L.str.18: .byte 110 .byte 111 .byte 32 @@ -1644,7 +1644,7 @@ preprocess: .byte 121 .byte 0 .text - leaq .L.str.17(%rip), %rax + leaq .L.str.18(%rip), %rax push %rax leaq -68(%rbp), %rax movq (%rax), %rax @@ -1654,12 +1654,12 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp + jmp .L.end.25 +.L.else.25: +.L.end.25: jmp .L.end.24 .L.else.24: .L.end.24: - jmp .L.end.23 -.L.else.23: -.L.end.23: leaq -48(%rbp), %rax push %rax leaq -52(%rbp), %rax @@ -1682,7 +1682,7 @@ preprocess: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.25: +.L.while.start.26: leaq 24(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -1693,11 +1693,11 @@ preprocess: leaq -36(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.25 + jne .L.while.end.26 leaq -32(%rbp), %rax push %rax leaq -36(%rbp), %rax @@ -1726,17 +1726,17 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.26 + jne .L.else.27 leaq -40(%rbp), %rax push %rax movq $1, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.26 -.L.else.26: -.L.end.26: + jmp .L.end.27 +.L.else.27: +.L.end.27: movq $1, %rax push %rax leaq -36(%rbp), %rax @@ -1746,20 +1746,20 @@ preprocess: leaq -36(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.25 -.L.while.end.25: + subq %rdi, %rax + jmp .L.while.start.26 +.L.while.end.26: leaq -40(%rbp), %rax movslq (%rax), %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.27 + jne .L.else.28 leaq -48(%rbp), %rax movq (%rax), %rax push %rax @@ -1789,13 +1789,13 @@ preprocess: leaq -24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.28 + jne .L.else.29 .data -.L.str.18: +.L.str.19: .byte 109 .byte 101 .byte 109 @@ -1823,7 +1823,7 @@ preprocess: .byte 10 .byte 0 .text - leaq .L.str.18(%rip), %rax + leaq .L.str.19(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -1837,9 +1837,9 @@ preprocess: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.28 -.L.else.28: -.L.end.28: + jmp .L.end.29 +.L.else.29: +.L.end.29: movq $150000, %rax push %rax leaq -24(%rbp), %rax @@ -2205,8 +2205,8 @@ preprocess: movb %r8b, 70(%rdi) movb 71(%rax), %r8b movb %r8b, 71(%rdi) - jmp .L.end.27 -.L.else.27: + jmp .L.end.28 +.L.else.28: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2363,14 +2363,14 @@ preprocess: movb %r8b, 70(%rdi) movb 71(%rax), %r8b movb %r8b, 71(%rdi) -.L.end.27: - jmp .L.end.18 -.L.else.18: +.L.end.28: + jmp .L.end.19 +.L.else.19: jmp .L.preprocess.break -.L.end.18: -.L.end.15: - jmp .L.while.start.14 -.L.while.end.14: +.L.end.19: +.L.end.16: + jmp .L.while.start.15 +.L.while.end.15: .L.preprocess.break: leaq -8(%rbp), %rax push %rax @@ -2394,11 +2394,11 @@ preprocess: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.29 + jne .L.else.30 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2412,9 +2412,9 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.29 -.L.else.29: -.L.end.29: + jmp .L.end.30 +.L.else.30: +.L.end.30: movq $0, %rax push %rax leaq 16(%rbp), %rax @@ -2422,11 +2422,11 @@ preprocess: addq $64, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.30 + jne .L.else.31 leaq 24(%rbp), %rax movq (%rax), %rax push %rax @@ -2440,9 +2440,9 @@ preprocess: movq $0, %rax callq *%r10 addq $16, %rsp - jmp .L.end.30 -.L.else.30: -.L.end.30: + jmp .L.end.31 +.L.else.31: +.L.end.31: leave ret .global new_preprocessor diff --git a/bootstrap/std.s b/bootstrap/std.s index f06d04c..346edc5 100644 --- a/bootstrap/std.s +++ b/bootstrap/std.s @@ -11,7 +11,7 @@ strndup: leaq 24(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -25,13 +25,13 @@ strndup: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.0 + jne .L.else.1 .data -.L.str.0: +.L.str.1: .byte 109 .byte 101 .byte 109 @@ -59,7 +59,7 @@ strndup: .byte 10 .byte 0 .text - leaq .L.str.0(%rip), %rax + leaq .L.str.1(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -73,9 +73,9 @@ strndup: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.0 -.L.else.0: -.L.end.0: + jmp .L.end.1 +.L.else.1: +.L.end.1: leaq 24(%rbp), %rax movslq (%rax), %rax push %rax @@ -95,7 +95,7 @@ strndup: leaq 24(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax @@ -217,29 +217,29 @@ vsprintf: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.1: +.L.while.start.2: movq $0, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.1 + jne .L.while.end.2 movq $37, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.2 + jne .L.else.3 movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -258,13 +258,13 @@ vsprintf: push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.3 + jne .L.else.4 leaq -12(%rbp), %rax push %rax movq $8, %rax @@ -278,13 +278,13 @@ vsprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -330,19 +330,19 @@ vsprintf: addq %rdi, %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.3 -.L.else.3: + jmp .L.end.4 +.L.else.4: movq $100, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.4 + jne .L.else.5 leaq 16(%rbp), %rax push %rax movq $10, %rax @@ -361,13 +361,13 @@ vsprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -387,8 +387,8 @@ vsprintf: addq %rdi, %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.4 -.L.else.4: + jmp .L.end.5 +.L.else.5: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -409,16 +409,16 @@ vsprintf: movq %rax, (%rdi) pop %rdi subq %rdi, %rax +.L.end.5: .L.end.4: -.L.end.3: - jmp .L.end.2 -.L.else.2: + jmp .L.end.3 +.L.else.3: leaq 16(%rbp), %rax movq (%rax), %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -435,7 +435,7 @@ vsprintf: movq %rax, (%rdi) pop %rdi subq %rdi, %rax -.L.end.2: +.L.end.3: movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -450,8 +450,8 @@ vsprintf: movq %rax, (%rdi) pop %rdi subq %rdi, %rax - jmp .L.while.start.1 -.L.while.end.1: + jmp .L.while.start.2 +.L.while.end.2: leaq -4(%rbp), %rax push %rax leaq -24(%rbp), %rax @@ -468,7 +468,7 @@ vsprintf: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -499,29 +499,29 @@ vfprintf: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.5: +.L.while.start.6: movq $0, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.5 + jne .L.while.end.6 movq $37, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.6 + jne .L.else.7 movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -540,13 +540,13 @@ vfprintf: push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.7 + jne .L.else.8 leaq -16(%rbp), %rax push %rax movq $8, %rax @@ -560,13 +560,13 @@ vfprintf: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -586,22 +586,22 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.7 -.L.else.7: + jmp .L.end.8 +.L.else.8: movq $112, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.8 + jne .L.else.9 leaq -12(%rbp), %rax push %rax movq $8, %rax @@ -615,13 +615,13 @@ vfprintf: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -636,11 +636,11 @@ vfprintf: sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.9 + jne .L.else.10 leaq -16(%rbp), %rax push %rax .data -.L.str.1: +.L.str.2: .byte 40 .byte 110 .byte 105 @@ -648,7 +648,7 @@ vfprintf: .byte 41 .byte 0 .text - leaq .L.str.1(%rip), %rax + leaq .L.str.2(%rip), %rax push %rax leaq 16(%rbp), %rax movslq (%rax), %rax @@ -662,20 +662,20 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.9 -.L.else.9: + jmp .L.end.10 +.L.else.10: leaq -16(%rbp), %rax push %rax .data -.L.str.2: +.L.str.3: .byte 48 .byte 120 .byte 0 .text - leaq .L.str.2(%rip), %rax + leaq .L.str.3(%rip), %rax push %rax leaq 16(%rbp), %rax movslq (%rax), %rax @@ -689,7 +689,7 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq -16(%rbp), %rax @@ -713,23 +713,23 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) -.L.end.9: - jmp .L.end.8 -.L.else.8: +.L.end.10: + jmp .L.end.9 +.L.else.9: movq $98, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.10 + jne .L.else.11 leaq -16(%rbp), %rax push %rax movq $0, %rax @@ -747,13 +747,13 @@ vfprintf: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -773,22 +773,22 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.10 -.L.else.10: + jmp .L.end.11 +.L.else.11: movq $99, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.11 + jne .L.else.12 leaq -16(%rbp), %rax push %rax movq $8, %rax @@ -802,13 +802,13 @@ vfprintf: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -828,22 +828,22 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.11 -.L.else.11: + jmp .L.end.12 +.L.else.12: movq $120, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.12 + jne .L.else.13 leaq -16(%rbp), %rax push %rax movq $0, %rax @@ -861,13 +861,13 @@ vfprintf: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -887,22 +887,22 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.12 -.L.else.12: + jmp .L.end.13 +.L.else.13: movq $88, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.13 + jne .L.else.14 leaq -16(%rbp), %rax push %rax movq $1, %rax @@ -920,13 +920,13 @@ vfprintf: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -946,22 +946,22 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.13 -.L.else.13: + jmp .L.end.14 +.L.else.14: movq $117, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.14 + jne .L.else.15 leaq -16(%rbp), %rax push %rax movq $0, %rax @@ -979,13 +979,13 @@ vfprintf: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -1005,22 +1005,22 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.14 -.L.else.14: + jmp .L.end.15 +.L.else.15: movq $100, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.15 + jne .L.else.16 leaq -4(%rbp), %rax push %rax movq $8, %rax @@ -1034,13 +1034,13 @@ vfprintf: leaq -20(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 32(%rbp), %rax movq (%rax), %rax @@ -1054,19 +1054,19 @@ vfprintf: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.16 + jne .L.else.17 leaq -16(%rbp), %rax push %rax .data -.L.str.3: +.L.str.4: .byte 45 .byte 0 .text - leaq .L.str.3(%rip), %rax + leaq .L.str.4(%rip), %rax push %rax leaq 16(%rbp), %rax movslq (%rax), %rax @@ -1080,7 +1080,7 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq -4(%rbp), %rax @@ -1090,12 +1090,12 @@ vfprintf: push %rax movq $0, %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.16 -.L.else.16: -.L.end.16: + jmp .L.end.17 +.L.else.17: +.L.end.17: leaq -16(%rbp), %rax push %rax movq $0, %rax @@ -1117,11 +1117,11 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.15 -.L.else.15: + jmp .L.end.16 +.L.else.16: leaq -16(%rbp), %rax push %rax movq $1, %rax @@ -1141,19 +1141,19 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) +.L.end.16: .L.end.15: .L.end.14: .L.end.13: .L.end.12: .L.end.11: -.L.end.10: +.L.end.9: .L.end.8: -.L.end.7: - jmp .L.end.6 -.L.else.6: + jmp .L.end.7 +.L.else.7: leaq -16(%rbp), %rax push %rax movq $1, %rax @@ -1173,10 +1173,10 @@ vfprintf: leaq -16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) -.L.end.6: +.L.end.7: movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -1191,8 +1191,8 @@ vfprintf: movq %rax, (%rdi) pop %rdi subq %rdi, %rax - jmp .L.while.start.5 -.L.while.end.5: + jmp .L.while.start.6 +.L.while.end.6: leaq -16(%rbp), %rax movslq (%rax), %rax leave @@ -1225,13 +1225,13 @@ fputchar: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.17 + jne .L.else.18 .data -.L.str.4: +.L.str.5: .byte 119 .byte 114 .byte 105 @@ -1267,7 +1267,7 @@ fputchar: .byte 10 .byte 0 .text - leaq .L.str.4(%rip), %rax + leaq .L.str.5(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -1281,9 +1281,9 @@ fputchar: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.17 -.L.else.17: -.L.end.17: + jmp .L.end.18 +.L.else.18: +.L.end.18: leaq -4(%rbp), %rax movslq (%rax), %rax leave @@ -1306,11 +1306,11 @@ fputunum: leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setae %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.18 + jne .L.else.19 leaq -4(%rbp), %rax push %rax leaq 40(%rbp), %rax @@ -1340,16 +1340,16 @@ fputunum: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.18 -.L.else.18: -.L.end.18: + jmp .L.end.19 +.L.else.19: +.L.end.19: leaq 40(%rbp), %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.19 + jne .L.else.20 leaq -4(%rbp), %rax push %rax movq $1, %rax @@ -1366,10 +1366,10 @@ fputunum: divq %rdi movq %rdx, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax .data -.L.str.5: +.L.str.6: .byte 48 .byte 49 .byte 50 @@ -1388,7 +1388,7 @@ fputunum: .byte 70 .byte 0 .text - leaq .L.str.5(%rip), %rax + leaq .L.str.6(%rip), %rax pop %rdi addq %rdi, %rax push %rax @@ -1404,11 +1404,11 @@ fputunum: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.19 -.L.else.19: + jmp .L.end.20 +.L.else.20: leaq -4(%rbp), %rax push %rax movq $1, %rax @@ -1425,10 +1425,10 @@ fputunum: divq %rdi movq %rdx, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax .data -.L.str.6: +.L.str.7: .byte 48 .byte 49 .byte 50 @@ -1447,7 +1447,7 @@ fputunum: .byte 102 .byte 0 .text - leaq .L.str.6(%rip), %rax + leaq .L.str.7(%rip), %rax pop %rdi addq %rdi, %rax push %rax @@ -1463,10 +1463,10 @@ fputunum: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) -.L.end.19: +.L.end.20: leaq -4(%rbp), %rax movslq (%rax), %rax leave @@ -1488,11 +1488,11 @@ itoa: leaq 16(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.20 + jne .L.else.21 movq $1, %rax push %rax movq $1, %rax @@ -1504,13 +1504,13 @@ itoa: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax @@ -1525,7 +1525,7 @@ itoa: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax @@ -1539,9 +1539,9 @@ itoa: movq (%rax), %rax leave ret - jmp .L.end.20 -.L.else.20: -.L.end.20: + jmp .L.end.21 +.L.else.21: +.L.end.21: leaq -8(%rbp), %rax push %rax movq $0, %rax @@ -1552,11 +1552,11 @@ itoa: leaq 16(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.21 + jne .L.else.22 leaq -8(%rbp), %rax push %rax movq $1, %rax @@ -1569,23 +1569,23 @@ itoa: push %rax movq $0, %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.21 -.L.else.21: -.L.end.21: -.L.while.start.22: + jmp .L.end.22 +.L.else.22: +.L.end.22: +.L.while.start.23: movq $0, %rax push %rax leaq 16(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.22 + jne .L.while.end.23 leaq -4(%rbp), %rax push %rax leaq 32(%rbp), %rax @@ -1594,8 +1594,8 @@ itoa: leaq 16(%rbp), %rax movslq (%rax), %rax pop %rdi - cltd - idivl %edi + cqto + idivq %rdi movq %rdx, %rax pop %rdi movl %eax, (%rdi) @@ -1604,11 +1604,11 @@ itoa: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setg %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.23 + jne .L.else.24 movq $1, %rax push %rax movq $1, %rax @@ -1620,13 +1620,13 @@ itoa: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax @@ -1640,13 +1640,13 @@ itoa: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movb %al, (%rdi) - jmp .L.end.23 -.L.else.23: + jmp .L.end.24 +.L.else.24: movq $1, %rax push %rax movq $1, %rax @@ -1658,13 +1658,13 @@ itoa: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax @@ -1676,10 +1676,10 @@ itoa: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movb %al, (%rdi) -.L.end.23: +.L.end.24: leaq 16(%rbp), %rax push %rax leaq 32(%rbp), %rax @@ -1688,16 +1688,16 @@ itoa: leaq 16(%rbp), %rax movslq (%rax), %rax pop %rdi - cltd - idivl %edi + cqto + idivq %rdi pop %rdi movl %eax, (%rdi) - jmp .L.while.start.22 -.L.while.end.22: + jmp .L.while.start.23 +.L.while.end.23: leaq -8(%rbp), %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.24 + jne .L.else.25 movq $1, %rax push %rax movq $1, %rax @@ -1709,13 +1709,13 @@ itoa: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax @@ -1725,9 +1725,9 @@ itoa: movq $45, %rax pop %rdi movb %al, (%rdi) - jmp .L.end.24 -.L.else.24: -.L.end.24: + jmp .L.end.25 +.L.else.25: +.L.end.25: leaq -12(%rbp), %rax movslq (%rax), %rax push %rax @@ -1744,7 +1744,7 @@ itoa: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax @@ -1777,21 +1777,21 @@ reverse_str: leaq 24(%rbp), %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.25: +.L.while.start.26: leaq -5(%rbp), %rax movslq (%rax), %rax push %rax leaq -9(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.25 + jne .L.while.end.26 leaq -1(%rbp), %rax push %rax movq $1, %rax @@ -1799,13 +1799,13 @@ reverse_str: leaq -9(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -1813,7 +1813,7 @@ reverse_str: leaq -9(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1825,13 +1825,13 @@ reverse_str: leaq -5(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -1839,7 +1839,7 @@ reverse_str: leaq -5(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1847,7 +1847,7 @@ reverse_str: addq %rdi, %rax push %rax leaq -1(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -1859,11 +1859,11 @@ reverse_str: leaq -5(%rbp), %rax movslq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - addl %edi, %eax + addq %rdi, %rax movq $1, %rax push %rax leaq -9(%rbp), %rax @@ -1873,13 +1873,13 @@ reverse_str: leaq -9(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.25 -.L.while.end.25: + subq %rdi, %rax + jmp .L.while.start.26 +.L.while.end.26: leave ret .global atoi @@ -1909,19 +1909,19 @@ atoi: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movsbl (%rax), %eax + movsbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.26 + jne .L.else.27 leaq -4(%rbp), %rax push %rax movq $1, %rax @@ -1936,15 +1936,15 @@ atoi: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.end.26 -.L.else.26: -.L.end.26: -.L.while.start.27: + subq %rdi, %rax + jmp .L.end.27 +.L.else.27: +.L.end.27: +.L.while.start.28: movq $0, %rax push %rax movq $1, %rax @@ -1952,19 +1952,19 @@ atoi: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movsbl (%rax), %eax + movsbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.27 + jne .L.while.end.28 leaq -8(%rbp), %rax push %rax movq $48, %rax @@ -1980,38 +1980,38 @@ atoi: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movsbl (%rax), %eax + movsbq (%rax), %rax push %rax movq $10, %rax push %rax leaq -8(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.while.start.27 -.L.while.end.27: + jmp .L.while.start.28 +.L.while.end.28: leaq -4(%rbp), %rax movslq (%rax), %rax cmpq $1, %rax - jne .L.else.28 + jne .L.else.29 leaq -8(%rbp), %rax push %rax leaq -8(%rbp), %rax @@ -2019,12 +2019,12 @@ atoi: push %rax movq $0, %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movl %eax, (%rdi) - jmp .L.end.28 -.L.else.28: -.L.end.28: + jmp .L.end.29 +.L.else.29: +.L.end.29: leaq -8(%rbp), %rax movslq (%rax), %rax leave @@ -2037,38 +2037,38 @@ isdigit: movq %rsp, %rbp subq $0, %rsp leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $48, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.30 + je .L.false.31 movq $57, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.30 + je .L.false.31 movq $1, %rax - jmp .L.end.30 -.L.false.30: + jmp .L.end.31 +.L.false.31: movq $0, %rax -.L.end.30: +.L.end.31: cmpq $1, %rax - jne .L.else.29 + jne .L.else.30 movq $1, %rax leave ret - jmp .L.end.29 -.L.else.29: -.L.end.29: + jmp .L.end.30 +.L.else.30: +.L.end.30: movq $0, %rax leave ret @@ -2080,72 +2080,72 @@ isalpha: movq %rsp, %rbp subq $0, %rsp leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $65, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.33 + je .L.false.34 movq $90, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.33 + je .L.false.34 movq $1, %rax - jmp .L.end.33 -.L.false.33: + jmp .L.end.34 +.L.false.34: movq $0, %rax -.L.end.33: +.L.end.34: cmpq $0, %rax - jne .L.true.32 + jne .L.true.33 leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $97, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.34 + je .L.false.35 movq $122, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.34 + je .L.false.35 movq $1, %rax - jmp .L.end.34 -.L.false.34: + jmp .L.end.35 +.L.false.35: movq $0, %rax -.L.end.34: +.L.end.35: cmp $0, %rax - jne .L.true.32 + jne .L.true.33 mov $0, %rax - jmp .L.end.32 -.L.true.32: + jmp .L.end.33 +.L.true.33: mov $1, %rax -.L.end.32: +.L.end.33: cmpq $1, %rax - jne .L.else.31 + jne .L.else.32 movq $1, %rax leave ret - jmp .L.end.31 -.L.else.31: -.L.end.31: + jmp .L.end.32 +.L.else.32: +.L.end.32: movq $0, %rax leave ret @@ -2161,24 +2161,24 @@ memcpy: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.35: +.L.while.start.36: leaq 32(%rbp), %rax movslq (%rax), %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.35 + jne .L.while.end.36 movq $1, %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2190,13 +2190,13 @@ memcpy: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -2208,13 +2208,13 @@ memcpy: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.35 -.L.while.end.35: + subq %rdi, %rax + jmp .L.while.start.36 +.L.while.end.36: leaq 16(%rbp), %rax movq (%rax), %rax leave @@ -2231,39 +2231,39 @@ strrchr: movq $0, %rax pop %rdi movq %rax, (%rdi) -.L.while.start.36: +.L.while.start.37: movq $0, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.36 + jne .L.while.end.37 leaq 24(%rbp), %rax movslq (%rax), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.37 + jne .L.else.38 leaq -8(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.37 -.L.else.37: -.L.end.37: + jmp .L.end.38 +.L.else.38: +.L.end.38: movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -2278,8 +2278,8 @@ strrchr: movq %rax, (%rdi) pop %rdi subq %rdi, %rax - jmp .L.while.start.36 -.L.while.end.36: + jmp .L.while.start.37 +.L.while.end.37: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -2292,45 +2292,45 @@ byte_to_upper: movq %rsp, %rbp subq $0, %rsp leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $65, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.39 + je .L.false.40 movq $90, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.39 + je .L.false.40 movq $1, %rax - jmp .L.end.39 -.L.false.39: + jmp .L.end.40 +.L.false.40: movq $0, %rax -.L.end.39: +.L.end.40: cmpq $1, %rax - jne .L.else.38 + jne .L.else.39 movq $32, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax leave ret - jmp .L.end.38 -.L.else.38: -.L.end.38: + jmp .L.end.39 +.L.else.39: +.L.end.39: leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax leave ret leave @@ -2341,45 +2341,45 @@ byte_to_lower: movq %rsp, %rbp subq $0, %rsp leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $65, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.41 + je .L.false.42 movq $90, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.41 + je .L.false.42 movq $1, %rax - jmp .L.end.41 -.L.false.41: + jmp .L.end.42 +.L.false.42: movq $0, %rax -.L.end.41: +.L.end.42: cmpq $1, %rax - jne .L.else.40 + jne .L.else.41 movq $32, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax leave ret - jmp .L.end.40 -.L.else.40: -.L.end.40: + jmp .L.end.41 +.L.else.41: +.L.end.41: leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax leave ret leave @@ -2408,7 +2408,7 @@ memmove: push %rax movq $1, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -2422,33 +2422,33 @@ memmove: leaq -12(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.42 + jne .L.else.43 movq $0, %rax leave ret - jmp .L.end.42 -.L.else.42: + jmp .L.end.43 +.L.else.43: leaq -4(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.43: +.L.while.start.44: leaq 32(%rbp), %rax movslq (%rax), %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setb %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.43 + jne .L.while.end.44 leaq -4(%rbp), %rax movslq (%rax), %rax push %rax @@ -2464,7 +2464,7 @@ memmove: movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -2476,30 +2476,30 @@ memmove: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.43 -.L.while.end.43: + subq %rdi, %rax + jmp .L.while.start.44 +.L.while.end.44: leaq -4(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.44: +.L.while.start.45: leaq 32(%rbp), %rax movslq (%rax), %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setb %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.44 + jne .L.while.end.45 leaq -4(%rbp), %rax movslq (%rax), %rax push %rax @@ -2515,7 +2515,7 @@ memmove: movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -2527,14 +2527,14 @@ memmove: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.44 -.L.while.end.44: -.L.end.42: + subq %rdi, %rax + jmp .L.while.start.45 +.L.while.end.45: +.L.end.43: leave ret .global align_to @@ -2556,14 +2556,14 @@ align_to: leaq 16(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - cltd - idivl %edi + cqto + idivq %rdi pop %rdi - imull %edi, %eax + imulq %rdi, %rax leave ret leave @@ -2601,18 +2601,18 @@ fputs: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.45: +.L.while.start.46: leaq -12(%rbp), %rax movq (%rax), %rax push %rax leaq -20(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.45 + jne .L.while.end.46 leaq -4(%rbp), %rax push %rax leaq -20(%rbp), %rax @@ -2641,13 +2641,13 @@ fputs: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.46 + jne .L.else.47 .data -.L.str.7: +.L.str.8: .byte 119 .byte 114 .byte 105 @@ -2680,7 +2680,7 @@ fputs: .byte 10 .byte 0 .text - leaq .L.str.7(%rip), %rax + leaq .L.str.8(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -2694,9 +2694,9 @@ fputs: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.46 -.L.else.46: -.L.end.46: + jmp .L.end.47 +.L.else.47: +.L.end.47: leaq -20(%rbp), %rax push %rax leaq -4(%rbp), %rax @@ -2708,8 +2708,8 @@ fputs: addq %rdi, %rax pop %rdi movq %rax, (%rdi) - jmp .L.while.start.45 -.L.while.end.45: + jmp .L.while.start.46 +.L.while.end.46: leaq -4(%rbp), %rax movslq (%rax), %rax leave @@ -2727,18 +2727,18 @@ strlen: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.47: +.L.while.start.48: movq $0, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.47 + jne .L.while.end.48 movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -2753,8 +2753,8 @@ strlen: movq %rax, (%rdi) pop %rdi subq %rdi, %rax - jmp .L.while.start.47 -.L.while.end.47: + jmp .L.while.start.48 +.L.while.end.48: leaq -8(%rbp), %rax movq (%rax), %rax push %rax @@ -2781,11 +2781,11 @@ vec_append: addq $8, %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setge %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.48 + jne .L.else.49 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2794,9 +2794,9 @@ vec_append: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.48 -.L.else.48: -.L.end.48: + jmp .L.end.49 +.L.else.49: +.L.end.49: movq $8, %rax push %rax leaq 16(%rbp), %rax @@ -2804,7 +2804,7 @@ vec_append: addq $8, %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2830,11 +2830,11 @@ vec_append: addq $8, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax leave ret .global vec_get @@ -2847,7 +2847,7 @@ vec_get: leaq 24(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2876,9 +2876,9 @@ vec_realloc: push %rax movq $8, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -2892,13 +2892,13 @@ vec_realloc: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.49 + jne .L.else.50 .data -.L.str.8: +.L.str.9: .byte 97 .byte 108 .byte 108 @@ -2919,7 +2919,7 @@ vec_realloc: .byte 10 .byte 0 .text - leaq .L.str.8(%rip), %rax + leaq .L.str.9(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -2933,9 +2933,9 @@ vec_realloc: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.49 -.L.else.49: -.L.end.49: + jmp .L.end.50 +.L.else.50: +.L.end.50: leaq 16(%rbp), %rax movq (%rax), %rax addq $12, %rax @@ -2943,7 +2943,7 @@ vec_realloc: push %rax movq $8, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2969,7 +2969,7 @@ vec_realloc: addq $12, %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax pop %rdi movl %eax, (%rdi) leaq 16(%rbp), %rax @@ -3007,7 +3007,7 @@ new_vec: push %rax movq $8, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq alloc(%rip), %rax movq %rax, %r10 @@ -3023,13 +3023,13 @@ new_vec: addq $0, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.50 + jne .L.else.51 .data -.L.str.9: +.L.str.10: .byte 97 .byte 108 .byte 108 @@ -3050,7 +3050,7 @@ new_vec: .byte 10 .byte 0 .text - leaq .L.str.9(%rip), %rax + leaq .L.str.10(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3064,9 +3064,9 @@ new_vec: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.50 -.L.else.50: -.L.end.50: + jmp .L.end.51 +.L.else.51: +.L.end.51: leaq -8(%rbp), %rax movq (%rax), %rax addq $8, %rax @@ -3098,38 +3098,38 @@ strcmp: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.51: +.L.while.start.52: movq $1, %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $1, %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.51 + jne .L.while.end.52 movq $0, %rax push %rax movq $1, %rax @@ -3137,25 +3137,25 @@ strcmp: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.52 + jne .L.else.53 movq $1, %rax leave ret - jmp .L.end.52 -.L.else.52: -.L.end.52: + jmp .L.end.53 +.L.else.53: +.L.end.53: movq $1, %rax push %rax leaq -4(%rbp), %rax @@ -3165,13 +3165,13 @@ strcmp: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.51 -.L.while.end.51: + subq %rdi, %rax + jmp .L.while.start.52 +.L.while.end.52: movq $0, %rax leave ret diff --git a/bootstrap/tokenizer.s b/bootstrap/tokenizer.s index b07e884..f41a4da 100644 --- a/bootstrap/tokenizer.s +++ b/bootstrap/tokenizer.s @@ -26,62 +26,62 @@ tokenize_ident: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.0: +.L.while.start.1: leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq isalpha(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax - jne .L.true.2 + jne .L.true.3 leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq isdigit(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmp $0, %rax - jne .L.true.2 + jne .L.true.3 mov $0, %rax - jmp .L.end.2 -.L.true.2: + jmp .L.end.3 +.L.true.3: mov $1, %rax -.L.end.2: +.L.end.3: cmpq $0, %rax - jne .L.true.1 + jne .L.true.2 movq $95, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.1 + jne .L.true.2 mov $0, %rax - jmp .L.end.1 -.L.true.1: + jmp .L.end.2 +.L.true.2: mov $1, %rax -.L.end.1: +.L.end.2: cmpq $1, %rax - jne .L.while.end.0 + jne .L.while.end.1 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -90,8 +90,8 @@ tokenize_ident: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.while.start.0 -.L.while.end.0: + jmp .L.while.start.1 +.L.while.end.1: leaq -16(%rbp), %rax movq (%rax), %rax addq $32, %rax @@ -217,13 +217,13 @@ tokenize_string: leaq -12(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.3 + jne .L.else.4 .data -.L.str.0: +.L.str.1: .byte 109 .byte 101 .byte 109 @@ -251,7 +251,7 @@ tokenize_string: .byte 10 .byte 0 .text - leaq .L.str.0(%rip), %rax + leaq .L.str.1(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -265,15 +265,15 @@ tokenize_string: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.3 -.L.else.3: -.L.end.3: + jmp .L.end.4 +.L.else.4: +.L.end.4: leaq -4(%rbp), %rax push %rax movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.4: +.L.while.start.5: leaq -20(%rbp), %rax movq (%rax), %rax push %rax @@ -282,24 +282,24 @@ tokenize_string: addq $24, %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.4 + jne .L.while.end.5 movq $92, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.5 + jne .L.else.6 movq $1, %rax push %rax movq $1, %rax @@ -311,13 +311,13 @@ tokenize_string: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq -12(%rbp), %rax movq (%rax), %rax @@ -332,11 +332,11 @@ tokenize_string: movq $0, %rax callq *%r10 addq $8, %rsp - movzbl %al, %eax + movzbq %al, %rax pop %rdi movb %al, (%rdi) - jmp .L.end.5 -.L.else.5: + jmp .L.end.6 +.L.else.6: movq $1, %rax push %rax movq $1, %rax @@ -348,13 +348,13 @@ tokenize_string: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq -12(%rbp), %rax movq (%rax), %rax @@ -365,10 +365,10 @@ tokenize_string: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) -.L.end.5: +.L.end.6: leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -377,14 +377,14 @@ tokenize_string: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.while.start.4 -.L.while.end.4: + jmp .L.while.start.5 +.L.while.end.5: movq $1, %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq -12(%rbp), %rax movq (%rax), %rax @@ -496,13 +496,13 @@ tokenize_char: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.6 + jne .L.else.7 leaq -1(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -513,21 +513,21 @@ tokenize_char: movq $0, %rax callq *%r10 addq $8, %rsp - movzbl %al, %eax + movzbq %al, %rax pop %rdi movb %al, (%rdi) - jmp .L.end.6 -.L.else.6: + jmp .L.end.7 +.L.else.7: leaq -1(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movb %al, (%rdi) -.L.end.6: +.L.end.7: movq $2, %rax push %rax leaq 16(%rbp), %rax @@ -582,7 +582,7 @@ tokenize_char: addq $56, %rax push %rax leaq -1(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movl %eax, (%rdi) leaq -17(%rbp), %rax @@ -616,13 +616,13 @@ tokenize_number: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.8 + je .L.false.9 movq $120, %rax push %rax movq $1, %rax @@ -633,13 +633,13 @@ tokenize_number: movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.9 + jne .L.true.10 movq $88, %rax push %rax movq $1, %rax @@ -650,27 +650,27 @@ tokenize_number: movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.9 + jne .L.true.10 mov $0, %rax - jmp .L.end.9 -.L.true.9: + jmp .L.end.10 +.L.true.10: mov $1, %rax -.L.end.9: +.L.end.10: cmpq $0, %rax - je .L.false.8 + je .L.false.9 movq $1, %rax - jmp .L.end.8 -.L.false.8: + jmp .L.end.9 +.L.false.9: movq $0, %rax -.L.end.8: +.L.end.9: cmpq $1, %rax - jne .L.else.7 + jne .L.else.8 movq $2, %rax push %rax leaq 16(%rbp), %rax @@ -693,8 +693,8 @@ tokenize_number: addq $8, %rsp pop %rdi movq %rax, (%rdi) - jmp .L.end.7 -.L.else.7: + jmp .L.end.8 +.L.else.8: leaq -8(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -707,7 +707,7 @@ tokenize_number: addq $8, %rsp pop %rdi movq %rax, (%rdi) -.L.end.7: +.L.end.8: leaq -8(%rbp), %rax movq (%rax), %rax leave @@ -741,21 +741,21 @@ tokenize_decimal_number: movq (%rax), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.10: +.L.while.start.11: leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq isdigit(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.10 + jne .L.while.end.11 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -764,8 +764,8 @@ tokenize_decimal_number: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.while.start.10 -.L.while.end.10: + jmp .L.while.start.11 +.L.while.end.11: leaq -16(%rbp), %rax movq (%rax), %rax addq $32, %rax @@ -859,35 +859,35 @@ tokenize_hex_number: movq $0, %rax pop %rdi movq %rax, (%rdi) -.L.while.start.11: +.L.while.start.12: leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq is_hex_digit(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.11 + jne .L.while.end.12 leaq -8(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq from_hex(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzbl %al, %eax + movzbq %al, %rax push %rax movq $4, %rax push %rax @@ -897,7 +897,7 @@ tokenize_hex_number: movq %rdi, %rcx shl %cl, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movq %rax, (%rdi) leaq 16(%rbp), %rax @@ -908,8 +908,8 @@ tokenize_hex_number: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.while.start.11 -.L.while.end.11: + jmp .L.while.start.12 +.L.while.end.12: leaq -24(%rbp), %rax movq (%rax), %rax addq $32, %rax @@ -980,35 +980,35 @@ read_escaped_char: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $48, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.13 + je .L.false.14 movq $55, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.13 + je .L.false.14 movq $1, %rax - jmp .L.end.13 -.L.false.13: + jmp .L.end.14 +.L.false.14: movq $0, %rax -.L.end.13: +.L.end.14: cmpq $1, %rax - jne .L.else.12 + jne .L.else.13 leaq -1(%rbp), %rax push %rax movq $48, %rax @@ -1017,9 +1017,9 @@ read_escaped_char: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -1030,15 +1030,15 @@ read_escaped_char: movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $48, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.15 + je .L.false.16 movq $55, %rax push %rax movq $1, %rax @@ -1049,20 +1049,20 @@ read_escaped_char: movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.15 + je .L.false.16 movq $1, %rax - jmp .L.end.15 -.L.false.15: + jmp .L.end.16 +.L.false.16: movq $0, %rax -.L.end.15: +.L.end.16: cmpq $1, %rax - jne .L.else.14 + jne .L.else.15 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -1079,19 +1079,19 @@ read_escaped_char: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax push %rax movq $3, %rax push %rax leaq -1(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movq %rdi, %rcx - shl %cl, %eax + shl %cl, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movb %al, (%rdi) movq $1, %rax @@ -1102,15 +1102,15 @@ read_escaped_char: movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $48, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.17 + je .L.false.18 movq $55, %rax push %rax movq $1, %rax @@ -1121,20 +1121,20 @@ read_escaped_char: movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.17 + je .L.false.18 movq $1, %rax - jmp .L.end.17 -.L.false.17: + jmp .L.end.18 +.L.false.18: movq $0, %rax -.L.end.17: +.L.end.18: cmpq $1, %rax - jne .L.else.16 + jne .L.else.17 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -1151,47 +1151,47 @@ read_escaped_char: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax push %rax movq $3, %rax push %rax leaq -1(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movq %rdi, %rcx - shl %cl, %eax + shl %cl, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movb %al, (%rdi) - jmp .L.end.16 -.L.else.16: -.L.end.16: - jmp .L.end.14 -.L.else.14: -.L.end.14: + jmp .L.end.17 +.L.else.17: +.L.end.17: + jmp .L.end.15 +.L.else.15: +.L.end.15: leaq -1(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax leave ret - jmp .L.end.12 -.L.else.12: -.L.end.12: + jmp .L.end.13 +.L.else.13: +.L.end.13: movq $120, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.18 + jne .L.else.19 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -1204,19 +1204,19 @@ read_escaped_char: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq is_hex_digit(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $0, %rax sete %al movzbq %al, %rax cmpq $1, %rax - jne .L.else.19 + jne .L.else.20 leaq 16(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -1236,7 +1236,7 @@ read_escaped_char: push %rax push $3 .data -.L.str.1: +.L.str.2: .byte 27 .byte 91 .byte 49 @@ -1301,7 +1301,7 @@ read_escaped_char: .byte 10 .byte 0 .text - leaq .L.str.1(%rip), %rax + leaq .L.str.2(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -1315,48 +1315,48 @@ read_escaped_char: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.19 -.L.else.19: -.L.end.19: -.L.while.start.20: + jmp .L.end.20 +.L.else.20: +.L.end.20: +.L.while.start.21: leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq is_hex_digit(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.while.end.20 + jne .L.while.end.21 leaq -1(%rbp), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq from_hex(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzbl %al, %eax + movzbq %al, %rax push %rax movq $4, %rax push %rax leaq -1(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi movq %rdi, %rcx - shl %cl, %eax + shl %cl, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movb %al, (%rdi) leaq 16(%rbp), %rax @@ -1367,149 +1367,149 @@ read_escaped_char: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.while.start.20 -.L.while.end.20: - jmp .L.end.18 -.L.else.18: -.L.end.18: + jmp .L.while.start.21 +.L.while.end.21: + jmp .L.end.19 +.L.else.19: +.L.end.19: movq $97, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax - pop %rdi - cmpl %edi, %eax - sete %al - movzbl %al, %eax - cmpq $1, %rax - jne .L.else.21 - movq $7, %rax - leave - ret - jmp .L.end.21 -.L.else.21: -.L.end.21: - movq $98, %rax - push %rax - leaq 16(%rbp), %rax - movq (%rax), %rax - addq $24, %rax - movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax jne .L.else.22 - movq $8, %rax + movq $7, %rax leave ret jmp .L.end.22 .L.else.22: .L.end.22: - movq $116, %rax + movq $98, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax jne .L.else.23 - movq $9, %rax + movq $8, %rax leave ret jmp .L.end.23 .L.else.23: .L.end.23: - movq $110, %rax + movq $116, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax jne .L.else.24 - movq $10, %rax + movq $9, %rax leave ret jmp .L.end.24 .L.else.24: .L.end.24: - movq $118, %rax + movq $110, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax jne .L.else.25 - movq $11, %rax + movq $10, %rax leave ret jmp .L.end.25 .L.else.25: .L.end.25: - movq $102, %rax + movq $118, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax jne .L.else.26 - movq $12, %rax + movq $11, %rax leave ret jmp .L.end.26 .L.else.26: .L.end.26: - movq $114, %rax + movq $102, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax jne .L.else.27 - movq $13, %rax + movq $12, %rax leave ret jmp .L.end.27 .L.else.27: .L.end.27: + movq $114, %rax + push %rax + leaq 16(%rbp), %rax + movq (%rax), %rax + addq $24, %rax + movq (%rax), %rax + movzbq (%rax), %rax + pop %rdi + cmpq %rdi, %rax + sete %al + movzbq %al, %rax + cmpq $1, %rax + jne .L.else.28 + movq $13, %rax + leave + ret + jmp .L.end.28 +.L.else.28: +.L.end.28: leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax leave ret leave @@ -1520,95 +1520,95 @@ from_hex: movq %rsp, %rbp subq $0, %rsp leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $48, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.29 + je .L.false.30 movq $57, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.29 + je .L.false.30 movq $1, %rax - jmp .L.end.29 -.L.false.29: + jmp .L.end.30 +.L.false.30: movq $0, %rax -.L.end.29: +.L.end.30: cmpq $1, %rax - jne .L.else.28 + jne .L.else.29 movq $48, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax leave ret - jmp .L.end.28 -.L.else.28: -.L.end.28: + jmp .L.end.29 +.L.else.29: +.L.end.29: leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $97, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.31 + je .L.false.32 movq $102, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.31 + je .L.false.32 movq $1, %rax - jmp .L.end.31 -.L.false.31: + jmp .L.end.32 +.L.false.32: movq $0, %rax -.L.end.31: +.L.end.32: cmpq $1, %rax - jne .L.else.30 + jne .L.else.31 movq $10, %rax push %rax movq $97, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax leave ret - jmp .L.end.30 -.L.else.30: -.L.end.30: + jmp .L.end.31 +.L.else.31: +.L.end.31: movq $10, %rax push %rax movq $65, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - subl %edi, %eax + subq %rdi, %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax leave ret leave @@ -1619,98 +1619,98 @@ is_hex_digit: movq %rsp, %rbp subq $0, %rsp leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $48, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.34 + je .L.false.35 movq $57, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.34 + je .L.false.35 movq $1, %rax - jmp .L.end.34 -.L.false.34: + jmp .L.end.35 +.L.false.35: movq $0, %rax -.L.end.34: +.L.end.35: cmpq $0, %rax - jne .L.true.33 + jne .L.true.34 leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $65, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.35 + je .L.false.36 movq $70, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.35 + je .L.false.36 movq $1, %rax - jmp .L.end.35 -.L.false.35: + jmp .L.end.36 +.L.false.36: movq $0, %rax -.L.end.35: +.L.end.36: cmp $0, %rax - jne .L.true.33 + jne .L.true.34 mov $0, %rax - jmp .L.end.33 -.L.true.33: + jmp .L.end.34 +.L.true.34: mov $1, %rax -.L.end.33: +.L.end.34: cmpq $0, %rax - jne .L.true.32 + jne .L.true.33 leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $97, %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setle %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.36 + je .L.false.37 movq $102, %rax push %rax leaq 16(%rbp), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setbe %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.36 + je .L.false.37 movq $1, %rax - jmp .L.end.36 -.L.false.36: + jmp .L.end.37 +.L.false.37: movq $0, %rax -.L.end.36: +.L.end.37: cmp $0, %rax - jne .L.true.32 + jne .L.true.33 mov $0, %rax - jmp .L.end.32 -.L.true.32: + jmp .L.end.33 +.L.true.33: mov $1, %rax -.L.end.32: +.L.end.33: leave ret leave @@ -1720,47 +1720,47 @@ string_end: push %rbp movq %rsp, %rbp subq $0, %rsp -.L.while.start.37: +.L.while.start.38: movq $34, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.37 + jne .L.while.end.38 movq $10, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - jne .L.true.39 + jne .L.true.40 movq $0, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmp $0, %rax - jne .L.true.39 + jne .L.true.40 mov $0, %rax - jmp .L.end.39 -.L.true.39: + jmp .L.end.40 +.L.true.40: mov $1, %rax -.L.end.39: +.L.end.40: cmpq $1, %rax - jne .L.else.38 + jne .L.else.39 leaq 16(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -1780,7 +1780,7 @@ string_end: push %rax push $3 .data -.L.str.2: +.L.str.3: .byte 27 .byte 91 .byte 49 @@ -1841,7 +1841,7 @@ string_end: .byte 10 .byte 0 .text - leaq .L.str.2(%rip), %rax + leaq .L.str.3(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -1855,20 +1855,20 @@ string_end: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.38 -.L.else.38: -.L.end.38: + jmp .L.end.39 +.L.else.39: +.L.end.39: movq $92, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.40 + jne .L.else.41 movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -1883,9 +1883,9 @@ string_end: movq %rax, (%rdi) pop %rdi subq %rdi, %rax - jmp .L.end.40 -.L.else.40: -.L.end.40: + jmp .L.end.41 +.L.else.41: +.L.end.41: movq $1, %rax push %rax leaq 24(%rbp), %rax @@ -1900,8 +1900,8 @@ string_end: movq %rax, (%rdi) pop %rdi subq %rdi, %rax - jmp .L.while.start.37 -.L.while.end.37: + jmp .L.while.start.38 +.L.while.end.38: leaq 24(%rbp), %rax movq (%rax), %rax leave @@ -1914,12 +1914,12 @@ skip_single_line_comment: movq %rsp, %rbp subq $0, %rsp .data -.L.str.3: +.L.str.4: .byte 47 .byte 47 .byte 0 .text - leaq .L.str.3(%rip), %rax + leaq .L.str.4(%rip), %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -1931,43 +1931,43 @@ skip_single_line_comment: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.41 -.L.while.start.42: + jne .L.else.42 +.L.while.start.43: movq $10, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.43 + je .L.false.44 movq $0, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.43 + je .L.false.44 movq $1, %rax - jmp .L.end.43 -.L.false.43: + jmp .L.end.44 +.L.false.44: movq $0, %rax -.L.end.43: +.L.end.44: cmpq $1, %rax - jne .L.while.end.42 + jne .L.while.end.43 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -1976,11 +1976,11 @@ skip_single_line_comment: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.while.start.42 -.L.while.end.42: - jmp .L.end.41 -.L.else.41: -.L.end.41: + jmp .L.while.start.43 +.L.while.end.43: + jmp .L.end.42 +.L.else.42: +.L.end.42: leave ret .global tokenize_punct @@ -1993,23 +1993,23 @@ tokenize_punct: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.44: +.L.while.start.45: movq $34, %rax push %rax leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.44 + jne .L.while.end.45 movq $8, %rax push %rax leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2028,9 +2028,9 @@ tokenize_punct: movq $0, %rax callq *%r10 addq $16, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.45 + jne .L.else.46 leaq -8(%rbp), %rax push %rax movq $4, %rax @@ -2054,7 +2054,7 @@ tokenize_punct: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2084,7 +2084,7 @@ tokenize_punct: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax @@ -2117,9 +2117,9 @@ tokenize_punct: movq (%rax), %rax leave ret - jmp .L.end.45 -.L.else.45: -.L.end.45: + jmp .L.end.46 +.L.else.46: +.L.end.46: movq $1, %rax push %rax leaq -12(%rbp), %rax @@ -2129,13 +2129,13 @@ tokenize_punct: leaq -12(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.44 -.L.while.end.44: + subq %rdi, %rax + jmp .L.while.start.45 +.L.while.end.45: movq $0, %rax leave ret @@ -2162,13 +2162,13 @@ new_token: leaq -8(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.46 + jne .L.else.47 .data -.L.str.4: +.L.str.5: .byte 109 .byte 101 .byte 109 @@ -2196,7 +2196,7 @@ new_token: .byte 10 .byte 0 .text - leaq .L.str.4(%rip), %rax + leaq .L.str.5(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -2210,9 +2210,9 @@ new_token: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.46 -.L.else.46: -.L.end.46: + jmp .L.end.47 +.L.else.47: +.L.end.47: leaq -8(%rbp), %rax movq (%rax), %rax addq $24, %rax @@ -2277,18 +2277,18 @@ tokenizer_next_n: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.47: +.L.while.start.48: leaq 24(%rbp), %rax movslq (%rax), %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.47 + jne .L.while.end.48 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2306,13 +2306,13 @@ tokenizer_next_n: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.47 -.L.while.end.47: + subq %rdi, %rax + jmp .L.while.start.48 +.L.while.end.48: leave ret .global tokenizer_next @@ -2326,13 +2326,13 @@ tokenizer_next: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.48 + jne .L.else.49 movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -2346,11 +2346,11 @@ tokenizer_next: addq $20, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $16, %rax @@ -2386,8 +2386,8 @@ tokenizer_next: movq (%rax), %rax pop %rdi movq %rax, (%rdi) - jmp .L.end.48 -.L.else.48: + jmp .L.end.49 +.L.else.49: movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -2401,11 +2401,11 @@ tokenizer_next: addq $16, %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax + subq %rdi, %rax movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -2424,7 +2424,7 @@ tokenizer_next: movq %rax, (%rdi) pop %rdi subq %rdi, %rax -.L.end.48: +.L.end.49: leave ret .global starts_with @@ -2437,7 +2437,7 @@ starts_with: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.49: +.L.while.start.50: leaq 24(%rbp), %rax movq (%rax), %rax push %rax @@ -2450,48 +2450,48 @@ starts_with: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.49 + jne .L.while.end.50 movq $1, %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 24(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax movq $1, %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - imull %edi, %eax + imulq %rdi, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax pop %rdi addq %rdi, %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.50 + jne .L.else.51 movq $0, %rax leave ret - jmp .L.end.50 -.L.else.50: -.L.end.50: + jmp .L.end.51 +.L.else.51: +.L.end.51: movq $1, %rax push %rax leaq -4(%rbp), %rax @@ -2501,13 +2501,13 @@ starts_with: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.49 -.L.while.end.49: + subq %rdi, %rax + jmp .L.while.start.50 +.L.while.end.50: movq $1, %rax leave ret @@ -2523,18 +2523,18 @@ frepeat_str: movq $0, %rax pop %rdi movl %eax, (%rdi) -.L.while.start.51: +.L.while.start.52: leaq 32(%rbp), %rax movslq (%rax), %rax push %rax leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setl %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.51 + jne .L.while.end.52 leaq 24(%rbp), %rax movq (%rax), %rax push %rax @@ -2555,13 +2555,13 @@ frepeat_str: leaq -4(%rbp), %rax movslq (%rax), %rax pop %rdi - addl %edi, %eax + addq %rdi, %rax pop %rdi movl %eax, (%rdi) pop %rdi - subl %edi, %eax - jmp .L.while.start.51 -.L.while.end.51: + subq %rdi, %rax + jmp .L.while.start.52 +.L.while.end.52: movq $0, %rax leave ret @@ -2582,20 +2582,20 @@ tokenize: leaq -96(%rbp), %rax pop %rdi movq %rax, (%rdi) -.L.while.start.52: +.L.while.start.53: movq $0, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.while.end.52 + jne .L.while.end.53 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2608,16 +2608,16 @@ tokenize: movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq isdigit(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.53 + jne .L.else.54 leaq -24(%rbp), %rax push %rax leaq -24(%rbp), %rax @@ -2636,22 +2636,22 @@ tokenize: movq %rax, (%rdi) pop %rdi movq %rax, (%rdi) - jmp .L.end.53 -.L.else.53: + jmp .L.end.54 +.L.else.54: leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax push %rax leaq isalpha(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp - movzx %al, %eax + movzx %al, %rax cmpq $1, %rax - jne .L.else.54 + jne .L.else.55 leaq -24(%rbp), %rax push %rax leaq -24(%rbp), %rax @@ -2670,21 +2670,21 @@ tokenize: movq %rax, (%rdi) pop %rdi movq %rax, (%rdi) - jmp .L.end.54 -.L.else.54: + jmp .L.end.55 +.L.else.55: movq $39, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.55 + jne .L.else.56 leaq -24(%rbp), %rax push %rax leaq -24(%rbp), %rax @@ -2703,21 +2703,21 @@ tokenize: movq %rax, (%rdi) pop %rdi movq %rax, (%rdi) - jmp .L.end.55 -.L.else.55: + jmp .L.end.56 +.L.else.56: movq $34, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.56 + jne .L.else.57 leaq -24(%rbp), %rax push %rax leaq -24(%rbp), %rax @@ -2736,21 +2736,21 @@ tokenize: movq %rax, (%rdi) pop %rdi movq %rax, (%rdi) - jmp .L.end.56 -.L.else.56: + jmp .L.end.57 +.L.else.57: movq $32, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.57 + jne .L.else.58 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2759,21 +2759,21 @@ tokenize: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.57 -.L.else.57: + jmp .L.end.58 +.L.else.58: movq $10, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.58 + jne .L.else.59 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2782,21 +2782,21 @@ tokenize: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.58 -.L.else.58: + jmp .L.end.59 +.L.else.59: movq $9, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $24, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.59 + jne .L.else.60 leaq 16(%rbp), %rax movq (%rax), %rax push %rax @@ -2805,8 +2805,8 @@ tokenize: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.59 -.L.else.59: + jmp .L.end.60 +.L.else.60: leaq -16(%rbp), %rax push %rax leaq 16(%rbp), %rax @@ -2824,11 +2824,11 @@ tokenize: leaq -16(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.60 + jne .L.else.61 leaq -24(%rbp), %rax push %rax leaq -24(%rbp), %rax @@ -2841,8 +2841,8 @@ tokenize: movq %rax, (%rdi) pop %rdi movq %rax, (%rdi) - jmp .L.end.60 -.L.else.60: + jmp .L.end.61 +.L.else.61: leaq -8(%rbp), %rax push %rax movq $6, %rax @@ -2883,7 +2883,7 @@ tokenize: pop %rdi movl %eax, (%rdi) .data -.L.str.5: +.L.str.6: .byte 117 .byte 110 .byte 107 @@ -2908,7 +2908,7 @@ tokenize: .byte 100 .byte 0 .text - leaq .L.str.5(%rip), %rax + leaq .L.str.6(%rip), %rax push %rax leaq -8(%rbp), %rax movq (%rax), %rax @@ -2918,6 +2918,7 @@ tokenize: movq $0, %rax callq *%r10 addq $16, %rsp +.L.end.61: .L.end.60: .L.end.59: .L.end.58: @@ -2925,9 +2926,8 @@ tokenize: .L.end.56: .L.end.55: .L.end.54: -.L.end.53: - jmp .L.while.start.52 -.L.while.end.52: + jmp .L.while.start.53 +.L.while.end.53: leaq -24(%rbp), %rax push %rax leaq -24(%rbp), %rax @@ -2953,13 +2953,13 @@ tokenize: addq $32, %rax push %rax .data -.L.str.6: +.L.str.7: .byte 69 .byte 79 .byte 70 .byte 0 .text - leaq .L.str.6(%rip), %rax + leaq .L.str.7(%rip), %rax pop %rdi movq %rax, (%rdi) leaq -24(%rbp), %rax @@ -2997,13 +2997,13 @@ new_tokenizer: leaq -280(%rbp), %rax movq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.61 + jne .L.else.62 .data -.L.str.7: +.L.str.8: .byte 109 .byte 101 .byte 109 @@ -3031,7 +3031,7 @@ new_tokenizer: .byte 10 .byte 0 .text - leaq .L.str.7(%rip), %rax + leaq .L.str.8(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3045,9 +3045,9 @@ new_tokenizer: movq $0, %rax callq *%r10 addq $8, %rsp - jmp .L.end.61 -.L.else.61: -.L.end.61: + jmp .L.end.62 +.L.else.62: +.L.end.62: leaq -280(%rbp), %rax movq (%rax), %rax addq $20, %rax @@ -3093,12 +3093,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.8: +.L.str.9: .byte 61 .byte 61 .byte 0 .text - leaq .L.str.8(%rip), %rax + leaq .L.str.9(%rip), %rax pop %rdi movq %rax, (%rdi) movq $8, %rax @@ -3108,12 +3108,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.9: +.L.str.10: .byte 60 .byte 61 .byte 0 .text - leaq .L.str.9(%rip), %rax + leaq .L.str.10(%rip), %rax pop %rdi movq %rax, (%rdi) movq $16, %rax @@ -3123,12 +3123,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.10: +.L.str.11: .byte 62 .byte 61 .byte 0 .text - leaq .L.str.10(%rip), %rax + leaq .L.str.11(%rip), %rax pop %rdi movq %rax, (%rdi) movq $24, %rax @@ -3138,12 +3138,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.11: +.L.str.12: .byte 33 .byte 61 .byte 0 .text - leaq .L.str.11(%rip), %rax + leaq .L.str.12(%rip), %rax pop %rdi movq %rax, (%rdi) movq $32, %rax @@ -3153,12 +3153,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.12: +.L.str.13: .byte 43 .byte 43 .byte 0 .text - leaq .L.str.12(%rip), %rax + leaq .L.str.13(%rip), %rax pop %rdi movq %rax, (%rdi) movq $40, %rax @@ -3168,12 +3168,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.13: +.L.str.14: .byte 45 .byte 45 .byte 0 .text - leaq .L.str.13(%rip), %rax + leaq .L.str.14(%rip), %rax pop %rdi movq %rax, (%rdi) movq $48, %rax @@ -3183,12 +3183,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.14: +.L.str.15: .byte 124 .byte 124 .byte 0 .text - leaq .L.str.14(%rip), %rax + leaq .L.str.15(%rip), %rax pop %rdi movq %rax, (%rdi) movq $56, %rax @@ -3198,12 +3198,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.15: +.L.str.16: .byte 38 .byte 38 .byte 0 .text - leaq .L.str.15(%rip), %rax + leaq .L.str.16(%rip), %rax pop %rdi movq %rax, (%rdi) movq $64, %rax @@ -3213,12 +3213,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.16: +.L.str.17: .byte 60 .byte 60 .byte 0 .text - leaq .L.str.16(%rip), %rax + leaq .L.str.17(%rip), %rax pop %rdi movq %rax, (%rdi) movq $72, %rax @@ -3228,12 +3228,12 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.17: +.L.str.18: .byte 62 .byte 62 .byte 0 .text - leaq .L.str.17(%rip), %rax + leaq .L.str.18(%rip), %rax pop %rdi movq %rax, (%rdi) movq $80, %rax @@ -3243,13 +3243,13 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.18: +.L.str.19: .byte 46 .byte 46 .byte 46 .byte 0 .text - leaq .L.str.18(%rip), %rax + leaq .L.str.19(%rip), %rax pop %rdi movq %rax, (%rdi) movq $88, %rax @@ -3259,11 +3259,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.19: +.L.str.20: .byte 43 .byte 0 .text - leaq .L.str.19(%rip), %rax + leaq .L.str.20(%rip), %rax pop %rdi movq %rax, (%rdi) movq $96, %rax @@ -3273,11 +3273,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.20: +.L.str.21: .byte 45 .byte 0 .text - leaq .L.str.20(%rip), %rax + leaq .L.str.21(%rip), %rax pop %rdi movq %rax, (%rdi) movq $104, %rax @@ -3287,11 +3287,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.21: +.L.str.22: .byte 60 .byte 0 .text - leaq .L.str.21(%rip), %rax + leaq .L.str.22(%rip), %rax pop %rdi movq %rax, (%rdi) movq $112, %rax @@ -3301,11 +3301,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.22: +.L.str.23: .byte 62 .byte 0 .text - leaq .L.str.22(%rip), %rax + leaq .L.str.23(%rip), %rax pop %rdi movq %rax, (%rdi) movq $120, %rax @@ -3315,11 +3315,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.23: +.L.str.24: .byte 59 .byte 0 .text - leaq .L.str.23(%rip), %rax + leaq .L.str.24(%rip), %rax pop %rdi movq %rax, (%rdi) movq $128, %rax @@ -3329,11 +3329,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.24: +.L.str.25: .byte 58 .byte 0 .text - leaq .L.str.24(%rip), %rax + leaq .L.str.25(%rip), %rax pop %rdi movq %rax, (%rdi) movq $136, %rax @@ -3343,11 +3343,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.25: +.L.str.26: .byte 123 .byte 0 .text - leaq .L.str.25(%rip), %rax + leaq .L.str.26(%rip), %rax pop %rdi movq %rax, (%rdi) movq $144, %rax @@ -3357,11 +3357,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.26: +.L.str.27: .byte 125 .byte 0 .text - leaq .L.str.26(%rip), %rax + leaq .L.str.27(%rip), %rax pop %rdi movq %rax, (%rdi) movq $152, %rax @@ -3371,11 +3371,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.27: +.L.str.28: .byte 61 .byte 0 .text - leaq .L.str.27(%rip), %rax + leaq .L.str.28(%rip), %rax pop %rdi movq %rax, (%rdi) movq $160, %rax @@ -3385,11 +3385,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.28: +.L.str.29: .byte 44 .byte 0 .text - leaq .L.str.28(%rip), %rax + leaq .L.str.29(%rip), %rax pop %rdi movq %rax, (%rdi) movq $168, %rax @@ -3399,11 +3399,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.29: +.L.str.30: .byte 40 .byte 0 .text - leaq .L.str.29(%rip), %rax + leaq .L.str.30(%rip), %rax pop %rdi movq %rax, (%rdi) movq $176, %rax @@ -3413,11 +3413,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.30: +.L.str.31: .byte 41 .byte 0 .text - leaq .L.str.30(%rip), %rax + leaq .L.str.31(%rip), %rax pop %rdi movq %rax, (%rdi) movq $184, %rax @@ -3427,11 +3427,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.31: +.L.str.32: .byte 91 .byte 0 .text - leaq .L.str.31(%rip), %rax + leaq .L.str.32(%rip), %rax pop %rdi movq %rax, (%rdi) movq $192, %rax @@ -3441,11 +3441,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.32: +.L.str.33: .byte 93 .byte 0 .text - leaq .L.str.32(%rip), %rax + leaq .L.str.33(%rip), %rax pop %rdi movq %rax, (%rdi) movq $200, %rax @@ -3455,11 +3455,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.33: +.L.str.34: .byte 46 .byte 0 .text - leaq .L.str.33(%rip), %rax + leaq .L.str.34(%rip), %rax pop %rdi movq %rax, (%rdi) movq $208, %rax @@ -3469,11 +3469,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.34: +.L.str.35: .byte 42 .byte 0 .text - leaq .L.str.34(%rip), %rax + leaq .L.str.35(%rip), %rax pop %rdi movq %rax, (%rdi) movq $216, %rax @@ -3483,11 +3483,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.35: +.L.str.36: .byte 35 .byte 0 .text - leaq .L.str.35(%rip), %rax + leaq .L.str.36(%rip), %rax pop %rdi movq %rax, (%rdi) movq $224, %rax @@ -3497,11 +3497,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.36: +.L.str.37: .byte 33 .byte 0 .text - leaq .L.str.36(%rip), %rax + leaq .L.str.37(%rip), %rax pop %rdi movq %rax, (%rdi) movq $232, %rax @@ -3511,11 +3511,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.37: +.L.str.38: .byte 37 .byte 0 .text - leaq .L.str.37(%rip), %rax + leaq .L.str.38(%rip), %rax pop %rdi movq %rax, (%rdi) movq $240, %rax @@ -3525,11 +3525,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.38: +.L.str.39: .byte 38 .byte 0 .text - leaq .L.str.38(%rip), %rax + leaq .L.str.39(%rip), %rax pop %rdi movq %rax, (%rdi) movq $248, %rax @@ -3539,11 +3539,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.39: +.L.str.40: .byte 47 .byte 0 .text - leaq .L.str.39(%rip), %rax + leaq .L.str.40(%rip), %rax pop %rdi movq %rax, (%rdi) movq $256, %rax @@ -3553,11 +3553,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.40: +.L.str.41: .byte 124 .byte 0 .text - leaq .L.str.40(%rip), %rax + leaq .L.str.41(%rip), %rax pop %rdi movq %rax, (%rdi) movq $264, %rax @@ -3567,11 +3567,11 @@ new_tokenizer: addq %rdi, %rax push %rax .data -.L.str.41: +.L.str.42: .byte 38 .byte 0 .text - leaq .L.str.41(%rip), %rax + leaq .L.str.42(%rip), %rax pop %rdi movq %rax, (%rdi) movq $272, %rax @@ -3642,7 +3642,7 @@ print_error_with_code: push %rax push $3 .data -.L.str.42: +.L.str.43: .byte 27 .byte 91 .byte 49 @@ -3679,7 +3679,7 @@ print_error_with_code: .byte 10 .byte 0 .text - leaq .L.str.42(%rip), %rax + leaq .L.str.43(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3687,14 +3687,14 @@ print_error_with_code: callq *%r10 addq $48, %rsp .data -.L.str.43: +.L.str.44: .byte 32 .byte 124 .byte 32 .byte 10 .byte 0 .text - leaq .L.str.43(%rip), %rax + leaq .L.str.44(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3702,74 +3702,74 @@ print_error_with_code: callq *%r10 addq $8, %rsp .data -.L.str.44: +.L.str.45: .byte 32 .byte 124 .byte 32 .byte 0 .text - leaq .L.str.44(%rip), %rax + leaq .L.str.45(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 movq $0, %rax callq *%r10 addq $8, %rsp -.L.while.start.62: +.L.while.start.63: movq $10, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.63 + je .L.false.64 movq $0, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax setne %al - movzbl %al, %eax + movzbq %al, %rax cmpq $0, %rax - je .L.false.63 + je .L.false.64 movq $1, %rax - jmp .L.end.63 -.L.false.63: + jmp .L.end.64 +.L.false.64: movq $0, %rax -.L.end.63: +.L.end.64: cmpq $1, %rax - jne .L.while.end.62 + jne .L.while.end.63 movq $9, %rax push %rax leaq 16(%rbp), %rax movq (%rax), %rax addq $16, %rax movq (%rax), %rax - movzbl (%rax), %eax + movzbq (%rax), %rax pop %rdi - cmpl %edi, %eax + cmpq %rdi, %rax sete %al - movzbl %al, %eax + movzbq %al, %rax cmpq $1, %rax - jne .L.else.64 + jne .L.else.65 movq $1, %rax push %rax .data -.L.str.45: +.L.str.46: .byte 32 .byte 0 .text - leaq .L.str.45(%rip), %rax + leaq .L.str.46(%rip), %rax push %rax movq $2, %rax push %rax @@ -3778,8 +3778,8 @@ print_error_with_code: movq $0, %rax callq *%r10 addq $24, %rsp - jmp .L.end.64 -.L.else.64: + jmp .L.end.65 +.L.else.65: movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -3794,7 +3794,7 @@ print_error_with_code: movq $0, %rax callq *%r10 addq $24, %rsp -.L.end.64: +.L.end.65: movq $1, %rax push %rax leaq 16(%rbp), %rax @@ -3813,14 +3813,14 @@ print_error_with_code: movq %rax, (%rdi) pop %rdi subq %rdi, %rax - jmp .L.while.start.62 -.L.while.end.62: + jmp .L.while.start.63 +.L.while.end.63: .data -.L.str.46: +.L.str.47: .byte 10 .byte 0 .text - leaq .L.str.46(%rip), %rax + leaq .L.str.47(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3828,13 +3828,13 @@ print_error_with_code: callq *%r10 addq $8, %rsp .data -.L.str.47: +.L.str.48: .byte 32 .byte 124 .byte 32 .byte 0 .text - leaq .L.str.47(%rip), %rax + leaq .L.str.48(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3842,7 +3842,7 @@ print_error_with_code: callq *%r10 addq $8, %rsp .data -.L.str.48: +.L.str.49: .byte 27 .byte 91 .byte 49 @@ -3854,7 +3854,7 @@ print_error_with_code: .byte 109 .byte 0 .text - leaq .L.str.48(%rip), %rax + leaq .L.str.49(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3867,11 +3867,11 @@ print_error_with_code: movslq (%rax), %rax push %rax .data -.L.str.49: +.L.str.50: .byte 32 .byte 0 .text - leaq .L.str.49(%rip), %rax + leaq .L.str.50(%rip), %rax push %rax movq $2, %rax push %rax @@ -3886,11 +3886,11 @@ print_error_with_code: movslq (%rax), %rax push %rax .data -.L.str.50: +.L.str.51: .byte 94 .byte 0 .text - leaq .L.str.50(%rip), %rax + leaq .L.str.51(%rip), %rax push %rax movq $2, %rax push %rax @@ -3906,7 +3906,7 @@ print_error_with_code: push %rax push $1 .data -.L.str.51: +.L.str.52: .byte 32 .byte 37 .byte 115 @@ -3917,7 +3917,7 @@ print_error_with_code: .byte 10 .byte 0 .text - leaq .L.str.51(%rip), %rax + leaq .L.str.52(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 @@ -3925,14 +3925,14 @@ print_error_with_code: callq *%r10 addq $32, %rsp .data -.L.str.52: +.L.str.53: .byte 32 .byte 124 .byte 32 .byte 10 .byte 0 .text - leaq .L.str.52(%rip), %rax + leaq .L.str.53(%rip), %rax push %rax leaq eprintf(%rip), %rax movq %rax, %r10 diff --git a/src/codegen/codegen.ibu b/src/codegen/codegen.ibu index 44477e8..8e2b955 100644 --- a/src/codegen/codegen.ibu +++ b/src/codegen/codegen.ibu @@ -12,8 +12,8 @@ func new_gen() *Gen { eprintf("memory allocation failed\n"); exit(1); } - g.label_count = 0; - g.str_label_count = 0; + g.label_count = 1; + g.str_label_count = 1; return g; } @@ -388,6 +388,46 @@ func gen_node_block(g *Gen, stmts *Vec) i32 { return 0; } +func sort_switch_cases(switch_node *Node) u0 { + for let i i32 = 0; i < switch_node.cases.len - 1; i++ { + for let j i32 = 0; j < switch_node.cases.len - i - 1; j++ { + let case1 *Node = vec_get(switch_node.cases, j); + let case2 *Node = vec_get(switch_node.cases, j + 1); + if case1.cond.int_val > case2.cond.int_val { + switch_node.cases.ptr[j] = case2; + switch_node.cases.ptr[j + 1] = case1; + } + } + } +} + +func gen_jmp_table(g *Gen, node *Node, unique_label_count i32) i32 { + let min_case *Node = vec_get(node.cases, 0); + let min i32 = min_case.cond.int_val; + + printf(".data\n"); + printf("jump_table:\n"); + for let i i32 = 0; i < node.cases.len; i++ { + let case_node *Node = vec_get(node.cases, i); + let case_label_name *u8 = alloc(40); // this should be enough + sprintf(case_label_name, ".L.case.%d.%d", unique_label_count, case_node.cond.int_val); + case_node.label_name = case_label_name; + if i != 0 { + let prev_case_node *Node = vec_get(node.cases, i-1); + let gap i32 = case_node.cond.int_val - prev_case_node.cond.int_val - 1; + printf("\t.rept %d\n", gap); + printf("\t.quad 0\n"); + printf("\t.endr\n"); + printf("\t.quad %s\n", case_node.label_name); + } else { + printf("\t.quad %s\n", case_node.label_name); + } + } + printf(".text\n"); + + return min; +} + func gen_stmt(g *Gen, node *Node) i32 { let c i32 = 0; if node.kind == ND_EMPTY { @@ -401,6 +441,22 @@ func gen_stmt(g *Gen, node *Node) i32 { gen_expr(g, node.lhs); return 0; } + if node.kind == ND_SWITCH { + sort_switch_cases(node); + let unique_label_count i32 = g.label_count++; + let min i32 = gen_jmp_table(g, node, unique_label_count); + gen_expr(g, node.cond); + printf("\tsubq $%d, %%rax\n", min); + printf("\tmovq jump_table(, %%rax, 8), %%rax\n"); + printf("\tjmp *%%rax\n"); + + gen_stmt(g, node.then_block); + return 0; + } + if node.kind == ND_CASE { + printf("%s:\n", node.label_name); + return 0; + } if node.kind == ND_MEMZERO { gen_expr(g, node.lhs); printf("\tmovq %%rax, %%rdi\n"); diff --git a/src/parser/header.ibu b/src/parser/header.ibu index 26a9c98..9723b66 100644 --- a/src/parser/header.ibu +++ b/src/parser/header.ibu @@ -38,6 +38,8 @@ #define ND_MEMZERO 32 #define ND_AND 33 #define ND_OR 34 +#define ND_SWITCH 35 +#define ND_CASE 36 #define TypeKind i32 #define TY_I64 0 @@ -123,6 +125,7 @@ struct Node { body *Vec, then_block *Node, else_block *Node, + cases *Vec, init *Node, cond *Node, inc *Node, @@ -157,6 +160,9 @@ struct Parser { locals *Object, scope *Scope, + // switch statement + current_switch *Node, + // types user_defined_types *Vec, ty_i8 *Type, diff --git a/src/parser/parser.ibu b/src/parser/parser.ibu index 41a4148..3f5f004 100644 --- a/src/parser/parser.ibu +++ b/src/parser/parser.ibu @@ -1234,7 +1234,60 @@ func parse_label(p *Parser) *Node { return node; } +func parse_switch(p *Parser) *Node { + if p.current_switch != nil { + print_error(p.tokens, "nested switch statements are not supported yet"); + } + + let switch_tok *Token = p.tokens; + + parser_skip(p, "switch"); + let node *Node = new_node(ND_SWITCH); + + p.current_switch = node; + + node.cond = parse_expr(p); + + node.cases = new_vec(4); + + node.then_block = parse_block(p); + + if node.cases.len == 0 { + print_error(switch_tok, "switch statement must have at least one case"); + } + + p.current_switch = nil; + + return node; +} + +func parse_case(p *Parser) *Node { + if p.current_switch == nil { + print_error(p.tokens, "case outside of switch"); + } + + parser_skip(p, "case"); + let node *Node = new_node(ND_CASE); + let save_cond_tok *Token = p.tokens; + node.cond = parse_expr(p); + if node.cond.kind != ND_NUM { + print_error(save_cond_tok, "case value must be a integer constant"); + } + + parser_skip(p, ":"); + + vec_append(p.current_switch.cases, node); + + return node; +} + func parse_stmt(p *Parser) *Node { + if strcmp(p.tokens.lit, "switch") { + return parse_switch(p); + } + if strcmp(p.tokens.lit, "case") { + return parse_case(p); + } if strcmp(p.tokens.lit, "let") { return parse_let(p); }