// File: /workspace/github_c_makefile_star2_O0/theandrew168[P]squeaky/src/main.c
// Function: main
int
main(int argc, char* argv[])
{
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        fprintf(stderr, "failed to init SDL2: %s\n", SDL_GetError());
        return EXIT_FAILURE;
    }

    struct vm vm = { 0 };
    vm_init(&vm);

    struct value* env = env_empty(&vm);
    env_define(&vm, vm_make_symbol(&vm, "nil"), vm_make_empty_list(&vm), env);
    env_define(&vm, vm_make_symbol(&vm, "stdin"), vm_make_input_port(&vm, stdin), env);
    env_define(&vm, vm_make_symbol(&vm, "stdout"), vm_make_output_port(&vm, stdout), env);
    env_define(&vm, vm_make_symbol(&vm, "stderr"), vm_make_output_port(&vm, stderr), env);

    // R5RS 6.1: Equivalence Predicates
    add_builtin(&vm, "eq?", builtin_is_eq, env);  // shallow compare (slightly more specific than eqv)
    add_builtin(&vm, "eqv?", builtin_is_eqv, env);  // shallow compare (baseline "what you'd expect" comparison)
    add_builtin(&vm, "equal?", builtin_is_equal, env);  // deep compare (recursive baseline comparison)

    // R5RS 6.2.5: Numerical Operations
    add_builtin(&vm, "number?", builtin_is_number, env);
    add_builtin(&vm, "=", builtin_equal, env);
    add_builtin(&vm, "<", builtin_less, env);
    add_builtin(&vm, ">", builtin_greater, env);
    add_builtin(&vm, "<=", builtin_less_equal, env);
    add_builtin(&vm, ">=", builtin_greater_equal, env);
    add_builtin(&vm, "+", builtin_add, env);
    add_builtin(&vm, "*", builtin_mul, env);
    add_builtin(&vm, "-", builtin_sub, env);
    add_builtin(&vm, "/", builtin_div, env);

    // R5RS 6.3.1: Booleans
    add_builtin(&vm, "boolean?", builtin_is_boolean, env);

    // R5RS 6.3.2: Pairs and Lists
    add_builtin(&vm, "pair?", builtin_is_pair, env);
    add_builtin(&vm, "cons", builtin_cons, env);
    add_builtin(&vm, "car", builtin_car, env);
    add_builtin(&vm, "cdr", builtin_cdr, env);
    add_builtin(&vm, "set-car!", builtin_set_car, env);
    add_builtin(&vm, "set-cdr!", builtin_set_cdr, env);
    add_builtin(&vm, "null?", builtin_is_null, env);

    // R5RS 6.3.3: Symbols
    add_builtin(&vm, "symbol?", builtin_is_symbol, env);

    // R5RS 6.3.5: Strings
    add_builtin(&vm, "string?", builtin_is_string, env);

    // R5RS 6.4: Control Features
    add_builtin(&vm, "procedure?", builtin_is_procedure, env);
    add_builtin(&vm, "apply", mce_builtin_apply, env);  // will be handled specifically by the MCE

    // R5RS 6.5: Eval
    add_builtin(&vm, "eval", mce_builtin_eval, env);  // will be handled specifically by the MCE

    // R5RS 6.6.1: Ports
    add_builtin(&vm, "input-port?", builtin_is_input_port, env);
    add_builtin(&vm, "output-port?", builtin_is_output_port, env);
    add_builtin(&vm, "current-input-port", builtin_current_input_port, env);
    add_builtin(&vm, "current-output-port", builtin_current_output_port, env);
    add_builtin(&vm, "open-input-file", builtin_open_input_file, env);
    add_builtin(&vm, "open-output-file", builtin_open_output_file, env);
    add_builtin(&vm, "close-input-port", builtin_close_input_port, env);
    add_builtin(&vm, "close-output-port", builtin_close_output_port, env);

    // R5RS 6.6.2: Input
    add_builtin(&vm, "read", builtin_read, env);
    add_builtin(&vm, "read-char", builtin_read_char, env);
    add_builtin(&vm, "peek-char", builtin_peek_char, env);
    add_builtin(&vm, "eof-object?", builtin_is_eof_object, env);
    add_builtin(&vm, "char-ready?", builtin_is_char_ready, env);

    // R5RS 6.6.3: Output
    add_builtin(&vm, "write", builtin_write, env);
    add_builtin(&vm, "display", builtin_display, env);
    add_builtin(&vm, "newline", builtin_newline, env);
    add_builtin(&vm, "write-char", builtin_write_char, env);

    /* Squeaky Extensions */

    // Windows
    add_builtin(&vm, "window?", builtin_is_window, env);
    add_builtin(&vm, "make-window", builtin_make_window, env);
    add_builtin(&vm, "window-clear!", builtin_window_clear, env);
    add_builtin(&vm, "window-draw-line!", builtin_window_draw_line, env);
    add_builtin(&vm, "window-present!", builtin_window_present, env);

    // Events
    add_builtin(&vm, "event?", builtin_is_event, env);
    add_builtin(&vm, "event-poll", builtin_event_poll, env);
    add_builtin(&vm, "event-type", builtin_event_type, env);
    add_builtin(&vm, "event-key", builtin_event_key, env);

    // load prelude (small library of R5RS funcs and extensions)
    struct value* exp = vm_make_pair(&vm,
        vm_make_symbol(&vm, "load"),
        vm_make_pair(&vm,
            vm_make_string(&vm, "prelude.scm"),
            vm_make_empty_list(&vm)));
    mce_eval(&vm, exp, env);

    // eval files given on CLI (if any) otherwise default to REPL
    if (argc >= 2) {
        for (int i = 1; i < argc; i++) {
            struct value* exp = vm_make_pair(&vm,
                vm_make_symbol(&vm, "load"),
                vm_make_pair(&vm,
                    vm_make_string(&vm, argv[1]),
                    vm_make_empty_list(&vm)));
            mce_eval(&vm, exp, env);
        }
    } else {
        for (;;) {
            printf("> ");
            struct value* exp = reader_read(&vm, stdin);
            if (value_is_eof(exp)) break;
            value_println(stdout, exp);

            struct value* res = mce_eval(&vm, exp, env);
            value_println(stdout, res);
        }
    }

    vm_free(&vm);
    SDL_Quit();
    return EXIT_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x240, %rsp            # imm = 0x240
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x20, %edi
callq 0x1140
cmpl $0x0, %eax
je 0x139c
movq 0xcc71(%rip), %rax      # 0xdfe0
movq (%rax), %rax
movq %rax, -0x60(%rbp)
callq 0x1120
movq -0x60(%rbp), %rdi
movq %rax, %rdx
leaq 0x8c7b(%rip), %rsi      # 0xa004
movb $0x0, %al
callq 0x1200
movl $0x1, -0x4(%rbp)
jmp 0x22d4
leaq -0x28(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x10e0
leaq -0x28(%rbp), %rdi
callq 0x8a80
leaq -0x28(%rbp), %rdi
callq 0x5e10
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x8c50(%rip), %rsi      # 0xa01d
callq 0x9070
movq %rax, -0x230(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x8dc0
movq -0x230(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8c1d(%rip), %rsi      # 0xa021
callq 0x9070
movq %rax, -0x228(%rbp)
movq 0xcbc1(%rip), %rax      # 0xdfd8
movq (%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x9280
movq -0x228(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8be2(%rip), %rsi      # 0xa027
callq 0x9070
movq %rax, -0x220(%rbp)
movq 0xcb68(%rip), %rax      # 0xdfc0
movq (%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x92f0
movq -0x220(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8ba8(%rip), %rsi      # 0xa02e
callq 0x9070
movq %rax, -0x218(%rbp)
movq 0xcb47(%rip), %rax      # 0xdfe0
movq (%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x92f0
movq -0x218(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8b6e(%rip), %rsi      # 0xa035
callq 0x9070
movq %rax, -0x210(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0xe02(%rip), %rsi       # 0x22e0
callq 0x9180
movq -0x210(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8b34(%rip), %rsi      # 0xa039
callq 0x9070
movq %rax, -0x208(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0xe94(%rip), %rsi       # 0x23b0
callq 0x9180
movq -0x208(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8afb(%rip), %rsi      # 0xa03e
callq 0x9070
movq %rax, -0x200(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0xf26(%rip), %rsi       # 0x2480
callq 0x9180
movq -0x200(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8ac4(%rip), %rsi      # 0xa045
callq 0x9070
movq %rax, -0x1f8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0xfb8(%rip), %rsi       # 0x2550
callq 0x9180
movq -0x1f8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8a91(%rip), %rsi      # 0xa050
callq 0x9070
movq %rax, -0x1f0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x101a(%rip), %rsi      # 0x25f0
callq 0x9180
movq -0x1f0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8a50(%rip), %rsi      # 0xa04d
callq 0x9070
movq %rax, -0x1e8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x118c(%rip), %rsi      # 0x27a0
callq 0x9180
movq -0x1e8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x98a2(%rip), %rsi      # 0xaedd
callq 0x9070
movq %rax, -0x1e0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x12fe(%rip), %rsi      # 0x2950
callq 0x9180
movq -0x1e0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x89d6(%rip), %rsi      # 0xa04f
callq 0x9070
movq %rax, -0x1d8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1470(%rip), %rsi      # 0x2b00
callq 0x9180
movq -0x1d8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x899b(%rip), %rsi      # 0xa052
callq 0x9070
movq %rax, -0x1d0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x15e2(%rip), %rsi      # 0x2cb0
callq 0x9180
movq -0x1d0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8960(%rip), %rsi      # 0xa055
callq 0x9070
movq %rax, -0x1c8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1754(%rip), %rsi      # 0x2e60
callq 0x9180
movq -0x1c8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8924(%rip), %rsi      # 0xa057
callq 0x9070
movq %rax, -0x1c0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1876(%rip), %rsi      # 0x2fc0
callq 0x9180
movq -0x1c0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x88e8(%rip), %rsi      # 0xa059
callq 0x9070
movq %rax, -0x1b8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1998(%rip), %rsi      # 0x3120
callq 0x9180
movq -0x1b8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x88ac(%rip), %rsi      # 0xa05b
callq 0x9070
movq %rax, -0x1b0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1ada(%rip), %rsi      # 0x32a0
callq 0x9180
movq -0x1b0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8870(%rip), %rsi      # 0xa05d
callq 0x9070
movq %rax, -0x1a8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1c4c(%rip), %rsi      # 0x3450
callq 0x9180
movq -0x1a8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x883b(%rip), %rsi      # 0xa066
callq 0x9070
movq %rax, -0x1a0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1cae(%rip), %rsi      # 0x34f0
callq 0x9180
movq -0x1a0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8803(%rip), %rsi      # 0xa06c
callq 0x9070
movq %rax, -0x198(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1d10(%rip), %rsi      # 0x3590
callq 0x9180
movq -0x198(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x87ca(%rip), %rsi      # 0xa071
callq 0x9070
movq %rax, -0x190(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1d72(%rip), %rsi      # 0x3630
callq 0x9180
movq -0x190(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8790(%rip), %rsi      # 0xa075
callq 0x9070
movq %rax, -0x188(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1e24(%rip), %rsi      # 0x3720
callq 0x9180
movq -0x188(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8756(%rip), %rsi      # 0xa079
callq 0x9070
movq %rax, -0x180(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1ed6(%rip), %rsi      # 0x3810
callq 0x9180
movq -0x180(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8721(%rip), %rsi      # 0xa082
callq 0x9070
movq %rax, -0x178(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x1fa8(%rip), %rsi      # 0x3920
callq 0x9180
movq -0x178(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x86ec(%rip), %rsi      # 0xa08b
callq 0x9070
movq %rax, -0x170(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x207a(%rip), %rsi      # 0x3a30
callq 0x9180
movq -0x170(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x86b4(%rip), %rsi      # 0xa091
callq 0x9070
movq %rax, -0x168(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x20dc(%rip), %rsi      # 0x3ad0
callq 0x9180
movq -0x168(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x867e(%rip), %rsi      # 0xa099
callq 0x9070
movq %rax, -0x160(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x213e(%rip), %rsi      # 0x3b70
callq 0x9180
movq -0x160(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8648(%rip), %rsi      # 0xa0a1
callq 0x9070
movq %rax, -0x158(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x21a0(%rip), %rsi      # 0x3c10
callq 0x9180
movq -0x158(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8615(%rip), %rsi      # 0xa0ac
callq 0x9070
movq %rax, -0x150(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x5752(%rip), %rsi      # 0x7200
callq 0x9180
movq -0x150(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x85dd(%rip), %rsi      # 0xa0b2
callq 0x9070
movq %rax, -0x148(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x56d4(%rip), %rsi      # 0x71c0
callq 0x9180
movq -0x148(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x85a4(%rip), %rsi      # 0xa0b7
callq 0x9070
movq %rax, -0x140(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2196(%rip), %rsi      # 0x3cc0
callq 0x9180
movq -0x140(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8572(%rip), %rsi      # 0xa0c3
callq 0x9070
movq %rax, -0x138(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x21f8(%rip), %rsi      # 0x3d60
callq 0x9180
movq -0x138(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8541(%rip), %rsi      # 0xa0d0
callq 0x9070
movq %rax, -0x130(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x225a(%rip), %rsi      # 0x3e00
callq 0x9180
movq -0x130(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8516(%rip), %rsi      # 0xa0e3
callq 0x9070
movq %rax, -0x128(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x229c(%rip), %rsi      # 0x3e80
callq 0x9180
movq -0x128(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x84ec(%rip), %rsi      # 0xa0f7
callq 0x9070
movq %rax, -0x120(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x22de(%rip), %rsi      # 0x3f00
callq 0x9180
movq -0x120(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x84be(%rip), %rsi      # 0xa107
callq 0x9070
movq %rax, -0x118(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x23f0(%rip), %rsi      # 0x4050
callq 0x9180
movq -0x118(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8491(%rip), %rsi      # 0xa118
callq 0x9070
movq %rax, -0x110(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2502(%rip), %rsi      # 0x41a0
callq 0x9180
movq -0x110(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8464(%rip), %rsi      # 0xa129
callq 0x9070
movq %rax, -0x108(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x25c4(%rip), %rsi      # 0x42a0
callq 0x9180
movq -0x108(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8438(%rip), %rsi      # 0xa13b
callq 0x9070
movq %rax, -0x100(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2686(%rip), %rsi      # 0x43a0
callq 0x9180
movq -0x100(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x83ff(%rip), %rsi      # 0xa140
callq 0x9070
movq %rax, -0xf8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2798(%rip), %rsi      # 0x44f0
callq 0x9180
movq -0xf8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x83cb(%rip), %rsi      # 0xa14a
callq 0x9070
movq %rax, -0xf0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x290a(%rip), %rsi      # 0x46a0
callq 0x9180
movq -0xf0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8397(%rip), %rsi      # 0xa154
callq 0x9070
movq %rax, -0xe8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2a8c(%rip), %rsi      # 0x4860
callq 0x9180
movq -0xe8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8365(%rip), %rsi      # 0xa160
callq 0x9070
movq %rax, -0xe0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2aee(%rip), %rsi      # 0x4900
callq 0x9180
movq -0xe0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8333(%rip), %rsi      # 0xa16c
callq 0x9070
movq %rax, -0xd8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2c70(%rip), %rsi      # 0x4ac0
callq 0x9180
movq -0xd8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x82fb(%rip), %rsi      # 0xa172
callq 0x9070
movq %rax, -0xd0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2da2(%rip), %rsi      # 0x4c30
callq 0x9180
movq -0xd0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8fa9(%rip), %rsi      # 0xae5e
callq 0x9070
movq %rax, -0xc8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2ed4(%rip), %rsi      # 0x4da0
callq 0x9180
movq -0xc8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8287(%rip), %rsi      # 0xa17a
callq 0x9070
movq %rax, -0xc0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x2fe6(%rip), %rsi      # 0x4ef0
callq 0x9180
movq -0xc0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8254(%rip), %rsi      # 0xa185
callq 0x9070
movq %rax, -0xb8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x3188(%rip), %rsi      # 0x50d0
callq 0x9180
movq -0xb8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x821e(%rip), %rsi      # 0xa18d
callq 0x9070
movq %rax, -0xb0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x31ea(%rip), %rsi      # 0x5170
callq 0x9180
movq -0xb0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x81ec(%rip), %rsi      # 0xa199
callq 0x9070
movq %rax, -0xa8(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x33cc(%rip), %rsi      # 0x5390
callq 0x9180
movq -0xa8(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x81bc(%rip), %rsi      # 0xa1a7
callq 0x9070
movq %rax, -0xa0(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x34ae(%rip), %rsi      # 0x54b0
callq 0x9180
movq -0xa0(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8190(%rip), %rsi      # 0xa1b9
callq 0x9070
movq %rax, -0x98(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x37e0(%rip), %rsi      # 0x5820
callq 0x9180
movq -0x98(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x8162(%rip), %rsi      # 0xa1c9
callq 0x9070
movq %rax, -0x90(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x38a2(%rip), %rsi      # 0x5920
callq 0x9180
movq -0x90(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x812b(%rip), %rsi      # 0xa1d0
callq 0x9070
movq %rax, -0x88(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x3904(%rip), %rsi      # 0x59c0
callq 0x9180
movq -0x88(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x80f8(%rip), %rsi      # 0xa1db
callq 0x9070
movq %rax, -0x80(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x39f9(%rip), %rsi      # 0x5af0
callq 0x9180
movq -0x80(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x80cb(%rip), %rsi      # 0xa1e6
callq 0x9070
movq %rax, -0x78(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x3b71(%rip), %rsi      # 0x5ca0
callq 0x9180
movq -0x78(%rbp), %rsi
movq %rax, %rdx
movq -0x30(%rbp), %rcx
leaq -0x28(%rbp), %rdi
callq 0x63f0
leaq -0x28(%rbp), %rdi
leaq 0x809d(%rip), %rsi      # 0xa1f0
callq 0x9070
movq %rax, -0x68(%rbp)
leaq -0x28(%rbp), %rdi
leaq 0x808e(%rip), %rsi      # 0xa1f5
callq 0x8fe0
movq %rax, -0x70(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x8dc0
movq -0x70(%rbp), %rsi
movq %rax, %rdx
leaq -0x28(%rbp), %rdi
callq 0x9100
movq -0x68(%rbp), %rsi
movq %rax, %rdx
leaq -0x28(%rbp), %rdi
callq 0x9100
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x6760
cmpl $0x2, -0x8(%rbp)
jl 0x224e
movl $0x1, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x224c
leaq -0x28(%rbp), %rdi
leaq 0x801a(%rip), %rsi      # 0xa1f0
callq 0x9070
movq %rax, -0x238(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x8fe0
movq %rax, -0x240(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x8dc0
movq -0x240(%rbp), %rsi
movq %rax, %rdx
leaq -0x28(%rbp), %rdi
callq 0x9100
movq -0x238(%rbp), %rsi
movq %rax, %rdx
leaq -0x28(%rbp), %rdi
callq 0x9100
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x6760
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x21bf
jmp 0x22bf
jmp 0x2250
leaq 0x7faa(%rip), %rdi      # 0xa201
movb $0x0, %al
callq 0x1050
movq 0xbd73(%rip), %rax      # 0xdfd8
movq (%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x7c90
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpl $0xe, (%rax)
jne 0x2280
jmp 0x22bd
movq 0xbd39(%rip), %rax      # 0xdfc0
movq (%rax), %rdi
movq -0x50(%rbp), %rsi
callq 0x8690
movq -0x50(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x6760
movq %rax, -0x58(%rbp)
movq 0xbd11(%rip), %rax      # 0xdfc0
movq (%rax), %rdi
movq -0x58(%rbp), %rsi
callq 0x8690
jmp 0x2250
jmp 0x22bf
leaq -0x28(%rbp), %rdi
callq 0x8b70
callq 0x1070
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq