// File: /workspace/github_c_makefile_star2_O3/zyearn[P]SmallC/codegen.cpp
// Function: genGT(treeNode*)
void genGT(treeNode* node)  //for global construct symboltable
{
    //int a,b,c[10] ÀàÐÍµÄÇé¿ö
    if(FT["_G"] == NULL)
    {
        FT["_G"] = new map<string, int>();
    }
    if(ISA["_G"] == NULL)
    {
        ISA["_G"] = new map<string, int>();
    }
    if(node->child[0]->type == 1)   
    {
        int size = 0;
        if( (*FT["_G"])["#"] != 0)
        {
            size = (*FT["_G"])["#"] /4;
        }
        string tmp = node->child[1]->data;
        if(tmp[tmp.length()-1] != ',')
        {
            tmp += ",";
        }

        while(tmp.find(",")>=0 && tmp.find(",")<tmp.length() )
        {
            // int situation
            if(tmp.find(",") < tmp.find("["))
            {
                string s = tmp.substr(0,tmp.find(","));
                tmp.erase(0,tmp.find(","));
                tmp.erase(tmp.find(","),1);
                size++;
                if((*FT["_G"])[s] == 0)
                    (*FT["_G"])[s] = size*4;
                else
                {
                    freopen(outputFile.c_str(), "w", stdout);
                    cout << "Error.";
                    fprintf(stderr, "\nCompile fail!\n");
                    fprintf(stderr, "error occurs, %s is redefined\n", s.c_str() );
                    exit(0);
                }
            }
            // array£¬eg a[10]
            else if(tmp.find("[") < tmp.find(","))
            {
                string s = tmp.substr(0,tmp.find("["));
                string num = tmp.substr(tmp.find("[")+1, tmp.find("]"));
                tmp.erase(0,tmp.find(","));
                tmp.erase(tmp.find(","),1);             
                size += atoi(num.c_str());
                if((*FT["_G"])[s] == 0)
                {
                    (*FT["_G"])[s] = size*4;
                    (*ISA["_G"])[s] = 1;
                }
                else
                {
                    freopen(outputFile.c_str(), "w", stdout);
                    cout << "Error.";
                    fprintf(stderr, "\nCompile fail!\n");
                    fprintf(stderr, "error occurs, %s is redefined\n", s.c_str() );
                    exit(0);
                }
            }
        }
        (*FT["_G"])["#"] = size*4;
    }
    //struct opt {DEFS} £¬modify ST
    else if (node->child[0]->child[0]->type == 1)
    {
        //printf("enter type == 2 (1)\n");
        treeNode *stspec = node->child[0]->child[0];
        string stname = stspec->child[1]->data;
        if( ST[stname] == 0)    //Èç¹ûstruct Ã»¶¨Òå£¬ÔòÐÞ¸Äsymboltable,
        {   //ÕâÀïÓÐ¸öÎÊÌâ£¬Èô¶¼Ã»ÓÐÖ¸¶¨OPTTAG£¬Ôò³öÏÖredefined´íÎó£¬µ«²»ÊÇËùÏ£ÍûµÄ
            ST[stname] = new map<string ,int>();
        }
        else
        {
            freopen(outputFile.c_str(), "w", stdout);
            cout << "Error.";
            fprintf(stderr, "\nCompile fail!\n");
            fprintf(stderr, "error occurs, %s is redefined\n", (stspec->child[2]->data).c_str() );
            exit(0);
        }
        string tmp = stspec->child[3]->data;
        if(tmp[tmp.length()-1] != ',')
        {
            tmp += ",";
        }
        int size = 0;
        while(tmp.find(",")>=0 && tmp.find(",")<tmp.length() )
        {
            string s = tmp.substr(0,tmp.find(","));
            tmp.erase(0,tmp.find(","));
            tmp.erase(tmp.find(","),1);
            size++;
            if((*ST[stname])[s] == 0)
            {
                (*ST[stname])[s] = size*4;
            }
            else
            {
                freopen(outputFile.c_str(), "w", stdout);
                cout << "Error.";
                fprintf(stderr, "\nCompile fail!\n");
                fprintf(stderr, "error occurs, %s is redefined\n", (stname+"."+s).c_str() );
                exit(0);
            }
        }
        (*ST[stname])["#"] = size*4;
        //´¦Àístruct id {..}id_1,id_2; Çé¿ö
        tmp = node->child[1]->data;
        if(tmp != "")
        {
            if(tmp[tmp.length()-1] != ',')
            {
                tmp += ",";
            }// + ","
            if((*FT["_G"])["#"] != 0)
            {   
                size = (*FT["_G"])["#"] /4;
            }
            while(tmp.find(",")>=0 && tmp.find(",")<tmp.length() )
            {
                string s = tmp.substr(0,tmp.find(","));
                tmp.erase(0,tmp.find(","));
                tmp.erase(tmp.find(","),1);
                size += ( (*ST[stname])["#"] )/4;
                if((*FT["_G"])[s] == 0)
                {
                    (*FT["_G"])[s] = size*4;
                    STAC[s] = stname;
                }
                else
                {
                    freopen(outputFile.c_str(), "w", stdout);
                    cout << "Error.";
                    fprintf(stderr, "\nCompile fail!\n");
                    fprintf(stderr, "error occurs, %s is redefined\n", s.c_str() );
                    exit(0);
                }
            }
            (*FT["_G"])["#"] = size*4;
        }
    }
    //struct id xxx; Çé¿ö
    else if(node->child[0]->child[0]->type == 2)
    {
    //  printf("enter type == 2 (2)\n");
        string stname = node->child[0]->child[0]->child[1]->data;
        if(ST[stname] == NULL)
        {
            freopen(outputFile.c_str(), "w", stdout);
            cout << "Error.";
            fprintf(stderr, "\nCompile fail!\n");
            fprintf(stderr, "error occurs, %s is not defined\n", stname.c_str() );
            exit(0);
        }
        int size = 0;
        if((*FT["_G"])["#"] != 0)
        {
            size = (*FT["_G"])["#"] /4;
        }
        string tmp = node->child[1]->data;
        if(tmp[tmp.length()-1] != ',')
        {
            tmp += ",";
        }
        while(tmp.find(",")>=0 && tmp.find(",")<tmp.length() )
        {
            string s = tmp.substr(0,tmp.find(","));
            tmp.erase(0,tmp.find(","));
            tmp.erase(tmp.find(","),1);
            size += (*ST[stname])["#"]/4;
            if((*FT["_G"])[s] == 0)
            {
                (*FT["_G"])[s] = size*4;
                STAC[s] = stname;
            }
            else
            {
                freopen(outputFile.c_str(), "w", stdout);
                cout << "Error.";
                fprintf(stderr, "\nCompile fail!\n");
                fprintf(stderr, "error occurs, %s is redefined\n", s.c_str() );
                exit(0);
            }
        }
        (*FT["_G"])["#"] = size*4;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rdi, %r15
leaq -0x98(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x163a7(%rip), %rsi     # 0x2188c
leaq 0x163a2(%rip), %rdx     # 0x2188e
leaq -0xa8(%rbp), %rdi
callq 0xb0aa
leaq 0x1cdb1(%rip), %rdi     # 0x282b0
leaq -0xa8(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xb530
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
testq %rbx, %rbx
jne 0xb5c0
movl $0x30, %edi
callq 0x21d0
movq %rax, %rbx
addq $0x8, %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, (%rbx)
movq %rax, 0x18(%rbx)
movq %rax, 0x20(%rbx)
movq $0x0, 0x28(%rbx)
leaq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
movq %rax, (%rdi)
leaq 0x16310(%rip), %rsi     # 0x2188c
leaq 0x1630b(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1cd21(%rip), %rdi     # 0x282b0
leaq -0xa8(%rbp), %rsi
callq 0xae5e
movq %rbx, (%rax)
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xb5c0
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
movq %rax, (%rdi)
leaq 0x162b4(%rip), %rsi     # 0x2188c
leaq 0x162af(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1cd25(%rip), %rdi     # 0x28310
leaq -0xa8(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xb61c
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
testq %rbx, %rbx
jne 0xb6ac
movl $0x30, %edi
callq 0x21d0
movq %rax, %rbx
addq $0x8, %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, (%rbx)
movq %rax, 0x18(%rbx)
movq %rax, 0x20(%rbx)
movq $0x0, 0x28(%rbx)
leaq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
movq %rax, (%rdi)
leaq 0x16224(%rip), %rsi     # 0x2188c
leaq 0x1621f(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1cc95(%rip), %rdi     # 0x28310
leaq -0xa8(%rbp), %rsi
callq 0xae5e
movq %rbx, (%rax)
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xb6ac
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x28(%r15), %rax
movq (%rax), %rax
cmpl $0x1, 0x24(%rax)
jne 0xb818
leaq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
movq %rax, (%rdi)
leaq 0x161b7(%rip), %rsi     # 0x2188c
leaq 0x161b2(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1cbc8(%rip), %rdi     # 0x282b0
leaq -0xa8(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x165b2(%rip), %rsi     # 0x21cb8
leaq 0x165ac(%rip), %rdx     # 0x21cb9
leaq -0x68(%rbp), %rdi
callq 0xb0aa
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x1e3be
movl (%rax), %ebx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xb73d
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xb75f
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %ebx, %ebx
je 0xbea6
leaq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
movq %rax, (%rdi)
leaq 0x1610d(%rip), %rsi     # 0x2188c
leaq 0x16108(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1cb1e(%rip), %rdi     # 0x282b0
leaq -0xa8(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
leaq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
movq %rax, (%rdi)
leaq 0x16505(%rip), %rsi     # 0x21cb8
leaq 0x164ff(%rip), %rdx     # 0x21cb9
callq 0xb0aa
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x1e3be
movl (%rax), %eax
leal 0x3(%rax), %ebx
testl %eax, %eax
cmovnsl %eax, %ebx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xb7ee
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xb810
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
sarl $0x2, %ebx
jmp 0xbea8
movq 0x28(%rax), %rax
movq (%rax), %rbx
movl 0x24(%rbx), %eax
cmpl $0x2, %eax
je 0xc3f7
cmpl $0x1, %eax
jne 0xc3e5
movq 0x28(%rbx), %rax
movq 0x8(%rax), %rax
leaq -0xa8(%rbp), %r14
leaq -0x98(%rbp), %rcx
movq %rcx, (%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xb00c
leaq 0x1ca7a(%rip), %rdi     # 0x282e0
movq %r14, %rsi
callq 0x1e4be
addq $0x28, %rbx
cmpq $0x0, (%rax)
jne 0xcadf
movl $0x30, %edi
callq 0x21d0
movq %rax, %r14
addq $0x8, %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%r14)
movaps %xmm0, (%r14)
movq %rax, 0x18(%r14)
movq %rax, 0x20(%r14)
movq $0x0, 0x28(%r14)
leaq 0x1ca30(%rip), %rdi     # 0x282e0
leaq -0xa8(%rbp), %rsi
callq 0x1e4be
movq %r14, (%rax)
movq (%rbx), %rax
movq 0x18(%rax), %rax
leaq -0x58(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x68(%rbp), %rdi
callq 0xb00c
movq %r15, -0xb0(%rbp)
movq -0x68(%rbp), %rax
movq -0x60(%rbp), %rcx
cmpb $0x2c, -0x1(%rax,%rcx)
je 0xb907
leaq 0x15fa0(%rip), %rsi     # 0x2189e
leaq -0x68(%rbp), %rdi
callq 0x2390
leaq 0x15f90(%rip), %r15     # 0x2189e
xorl %ebx, %ebx
leaq -0x68(%rbp), %r14
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2340
cmpq 0x8(%r14), %rax
jae 0xba51
xorl %ebx, %ebx
movl $0x4, %r13d
leaq 0x15f4d(%rip), %r14     # 0x2189e
leaq -0x68(%rbp), %r15
leaq -0x48(%rbp), %r12
movl $0x1, %ecx
movq %r15, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x2340
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21f0
movl $0x1, %ecx
movq %r15, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x2340
movq %r15, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20c0
movl $0x1, %ecx
movq %r15, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %edx
movq %r15, %rdi
movq %rax, %rsi
callq 0x20c0
leaq 0x1c91d(%rip), %rdi     # 0x282e0
leaq -0xa8(%rbp), %rsi
callq 0x1e4be
movq (%rax), %rdi
movq %r12, %rsi
callq 0x1e43e
cmpl $0x0, (%rax)
jne 0xc94d
leaq 0x1c8f6(%rip), %rdi     # 0x282e0
leaq -0xa8(%rbp), %rsi
callq 0x1e4be
movq (%rax), %rdi
movq %r12, %rsi
callq 0x1e43e
movl %r13d, (%rax)
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xba1d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movl $0x1, %ecx
movq %r15, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %r15, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x2340
addl $0x4, %r13d
incl %ebx
cmpq -0x60(%rbp), %rax
jb 0xb959
leaq 0x1c888(%rip), %rdi     # 0x282e0
leaq -0xa8(%rbp), %rsi
callq 0x1e4be
movq (%rax), %r14
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x1623f(%rip), %rsi     # 0x21cb8
leaq 0x16239(%rip), %rdx     # 0x21cb9
callq 0xb0aa
movq -0xb0(%rbp), %r15
leaq -0x48(%rbp), %rsi
movq %r14, %rdi
callq 0x1e3be
leal (,%rbx,4), %ecx
movl %ecx, (%rax)
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xbaba
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x28(%r15), %rax
movq 0x8(%rax), %rsi
leaq -0x68(%rbp), %rdi
callq 0x2140
leaq 0x161a4(%rip), %rsi     # 0x21c76
leaq -0x68(%rbp), %rdi
callq 0x20e0
testl %eax, %eax
je 0xc3aa
movq -0x68(%rbp), %rax
movq -0x60(%rbp), %rcx
cmpb $0x2c, -0x1(%rax,%rcx)
je 0xbb02
leaq 0x15da5(%rip), %rsi     # 0x2189e
leaq -0x68(%rbp), %rdi
callq 0x2390
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x15d78(%rip), %rsi     # 0x2188c
leaq 0x15d73(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1c789(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xae5e
movq (%rax), %r14
leaq -0x78(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x16176(%rip), %rsi     # 0x21cb8
leaq 0x16170(%rip), %rdx     # 0x21cb9
leaq -0x88(%rbp), %rdi
callq 0xb0aa
leaq -0x88(%rbp), %rsi
movq %r14, %rdi
callq 0x1e3be
movl (%rax), %r14d
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xbb7f
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xbb98
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
je 0xbc3c
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x15cd9(%rip), %rsi     # 0x2188c
leaq 0x15cd4(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1c6ea(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
leaq -0x88(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x160d5(%rip), %rsi     # 0x21cb8
leaq 0x160cf(%rip), %rdx     # 0x21cb9
callq 0xb0aa
leaq -0x88(%rbp), %rsi
movq %rbx, %rdi
callq 0x1e3be
movl (%rax), %eax
leal 0x3(%rax), %ebx
testl %eax, %eax
cmovnsl %eax, %ebx
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xbc20
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xbc39
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
sarl $0x2, %ebx
leaq 0x15c5b(%rip), %r15     # 0x2189e
leaq -0x68(%rbp), %r14
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2340
cmpq 0x8(%r14), %rax
jae 0xc8b5
movq %rbx, -0xb0(%rbp)
leaq 0x15c1b(%rip), %r12     # 0x2189e
leaq -0x78(%rbp), %r15
movl $0x1, %ecx
movq %r14, %rdi
movq %r12, %r13
movq %r12, %rsi
xorl %edx, %edx
callq 0x2340
leaq -0x48(%rbp), %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21f0
movl $0x1, %ecx
movq %r14, %rdi
movq %r13, %r12
movq %r13, %rsi
xorl %edx, %edx
callq 0x2340
movq %r14, %rbx
movq %r14, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20c0
movl $0x1, %ecx
movq %rbx, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %edx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x20c0
leaq 0x1c5e5(%rip), %rdi     # 0x282e0
leaq -0xa8(%rbp), %rsi
callq 0x1e4be
movq (%rax), %r13
movq %r15, -0x88(%rbp)
leaq -0x88(%rbp), %r14
movq %r14, %rdi
leaq 0x15f96(%rip), %rsi     # 0x21cb8
leaq 0x15f90(%rip), %rdx     # 0x21cb9
callq 0xb0aa
movq %r13, %rdi
movq %r14, %rsi
callq 0x1e3be
movl (%rax), %eax
leal 0x3(%rax), %r13d
testl %eax, %eax
cmovnsl %eax, %r13d
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xbd5d
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq %r15, -0x88(%rbp)
leaq -0x88(%rbp), %r15
movq %r15, %rdi
leaq 0x15b17(%rip), %rsi     # 0x2188c
leaq 0x15b12(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1c528(%rip), %rdi     # 0x282b0
movq %r15, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1e43e
movl (%rax), %r15d
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xbdbb
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r15d, %r15d
jne 0xcaa3
leaq -0x78(%rbp), %r15
movq %r15, -0x88(%rbp)
movq %r14, %rdi
leaq 0x15ab3(%rip), %rsi     # 0x2188c
leaq 0x15aae(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1c4c4(%rip), %rdi     # 0x282b0
movq %r14, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1e43e
sarl $0x2, %r13d
movq -0xb0(%rbp), %rcx
addl %r13d, %ecx
movq %rcx, -0xb0(%rbp)
leal (,%rcx,4), %r13d
movl %r13d, (%rax)
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xbe38
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq 0x1c501(%rip), %rdi     # 0x28340
leaq -0x48(%rbp), %rsi
callq 0x1e602
movq %rax, %rdi
leaq -0xa8(%rbp), %rsi
callq 0x2140
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xbe70
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movl $0x1, %ecx
movq %rbx, %r14
movq %rbx, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %rbx, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x2340
cmpq -0x60(%rbp), %rax
jb 0xbc87
jmp 0xc8bf
xorl %ebx, %ebx
movq %rbx, -0xb0(%rbp)
movq 0x28(%r15), %rax
movq 0x8(%rax), %rax
leaq -0xa8(%rbp), %rbx
leaq -0x98(%rbp), %rcx
movq %rcx, (%rbx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xb00c
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
cmpb $0x2c, -0x1(%rax,%rcx)
je 0xbefb
leaq 0x159af(%rip), %rsi     # 0x2189e
leaq -0xa8(%rbp), %rdi
callq 0x2390
leaq 0x1599c(%rip), %rbx     # 0x2189e
leaq -0xa8(%rbp), %r14
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
cmpq 0x8(%r14), %rax
jae 0xc32d
leaq 0x15960(%rip), %r15     # 0x2189e
leaq -0x48(%rbp), %r13
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2340
movq %r15, %rbx
movq %rax, %r15
movl $0x1, %ecx
movq %r14, %rdi
leaq 0x1593e(%rip), %r12     # 0x218a7
movq %r12, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %r14, %rdi
cmpq %rax, %r15
jae 0xc09c
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
leaq -0x68(%rbp), %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21f0
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movq %r14, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20c0
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %edx
movq %r14, %rdi
movq %rax, %rsi
callq 0x20c0
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq %r13, %rdi
leaq 0x1589a(%rip), %rsi     # 0x2188c
leaq 0x15895(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1c2ab(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x68(%rbp), %rsi
callq 0x1e43e
movl (%rax), %r15d
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xc035
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r15d, %r15d
jne 0xc9ef
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq %r13, %rdi
leaq 0x1583c(%rip), %rsi     # 0x2188c
leaq 0x15837(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1583b(%rip), %r15     # 0x2189e
leaq 0x1c246(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x68(%rbp), %rsi
callq 0x1e43e
movq -0xb0(%rbp), %rcx
incl %ecx
movq %rcx, -0xb0(%rbp)
leal (,%rcx,4), %ecx
movl %ecx, (%rax)
jmp 0xc2c1
movq %r12, %rsi
xorl %edx, %edx
callq 0x2340
movq %rax, %r15
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
cmpq %rax, %r15
jae 0xc2f5
movl $0x1, %ecx
movq %r14, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x2340
leaq -0x68(%rbp), %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21f0
movl $0x1, %ecx
movq %r14, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x2340
leaq 0x1(%rax), %r15
movl $0x1, %ecx
movq %r14, %rdi
leaq 0x1579d(%rip), %rsi     # 0x218a9
xorl %edx, %edx
callq 0x2340
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %rax, %rcx
callq 0x21f0
leaq -0x88(%rbp), %r12
movl $0x1, %ecx
movq %r14, %rdi
leaq 0x15764(%rip), %rbx     # 0x2189e
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movq %r14, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20c0
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %edx
movq %r14, %rdi
movq %rax, %rsi
callq 0x20c0
movq -0x48(%rbp), %rdi
callq 0x22f0
movl %eax, %r15d
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
movq %r12, %rdi
leaq 0x156f8(%rip), %rsi     # 0x2188c
leaq 0x156f3(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1c109(%rip), %rdi     # 0x282b0
movq %r12, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x68(%rbp), %rsi
callq 0x1e43e
movl (%rax), %r12d
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xc1da
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r12d, %r12d
jne 0xca67
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x88(%rbp), %rbx
movq %rbx, %rdi
leaq 0x1568d(%rip), %rsi     # 0x2188c
leaq 0x15688(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1c09e(%rip), %rdi     # 0x282b0
movq %rbx, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x68(%rbp), %rsi
callq 0x1e43e
movq -0xb0(%rbp), %rcx
addl %r15d, %ecx
movq %rcx, -0xb0(%rbp)
leal (,%rcx,4), %ecx
movl %ecx, (%rax)
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xc25c
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
movq %rbx, %rdi
leaq 0x1561b(%rip), %rsi     # 0x2188c
leaq 0x15616(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1561a(%rip), %r15     # 0x2189e
leaq 0x1c085(%rip), %rdi     # 0x28310
movq %rbx, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x68(%rbp), %rsi
callq 0x1e43e
movl $0x1, (%rax)
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xc2c1
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xc2da
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xc2fc
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x21e0
jmp 0xc2fc
leaq 0x155a2(%rip), %r15     # 0x2189e
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2340
cmpq -0xa0(%rbp), %rax
jb 0xbf42
leaq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
movq %rax, (%rdi)
leaq 0x1554d(%rip), %rsi     # 0x2188c
leaq 0x15548(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1bf5e(%rip), %rdi     # 0x282b0
leaq -0x68(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
leaq -0x38(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1594b(%rip), %rsi     # 0x21cb8
leaq 0x15945(%rip), %rdx     # 0x21cb9
leaq -0x48(%rbp), %rdi
callq 0xb0aa
leaq -0x48(%rbp), %rsi
movq %rbx, %rdi
callq 0x1e3be
movq -0xb0(%rbp), %rcx
shll $0x2, %ecx
movl %ecx, (%rax)
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
je 0xc3aa
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xc3c3
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xc3e5
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x28(%rbx), %rax
movq 0x8(%rax), %rax
leaq -0xa8(%rbp), %rbx
leaq -0x98(%rbp), %rcx
movq %rcx, (%rbx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xb00c
leaq 0x1beb7(%rip), %rdi     # 0x282e0
movq %rbx, %rsi
callq 0x1e4be
cmpq $0x0, (%rax)
je 0xcb1a
leaq -0x58(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x15442(%rip), %rsi     # 0x2188c
leaq 0x1543d(%rip), %rdx     # 0x2188e
leaq -0x68(%rbp), %rdi
callq 0xb0aa
leaq 0x1be4f(%rip), %rdi     # 0x282b0
leaq -0x68(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x1583c(%rip), %rsi     # 0x21cb8
leaq 0x15836(%rip), %rdx     # 0x21cb9
leaq -0x48(%rbp), %rdi
callq 0xb0aa
leaq -0x48(%rbp), %rsi
movq %rbx, %rdi
callq 0x1e3be
movl (%rax), %ebx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xc4b3
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x68(%rbp), %rdi
cmpq %r14, %rdi
je 0xc4c8
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %ebx, %ebx
je 0xc567
leaq -0x68(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x153ae(%rip), %rsi     # 0x2188c
leaq 0x153a9(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1bdbf(%rip), %rdi     # 0x282b0
leaq -0x68(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x157a9(%rip), %rsi     # 0x21cb8
leaq 0x157a3(%rip), %rdx     # 0x21cb9
callq 0xb0aa
leaq -0x48(%rbp), %rsi
movq %rbx, %rdi
callq 0x1e3be
movl (%rax), %eax
leal 0x3(%rax), %r12d
testl %eax, %eax
cmovnsl %eax, %r12d
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xc54c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x68(%rbp), %rdi
cmpq %r14, %rdi
je 0xc561
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x21e0
sarl $0x2, %r12d
jmp 0xc56a
xorl %r12d, %r12d
movq 0x28(%r15), %rax
movq 0x8(%rax), %rax
leaq -0x68(%rbp), %rdi
movq %r14, (%rdi)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
callq 0xb00c
movq -0x68(%rbp), %rax
movq -0x60(%rbp), %rcx
cmpb $0x2c, -0x1(%rax,%rcx)
je 0xc5a7
leaq 0x15300(%rip), %rsi     # 0x2189e
leaq -0x68(%rbp), %rdi
callq 0x2390
leaq 0x152f0(%rip), %rbx     # 0x2189e
leaq -0x68(%rbp), %r14
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
cmpq 0x8(%r14), %rax
jae 0xc802
movq %r12, -0xb0(%rbp)
leaq -0x78(%rbp), %r15
leaq 0x152ac(%rip), %rbx     # 0x2189e
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
leaq -0x48(%rbp), %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21f0
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movq %r14, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20c0
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %edx
movq %r14, %rdi
movq %rax, %rsi
callq 0x20c0
leaq 0x1bc83(%rip), %rdi     # 0x282e0
leaq -0xa8(%rbp), %rsi
callq 0x1e4be
movq (%rax), %r13
movq %r15, -0x88(%rbp)
leaq -0x88(%rbp), %r12
movq %r12, %rdi
leaq 0x15634(%rip), %rsi     # 0x21cb8
leaq 0x1562e(%rip), %rdx     # 0x21cb9
callq 0xb0aa
movq %r13, %rdi
movq %r12, %rsi
callq 0x1e3be
movl (%rax), %eax
leal 0x3(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
movl %ecx, -0xb4(%rbp)
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xc6c3
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq %r15, -0x88(%rbp)
movq %r12, %rdi
leaq 0x151b8(%rip), %rsi     # 0x2188c
leaq 0x151b3(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1bbc9(%rip), %rdi     # 0x282b0
movq %r12, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1e43e
movl (%rax), %r12d
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xc716
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r12d, %r12d
jne 0xca2b
movq %r15, -0x88(%rbp)
leaq -0x88(%rbp), %r13
movq %r13, %rdi
leaq 0x15155(%rip), %rsi     # 0x2188c
leaq 0x15150(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1bb66(%rip), %rdi     # 0x282b0
movq %r13, %rsi
callq 0xae5e
movq (%rax), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1e43e
movl -0xb4(%rbp), %edx
sarl $0x2, %edx
movq -0xb0(%rbp), %rcx
addl %edx, %ecx
movq %rcx, -0xb0(%rbp)
leal (,%rcx,4), %r13d
movl %r13d, (%rax)
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xc79a
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq 0x1bb9f(%rip), %rdi     # 0x28340
leaq -0x48(%rbp), %rsi
callq 0x1e602
movq %rax, %rdi
leaq -0xa8(%rbp), %rsi
callq 0x2140
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xc7d2
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
movl $0x1, %ecx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2340
cmpq -0x60(%rbp), %rax
jb 0xc5f2
jmp 0xc809
shll $0x2, %r12d
movl %r12d, %r13d
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x15071(%rip), %rsi     # 0x2188c
leaq 0x1506c(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1ba82(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
leaq -0x78(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1546f(%rip), %rsi     # 0x21cb8
leaq 0x15469(%rip), %rdx     # 0x21cb9
leaq -0x88(%rbp), %rdi
callq 0xb0aa
leaq -0x88(%rbp), %rsi
movq %rbx, %rdi
callq 0x1e3be
movl %r13d, (%rax)
movq -0x88(%rbp), %rdi
cmpq %r14, %rdi
je 0xc886
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
leaq -0x58(%rbp), %rbx
je 0xc8a3
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x68(%rbp), %rdi
cmpq %rbx, %rdi
jne 0xc3b7
jmp 0xc3c3
shll $0x2, %ebx
movl %ebx, %r13d
leaq -0x78(%rbp), %r15
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x14fbb(%rip), %rsi     # 0x2188c
leaq 0x14fb6(%rip), %rdx     # 0x2188e
callq 0xb0aa
leaq 0x1b9cc(%rip), %rdi     # 0x282b0
leaq -0x48(%rbp), %rsi
callq 0xae5e
movq (%rax), %rbx
leaq -0x88(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x153b7(%rip), %rsi     # 0x21cb8
leaq 0x153b1(%rip), %rdx     # 0x21cb9
callq 0xb0aa
leaq -0x88(%rbp), %rsi
movq %rbx, %rdi
callq 0x1e3be
movl %r13d, (%rax)
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xc937
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
jne 0xc39e
jmp 0xc3aa
leaq 0x1b934(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x1b64a(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x15181(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x1b65c(%rip), %rdi     # 0x27fd0
leaq 0x152e5(%rip), %rsi     # 0x21c60
movl $0x6, %edx
callq 0x2230
movq 0x1b64c(%rip), %rbx     # 0x27fd8
movq (%rbx), %rcx
leaq 0x152d1(%rip), %rdi     # 0x21c67
movl $0xf, %esi
movl $0x1, %edx
callq 0x23a0
movq (%rbx), %rbx
leaq 0x152b6(%rip), %rdx     # 0x21c65
leaq -0xd8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x1e5a1
leaq -0x88(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x1e53d
leaq -0x88(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
movq %rbx, %rsi
callq 0x250b
leaq 0x1b892(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x1b5a8(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x150df(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x1b5ba(%rip), %rdi     # 0x27fd0
leaq 0x15243(%rip), %rsi     # 0x21c60
callq 0x21b0
leaq -0x68(%rbp), %rdi
callq 0x25c8
leaq 0x1b856(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x1b56c(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x150a3(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x1b57e(%rip), %rdi     # 0x27fd0
leaq 0x15207(%rip), %rsi     # 0x21c60
callq 0x21b0
leaq -0x48(%rbp), %rdi
callq 0x2441
leaq 0x1b81a(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x1b530(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x15067(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x1b542(%rip), %rdi     # 0x27fd0
leaq 0x151cb(%rip), %rsi     # 0x21c60
callq 0x21b0
leaq -0x68(%rbp), %rdi
callq 0x2587
leaq 0x1b7de(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x1b4f4(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x1502b(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x1b506(%rip), %rdi     # 0x27fd0
leaq 0x1518f(%rip), %rsi     # 0x21c60
callq 0x21b0
leaq -0x48(%rbp), %rdi
callq 0x2546
leaq 0x1b7a2(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x1b4b8(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x14fef(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x1b4ca(%rip), %rdi     # 0x27fd0
leaq 0x15153(%rip), %rsi     # 0x21c60
callq 0x21b0
movq %rbx, %rdi
callq 0x24c3
leaq 0x1b767(%rip), %rax     # 0x28288
movq (%rax), %rdi
movq 0x1b47d(%rip), %rax     # 0x27fa8
movq (%rax), %rdx
leaq 0x14fb4(%rip), %rsi     # 0x21ae9
callq 0x2220
movq 0x1b48f(%rip), %rdi     # 0x27fd0
leaq 0x15118(%rip), %rsi     # 0x21c60
callq 0x21b0
leaq -0xa8(%rbp), %rdi
callq 0x2482
jmp 0xccf8
jmp 0xcdc9
jmp 0xcdc9
jmp 0xccd8
jmp 0xcd72
jmp 0xccd8
jmp 0xccf8
jmp 0xcdc9
jmp 0xcdc9
jmp 0xccd8
jmp 0xccf8
jmp 0xcdc9
jmp 0xcdc9
jmp 0xccd8
jmp 0xcbe5
jmp 0xcc0a
jmp 0xcc0a
jmp 0xcd2e
jmp 0xcdc9
jmp 0xcdc9
jmp 0xccd8
movq %rax, %rbx
movq -0x88(%rbp), %rdi
cmpq %r14, %rdi
jne 0xcd64
jmp 0xcd80
jmp 0xcd7d
jmp 0xcd7d
jmp 0xcd72
jmp 0xcd2e
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xcc0d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
jmp 0xcc0d
jmp 0xcc0a
jmp 0xcd2e
movq %rax, %rbx
movq -0x68(%rbp), %rdi
cmpq %r14, %rdi
jne 0xcdf2
jmp 0xcdfe
jmp 0xcd2e
jmp 0xcd2e
jmp 0xcd2e
jmp 0xcd72
jmp 0xcd2e
jmp 0xcd2e
jmp 0xcc98
jmp 0xccd8
jmp 0xcd2e
jmp 0xcc98
jmp 0xcd2e
jmp 0xcc98
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
jne 0xcd8d
jmp 0xcd99
jmp 0xcd72
jmp 0xcd72
jmp 0xcd2e
jmp 0xcd72
jmp 0xcd2e
jmp 0xcd2e
jmp 0xcc98
jmp 0xcd2e
jmp 0xcd2e
jmp 0xcc98
jmp 0xcd2e
movq %rax, %rbx
jmp 0xce20
jmp 0xcdc9
jmp 0xcd7d
jmp 0xccd8
jmp 0xcdc9
jmp 0xccf8
jmp 0xcdc9
jmp 0xcdc9
jmp 0xcd7d
jmp 0xcd7d
jmp 0xcd7d
jmp 0xcd72
jmp 0xcd2e
jmp 0xcd7d
movq %rax, %rbx
jmp 0xcde5
jmp 0xcd72
jmp 0xcd7d
jmp 0xcd55
jmp 0xcd7d
jmp 0xcd7d
jmp 0xcd72
movq %rax, %rbx
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
jne 0xcd23
jmp 0xcdcc
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xcdcc
movq -0x78(%rbp), %rsi
jmp 0xcdbf
jmp 0xcd7d
movq %rax, %rbx
jmp 0xcdfe
jmp 0xcd3a
jmp 0xcd3a
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
jne 0xcd64
jmp 0xcd80
jmp 0xcd72
jmp 0xcd72
jmp 0xcd55
movq %rax, %rbx
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0xcd80
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
jmp 0xcd80
movq %rax, %rbx
jmp 0xcd99
jmp 0xcd7d
jmp 0xcd7d
jmp 0xcdc9
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xcd99
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
jmp 0xcded
jmp 0xcdc9
movq %rax, %rbx
leaq -0xc8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcdcc
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x21e0
jmp 0xcdcc
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xcde5
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq -0x58(%rbp), %rax
movq -0x68(%rbp), %rdi
cmpq %rax, %rdi
je 0xcdfe
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xce20
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
movq %rbx, %rdi
callq 0x2360