LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_equal
struct value*
builtin_equal(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE("=", args, 2);
    ASSERT_TYPE_ALL("=", args, VALUE_NUMBER);

    struct value* item = CAR(args);
    args = CDR(args);

    while (!value_is_empty_list(args)) {
        if (!value_is_equal(item, CAR(args))) return vm_make_boolean(vm, false);
        item = CAR(args);
        args = CDR(args);
    }

    return vm_make_boolean(vm, true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x2651
movq 0xb9ca(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r8
leaq 0x7c11(%rip), %rsi      # 0xa245
leaq 0x7a15(%rip), %rdx      # 0xa050
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x1c(%rbp)
movslq -0x1c(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jge 0x26fe
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x26ee
movq 0xb94e(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x44(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movl -0x44(%rbp), %ecx
movq -0x40(%rbp), %r8
movq %rax, %r9
leaq 0x7bad(%rip), %rsi      # 0xa283
leaq 0x7973(%rip), %rdx      # 0xa050
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x26f0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x2658
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x272a
jmp 0x2778
movq -0x28(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6710
movq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0x8840
testb $0x1, %al
jne 0x275c
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x8e90
movq %rax, -0x8(%rbp)
jmp 0x278a
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
jmp 0x2718
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x8e90
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/builtin.c
// Function: builtin_less
struct value*
builtin_less(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE("<", args, 2);
    ASSERT_TYPE_ALL("<", args, VALUE_NUMBER);

    struct value* item = CAR(args);
    args = CDR(args);

    while (!value_is_empty_list(args)) {
        if (!(item->as.number < CAR(args)->as.number)) return vm_make_boolean(vm, false);
        item = CAR(args);
        args = CDR(args);
    }

    return vm_make_boolean(vm, true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x2801
movq 0xb81a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r8
leaq 0x7a61(%rip), %rsi      # 0xa245
leaq 0x7862(%rip), %rdx      # 0xa04d
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x1c(%rbp)
movslq -0x1c(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jge 0x28ae
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x289e
movq 0xb79e(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x44(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movl -0x44(%rbp), %ecx
movq -0x40(%rbp), %r8
movq %rax, %r9
leaq 0x79fd(%rip), %rsi      # 0xa283
leaq 0x77c0(%rip), %rdx      # 0xa04d
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x28a0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x2808
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x28da
jmp 0x2929
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, %rcx
movq -0x58(%rbp), %rax
cmpq 0x10(%rcx), %rax
jl 0x290d
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x8e90
movq %rax, -0x8(%rbp)
jmp 0x293b
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
jmp 0x28c8
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x8e90
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/builtin.c
// Function: builtin_greater
struct value*
builtin_greater(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE(">", args, 2);
    ASSERT_TYPE_ALL(">", args, VALUE_NUMBER);

    struct value* item = CAR(args);
    args = CDR(args);

    while (!value_is_empty_list(args)) {
        if (!(item->as.number > CAR(args)->as.number)) return vm_make_boolean(vm, false);
        item = CAR(args);
        args = CDR(args);
    }

    return vm_make_boolean(vm, true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x29b1
movq 0xb66a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r8
leaq 0x78b1(%rip), %rsi      # 0xa245
leaq 0x8542(%rip), %rdx      # 0xaedd
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x1c(%rbp)
movslq -0x1c(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jge 0x2a5e
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x2a4e
movq 0xb5ee(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x44(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movl -0x44(%rbp), %ecx
movq -0x40(%rbp), %r8
movq %rax, %r9
leaq 0x784d(%rip), %rsi      # 0xa283
leaq 0x84a0(%rip), %rdx      # 0xaedd
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x2a50
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x29b8
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2a8a
jmp 0x2ad9
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, %rcx
movq -0x58(%rbp), %rax
cmpq 0x10(%rcx), %rax
jg 0x2abd
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x8e90
movq %rax, -0x8(%rbp)
jmp 0x2aeb
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
jmp 0x2a78
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x8e90
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/builtin.c
// Function: builtin_less_equal
struct value*
builtin_less_equal(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE("<=", args, 2);
    ASSERT_TYPE_ALL("<=", args, VALUE_NUMBER);

    struct value* item = CAR(args);
    args = CDR(args);

    while (!value_is_empty_list(args)) {
        if (!(item->as.number <= CAR(args)->as.number)) return vm_make_boolean(vm, false);
        item = CAR(args);
        args = CDR(args);
    }

    return vm_make_boolean(vm, true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x2b61
movq 0xb4ba(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r8
leaq 0x7701(%rip), %rsi      # 0xa245
leaq 0x7504(%rip), %rdx      # 0xa04f
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x1c(%rbp)
movslq -0x1c(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jge 0x2c0e
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x2bfe
movq 0xb43e(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x44(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movl -0x44(%rbp), %ecx
movq -0x40(%rbp), %r8
movq %rax, %r9
leaq 0x769d(%rip), %rsi      # 0xa283
leaq 0x7462(%rip), %rdx      # 0xa04f
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x2c00
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x2b68
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2c3a
jmp 0x2c89
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, %rcx
movq -0x58(%rbp), %rax
cmpq 0x10(%rcx), %rax
jle 0x2c6d
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x8e90
movq %rax, -0x8(%rbp)
jmp 0x2c9b
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
jmp 0x2c28
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x8e90
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/builtin.c
// Function: builtin_greater_equal
struct value*
builtin_greater_equal(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE(">=", args, 2);
    ASSERT_TYPE_ALL(">=", args, VALUE_NUMBER);

    struct value* item = CAR(args);
    args = CDR(args);

    while (!value_is_empty_list(args)) {
        if (!(item->as.number >= CAR(args)->as.number)) return vm_make_boolean(vm, false);
        item = CAR(args);
        args = CDR(args);
    }

    return vm_make_boolean(vm, true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x2d11
movq 0xb30a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r8
leaq 0x7551(%rip), %rsi      # 0xa245
leaq 0x7357(%rip), %rdx      # 0xa052
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x1c(%rbp)
movslq -0x1c(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jge 0x2dbe
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x2dae
movq 0xb28e(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x44(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x1c(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movl -0x44(%rbp), %ecx
movq -0x40(%rbp), %r8
movq %rax, %r9
leaq 0x74ed(%rip), %rsi      # 0xa283
leaq 0x72b5(%rip), %rdx      # 0xa052
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x2db0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x2d18
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2dea
jmp 0x2e39
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, %rcx
movq -0x58(%rbp), %rax
cmpq 0x10(%rcx), %rax
jge 0x2e1d
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x8e90
movq %rax, -0x8(%rbp)
jmp 0x2e4b
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6620
movq %rax, -0x18(%rbp)
jmp 0x2dd8
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x8e90
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/builtin.c
// Function: builtin_add
struct value*
builtin_add(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE("+", args, 2);
    ASSERT_TYPE_ALL("+", args, VALUE_NUMBER);

    long res = 0;
    while (!value_is_empty_list(args)) {
        res += CAR(args)->as.number;
        args = CDR(args);
    }

    return vm_make_number(vm, res);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x2ec1
movq 0xb15a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x73a1(%rip), %rsi      # 0xa245
leaq 0x71aa(%rip), %rdx      # 0xa055
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x30(%rbp), %rax
cmpq %rcx, %rax
jge 0x2f6e
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x2f5e
movq 0xb0de(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x48(%rbp), %rdi
movl -0x3c(%rbp), %ecx
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x733d(%rip), %rsi      # 0xa283
leaq 0x7108(%rip), %rdx      # 0xa055
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x2f60
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x2ec8
movq $0x0, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2f88
jmp 0x2fac
movq -0x10(%rbp), %rdi
callq 0x6710
movq 0x10(%rax), %rax
addq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, -0x10(%rbp)
jmp 0x2f76
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x8f70
addq $0x50, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_mul
struct value*
builtin_mul(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE("*", args, 2);
    ASSERT_TYPE_ALL("*", args, VALUE_NUMBER);

    long res = 1;
    while (!value_is_empty_list(args)) {
        res *= CAR(args)->as.number;
        args = CDR(args);
    }

    return vm_make_number(vm, res);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x3021
movq 0xaffa(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x7241(%rip), %rsi      # 0xa245
leaq 0x704c(%rip), %rdx      # 0xa057
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x30(%rbp), %rax
cmpq %rcx, %rax
jge 0x30ce
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x30be
movq 0xaf7e(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x48(%rbp), %rdi
movl -0x3c(%rbp), %ecx
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x71dd(%rip), %rsi      # 0xa283
leaq 0x6faa(%rip), %rdx      # 0xa057
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x30c0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x3028
movq $0x1, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x30e8
jmp 0x310d
movq -0x10(%rbp), %rdi
callq 0x6710
movq 0x10(%rax), %rax
imulq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, -0x10(%rbp)
jmp 0x30d6
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x8f70
addq $0x50, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_sub
struct value*
builtin_sub(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE("-", args, 2);
    ASSERT_TYPE_ALL("-", args, VALUE_NUMBER);

    long res = CAR(args)->as.number;
    args = CDR(args);

    while (!value_is_empty_list(args)) {
        res -= CAR(args)->as.number;
        args = CDR(args);
    }

    return vm_make_number(vm, res);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x3181
movq 0xae9a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x70e1(%rip), %rsi      # 0xa245
leaq 0x6eee(%rip), %rdx      # 0xa059
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x30(%rbp), %rax
cmpq %rcx, %rax
jge 0x322e
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x321e
movq 0xae1e(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x48(%rbp), %rdi
movl -0x3c(%rbp), %ecx
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x707d(%rip), %rsi      # 0xa283
leaq 0x6e4c(%rip), %rdx      # 0xa059
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x3220
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x3188
movq -0x10(%rbp), %rdi
callq 0x6710
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x325e
jmp 0x3285
movq -0x10(%rbp), %rdi
callq 0x6710
movq 0x10(%rax), %rcx
movq -0x20(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, -0x10(%rbp)
jmp 0x324c
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x8f70
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_div
struct value*
builtin_div(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_GTE("/", args, 2);
    ASSERT_TYPE_ALL("/", args, VALUE_NUMBER);

    long res = CAR(args)->as.number;
    args = CDR(args);

    while (!value_is_empty_list(args)) {
        if (CAR(args)->as.number == 0) {
            fprintf(stderr, "error: divide by zero\n");
            exit(EXIT_FAILURE);
        }

        res /= CAR(args)->as.number;
        args = CDR(args);
    }

    return vm_make_number(vm, res);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
jge 0x3301
movq 0xad1a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x6f61(%rip), %rsi      # 0xa245
leaq 0x6d70(%rip), %rdx      # 0xa05b
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq %rax, %rcx
movq -0x30(%rbp), %rax
cmpq %rcx, %rax
jge 0x33ae
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x6670
cmpl $0x4, (%rax)
je 0x339e
movq 0xac9e(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl $0x4, %edi
callq 0x86d0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x48(%rbp), %rdi
movl -0x3c(%rbp), %ecx
movq -0x38(%rbp), %r8
movq %rax, %r9
leaq 0x6efd(%rip), %rsi      # 0xa283
leaq 0x6cce(%rip), %rdx      # 0xa05b
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x33a0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x3308
movq -0x10(%rbp), %rdi
callq 0x6710
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x33de
jmp 0x3439
movq -0x10(%rbp), %rdi
callq 0x6710
cmpq $0x0, 0x10(%rax)
jne 0x3410
movq 0xabeb(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
leaq 0x6ec5(%rip), %rsi      # 0xa2c4
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x6710
movq 0x10(%rax), %rcx
movq -0x20(%rbp), %rax
cqto
idivq %rcx
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, -0x10(%rbp)
jmp 0x33cc
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x8f70
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_cons
struct value*
builtin_cons(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("cons", args, 2);

    struct value* a = CAR(args);
    struct value* b = CADR(args);
    return vm_make_pair(vm, a, b);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x2, %rax
je 0x35f1
movq 0xaa2a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x6c30(%rip), %rsi      # 0xa204
leaq 0x6a91(%rip), %rdx      # 0xa06c
movl $0x2, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x9100
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_car
struct value*
builtin_car(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("car", args, 1);
    ASSERT_TYPE("car", args, 0, VALUE_PAIR);

    struct value* pair = CAR(args);
    return CAR(pair);
}

// 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 0x3691
movq 0xa98a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x20(%rbp), %rdi
movq %rax, %r8
leaq 0x6b90(%rip), %rsi      # 0xa204
leaq 0x69f6(%rip), %rdx      # 0xa071
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 $0x7, (%rax)
je 0x36ff
movq 0xa936(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movl $0x7, %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 0x6b9e(%rip), %rsi      # 0xa283
leaq 0x6985(%rip), %rdx      # 0xa071
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), %rdi
callq 0x6710
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_cdr
struct value*
builtin_cdr(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("cdr", args, 1);
    ASSERT_TYPE("cdr", args, 0, VALUE_PAIR);

    struct value* pair = CAR(args);
    return CDR(pair);
}

// 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 0x3781
movq 0xa89a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x20(%rbp), %rdi
movq %rax, %r8
leaq 0x6aa0(%rip), %rsi      # 0xa204
leaq 0x690a(%rip), %rdx      # 0xa075
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 $0x7, (%rax)
je 0x37ef
movq 0xa846(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movl $0x7, %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 0x6aae(%rip), %rsi      # 0xa283
leaq 0x6899(%rip), %rdx      # 0xa075
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), %rdi
callq 0x6620
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_set_car
struct value*
builtin_set_car(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("set-car!", args, 2);
    ASSERT_TYPE("set-car!", args, 0, VALUE_PAIR);

    struct value* pair = CAR(args);
    struct value* val = CADR(args);
    pair->as.pair.car = val;
    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 $0x2, %rax
je 0x3871
movq 0xa7aa(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x69b0(%rip), %rsi      # 0xa204
leaq 0x681e(%rip), %rdx      # 0xa079
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
cmpl $0x7, (%rax)
je 0x38df
movq 0xa756(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movl $0x7, %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 0x69be(%rip), %rsi      # 0xa283
leaq 0x67ad(%rip), %rdx      # 0xa079
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
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_set_cdr
struct value*
builtin_set_cdr(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("set-cdr!", args, 2);
    ASSERT_TYPE("set-cdr!", args, 0, VALUE_PAIR);

    struct value* pair = CAR(args);
    struct value* val = CADR(args);
    pair->as.pair.cdr = val;
    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 $0x2, %rax
je 0x3981
movq 0xa69a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x68a0(%rip), %rsi      # 0xa204
leaq 0x6717(%rip), %rdx      # 0xa082
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
cmpl $0x7, (%rax)
je 0x39ef
movq 0xa646(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movl $0x7, %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 0x68ae(%rip), %rsi      # 0xa283
leaq 0x66a6(%rip), %rdx      # 0xa082
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6620
movq %rax, %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
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_open_input_file
struct value*
builtin_open_input_file(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("open-input-file", args, 1);
    ASSERT_TYPE("open-input-file", args, 0, VALUE_STRING);

    struct value* path = CAR(args);

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

    return vm_make_input_port(vm, port);
}

// 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 0x3f61
movq 0xa0ba(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x62c0(%rip), %rsi      # 0xa204
leaq 0x61ac(%rip), %rdx      # 0xa0f7
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 0x3fcf
movq 0xa066(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movl $0x5, %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 0x62ce(%rip), %rsi      # 0xa283
leaq 0x613b(%rip), %rdx      # 0xa0f7
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 0x10(%rax), %rdi
leaq 0x62f0(%rip), %rsi      # 0xa2db
callq 0x1180
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x4031
movq 0x9fde(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x62ca(%rip), %rsi      # 0xa2de
movb $0x0, %al
callq 0x1200
leaq 0x62db(%rip), %rdi      # 0xa2fd
callq 0x1130
movl $0x1, %edi
callq 0x11a0
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x9280
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_open_output_file
struct value*
builtin_open_output_file(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("open-output-file", args, 1);
    ASSERT_TYPE("open-output-file", args, 0, VALUE_STRING);

    struct value* path = CAR(args);

    FILE* port = fopen(path->as.string, "wb");
    if (port == NULL) {
        fprintf(stderr, "failed to open output file: %s\n", path->as.string);
        perror("reason");
        exit(EXIT_FAILURE);
    }

    return vm_make_output_port(vm, port);
}

// 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 0x40b1
movq 0x9f6a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x28(%rbp), %rdi
movq %rax, %r8
leaq 0x6170(%rip), %rsi      # 0xa204
leaq 0x606c(%rip), %rdx      # 0xa107
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 0x411f
movq 0x9f16(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movl $0x5, %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 0x617e(%rip), %rsi      # 0xa283
leaq 0x5ffb(%rip), %rdx      # 0xa107
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 0x10(%rax), %rdi
leaq 0x61c9(%rip), %rsi      # 0xa304
callq 0x1180
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x4181
movq 0x9e8e(%rip), %rax      # 0xdfe0
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x61a3(%rip), %rsi      # 0xa307
movb $0x0, %al
callq 0x1200
leaq 0x618b(%rip), %rdi      # 0xa2fd
callq 0x1130
movl $0x1, %edi
callq 0x11a0
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x92f0
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_close_input_port
struct value*
builtin_close_input_port(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("close-input-port", args, 1);
    ASSERT_TYPE("close-input-port", args, 0, VALUE_INPUT_PORT);

    struct value* port = CAR(args);
    fclose(port->as.port);

    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 0x4201
movq 0x9e1a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x20(%rbp), %rdi
movq %rax, %r8
leaq 0x6020(%rip), %rsi      # 0xa204
leaq 0x5f2d(%rip), %rdx      # 0xa118
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 $0xa, (%rax)
je 0x426f
movq 0x9dc6(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movl $0xa, %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 0x602e(%rip), %rsi      # 0xa283
leaq 0x5ebc(%rip), %rdx      # 0xa118
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 0x10(%rax), %rdi
callq 0x1170
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_close_output_port
struct value*
builtin_close_output_port(struct vm* vm, struct value* args)
{
    ASSERT_ARITY("close-output-port", args, 1);
    ASSERT_TYPE("close-output-port", args, 0, VALUE_OUTPUT_PORT);

    struct value* port = CAR(args);
    fclose(port->as.port);

    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 0x4301
movq 0x9d1a(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x20(%rbp), %rdi
movq %rax, %r8
leaq 0x5f20(%rip), %rsi      # 0xa204
leaq 0x5e3e(%rip), %rdx      # 0xa129
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 $0xb, (%rax)
je 0x436f
movq 0x9cc6(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movl $0xb, %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 0x5f2e(%rip), %rsi      # 0xa283
leaq 0x5dcd(%rip), %rdx      # 0xa129
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 0x10(%rax), %rdi
callq 0x1170
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_read
struct value*
builtin_read(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_OR("read", args, 0, 1);

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

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

    FILE* fp = port->as.port;
    return reader_read(vm, fp);
}

// 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 0x4413
movq -0x10(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x4413
movq 0x9c0b(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x65c0
movq -0x30(%rbp), %rdi
movq %rax, %r9
leaq 0x5f34(%rip), %rsi      # 0xa327
leaq 0x5d41(%rip), %rdx      # 0xa13b
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 0x4497
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xa, (%rax)
je 0x4495
movq 0x9ba0(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movl $0xa, %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 0x5e08(%rip), %rsi      # 0xa283
leaq 0x5cb9(%rip), %rdx      # 0xa13b
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x4497
movq $0x0, -0x20(%rbp)
cmpq $0x1, -0x18(%rbp)
jne 0x44b5
movq -0x10(%rbp), %rdi
callq 0x6710
movq %rax, -0x20(%rbp)
jmp 0x44cc
movq -0x8(%rbp), %rdi
movq 0x9b18(%rip), %rax      # 0xdfd8
movq (%rax), %rsi
callq 0x9280
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x7c90
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/builtin.c
// Function: builtin_read_char
struct value*
builtin_read_char(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_OR("read-char", args, 0, 1);

    long arity = list_length(args);
    if (arity == 1) {
        ASSERT_TYPE("read-char", args, 0, VALUE_INPUT_PORT);
    }

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

    FILE* fp = port->as.port;

    int c = fgetc(fp);
    if (ferror(fp)) {
        perror("error reading from port");
        exit(EXIT_FAILURE);
    }

    if (c == EOF && feof(fp)) {
        return vm_make_eof(vm);
    }

    return vm_make_character(vm, c);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x0, %rax
je 0x4563
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x4563
movq 0x9abb(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x40(%rbp), %rdi
movq %rax, %r9
leaq 0x5de4(%rip), %rsi      # 0xa327
leaq 0x5bf6(%rip), %rdx      # 0xa140
xorl %ecx, %ecx
movl $0x1, %r8d
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, -0x20(%rbp)
cmpq $0x1, -0x20(%rbp)
jne 0x45e7
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xa, (%rax)
je 0x45e5
movq 0x9a50(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl $0xa, %edi
callq 0x86d0
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %r8
movq %rax, %r9
leaq 0x5cb8(%rip), %rsi      # 0xa283
leaq 0x5b6e(%rip), %rdx      # 0xa140
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x45e7
movq $0x0, -0x28(%rbp)
cmpq $0x1, -0x20(%rbp)
jne 0x4605
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
jmp 0x461c
movq -0x10(%rbp), %rdi
movq 0x99c8(%rip), %rax      # 0xdfd8
movq (%rax), %rsi
callq 0x9280
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1220
movl %eax, -0x34(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1230
cmpl $0x0, %eax
je 0x4658
leaq 0x5d25(%rip), %rdi      # 0xa36e
callq 0x1130
movl $0x1, %edi
callq 0x11a0
cmpl $-0x1, -0x34(%rbp)
jne 0x467b
movq -0x30(%rbp), %rdi
callq 0x1210
cmpl $0x0, %eax
je 0x467b
movq -0x10(%rbp), %rdi
callq 0x9500
movq %rax, -0x8(%rbp)
jmp 0x468b
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %esi
callq 0x8f00
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/builtin.c
// Function: builtin_peek_char
struct value*
builtin_peek_char(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_OR("peek-char", args, 0, 1);

    long arity = list_length(args);
    if (arity == 1) {
        ASSERT_TYPE("peek-char", args, 0, VALUE_INPUT_PORT);
    }

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

    FILE* fp = port->as.port;

    int c = fgetc(fp);
    if (ferror(fp)) {
        perror("error reading from port");
        exit(EXIT_FAILURE);
    }

    if (c == EOF && feof(fp)) {
        return vm_make_eof(vm);
    }

    ungetc(c, fp);

    return vm_make_character(vm, c);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x0, %rax
je 0x4713
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x4713
movq 0x990b(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x40(%rbp), %rdi
movq %rax, %r9
leaq 0x5c34(%rip), %rsi      # 0xa327
leaq 0x5a50(%rip), %rdx      # 0xa14a
xorl %ecx, %ecx
movl $0x1, %r8d
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, -0x20(%rbp)
cmpq $0x1, -0x20(%rbp)
jne 0x4797
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xa, (%rax)
je 0x4795
movq 0x98a0(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl $0xa, %edi
callq 0x86d0
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %r8
movq %rax, %r9
leaq 0x5b08(%rip), %rsi      # 0xa283
leaq 0x59c8(%rip), %rdx      # 0xa14a
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x4797
movq $0x0, -0x28(%rbp)
cmpq $0x1, -0x20(%rbp)
jne 0x47b5
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
jmp 0x47cc
movq -0x10(%rbp), %rdi
movq 0x9818(%rip), %rax      # 0xdfd8
movq (%rax), %rsi
callq 0x9280
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1220
movl %eax, -0x34(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1230
cmpl $0x0, %eax
je 0x4808
leaq 0x5b75(%rip), %rdi      # 0xa36e
callq 0x1130
movl $0x1, %edi
callq 0x11a0
cmpl $-0x1, -0x34(%rbp)
jne 0x482b
movq -0x30(%rbp), %rdi
callq 0x1210
cmpl $0x0, %eax
je 0x482b
movq -0x10(%rbp), %rdi
callq 0x9500
movq %rax, -0x8(%rbp)
jmp 0x4847
movl -0x34(%rbp), %edi
movq -0x30(%rbp), %rsi
callq 0x1090
movq -0x10(%rbp), %rdi
movl -0x34(%rbp), %esi
callq 0x8f00
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/builtin.c
// Function: builtin_is_char_ready
struct value*
builtin_is_char_ready(struct vm* vm, struct value* args)
{
    ASSERT_ARITY_OR("char-ready?", args, 0, 1);

    long arity = list_length(args);
    if (arity == 1) {
        ASSERT_TYPE("char-ready?", args, 0, VALUE_INPUT_PORT);
    }

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

    FILE* fp = port->as.port;

    int c = fgetc(fp);
    if (ferror(fp)) {
        perror("error reading from port");
        exit(EXIT_FAILURE);
    }

    if (c == EOF && feof(fp)) {
        return vm_make_boolean(vm, true);
    }

    ungetc(c, fp);

    return vm_make_boolean(vm, true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x0, %rax
je 0x4973
movq -0x18(%rbp), %rdi
callq 0x65c0
cmpq $0x1, %rax
je 0x4973
movq 0x96ab(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
callq 0x65c0
movq -0x40(%rbp), %rdi
movq %rax, %r9
leaq 0x59d4(%rip), %rsi      # 0xa327
leaq 0x5806(%rip), %rdx      # 0xa160
xorl %ecx, %ecx
movl $0x1, %r8d
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
movq -0x18(%rbp), %rdi
callq 0x65c0
movq %rax, -0x20(%rbp)
cmpq $0x1, -0x20(%rbp)
jne 0x49f7
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
cmpl $0xa, (%rax)
je 0x49f5
movq 0x9640(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl $0xa, %edi
callq 0x86d0
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6670
movl (%rax), %edi
callq 0x86d0
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %r8
movq %rax, %r9
leaq 0x58a8(%rip), %rsi      # 0xa283
leaq 0x577e(%rip), %rdx      # 0xa160
xorl %ecx, %ecx
movb $0x0, %al
callq 0x1200
movl $0x1, %edi
callq 0x11a0
jmp 0x49f7
movq $0x0, -0x28(%rbp)
cmpq $0x1, -0x20(%rbp)
jne 0x4a15
movq -0x18(%rbp), %rdi
callq 0x6710
movq %rax, -0x28(%rbp)
jmp 0x4a2c
movq -0x10(%rbp), %rdi
movq 0x95b8(%rip), %rax      # 0xdfd8
movq (%rax), %rsi
callq 0x9280
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1220
movl %eax, -0x34(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1230
cmpl $0x0, %eax
je 0x4a68
leaq 0x5915(%rip), %rdi      # 0xa36e
callq 0x1130
movl $0x1, %edi
callq 0x11a0
cmpl $-0x1, -0x34(%rbp)
jne 0x4a90
movq -0x30(%rbp), %rdi
callq 0x1210
cmpl $0x0, %eax
je 0x4a90
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x8e90
movq %rax, -0x8(%rbp)
jmp 0x4aae
movl -0x34(%rbp), %edi
movq -0x30(%rbp), %rsi
callq 0x1090
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x8e90
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)