// File: tap3edit[P]tap3xml/Asn.cpp
// Function: Asn::_compile_tree(tagtype_s*, treenode*)
long Asn::_compile_tree(tagtype_s *tagtype, treenode *tree)
{

    vector<tagelem_s *>*            tagtype_ch;
    vector<treenode *>::iterator    vii;
    vector<tagelem_s *>::iterator   vjj;
    long                            tot_size=0;
    extern map<string, int>         simpletypes_map;
    extern map<int, enc_dec_funcs>  simpletypes;
    AsnItem*                        asnitem;
    bool                            found=false;
    tagtype_s*                      tagtype_pa;
    int                             encoded_size;

    asnitem=new AsnItem();


    /* 1. CHOICE */

    if (tagtype->action==choice)
    {
        if (tree->tag_d != -2)
        {
            if (tree->children!=NULL)
            {

                /* 1.1. We got a fresh CHOICE */

                for (vii=tree->children->begin();vii!=tree->children->end();vii++)
                {
                    tagtype_ch=tagtype->children;

                    if (tagtype_ch!=NULL)
                    {
                        found=false;
                        for (vjj=tagtype_ch->begin();vjj!=tagtype_ch->end();vjj++)
                        {

                            if ( (*vii)->tagname == (*vjj)->elem_name )
                            {
                                (*vii)->tag_d=(*vjj)->elem_type_p->tagid;
                                (*vii)->pc=1;
                                tot_size+=_compile_tree((*vjj)->elem_type_p,(*vii));
                                found=true;
                                break;
                            }
                            else
                            {
                                if ( (*vjj)->elem_type_p->action == choice && !(*vjj)->elem_type_p->tagid)
                                {
                                    /* Could be CHOICE */

                                    (*vii)->tag_d=-2;
                                    tot_size+=_compile_tree((*vjj)->elem_type_p,(*vii));

                                    if ((*vii)->tag_d != -2)
                                        found=true;
                                    else
                                        (*vii)->tag_d=0;
                                }
                            }
                        }
                        if (!found)
                        {
                            cerr << "Error. " << (*vii)->tagname << " not found in specification";
                            err_trace(__FILE__, __LINE__);
                        }
                    }
                    else
                    {
                        cerr << "Error. " << tagtype->type_name << "  without children in tree specification";
                        err_trace(__FILE__, __LINE__);
                    }
                }
            }
            else 
            {
                cerr << "Error. \"" << tree->tagname << "\" (CHOICE) has no children";
                err_trace(__FILE__, __LINE__);
            }
        }
        else
        {
            /* 1.2. We are still analysing previous CHOICE */

            tagtype_ch=tagtype->children;

            if (tagtype_ch!=NULL)
            {
                found=false;
                for (vjj=tagtype_ch->begin();vjj!=tagtype_ch->end();vjj++)
                {

                    if ( tree->tagname == (*vjj)->elem_name )
                    {
                        tree->tag_d=(*vjj)->elem_type_p->tagid;
                        tree->pc=1;
                        tot_size+=_compile_tree((*vjj)->elem_type_p,tree);
                        found=true;
                        break;
                    }
                    else
                    {
                        /* Could be CHOICE */

                        if ( (*vjj)->elem_type_p->action == choice && !(*vjj)->elem_type_p->tagid)
                        {
                            tree->tag_d=-2;
                            tot_size+=_compile_tree((*vjj)->elem_type_p,tree);

                            if (tree->tag_d != -2)
                                found=true;
                        }
                    }
                }

            }
            else
            {
                cerr << "Error. " << tagtype->type_name << "  without children in tree specification";
                err_trace(__FILE__, __LINE__);
            }

            delete asnitem; 
            asnitem = NULL;
            return tot_size;
        }
    }


    /* SEQUENCE */

    if (tagtype->action==sequence)
    {

        tagtype_ch=tagtype->children;
        if (tagtype_ch==NULL)
        {
            cerr << "Error. \"" << tagtype->type_name << "\"  without children in tree specification";
            err_trace(__FILE__, __LINE__);
        }

        if (tree->children!=NULL)
        {
            vjj=tagtype_ch->begin();

            for (vii=tree->children->begin();vii!=tree->children->end();vii++)
            {
                found=false;
                while (vjj!=tagtype_ch->end() && !found)
                {

                    if ( (*vii)->tagname == (*vjj)->elem_name )
                    {
                        (*vii)->tag_d=(*vjj)->elem_type_p->tagid;
                        (*vii)->pc=1;
                        tot_size+=_compile_tree((*vjj)->elem_type_p,(*vii));
                        found=true;
                    }
                    else
                    {
                        if ( (*vjj)->elem_type_p == NULL )
                        {
                            cerr << "Error. Specification incomplete. Type not found for \"" << (*vjj)->elem_name << "\"";
                            err_trace(__FILE__, __LINE__);
                        }

                        if ( (*vjj)->elem_type_p->action == choice && !(*vjj)->elem_type_p->tagid)
                        {
                            (*vii)->tag_d=-2;
                            tot_size+=_compile_tree((*vjj)->elem_type_p,(*vii));

                            if ( (*vii)->tag_d!=-2 )
                                found=true;
                            else
                                (*vii)->tag_d=0;
                                
                        } 

                        if ( !found && !(*vjj)->optional )
                        {
                            cerr << "Error. Expected in tree: " << (*vjj)->elem_name << " found: " << (*vii)->tagname;
                            err_trace(__FILE__, __LINE__);
                        }
                    }
                    vjj++;
                }
                if (!found)
                {
                    cerr << "Error. " << (*vii)->tagname << " not found in specification";
                    err_trace(__FILE__, __LINE__);
                }
            }
            for (;vjj!=tagtype_ch->end();vjj++)
            {
                if ( (*vjj)->optional == false )
                {
                    cerr << "Error. Expected in tree: " << (*vjj)->elem_name << " found: " << (*vii)->tagname;
                    err_trace(__FILE__, __LINE__);
                }
            }
        }
        else
        {
            for (vjj=tagtype_ch->begin();vjj!=tagtype_ch->end();vjj++)
            {
                if ((*vjj)->elem_type_p==NULL)
                {
                    cerr << "Error. Type for \"" << (*vjj)->elem_name << "\" not found in the specification";
                    err_trace(__FILE__, __LINE__);
                }

                if (!(*vjj)->optional)
                {
                    cerr << "Error. Expected \"" << (*vjj)->elem_name << "\" under \"" << tree->tagname << "\"";
                    err_trace(__FILE__, __LINE__);
                }
            }


            /* Tag is composed but empty */

            asnitem->tree(tree);

            tree->pc=1;
            tree->size_d=0;

            encoded_size=asnitem->encode(0).size();
            delete asnitem; 
            asnitem = NULL;
            return encoded_size;
        }
    }


    /* SEQUENCE OF */

    if (tagtype->action==sequenceof)
    {
        if (tree->children!=NULL)
        {
            for (vii=tree->children->begin();vii!=tree->children->end();vii++)
            {
                tagtype_ch=tagtype->children;

                if (tagtype_ch==NULL || tagtype_ch->size()>1)
                {
                    cerr << "Error. " << tagtype->type_name << " (SEQUENCE OF) without or with many children in specification";
                    err_trace(__FILE__, __LINE__);
                }

                tagtype_pa=(*tagtype->children)[0]->elem_type_p;

                if (tagtype_pa->action==choice && !tagtype_pa->tagid)
                    tagtype_ch=tagtype_pa->children;

                found=false;
                if (tagtype_ch!=NULL)
                {
                    for (vjj=tagtype_ch->begin();vjj!=tagtype_ch->end();vjj++)
                    {

                        if ( (*vii)->tagname == (*vjj)->elem_name )
                        {
                            (*vii)->tag_d=(*vjj)->elem_type_p->tagid;
                            (*vii)->pc=1;
                            tot_size+=_compile_tree((*vjj)->elem_type_p,(*vii));
                            found=true;
                            break;
                        }
                    }
                }
                else
                {
                    if (tagtype_pa->action==simpletype)
                    {
                        if ( (*vii)->tagname == (*tagtype->children)[0]->elem_name )
                        {
                            (*vii)->tag_d=tagtype_pa->tagid;
                            (*vii)->pc=0;
                            tot_size+=_compile_tree(tagtype_pa,(*vii));
                            found=true;
                            break;
                        }
                    }
                    else
                    {
                        cerr << "Error. " << tagtype_pa->type_name << "  without children in tree specification";
                        err_trace(__FILE__, __LINE__);
                    }
                }
                if (!found)
                {
                    cerr     << "Error. " << tree->tagname <<"("<< tree->tag_d<<")->" 
                        << (*vii)->tagname << " not found in specification under " 
                        << tagtype->type_name << "(" << tagtype->tagid << ")";
                    if (tagtype_pa->action==choice && !tagtype_pa->tagid)
                        cerr     << "->" << tagtype_pa->type_name << "("<<tagtype_pa->tagid<<")";
                    err_trace(__FILE__, __LINE__);
                }
            }
        }
        else
        {
            /* Tag is composed but empty */

            asnitem->tree(tree);

            tree->pc=1;
            tree->size_d=0;

            encoded_size=asnitem->encode(0).size();
            delete asnitem; 
            asnitem = NULL;
            return encoded_size;
        }
    }


    /* SIMPLE TYPE */

    if (tagtype->action==simpletype)
    {
        if (tree->children==NULL)
        {
            asnitem->tree(tree);

            tree->pc=0;
            tree->type=simpletypes_map[tagtype->type_type];
            tree->size_d=(*simpletypes[tree->type].encode)(*tree->value).size();

            encoded_size=asnitem->encode(0).size();
            delete asnitem; 
            asnitem = NULL;
            return encoded_size;
        }
        else
        {
            cerr << "Error. \"" << tree->tagname << "\" expected to be a simple type but got children";
            err_trace(__FILE__, __LINE__);
        }
    }


    tree->size_d=tot_size;

    asnitem->tree(tree);
    encoded_size=asnitem->encode(0).size();
    delete asnitem; 
    asnitem = NULL;
    return tree->size_d+encoded_size;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5c0, %rsp            # imm = 0x5C0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x450(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xacf0
leaq -0x38(%rbp), %rdi
callq 0x1edd0
movq $0x0, -0x40(%rbp)
movb $0x0, -0x49(%rbp)
movl $0x48, %edi
callq 0x4360
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x448(%rbp)
callq 0x20da0
jmp 0x1c41e
movq -0x448(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x1cbc7
movq -0x20(%rbp), %rax
cmpl $-0x2, 0x24(%rax)
je 0x1c94f
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
je 0x1c87d
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xaef0
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xaf60
movq %rax, -0x80(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xaf20
testb $0x1, %al
jne 0x1c494
jmp 0x1c878
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1c792
movb $0x0, -0x49(%rbp)
movq -0x28(%rbp), %rdi
callq 0x10a10
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
callq 0x108a0
movq %rax, -0x90(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x1edf0
testb $0x1, %al
jne 0x1c4f3
jmp 0x1c6a3
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movq %rax, -0x458(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x458(%rbp), %rdi
movq (%rax), %rsi
callq 0xabc0
testb $0x1, %al
jne 0x1c527
jmp 0x1c5da
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movl 0x40(%rax), %eax
movl %eax, -0x464(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movl -0x464(%rbp), %ecx
movq (%rax), %rax
movl %ecx, 0x24(%rax)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movw 0x20(%rax), %cx
andw $-0x5, %cx
orw $0x4, %cx
movw %cx, 0x20(%rax)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movq %rax, -0x460(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x450(%rbp), %rdi
movq -0x460(%rbp), %rsi
movq (%rax), %rdx
callq 0x1c3c0
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movb $0x1, -0x49(%rbp)
jmp 0x1c6a3
movq -0x448(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
movl $0x48, %esi
callq 0x4370
jmp 0x1dfde
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x44(%rax)
jne 0x1c688
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x40(%rax)
jne 0x1c688
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movl $0xfffffffe, 0x24(%rax) # imm = 0xFFFFFFFE
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movq %rax, -0x470(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x450(%rbp), %rdi
movq -0x470(%rbp), %rsi
movq (%rax), %rdx
callq 0x1c3c0
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
cmpl $-0x2, 0x24(%rax)
je 0x1c673
movb $0x1, -0x49(%rbp)
jmp 0x1c686
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movl $0x0, 0x24(%rax)
jmp 0x1c688
jmp 0x1c68a
jmp 0x1c68c
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
callq 0x1ee50
movq %rax, -0x98(%rbp)
jmp 0x1c4ca
testb $0x1, -0x49(%rbp)
jne 0x1c78d
movq 0x14934(%rip), %rdi     # 0x30fe8
leaq 0x980d(%rip), %rsi      # 0x25ec8
callq 0x4340
movq %rax, -0x480(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x480(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x97e7(%rip), %rsi      # 0x25ed0
callq 0x4340
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x46e0
movq -0x478(%rbp), %rdx
leaq 0x9584(%rip), %rsi      # 0x25c93
leaq -0xb8(%rbp), %rdi
callq 0x7670
jmp 0x1c71d
movl $0x454, -0xc0(%rbp)     # imm = 0x454
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x151c0
jmp 0x1c73c
leaq -0xb8(%rbp), %rdi
callq 0x41e0
leaq -0xb9(%rbp), %rdi
callq 0x43d0
jmp 0x1c78d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1c77c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x41e0
leaq -0xb9(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1c85f
movq 0x1484f(%rip), %rdi     # 0x30fe8
leaq 0x9728(%rip), %rsi      # 0x25ec8
callq 0x4340
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x9756(%rip), %rsi      # 0x25f11
callq 0x4340
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x488(%rbp)
callq 0x46e0
movq -0x488(%rbp), %rdx
leaq 0x94b2(%rip), %rsi      # 0x25c93
leaq -0xe0(%rbp), %rdi
callq 0x7670
jmp 0x1c7ef
movl $0x45a, -0xe8(%rbp)     # imm = 0x45A
leaq -0xe0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x151c0
jmp 0x1c80e
leaq -0xe0(%rbp), %rdi
callq 0x41e0
leaq -0xe1(%rbp), %rdi
callq 0x43d0
jmp 0x1c85f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1c84e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x41e0
leaq -0xe1(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1c861
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
callq 0xafb0
movq %rax, -0xf0(%rbp)
jmp 0x1c46d
jmp 0x1c94a
movq 0x14764(%rip), %rdi     # 0x30fe8
leaq 0x9661(%rip), %rsi      # 0x25eec
callq 0x4340
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x964f(%rip), %rsi      # 0x25ef5
callq 0x4340
leaq -0x111(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x46e0
movq -0x490(%rbp), %rdx
leaq 0x93c7(%rip), %rsi      # 0x25c93
leaq -0x110(%rbp), %rdi
callq 0x7670
jmp 0x1c8da
movl $0x461, -0x118(%rbp)    # imm = 0x461
leaq -0x110(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x151c0
jmp 0x1c8f9
leaq -0x110(%rbp), %rdi
callq 0x41e0
leaq -0x111(%rbp), %rdi
callq 0x43d0
jmp 0x1c94a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1c939
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x41e0
leaq -0x111(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1cbc5
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1cac5
movb $0x0, -0x49(%rbp)
movq -0x28(%rbp), %rdi
callq 0x10a10
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
callq 0x108a0
movq %rax, -0x128(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x1edf0
testb $0x1, %al
jne 0x1c9ae
jmp 0x1cac0
movq -0x20(%rbp), %rax
movq %rax, -0x498(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x498(%rbp), %rdi
movq (%rax), %rsi
callq 0xabc0
testb $0x1, %al
jne 0x1c9d7
jmp 0x1ca36
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movl 0x40(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x20(%rbp), %rax
movw 0x20(%rax), %cx
andw $-0x5, %cx
orw $0x4, %cx
movw %cx, 0x20(%rax)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x450(%rbp), %rdi
movq (%rax), %rax
movq 0x48(%rax), %rsi
movq -0x20(%rbp), %rdx
callq 0x1c3c0
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movb $0x1, -0x49(%rbp)
jmp 0x1cac0
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x44(%rax)
jne 0x1caa5
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x40(%rax)
jne 0x1caa5
movq -0x20(%rbp), %rax
movl $0xfffffffe, 0x24(%rax) # imm = 0xFFFFFFFE
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x450(%rbp), %rdi
movq (%rax), %rax
movq 0x48(%rax), %rsi
movq -0x20(%rbp), %rdx
callq 0x1c3c0
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rax
cmpl $-0x2, 0x24(%rax)
je 0x1caa3
movb $0x1, -0x49(%rbp)
jmp 0x1caa5
jmp 0x1caa7
jmp 0x1caa9
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
callq 0x1ee50
movq %rax, -0x130(%rbp)
jmp 0x1c985
jmp 0x1cb92
movq 0x1451c(%rip), %rdi     # 0x30fe8
leaq 0x93f5(%rip), %rsi      # 0x25ec8
callq 0x4340
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x9423(%rip), %rsi      # 0x25f11
callq 0x4340
leaq -0x151(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0x46e0
movq -0x4a0(%rbp), %rdx
leaq 0x917f(%rip), %rsi      # 0x25c93
leaq -0x150(%rbp), %rdi
callq 0x7670
jmp 0x1cb22
movl $0x48b, -0x158(%rbp)    # imm = 0x48B
leaq -0x150(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x151c0
jmp 0x1cb41
leaq -0x150(%rbp), %rdi
callq 0x41e0
leaq -0x151(%rbp), %rdi
callq 0x43d0
jmp 0x1cb92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1cb81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x41e0
leaq -0x151(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
movq -0x48(%rbp), %rax
movq %rax, -0x4a8(%rbp)
cmpq $0x0, %rax
je 0x1cbb0
movq -0x4a8(%rbp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movq $0x0, -0x48(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1dfd1
jmp 0x1cbc7
movq -0x18(%rbp), %rax
cmpl $0x1, 0x44(%rax)
jne 0x1d67e
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1ccb9
movq 0x143f5(%rip), %rdi     # 0x30fe8
leaq 0x92f2(%rip), %rsi      # 0x25eec
callq 0x4340
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x92fb(%rip), %rsi      # 0x25f10
callq 0x4340
leaq -0x179(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
callq 0x46e0
movq -0x4b0(%rbp), %rdx
leaq 0x9058(%rip), %rsi      # 0x25c93
leaq -0x178(%rbp), %rdi
callq 0x7670
jmp 0x1cc49
movl $0x49e, -0x180(%rbp)    # imm = 0x49E
leaq -0x178(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x151c0
jmp 0x1cc68
leaq -0x178(%rbp), %rdi
callq 0x41e0
leaq -0x179(%rbp), %rdi
callq 0x43d0
jmp 0x1ccb9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1cca8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x41e0
leaq -0x179(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
je 0x1d388
movq -0x28(%rbp), %rdi
callq 0x10a10
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xaef0
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xaf60
movq %rax, -0x198(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xaf20
testb $0x1, %al
jne 0x1cd2f
jmp 0x1d223
movb $0x0, -0x49(%rbp)
movq -0x28(%rbp), %rdi
callq 0x108a0
movq %rax, -0x1a0(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x1edf0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x4b1(%rbp)
jne 0x1cd64
jmp 0x1cd6f
movb -0x49(%rbp), %al
xorb $-0x1, %al
movb %al, -0x4b1(%rbp)
movb -0x4b1(%rbp), %al
testb $0x1, %al
jne 0x1cd7e
jmp 0x1d120
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movq %rax, -0x4c0(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x4c0(%rbp), %rdi
movq (%rax), %rsi
callq 0xabc0
testb $0x1, %al
jne 0x1cdb2
jmp 0x1ce43
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movl 0x40(%rax), %eax
movl %eax, -0x4cc(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movl -0x4cc(%rbp), %ecx
movq (%rax), %rax
movl %ecx, 0x24(%rax)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movw 0x20(%rax), %cx
andw $-0x5, %cx
orw $0x4, %cx
movw %cx, 0x20(%rax)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movq %rax, -0x4c8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x450(%rbp), %rdi
movq -0x4c8(%rbp), %rsi
movq (%rax), %rdx
callq 0x1c3c0
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movb $0x1, -0x49(%rbp)
jmp 0x1d109
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
cmpq $0x0, 0x48(%rax)
jne 0x1cf3a
movq 0x14187(%rip), %rdi     # 0x30fe8
leaq 0x8f28(%rip), %rsi      # 0x25d90
callq 0x4340
movq %rax, -0x4e0(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x4e0(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x905d(%rip), %rsi      # 0x25ef3
callq 0x4340
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x46e0
movq -0x4d8(%rbp), %rdx
leaq 0x8dd7(%rip), %rsi      # 0x25c93
leaq -0x1c0(%rbp), %rdi
callq 0x7670
jmp 0x1ceca
movl $0x4b7, -0x1c8(%rbp)    # imm = 0x4B7
leaq -0x1c0(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x151c0
jmp 0x1cee9
leaq -0x1c0(%rbp), %rdi
callq 0x41e0
leaq -0x1c1(%rbp), %rdi
callq 0x43d0
jmp 0x1cf3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1cf29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x41e0
leaq -0x1c1(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x44(%rax)
jne 0x1cfe8
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x40(%rax)
jne 0x1cfe8
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movl $0xfffffffe, 0x24(%rax) # imm = 0xFFFFFFFE
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movq %rax, -0x4e8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x450(%rbp), %rdi
movq -0x4e8(%rbp), %rsi
movq (%rax), %rdx
callq 0x1c3c0
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
cmpl $-0x2, 0x24(%rax)
je 0x1cfd3
movb $0x1, -0x49(%rbp)
jmp 0x1cfe6
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movl $0x0, 0x24(%rax)
jmp 0x1cfe8
testb $0x1, -0x49(%rbp)
jne 0x1d107
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
testb $0x1, 0x40(%rax)
jne 0x1d107
movq 0x13fd9(%rip), %rdi     # 0x30fe8
leaq 0x8f24(%rip), %rsi      # 0x25f3a
callq 0x4340
movq %rax, -0x500(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x500(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x8f10(%rip), %rsi      # 0x25f54
callq 0x4340
movq %rax, -0x4f8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x4f8(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x46e0
movq -0x4f0(%rbp), %rdx
leaq 0x8c0a(%rip), %rsi      # 0x25c93
leaq -0x1e8(%rbp), %rdi
callq 0x7670
jmp 0x1d097
movl $0x4c9, -0x1f0(%rbp)    # imm = 0x4C9
leaq -0x1e8(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x151c0
jmp 0x1d0b6
leaq -0x1e8(%rbp), %rdi
callq 0x41e0
leaq -0x1e9(%rbp), %rdi
callq 0x43d0
jmp 0x1d107
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d0f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x41e0
leaq -0x1e9(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1d109
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
callq 0x1ee50
movq %rax, -0x1f8(%rbp)
jmp 0x1cd33
testb $0x1, -0x49(%rbp)
jne 0x1d20a
movq 0x13eb7(%rip), %rdi     # 0x30fe8
leaq 0x8d90(%rip), %rsi      # 0x25ec8
callq 0x4340
movq %rax, -0x510(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x510(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x8d6a(%rip), %rsi      # 0x25ed0
callq 0x4340
leaq -0x219(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x46e0
movq -0x508(%rbp), %rdx
leaq 0x8b07(%rip), %rsi      # 0x25c93
leaq -0x218(%rbp), %rdi
callq 0x7670
jmp 0x1d19a
movl $0x4d1, -0x220(%rbp)    # imm = 0x4D1
leaq -0x218(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x151c0
jmp 0x1d1b9
leaq -0x218(%rbp), %rdi
callq 0x41e0
leaq -0x219(%rbp), %rdi
callq 0x43d0
jmp 0x1d20a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d1f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x41e0
leaq -0x219(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1d20c
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
callq 0xafb0
movq %rax, -0x228(%rbp)
jmp 0x1cd02
jmp 0x1d225
movq -0x28(%rbp), %rdi
callq 0x108a0
movq %rax, -0x230(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x1edf0
testb $0x1, %al
jne 0x1d24e
jmp 0x1d383
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1d36a
movq 0x13d76(%rip), %rdi     # 0x30fe8
leaq 0x8cc1(%rip), %rsi      # 0x25f3a
callq 0x4340
movq %rax, -0x528(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x528(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x8cad(%rip), %rsi      # 0x25f54
callq 0x4340
movq %rax, -0x520(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x520(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
leaq -0x251(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x46e0
movq -0x518(%rbp), %rdx
leaq 0x89a7(%rip), %rsi      # 0x25c93
leaq -0x250(%rbp), %rdi
callq 0x7670
jmp 0x1d2fa
movl $0x4d9, -0x258(%rbp)    # imm = 0x4D9
leaq -0x250(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x151c0
jmp 0x1d319
leaq -0x250(%rbp), %rdi
callq 0x41e0
leaq -0x251(%rbp), %rdi
callq 0x43d0
jmp 0x1d36a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d359
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x41e0
leaq -0x251(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1d36c
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
callq 0x1ee50
movq %rax, -0x260(%rbp)
jmp 0x1d225
jmp 0x1d67c
movq -0x28(%rbp), %rdi
callq 0x10a10
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
callq 0x108a0
movq %rax, -0x270(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x1edf0
testb $0x1, %al
jne 0x1d3cc
jmp 0x1d5ed
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
cmpq $0x0, 0x48(%rax)
jne 0x1d4c3
movq 0x13bfe(%rip), %rdi     # 0x30fe8
leaq 0x8b6c(%rip), %rsi      # 0x25f5d
callq 0x4340
movq %rax, -0x538(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x538(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x8b50(%rip), %rsi      # 0x25f6f
callq 0x4340
leaq -0x291(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x46e0
movq -0x530(%rbp), %rdx
leaq 0x884e(%rip), %rsi      # 0x25c93
leaq -0x290(%rbp), %rdi
callq 0x7670
jmp 0x1d453
movl $0x4e4, -0x298(%rbp)    # imm = 0x4E4
leaq -0x290(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x151c0
jmp 0x1d472
leaq -0x290(%rbp), %rdi
callq 0x41e0
leaq -0x291(%rbp), %rdi
callq 0x43d0
jmp 0x1d4c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d4b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x41e0
leaq -0x291(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
testb $0x1, 0x40(%rax)
jne 0x1d5d4
movq 0x13b08(%rip), %rdi     # 0x30fe8
leaq 0x8aa9(%rip), %rsi      # 0x25f90
callq 0x4340
movq %rax, -0x548(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x548(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x8a8d(%rip), %rsi      # 0x25fa2
callq 0x4340
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x89c3(%rip), %rsi      # 0x25ef3
callq 0x4340
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x46e0
movq -0x540(%rbp), %rdx
leaq 0x873d(%rip), %rsi      # 0x25c93
leaq -0x2b8(%rbp), %rdi
callq 0x7670
jmp 0x1d564
movl $0x4ea, -0x2c0(%rbp)    # imm = 0x4EA
leaq -0x2b8(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x151c0
jmp 0x1d583
leaq -0x2b8(%rbp), %rdi
callq 0x41e0
leaq -0x2b9(%rbp), %rdi
callq 0x43d0
jmp 0x1d5d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d5c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x41e0
leaq -0x2b9(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1d5d6
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
callq 0x1ee50
movq %rax, -0x2c8(%rbp)
jmp 0x1d3a3
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x20(%rbp), %rax
movw 0x20(%rax), %cx
andw $-0x5, %cx
orw $0x4, %cx
movw %cx, 0x20(%rax)
movq -0x20(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x48(%rbp), %rsi
movq (%rsi), %rax
leaq -0x2e8(%rbp), %rdi
xorl %edx, %edx
callq *0x10(%rax)
leaq -0x2e8(%rbp), %rdi
callq 0x4250
movl %eax, -0x5c(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x41e0
movq -0x48(%rbp), %rax
movq %rax, -0x550(%rbp)
cmpq $0x0, %rax
je 0x1d667
movq -0x550(%rbp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movq $0x0, -0x48(%rbp)
movslq -0x5c(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1dfd1
jmp 0x1d67e
movq -0x18(%rbp), %rax
cmpl $0x3, 0x44(%rax)
jne 0x1dd48
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
je 0x1dcb7
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xaef0
movq %rax, -0x2f0(%rbp)
movq -0x2f0(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xaf60
movq %rax, -0x2f8(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0xaf20
testb $0x1, %al
jne 0x1d6e7
jmp 0x1dcb2
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1d70d
movq -0x28(%rbp), %rdi
callq 0x10b60
cmpq $0x1, %rax
jbe 0x1d7da
movq 0x138d4(%rip), %rdi     # 0x30fe8
leaq 0x87ad(%rip), %rsi      # 0x25ec8
callq 0x4340
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x8876(%rip), %rsi      # 0x25fac
callq 0x4340
leaq -0x319(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x46e0
movq -0x558(%rbp), %rdx
leaq 0x8537(%rip), %rsi      # 0x25c93
leaq -0x318(%rbp), %rdi
callq 0x7670
jmp 0x1d76a
movl $0x50b, -0x320(%rbp)    # imm = 0x50B
leaq -0x318(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x151c0
jmp 0x1d789
leaq -0x318(%rbp), %rdi
callq 0x41e0
leaq -0x319(%rbp), %rdi
callq 0x43d0
jmp 0x1d7da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1d7c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x41e0
leaq -0x319(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1f050
movq (%rax), %rax
movq 0x48(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x1d816
movq -0x58(%rbp), %rax
cmpl $0x0, 0x40(%rax)
jne 0x1d816
movq -0x58(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x28(%rbp)
movb $0x0, -0x49(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1d949
movq -0x28(%rbp), %rdi
callq 0x10a10
movq %rax, -0x328(%rbp)
movq -0x328(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
callq 0x108a0
movq %rax, -0x330(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x1edf0
testb $0x1, %al
jne 0x1d869
jmp 0x1d944
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movq %rax, -0x560(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq -0x560(%rbp), %rdi
movq (%rax), %rsi
callq 0xabc0
testb $0x1, %al
jne 0x1d89d
jmp 0x1d92b
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movl 0x40(%rax), %eax
movl %eax, -0x56c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movl -0x56c(%rbp), %ecx
movq (%rax), %rax
movl %ecx, 0x24(%rax)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movw 0x20(%rax), %cx
andw $-0x5, %cx
orw $0x4, %cx
movw %cx, 0x20(%rax)
leaq -0x38(%rbp), %rdi
callq 0x1ee30
movq (%rax), %rax
movq 0x48(%rax), %rax
movq %rax, -0x568(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x450(%rbp), %rdi
movq -0x568(%rbp), %rsi
movq (%rax), %rdx
callq 0x1c3c0
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movb $0x1, -0x49(%rbp)
jmp 0x1d944
jmp 0x1d92d
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
callq 0x1ee50
movq %rax, -0x338(%rbp)
jmp 0x1d840
jmp 0x1dadd
movq -0x58(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x1da0e
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movq %rax, -0x578(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1f050
movq -0x578(%rbp), %rdi
movq (%rax), %rsi
callq 0xabc0
testb $0x1, %al
jne 0x1d990
jmp 0x1da09
movq -0x58(%rbp), %rax
movl 0x40(%rax), %eax
movl %eax, -0x584(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movl -0x584(%rbp), %ecx
movq (%rax), %rax
movl %ecx, 0x24(%rax)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq (%rax), %rax
movw 0x20(%rax), %cx
andw $-0x5, %cx
orw $0x0, %cx
movw %cx, 0x20(%rax)
movq -0x58(%rbp), %rax
movq %rax, -0x580(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x450(%rbp), %rdi
movq -0x580(%rbp), %rsi
movq (%rax), %rdx
callq 0x1c3c0
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movb $0x1, -0x49(%rbp)
jmp 0x1dcb2
jmp 0x1dadb
movq 0x135d3(%rip), %rdi     # 0x30fe8
leaq 0x84ac(%rip), %rsi      # 0x25ec8
callq 0x4340
movq %rax, %rdi
movq -0x58(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x84da(%rip), %rsi      # 0x25f11
callq 0x4340
leaq -0x359(%rbp), %rdi
movq %rdi, -0x590(%rbp)
callq 0x46e0
movq -0x590(%rbp), %rdx
leaq 0x8236(%rip), %rsi      # 0x25c93
leaq -0x358(%rbp), %rdi
callq 0x7670
jmp 0x1da6b
movl $0x533, -0x360(%rbp)    # imm = 0x533
leaq -0x358(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x151c0
jmp 0x1da8a
leaq -0x358(%rbp), %rdi
callq 0x41e0
leaq -0x359(%rbp), %rdi
callq 0x43d0
jmp 0x1dadb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1daca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x41e0
leaq -0x359(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1dadd
testb $0x1, -0x49(%rbp)
jne 0x1dc99
movq 0x134fa(%rip), %rdi     # 0x30fe8
leaq 0x83d3(%rip), %rsi      # 0x25ec8
callq 0x4340
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x7729(%rip), %rsi      # 0x25239
callq 0x4340
movq %rax, %rdi
movq -0x20(%rbp), %rax
movl 0x24(%rax), %esi
callq 0x46a0
movq %rax, %rdi
leaq 0x84bc(%rip), %rsi      # 0x25fea
callq 0x4340
movq %rax, -0x598(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xaf90
movq -0x598(%rbp), %rdi
movq (%rax), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x8492(%rip), %rsi      # 0x25fee
callq 0x4340
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x76c2(%rip), %rsi      # 0x25239
callq 0x4340
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x40(%rax), %esi
callq 0x46a0
movq %rax, %rdi
leaq 0x71fb(%rip), %rsi      # 0x24d90
callq 0x4340
movq -0x58(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x1dbfa
movq -0x58(%rbp), %rax
cmpl $0x0, 0x40(%rax)
jne 0x1dbfa
movq 0x13433(%rip), %rdi     # 0x30fe8
leaq 0x842f(%rip), %rsi      # 0x25feb
callq 0x4340
movq %rax, %rdi
movq -0x58(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x7662(%rip), %rsi      # 0x25239
callq 0x4340
movq %rax, %rdi
movq -0x58(%rbp), %rax
movl 0x40(%rax), %esi
callq 0x46a0
movq %rax, %rdi
leaq 0x719b(%rip), %rsi      # 0x24d90
callq 0x4340
leaq -0x381(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x46e0
movq -0x5a0(%rbp), %rdx
leaq 0x8078(%rip), %rsi      # 0x25c93
leaq -0x380(%rbp), %rdi
callq 0x7670
jmp 0x1dc29
movl $0x53d, -0x388(%rbp)    # imm = 0x53D
leaq -0x380(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x151c0
jmp 0x1dc48
leaq -0x380(%rbp), %rdi
callq 0x41e0
leaq -0x381(%rbp), %rdi
callq 0x43d0
jmp 0x1dc99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1dc88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x41e0
leaq -0x381(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1dc9b
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
callq 0xafb0
movq %rax, -0x390(%rbp)
jmp 0x1d6ba
jmp 0x1dd46
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x20(%rbp), %rax
movw 0x20(%rax), %cx
andw $-0x5, %cx
orw $0x4, %cx
movw %cx, 0x20(%rax)
movq -0x20(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x48(%rbp), %rsi
movq (%rsi), %rax
leaq -0x3b0(%rbp), %rdi
xorl %edx, %edx
callq *0x10(%rax)
leaq -0x3b0(%rbp), %rdi
callq 0x4250
movl %eax, -0x5c(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x41e0
movq -0x48(%rbp), %rax
movq %rax, -0x5a8(%rbp)
cmpq $0x0, %rax
je 0x1dd31
movq -0x5a8(%rbp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movq $0x0, -0x48(%rbp)
movslq -0x5c(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1dfd1
jmp 0x1dd48
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x1df50
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
jne 0x1de81
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x20(%rbp), %rax
movw 0x20(%rax), %cx
andw $-0x5, %cx
orw $0x0, %cx
movw %cx, 0x20(%rax)
movq -0x18(%rbp), %rsi
addq $0x20, %rsi
leaq 0x13c32(%rip), %rdi     # 0x319c8
callq 0x1ee90
movl (%rax), %eax
movw %ax, %dx
movq -0x20(%rbp), %rax
movw 0x20(%rax), %cx
andw $0x1f, %dx
shlw $0x3, %dx
andw $0xff07, %cx            # imm = 0xFF07
orw %dx, %cx
movw %cx, 0x20(%rax)
movq -0x20(%rbp), %rax
movw 0x20(%rax), %ax
shrw $0x3, %ax
andw $0x1f, %ax
movzwl %ax, %eax
movl %eax, -0x3d4(%rbp)
leaq 0x13c1c(%rip), %rdi     # 0x319f8
leaq -0x3d4(%rbp), %rsi
callq 0x1ef70
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x48(%rcx), %rsi
leaq -0x3d0(%rbp), %rdi
callq *%rax
leaq -0x3d0(%rbp), %rdi
callq 0x4250
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
leaq -0x3d0(%rbp), %rdi
callq 0x41e0
movq -0x48(%rbp), %rsi
movq (%rsi), %rax
leaq -0x3f8(%rbp), %rdi
xorl %edx, %edx
callq *0x10(%rax)
leaq -0x3f8(%rbp), %rdi
callq 0x4250
movl %eax, -0x5c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x41e0
movq -0x48(%rbp), %rax
movq %rax, -0x5b0(%rbp)
cmpq $0x0, %rax
je 0x1de6c
movq -0x5b0(%rbp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movq $0x0, -0x48(%rbp)
movslq -0x5c(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1dfd1
movq 0x13160(%rip), %rdi     # 0x30fe8
leaq 0x805d(%rip), %rsi      # 0x25eec
callq 0x4340
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x42e0
movq %rax, %rdi
leaq 0x8167(%rip), %rsi      # 0x26011
callq 0x4340
leaq -0x419(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x46e0
movq -0x5b8(%rbp), %rdx
leaq 0x7dc3(%rip), %rsi      # 0x25c93
leaq -0x418(%rbp), %rdi
callq 0x7670
jmp 0x1dede
movl $0x566, -0x420(%rbp)    # imm = 0x566
leaq -0x418(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x151c0
jmp 0x1defd
leaq -0x418(%rbp), %rdi
callq 0x41e0
leaq -0x419(%rbp), %rdi
callq 0x43d0
jmp 0x1df4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1df3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x41e0
leaq -0x419(%rbp), %rdi
callq 0x43d0
jmp 0x1dfde
jmp 0x1df50
movq -0x40(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x48(%rbp), %rsi
movq (%rsi), %rax
leaq -0x440(%rbp), %rdi
xorl %edx, %edx
callq *0x10(%rax)
leaq -0x440(%rbp), %rdi
callq 0x4250
movl %eax, -0x5c(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x41e0
movq -0x48(%rbp), %rax
movq %rax, -0x5c0(%rbp)
cmpq $0x0, %rax
je 0x1dfb6
movq -0x5c0(%rbp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movq $0x0, -0x48(%rbp)
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rax
movslq -0x5c(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x5c0, %rsp            # imm = 0x5C0
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x46d0
nopw (%rax,%rax)