LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_write
struct value*
builtin_write(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_OR("write", args, 1, 2);

    long arity = list_length(args);
    if (arity == 2) {
        ASSERT_TYPE("write", args, 1, VALUE_OUTPUT_PORT);
    }

    struct value* obj = CAR(args);

    struct value* port = NULL;
    if (arity == 2) {
        port = CADR(args);
    } else {
        port = vm_make_output_port(vm, stdout);
    }

    value_print(port->as.port, obj);
    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x4b36
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
je 0x4b36
movq 0x94eb(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r9
leaq 0x5814(%rip), %rsi      # 0xa327
leaq 0x5652(%rip), %rdx      # 0xa16c
movl $0x1, %ecx
movl $0x2, %r8d
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, -0x18(%rbp)
cmpq $0x2, -0x18(%rbp)
jne 0x4bbf
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
cmpl $0xb, (%rax)
je 0x4bbd
movq 0x947c(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movl $0xb, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x56e3(%rip), %rsi      # 0xa283
leaq 0x55c5(%rip), %rdx      # 0xa16c
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x4bbf
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
cmpq $0x2, -0x18(%rbp)
jne 0x4bf2
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
jmp 0x4c09
movq -0x8(%rbp), %rdi
movq 0x93c3(%rip), %rax      # 0xdfc0
movq (%rax), %rsi
callq 0x92f0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x8350
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_display
struct value*
builtin_display(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_OR("display", args, 1, 2);

    long arity = list_length(args);
    if (arity == 2) {
        ASSERT_TYPE("display", args, 1, VALUE_OUTPUT_PORT);
    }

    struct value* obj = CAR(args);

    struct value* port = NULL;
    if (arity == 2) {
        port = CADR(args);
    } else {
        port = vm_make_output_port(vm, stdout);
    }

    value_print(port->as.port, obj);
    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x4ca6
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
je 0x4ca6
movq 0x937b(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r9
leaq 0x56a4(%rip), %rsi      # 0xa327
leaq 0x54e8(%rip), %rdx      # 0xa172
movl $0x1, %ecx
movl $0x2, %r8d
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, -0x18(%rbp)
cmpq $0x2, -0x18(%rbp)
jne 0x4d2f
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
cmpl $0xb, (%rax)
je 0x4d2d
movq 0x930c(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movl $0xb, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x5573(%rip), %rsi      # 0xa283
leaq 0x545b(%rip), %rdx      # 0xa172
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x4d2f
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
cmpq $0x2, -0x18(%rbp)
jne 0x4d62
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
jmp 0x4d79
movq -0x8(%rbp), %rdi
movq 0x9253(%rip), %rax      # 0xdfc0
movq (%rax), %rsi
callq 0x92f0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x8350
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_newline
struct value*
builtin_newline(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_OR("newline", args, 0, 1);

    long arity = list_length(args);
    if (arity == 1) {
        ASSERT_TYPE("newline", args, 0, VALUE_OUTPUT_PORT);
    }

    struct value* port = NULL;
    if (arity == 1) {
        port = CAR(args);
    } else {
        port = vm_make_output_port(vm, stdout);
    }

    fputc('\n', port->as.port);
    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x0, %rax
je 0x4e13
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x4e13
movq 0x920b(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r9
leaq 0x5534(%rip), %rsi      # 0xa327
leaq 0x6064(%rip), %rdx      # 0xae5e
xorl %ecx, %ecx
movl $0x1, %r8d
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, -0x18(%rbp)
cmpq $0x1, -0x18(%rbp)
jne 0x4e97
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xb, (%rax)
je 0x4e95
movq 0x91a0(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movl $0xb, %edi
callq 0x86d0
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %r8
movq %rax, %r9
leaq 0x5408(%rip), %rsi      # 0xa283
leaq 0x5fdc(%rip), %rdx      # 0xae5e
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x4e97
movq $0x0, -0x20(%rbp)
cmpq $0x1, -0x18(%rbp)
jne 0x4eb5
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
jmp 0x4ecc
movq -0x8(%rbp), %rdi
movq 0x9100(%rip), %rax      # 0xdfc0
movq (%rax), %rsi
callq 0x92f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
movl $0xa, %edi
callq 0x11b0
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_write_char
struct value*
builtin_write_char(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_OR("write-char", args, 1, 2);
    ASSERT_TYPE("write-char", args, 0, VALUE_CHARACTER);

    long arity = list_length(args);
    if (arity == 2) {
        ASSERT_TYPE("write-char", args, 1, VALUE_OUTPUT_PORT);
    }

    struct value* obj = CAR(args);

    struct value* port = NULL;
    if (arity == 2) {
        port = CADR(args);
    } else {
        port = vm_make_output_port(vm, stdout);
    }

    fputc(obj->as.character, port->as.port);
    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x4f66
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
je 0x4f66
movq 0x90bb(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r9
leaq 0x53e4(%rip), %rsi      # 0xa327
leaq 0x5230(%rip), %rdx      # 0xa17a
movl $0x1, %ecx
movl $0x2, %r8d
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0x3, (%rax)
je 0x4fd4
movq 0x9061(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movl $0x3, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x52c9(%rip), %rsi      # 0xa283
leaq 0x51b9(%rip), %rdx      # 0xa17a
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, -0x18(%rbp)
cmpq $0x2, -0x18(%rbp)
jne 0x505d
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
cmpl $0xb, (%rax)
je 0x505b
movq 0x8fde(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl $0xb, %edi
callq 0x86d0
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %r8
movq %rax, %r9
leaq 0x5245(%rip), %rsi      # 0xa283
leaq 0x5135(%rip), %rdx      # 0xa17a
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x505d
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
cmpq $0x2, -0x18(%rbp)
jne 0x5090
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
jmp 0x50a7
movq -0x8(%rbp), %rdi
movq 0x8f25(%rip), %rax      # 0xdfc0
movq (%rax), %rsi
callq 0x92f0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movl 0x10(%rax), %edi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x11b0
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_make_window
struct value*
builtin_make_window(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("make-window", args, 3);
    ASSERT_TYPE("make-window", args, 0, VALUE_STRING);
    ASSERT_TYPE("make-window", args, 1, VALUE_NUMBER);
    ASSERT_TYPE("make-window", args, 2, VALUE_NUMBER);

    struct value* title = list_nth(args, 0);
    struct value* width = list_nth(args, 1);
    struct value* height = list_nth(args, 2);

    return vm_make_window(vm, title->as.string, width->as.number, height->as.number);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x3, %rax
je 0x51d1
movq 0x8e4a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r8
leaq 0x5050(%rip), %rsi      # 0xa204
leaq 0x4fd2(%rip), %rdx      # 0xa18d
movl $0x3, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0x5, (%rax)
je 0x523f
movq 0x8df6(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movl $0x5, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x505e(%rip), %rsi      # 0xa283
leaq 0x4f61(%rip), %rdx      # 0xa18d
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
cmpl $0x4, (%rax)
je 0x52b2
movq 0x8d87(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %r8
movq %rax, %r9
leaq 0x4fee(%rip), %rsi      # 0xa283
leaq 0x4ef1(%rip), %rdx      # 0xa18d
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x6670
cmpl $0x4, (%rax)
je 0x5325
movq 0x8d14(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %r8
movq %rax, %r9
leaq 0x4f7b(%rip), %rsi      # 0xa283
leaq 0x4e7e(%rip), %rdx      # 0xa18d
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6670
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x6670
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rcx
callq 0x9360
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_window_clear
struct value*
builtin_window_clear(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("window-clear!", args, 1);
    ASSERT_TYPE("window-clear!", args, 0, VALUE_WINDOW);

    struct value* window = CAR(args);

    SDL_SetRenderDrawColor(window->as.window.renderer, 0, 0, 0, 255);
    SDL_RenderClear(window->as.window.renderer);

    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x53f1
movq 0x8c2a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x20(%rbp), %rdi
movq %rax, %r8
leaq 0x4e30(%rip), %rsi      # 0xa204
leaq 0x4dbe(%rip), %rdx      # 0xa199
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xc, (%rax)
je 0x545f
movq 0x8bd6(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movl $0xc, %edi
callq 0x86d0
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %r8
movq %rax, %r9
leaq 0x4e3e(%rip), %rsi      # 0xa283
leaq 0x4d4d(%rip), %rdx      # 0xa199
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %ecx, %ecx
movl $0xff, %r8d
movl %ecx, %esi
movl %ecx, %edx
callq 0x11f0
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x1160
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_window_present
struct value*
builtin_window_present(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("window-present!", args, 1);
    ASSERT_TYPE("window-present!", args, 0, VALUE_WINDOW);

    struct value* window = CAR(args);
    SDL_RenderPresent(window->as.window.renderer);

    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x5881
movq 0x879a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x20(%rbp), %rdi
movq %rax, %r8
leaq 0x49a0(%rip), %rsi      # 0xa204
leaq 0x494e(%rip), %rdx      # 0xa1b9
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xc, (%rax)
je 0x58ef
movq 0x8746(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movl $0xc, %edi
callq 0x86d0
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %r8
movq %rax, %r9
leaq 0x49ae(%rip), %rsi      # 0xa283
leaq 0x48dd(%rip), %rdx      # 0xa1b9
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x1080
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_event_poll
struct value*
builtin_event_poll(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("event-poll", args, 1);
    ASSERT_TYPE("event-poll", args, 0, VALUE_WINDOW);

    SDL_Event* event = malloc(sizeof(SDL_Event));
    int rc = SDL_PollEvent(event);
    if (rc == 0) {
        free(event);
        return vm_make_empty_list(vm);
    } else {
        return vm_make_event(vm, event);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x5a21
movq 0x85fa(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r8
leaq 0x4800(%rip), %rsi      # 0xa204
leaq 0x47c5(%rip), %rdx      # 0xa1d0
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xc, (%rax)
je 0x5a8f
movq 0x85a6(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movl $0xc, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x480e(%rip), %rsi      # 0xa283
leaq 0x4754(%rip), %rdx      # 0xa1d0
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x38, %edi
callq 0x11c0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x10f0
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jne 0x5ac7
movq -0x20(%rbp), %rdi
callq 0x1190
movq -0x10(%rbp), %rdi
callq 0x8dc0
movq %rax, -0x8(%rbp)
jmp 0x5ad8
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x9490
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_event_type
struct value*
builtin_event_type(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("event-type", args, 1);
    ASSERT_TYPE("event-type", args, 0, VALUE_EVENT);

    struct value* event = CAR(args);
    switch (event->as.event->type) {
        case SDL_KEYDOWN:
//        case SDL_KEYUP:
            return vm_make_symbol(vm, "event-keyboard");
        case SDL_MOUSEMOTION:
            return vm_make_symbol(vm, "event-mousemotion");
//        case SDL_MOUSEBUTTONDOWN:
        case SDL_MOUSEBUTTONUP:
            return vm_make_symbol(vm, "event-mousebutton");
        case SDL_QUIT:
            return vm_make_symbol(vm, "event-quit");
        case SDL_WINDOWEVENT:
            return vm_make_symbol(vm, "event-window");
        default:
            return vm_make_symbol(vm, "event-undefined");
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x5b51
movq 0x84ca(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x46d0(%rip), %rsi      # 0xa204
leaq 0x46a0(%rip), %rdx      # 0xa1db
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xd, (%rax)
je 0x5bbf
movq 0x8476(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movl $0xd, %edi
callq 0x86d0
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %r8
movq %rax, %r9
leaq 0x46de(%rip), %rsi      # 0xa283
leaq 0x462f(%rip), %rdx      # 0xa1db
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %eax
movl %eax, -0x3c(%rbp)
subl $0x100, %eax            # imm = 0x100
je 0x5c54
jmp 0x5be2
movl -0x3c(%rbp), %eax
subl $0x200, %eax            # imm = 0x200
je 0x5c6a
jmp 0x5bee
movl -0x3c(%rbp), %eax
subl $0x300, %eax            # imm = 0x300
je 0x5c12
jmp 0x5bfa
movl -0x3c(%rbp), %eax
subl $0x400, %eax            # imm = 0x400
je 0x5c28
jmp 0x5c06
movl -0x3c(%rbp), %eax
subl $0x402, %eax            # imm = 0x402
je 0x5c3e
jmp 0x5c80
movq -0x10(%rbp), %rdi
leaq 0x4769(%rip), %rsi      # 0xa386
callq 0x9070
movq %rax, -0x8(%rbp)
jmp 0x5c94
movq -0x10(%rbp), %rdi
leaq 0x4762(%rip), %rsi      # 0xa395
callq 0x9070
movq %rax, -0x8(%rbp)
jmp 0x5c94
movq -0x10(%rbp), %rdi
leaq 0x475e(%rip), %rsi      # 0xa3a7
callq 0x9070
movq %rax, -0x8(%rbp)
jmp 0x5c94
movq -0x10(%rbp), %rdi
leaq 0x475a(%rip), %rsi      # 0xa3b9
callq 0x9070
movq %rax, -0x8(%rbp)
jmp 0x5c94
movq -0x10(%rbp), %rdi
leaq 0x474f(%rip), %rsi      # 0xa3c4
callq 0x9070
movq %rax, -0x8(%rbp)
jmp 0x5c94
movq -0x10(%rbp), %rdi
leaq 0x4746(%rip), %rsi      # 0xa3d1
callq 0x9070
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_event_key
struct value*
builtin_event_key(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("event-type", args, 1);
    ASSERT_TYPE("event-type", args, 0, VALUE_EVENT);

    struct value* event = CAR(args);
    switch (event->as.event->key.keysym.sym) {
        case SDLK_ESCAPE:
            return vm_make_symbol(vm, "key-escape");
        case SDLK_LEFT:
            return vm_make_symbol(vm, "key-left");
        case SDLK_RIGHT:
            return vm_make_symbol(vm, "key-right");
        default:
            return vm_make_symbol(vm, "key-undefined");
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x5d01
movq 0x831a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x4520(%rip), %rsi      # 0xa204
leaq 0x44f0(%rip), %rdx      # 0xa1db
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xd, (%rax)
je 0x5d6f
movq 0x82c6(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movl $0xd, %edi
callq 0x86d0
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %r8
movq %rax, %r9
leaq 0x452e(%rip), %rsi      # 0xa283
leaq 0x447f(%rip), %rdx      # 0xa1db
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x14(%rax), %eax
movl %eax, -0x3c(%rbp)
subl $0x1b, %eax
je 0x5da9
jmp 0x5d91
movl -0x3c(%rbp), %eax
subl $0x4000004f, %eax       # imm = 0x4000004F
je 0x5dd5
jmp 0x5d9d
movl -0x3c(%rbp), %eax
subl $0x40000050, %eax       # imm = 0x40000050
je 0x5dbf
jmp 0x5deb
movq -0x10(%rbp), %rdi
leaq 0x462d(%rip), %rsi      # 0xa3e1
callq 0x9070
movq %rax, -0x8(%rbp)
jmp 0x5dff
movq -0x10(%rbp), %rdi
leaq 0x4622(%rip), %rsi      # 0xa3ec
callq 0x9070
movq %rax, -0x8(%rbp)
jmp 0x5dff
movq -0x10(%rbp), %rdi
leaq 0x4615(%rip), %rsi      # 0xa3f5
callq 0x9070
movq %rax, -0x8(%rbp)
jmp 0x5dff
movq -0x10(%rbp), %rdi
leaq 0x4609(%rip), %rsi      # 0xa3ff
callq 0x9070
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/env.c
// Function: env_empty
struct value*
env_empty(struct vm* vm)
{
    return env_extend(vm,
        vm_make_empty_list(vm),
        vm_make_empty_list(vm),
        vm_make_empty_list(vm));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8dc0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8dc0
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8dc0
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rdx
movq %rax, %rcx
callq 0x5e70
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/env.c
// Function: env_extend
struct value*
env_extend(struct vm* vm, struct value* vars, struct value* vals, struct value* env)
{
    long vars_len = list_length(vars);
    long vals_len = list_length(vals);
    assert(vars_len == vals_len && "mismatched number of vars/vals supplied to env_extend");

    return vm_make_pair(vm, make_frame(vm, vars, vals), env);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0x5eb6
movb $0x1, %al
testb $0x1, %al
jne 0x5eb4
jmp 0x5eb6
jmp 0x5ed5
leaq 0x4586(%rip), %rdi      # 0xa443
leaq 0x45cf(%rip), %rsi      # 0xa493
movl $0x43, %edx
leaq 0x45cd(%rip), %rcx      # 0xa49d
callq 0x1100
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x9100
movq -0x38(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x9100
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/env.c
// Function: env_lookup
struct value*
env_lookup(struct vm* vm, struct value* var, struct value* env)
{
    assert(value_is_symbol(var) && "non-symbol key passed to env_lookup");

    if (value_is_empty_list(env)) {
        fprintf(stderr, "unbound variable: %s\n", var->as.symbol);
        exit(EXIT_FAILURE);
    }

    struct value* frame = first_frame(env);
    struct value* val = frame_lookup(vm, var, frame_vars(frame), frame_vals(frame));
    if (val != NULL) return val;
    return env_lookup(vm, var, rest_frames(env));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x6, (%rax)
jne 0x5f37
movb $0x1, %al
testb $0x1, %al
jne 0x5f35
jmp 0x5f37
jmp 0x5f56
leaq 0x45d9(%rip), %rdi      # 0xa517
leaq 0x454e(%rip), %rsi      # 0xa493
movl $0x4b, %edx
leaq 0x4604(%rip), %rcx      # 0xa555
callq 0x1100
movq -0x20(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x5f89
movq 0x807a(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x4623(%rip), %rsi      # 0xa59b
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x20(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rdi
callq 0x6710
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
callq 0x6620
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq %rax, %rcx
callq 0x6020
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x5fe5
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x6012
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rdi
callq 0x6620
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq %rax, %rdx
callq 0x5f10
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/env.c
// Function: frame_lookup
static struct value*
frame_lookup(struct vm* vm, struct value* var, struct value* vars, struct value* vals)
{
    if (value_is_empty_list(vars) && value_is_empty_list(vals)) return NULL;
    assert(!value_is_empty_list(vars) && "env frame has mismatched vars and vals");
    assert(!value_is_empty_list(vals) && "env frame has mismatched vars and vals");

    if (value_is_equal(var, CAR(vars))) return CAR(vals);
    return frame_lookup(vm, var, CDR(vars), CDR(vals));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x6057
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x6057
movq $0x0, -0x8(%rbp)
jmp 0x612b
movq -0x20(%rbp), %rax
cmpl $0x1, (%rax)
je 0x606a
movb $0x1, %al
testb $0x1, %al
jne 0x6068
jmp 0x606a
jmp 0x6089
leaq 0x46d7(%rip), %rdi      # 0xa748
leaq 0x441b(%rip), %rsi      # 0xa493
movl $0x12, %edx
leaq 0x470b(%rip), %rcx      # 0xa78f
callq 0x1100
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
je 0x609c
movb $0x1, %al
testb $0x1, %al
jne 0x609a
jmp 0x609c
jmp 0x60bb
leaq 0x4744(%rip), %rdi      # 0xa7e7
leaq 0x43e9(%rip), %rsi      # 0xa493
movl $0x13, %edx
leaq 0x46d9(%rip), %rcx      # 0xa78f
callq 0x1100
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rdi
callq 0x6710
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x8840
testb $0x1, %al
jne 0x60de
jmp 0x60ed
movq -0x28(%rbp), %rdi
callq 0x6710
movq %rax, -0x8(%rbp)
jmp 0x612b
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rdi
callq 0x6620
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
callq 0x6620
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq %rax, %rcx
callq 0x6020
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/env.c
// Function: env_update
struct value*
env_update(struct vm* vm, struct value* var, struct value* val, struct value* env)
{
    assert(value_is_symbol(var) && "non-symbol key passed to env_update");

    if (value_is_empty_list(env)) {
        fprintf(stderr, "unbound variable: %s\n", var->as.symbol);
        exit(EXIT_FAILURE);
    }

    struct value* frame = first_frame(env);
    struct value* existing_val = frame_lookup(vm, var, frame_vars(frame), frame_vals(frame));
    if (existing_val != NULL) return frame_update(vm, var, val, frame_vars(frame), frame_vals(frame));
    return env_update(vm, var, val, rest_frames(env));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x6, (%rax)
jne 0x616e
movb $0x1, %al
testb $0x1, %al
jne 0x616c
jmp 0x616e
jmp 0x618d
leaq 0x4460(%rip), %rdi      # 0xa5d5
leaq 0x4317(%rip), %rsi      # 0xa493
movl $0x5b, %edx
leaq 0x448b(%rip), %rcx      # 0xa613
callq 0x1100
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x61c0
movq 0x7e43(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x43ec(%rip), %rsi      # 0xa59b
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x28(%rbp), %rdi
callq 0x6710
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6710
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6620
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rax, %rcx
callq 0x6020
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x625e
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6710
movq %rax, -0x58(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6620
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq -0x58(%rbp), %rcx
movq %rax, %r8
callq 0x62b0
movq %rax, -0x8(%rbp)
jmp 0x629d
movq -0x10(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x28(%rbp), %rdi
callq 0x6620
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %rax, %rcx
callq 0x6140
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x90, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/env.c
// Function: frame_update
static struct value*
frame_update(struct vm* vm, struct value* var, struct value* val, struct value* vars, struct value* vals)
{
    if (value_is_empty_list(vars) && value_is_empty_list(vals)) return NULL;
    assert(!value_is_empty_list(vars) && "env frame has mismatched vars and vals");
    assert(!value_is_empty_list(vals) && "env frame has mismatched vars and vals");

    if (value_is_equal(var, CAR(vars))) {
        vals->as.pair.car = val;
        return vm_make_empty_list(vm);
    }

    return frame_update(vm, var, val, CDR(vars), CDR(vals));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x62eb
movq -0x30(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x62eb
movq $0x0, -0x8(%rbp)
jmp 0x63d7
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
je 0x62fe
movb $0x1, %al
testb $0x1, %al
jne 0x62fc
jmp 0x62fe
jmp 0x631d
leaq 0x4443(%rip), %rdi      # 0xa748
leaq 0x4187(%rip), %rsi      # 0xa493
movl $0x1d, %edx
leaq 0x4516(%rip), %rcx      # 0xa82e
callq 0x1100
movq -0x30(%rbp), %rax
cmpl $0x1, (%rax)
je 0x6330
movb $0x1, %al
testb $0x1, %al
jne 0x632e
jmp 0x6330
jmp 0x634f
leaq 0x44b0(%rip), %rdi      # 0xa7e7
leaq 0x4155(%rip), %rsi      # 0xa493
movl $0x1e, %edx
leaq 0x44e4(%rip), %rcx      # 0xa82e
callq 0x1100
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
callq 0x6710
movq -0x38(%rbp), %rdi
movq %rax, %rsi
callq 0x8840
testb $0x1, %al
jne 0x6372
jmp 0x638d
movq -0x20(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rdi
callq 0x8dc0
movq %rax, -0x8(%rbp)
jmp 0x63d7
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rdi
callq 0x6620
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6620
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq -0x40(%rbp), %rcx
movq %rax, %r8
callq 0x62b0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/env.c
// Function: env_define
struct value*
env_define(struct vm* vm, struct value* var, struct value* val, struct value* env)
{
    assert(value_is_symbol(var) && "non-symbol key passed to env_define");

    struct value* frame = first_frame(env);
    struct value* existing_val = frame_lookup(vm, var, frame_vars(frame), frame_vals(frame));
    if (existing_val != NULL) return frame_update(vm, var, val, frame_vars(frame), frame_vals(frame));
    return frame_add_binding(vm, var, val, frame);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x6, (%rax)
jne 0x641b
movb $0x1, %al
testb $0x1, %al
jne 0x6419
jmp 0x641b
jmp 0x643a
leaq 0x426b(%rip), %rdi      # 0xa68d
leaq 0x406a(%rip), %rsi      # 0xa493
movl $0x6b, %edx
leaq 0x4296(%rip), %rcx      # 0xa6cb
callq 0x1100
movq -0x28(%rbp), %rdi
callq 0x6710
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6710
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6620
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rax, %rcx
callq 0x6020
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x64d8
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6710
movq %rax, -0x58(%rbp)
movq -0x30(%rbp), %rdi
callq 0x6620
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq -0x58(%rbp), %rcx
movq %rax, %r8
callq 0x62b0
movq %rax, -0x8(%rbp)
jmp 0x64f1
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x30(%rbp), %rcx
callq 0x6500
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/env.c
// Function: frame_add_binding
static struct value*
frame_add_binding(struct vm* vm, struct value* var, struct value* val, struct value* frame)
{
    assert(frame != NULL);

    frame->as.pair.car = vm_make_pair(vm, var, CAR(frame));
    frame->as.pair.cdr = vm_make_pair(vm, val, CDR(frame));
    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x6521
jmp 0x6540
leaq 0x436e(%rip), %rdi      # 0xa896
leaq 0x3f64(%rip), %rsi      # 0xa493
movl $0x2b, %edx
leaq 0x4369(%rip), %rcx      # 0xa8a4
callq 0x1100
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rdi
callq 0x6710
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq %rax, %rdx
callq 0x9100
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
callq 0x6620
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq %rax, %rdx
callq 0x9100
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/list.c
// Function: list_length
long
list_length(const struct value* list)
{
    long count = 0;

    const struct value* iter = list;
    while (!value_is_empty_list(iter)) {
        count++;
        iter = CDR(iter);
    }

    return count;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x65ee
jmp 0x6609
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
jmp 0x65dc
movq -0x10(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/list.c
// Function: list_cdr
struct value*
list_cdr(const struct value* list)
{
    if (value_is_empty_list(list)) {
        fprintf(stderr, "the primitive 'cdr' is defined only for non-empty lists\n");
        exit(EXIT_FAILURE);
    }

    return list->as.pair.cdr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x6657
movq 0x79a4(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
leaq 0x430e(%rip), %rsi      # 0xa954
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/list.c
// Function: list_nth
struct value*
list_nth(const struct value* list, long n)
{
    if (n < 0 || n >= list_length(list)) {
        fprintf(stderr, "list: invalid index: %ld\n", n);
        exit(EXIT_FAILURE);
    }

    const struct value* iter = list;
    for (long i = 0; i < n; i++) {
        iter = CDR(iter);
    }

    return CAR(iter);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jl 0x66a4
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x28(%rbp), %rax
cmpq %rcx, %rax
jl 0x66ca
movq 0x7935(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
movq -0x10(%rbp), %rdx
leaq 0x4248(%rip), %rsi      # 0xa901
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq -0x10(%rbp), %rax
jge 0x66ff
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x66da
movq -0x18(%rbp), %rdi
callq 0x6710
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/list.c
// Function: list_car
struct value*
list_car(const struct value* list)
{
    if (value_is_empty_list(list)) {
        fprintf(stderr, "the primitive 'car' is defined only for non-empty lists\n");
        exit(EXIT_FAILURE);
    }

    return list->as.pair.car;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x6747
movq 0x78b4(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
leaq 0x41e5(%rip), %rsi      # 0xa91b
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/mce.c
// Function: eval_assignment
static struct value*
eval_assignment(struct vm* vm, struct value* exp, struct value* env)
{
    return env_update(vm,
        assignment_var(exp),
        mce_eval(vm, assignment_val(exp), env),
        env);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq -0x30(%rbp), %rdi
movq %rax, %rsi
movq -0x18(%rbp), %rdx
callq 0x6760
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq %rax, %rdx
movq -0x18(%rbp), %rcx
callq 0x6140
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/mce.c
// Function: eval_definition
static struct value*
eval_definition(struct vm* vm, struct value* exp, struct value* env)
{
    // TODO: check for dot form
    // (define (foo . args) body) -> (define foo (lambda args body))
    return env_define(vm,
        definition_var(exp),
        mce_eval(vm, definition_val(vm, exp), env),
        env);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
cmpl $0x6, (%rax)
jne 0x6db9
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
jmp 0x6dd6
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
cmpl $0x6, (%rax)
jne 0x6e1b
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x40(%rbp)
jmp 0x6e91
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x3bad(%rip), %rsi      # 0xa9db
callq 0x9070
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, %rdi
callq 0x6620
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6620
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq %rax, %rdx
callq 0x9100
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq %rax, %rdx
callq 0x9100
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x6760
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq %rax, %rdx
movq -0x18(%rbp), %rcx
callq 0x63f0
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/mce.c
// Function: eval_if
static struct value*
eval_if(struct vm* vm, struct value* exp, struct value* env)
{
    if (value_is_true(mce_eval(vm, if_predicate(exp), env))) {
        return if_consequent(exp);
    } else {
        return if_alternative(vm, exp);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq -0x28(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x6760
movq %rax, %rdi
callq 0x8210
testb $0x1, %al
jne 0x6f0b
jmp 0x6f2a
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x8(%rbp)
jmp 0x6f86
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6620
cmpl $0x1, (%rax)
jne 0x6f59
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x8e90
movq %rax, -0x30(%rbp)
jmp 0x6f7e
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/mce.c
// Function: load
static struct value*
load(struct vm* vm, struct value* args, struct value* env)
{
    ASSERT_ARITY("load", args, 1);
    ASSERT_TYPE("load", args, 0, VALUE_STRING);

    struct value* path = list_nth(args, 0);

    FILE* fp = fopen(path->as.string, "rb");
    if (fp == NULL) {
        fprintf(stderr, "failed to load file: %s\n", path->as.string);
        exit(EXIT_FAILURE);
    }

    while (!feof(fp)) {
        struct value* exp = reader_read(vm, fp);
        if (value_is_eof(exp)) break;

        mce_eval(vm, exp, env);
    }

    fclose(fp);
    return vm_make_empty_list(vm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x6ff5
movq 0x7026(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x38(%rbp), %rdi
movq %rax, %r8
leaq 0x322c(%rip), %rsi      # 0xa204
leaq 0x3211(%rip), %rdx      # 0xa1f0
movl $0x1, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0x5, (%rax)
je 0x7063
movq 0x6fd2(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl $0x5, %edi
callq 0x86d0
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r8
movq %rax, %r9
leaq 0x323a(%rip), %rsi      # 0xa283
leaq 0x31a0(%rip), %rdx      # 0xa1f0
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
leaq 0x3258(%rip), %rsi      # 0xa2db
callq 0x1180
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x70bd
movq 0x6f46(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x39ed(%rip), %rsi      # 0xaa99
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x70bf
movq -0x28(%rbp), %rdi
callq 0x1210
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x70d6
jmp 0x7105
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x7c90
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpl $0xe, (%rax)
jne 0x70f2
jmp 0x7105
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x6760
jmp 0x70bf
movq -0x28(%rbp), %rdi
callq 0x1170
movq -0x8(%rbp), %rdi
callq 0x8dc0
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)