// File: /workspace/github_c_makefile_star2_O0/zyearn[P]SmallC/codegen.cpp
// Function: genFT(treeNode*)
void genFT(treeNode* node)  //ÎªfunctionµÄ²ÎÊýºÍ¾Ö²¿±äÁ¿½¨Á¢symboltable
{
    int size = 0;
    if(FT[node->child[1]->child[0]->data] == 0)
    {
        FT[node->child[1]->child[0]->data] = new map<string, int>();
    }
    if(ISA[node->child[1]->child[0]->data] == 0)
    {
        ISA[node->child[1]->child[0]->data] = new map<string, int>();
    }   

    string tmp = node->child[1]->child[2]->data;
    if(tmp[tmp.length()-1] != ',')
    {   
        tmp += ",";
    }
    if(node->child[1]->child[2]->type != 3)
    {
        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((*FT[node->child[1]->child[0]->data])[s] == 0)
                (*FT[node->child[1]->child[0]->data])[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);
            }
        }
    }
    
    int localn = 0;//¼ÇÂ¼¾Ö²¿±äÁ¿µÄ¸öÊý
    tmp = node->child[2]->child[1]->data;
    if(tmp[tmp.length()-1] != ',')
    {
        tmp += ",";
    }// + ","
    if(node->child[2]->child[1]->type == 1)
    {
        while(tmp.find(",")>=0 && tmp.find(",")<tmp.length() )
        {
            // int 
            if(tmp.find(",") < tmp.find("[") && tmp.find(",") <tmp.find("|"))
            {
                localn++;   
                string s = tmp.substr(0,tmp.find(","));
                tmp.erase(0,tmp.find(","));
                tmp.erase(tmp.find(","),1);
                size++;
                if((*FT[node->child[1]->child[0]->data])[s] == 0)
                    (*FT[node->child[1]->child[0]->data])[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);
                }
            }
            // Êý×é£¬eg a[10]
            else if(tmp.find("[") < tmp.find(",") && 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());
                localn += atoi(num.c_str());
                if((*FT[node->child[1]->child[0]->data])[s] == 0)
                {
                    (*FT[node->child[1]->child[0]->data])[s] = size*4;
                    (*ISA[node->child[1]->child[0]->data])[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);
                }
            }
            //struct: |a,b,c|w| ÒÔºóÔÙËµ£¡
            /*else if(tmp.find("|") < tmp.find(",") && tmp.find("|") < tmp.find("["))
            {
                int n = tmp.find("|",1);
                int n2 = tmp.find("|",n+1);
                string t1 = tmp.substr(1,n);
                string t2 = tmp.substr(n+1,n2);
                t1
                
            }*/
            
        }
    }
    (*FT[node->child[1]->child[0]->data])["#"] = size*4;
    (*FT[node->child[1]->child[0]->data])["##"] = localn;
    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x29eb0(%rip), %rdi     # 0x3e350
callq 0x30a20
cmpq $0x0, (%rax)
jne 0x14500
movl $0x30, %edi
callq 0x3270
movq %rax, %rdi
movq %rdi, -0x120(%rbp)
xorl %esi, %esi
movl $0x30, %edx
callq 0x3170
movq -0x120(%rbp), %rdi
callq 0xff70
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x29e5f(%rip), %rdi     # 0x3e350
callq 0x30a20
movq -0x120(%rbp), %rcx
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x29e96(%rip), %rdi     # 0x3e3b0
callq 0x30a20
cmpq $0x0, (%rax)
jne 0x1457a
movl $0x30, %edi
callq 0x3270
movq %rax, %rdi
movq %rdi, -0x128(%rbp)
xorl %esi, %esi
movl $0x30, %edx
callq 0x3170
movq -0x128(%rbp), %rdi
callq 0xff70
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x29e45(%rip), %rdi     # 0x3e3b0
callq 0x30a20
movq -0x128(%rbp), %rcx
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x3150
movq -0x138(%rbp), %rdi
callq 0x33c0
movq -0x138(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x34e0
movq %rax, -0x130(%rbp)
jmp 0x145c5
movq -0x130(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
je 0x145f9
leaq 0x21373(%rip), %rsi     # 0x3594e
leaq -0x30(%rbp), %rdi
callq 0x3240
jmp 0x145e6
jmp 0x145f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x15220
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rax
cmpl $0x3, 0x24(%rax)
je 0x148a3
jmp 0x14619
leaq -0x30(%rbp), %rdi
leaq 0x2132a(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x139(%rbp)
jb 0x14678
leaq -0x30(%rbp), %rdi
leaq 0x21305(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x148(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x33c0
movq %rax, %rcx
movq -0x148(%rbp), %rax
cmpq %rcx, %rax
setb %al
movb %al, -0x139(%rbp)
movb -0x139(%rbp), %al
testb $0x1, %al
jne 0x14687
jmp 0x148a1
leaq 0x212c0(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x150(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x34d0
movq -0x158(%rbp), %rsi
movq -0x150(%rbp), %rdx
movq %rax, %rcx
leaq -0x60(%rbp), %rdi
callq 0x3290
jmp 0x146c5
leaq 0x21282(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x160(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x34d0
movq -0x168(%rbp), %rdi
movq -0x160(%rbp), %rsi
movq %rax, %rdx
callq 0x30d0
jmp 0x146ff
leaq 0x21248(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
leaq -0x30(%rbp), %rdi
movq %rdi, -0x170(%rbp)
callq 0x34d0
movq -0x170(%rbp), %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0x30d0
jmp 0x14730
movl -0xc(%rbp), %eax
incl %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x29bfe(%rip), %rdi     # 0x3e350
callq 0x30a20
movq %rax, -0x178(%rbp)
jmp 0x14760
movq -0x178(%rbp), %rax
movq (%rax), %rdi
leaq -0x60(%rbp), %rsi
callq 0x30940
movq %rax, -0x180(%rbp)
jmp 0x1477c
movq -0x180(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x14806
movl -0xc(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x18c(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x29ba2(%rip), %rdi     # 0x3e350
callq 0x30a20
movq %rax, -0x188(%rbp)
jmp 0x147bc
movq -0x188(%rbp), %rax
movq (%rax), %rdi
leaq -0x60(%rbp), %rsi
callq 0x30940
movq %rax, -0x198(%rbp)
jmp 0x147d8
movq -0x198(%rbp), %rax
movl -0x18c(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x14893
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x34f8
jmp 0x15220
leaq 0x29b1b(%rip), %rdi     # 0x3e328
callq 0x3140
movq %rax, %rdi
movq 0x29784(%rip), %rax     # 0x3dfa0
movq (%rax), %rdx
leaq 0x213df(%rip), %rsi     # 0x35c05
callq 0x32e0
jmp 0x1482d
movq 0x2979c(%rip), %rdi     # 0x3dfd0
leaq 0x21535(%rip), %rsi     # 0x35d70
callq 0x3250
jmp 0x14842
movq 0x2978f(%rip), %rax     # 0x3dfd8
movq (%rax), %rdi
leaq 0x21524(%rip), %rsi     # 0x35d77
movb $0x0, %al
callq 0x3390
movq 0x29777(%rip), %rax     # 0x3dfd8
movq (%rax), %rax
movq %rax, -0x1a0(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x3140
movq -0x1a0(%rbp), %rdi
movq %rax, %rdx
leaq 0x21502(%rip), %rsi     # 0x35d87
movb $0x0, %al
callq 0x3390
xorl %edi, %edi
callq 0x3340
leaq -0x60(%rbp), %rdi
callq 0x34f8
jmp 0x14619
jmp 0x148a3
movl $0x0, -0x64(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x30(%rbp), %rdi
callq 0x3050
jmp 0x148c9
leaq -0x30(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x33c0
movq -0x1b0(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x34e0
movq %rax, -0x1a8(%rbp)
jmp 0x148f4
movq -0x1a8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
je 0x14917
leaq 0x21044(%rip), %rsi     # 0x3594e
leaq -0x30(%rbp), %rdi
callq 0x3240
jmp 0x14915
jmp 0x14917
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x1, 0x24(%rax)
jne 0x1503d
jmp 0x14937
leaq -0x30(%rbp), %rdi
leaq 0x2100c(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x1b1(%rbp)
jb 0x14996
leaq -0x30(%rbp), %rdi
leaq 0x20fe7(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x1c0(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x33c0
movq %rax, %rcx
movq -0x1c0(%rbp), %rax
cmpq %rcx, %rax
setb %al
movb %al, -0x1b1(%rbp)
movb -0x1b1(%rbp), %al
testb $0x1, %al
jne 0x149a5
jmp 0x1503b
leaq -0x30(%rbp), %rdi
leaq 0x20f9e(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x1c8(%rbp)
leaq -0x30(%rbp), %rdi
leaq 0x20f8c(%rip), %rsi     # 0x35957
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, %rcx
movq -0x1c8(%rbp), %rax
cmpq %rcx, %rax
jae 0x14c61
leaq -0x30(%rbp), %rdi
leaq 0x20f5c(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x1d0(%rbp)
leaq -0x30(%rbp), %rdi
leaq 0x21055(%rip), %rsi     # 0x35a62
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, %rcx
movq -0x1d0(%rbp), %rax
cmpq %rcx, %rax
jae 0x14c61
movl -0x64(%rbp), %eax
incl %eax
movl %eax, -0x64(%rbp)
leaq 0x20f16(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x1d8(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x34d0
movq -0x1e0(%rbp), %rsi
movq -0x1d8(%rbp), %rdx
movq %rax, %rcx
leaq -0x88(%rbp), %rdi
callq 0x3290
jmp 0x14a72
leaq 0x20ed5(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x1e8(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x34d0
movq -0x1f0(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
movq %rax, %rdx
callq 0x30d0
jmp 0x14aac
leaq 0x20e9b(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
leaq -0x30(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
callq 0x34d0
movq -0x1f8(%rbp), %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0x30d0
jmp 0x14add
movl -0xc(%rbp), %eax
incl %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x29851(%rip), %rdi     # 0x3e350
callq 0x30a20
movq %rax, -0x200(%rbp)
jmp 0x14b0d
movq -0x200(%rbp), %rax
movq (%rax), %rdi
leaq -0x88(%rbp), %rsi
callq 0x30940
movq %rax, -0x208(%rbp)
jmp 0x14b2c
movq -0x208(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x14bc0
movl -0xc(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x214(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x297ee(%rip), %rdi     # 0x3e350
callq 0x30a20
movq %rax, -0x210(%rbp)
jmp 0x14b70
movq -0x210(%rbp), %rax
movq (%rax), %rdi
leaq -0x88(%rbp), %rsi
callq 0x30940
movq %rax, -0x220(%rbp)
jmp 0x14b8f
movq -0x220(%rbp), %rax
movl -0x214(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x14c50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x34f8
jmp 0x15220
leaq 0x29761(%rip), %rdi     # 0x3e328
callq 0x3140
movq %rax, %rdi
movq 0x293ca(%rip), %rax     # 0x3dfa0
movq (%rax), %rdx
leaq 0x21025(%rip), %rsi     # 0x35c05
callq 0x32e0
jmp 0x14be7
movq 0x293e2(%rip), %rdi     # 0x3dfd0
leaq 0x2117b(%rip), %rsi     # 0x35d70
callq 0x3250
jmp 0x14bfc
movq 0x293d5(%rip), %rax     # 0x3dfd8
movq (%rax), %rdi
leaq 0x2116a(%rip), %rsi     # 0x35d77
movb $0x0, %al
callq 0x3390
movq 0x293bd(%rip), %rax     # 0x3dfd8
movq (%rax), %rax
movq %rax, -0x228(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x3140
movq -0x228(%rbp), %rdi
movq %rax, %rdx
leaq 0x21145(%rip), %rsi     # 0x35d87
movb $0x0, %al
callq 0x3390
xorl %edi, %edi
callq 0x3340
leaq -0x88(%rbp), %rdi
callq 0x34f8
jmp 0x15036
leaq -0x30(%rbp), %rdi
leaq 0x20ceb(%rip), %rsi     # 0x35957
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x230(%rbp)
leaq -0x30(%rbp), %rdi
leaq 0x20cc7(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, %rcx
movq -0x230(%rbp), %rax
cmpq %rcx, %rax
jae 0x15034
leaq -0x30(%rbp), %rdi
leaq 0x20ca9(%rip), %rsi     # 0x35957
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, -0x238(%rbp)
leaq -0x30(%rbp), %rdi
leaq 0x20d99(%rip), %rsi     # 0x35a62
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq %rax, %rcx
movq -0x238(%rbp), %rax
cmpq %rcx, %rax
jae 0x15034
leaq 0x20c6b(%rip), %rsi     # 0x35957
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x240(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x248(%rbp)
callq 0x34d0
movq -0x248(%rbp), %rsi
movq -0x240(%rbp), %rdx
movq %rax, %rcx
leaq -0xa8(%rbp), %rdi
callq 0x3290
jmp 0x14d26
leaq 0x20c2a(%rip), %rsi     # 0x35957
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x260(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x34d0
movq -0x260(%rbp), %rdx
movq -0x258(%rbp), %rdi
incq %rax
movq %rax, -0x250(%rbp)
leaq 0x20bf2(%rip), %rsi     # 0x35959
callq 0x34d0
movq -0x258(%rbp), %rsi
movq -0x250(%rbp), %rdx
movq %rax, %rcx
leaq -0xc8(%rbp), %rdi
callq 0x3290
jmp 0x14d8b
leaq 0x20bbc(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x268(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x34d0
movq -0x270(%rbp), %rdi
movq -0x268(%rbp), %rsi
movq %rax, %rdx
callq 0x30d0
jmp 0x14dc5
leaq 0x20b82(%rip), %rsi     # 0x3594e
xorl %eax, %eax
movl %eax, %edx
leaq -0x30(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x34d0
movq -0x278(%rbp), %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0x30d0
jmp 0x14df6
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x3140
movq %rax, %rdi
callq 0x33e0
movq -0x288(%rbp), %rdi
movl %eax, %ecx
movl -0xc(%rbp), %eax
addl %ecx, %eax
movl %eax, -0xc(%rbp)
callq 0x3140
movq %rax, %rdi
callq 0x33e0
movl %eax, %ecx
movl -0x64(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x64(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x294fd(%rip), %rdi     # 0x3e350
callq 0x30a20
movq %rax, -0x280(%rbp)
jmp 0x14e61
movq -0x280(%rbp), %rax
movq (%rax), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x30940
movq %rax, -0x290(%rbp)
jmp 0x14e80
movq -0x290(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x14f79
movl -0xc(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x29c(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x2949a(%rip), %rdi     # 0x3e350
callq 0x30a20
movq %rax, -0x298(%rbp)
jmp 0x14ec4
movq -0x298(%rbp), %rax
movq (%rax), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x30940
movq %rax, -0x2a8(%rbp)
jmp 0x14ee3
movq -0x2a8(%rbp), %rax
movl -0x29c(%rbp), %ecx
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x294a4(%rip), %rdi     # 0x3e3b0
callq 0x30a20
movq %rax, -0x2b0(%rbp)
jmp 0x14f1a
movq -0x2b0(%rbp), %rax
movq (%rax), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x30940
movq %rax, -0x2b8(%rbp)
jmp 0x14f39
movq -0x2b8(%rbp), %rax
movl $0x1, (%rax)
jmp 0x15009
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x15023
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x34f8
jmp 0x15023
leaq 0x293a8(%rip), %rdi     # 0x3e328
callq 0x3140
movq %rax, %rdi
movq 0x29011(%rip), %rax     # 0x3dfa0
movq (%rax), %rdx
leaq 0x20c6c(%rip), %rsi     # 0x35c05
callq 0x32e0
jmp 0x14fa0
movq 0x29029(%rip), %rdi     # 0x3dfd0
leaq 0x20dc2(%rip), %rsi     # 0x35d70
callq 0x3250
jmp 0x14fb5
movq 0x2901c(%rip), %rax     # 0x3dfd8
movq (%rax), %rdi
leaq 0x20db1(%rip), %rsi     # 0x35d77
movb $0x0, %al
callq 0x3390
movq 0x29004(%rip), %rax     # 0x3dfd8
movq (%rax), %rax
movq %rax, -0x2c0(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x3140
movq -0x2c0(%rbp), %rdi
movq %rax, %rdx
leaq 0x20d8c(%rip), %rsi     # 0x35d87
movb $0x0, %al
callq 0x3390
xorl %edi, %edi
callq 0x3340
leaq -0xc8(%rbp), %rdi
callq 0x34f8
leaq -0xa8(%rbp), %rdi
callq 0x34f8
jmp 0x15034
leaq -0xa8(%rbp), %rdi
callq 0x34f8
jmp 0x15220
jmp 0x15036
jmp 0x14937
jmp 0x1503d
movl -0xc(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x2cc(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x292ed(%rip), %rdi     # 0x3e350
callq 0x30a20
movq %rax, -0x2c8(%rbp)
jmp 0x15071
movq -0x2c8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x2e0(%rbp)
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x3460
movq -0x2d8(%rbp), %rdx
leaq 0x20d25(%rip), %rsi     # 0x35dc8
leaq -0xe8(%rbp), %rdi
callq 0xfd00
jmp 0x150b1
movq -0x2e0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x30860
movq %rax, -0x2e8(%rbp)
jmp 0x150cd
movq -0x2e8(%rbp), %rax
movl -0x2cc(%rbp), %ecx
movl %ecx, (%rax)
leaq -0xe8(%rbp), %rdi
callq 0x34f8
leaq -0xe9(%rbp), %rdi
callq 0x32f0
movl -0x64(%rbp), %eax
movl %eax, -0x2f4(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rsi
leaq 0x29239(%rip), %rdi     # 0x3e350
callq 0x30a20
movq %rax, -0x2f0(%rbp)
jmp 0x15125
movq -0x2f0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x308(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x3460
movq -0x300(%rbp), %rdx
leaq 0x20c70(%rip), %rsi     # 0x35dc7
leaq -0x110(%rbp), %rdi
callq 0xfd00
jmp 0x15165
movq -0x308(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x30860
movq %rax, -0x310(%rbp)
jmp 0x15181
movq -0x310(%rbp), %rax
movl -0x2f4(%rbp), %ecx
movl %ecx, (%rax)
leaq -0x110(%rbp), %rdi
callq 0x34f8
leaq -0x111(%rbp), %rdi
callq 0x32f0
leaq -0x30(%rbp), %rdi
callq 0x34f8
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x151e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x34f8
leaq -0xe9(%rbp), %rdi
callq 0x32f0
jmp 0x15220
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x15214
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x34f8
leaq -0x111(%rbp), %rdi
callq 0x32f0
leaq -0x30(%rbp), %rdi
callq 0x34f8
movq -0x38(%rbp), %rdi
callq 0x3450
nopw %cs:(%rax,%rax)