// File: /workspace/github_c_makefile_star2_O1/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 0xff3e
movl %ecx, %r15d
movq %rdx, %r13
movq %rdi, %rbx
leaq 0x12e52(%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 0xb1ca
movq %rbx, %rdi
movl %r15d, %esi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0x2a8(%rbp), %rdi
cmpq %r12, %rdi
je 0xff3e
movq -0x298(%rbp), %rsi
jmp 0xff36
leaq 0x194ed(%rip), %rax     # 0x282a8
movl (%rax), %ecx
movq %rcx, -0x60(%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, -0x58(%rbp)
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0x128(%rbp), %r13
movq %r13, %rdi
callq 0xb1ca
movq %r14, %rdi
movl %r12d, %esi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0xee30
movq -0x118(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x19199(%rip), %r14     # 0x27fd0
leaq 0x12f33(%rip), %rsi     # 0x21d71
movl $0x14, %edx
movq %r14, %rdi
callq 0x2230
movq -0x60(%rbp), %rsi
incl %esi
movq %r14, %rdi
movq %rsi, -0x60(%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 -0x58(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x108(%rbp), %r13
movq %r13, %rdi
callq 0xb1ca
movq %r14, %rdi
movl %r12d, %esi
movq %r13, %rdx
movl %r15d, %ecx
callq 0xed1f
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0xeeee
movq -0xf8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x190db(%rip), %r12     # 0x27fd0
leaq 0x12e8a(%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 0x12e36(%rip), %rsi     # 0x21d7b
movl $0xa, %edx
movq %r12, %rdi
callq 0x2230
movq %r12, %rdi
movq -0x60(%rbp), %rsi
callq 0x2330
movq %rax, %r14
leaq 0x12d89(%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 -0x58(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x228(%rbp), %r12
movq %r12, %rdi
callq 0xb1ca
movq %rbx, %rdi
movl %r14d, %esi
movq %r12, %rdx
movl %r15d, %ecx
callq 0xed1f
movq -0x228(%rbp), %rdi
cmpq %r13, %rdi
je 0xeffc
movq -0x218(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18fcd(%rip), %rbx     # 0x27fd0
jmp 0xf6f1
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 0xb1ca
movq %rbx, %rdi
movl %r14d, %esi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0x188(%rbp), %rdi
cmpq %r12, %rdi
je 0xf065
movq -0x178(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18f64(%rip), %rbx     # 0x27fd0
leaq 0x12de2(%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 0x12db1(%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 0x12ccf(%rip), %rsi     # 0x21db8
movl $0x7, %edx
jmp 0xf19e
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 0xb1ca
movq %rbx, %rdi
movl %r15d, %esi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0x268(%rbp), %rdi
cmpq %r12, %rdi
je 0xf150
movq -0x258(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18e79(%rip), %rbx     # 0x27fd0
leaq 0x12be8(%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 0x12bbc(%rip), %rsi     # 0x21d55
movl $0x6, %edx
movq %rbx, %rdi
jmp 0xf722
leaq 0x190fb(%rip), %rax     # 0x282a8
movl (%rax), %ecx
incl %ecx
movl %ecx, -0x60(%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, -0x58(%rbp)
movq 0x8(%rcx), %rdx
addq %rsi, %rdx
leaq -0x148(%rbp), %r12
movq %r12, %rdi
callq 0xb1ca
movq %r13, %rdi
movl %r14d, %esi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0xf21f
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18daa(%rip), %r14     # 0x27fd0
leaq 0x12b2f(%rip), %rsi     # 0x21d5c
movl $0x14, %edx
movq %r14, %rdi
callq 0x2230
movq %r14, %rdi
movl -0x60(%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 -0x58(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x248(%rbp), %r12
movq %r12, %rdi
callq 0xb1ca
movq %rbx, %rdi
movl %r14d, %esi
movq %r12, %rdx
movl %r15d, %ecx
callq 0xed1f
movq -0x248(%rbp), %rdi
cmpq %r13, %rdi
je 0xf2cf
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18cfa(%rip), %rbx     # 0x27fd0
leaq 0x12a89(%rip), %rsi     # 0x21d66
movl $0xa, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
movl -0x60(%rbp), %esi
jmp 0xf70b
movq 0x18cd4(%rip), %rbx     # 0x27fd0
leaq 0x12a9c(%rip), %rsi     # 0x21d9f
movl $0xe, %edx
movq %rbx, %rdi
callq 0x2230
movl %r15d, %esi
testl %r15d, %r15d
jne 0xf321
leaq 0x18f89(%rip), %rax     # 0x282a8
movl (%rax), %esi
decl %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
callq 0x2150
movq 0x18c74(%rip), %rdi     # 0x27fd0
leaq 0x12a23(%rip), %rsi     # 0x21d86
movl $0xc, %edx
callq 0x2230
testl %r15d, %r15d
je 0xf8e5
movq 0x18c53(%rip), %rdi     # 0x27fd0
movl %r15d, %esi
jmp 0xf8f5
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 0xb1ca
movq %rbx, %rdi
movq %r14, %rdx
movl %r15d, %ecx
callq 0xe17a
movq -0x288(%rbp), %rdi
cmpq %r12, %rdi
je 0xff3e
movq -0x278(%rbp), %rsi
jmp 0xff36
leaq 0x18ec5(%rip), %rcx     # 0x282a8
movl (%rcx), %eax
movq %rax, -0x60(%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, -0x58(%rbp)
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x208(%rbp), %r15
movq %r15, %rdi
callq 0xb1ca
movq %r14, %rdi
movl %r12d, %esi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0x208(%rbp), %rdi
cmpq %r13, %rdi
je 0xf453
movq -0x1f8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18b76(%rip), %r14     # 0x27fd0
leaq 0x12934(%rip), %rsi     # 0x21d95
movl $0x9, %edx
movq %r14, %rdi
callq 0x2230
movq -0x60(%rbp), %rax
leal 0x1(%rax), %esi
movq %r14, %rdi
movl %esi, -0xc4(%rbp)
callq 0x2330
movq %rax, %r14
leaq 0x12864(%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 -0x58(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x1e8(%rbp), %r12
movq %r12, %rdi
callq 0xb1ca
movq %r14, %rdi
movl %r15d, %esi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0x1e8(%rbp), %rdi
cmpq %r13, %rdi
je 0xf520
movq -0x1d8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18aa9(%rip), %r14     # 0x27fd0
leaq 0x1282e(%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 -0x58(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x1c8(%rbp), %r12
movq %r12, %rdi
callq 0xb1ca
leaq 0x18cfd(%rip), %rax     # 0x282a8
movl (%rax), %ecx
movq %r14, %rdi
movl %r15d, %esi
movq %r12, %rdx
callq 0xed1f
movq -0x1c8(%rbp), %rdi
cmpq %r13, %rdi
je 0xf5d6
movq -0x1b8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x189f3(%rip), %r14     # 0x27fd0
leaq 0x127bd(%rip), %rsi     # 0x21da1
movl $0xc, %edx
movq %r14, %rdi
callq 0x2230
movq -0x60(%rbp), %rsi
addl $0x2, %esi
movq %r14, %rdi
callq 0x2330
movq %rax, %r14
leaq 0x126e7(%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 -0x58(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x1a8(%rbp), %r15
movq %r15, %rdi
callq 0xb1ca
movq %rbx, %rdi
movl %r14d, %esi
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0x1a8(%rbp), %rdi
cmpq %r12, %rdi
je 0xf69e
movq -0x198(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x1892b(%rip), %rbx     # 0x27fd0
leaq 0x126e7(%rip), %rsi     # 0x21d93
movl $0xb, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
movl -0xc4(%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 0x1266e(%rip), %rsi     # 0x21d66
movl $0xa, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
movl -0x4c(%rbp), %esi
callq 0x2330
movq %rax, %rbx
leaq 0x125d7(%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 0xff3e
movq 0x18876(%rip), %r15     # 0x27fd0
leaq 0x1264d(%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 0x1261c(%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 0xf935
cmpl $0x23, %eax
jne 0x10304
movq 0x28(%rbx), %rax
addq $0x28, %rbx
movq 0x8(%rax), %rax
cmpl $0x2, 0x24(%rax)
jne 0xfb2d
leaq 0x18aa6(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
cmpl $0x0, (%rax)
je 0xffe3
movq 0x187a0(%rip), %rdi     # 0x27fd0
leaq 0x12589(%rip), %rsi     # 0x21dc0
movl $0x8, %edx
callq 0x2230
leaq 0x18a68(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e7b4
movq (%rax), %r15
leaq -0x38(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x12456(%rip), %rsi     # 0x21cb8
leaq 0x12450(%rip), %rdx     # 0x21cb9
leaq -0x48(%rbp), %rdi
callq 0xb264
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x1e6b4
movl (%rax), %r15d
leaq 0x18a28(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
addl $0x4, %r15d
subl (%rax), %r15d
movq 0x18724(%rip), %rdi     # 0x27fd0
movl %r15d, %esi
callq 0x2330
movq %rax, %rbx
leaq 0x12963(%rip), %rsi     # 0x22221
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
jne 0xff32
jmp 0xff3e
leaq 0x189bc(%rip), %rax     # 0x282a8
movl (%rax), %esi
movq 0x186db(%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
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2150
movq 0x28(%rbx), %rax
addq $0x28, %rbx
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x189f2(%rip), %rdi     # 0x28340
callq 0x1e8f8
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 0xb1ca
leaq 0x122fe(%rip), %rsi     # 0x21c76
movq %r14, %rdi
callq 0x20e0
testl %eax, %eax
je 0x10309
leaq 0x18921(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
callq 0x1e734
cmpl $0x0, (%rax)
je 0xfcda
movq 0x18614(%rip), %rdi     # 0x27fd0
leaq 0x123fd(%rip), %rsi     # 0x21dc0
movl $0x8, %edx
callq 0x2230
leaq 0x188dc(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e7b4
movq (%rax), %r15
leaq -0x70(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x122ca(%rip), %rsi     # 0x21cb8
leaq 0x122c4(%rip), %rdx     # 0x21cb9
leaq -0x80(%rbp), %rdi
callq 0xb264
leaq -0x80(%rbp), %rsi
movq %r15, %rdi
callq 0x1e6b4
movl (%rax), %r15d
leaq 0x1889c(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
callq 0x1e734
movl (%rax), %r13d
leaq 0x188a5(%rip), %rdi     # 0x282e0
leaq -0x48(%rbp), %rsi
callq 0x1e7b4
movq (%rax), %r14
leaq -0x90(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x1225e(%rip), %rsi     # 0x21cb8
leaq 0x12258(%rip), %rdx     # 0x21cb9
leaq -0xa0(%rbp), %rdi
callq 0xb264
leaq -0xa0(%rbp), %rsi
movq %r14, %rdi
callq 0x1e6b4
movl (%rax), %r14d
leaq 0x1885a(%rip), %rdi     # 0x282e0
leaq -0x48(%rbp), %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq 0x10(%rax), %rsi
callq 0x1e734
addl %r14d, %r15d
addl (%rax), %r13d
subl %r13d, %r15d
addl $0x4, %r15d
movq 0x1851e(%rip), %rdi     # 0x27fd0
movl %r15d, %esi
callq 0x2330
movq %rax, %rbx
leaq 0x1275d(%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 0xfb13
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
leaq -0x38(%rbp), %r15
jne 0xff1d
jmp 0xff29
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, -0x58(%rbp)
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq -0xe8(%rbp), %r13
movq %r13, %rdi
callq 0xb1ca
movq %r14, %rdi
movl %r12d, %esi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x106e9
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0xfb94
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq 0x12234(%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 0x186da(%rip), %rdi     # 0x282b0
movq -0x58(%rbp), %r12
movq %r12, %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
cmpl $0x0, (%rax)
je 0xff50
leaq 0x18710(%rip), %rdi     # 0x28310
movq %r12, %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
cmpl $0x1, (%rax)
jne 0xff50
movq 0x183aa(%rip), %rdi     # 0x27fd0
leaq 0x121b2(%rip), %rsi     # 0x21ddf
movl $0xe, %edx
callq 0x2230
leaq 0x18672(%rip), %rdi     # 0x282b0
movq %r12, %rsi
callq 0x1e7b4
movq (%rax), %r15
leaq -0x38(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x12060(%rip), %rsi     # 0x21cb8
leaq 0x1205a(%rip), %rdx     # 0x21cb9
leaq -0x48(%rbp), %rdi
callq 0xb264
leaq -0x48(%rbp), %rsi
movq %r15, %rdi
callq 0x1e6b4
movl (%rax), %r15d
leaq 0x18632(%rip), %rdi     # 0x282b0
movq %r12, %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
addl $0x4, %r15d
subl (%rax), %r15d
movq 0x1832e(%rip), %rdi     # 0x27fd0
movl %r15d, %esi
callq 0x2330
movq %rax, %rdi
callq 0x2130
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
je 0xfcc7
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x18302(%rip), %rbx     # 0x27fd0
leaq 0x12119(%rip), %rsi     # 0x21dee
jmp 0x102ce
leaq -0x70(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x11ba2(%rip), %rsi     # 0x2188c
leaq 0x11b9d(%rip), %rdx     # 0x2188e
leaq -0x80(%rbp), %rdi
callq 0xb264
leaq 0x185af(%rip), %rdi     # 0x282b0
leaq -0x80(%rbp), %rsi
callq 0xb01a
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
callq 0x1e734
movl (%rax), %r14d
movq -0x80(%rbp), %rdi
cmpq %r12, %rdi
je 0xfd37
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
je 0xff29
movq 0x18289(%rip), %rdi     # 0x27fd0
leaq 0x12072(%rip), %rsi     # 0x21dc0
movl $0x8, %edx
callq 0x2230
leaq -0x80(%rbp), %rdi
movq %r12, (%rdi)
leaq 0x11b26(%rip), %rsi     # 0x2188c
leaq 0x11b21(%rip), %rdx     # 0x2188e
callq 0xb264
leaq 0x18537(%rip), %rdi     # 0x282b0
leaq -0x80(%rbp), %rsi
callq 0xb01a
movq (%rax), %r14
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x11f21(%rip), %rsi     # 0x21cb8
leaq 0x11f1b(%rip), %rdx     # 0x21cb9
leaq -0xa0(%rbp), %rdi
callq 0xb264
leaq -0xa0(%rbp), %rsi
movq %r14, %rdi
callq 0x1e6b4
movl (%rax), %r14d
leaq -0xb0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x11abe(%rip), %rsi     # 0x2188c
leaq 0x11ab9(%rip), %rdx     # 0x2188e
leaq -0xc0(%rbp), %rdi
callq 0xb264
leaq 0x184c8(%rip), %rdi     # 0x282b0
leaq -0xc0(%rbp), %rsi
callq 0xb01a
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
callq 0x1e734
movl (%rax), %r13d
leaq 0x184cd(%rip), %rdi     # 0x282e0
leaq -0x48(%rbp), %rsi
callq 0x1e7b4
movq (%rax), %r15
leaq -0x158(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x11e86(%rip), %rsi     # 0x21cb8
leaq 0x11e80(%rip), %rdx     # 0x21cb9
leaq -0x168(%rbp), %rdi
callq 0xb264
leaq -0x168(%rbp), %rsi
movq %r15, %rdi
callq 0x1e6b4
movl (%rax), %r15d
leaq 0x18482(%rip), %rdi     # 0x282e0
leaq -0x48(%rbp), %rsi
callq 0x1e7b4
movq (%rax), %rdi
movq (%rbx), %rax
movq 0x10(%rax), %rsi
callq 0x1e734
addl %r15d, %r14d
addl (%rax), %r13d
subl %r13d, %r14d
movq 0x1814a(%rip), %rdi     # 0x27fd0
movl %r14d, %esi
callq 0x2330
movq %rax, %rbx
leaq 0x11f31(%rip), %rsi     # 0x21dc9
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
movq -0x168(%rbp), %rdi
cmpq %r12, %rdi
je 0xfec8
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
leaq -0x38(%rbp), %r15
leaq -0x70(%rbp), %rbx
je 0xfef2
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0xff14
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x80(%rbp), %rdi
cmpq %rbx, %rdi
je 0xff29
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0xff3e
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 0x1192d(%rip), %rsi     # 0x2188c
leaq 0x11928(%rip), %rdx     # 0x2188e
leaq -0x48(%rbp), %rdi
callq 0xb264
leaq 0x1833a(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xb01a
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
movl (%rax), %r14d
testl %r14d, %r14d
je 0x10159
leaq -0x70(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x118e3(%rip), %rsi     # 0x2188c
leaq 0x118de(%rip), %rdx     # 0x2188e
leaq -0x80(%rbp), %rdi
callq 0xb264
leaq 0x18350(%rip), %rdi     # 0x28310
leaq -0x80(%rbp), %rsi
callq 0xb01a
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
cmpl $0x1, (%rax)
sete %r12b
jmp 0x1015c
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x1189a(%rip), %rsi     # 0x2188c
leaq 0x11895(%rip), %rdx     # 0x2188e
leaq -0x48(%rbp), %rdi
callq 0xb264
leaq 0x182a7(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xb01a
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
movl (%rax), %r14d
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x10038
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
je 0xff3e
movq 0x17f88(%rip), %rdi     # 0x27fd0
leaq 0x11d71(%rip), %rsi     # 0x21dc0
movl $0x8, %edx
callq 0x2230
leaq -0x48(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x11825(%rip), %rsi     # 0x2188c
leaq 0x11820(%rip), %rdx     # 0x2188e
callq 0xb264
leaq 0x18236(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xb01a
movq (%rax), %r14
leaq -0x70(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x11c22(%rip), %rsi     # 0x21cb8
leaq 0x11c1c(%rip), %rdx     # 0x21cb9
leaq -0x80(%rbp), %rdi
callq 0xb264
leaq -0x80(%rbp), %rsi
movq %r14, %rdi
callq 0x1e6b4
movl (%rax), %r14d
leaq -0x90(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x117c5(%rip), %rsi     # 0x2188c
leaq 0x117c0(%rip), %rdx     # 0x2188e
leaq -0xa0(%rbp), %rdi
callq 0xb264
leaq 0x181cf(%rip), %rdi     # 0x282b0
leaq -0xa0(%rbp), %rsi
callq 0xb01a
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
subl (%rax), %r14d
movq 0x17ecb(%rip), %rdi     # 0x27fd0
movl %r14d, %esi
callq 0x2330
movq %rax, %rbx
leaq 0x11cb2(%rip), %rsi     # 0x21dc9
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
movq -0xa0(%rbp), %rdi
cmpq %r13, %rdi
je 0x10147
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x80(%rbp), %rdi
cmpq %r12, %rdi
jne 0xff1d
jmp 0xff29
xorl %r12d, %r12d
testl %r14d, %r14d
je 0x1017a
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1017a
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x1018f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
testb %r12b, %r12b
je 0x10344
movq 0x17e31(%rip), %rdi     # 0x27fd0
leaq 0x11c39(%rip), %rsi     # 0x21ddf
movl $0xe, %edx
callq 0x2230
leaq -0x48(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x116ce(%rip), %rsi     # 0x2188c
leaq 0x116c9(%rip), %rdx     # 0x2188e
callq 0xb264
leaq 0x180df(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xb01a
movq (%rax), %r14
leaq -0x90(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x11ac8(%rip), %rsi     # 0x21cb8
leaq 0x11ac2(%rip), %rdx     # 0x21cb9
leaq -0xa0(%rbp), %rdi
callq 0xb264
leaq -0xa0(%rbp), %rsi
movq %r14, %rdi
callq 0x1e6b4
movl (%rax), %r14d
leaq -0xb0(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x11665(%rip), %rsi     # 0x2188c
leaq 0x11660(%rip), %rdx     # 0x2188e
leaq -0xc0(%rbp), %rdi
callq 0xb264
leaq 0x1806f(%rip), %rdi     # 0x282b0
leaq -0xc0(%rbp), %rsi
callq 0xb01a
movq (%rax), %rdi
movq (%rbx), %rax
movq (%rax), %rsi
callq 0x1e734
subl (%rax), %r14d
movq 0x17d6b(%rip), %rdi     # 0x27fd0
movl %r14d, %esi
callq 0x2330
movq %rax, %rdi
callq 0x2130
movq -0xc0(%rbp), %rdi
cmpq %r13, %rdi
je 0x10290
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa0(%rbp), %rdi
cmpq %r12, %rdi
je 0x102ab
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x102c0
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x17d09(%rip), %rbx     # 0x27fd0
leaq 0x11b41(%rip), %rsi     # 0x21e0f
movl $0x11, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
leaq 0x11b16(%rip), %rsi     # 0x21e00
movl $0xe, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x2130
jmp 0xff3e
callq 0x28f2
leaq 0x17f78(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x17c8e(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x117c5(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x17ca0(%rip), %rdi     # 0x27fd0
leaq 0x11929(%rip), %rsi     # 0x21c60
callq 0x21b0
movq %rbx, %rdi
callq 0x282a
movq %rbx, %rdi
callq 0x2878
jmp 0x103a4
jmp 0x103a4
jmp 0x10406
jmp 0x10406
jmp 0x10395
jmp 0x10395
jmp 0x10395
jmp 0x10406
jmp 0x1040b
jmp 0x1036c
movq %rax, %rbx
jmp 0x104b8
jmp 0x10687
jmp 0x10687
jmp 0x1068c
jmp 0x10395
jmp 0x10387
movq %rax, %rbx
jmp 0x1044b
jmp 0x10406
jmp 0x10406
jmp 0x10395
movq %rax, %rbx
jmp 0x106e1
jmp 0x1068c
jmp 0x10406
movq %rax, %rbx
jmp 0x103ed
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x106e1
movq -0xd8(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r13, %rdi
je 0x103ed
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x80(%rbp), %rdi
cmpq %r12, %rdi
je 0x10466
movq -0x70(%rbp), %rsi
jmp 0x1045e
jmp 0x10687
jmp 0x1068c
movq %rax, %rbx
jmp 0x10466
movq %rax, %rbx
jmp 0x10496
movq %rax, %rbx
movq -0x80(%rbp), %rdi
cmpq %r12, %rdi
jne 0x106bc
jmp 0x106c8
jmp 0x104d4
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
cmpq %r13, %rdi
je 0x1044b
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa0(%rbp), %rdi
cmpq %r12, %rdi
je 0x10466
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
jne 0x106d5
jmp 0x106e1
movq %rax, %rbx
movq -0x168(%rbp), %rdi
cmpq %r12, %rdi
je 0x10496
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x104b8
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
jne 0x106a0
jmp 0x106af
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
jne 0x106d5
jmp 0x106e1
movq %rax, %rbx
movq -0x1a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x106e1
movq -0x198(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x1c8(%rbp), %rdi
cmpq %r13, %rdi
je 0x106e1
movq -0x1b8(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x228(%rbp), %rdi
cmpq %r13, %rdi
je 0x106e1
movq -0x218(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x1e8(%rbp), %rdi
cmpq %r13, %rdi
je 0x106e1
movq -0x1d8(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x248(%rbp), %rdi
cmpq %r13, %rdi
je 0x106e1
movq -0x238(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x106e1
movq -0xf8(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x208(%rbp), %rdi
cmpq %r13, %rdi
je 0x106e1
movq -0x1f8(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x288(%rbp), %rdi
cmpq %r12, %rdi
je 0x106e1
movq -0x278(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x106e1
movq -0x138(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x2a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x106e1
movq -0x298(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x268(%rbp), %rdi
cmpq %r12, %rdi
je 0x106e1
movq -0x258(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x188(%rbp), %rdi
cmpq %r12, %rdi
je 0x106e1
movq -0x178(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x106e1
movq -0x118(%rbp), %rsi
jmp 0x106d9
movq %rax, %rbx
jmp 0x106af
movq %rax, %rbx
jmp 0x106c8
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r12, %rdi
je 0x106af
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x106c8
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x106e1
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq %rbx, %rdi
callq 0x2360