// File: /workspace/github_c_makefile_star2_O2/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 0x1102a(%rip), %rsi     # 0x1888c
leaq -0xb0(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x70d8
leaq 0x17a3f(%rip), %rdi     # 0x1f2b8
leaq -0xb0(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq -0xb0(%rbp), %rdi
callq 0x23c8
testq %rbx, %rbx
jne 0x78f8
pushq $0x30
popq %rdi
callq 0x21c0
movq %rax, %rbx
addq $0x8, %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, (%rbx)
movq %rax, 0x18(%rbx)
movq %rax, 0x20(%rbx)
andq $0x0, 0x28(%rbx)
leaq 0x10fc6(%rip), %rsi     # 0x1888c
leaq -0xb0(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x70d8
leaq 0x179db(%rip), %rdi     # 0x1f2b8
leaq -0xb0(%rbp), %rsi
callq 0x718c
movq %rbx, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x23c8
leaq 0x10f8d(%rip), %rsi     # 0x1888c
leaq -0xb0(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x70d8
leaq 0x17a02(%rip), %rdi     # 0x1f318
leaq -0xb0(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq -0xb0(%rbp), %rdi
callq 0x23c8
testq %rbx, %rbx
jne 0x7995
pushq $0x30
popq %rdi
callq 0x21c0
movq %rax, %rbx
addq $0x8, %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, (%rbx)
movq %rax, 0x18(%rbx)
movq %rax, 0x20(%rbx)
andq $0x0, 0x28(%rbx)
leaq 0x10f29(%rip), %rsi     # 0x1888c
leaq -0xb0(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x70d8
leaq 0x1799e(%rip), %rdi     # 0x1f318
leaq -0xb0(%rbp), %rsi
callq 0x718c
movq %rbx, (%rax)
leaq -0xb0(%rbp), %rdi
callq 0x23c8
movq 0x28(%r15), %rax
movq (%rax), %rax
cmpl $0x1, 0x24(%rax)
pushq $0x4
popq %r12
jne 0x7a8c
leaq 0x10edb(%rip), %rsi     # 0x1888c
leaq -0xb0(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0x70d8
leaq 0x178f0(%rip), %rdi     # 0x1f2b8
leaq -0xb0(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq 0x112da(%rip), %rsi     # 0x18cb8
leaq -0x50(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x70d8
leaq -0x50(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
movl (%rax), %ebx
leaq -0x50(%rbp), %rdi
callq 0x23c8
leaq -0xb0(%rbp), %rdi
callq 0x23c8
testl %ebx, %ebx
je 0x7c30
leaq 0x10e6c(%rip), %rsi     # 0x1888c
leaq -0xb0(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0x70d8
leaq 0x17881(%rip), %rdi     # 0x1f2b8
leaq -0xb0(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq 0x1126b(%rip), %rsi     # 0x18cb8
leaq -0x50(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x70d8
leaq -0x50(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
movl (%rax), %eax
cltd
idivl %r12d
movl %eax, %r14d
leaq -0x50(%rbp), %rdi
callq 0x23c8
leaq -0xb0(%rbp), %rdi
callq 0x23c8
jmp 0x7c33
movq 0x28(%rax), %rax
movq (%rax), %r14
movl 0x24(%r14), %eax
cmpl $0x2, %eax
je 0x7fee
cmpl $0x1, %eax
jne 0x86dc
movq 0x28(%r14), %rax
movq 0x8(%rax), %rsi
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
callq 0x2280
leaq 0x17821(%rip), %rdi     # 0x1f2e8
movq %rbx, %rsi
callq 0x155d4
cmpq $0x0, (%rax)
jne 0x88d5
pushq $0x30
popq %rdi
callq 0x21c0
movq %rax, %rbx
addq $0x8, %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, (%rbx)
movq %rax, 0x18(%rbx)
movq %rax, 0x20(%rbx)
andq $0x0, 0x28(%rbx)
leaq 0x177e2(%rip), %rdi     # 0x1f2e8
leaq -0xb0(%rbp), %rsi
callq 0x155d4
movq %rbx, (%rax)
movq 0x28(%r14), %rax
movq 0x18(%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0x2280
movq %r15, -0xb8(%rbp)
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
cmpb $0x2c, -0x1(%rax,%rcx)
je 0x7b4c
leaq 0x10d5b(%rip), %rsi     # 0x1889e
leaq -0x50(%rbp), %rdi
callq 0x2370
xorl %ebx, %ebx
leaq 0x10d49(%rip), %r15     # 0x1889e
leaq -0x50(%rbp), %r12
leaq -0x70(%rbp), %r13
xorl %r14d, %r14d
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x23b0
cmpq -0x48(%rbp), %rax
jae 0x80f4
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r13, %rdi
movq %r12, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21e0
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r12, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20b0
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r12, %rdi
movq %rax, %rsi
pushq $0x1
popq %rdx
callq 0x20b0
leaq 0x1770b(%rip), %rdi     # 0x1f2e8
leaq -0xb0(%rbp), %rsi
callq 0x155d4
movq (%rax), %rdi
movq %r13, %rsi
callq 0x1556a
cmpl $0x0, (%rax)
jne 0x86ee
leaq 0x176e4(%rip), %rdi     # 0x1f2e8
leaq -0xb0(%rbp), %rsi
callq 0x155d4
movq (%rax), %rdi
movq %r13, %rsi
callq 0x1556a
addl $0x4, %ebx
movl %ebx, (%rax)
movq %r13, %rdi
callq 0x23c8
incl %r14d
jmp 0x7b60
xorl %r14d, %r14d
movq 0x28(%r15), %rax
movq 0x8(%rax), %rsi
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
callq 0x2280
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
cmpb $0x2c, -0x1(%rax,%rcx)
je 0x7f63
leaq 0x10c3b(%rip), %rsi     # 0x1889e
leaq -0xb0(%rbp), %rdi
callq 0x2370
jmp 0x7f63
leaq 0x10c23(%rip), %rsi     # 0x1889e
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
movq %rax, %r15
leaq 0x10c11(%rip), %rsi     # 0x188a7
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
cmpq %rax, %r15
jb 0x7e6c
leaq 0x10bf7(%rip), %rsi     # 0x188a7
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
movq %rax, %r15
leaq 0x10bda(%rip), %rsi     # 0x1889e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
cmpq %rax, %r15
jae 0x7f63
leaq 0x10bc9(%rip), %rsi     # 0x188a7
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
leaq -0x50(%rbp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21e0
leaq 0x10ba7(%rip), %rsi     # 0x188a7
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
leaq 0x1(%rax), %r15
leaq 0x10b94(%rip), %rsi     # 0x188a9
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
leaq -0x70(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
movq %rax, %rcx
callq 0x21e0
leaq 0x10b66(%rip), %rsi     # 0x1889e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
movq %rbx, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20b0
leaq 0x10b48(%rip), %rsi     # 0x1889e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x20b0
movq -0x70(%rbp), %rdi
callq 0x22e0
movl %eax, %ebx
leaq 0x10b0c(%rip), %rsi     # 0x1888c
leaq -0x90(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x1751e(%rip), %rdi     # 0x1f2b8
leaq -0x90(%rbp), %rsi
callq 0x718c
movq (%rax), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1556a
movl (%rax), %r15d
leaq -0x90(%rbp), %rdi
callq 0x23c8
testl %r15d, %r15d
jne 0x887a
leaq 0x10abb(%rip), %rsi     # 0x1888c
leaq -0x90(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x174cd(%rip), %rdi     # 0x1f2b8
leaq -0x90(%rbp), %rsi
callq 0x718c
movq (%rax), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1556a
addl %ebx, %r14d
leal (,%r14,4), %ecx
movl %ecx, (%rax)
leaq -0x90(%rbp), %rdi
callq 0x23c8
leaq 0x10a69(%rip), %rsi     # 0x1888c
leaq -0x90(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x174db(%rip), %rdi     # 0x1f318
leaq -0x90(%rbp), %rsi
callq 0x718c
movq (%rax), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1556a
movl $0x1, (%rax)
leaq -0x90(%rbp), %rdi
callq 0x23c8
jmp 0x7f51
leaq 0x10a2b(%rip), %rsi     # 0x1889e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
leaq -0x50(%rbp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21e0
leaq 0x10a09(%rip), %rsi     # 0x1889e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
movq %rbx, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20b0
leaq 0x109eb(%rip), %rsi     # 0x1889e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x20b0
leaq 0x109ba(%rip), %rsi     # 0x1888c
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x70d8
leaq 0x173cf(%rip), %rdi     # 0x1f2b8
leaq -0x70(%rbp), %rsi
callq 0x718c
movq (%rax), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1556a
movl (%rax), %ebx
leaq -0x70(%rbp), %rdi
callq 0x23c8
testl %ebx, %ebx
jne 0x8845
leaq 0x10974(%rip), %rsi     # 0x1888c
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x70d8
leaq 0x17389(%rip), %rdi     # 0x1f2b8
leaq -0x70(%rbp), %rsi
callq 0x718c
movq (%rax), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1556a
incl %r14d
leal (,%r14,4), %ecx
movl %ecx, (%rax)
leaq -0x70(%rbp), %rdi
callq 0x23c8
leaq -0x50(%rbp), %rdi
callq 0x23c8
leaq 0x10934(%rip), %rbx     # 0x1889e
leaq -0xb0(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
cmpq 0x8(%r15), %rax
jb 0x7c74
leaq 0x108f0(%rip), %rsi     # 0x1888c
leaq -0x50(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x70d8
leaq 0x17305(%rip), %rdi     # 0x1f2b8
leaq -0x50(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq 0x10cf2(%rip), %rsi     # 0x18cb8
leaq -0x70(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
shll $0x2, %r14d
movl %r14d, (%rax)
jmp 0x86be
movq 0x28(%r14), %rax
movq 0x8(%rax), %rsi
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
callq 0x2280
leaq 0x172dc(%rip), %rdi     # 0x1f2e8
movq %rbx, %rsi
callq 0x155d4
cmpq $0x0, (%rax)
je 0x8937
leaq 0x10867(%rip), %rsi     # 0x1888c
leaq -0x50(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x70d8
leaq 0x1727c(%rip), %rdi     # 0x1f2b8
leaq -0x50(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq 0x10c69(%rip), %rsi     # 0x18cb8
leaq -0x70(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
movl (%rax), %ebx
leaq -0x70(%rbp), %rdi
callq 0x23c8
leaq -0x50(%rbp), %rdi
callq 0x23c8
testl %ebx, %ebx
je 0x846f
leaq 0x107fe(%rip), %rsi     # 0x1888c
leaq -0x50(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x70d8
leaq 0x17213(%rip), %rdi     # 0x1f2b8
leaq -0x50(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq 0x10c00(%rip), %rsi     # 0x18cb8
leaq -0x70(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
movl (%rax), %eax
cltd
idivl %r12d
movl %eax, %r14d
leaq -0x70(%rbp), %rdi
callq 0x23c8
leaq -0x50(%rbp), %rdi
callq 0x23c8
jmp 0x8472
leaq 0x171ed(%rip), %rdi     # 0x1f2e8
leaq -0xb0(%rbp), %rsi
callq 0x155d4
pushq $0x4
popq %r12
movq (%rax), %r15
leaq 0x10ba3(%rip), %rsi     # 0x18cb8
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x70d8
movq -0xb8(%rbp), %r13
leaq -0x70(%rbp), %rsi
movq %r15, %rdi
callq 0x15500
movl %ebx, (%rax)
leaq -0x70(%rbp), %rdi
callq 0x23c8
movq 0x28(%r13), %rax
movq 0x8(%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0x2130
leaq 0x10b1b(%rip), %rsi     # 0x18c76
leaq -0x50(%rbp), %rdi
callq 0x1563d
testb %al, %al
je 0x86c7
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
cmpb $0x2c, -0x1(%rax,%rcx)
je 0x818b
leaq 0x1071c(%rip), %rsi     # 0x1889e
leaq -0x50(%rbp), %rdi
callq 0x2370
leaq 0x106fa(%rip), %rsi     # 0x1888c
leaq -0x70(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x1710f(%rip), %rdi     # 0x1f2b8
leaq -0x70(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq 0x10afc(%rip), %rsi     # 0x18cb8
leaq -0x90(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x70d8
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
movl (%rax), %ebx
leaq -0x90(%rbp), %rdi
callq 0x23c8
leaq -0x70(%rbp), %rdi
callq 0x23c8
testl %ebx, %ebx
je 0x8264
leaq 0x1068f(%rip), %rsi     # 0x1888c
leaq -0x70(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x170a4(%rip), %rdi     # 0x1f2b8
leaq -0x70(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq 0x10a91(%rip), %rsi     # 0x18cb8
leaq -0x90(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x70d8
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
movl (%rax), %eax
cltd
idivl %r12d
movl %eax, %r14d
leaq -0x90(%rbp), %rdi
callq 0x23c8
leaq -0x70(%rbp), %rdi
callq 0x23c8
movq %r14, -0xb8(%rbp)
leaq 0x1062c(%rip), %rbx     # 0x1889e
leaq -0x50(%rbp), %r15
leaq -0x70(%rbp), %r13
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
cmpq -0x48(%rbp), %rax
jae 0x8413
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r13, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21e0
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r15, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20b0
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r15, %rdi
movq %rax, %rsi
pushq $0x1
popq %rdx
callq 0x20b0
leaq 0x16ff1(%rip), %rdi     # 0x1f2e8
leaq -0xb0(%rbp), %rsi
callq 0x155d4
movq %rbx, %r15
movq (%rax), %rbx
leaq -0x90(%rbp), %r14
movq %r14, %rdi
leaq 0x1099e(%rip), %rsi     # 0x18cb8
leaq -0xd8(%rbp), %rdx
callq 0x70d8
movq %rbx, %rdi
movq %r14, %rsi
callq 0x15500
movl (%rax), %eax
cltd
idivl %r12d
movl %eax, %ebx
movq %r14, %rdi
callq 0x23c8
movq %r14, %rdi
leaq 0x10541(%rip), %rsi     # 0x1888c
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x16f5a(%rip), %rdi     # 0x1f2b8
movq %r14, %rsi
callq 0x718c
movq (%rax), %rdi
movq %r13, %rsi
callq 0x1556a
movl (%rax), %r12d
movq %r14, %rdi
callq 0x23c8
testl %r12d, %r12d
jne 0x87dc
movq %r14, %rdi
leaq 0x104fd(%rip), %rsi     # 0x1888c
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x16f16(%rip), %rdi     # 0x1f2b8
movq %r14, %rsi
callq 0x718c
pushq $0x4
popq %r12
movq %r13, %r14
movq (%rax), %rdi
movq %r13, %rsi
callq 0x1556a
movq -0xb8(%rbp), %rcx
addl %ebx, %ecx
movq %rcx, -0xb8(%rbp)
leal (,%rcx,4), %ecx
movl %ecx, (%rax)
leaq -0x90(%rbp), %rdi
callq 0x23c8
leaq 0x16f60(%rip), %rdi     # 0x1f348
movq %r14, %rsi
callq 0x1564a
movq %r15, %rbx
leaq -0x50(%rbp), %r15
movq %rax, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2130
movq %r13, %rdi
callq 0x23c8
jmp 0x827a
leaq 0x10472(%rip), %rsi     # 0x1888c
leaq -0x70(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x16e87(%rip), %rdi     # 0x1f2b8
leaq -0x70(%rbp), %rsi
callq 0x718c
movq -0xb8(%rbp), %r14
movq (%rax), %rbx
leaq 0x1086d(%rip), %rsi     # 0x18cb8
leaq -0x90(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x70d8
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
jmp 0x86ab
xorl %r14d, %r14d
movq 0x28(%r15), %rax
movq 0x8(%rax), %rsi
leaq -0x50(%rbp), %rdi
callq 0x2280
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
cmpb $0x2c, -0x1(%rax,%rcx)
je 0x862c
leaq 0x10401(%rip), %rsi     # 0x1889e
leaq -0x50(%rbp), %rdi
callq 0x2370
jmp 0x862c
leaq 0x103ec(%rip), %rsi     # 0x1889e
leaq -0x50(%rbp), %rbx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
leaq -0x70(%rbp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x21e0
leaq 0x103c6(%rip), %rsi     # 0x1889e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
movq %rbx, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x20b0
leaq 0x103a8(%rip), %rsi     # 0x1889e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x23b0
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x20b0
leaq 0x16dd3(%rip), %rdi     # 0x1f2e8
leaq -0xb0(%rbp), %rsi
callq 0x155d4
movq (%rax), %rbx
leaq 0x1078d(%rip), %rsi     # 0x18cb8
leaq -0x90(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
movl (%rax), %eax
cltd
idivl %r12d
movl %eax, %ebx
leaq -0x90(%rbp), %rdi
callq 0x23c8
leaq 0x10324(%rip), %rsi     # 0x1888c
leaq -0x90(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x16d36(%rip), %rdi     # 0x1f2b8
leaq -0x90(%rbp), %rsi
callq 0x718c
movq (%rax), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1556a
movl (%rax), %r15d
leaq -0x90(%rbp), %rdi
callq 0x23c8
testl %r15d, %r15d
jne 0x87a7
leaq 0x102d3(%rip), %rsi     # 0x1888c
leaq -0x90(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x16ce5(%rip), %rdi     # 0x1f2b8
leaq -0x90(%rbp), %rsi
callq 0x718c
movq (%rax), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1556a
addl %ebx, %r14d
leal (,%r14,4), %ecx
movl %ecx, (%rax)
leaq -0x90(%rbp), %rdi
callq 0x23c8
leaq 0x16d3d(%rip), %rdi     # 0x1f348
leaq -0x70(%rbp), %rsi
callq 0x1564a
leaq -0xb0(%rbp), %rsi
movq %rax, %rdi
callq 0x2130
leaq -0x70(%rbp), %rdi
callq 0x23c8
leaq 0x1026b(%rip), %rbx     # 0x1889e
leaq -0x50(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x23b0
cmpq 0x8(%r15), %rax
jb 0x84ab
leaq 0x1022a(%rip), %rsi     # 0x1888c
leaq -0x70(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x70d8
leaq 0x16c3f(%rip), %rdi     # 0x1f2b8
leaq -0x70(%rbp), %rsi
callq 0x718c
movq (%rax), %rbx
leaq 0x1062c(%rip), %rsi     # 0x18cb8
leaq -0x90(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x70d8
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x15500
shll $0x2, %r14d
movl %r14d, (%rax)
leaq -0x90(%rbp), %rdi
callq 0x23c8
leaq -0x70(%rbp), %rdi
callq 0x23c8
leaq -0x50(%rbp), %rdi
callq 0x23c8
leaq -0xb0(%rbp), %rdi
callq 0x23c8
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16b9b(%rip), %rax     # 0x1f290
movq (%rax), %rdi
movq 0x168a9(%rip), %rax     # 0x1efa8
movq (%rax), %rdx
leaq 0x103e0(%rip), %rsi     # 0x18ae9
callq 0x2210
movq 0x168bb(%rip), %rdi     # 0x1efd0
leaq 0x10544(%rip), %rsi     # 0x18c60
callq 0x21a0
movq 0x168b0(%rip), %rbx     # 0x1efd8
movq (%rbx), %rcx
leaq 0x10535(%rip), %rdi     # 0x18c67
pushq $0xf
popq %rsi
pushq $0x1
popq %rdx
callq 0x2390
movq (%rbx), %rbx
leaq 0x1051e(%rip), %rdx     # 0x18c65
leaq -0xd8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x7295
leaq -0x90(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x726c
leaq -0x90(%rbp), %r14
movq (%r14), %rdx
leaq 0x104f5(%rip), %rsi     # 0x18c77
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2290
movq %r14, %rdi
callq 0x23c8
leaq -0xd8(%rbp), %rdi
callq 0x23c8
xorl %edi, %edi
callq 0x2240
leaq 0x16ae2(%rip), %rax     # 0x1f290
movq (%rax), %rdi
movq 0x167f0(%rip), %rax     # 0x1efa8
movq (%rax), %rdx
leaq 0x10327(%rip), %rsi     # 0x18ae9
callq 0x2210
movq 0x16802(%rip), %rdi     # 0x1efd0
leaq 0x1048b(%rip), %rsi     # 0x18c60
callq 0x21a0
jmp 0x880f
leaq 0x16aad(%rip), %rax     # 0x1f290
movq (%rax), %rdi
movq 0x167bb(%rip), %rax     # 0x1efa8
movq (%rax), %rdx
leaq 0x102f2(%rip), %rsi     # 0x18ae9
callq 0x2210
movq 0x167cd(%rip), %rdi     # 0x1efd0
leaq 0x10456(%rip), %rsi     # 0x18c60
callq 0x21a0
movq 0x167c2(%rip), %rbx     # 0x1efd8
movq (%rbx), %rcx
leaq 0x10447(%rip), %rdi     # 0x18c67
pushq $0xf
popq %rsi
pushq $0x1
popq %rdx
callq 0x2390
movq (%rbx), %rdi
movq -0x70(%rbp), %rdx
leaq 0x1043e(%rip), %rsi     # 0x18c77
xorl %eax, %eax
callq 0x2290
jmp 0x87a0
leaq 0x16a44(%rip), %rax     # 0x1f290
movq (%rax), %rdi
movq 0x16752(%rip), %rax     # 0x1efa8
movq (%rax), %rdx
leaq 0x10289(%rip), %rsi     # 0x18ae9
callq 0x2210
movq 0x16764(%rip), %rdi     # 0x1efd0
leaq 0x103ed(%rip), %rsi     # 0x18c60
callq 0x21a0
jmp 0x88ad
leaq 0x16a0f(%rip), %rax     # 0x1f290
movq (%rax), %rdi
movq 0x1671d(%rip), %rax     # 0x1efa8
movq (%rax), %rdx
leaq 0x10254(%rip), %rsi     # 0x18ae9
callq 0x2210
movq 0x1672f(%rip), %rdi     # 0x1efd0
leaq 0x103b8(%rip), %rsi     # 0x18c60
callq 0x21a0
movq 0x16724(%rip), %rbx     # 0x1efd8
movq (%rbx), %rcx
leaq 0x103a9(%rip), %rdi     # 0x18c67
pushq $0xf
popq %rsi
pushq $0x1
popq %rdx
callq 0x2390
movq (%rbx), %rdi
movq -0x50(%rbp), %rdx
jmp 0x8832
leaq 0x169b4(%rip), %rax     # 0x1f290
movq (%rax), %rdi
movq 0x166c2(%rip), %rax     # 0x1efa8
movq (%rax), %rdx
leaq 0x101f9(%rip), %rsi     # 0x18ae9
callq 0x2210
movq 0x166d4(%rip), %rdi     # 0x1efd0
leaq 0x1035d(%rip), %rsi     # 0x18c60
callq 0x21a0
movq 0x166c9(%rip), %rbx     # 0x1efd8
movq (%rbx), %rcx
leaq 0x1034e(%rip), %rdi     # 0x18c67
pushq $0xf
popq %rsi
pushq $0x1
popq %rdx
callq 0x2390
movq (%rbx), %rdi
movq 0x28(%r14), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdx
jmp 0x8832
leaq 0x16952(%rip), %rax     # 0x1f290
movq (%rax), %rdi
movq 0x16660(%rip), %rax     # 0x1efa8
movq (%rax), %rdx
leaq 0x10197(%rip), %rsi     # 0x18ae9
callq 0x2210
movq 0x16672(%rip), %rdi     # 0x1efd0
leaq 0x102fb(%rip), %rsi     # 0x18c60
callq 0x21a0
movq 0x16667(%rip), %rbx     # 0x1efd8
movq (%rbx), %rcx
leaq 0x102ec(%rip), %rdi     # 0x18c67
pushq $0xf
popq %rsi
pushq $0x1
popq %rdx
callq 0x2390
movq (%rbx), %rdi
movq -0xb0(%rbp), %rdx
leaq 0x102ff(%rip), %rsi     # 0x18c96
jmp 0x8839
jmp 0x8aaf
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8aaf
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8aaf
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8aa8
jmp 0x8aa8
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8aa8
jmp 0x8a82
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8aaf
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8a82
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8a82
jmp 0x8aa8
jmp 0x8a82
jmp 0x8a82
jmp 0x8a82
jmp 0x8aa8
jmp 0x8a82
jmp 0x8a82
jmp 0x8a87
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8a82
jmp 0x8a87
jmp 0x8a82
jmp 0x8a87
jmp 0x8aa8
jmp 0x8ad2
jmp 0x8a82
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8aa8
jmp 0x8a82
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8aa8
jmp 0x8a82
jmp 0x8aa8
jmp 0x8a82
jmp 0x8a82
jmp 0x8a87
jmp 0x8aa8
jmp 0x8a82
jmp 0x8aaf
jmp 0x8aaf
jmp 0x8ad2
jmp 0x8aaf
jmp 0x8aa8
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8a82
jmp 0x8a87
movq %rax, %rbx
jmp 0x8ae7
movq %rax, %rbx
jmp 0x8af3
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8aaf
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8aa8
jmp 0x8ad2
jmp 0x8aaf
jmp 0x8aaf
jmp 0x8aa8
jmp 0x8ad2
jmp 0x8aaf
jmp 0x8ad2
jmp 0x8ad2
movq %rax, %rbx
jmp 0x8ade
jmp 0x8aaf
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
jmp 0x8acb
jmp 0x8ad2
jmp 0x8ad2
jmp 0x8ad2
movq %rax, %rbx
leaq -0xd8(%rbp), %rdi
callq 0x23c8
jmp 0x8ad5
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x23c8
leaq -0x50(%rbp), %rdi
callq 0x23c8
leaq -0xb0(%rbp), %rdi
callq 0x23c8
movq %rbx, %rdi
callq 0x2340