// File: /workspace/github_c_makefile_star2_O3/ebb[P]chisa/printer.c
// Function: print
void print(long fi)
{
    long def, id, args, value, blocks;

    /*
     * Includes.
     */
    pr("#include \"runtime.h\"\n");

    /*
     * Enums for classes.
     */
    if (nrClasses(fi) > 0) {
        pr("\n");
        pr("enum {\n");
        {
            const char *initializer = " = USER_CLASS_MIN";

            forEach(fi, def) {
                if (match(def, CLASS_FiDefineCons, &id, &args)) {
                    pr("    CLASS_"), prId(id), pr(initializer), pr(",\n");
                    initializer = "";
                }
            }
        }
        pr("};\n");
    }

    /*
     * Declarations.
     */
    {
        int isVar;

        forEach(fi, def) {
            pr("\n");
            if (match(def, CLASS_FiDefineVar, &id, &value))
                isVar = 1;
            else if (match(def, CLASS_FiDefineFunc, &id, &args, &blocks))
                isVar = 0;
            else if (match(def, CLASS_FiDefineCons, &id, &args))
                isVar = 0;
            if (isVar)
                pr("long "), prId(id), pr(";\n");
            else
                prFuncSpec(idName(id), args), pr(";\n");
        }
    }

    /*
     * Definitions.
     */
    {
        forEach(fi, def) {
            if (match(def, CLASS_FiDefineFunc, &id, &args, &blocks)) {
                /*
                 * Func
                 */
                pr("\n");
                prFuncSpec(idName(id), args), pr("\n");
                pr("{\n");
                prVariables(blocks);
                prBlocks(blocks);
                pr("}\n");
            } else if (match(def, CLASS_FiDefineCons, &id, &args)) {
                /*
                 * Cons
                 */
                pr("\n");
                prFuncSpec(idName(id), args), pr("\n");
                pr("{\n");
                {
                    int len;

                    len = length(args);
                    arities[classCounter++] = length(args);
                    printf("    return runtime_makeTuple%d(CLASS_", len);
                    prId(id);
                    if (len > 0)
                        pr(", "), prIds(args), pr(");\n");
                    else
                        pr(");\n");
                }
                pr("}\n");
            }
        }
    }

    /*
     * compiler_init() (For setting globals)
     */
    {
        int i;

        pr("\n");
        pr("void compiler_init(void)\n");
        pr("{\n");
        for (i = USER_CLASS_MIN; i < classCounter; i++) {
            printf("    runtime_classArities[%d] = %d;\n",
                i, (int)arities[i]);
        }
        forEach(fi, def) {
            if (match(def, CLASS_FiDefineVar, &id, &value)) {
                pr("    "), prId(id), pr(" = ");
                if (match(value, CLASS_Fixnum))
                    pr("runtime_makeNumber("), prNum(value);
                else if (match(value, CLASS_String))
                    pr("runtime_makeString(\""), prStr(value), pr("\"");
                else
                    die("Unknown constant type.");
                pr(");\n");
            }
        }
        pr("}\n");
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
movq %rdi, %rbx
leaq 0x2b46(%rip), %rdi      # 0x56c1
callq 0x1050
leaq 0x40(%rsp), %rcx
movq %rbx, (%rcx)
leaq 0x8(%rsp), %rdx
movq %rbx, 0x68(%rsp)
movq %rbx, %rdi
movl $0x3, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2ccc
leaq 0x30(%rsp), %rbx
leaq 0x18(%rsp), %r14
leaq 0x8(%rsp), %r15
leaq 0x40(%rsp), %r12
xorl %ebp, %ebp
movq 0x8(%rsp), %rdi
movl $0x14, %esi
movq %rbx, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x3adc
addl %eax, %ebp
movq 0x40(%rsp), %rdi
movl $0x3, %esi
movq %r15, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
jne 0x2bbf
testl %ebp, %ebp
je 0x2ccc
movl $0xa, %edi
callq 0x1040
leaq 0x2aca(%rip), %rdi      # 0x56d6
callq 0x1050
leaq 0x8(%rsp), %rcx
movq 0x68(%rsp), %rdi
movq %rdi, (%rcx)
leaq 0x10(%rsp), %rdx
movl $0x3, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2cc0
leaq 0x288d(%rip), %r13      # 0x54cb
leaq 0x28(%rsp), %rbx
leaq 0x38(%rsp), %r14
leaq 0x10(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x294e(%rip), %rbp      # 0x55a7
movq 0x10(%rsp), %rdi
movl $0x14, %esi
movq %rbx, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2ca5
leaq 0x2862(%rip), %rdi      # 0x54dd
xorl %eax, %eax
callq 0x1070
movq 0x28(%rsp), %rdi
callq 0x3be7
movq %r13, %rdi
xorl %eax, %eax
callq 0x1070
leaq 0x2a40(%rip), %rdi      # 0x56dd
callq 0x1050
movq %rbp, %r13
movq 0x8(%rsp), %rdi
movl $0x3, %esi
movq %r15, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
jne 0x2c59
leaq 0x2a18(%rip), %rdi      # 0x56df
callq 0x1050
leaq 0x8(%rsp), %rcx
movq 0x68(%rsp), %rdi
movq %rdi, (%rcx)
leaq 0x10(%rsp), %rdx
movl $0x3, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2ded
leaq 0x28(%rsp), %rbx
leaq 0x29bb(%rip), %r13      # 0x56b9
leaq 0x10(%rsp), %rbp
leaq 0x8(%rsp), %r12
movl $0xa, %edi
callq 0x1040
movq 0x10(%rsp), %rdi
movl $0x12, %esi
movq %rbx, %rdx
leaq 0x58(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
movl $0x1, %r15d
testl %eax, %eax
je 0x2d52
leaq 0x2846(%rip), %rdi      # 0x5582
xorl %eax, %eax
callq 0x1070
movq 0x28(%rsp), %rdi
callq 0x3be7
movl %r15d, %r14d
jmp 0x2dc6
movq 0x10(%rsp), %rdi
movl $0x13, %esi
movq %rbx, %rdx
leaq 0x38(%rsp), %rcx
leaq 0x88(%rsp), %r8
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
jne 0x2da2
movq 0x10(%rsp), %rdi
movl $0x14, %esi
movq %rbx, %rdx
leaq 0x38(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
setne %al
testl %r14d, %r14d
sete %cl
orb %al, %cl
movl %r14d, %r15d
je 0x2d35
movq 0x28(%rsp), %rdi
leaq 0x2545a(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3f78
movq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x3c0a
xorl %r14d, %r14d
movq %r13, %rdi
callq 0x1050
movq 0x8(%rsp), %rdi
movl $0x3, %esi
movq %rbp, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
jne 0x2d08
leaq 0xa8(%rsp), %rcx
movq 0x68(%rsp), %rdi
movq %rdi, (%rcx)
leaq 0x10(%rsp), %rdx
movl $0x3, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3924
leaq 0x28(%rsp), %r14
leaq 0x38(%rsp), %r13
leaq 0x30(%rsp), %rbp
leaq 0x40(%rsp), %rbx
leaq 0x20(%rsp), %r12
leaq 0x50(%rsp), %r15
movq 0x10(%rsp), %rdi
movl $0x13, %esi
movq %r14, %rdx
movq %r13, %rcx
leaq 0x88(%rsp), %r8
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3810
movl $0xa, %edi
callq 0x1040
movq 0x28(%rsp), %rdi
leaq 0x25397(%rip), %r13     # 0x28208
movq (%r13), %rsi
callq 0x3f78
movq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x3c0a
movl $0xa, %edi
callq 0x1040
leaq 0x27ec(%rip), %rdi      # 0x5684
callq 0x1050
movq 0x88(%rsp), %rdi
leaq 0x2537c(%rip), %rax     # 0x28228
movq (%rax), %r14
movq %rdi, 0x18(%rsp)
movl $0x3, %esi
movq %rbp, %rdx
leaq 0x18(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2f97
movq 0x30(%rsp), %rdi
movl $0x15, %esi
leaq 0x8(%rsp), %rdx
leaq 0x60(%rsp), %rcx
leaq 0x48(%rsp), %r8
leaq 0x98(%rsp), %r9
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2f8d
movq 0x60(%rsp), %rdi
movq %rdi, 0x20(%rsp)
movl $0x3, %esi
movq %rbx, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2f37
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x42e4
movq %rax, %r14
movq 0x20(%rsp), %rdi
jmp 0x2f0a
movq 0x48(%rsp), %rdi
movq %rdi, 0x20(%rsp)
movl $0x3, %esi
leaq 0x78(%rsp), %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2f8d
movq 0x78(%rsp), %rdi
movl $0x16, %esi
leaq 0x8(%rsp), %rdx
movq %r15, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x2f86
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x42e4
movq %rax, %r14
movq 0x20(%rsp), %rdi
jmp 0x2f41
movq 0x18(%rsp), %rdi
jmp 0x2eb4
leaq 0x2528a(%rip), %rax     # 0x28228
cmpq (%rax), %r14
je 0x302c
leaq 0x25d0(%rip), %rdi      # 0x557e
xorl %eax, %eax
callq 0x1070
movq %r14, 0x20(%rsp)
movq %r14, %rdi
movl $0x3, %esi
movq %r12, %r13
leaq 0x18(%rsp), %r12
movq %r12, %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
leaq 0x252e(%rip), %r14      # 0x550e
je 0x3018
leaq 0x25be(%rip), %rdi      # 0x55a7
xorl %eax, %eax
callq 0x1070
movq 0x18(%rsp), %rdi
callq 0x3be7
movq 0x20(%rsp), %rdi
movl $0x3, %esi
movq %r12, %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x3adc
movq %r14, %rdi
testl %eax, %eax
jne 0x2fe9
leaq 0x269a(%rip), %rdi      # 0x56b9
callq 0x1050
leaq 0x50(%rsp), %r15
movq %r13, %r12
movq 0x88(%rsp), %rdi
movq %rdi, 0x90(%rsp)
movq %rdi, 0x80(%rsp)
movl $0x3, %esi
leaq 0xb8(%rsp), %rdx
leaq 0x90(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
leaq 0x2588(%rip), %r13      # 0x55f1
je 0x38e5
xorl %r14d, %r14d
movq 0xb8(%rsp), %rdi
movl $0x15, %esi
leaq 0x70(%rsp), %rdx
leaq 0xe0(%rsp), %rcx
leaq 0xd8(%rsp), %r8
leaq 0xd0(%rsp), %r9
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3560
testl %r14d, %r14d
jne 0x30d4
leaq 0x2598(%rip), %rdi      # 0x564f
xorl %eax, %eax
callq 0x1070
movq 0x70(%rsp), %rdi
callq 0x3be7
leaq 0x25ea(%rip), %rdi      # 0x56b9
callq 0x1050
movq 0x70(%rsp), %rdi
callq 0x3be7
leaq 0x25ac(%rip), %rdi      # 0x5691
callq 0x1050
movq 0xd8(%rsp), %rdi
movq %rdi, 0x40(%rsp)
movl $0x3, %esi
leaq 0xb0(%rsp), %rdx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x32be
movq 0xb0(%rsp), %rdi
movl $0x16, %esi
leaq 0x70(%rsp), %rdx
leaq 0xc8(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x31f2
leaq 0x24af(%rip), %rdi      # 0x55f5
xorl %eax, %eax
callq 0x1070
movq 0x70(%rsp), %rdi
callq 0x3be7
leaq 0x23d7(%rip), %rdi      # 0x5535
xorl %eax, %eax
callq 0x1070
movq 0xc8(%rsp), %r14
movq %r14, %rdi
movl $0x1e, %esi
leaq 0x8(%rsp), %r12
movq %r12, %rdx
movq %rbp, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x319b
leaq 0x23f6(%rip), %rdi      # 0x5588
xorl %eax, %eax
callq 0x1070
jmp 0x31b4
movq %r14, %rdi
movl $0x1d, %esi
movq %r12, %rdx
movq %rbp, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x31fc
movq 0x8(%rsp), %rdi
callq 0x3be7
movl $0x28, %edi
callq 0x1040
movq 0x30(%rsp), %rdi
callq 0x3d2e
movl $0x29, %edi
callq 0x1040
leaq 0x50(%rsp), %r15
leaq 0x20(%rsp), %r12
leaq 0x24cc(%rip), %rdi      # 0x56b9
callq 0x1050
movq 0x40(%rsp), %rdi
jmp 0x30f7
movq %r14, %rdi
xorl %esi, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
leaq 0x50(%rsp), %r15
leaq 0x20(%rsp), %r12
je 0x3249
leaq 0x231c(%rip), %rdi      # 0x5539
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f5c
leaq 0x244a(%rip), %rdi      # 0x567d
movq %rax, %rsi
xorl %eax, %eax
callq 0x1070
movl $0x29, %edi
callq 0x1040
jmp 0x31e6
movq %r14, %rdi
movl $0x1, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x328f
leaq 0x22ea(%rip), %rdi      # 0x554d
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f20
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
leaq 0x230b(%rip), %rdi      # 0x558e
xorl %eax, %eax
callq 0x1070
jmp 0x31e6
movq %r14, %rdi
movl $0x4, %esi
leaq 0x18(%rsp), %rdx
xorl %eax, %eax
callq 0x3adc
movq %r14, %rdi
testl %eax, %eax
je 0x32b4
callq 0x3be7
jmp 0x31e6
callq 0x120b
jmp 0x31e6
movq 0xd0(%rsp), %r14
movq %r14, %rdi
movl $0x17, %esi
leaq 0x8(%rsp), %rdx
movq %rbp, %rcx
movq %rbx, %r8
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x337a
movq 0x30(%rsp), %rdi
leaq 0x24f14(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3f78
movq %rax, %r14
movq 0x8(%rsp), %rdi
movl $0x2, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x346c
leaq 0x22a3(%rip), %rdi      # 0x55c2
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f20
movq %rax, %rdi
callq 0x4382
testl %eax, %eax
je 0x3348
leaq 0x2247(%rip), %rdi      # 0x5588
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f20
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
movl $0x28, %edi
callq 0x1040
movq 0x40(%rsp), %rdi
callq 0x3d2e
leaq 0x2343(%rip), %rdi      # 0x56b8
jmp 0x3555
movq %r14, %rdi
movl $0x18, %esi
movq %rbp, %rdx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3520
movq 0x30(%rsp), %rdi
leaq 0x24e65(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3f78
movq %rax, %rdi
movq 0x80(%rsp), %rsi
callq 0x3da0
movq %rax, 0x48(%rsp)
movq %rax, %rdi
movl $0x3, %esi
leaq 0x60(%rsp), %rdx
leaq 0x48(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
leaq 0x18(%rsp), %r14
je 0x3460
movq 0x40(%rsp), %rdi
movl $0x3, %esi
movq %r14, %rdx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
jne 0x3409
leaq 0x21ca(%rip), %rdi      # 0x55ce
callq 0x4434
movq %r13, %rdi
xorl %eax, %eax
callq 0x1070
movq 0x60(%rsp), %rdi
callq 0x3be7
leaq 0x2111(%rip), %rdi      # 0x5535
xorl %eax, %eax
callq 0x1070
movq 0x18(%rsp), %rdi
callq 0x3be7
leaq 0x227d(%rip), %rdi      # 0x56b9
callq 0x1050
movq 0x48(%rsp), %rdi
movl $0x3, %esi
leaq 0x60(%rsp), %rdx
leaq 0x48(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
jne 0x33e2
leaq 0x21e8(%rip), %rdi      # 0x564f
jmp 0x353d
movq 0x8(%rsp), %rdi
movl $0x4, %esi
leaq 0x18(%rsp), %rdx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x355a
movq 0x18(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x3da0
movq %rax, %r13
leaq 0x214f(%rip), %rdi      # 0x55f5
xorl %eax, %eax
callq 0x1070
movq %r13, %rdi
leaq 0x213a(%rip), %r13      # 0x55f1
callq 0x3d2e
leaq 0x2072(%rip), %rdi      # 0x5535
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f20
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
movl $0x28, %edi
callq 0x1040
movq 0x40(%rsp), %rdi
callq 0x3d2e
leaq 0x21c1(%rip), %rdi      # 0x56b8
callq 0x1050
leaq 0x214c(%rip), %rdi      # 0x564f
xorl %eax, %eax
callq 0x1070
movq 0x18(%rsp), %rdi
callq 0x3f20
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
jmp 0x354e
movq %r14, %rdi
movl $0x19, %esi
movq %rbp, %rdx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3591
leaq 0x2085(%rip), %rdi      # 0x55c2
xorl %eax, %eax
callq 0x1070
movq 0x30(%rsp), %rdi
callq 0x3be7
leaq 0x2164(%rip), %rdi      # 0x56b9
callq 0x1050
movl $0x1, %r14d
movq 0x90(%rsp), %rdi
movl $0x3, %esi
leaq 0xb8(%rsp), %rdx
leaq 0x90(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
jne 0x3072
jmp 0x38e5
movq %r14, %rdi
movl $0x1a, %esi
movq %rbp, %rdx
leaq 0x18(%rsp), %rcx
leaq 0x60(%rsp), %r8
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x355a
leaq 0x2042(%rip), %rdi      # 0x55fa
xorl %eax, %eax
callq 0x1070
movq 0x30(%rsp), %rdi
callq 0x3be7
leaq 0x20b1(%rip), %rdi      # 0x5681
callq 0x1050
movq 0x18(%rsp), %rdi
movq %rdi, 0x20(%rsp)
movl $0x3, %esi
leaq 0x48(%rsp), %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x37ec
xorl %r12d, %r12d
leaq 0xc0(%rsp), %r14
movq 0x48(%rsp), %rdi
movl $0x1b, %esi
leaq 0x78(%rsp), %rdx
leaq 0x98(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x376f
movl %r12d, 0xa4(%rsp)
leaq 0x1fda(%rip), %rdi      # 0x5615
xorl %eax, %eax
callq 0x1070
movq 0x78(%rsp), %rdi
callq 0x3be7
leaq 0x203e(%rip), %rdi      # 0x5691
callq 0x1050
movq 0x98(%rsp), %rdi
leaq 0x24ba1(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3f78
movq %rax, %rdi
movq 0x80(%rsp), %rsi
callq 0x3da0
movq %rax, 0xc0(%rsp)
movq %rax, %rdi
movl $0x3, %esi
movq %r15, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
leaq 0x2013(%rip), %rbp      # 0x56b8
movq %r14, %r12
leaq 0x1f76(%rip), %rbx      # 0x5625
je 0x372c
xorl %r14d, %r14d
leaq 0x1f36(%rip), %rdi      # 0x55f1
xorl %eax, %eax
callq 0x1070
movq 0x50(%rsp), %rdi
callq 0x3be7
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1070
movq 0x30(%rsp), %rdi
callq 0x3be7
leaq 0x1e27(%rip), %rdi      # 0x550e
xorl %eax, %eax
callq 0x1070
leal 0x1(%r14), %r13d
leaq 0x1f3b(%rip), %rdi      # 0x5634
movl %r14d, %esi
xorl %eax, %eax
callq 0x1070
movq %rbp, %rdi
callq 0x1050
movq 0xc0(%rsp), %rdi
movl $0x3, %esi
movq %r15, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3adc
movl %r13d, %r14d
testl %eax, %eax
jne 0x36b4
leaq 0x1f18(%rip), %rdi      # 0x564b
xorl %eax, %eax
callq 0x1070
movq 0x98(%rsp), %rdi
callq 0x3be7
leaq 0x1f6b(%rip), %rdi      # 0x56b9
callq 0x1050
leaq 0x30(%rsp), %rbp
movq %r12, %r14
leaq 0x40(%rsp), %rbx
leaq 0x1e8a(%rip), %r13      # 0x55f1
movl 0xa4(%rsp), %r12d
movq 0x48(%rsp), %rdi
movl $0x1c, %esi
movq %rbp, %rdx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x37ba
leaq 0x1ef8(%rip), %rdi      # 0x5686
callq 0x1050
leaq 0x1eb1(%rip), %rdi      # 0x564b
xorl %eax, %eax
callq 0x1070
movq 0x30(%rsp), %rdi
callq 0x3be7
leaq 0x1f07(%rip), %rdi      # 0x56b9
callq 0x1050
incl %r12d
movq 0x20(%rsp), %rdi
movl $0x3, %esi
leaq 0x48(%rsp), %rdx
leaq 0x20(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
leaq 0x50(%rsp), %r15
jne 0x3606
testl %r12d, %r12d
leaq 0x20(%rsp), %r12
jne 0x3804
leaq 0x1e93(%rip), %rdi      # 0x5686
callq 0x1050
leaq 0x1e94(%rip), %rdi      # 0x5693
callq 0x1050
leaq 0x1eb0(%rip), %rdi      # 0x56bb
jmp 0x3555
movq 0x10(%rsp), %rdi
movl $0x14, %esi
movq %r14, %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x38f6
movl $0xa, %edi
callq 0x1040
movq 0x28(%rsp), %rdi
leaq 0x249c3(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3f78
movq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x3c0a
movl $0xa, %edi
callq 0x1040
leaq 0x1e19(%rip), %rdi      # 0x5684
callq 0x1050
movq 0x38(%rsp), %rdi
callq 0x3cef
movl %eax, %r14d
movq 0x38(%rsp), %rdi
callq 0x3cef
movslq 0x48e2(%rip), %rcx      # 0x8170
leal 0x1(%rcx), %edx
movl %edx, 0x48d9(%rip)      # 0x8170
leaq 0x14942(%rip), %rdx     # 0x181e0
movb %al, (%rcx,%rdx)
leaq 0x1c40(%rip), %rdi      # 0x54e8
movl %r14d, %esi
xorl %eax, %eax
callq 0x1070
movq 0x28(%rsp), %rdi
callq 0x3be7
testl %r14d, %r14d
jle 0x38d9
leaq 0x1c46(%rip), %rdi      # 0x550e
xorl %eax, %eax
callq 0x1070
movq 0x38(%rsp), %rdi
callq 0x3d2e
leaq 0x1dd8(%rip), %rdi      # 0x56b8
callq 0x1050
leaq 0x28(%rsp), %r14
leaq 0x1dce(%rip), %rdi      # 0x56bf
callq 0x1050
movq 0xa8(%rsp), %rdi
movl $0x3, %esi
leaq 0x10(%rsp), %rdx
leaq 0xa8(%rsp), %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
leaq 0x38(%rsp), %r13
jne 0x2e34
movl $0xa, %edi
callq 0x1040
leaq 0x1dad(%rip), %rdi      # 0x56e2
callq 0x1050
leaq 0x1d43(%rip), %rdi      # 0x5684
callq 0x1050
cmpl $0x20, 0x4823(%rip)     # 0x8170
jl 0x3982
movl $0x1f, %ebx
leaq 0x14885(%rip), %r15     # 0x181e0
leaq 0x1baf(%rip), %r14      # 0x5511
movzbl (%rbx,%r15), %edx
movq %r14, %rdi
movl %ebx, %esi
xorl %eax, %eax
callq 0x1070
incq %rbx
movslq 0x47f3(%rip), %rax      # 0x8170
cmpq %rax, %rbx
jl 0x3962
leaq 0x8(%rsp), %rcx
movq 0x68(%rsp), %rdi
movq %rdi, (%rcx)
leaq 0x10(%rsp), %rdx
movl $0x3, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3abe
leaq 0x28(%rsp), %rbx
leaq 0x58(%rsp), %r14
leaq 0x10(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x1b72(%rip), %rbp      # 0x5535
leaq 0x1cee(%rip), %r13      # 0x56b8
movq 0x10(%rsp), %rdi
movl $0x12, %esi
movq %rbx, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3a9f
leaq 0x1c05(%rip), %rdi      # 0x55f5
xorl %eax, %eax
callq 0x1070
movq 0x28(%rsp), %rdi
callq 0x3be7
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1070
movq 0x58(%rsp), %rdi
xorl %esi, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3a48
leaq 0x1b15(%rip), %rdi      # 0x5539
xorl %eax, %eax
callq 0x1070
movq 0x58(%rsp), %rdi
callq 0x3f5c
leaq 0x1c41(%rip), %rdi      # 0x567d
movq %rax, %rsi
xorl %eax, %eax
callq 0x1070
jmp 0x3a97
movq 0x58(%rsp), %rdi
movl $0x1, %esi
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
je 0x3a8b
leaq 0x1ae9(%rip), %rdi      # 0x554d
xorl %eax, %eax
callq 0x1070
movq 0x58(%rsp), %rdi
callq 0x3f20
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
movl $0x22, %edi
callq 0x1040
jmp 0x3a97
leaq 0x1ad0(%rip), %rdi      # 0x5562
callq 0x4434
movq %r13, %rdi
callq 0x1050
movq 0x8(%rsp), %rdi
movl $0x3, %esi
movq %r15, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3adc
testl %eax, %eax
jne 0x39ca
leaq 0x1bfa(%rip), %rdi      # 0x56bf
callq 0x1050
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq