// File: /workspace/github_c_makefile_star2_O3/zyearn[P]SmallC/codegen.cpp
// Function: genStmt(treeNode*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int)
void genStmt(treeNode* node, int type, string scope, int labelN)
{
    switch(type)
    {
        case 1:
        genExp(node->child[0],node->child[0]->type, scope);
        break;
        case 2:
        genStmtblock(node->child[0],node->child[0]->type, scope, labelN);
        break;
        case 3: 
        {
            genExp(node->child[1],node->child[1]->type, scope);
            /*
            if(scope == "main")
            {
                cout << "li $v0, 1" << endl;
                cout << "move $a0, $t0" << endl;
                cout << "syscall" << endl;
                cout << "li $v0, 4" << endl;
                cout << "la $a0, newline" << endl;
                cout << "syscall" << endl;
            }*/
            cout << "lw $s1 -4($s0)" << endl;
            cout << "jr $s1" << endl;
        }
        break;
        case 4:
        {
            int local = labelNumber;
            labelNumber++;
            genExp(node->child[2], node->child[2]->type, scope);
            cout << "beqz $t0, _labelExit" << local+1 << endl;
            genStmt(node->child[4], node->child[4]->type, scope, labelN);
            cout << "_labelExit" << local+1 << ":"<< endl;
            break;
        }
        case 5:
        {
            int local = labelNumber;
            labelNumber = labelNumber + 2;
            genExp(node->child[2],node->child[2]->type, scope);
            cout << "beqz $t0, _labelElse" << local+1 << endl;
            genStmt(node->child[4], node->child[4]->type, scope, labelN);
            cout << "j _labelExit" << local+2 << endl;
            cout << "_labelElse" << local+1 << ":" << endl;
            genStmt(node->child[6], node->child[6]->type, scope, labelN);
            cout << "_labelExit" << local+2 << ":" << endl;
            break;
        }
        case 6:
        {
            int local = labelNumber;
            labelNumber = labelNumber + 3;
            genExp(node->child[2], node->child[2]->type, scope);
            cout << "_labelFor" << local+1 <<":"<< endl;
            genExp(node->child[4], node->child[4]->type, scope);
            cout << "beqz $t0, _labelExit" << local+3 << endl;
            genStmt(node->child[8], node->child[8]->type, scope, labelNumber);
            cout << "_labelUpdate" << local+2 << ":" << endl;
            genExp(node->child[6], node->child[6]->type, scope);
            cout << "j _labelFor" << local+1 << endl;
            cout << "_labelExit" << local+3 << ":" << endl;
            break;
        }
        case 7:
        {
            if(labelN != 0)
            {
                cout << "j _labelUpdate" << labelN-1 << endl;
            }
            else
                cout << "j _labelUpdate" << labelNumber-1 << endl;
        }
        case 8:
        {
            if(labelN != 0)
                cout << "j _labelExit" << labelN << endl;
            else
                cout << "j _labelExit" << labelNumber << endl;
            break;
        }
        case 9:     //read
        {
            cout << "li $v0, 5" << endl;
            cout << "syscall" << endl;
            if(node->child[2]->type == 35)  //int int[]
            {

            //  genExp(node->child[2], node->child[2]->type, scope);
                node = node->child[2];
                if(node->child[1]->type == 2) //int
                {
                    if((*FT[scope])[node->child[0]->data] != 0)
                        cout << "sw $v0, " << 4 + (*FT[scope])["#"] - (*FT[scope])[node->child[0]->data] << "($s0)" << endl;
                    else if ( (*FT["_G"])[node->child[0]->data] != 0)   
                        cout << "sw $v0, " << (*FT["_G"])["#"] - (*FT["_G"])[node->child[0]->data] << "($s2)" << endl;
                }
                else    //int[]
                {
                    genExp(node->child[1]->child[1], node->child[1]->child[1]->type, scope);
                    cout << "mul $t0, $t0, 4" << endl;
                    if((*FT[scope])[node->child[0]->data] != 0 && (*ISA[scope])[node->child[0]->data]== 1)
                    {
                        cout << "add $t0, $t0, " << 4 + (*FT[scope])["#"] - (*FT[scope])[node->child[0]->data] << endl;
                        cout << "add $t0, $t0, $s0" << endl;
                        cout << "sw $v0, 0($t0)" << endl;
                    }
                    else if ((*FT["_G"])[node->child[0]->data] != 0 && (*ISA["_G"])[node->child[0]->data]== 1)  
                    {
                        cout << "add $t0, $t0, " << (*FT["_G"])["#"] - (*FT["_G"])[node->child[0]->data] << endl;
                        cout << "add $t0, $t0, $s2" << endl;
                        cout << "sw $v0, 0($t0)" << endl;
                    }
                    else
                    {
                        freopen(outputFile.c_str(), "w", stdout);
                        cout << "Error.";
                        fprintf(stderr, "\nCompile fail!\n");
                        fprintf(stderr, "error occurs, %s is not defined\n",  (node->child[0]->data).c_str() );
                        exit(0);
                    }
                }
            }
            else if(node->child[2]->type == 36)
            {
                node = node->child[2];
                string stname = STAC[node->child[0]->child[0]->data];
                
                if(stname != "")
                {
                if((*FT[scope])[node->child[0]->child[0]->data] != 0)
                    cout << "sw $v0, " << 4 + (*FT[scope])["#"] - (*FT[scope])[node->child[0]->child[0]->data]
                            +(*ST[stname])["#"] - (*ST[stname])[node->child[2]->data]
                        << "($s0)" << endl;
                else if ((*FT["_G"])[node->child[0]->child[0]->data] != 0)  
                    cout << "sw $v0, " << (*FT["_G"])["#"] - (*FT["_G"])[node->child[0]->child[0]->data] 
                    +(*ST[stname])["#"] - (*ST[stname])[node->child[2]->data]
                    << "($s2)" << endl;
                }
                else
                {
                    freopen(outputFile.c_str(), "w", stdout);
                    cout << "Error.";
                    fprintf(stderr, "\nCompile fail!\n");
                    fprintf(stderr, "error occurs, %s is not defined\n",  (node->child[0]->child[0]->data).c_str() );
                    exit(0);

                }

            }
            else
            {
                freopen(outputFile.c_str(), "w", stdout);
                cout << "Error.";
                fprintf(stderr, "\nCompile fail!\n");
                fprintf(stderr, "error occurs,can't assign a value to a left value.\n" );
                exit(0);
            }
            break;
        }
        case 10:
        {
            genExp(node->child[2], node->child[2]->type, scope);
            cout << "li $v0, 1" << endl;
            cout << "move $a0, $t0" << endl;
            cout << "syscall" << endl;
            break;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x288, %rsp            # imm = 0x288
decl %esi
cmpl $0x9, %esi
ja 0xfdc2
movl %ecx, %r15d
movq %rdx, %r13
movq %rdi, %rbx
leaq 0x13025(%rip), %rax     # 0x21ba0
movslq (%rax,%rsi,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x28(%rbx), %rax
movq (%rax), %rbx
movl 0x24(%rbx), %r15d
leaq -0x298(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0x2a8(%rbp), %r14
movq %r14, %rdi
callq 0xb00c
movq %rbx, %rdi
movl %r15d, %esi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0x2a8(%rbp), %rdi
cmpq %r12, %rdi
je 0xfdc2
movq -0x298(%rbp), %rsi
jmp 0xfdba
leaq 0x196c0(%rip), %rax     # 0x282a8
movl (%rax), %ecx
movq %rcx, -0x80(%rbp)
addl $0x2, %ecx
movl %ecx, -0x4c(%rbp)
movl %ecx, (%rax)
movq 0x28(%rbx), %rax
movq 0x10(%rax), %r14
movl 0x24(%r14), %r12d
leaq -0x118(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%r13), %rsi
movq %r13, -0x78(%rbp)
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0x128(%rbp), %r13
movq %r13, %rdi
callq 0xb00c
movq %r14, %rdi
movl %r12d, %esi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0xec5d
movq -0x118(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x1936c(%rip), %r14     # 0x27fd0
leaq 0x13106(%rip), %rsi     # 0x21d71
movl $0x14, %edx
movq %r14, %rdi
callq 0x2230
movq -0x80(%rbp), %rsi
incl %esi
movq %r14, %rdi
movq %rsi, -0x80(%rbp)
callq 0x2330
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x28(%rbx), %rax
movq 0x20(%rax), %r14
movl 0x24(%r14), %r12d
leaq -0xf8(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x78(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x108(%rbp), %r13
movq %r13, %rdi
callq 0xb00c
movq %r14, %rdi
movl %r12d, %esi
movq %r13, %rdx
movl %r15d, %ecx
callq 0xeb4c
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0xed1b
movq -0xf8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x192ae(%rip), %r12     # 0x27fd0
leaq 0x1305d(%rip), %rsi     # 0x21d86
movl $0xc, %edx
movq %r12, %rdi
callq 0x2230
movq %r12, %rdi
movl -0x4c(%rbp), %esi
callq 0x2330
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
leaq 0x13009(%rip), %rsi     # 0x21d7b
movl $0xa, %edx
movq %r12, %rdi
callq 0x2230
movq %r12, %rdi
movq -0x80(%rbp), %rsi
callq 0x2330
movq %rax, %r14
leaq 0x12f5c(%rip), %rsi     # 0x21cf1
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x28(%rbx), %rax
movq 0x30(%rax), %rbx
movl 0x24(%rbx), %r14d
leaq -0x218(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x78(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x228(%rbp), %r12
movq %r12, %rdi
callq 0xb00c
movq %rbx, %rdi
movl %r14d, %esi
movq %r12, %rdx
movl %r15d, %ecx
callq 0xeb4c
movq -0x228(%rbp), %rdi
cmpq %r13, %rdi
je 0xee29
movq -0x218(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x191a0(%rip), %rbx     # 0x27fd0
jmp 0xf49c
movq 0x28(%rbx), %rax
movq 0x10(%rax), %rbx
movl 0x24(%rbx), %r14d
leaq -0x178(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0x188(%rbp), %r15
movq %r15, %rdi
callq 0xb00c
movq %rbx, %rdi
movl %r14d, %esi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0x188(%rbp), %rdi
cmpq %r12, %rdi
je 0xee92
movq -0x178(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x19137(%rip), %rbx     # 0x27fd0
leaq 0x12fb5(%rip), %rsi     # 0x21e55
movl $0x9, %edx
movq %rbx, %rdi
callq 0x2230
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
leaq 0x12f84(%rip), %rsi     # 0x21e5f
movl $0xd, %edx
movq %rbx, %rdi
callq 0x2230
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
leaq 0x12ea2(%rip), %rsi     # 0x21db8
movl $0x7, %edx
jmp 0xefcb
movq 0x28(%rbx), %rax
movq 0x8(%rax), %rbx
movl 0x24(%rbx), %r15d
leaq -0x258(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0x268(%rbp), %r14
movq %r14, %rdi
callq 0xb00c
movq %rbx, %rdi
movl %r15d, %esi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0x268(%rbp), %rdi
cmpq %r12, %rdi
je 0xef7d
movq -0x258(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x1904c(%rip), %rbx     # 0x27fd0
leaq 0x12dbb(%rip), %rsi     # 0x21d46
movl $0xe, %edx
movq %rbx, %rdi
callq 0x2230
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
leaq 0x12d8f(%rip), %rsi     # 0x21d55
movl $0x6, %edx
movq %rbx, %rdi
jmp 0xf4cd
leaq 0x192ce(%rip), %rax     # 0x282a8
movl (%rax), %ecx
incl %ecx
movl %ecx, -0x80(%rbp)
movl %ecx, (%rax)
movq 0x28(%rbx), %rax
movq %r13, %rcx
movq 0x10(%rax), %r13
movl 0x24(%r13), %r14d
leaq -0x138(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%rcx), %rsi
movq %rcx, -0x78(%rbp)
movq 0x8(%rcx), %rdx
addq %rsi, %rdx
leaq -0x148(%rbp), %r12
movq %r12, %rdi
callq 0xb00c
movq %r13, %rdi
movl %r14d, %esi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0xf04c
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18f7d(%rip), %r14     # 0x27fd0
leaq 0x12d02(%rip), %rsi     # 0x21d5c
movl $0x14, %edx
movq %r14, %rdi
callq 0x2230
movq %r14, %rdi
movl -0x80(%rbp), %esi
callq 0x2330
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x28(%rbx), %rax
movq 0x20(%rax), %rbx
movl 0x24(%rbx), %r14d
leaq -0x238(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x78(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x248(%rbp), %r12
movq %r12, %rdi
callq 0xb00c
movq %rbx, %rdi
movl %r14d, %esi
movq %r12, %rdx
movl %r15d, %ecx
callq 0xeb4c
movq -0x248(%rbp), %rdi
cmpq %r13, %rdi
je 0xf0fc
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18ecd(%rip), %rbx     # 0x27fd0
leaq 0x12c5c(%rip), %rsi     # 0x21d66
movl $0xa, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
movl -0x80(%rbp), %esi
jmp 0xf4b6
testl %r15d, %r15d
jne 0xf559
jmp 0xf94a
movq 0x28(%rbx), %rax
movq (%rax), %rbx
leaq -0x278(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0x288(%rbp), %r14
movq %r14, %rdi
callq 0xb00c
movq %rbx, %rdi
movq %r14, %rdx
movl %r15d, %ecx
callq 0xdfa5
movq -0x288(%rbp), %rdi
cmpq %r12, %rdi
je 0xfdc2
movq -0x278(%rbp), %rsi
jmp 0xfdba
leaq 0x1911a(%rip), %rcx     # 0x282a8
movl (%rcx), %eax
movq %rax, -0x80(%rbp)
addl $0x3, %eax
movl %eax, -0x4c(%rbp)
movl %eax, (%rcx)
movq 0x28(%rbx), %rax
movq 0x10(%rax), %r14
movl 0x24(%r14), %r12d
movq %r13, %rax
leaq -0x1f8(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rsi
movq %rax, -0x78(%rbp)
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x208(%rbp), %r15
movq %r15, %rdi
callq 0xb00c
movq %r14, %rdi
movl %r12d, %esi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0x208(%rbp), %rdi
cmpq %r13, %rdi
je 0xf1fe
movq -0x1f8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18dcb(%rip), %r14     # 0x27fd0
leaq 0x12b89(%rip), %rsi     # 0x21d95
movl $0x9, %edx
movq %r14, %rdi
callq 0x2230
movq -0x80(%rbp), %rax
leal 0x1(%rax), %esi
movq %r14, %rdi
movl %esi, -0xa4(%rbp)
callq 0x2330
movq %rax, %r14
leaq 0x12ab9(%rip), %rsi     # 0x21cf1
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x28(%rbx), %rax
movq 0x20(%rax), %r14
movl 0x24(%r14), %r15d
leaq -0x1d8(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x78(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x1e8(%rbp), %r12
movq %r12, %rdi
callq 0xb00c
movq %r14, %rdi
movl %r15d, %esi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0x1e8(%rbp), %rdi
cmpq %r13, %rdi
je 0xf2cb
movq -0x1d8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18cfe(%rip), %r14     # 0x27fd0
leaq 0x12a83(%rip), %rsi     # 0x21d5c
movl $0x14, %edx
movq %r14, %rdi
callq 0x2230
movq %r14, %rdi
movl -0x4c(%rbp), %esi
callq 0x2330
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x28(%rbx), %rax
movq 0x40(%rax), %r14
movl 0x24(%r14), %r15d
leaq -0x1b8(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x78(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x1c8(%rbp), %r12
movq %r12, %rdi
callq 0xb00c
leaq 0x18f52(%rip), %rax     # 0x282a8
movl (%rax), %ecx
movq %r14, %rdi
movl %r15d, %esi
movq %r12, %rdx
callq 0xeb4c
movq -0x1c8(%rbp), %rdi
cmpq %r13, %rdi
je 0xf381
movq -0x1b8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18c48(%rip), %r14     # 0x27fd0
leaq 0x12a12(%rip), %rsi     # 0x21da1
movl $0xc, %edx
movq %r14, %rdi
callq 0x2230
movq -0x80(%rbp), %rsi
addl $0x2, %esi
movq %r14, %rdi
callq 0x2330
movq %rax, %r14
leaq 0x1293c(%rip), %rsi     # 0x21cf1
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x28(%rbx), %rax
movq 0x30(%rax), %rbx
movl 0x24(%rbx), %r14d
leaq -0x198(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x78(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x1a8(%rbp), %r15
movq %r15, %rdi
callq 0xb00c
movq %rbx, %rdi
movl %r14d, %esi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0x1a8(%rbp), %rdi
cmpq %r12, %rdi
je 0xf449
movq -0x198(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18b80(%rip), %rbx     # 0x27fd0
leaq 0x1293c(%rip), %rsi     # 0x21d93
movl $0xb, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
movl -0xa4(%rbp), %esi
callq 0x2330
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
leaq 0x128c3(%rip), %rsi     # 0x21d66
movl $0xa, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
movl -0x4c(%rbp), %esi
callq 0x2330
movq %rax, %rbx
leaq 0x1282c(%rip), %rsi     # 0x21cf1
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
jmp 0xfdc2
movq 0x18acb(%rip), %rdi     # 0x27fd0
leaq 0x12893(%rip), %rsi     # 0x21d9f
movl $0xe, %edx
callq 0x2230
testl %r15d, %r15d
je 0xf909
leal -0x1(%r15), %esi
movq 0x18aa6(%rip), %rdi     # 0x27fd0
callq 0x2330
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x18a70(%rip), %rbx     # 0x27fd0
leaq 0x1281f(%rip), %rsi     # 0x21d86
movl $0xc, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
movl %r15d, %esi
jmp 0xf971
movq 0x18a4a(%rip), %r15     # 0x27fd0
leaq 0x12821(%rip), %rsi     # 0x21dae
movl $0x9, %edx
movq %r15, %rdi
callq 0x2230
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
leaq 0x127f0(%rip), %rsi     # 0x21db8
movl $0x7, %edx
movq %r15, %rdi
callq 0x2230
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x28(%rbx), %rax
movq 0x10(%rax), %rbx
movl 0x24(%rbx), %eax
cmpl $0x24, %eax
je 0xf711
cmpl $0x23, %eax
jne 0x10170
movq 0x28(%rbx), %rax
addq $0x28, %rbx
movq 0x8(%rax), %rax
cmpl $0x2, 0x24(%rax)
jne 0xf9b1
leaq 0x18c7a(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
cmpl $0x0, (%rax)
je 0xfe7c
movq 0x18974(%rip), %rdi     # 0x27fd0
leaq 0x1275d(%rip), %rsi     # 0x21dc0
movl $0x8, %edx
callq 0x2230
leaq 0x18c3c(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e4be
movq (%rax), %r15
leaq -0x38(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1262a(%rip), %rsi     # 0x21cb8
leaq 0x12624(%rip), %rdx     # 0x21cb9
leaq -0x48(%rbp), %rdi
callq 0xb0aa
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x1e3be
movl (%rax), %r15d
leaq 0x18bfc(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
addl $0x4, %r15d
subl (%rax), %r15d
movq 0x188f8(%rip), %rdi     # 0x27fd0
movl %r15d, %esi
callq 0x2330
movq %rax, %rbx
leaq 0x12b37(%rip), %rsi     # 0x22221
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
jne 0xfdb6
jmp 0xfdc2
movq 0x28(%rbx), %rax
addq $0x28, %rbx
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x18c16(%rip), %rdi     # 0x28340
callq 0x1e602
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0xb00c
leaq 0x12522(%rip), %rsi     # 0x21c76
movq %r14, %rdi
callq 0x20e0
testl %eax, %eax
je 0x10175
leaq 0x18b45(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
callq 0x1e43e
cmpl $0x0, (%rax)
je 0xfb5e
movq 0x18838(%rip), %rdi     # 0x27fd0
leaq 0x12621(%rip), %rsi     # 0x21dc0
movl $0x8, %edx
callq 0x2230
leaq 0x18b00(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e4be
movq (%rax), %r15
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x124ee(%rip), %rsi     # 0x21cb8
leaq 0x124e8(%rip), %rdx     # 0x21cb9
leaq -0x70(%rbp), %rdi
callq 0xb0aa
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
callq 0x1e3be
movl (%rax), %r15d
leaq 0x18ac0(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
callq 0x1e43e
movl (%rax), %r13d
leaq 0x18ac9(%rip), %rdi     # 0x282e0
leaq -0x48(%rbp), %rsi
callq 0x1e4be
movq (%rax), %r14
leaq -0x90(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x12482(%rip), %rsi     # 0x21cb8
leaq 0x1247c(%rip), %rdx     # 0x21cb9
leaq -0xa0(%rbp), %rdi
callq 0xb0aa
leaq -0xa0(%rbp), %rsi
movq %r14, %rdi
callq 0x1e3be
movl (%rax), %r14d
leaq 0x18a7e(%rip), %rdi     # 0x282e0
leaq -0x48(%rbp), %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq 0x10(%rax), %rsi
callq 0x1e43e
addl %r14d, %r15d
addl (%rax), %r13d
subl %r13d, %r15d
addl $0x4, %r15d
movq 0x18742(%rip), %rdi     # 0x27fd0
movl %r15d, %esi
callq 0x2330
movq %rax, %rbx
leaq 0x12981(%rip), %rsi     # 0x22221
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq -0xa0(%rbp), %rdi
cmpq %r12, %rdi
je 0xf8ef
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
leaq -0x38(%rbp), %r15
jne 0xfda1
jmp 0xfdad
leaq 0x18998(%rip), %rax     # 0x282a8
movl (%rax), %esi
decl %esi
movq 0x186b5(%rip), %rdi     # 0x27fd0
callq 0x2330
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
movq 0x1867f(%rip), %rbx     # 0x27fd0
leaq 0x1242e(%rip), %rsi     # 0x21d86
movl $0xc, %edx
movq %rbx, %rdi
callq 0x2230
leaq 0x1893c(%rip), %rax     # 0x282a8
movl (%rax), %esi
movq %rbx, %rdi
callq 0x2330
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2150
movq 0x28(%rax), %rax
movq 0x8(%rax), %r14
movl 0x24(%r14), %r12d
leaq -0xd8(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%r13), %rsi
movq %r13, -0x78(%rbp)
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0xe8(%rbp), %r13
movq %r13, %rdi
callq 0xb00c
movq %r14, %rdi
movl %r12d, %esi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x10531
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0xfa18
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq 0x123b0(%rip), %rsi     # 0x21dcf
movl $0xf, %edx
movq %r15, %rdi
callq 0x2230
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2150
leaq 0x18856(%rip), %rdi     # 0x282b0
movq -0x78(%rbp), %r12
movq %r12, %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
cmpl $0x0, (%rax)
je 0xfdd4
leaq 0x1888c(%rip), %rdi     # 0x28310
movq %r12, %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
cmpl $0x1, (%rax)
jne 0xfdd4
movq 0x18526(%rip), %rdi     # 0x27fd0
leaq 0x1232e(%rip), %rsi     # 0x21ddf
movl $0xe, %edx
callq 0x2230
leaq 0x187ee(%rip), %rdi     # 0x282b0
movq %r12, %rsi
callq 0x1e4be
movq (%rax), %r15
leaq -0x38(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x121dc(%rip), %rsi     # 0x21cb8
leaq 0x121d6(%rip), %rdx     # 0x21cb9
leaq -0x48(%rbp), %rdi
callq 0xb0aa
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x1e3be
movl (%rax), %r15d
leaq 0x187ae(%rip), %rdi     # 0x282b0
movq %r12, %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
addl $0x4, %r15d
subl (%rax), %r15d
movq 0x184aa(%rip), %rdi     # 0x27fd0
movl %r15d, %esi
callq 0x2330
movq %rax, %rdi
callq 0x2130
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
je 0xfb4b
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x1847e(%rip), %rbx     # 0x27fd0
leaq 0x12295(%rip), %rsi     # 0x21dee
jmp 0x1013a
leaq -0x60(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x11d1e(%rip), %rsi     # 0x2188c
leaq 0x11d19(%rip), %rdx     # 0x2188e
leaq -0x70(%rbp), %rdi
callq 0xb0aa
leaq 0x1872b(%rip), %rdi     # 0x282b0
leaq -0x70(%rbp), %rsi
callq 0xae5e
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
callq 0x1e43e
movl (%rax), %r14d
movq -0x70(%rbp), %rdi
cmpq %r12, %rdi
je 0xfbbb
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
je 0xfdad
movq 0x18405(%rip), %rdi     # 0x27fd0
leaq 0x121ee(%rip), %rsi     # 0x21dc0
movl $0x8, %edx
callq 0x2230
leaq -0x70(%rbp), %rdi
movq %r12, (%rdi)
leaq 0x11ca2(%rip), %rsi     # 0x2188c
leaq 0x11c9d(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x186b3(%rip), %rdi     # 0x282b0
leaq -0x70(%rbp), %rsi
callq 0xae5e
movq (%rax), %r14
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x1209d(%rip), %rsi     # 0x21cb8
leaq 0x12097(%rip), %rdx     # 0x21cb9
leaq -0xa0(%rbp), %rdi
callq 0xb0aa
leaq -0xa0(%rbp), %rsi
movq %r14, %rdi
callq 0x1e3be
movl (%rax), %r14d
leaq -0xb8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x11c3a(%rip), %rsi     # 0x2188c
leaq 0x11c35(%rip), %rdx     # 0x2188e
leaq -0xc8(%rbp), %rdi
callq 0xb0aa
leaq 0x18644(%rip), %rdi     # 0x282b0
leaq -0xc8(%rbp), %rsi
callq 0xae5e
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
callq 0x1e43e
movl (%rax), %r13d
leaq 0x18649(%rip), %rdi     # 0x282e0
leaq -0x48(%rbp), %rsi
callq 0x1e4be
movq (%rax), %r15
leaq -0x158(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x12002(%rip), %rsi     # 0x21cb8
leaq 0x11ffc(%rip), %rdx     # 0x21cb9
leaq -0x168(%rbp), %rdi
callq 0xb0aa
leaq -0x168(%rbp), %rsi
movq %r15, %rdi
callq 0x1e3be
movl (%rax), %r15d
leaq 0x185fe(%rip), %rdi     # 0x282e0
leaq -0x48(%rbp), %rsi
callq 0x1e4be
movq (%rax), %rdi
movq (%rbx), %rax
movq 0x10(%rax), %rsi
callq 0x1e43e
addl %r15d, %r14d
addl (%rax), %r13d
subl %r13d, %r14d
movq 0x182c6(%rip), %rdi     # 0x27fd0
movl %r14d, %esi
callq 0x2330
movq %rax, %rbx
leaq 0x120ad(%rip), %rsi     # 0x21dc9
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
movq -0x168(%rbp), %rdi
cmpq %r12, %rdi
je 0xfd4c
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
leaq -0x38(%rbp), %r15
leaq -0x60(%rbp), %rbx
je 0xfd76
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0xfd98
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x70(%rbp), %rdi
cmpq %rbx, %rdi
je 0xfdad
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0xfdc2
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x11aa9(%rip), %rsi     # 0x2188c
leaq 0x11aa4(%rip), %rdx     # 0x2188e
leaq -0x48(%rbp), %rdi
callq 0xb0aa
leaq 0x184b6(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xae5e
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
cmpl $0x0, (%rax)
je 0xfff2
leaq -0x60(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x11a63(%rip), %rsi     # 0x2188c
leaq 0x11a5e(%rip), %rdx     # 0x2188e
leaq -0x70(%rbp), %rdi
callq 0xb0aa
leaq 0x184d0(%rip), %rdi     # 0x28310
leaq -0x70(%rbp), %rsi
callq 0xae5e
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
cmpl $0x1, (%rax)
sete %r12b
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0xfff5
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x21e0
jmp 0xfff5
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x11a01(%rip), %rsi     # 0x2188c
leaq 0x119fc(%rip), %rdx     # 0x2188e
leaq -0x48(%rbp), %rdi
callq 0xb0aa
leaq 0x1840e(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xae5e
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
movl (%rax), %r14d
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0xfed1
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
je 0xfdc2
movq 0x180ef(%rip), %rdi     # 0x27fd0
leaq 0x11ed8(%rip), %rsi     # 0x21dc0
movl $0x8, %edx
callq 0x2230
leaq -0x48(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x1198c(%rip), %rsi     # 0x2188c
leaq 0x11987(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1839d(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xae5e
movq (%rax), %r14
leaq -0x60(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x11d89(%rip), %rsi     # 0x21cb8
leaq 0x11d83(%rip), %rdx     # 0x21cb9
leaq -0x70(%rbp), %rdi
callq 0xb0aa
leaq -0x70(%rbp), %rsi
movq %r14, %rdi
callq 0x1e3be
movl (%rax), %r14d
leaq -0x90(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x1192c(%rip), %rsi     # 0x2188c
leaq 0x11927(%rip), %rdx     # 0x2188e
leaq -0xa0(%rbp), %rdi
callq 0xb0aa
leaq 0x18336(%rip), %rdi     # 0x282b0
leaq -0xa0(%rbp), %rsi
callq 0xae5e
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
subl (%rax), %r14d
movq 0x18032(%rip), %rdi     # 0x27fd0
movl %r14d, %esi
callq 0x2330
movq %rax, %rbx
leaq 0x11e19(%rip), %rsi     # 0x21dc9
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
movq -0xa0(%rbp), %rdi
cmpq %r13, %rdi
je 0xffe0
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x70(%rbp), %rdi
cmpq %r12, %rdi
jne 0xfda1
jmp 0xfdad
xorl %r12d, %r12d
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x1000a
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
testb %r12b, %r12b
je 0x101b0
movq 0x17fb6(%rip), %rdi     # 0x27fd0
leaq 0x11dbe(%rip), %rsi     # 0x21ddf
movl $0xe, %edx
callq 0x2230
leaq -0x48(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x11853(%rip), %rsi     # 0x2188c
leaq 0x1184e(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x18264(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xae5e
movq (%rax), %r14
leaq -0x60(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x11c50(%rip), %rsi     # 0x21cb8
leaq 0x11c4a(%rip), %rdx     # 0x21cb9
leaq -0x70(%rbp), %rdi
callq 0xb0aa
leaq -0x70(%rbp), %rsi
movq %r14, %rdi
callq 0x1e3be
movl (%rax), %r14d
leaq -0x90(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x117f3(%rip), %rsi     # 0x2188c
leaq 0x117ee(%rip), %rdx     # 0x2188e
leaq -0xa0(%rbp), %rdi
callq 0xb0aa
leaq 0x181fd(%rip), %rdi     # 0x282b0
leaq -0xa0(%rbp), %rsi
callq 0xae5e
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e43e
subl (%rax), %r14d
movq 0x17ef9(%rip), %rdi     # 0x27fd0
movl %r14d, %esi
callq 0x2330
movq %rax, %rdi
callq 0x2130
movq -0xa0(%rbp), %rdi
cmpq %r13, %rdi
je 0x10102
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x70(%rbp), %rdi
cmpq %r12, %rdi
je 0x10117
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x1012c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x17e9d(%rip), %rbx     # 0x27fd0
leaq 0x11cd5(%rip), %rsi     # 0x21e0f
movl $0x11, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
leaq 0x11caa(%rip), %rsi     # 0x21e00
movl $0xe, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
jmp 0xfdc2
callq 0x28f2
leaq 0x1810c(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x17e22(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x11959(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x17e34(%rip), %rdi     # 0x27fd0
leaq 0x11abd(%rip), %rsi     # 0x21c60
callq 0x21b0
movq %rbx, %rdi
callq 0x282a
movq %rbx, %rdi
callq 0x2878
jmp 0x101f3
jmp 0x101f3
jmp 0x10257
jmp 0x10257
jmp 0x10201
jmp 0x10201
jmp 0x10201
jmp 0x10257
jmp 0x1025c
jmp 0x101d8
movq %rax, %rbx
jmp 0x10300
jmp 0x104cf
jmp 0x104cf
jmp 0x104d4
jmp 0x10201
jmp 0x101f3
movq %rax, %rbx
jmp 0x10299
jmp 0x10257
jmp 0x10257
jmp 0x10201
movq %rax, %rbx
jmp 0x10529
jmp 0x104d4
jmp 0x10257
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
jne 0x102a2
jmp 0x102ae
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x10529
movq -0xd8(%rbp), %rsi
jmp 0x10521
jmp 0x1027b
jmp 0x104cf
jmp 0x104d4
movq %rax, %rbx
jmp 0x102ae
movq %rax, %rbx
jmp 0x102de
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r12, %rdi
jne 0x10504
jmp 0x10510
jmp 0x1031c
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r13, %rdi
je 0x10299
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x70(%rbp), %rdi
cmpq %r12, %rdi
je 0x102ae
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
jne 0x1051d
jmp 0x10529
movq %rax, %rbx
movq -0x168(%rbp), %rdi
cmpq %r12, %rdi
je 0x102de
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x10300
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
jne 0x104e8
jmp 0x104f7
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
jne 0x1051d
jmp 0x10529
movq %rax, %rbx
movq -0x1a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x10529
movq -0x198(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x1c8(%rbp), %rdi
cmpq %r13, %rdi
je 0x10529
movq -0x1b8(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x228(%rbp), %rdi
cmpq %r13, %rdi
je 0x10529
movq -0x218(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x1e8(%rbp), %rdi
cmpq %r13, %rdi
je 0x10529
movq -0x1d8(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x248(%rbp), %rdi
cmpq %r13, %rdi
je 0x10529
movq -0x238(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x10529
movq -0xf8(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x208(%rbp), %rdi
cmpq %r13, %rdi
je 0x10529
movq -0x1f8(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x288(%rbp), %rdi
cmpq %r12, %rdi
je 0x10529
movq -0x278(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x10529
movq -0x138(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x2a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x10529
movq -0x298(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x268(%rbp), %rdi
cmpq %r12, %rdi
je 0x10529
movq -0x258(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x188(%rbp), %rdi
cmpq %r12, %rdi
je 0x10529
movq -0x178(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x10529
movq -0x118(%rbp), %rsi
jmp 0x10521
movq %rax, %rbx
jmp 0x104f7
movq %rax, %rbx
jmp 0x10510
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r12, %rdi
je 0x104f7
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x10510
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x10529
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq %rbx, %rdi
callq 0x2360