// File: /workspace/github_c_makefile_star2_O1/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 0x2aea(%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 0x3b39
testl %eax, %eax
je 0x2d28
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 0x3b39
addl %eax, %ebp
movq 0x40(%rsp), %rdi
movl $0x3, %esi
movq %r15, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
jne 0x2c1b
testl %ebp, %ebp
je 0x2d28
movl $0xa, %edi
callq 0x1040
leaq 0x2a6e(%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 0x3b39
testl %eax, %eax
je 0x2d1c
leaq 0x2831(%rip), %r13      # 0x54cb
leaq 0x28(%rsp), %rbx
leaq 0x38(%rsp), %r14
leaq 0x10(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x28f2(%rip), %rbp      # 0x55a7
movq 0x10(%rsp), %rdi
movl $0x14, %esi
movq %rbx, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x2d01
leaq 0x2806(%rip), %rdi      # 0x54dd
xorl %eax, %eax
callq 0x1070
movq 0x28(%rsp), %rdi
callq 0x3c44
movq %r13, %rdi
xorl %eax, %eax
callq 0x1070
leaq 0x29e4(%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 0x3b39
testl %eax, %eax
jne 0x2cb5
leaq 0x29bc(%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 0x3b39
testl %eax, %eax
je 0x2e4a
leaq 0x28(%rsp), %rbx
leaq 0x295f(%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 0x3b39
movl $0x1, %r14d
testl %eax, %eax
jne 0x2de0
movq 0x10(%rsp), %rdi
xorl %r14d, %r14d
movl $0x13, %esi
movq %rbx, %rdx
leaq 0x38(%rsp), %rcx
leaq 0x88(%rsp), %r8
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
jne 0x2de0
movq 0x10(%rsp), %rdi
movl $0x14, %esi
movq %rbx, %rdx
leaq 0x38(%rsp), %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
movl $0x0, %eax
cmovnel %eax, %r15d
movl %r15d, %r14d
testl %r14d, %r14d
je 0x2dff
leaq 0x2796(%rip), %rdi      # 0x5582
xorl %eax, %eax
callq 0x1070
movq 0x28(%rsp), %rdi
callq 0x3c44
jmp 0x2e20
movq 0x28(%rsp), %rdi
leaq 0x253fd(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3fe4
movq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x3c67
movq %r13, %rdi
callq 0x1050
movq 0x8(%rsp), %rdi
movl $0x3, %esi
movq %rbp, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3b39
movl %r14d, %r15d
testl %eax, %eax
jne 0x2d64
leaq 0xa8(%rsp), %rcx
movq 0x68(%rsp), %rdi
movq %rdi, (%rcx)
leaq 0x10(%rsp), %rdx
movl $0x3, %esi
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x3981
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 0x3b39
testl %eax, %eax
je 0x386d
movl $0xa, %edi
callq 0x1040
movq 0x28(%rsp), %rdi
leaq 0x2533a(%rip), %r13     # 0x28208
movq (%r13), %rsi
callq 0x3fe4
movq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x3c67
movl $0xa, %edi
callq 0x1040
leaq 0x278f(%rip), %rdi      # 0x5684
callq 0x1050
movq 0x88(%rsp), %rdi
leaq 0x2531f(%rip), %rax     # 0x28228
movq (%rax), %r14
movq %rdi, 0x18(%rsp)
movl $0x3, %esi
movq %rbp, %rdx
leaq 0x18(%rsp), %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x2ff4
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 0x3b39
testl %eax, %eax
je 0x2fea
movq 0x60(%rsp), %rdi
movq %rdi, 0x20(%rsp)
movl $0x3, %esi
movq %rbx, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x2f94
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x4350
movq %rax, %r14
movq 0x20(%rsp), %rdi
jmp 0x2f67
movq 0x48(%rsp), %rdi
movq %rdi, 0x20(%rsp)
movl $0x3, %esi
leaq 0x78(%rsp), %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x2fea
movq 0x78(%rsp), %rdi
movl $0x16, %esi
leaq 0x8(%rsp), %rdx
movq %r15, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x2fe3
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x4350
movq %rax, %r14
movq 0x20(%rsp), %rdi
jmp 0x2f9e
movq 0x18(%rsp), %rdi
jmp 0x2f11
leaq 0x2522d(%rip), %rax     # 0x28228
cmpq (%rax), %r14
je 0x3089
leaq 0x2573(%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 0x3b39
testl %eax, %eax
leaq 0x24d1(%rip), %r14      # 0x550e
je 0x3075
leaq 0x2561(%rip), %rdi      # 0x55a7
xorl %eax, %eax
callq 0x1070
movq 0x18(%rsp), %rdi
callq 0x3c44
movq 0x20(%rsp), %rdi
movl $0x3, %esi
movq %r12, %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x3b39
movq %r14, %rdi
testl %eax, %eax
jne 0x3046
leaq 0x263d(%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 0x3b39
testl %eax, %eax
leaq 0x252b(%rip), %r13      # 0x55f1
je 0x3942
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 0x3b39
testl %eax, %eax
je 0x35bd
testl %r14d, %r14d
jne 0x3131
leaq 0x253b(%rip), %rdi      # 0x564f
xorl %eax, %eax
callq 0x1070
movq 0x70(%rsp), %rdi
callq 0x3c44
leaq 0x258d(%rip), %rdi      # 0x56b9
callq 0x1050
movq 0x70(%rsp), %rdi
callq 0x3c44
leaq 0x254f(%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 0x3b39
testl %eax, %eax
je 0x331b
movq 0xb0(%rsp), %rdi
movl $0x16, %esi
leaq 0x70(%rsp), %rdx
leaq 0xc8(%rsp), %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x324f
leaq 0x2452(%rip), %rdi      # 0x55f5
xorl %eax, %eax
callq 0x1070
movq 0x70(%rsp), %rdi
callq 0x3c44
leaq 0x237a(%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 0x3b39
testl %eax, %eax
je 0x31f8
leaq 0x2399(%rip), %rdi      # 0x5588
xorl %eax, %eax
callq 0x1070
jmp 0x3211
movq %r14, %rdi
movl $0x1d, %esi
movq %r12, %rdx
movq %rbp, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x3259
movq 0x8(%rsp), %rdi
callq 0x3c44
movl $0x28, %edi
callq 0x1040
movq 0x30(%rsp), %rdi
callq 0x3d8b
movl $0x29, %edi
callq 0x1040
leaq 0x50(%rsp), %r15
leaq 0x20(%rsp), %r12
leaq 0x246f(%rip), %rdi      # 0x56b9
callq 0x1050
movq 0x40(%rsp), %rdi
jmp 0x3154
movq %r14, %rdi
xorl %esi, %esi
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
leaq 0x50(%rsp), %r15
leaq 0x20(%rsp), %r12
je 0x32a6
leaq 0x22bf(%rip), %rdi      # 0x5539
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3fc8
leaq 0x23ed(%rip), %rdi      # 0x567d
movq %rax, %rsi
xorl %eax, %eax
callq 0x1070
movl $0x29, %edi
callq 0x1040
jmp 0x3243
movq %r14, %rdi
movl $0x1, %esi
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x32ec
leaq 0x228d(%rip), %rdi      # 0x554d
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f8c
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
leaq 0x22ae(%rip), %rdi      # 0x558e
xorl %eax, %eax
callq 0x1070
jmp 0x3243
movq %r14, %rdi
movl $0x4, %esi
leaq 0x18(%rsp), %rdx
xorl %eax, %eax
callq 0x3b39
movq %r14, %rdi
testl %eax, %eax
je 0x3311
callq 0x3c44
jmp 0x3243
callq 0x120b
jmp 0x3243
movq 0xd0(%rsp), %r14
movq %r14, %rdi
movl $0x17, %esi
leaq 0x8(%rsp), %rdx
movq %rbp, %rcx
movq %rbx, %r8
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x33d7
movq 0x30(%rsp), %rdi
leaq 0x24eb7(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3fe4
movq %rax, %r14
movq 0x8(%rsp), %rdi
movl $0x2, %esi
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x34c9
leaq 0x2246(%rip), %rdi      # 0x55c2
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f8c
movq %rax, %rdi
callq 0x43ee
testl %eax, %eax
je 0x33a5
leaq 0x21ea(%rip), %rdi      # 0x5588
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f8c
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
movl $0x28, %edi
callq 0x1040
movq 0x40(%rsp), %rdi
callq 0x3d8b
leaq 0x22e6(%rip), %rdi      # 0x56b8
jmp 0x35b2
movq %r14, %rdi
movl $0x18, %esi
movq %rbp, %rdx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x357d
movq 0x30(%rsp), %rdi
leaq 0x24e08(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3fe4
movq %rax, %rdi
movq 0x80(%rsp), %rsi
callq 0x3dfd
movq %rax, 0x48(%rsp)
movq %rax, %rdi
movl $0x3, %esi
leaq 0x60(%rsp), %rdx
leaq 0x48(%rsp), %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
leaq 0x18(%rsp), %r14
je 0x34bd
movq 0x40(%rsp), %rdi
movl $0x3, %esi
movq %r14, %rdx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
jne 0x3466
leaq 0x216d(%rip), %rdi      # 0x55ce
callq 0x44a0
movq %r13, %rdi
xorl %eax, %eax
callq 0x1070
movq 0x60(%rsp), %rdi
callq 0x3c44
leaq 0x20b4(%rip), %rdi      # 0x5535
xorl %eax, %eax
callq 0x1070
movq 0x18(%rsp), %rdi
callq 0x3c44
leaq 0x2220(%rip), %rdi      # 0x56b9
callq 0x1050
movq 0x48(%rsp), %rdi
movl $0x3, %esi
leaq 0x60(%rsp), %rdx
leaq 0x48(%rsp), %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
jne 0x343f
leaq 0x218b(%rip), %rdi      # 0x564f
jmp 0x359a
movq 0x8(%rsp), %rdi
movl $0x4, %esi
leaq 0x18(%rsp), %rdx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x35b7
movq 0x18(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x3dfd
movq %rax, %r13
leaq 0x20f2(%rip), %rdi      # 0x55f5
xorl %eax, %eax
callq 0x1070
movq %r13, %rdi
leaq 0x20dd(%rip), %r13      # 0x55f1
callq 0x3d8b
leaq 0x2015(%rip), %rdi      # 0x5535
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x3f8c
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
movl $0x28, %edi
callq 0x1040
movq 0x40(%rsp), %rdi
callq 0x3d8b
leaq 0x2164(%rip), %rdi      # 0x56b8
callq 0x1050
leaq 0x20ef(%rip), %rdi      # 0x564f
xorl %eax, %eax
callq 0x1070
movq 0x18(%rsp), %rdi
callq 0x3f8c
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
jmp 0x35ab
movq %r14, %rdi
movl $0x19, %esi
movq %rbp, %rdx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x35ee
leaq 0x2028(%rip), %rdi      # 0x55c2
xorl %eax, %eax
callq 0x1070
movq 0x30(%rsp), %rdi
callq 0x3c44
leaq 0x2107(%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 0x3b39
testl %eax, %eax
jne 0x30cf
jmp 0x3942
movq %r14, %rdi
movl $0x1a, %esi
movq %rbp, %rdx
leaq 0x18(%rsp), %rcx
leaq 0x60(%rsp), %r8
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x35b7
leaq 0x1fe5(%rip), %rdi      # 0x55fa
xorl %eax, %eax
callq 0x1070
movq 0x30(%rsp), %rdi
callq 0x3c44
leaq 0x2054(%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 0x3b39
testl %eax, %eax
je 0x3849
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 0x3b39
testl %eax, %eax
je 0x37cc
movl %r12d, 0xa4(%rsp)
leaq 0x1f7d(%rip), %rdi      # 0x5615
xorl %eax, %eax
callq 0x1070
movq 0x78(%rsp), %rdi
callq 0x3c44
leaq 0x1fe1(%rip), %rdi      # 0x5691
callq 0x1050
movq 0x98(%rsp), %rdi
leaq 0x24b44(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3fe4
movq %rax, %rdi
movq 0x80(%rsp), %rsi
callq 0x3dfd
movq %rax, 0xc0(%rsp)
movq %rax, %rdi
movl $0x3, %esi
movq %r15, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
leaq 0x1fb6(%rip), %rbp      # 0x56b8
movq %r14, %r12
leaq 0x1f19(%rip), %rbx      # 0x5625
je 0x3789
xorl %r14d, %r14d
leaq 0x1ed9(%rip), %rdi      # 0x55f1
xorl %eax, %eax
callq 0x1070
movq 0x50(%rsp), %rdi
callq 0x3c44
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1070
movq 0x30(%rsp), %rdi
callq 0x3c44
leaq 0x1dca(%rip), %rdi      # 0x550e
xorl %eax, %eax
callq 0x1070
leal 0x1(%r14), %r13d
leaq 0x1ede(%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 0x3b39
movl %r13d, %r14d
testl %eax, %eax
jne 0x3711
leaq 0x1ebb(%rip), %rdi      # 0x564b
xorl %eax, %eax
callq 0x1070
movq 0x98(%rsp), %rdi
callq 0x3c44
leaq 0x1f0e(%rip), %rdi      # 0x56b9
callq 0x1050
leaq 0x30(%rsp), %rbp
movq %r12, %r14
leaq 0x40(%rsp), %rbx
leaq 0x1e2d(%rip), %r13      # 0x55f1
movl 0xa4(%rsp), %r12d
movq 0x48(%rsp), %rdi
movl $0x1c, %esi
movq %rbp, %rdx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x3817
leaq 0x1e9b(%rip), %rdi      # 0x5686
callq 0x1050
leaq 0x1e54(%rip), %rdi      # 0x564b
xorl %eax, %eax
callq 0x1070
movq 0x30(%rsp), %rdi
callq 0x3c44
leaq 0x1eaa(%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 0x3b39
testl %eax, %eax
leaq 0x50(%rsp), %r15
jne 0x3663
testl %r12d, %r12d
leaq 0x20(%rsp), %r12
jne 0x3861
leaq 0x1e36(%rip), %rdi      # 0x5686
callq 0x1050
leaq 0x1e37(%rip), %rdi      # 0x5693
callq 0x1050
leaq 0x1e53(%rip), %rdi      # 0x56bb
jmp 0x35b2
movq 0x10(%rsp), %rdi
movl $0x14, %esi
movq %r14, %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x3953
movl $0xa, %edi
callq 0x1040
movq 0x28(%rsp), %rdi
leaq 0x24966(%rip), %rax     # 0x28208
movq (%rax), %rsi
callq 0x3fe4
movq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x3c67
movl $0xa, %edi
callq 0x1040
leaq 0x1dbc(%rip), %rdi      # 0x5684
callq 0x1050
movq 0x38(%rsp), %rdi
callq 0x3d4c
movl %eax, %r14d
movq 0x38(%rsp), %rdi
callq 0x3d4c
movslq 0x4885(%rip), %rcx      # 0x8170
leal 0x1(%rcx), %edx
movl %edx, 0x487c(%rip)      # 0x8170
leaq 0x148e5(%rip), %rdx     # 0x181e0
movb %al, (%rcx,%rdx)
leaq 0x1be3(%rip), %rdi      # 0x54e8
movl %r14d, %esi
xorl %eax, %eax
callq 0x1070
movq 0x28(%rsp), %rdi
callq 0x3c44
testl %r14d, %r14d
jle 0x3936
leaq 0x1be9(%rip), %rdi      # 0x550e
xorl %eax, %eax
callq 0x1070
movq 0x38(%rsp), %rdi
callq 0x3d8b
leaq 0x1d7b(%rip), %rdi      # 0x56b8
callq 0x1050
leaq 0x28(%rsp), %r14
leaq 0x1d71(%rip), %rdi      # 0x56bf
callq 0x1050
movq 0xa8(%rsp), %rdi
movl $0x3, %esi
leaq 0x10(%rsp), %rdx
leaq 0xa8(%rsp), %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
leaq 0x38(%rsp), %r13
jne 0x2e91
movl $0xa, %edi
callq 0x1040
leaq 0x1d50(%rip), %rdi      # 0x56e2
callq 0x1050
leaq 0x1ce6(%rip), %rdi      # 0x5684
callq 0x1050
cmpl $0x20, 0x47c6(%rip)     # 0x8170
jl 0x39df
movl $0x1f, %ebx
leaq 0x14828(%rip), %r15     # 0x181e0
leaq 0x1b52(%rip), %r14      # 0x5511
movzbl (%rbx,%r15), %edx
movq %r14, %rdi
movl %ebx, %esi
xorl %eax, %eax
callq 0x1070
incq %rbx
movslq 0x4796(%rip), %rax      # 0x8170
cmpq %rax, %rbx
jl 0x39bf
leaq 0x8(%rsp), %rcx
movq 0x68(%rsp), %rdi
movq %rdi, (%rcx)
leaq 0x10(%rsp), %rdx
movl $0x3, %esi
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x3b1b
leaq 0x28(%rsp), %rbx
leaq 0x58(%rsp), %r14
leaq 0x10(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x1b15(%rip), %rbp      # 0x5535
leaq 0x1c91(%rip), %r13      # 0x56b8
movq 0x10(%rsp), %rdi
movl $0x12, %esi
movq %rbx, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x3afc
leaq 0x1ba8(%rip), %rdi      # 0x55f5
xorl %eax, %eax
callq 0x1070
movq 0x28(%rsp), %rdi
callq 0x3c44
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1070
movq 0x58(%rsp), %rdi
xorl %esi, %esi
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x3aa5
leaq 0x1ab8(%rip), %rdi      # 0x5539
xorl %eax, %eax
callq 0x1070
movq 0x58(%rsp), %rdi
callq 0x3fc8
leaq 0x1be4(%rip), %rdi      # 0x567d
movq %rax, %rsi
xorl %eax, %eax
callq 0x1070
jmp 0x3af4
movq 0x58(%rsp), %rdi
movl $0x1, %esi
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
je 0x3ae8
leaq 0x1a8c(%rip), %rdi      # 0x554d
xorl %eax, %eax
callq 0x1070
movq 0x58(%rsp), %rdi
callq 0x3f8c
movq %rax, %rdi
xorl %eax, %eax
callq 0x1070
movl $0x22, %edi
callq 0x1040
jmp 0x3af4
leaq 0x1a73(%rip), %rdi      # 0x5562
callq 0x44a0
movq %r13, %rdi
callq 0x1050
movq 0x8(%rsp), %rdi
movl $0x3, %esi
movq %r15, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x3b39
testl %eax, %eax
jne 0x3a27
leaq 0x1b9d(%rip), %rdi      # 0x56bf
callq 0x1050
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq