// File: tap3edit[P]tap3xml/nrt2xml.cpp
// Function: main
int main(int argc, char **argv)
{

    string buff, filein, fileout, option, path_env, path_item;
    string::size_type slash_pos = 0, i = 0, j = 0;
    char path_delim = '\0';



    /* 1. Variables setup */

    extern enc_dec_funcs edf[];
    extern map<string, int> simpletypes_map;
    extern map<int, enc_dec_funcs> simpletypes;


    /* Note: this was set originally into global.cpp but     */
    /*       Windows unfortunately does not support the      */
    /*       initialization of maps, so I should put it here */

    simpletypes_map.insert(pair<string,int>("OCTET STRING", 0));
    simpletypes_map.insert(pair<string,int>("INTEGER",      1));
    simpletypes_map.insert(pair<string,int>("BCDString",    2));
    simpletypes_map.insert(pair<string,int>("AsciiString",  3));
    simpletypes_map.insert(pair<string,int>("Currency",     4));
    simpletypes_map.insert(pair<string,int>("HexString",    5));
    simpletypes_map.insert(pair<string,int>("NumberString", 6));
    
    simpletypes.insert(pair<int, enc_dec_funcs>(0, edf[2]));
    simpletypes.insert(pair<int, enc_dec_funcs>(1, edf[1]));
    simpletypes.insert(pair<int, enc_dec_funcs>(2, edf[3]));
    simpletypes.insert(pair<int, enc_dec_funcs>(3, edf[0]));
    simpletypes.insert(pair<int, enc_dec_funcs>(4, edf[0]));
    simpletypes.insert(pair<int, enc_dec_funcs>(5, edf[0]));
    simpletypes.insert(pair<int, enc_dec_funcs>(6, edf[0]));


    /* 2. Arrange Directory to find the specifications ASN.1 */

    if (getenv(TAP3XML_SPEC_VAR)!=NULL)     /* a. nrt2xml environment variable */
        specdir_list.push_back(getenv(TAP3XML_SPEC_VAR));

    if (getenv("HOME")!=NULL)               /* b. unix $HOME/Spec/ */
        specdir_list.push_back(string(getenv("HOME"))+"/"+SPEC_DIR);

    if (getenv("HOMEPATH")!=NULL)           /* c. windows %HOMEPATH%\Spec\ */
        specdir_list.push_back(string(getenv("HOMEPATH"))+"/"+SPEC_DIR);

    if ((slash_pos = string(argv[0]).find_last_of("/\\")) != string::npos) /* e. path of the binary */
        specdir_list.push_back(string(argv[0]).substr(0,slash_pos)+"/"+SPEC_DIR);

    if (getenv("PATH")!=NULL) {             /* f. parse the PATH environment variable */
        path_env = getenv("PATH");

        if (path_env.find("\\") != string::npos)
            path_delim = ';'; /* windows */
        else
            path_delim = ':'; /* unix */

        i = 0;
        j = path_env.find(path_delim);
        for (;j < path_env.length(); i = ++j, j = path_env.find(path_delim, j))
        {
            if (j != string::npos)
                path_item = path_env.substr(i, j-i);
            else
                path_item = path_env.substr(i, path_env.length()-i);

            specdir_list.push_back(path_item+"/"+SPEC_DIR);
        }
    }

    specdir_list.push_back(SPEC_DIR); /* f. ./Specs directory */


    /* 3. Checking arguments */

    if ( argc!=3 && argc!=4)
        help();

    option=string(argv[1]);
    if ( option != "-a" && option != "-x" )
        help();

    filein =string(argv[2]);
    if (argc==3)
    {
        if (filein.find_last_of("/") != string::npos)           // unix style
            fileout=filein.substr(filein.find_last_of("/")+1,string::npos);
        {
            if (filein.find_last_of("\\") != string::npos)      // windows style 
                fileout=filein.substr(filein.find_last_of("\\")+1,string::npos);
            else
                fileout=filein;
        }

        if (option == "-a")
            fileout+=".asn";
        else
            fileout="";
        //fileout+=(option=="-a" ? ".asn" : ".xml");
    }
    else
        fileout=string(argv[3]);


    /* 4. NRT -> XML Conversion */

    if ( option == "-x" )
    {
        string      header = XML_HEADER;

        Buffin*     bfin_asn= new Buffin(filein,0);
        Buffout*    bfout_asn = NULL;

        string      spec_filename;
        
        treenode*   tree = new treenode();

        NrtInfo*    nrtinfo = new NrtInfo();
        nrtinfo->buffin(bfin_asn);

        if(nrtinfo->type()=="ERR")
        {
            cerr << "Error. Unable to get version of file: " << filein << endl;
            exit(1);
        }

        spec_filename=get_specfilename(nrtinfo);

        Asn *asn=new Asn();
        asn->specfile(spec_filename);
        asn->specroot("Nrtrde");
        asn->buffin(bfin_asn);
        asn->tree(tree);
        asn->decode();

        if (fileout == "")
            bfout_asn= new Buffout();
        else
            bfout_asn= new Buffout(fileout);

        Xml *xml=new Xml();
        xml->buffout(bfout_asn);
        xml->tree(tree);
        xml->set_header(&header);
        xml->encode();

        delete xml;
        delete bfout_asn;
        delete asn;
        delete nrtinfo;
        free_treenode(tree);
        delete bfin_asn;
    }


    /* 5. XML -> NRT Conversion */

    if ( option == "-a" )
    {
        string    spec_filename;
        
        treenode *tree=new treenode();

        Xml *xml=new Xml();
        xml->ifile(filein);
        xml->tree(tree);
        xml->decode();
        NrtInfo *nrtinfo=  new NrtInfo();
        nrtinfo->tree(tree);

        if(nrtinfo->type()=="ERR")
        {
            cerr << "Error. Unable to get version of file: " << filein << endl;
            exit(1);
        }

        spec_filename=get_specfilename(nrtinfo);

        Asn *asn=new Asn();
        asn->specfile(spec_filename);
        asn->specroot("Nrtrde");
        asn->ofile(fileout);
        asn->tree(tree);
        asn->encode();

        delete asn;
        delete nrtinfo;
        delete xml;
        free_treenode(tree);

    }


    exit(0);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xbe0, %rsp            # imm = 0xBE0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x4570
leaq -0x50(%rbp), %rdi
callq 0x4570
leaq -0x70(%rbp), %rdi
callq 0x4570
leaq -0x90(%rbp), %rdi
callq 0x4570
leaq -0xb0(%rbp), %rdi
callq 0x4570
leaq -0xd0(%rbp), %rdi
callq 0x4570
movq $0x0, -0xd8(%rbp)
movq $0x0, -0xe0(%rbp)
movq $0x0, -0xe8(%rbp)
movb $0x0, -0xe9(%rbp)
movl $0x0, -0x11c(%rbp)
leaq 0x1f1f3(%rip), %rsi     # 0x24004
leaq -0x118(%rbp), %rdi
leaq -0x11c(%rbp), %rdx
callq 0x7320
jmp 0x4e26
leaq 0x2cb9b(%rip), %rdi     # 0x319c8
leaq -0x118(%rbp), %rsi
callq 0x72e0
movb %dl, -0x8f9(%rbp)
movq %rax, -0x8f8(%rbp)
jmp 0x4e48
movb -0x8f9(%rbp), %al
movq -0x8f8(%rbp), %rcx
movq %rcx, -0x140(%rbp)
movb %al, -0x138(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x73a0
movl $0x1, -0x16c(%rbp)
leaq 0x1f192(%rip), %rsi     # 0x24011
leaq -0x168(%rbp), %rdi
leaq -0x16c(%rbp), %rdx
callq 0x73c0
jmp 0x4e94
leaq 0x2cb2d(%rip), %rdi     # 0x319c8
leaq -0x168(%rbp), %rsi
callq 0x72e0
movb %dl, -0x909(%rbp)
movq %rax, -0x908(%rbp)
jmp 0x4eb6
movb -0x909(%rbp), %al
movq -0x908(%rbp), %rcx
movq %rcx, -0x180(%rbp)
movb %al, -0x178(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x73a0
movl $0x2, -0x1ac(%rbp)
leaq 0x1f12c(%rip), %rsi     # 0x24019
leaq -0x1a8(%rbp), %rdi
leaq -0x1ac(%rbp), %rdx
callq 0x7440
jmp 0x4f02
leaq 0x2cabf(%rip), %rdi     # 0x319c8
leaq -0x1a8(%rbp), %rsi
callq 0x72e0
movb %dl, -0x919(%rbp)
movq %rax, -0x918(%rbp)
jmp 0x4f24
movb -0x919(%rbp), %al
movq -0x918(%rbp), %rcx
movq %rcx, -0x1c0(%rbp)
movb %al, -0x1b8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x73a0
movl $0x3, -0x1ec(%rbp)
leaq 0x1f0c8(%rip), %rsi     # 0x24023
leaq -0x1e8(%rbp), %rdi
leaq -0x1ec(%rbp), %rdx
callq 0x74c0
jmp 0x4f70
leaq 0x2ca51(%rip), %rdi     # 0x319c8
leaq -0x1e8(%rbp), %rsi
callq 0x72e0
movb %dl, -0x929(%rbp)
movq %rax, -0x928(%rbp)
jmp 0x4f92
movb -0x929(%rbp), %al
movq -0x928(%rbp), %rcx
movq %rcx, -0x200(%rbp)
movb %al, -0x1f8(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x73a0
movl $0x4, -0x22c(%rbp)
leaq 0x1f066(%rip), %rsi     # 0x2402f
leaq -0x228(%rbp), %rdi
leaq -0x22c(%rbp), %rdx
callq 0x7540
jmp 0x4fde
leaq 0x2c9e3(%rip), %rdi     # 0x319c8
leaq -0x228(%rbp), %rsi
callq 0x72e0
movb %dl, -0x939(%rbp)
movq %rax, -0x938(%rbp)
jmp 0x5000
movb -0x939(%rbp), %al
movq -0x938(%rbp), %rcx
movq %rcx, -0x240(%rbp)
movb %al, -0x238(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x73a0
movl $0x5, -0x26c(%rbp)
leaq 0x1f001(%rip), %rsi     # 0x24038
leaq -0x268(%rbp), %rdi
leaq -0x26c(%rbp), %rdx
callq 0x7440
jmp 0x504c
leaq 0x2c975(%rip), %rdi     # 0x319c8
leaq -0x268(%rbp), %rsi
callq 0x72e0
movb %dl, -0x949(%rbp)
movq %rax, -0x948(%rbp)
jmp 0x506e
movb -0x949(%rbp), %al
movq -0x948(%rbp), %rcx
movq %rcx, -0x280(%rbp)
movb %al, -0x278(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x73a0
movl $0x6, -0x2ac(%rbp)
leaq 0x1ef9d(%rip), %rsi     # 0x24042
leaq -0x2a8(%rbp), %rdi
leaq -0x2ac(%rbp), %rdx
callq 0x7320
jmp 0x50ba
leaq 0x2c907(%rip), %rdi     # 0x319c8
leaq -0x2a8(%rbp), %rsi
callq 0x72e0
movb %dl, -0x959(%rbp)
movq %rax, -0x958(%rbp)
jmp 0x50dc
movb -0x959(%rbp), %al
movq -0x958(%rbp), %rcx
movq %rcx, -0x2c0(%rbp)
movb %al, -0x2b8(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x73a0
movl $0x0, -0x2dc(%rbp)
leaq 0x2c2fd(%rip), %rdx     # 0x31410
addq $0x20, %rdx
leaq -0x2d8(%rbp), %rdi
leaq -0x2dc(%rbp), %rsi
callq 0x7600
jmp 0x512c
leaq 0x2c8c5(%rip), %rdi     # 0x319f8
leaq -0x2d8(%rbp), %rsi
callq 0x75c0
movb %dl, -0x969(%rbp)
movq %rax, -0x968(%rbp)
jmp 0x514e
movb -0x969(%rbp), %al
movq -0x968(%rbp), %rcx
movq %rcx, -0x2f0(%rbp)
movb %al, -0x2e8(%rbp)
movl $0x1, -0x30c(%rbp)
leaq 0x2c297(%rip), %rdx     # 0x31410
addq $0x10, %rdx
leaq -0x308(%rbp), %rdi
leaq -0x30c(%rbp), %rsi
callq 0x7600
jmp 0x5192
leaq 0x2c85f(%rip), %rdi     # 0x319f8
leaq -0x308(%rbp), %rsi
callq 0x75c0
movb %dl, -0x979(%rbp)
movq %rax, -0x978(%rbp)
jmp 0x51b4
movb -0x979(%rbp), %al
movq -0x978(%rbp), %rcx
movq %rcx, -0x320(%rbp)
movb %al, -0x318(%rbp)
movl $0x2, -0x33c(%rbp)
leaq 0x2c231(%rip), %rdx     # 0x31410
addq $0x30, %rdx
leaq -0x338(%rbp), %rdi
leaq -0x33c(%rbp), %rsi
callq 0x7600
jmp 0x51f8
leaq 0x2c7f9(%rip), %rdi     # 0x319f8
leaq -0x338(%rbp), %rsi
callq 0x75c0
movb %dl, -0x989(%rbp)
movq %rax, -0x988(%rbp)
jmp 0x521a
movb -0x989(%rbp), %al
movq -0x988(%rbp), %rcx
movq %rcx, -0x350(%rbp)
movb %al, -0x348(%rbp)
movl $0x3, -0x36c(%rbp)
leaq 0x2c1cb(%rip), %rdx     # 0x31410
leaq -0x368(%rbp), %rdi
leaq -0x36c(%rbp), %rsi
callq 0x7600
jmp 0x525a
leaq 0x2c797(%rip), %rdi     # 0x319f8
leaq -0x368(%rbp), %rsi
callq 0x75c0
movb %dl, -0x999(%rbp)
movq %rax, -0x998(%rbp)
jmp 0x527c
movb -0x999(%rbp), %al
movq -0x998(%rbp), %rcx
movq %rcx, -0x380(%rbp)
movb %al, -0x378(%rbp)
movl $0x4, -0x39c(%rbp)
leaq 0x2c169(%rip), %rdx     # 0x31410
leaq -0x398(%rbp), %rdi
leaq -0x39c(%rbp), %rsi
callq 0x7600
jmp 0x52bc
leaq 0x2c735(%rip), %rdi     # 0x319f8
leaq -0x398(%rbp), %rsi
callq 0x75c0
movb %dl, -0x9a9(%rbp)
movq %rax, -0x9a8(%rbp)
jmp 0x52de
movb -0x9a9(%rbp), %al
movq -0x9a8(%rbp), %rcx
movq %rcx, -0x3b0(%rbp)
movb %al, -0x3a8(%rbp)
movl $0x5, -0x3cc(%rbp)
leaq 0x2c107(%rip), %rdx     # 0x31410
leaq -0x3c8(%rbp), %rdi
leaq -0x3cc(%rbp), %rsi
callq 0x7600
jmp 0x531e
leaq 0x2c6d3(%rip), %rdi     # 0x319f8
leaq -0x3c8(%rbp), %rsi
callq 0x75c0
movb %dl, -0x9b9(%rbp)
movq %rax, -0x9b8(%rbp)
jmp 0x5340
movb -0x9b9(%rbp), %al
movq -0x9b8(%rbp), %rcx
movq %rcx, -0x3e0(%rbp)
movb %al, -0x3d8(%rbp)
movl $0x6, -0x3fc(%rbp)
leaq 0x2c0a5(%rip), %rdx     # 0x31410
leaq -0x3f8(%rbp), %rdi
leaq -0x3fc(%rbp), %rsi
callq 0x7600
jmp 0x5380
leaq 0x2c671(%rip), %rdi     # 0x319f8
leaq -0x3f8(%rbp), %rsi
callq 0x75c0
movb %dl, -0x9c9(%rbp)
movq %rax, -0x9c8(%rbp)
jmp 0x53a2
movb -0x9c9(%rbp), %al
movq -0x9c8(%rbp), %rcx
movq %rcx, -0x410(%rbp)
movb %al, -0x408(%rbp)
leaq 0x1ec8c(%rip), %rdi     # 0x2404f
callq 0x4480
cmpq $0x0, %rax
je 0x5595
leaq 0x1ec76(%rip), %rdi     # 0x2404f
callq 0x4480
movq %rax, -0x9e0(%rbp)
leaq -0x431(%rbp), %rdi
movq %rdi, -0x9d8(%rbp)
callq 0x46e0
movq -0x9e0(%rbp), %rsi
movq -0x9d8(%rbp), %rdx
leaq -0x430(%rbp), %rdi
callq 0x7670
jmp 0x5414
leaq 0x2c055(%rip), %rdi     # 0x31470
leaq -0x430(%rbp), %rsi
callq 0x7640
jmp 0x5429
leaq -0x430(%rbp), %rdi
callq 0x41e0
leaq -0x431(%rbp), %rdi
callq 0x43d0
jmp 0x5595
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x73a0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x73a0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x73a0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x73a0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x73a0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x73a0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x73a0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5584
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x41e0
leaq -0x431(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
leaq 0x1eac0(%rip), %rdi     # 0x2405c
callq 0x4480
cmpq $0x0, %rax
je 0x56f2
leaq 0x1eaaa(%rip), %rdi     # 0x2405c
callq 0x4480
movq %rax, -0x9f0(%rbp)
leaq -0x499(%rbp), %rdi
movq %rdi, -0x9e8(%rbp)
callq 0x46e0
movq -0x9f0(%rbp), %rsi
movq -0x9e8(%rbp), %rdx
leaq -0x498(%rbp), %rdi
callq 0x7670
jmp 0x55ed
leaq 0x20cd5(%rip), %rdx     # 0x262c9
leaq -0x478(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0x7720
jmp 0x5609
leaq 0x1ea51(%rip), %rdx     # 0x24061
leaq -0x458(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0x7720
jmp 0x5625
leaq 0x2be44(%rip), %rdi     # 0x31470
leaq -0x458(%rbp), %rsi
callq 0x7640
jmp 0x563a
leaq -0x458(%rbp), %rdi
callq 0x41e0
leaq -0x478(%rbp), %rdi
callq 0x41e0
leaq -0x498(%rbp), %rdi
callq 0x41e0
leaq -0x499(%rbp), %rdi
callq 0x43d0
jmp 0x56f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x56e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x56d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x56c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x41e0
leaq -0x478(%rbp), %rdi
callq 0x41e0
leaq -0x498(%rbp), %rdi
callq 0x41e0
leaq -0x499(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
leaq 0x1e96e(%rip), %rdi     # 0x24067
callq 0x4480
cmpq $0x0, %rax
je 0x584f
leaq 0x1e958(%rip), %rdi     # 0x24067
callq 0x4480
movq %rax, -0xa00(%rbp)
leaq -0x501(%rbp), %rdi
movq %rdi, -0x9f8(%rbp)
callq 0x46e0
movq -0xa00(%rbp), %rsi
movq -0x9f8(%rbp), %rdx
leaq -0x500(%rbp), %rdi
callq 0x7670
jmp 0x574a
leaq 0x20b78(%rip), %rdx     # 0x262c9
leaq -0x4e0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x7720
jmp 0x5766
leaq 0x1e8f4(%rip), %rdx     # 0x24061
leaq -0x4c0(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x7720
jmp 0x5782
leaq 0x2bce7(%rip), %rdi     # 0x31470
leaq -0x4c0(%rbp), %rsi
callq 0x7640
jmp 0x5797
leaq -0x4c0(%rbp), %rdi
callq 0x41e0
leaq -0x4e0(%rbp), %rdi
callq 0x41e0
leaq -0x500(%rbp), %rdi
callq 0x41e0
leaq -0x501(%rbp), %rdi
callq 0x43d0
jmp 0x584f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x583e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5832
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5826
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0x41e0
leaq -0x4e0(%rbp), %rdi
callq 0x41e0
leaq -0x500(%rbp), %rdi
callq 0x41e0
leaq -0x501(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xa10(%rbp)
leaq -0x529(%rbp), %rdi
movq %rdi, -0xa08(%rbp)
callq 0x46e0
movq -0xa10(%rbp), %rsi
movq -0xa08(%rbp), %rdx
leaq -0x528(%rbp), %rdi
callq 0x7670
jmp 0x588c
leaq -0x528(%rbp), %rdi
leaq 0x1e7d6(%rip), %rsi     # 0x24070
movq $-0x1, %rdx
callq 0x4310
movq %rax, -0xa18(%rbp)
movq %rax, -0xd8(%rbp)
leaq -0x528(%rbp), %rdi
callq 0x41e0
leaq -0x529(%rbp), %rdi
callq 0x43d0
movq -0xa18(%rbp), %rax
cmpq $-0x1, %rax
je 0x5a8e
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xa28(%rbp)
leaq -0x5b1(%rbp), %rdi
movq %rdi, -0xa20(%rbp)
callq 0x46e0
movq -0xa28(%rbp), %rsi
movq -0xa20(%rbp), %rdx
leaq -0x5b0(%rbp), %rdi
callq 0x7670
jmp 0x591a
movq -0xd8(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x590(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x4390
jmp 0x593a
leaq 0x20988(%rip), %rdx     # 0x262c9
leaq -0x570(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0x7720
jmp 0x5956
leaq 0x1e704(%rip), %rdx     # 0x24061
leaq -0x550(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x7720
jmp 0x5972
leaq 0x2baf7(%rip), %rdi     # 0x31470
leaq -0x550(%rbp), %rsi
callq 0x7640
jmp 0x5987
leaq -0x550(%rbp), %rdi
callq 0x41e0
leaq -0x570(%rbp), %rdi
callq 0x41e0
leaq -0x590(%rbp), %rdi
callq 0x41e0
leaq -0x5b0(%rbp), %rdi
callq 0x41e0
leaq -0x5b1(%rbp), %rdi
callq 0x43d0
jmp 0x5a8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x529(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5a7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5a71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5a65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5a59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x550(%rbp), %rdi
callq 0x41e0
leaq -0x570(%rbp), %rdi
callq 0x41e0
leaq -0x590(%rbp), %rdi
callq 0x41e0
leaq -0x5b0(%rbp), %rdi
callq 0x41e0
leaq -0x5b1(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
leaq 0x1e5d6(%rip), %rdi     # 0x2406b
callq 0x4480
cmpq $0x0, %rax
je 0x5ce9
leaq 0x1e5c0(%rip), %rdi     # 0x2406b
callq 0x4480
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
callq 0x4560
jmp 0x5ac1
leaq -0xb0(%rbp), %rdi
leaq 0x1e5a2(%rip), %rsi     # 0x24071
xorl %eax, %eax
movl %eax, %edx
callq 0x47a0
cmpq $-0x1, %rax
je 0x5ae7
movb $0x3b, -0xe9(%rbp)
jmp 0x5aee
movb $0x3a, -0xe9(%rbp)
movq $0x0, -0xe0(%rbp)
leaq -0xb0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movsbl -0xe9(%rbp), %esi
callq 0x4500
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0xa30(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x45e0
movq %rax, %rcx
movq -0xa30(%rbp), %rax
cmpq %rcx, %rax
jae 0x5ce7
cmpq $-0x1, -0xe8(%rbp)
je 0x5b95
movq -0xe0(%rbp), %rdx
movq -0xe8(%rbp), %rcx
subq %rdx, %rcx
leaq -0x5d8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x4390
jmp 0x5b74
leaq -0xd0(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x4490
leaq -0x5d8(%rbp), %rdi
callq 0x41e0
jmp 0x5bfe
movq -0xe0(%rbp), %rax
movq %rax, -0xa38(%rbp)
leaq -0xb0(%rbp), %rdi
movq %rdi, -0xa40(%rbp)
callq 0x45e0
movq -0xa40(%rbp), %rsi
movq -0xa38(%rbp), %rdx
movq %rax, %rcx
movq -0xe0(%rbp), %rax
subq %rax, %rcx
leaq -0x5f8(%rbp), %rdi
callq 0x4390
jmp 0x5bdf
leaq -0xd0(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0x4490
leaq -0x5f8(%rbp), %rdi
callq 0x41e0
leaq 0x206c4(%rip), %rdx     # 0x262c9
leaq -0x638(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x7770
jmp 0x5c1a
leaq 0x1e440(%rip), %rdx     # 0x24061
leaq -0x618(%rbp), %rdi
leaq -0x638(%rbp), %rsi
callq 0x7720
jmp 0x5c36
leaq 0x2b833(%rip), %rdi     # 0x31470
leaq -0x618(%rbp), %rsi
callq 0x7640
jmp 0x5c4b
leaq -0x618(%rbp), %rdi
callq 0x41e0
leaq -0x638(%rbp), %rdi
callq 0x41e0
movq -0xe8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe8(%rbp)
movq %rax, -0xe0(%rbp)
movb -0xe9(%rbp), %al
movq -0xe8(%rbp), %rdx
leaq -0xb0(%rbp), %rdi
movsbl %al, %esi
callq 0x4500
movq %rax, -0xe8(%rbp)
jmp 0x5b17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5cd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x618(%rbp), %rdi
callq 0x41e0
leaq -0x638(%rbp), %rdi
callq 0x41e0
jmp 0x6d64
jmp 0x5ce9
leaq -0x659(%rbp), %rdi
movq %rdi, -0xa48(%rbp)
callq 0x46e0
movq -0xa48(%rbp), %rdx
leaq 0x1e357(%rip), %rsi     # 0x24061
leaq -0x658(%rbp), %rdi
callq 0x7670
jmp 0x5d18
leaq 0x2b751(%rip), %rdi     # 0x31470
leaq -0x658(%rbp), %rsi
callq 0x7640
jmp 0x5d2d
leaq -0x658(%rbp), %rdi
callq 0x41e0
leaq -0x659(%rbp), %rdi
callq 0x43d0
cmpl $0x3, -0x8(%rbp)
je 0x5d9d
cmpl $0x4, -0x8(%rbp)
je 0x5d9d
callq 0x6db0
jmp 0x5d58
jmp 0x5d9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x5d8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x658(%rbp), %rdi
callq 0x41e0
leaq -0x659(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xa58(%rbp)
leaq -0x681(%rbp), %rdi
movq %rdi, -0xa50(%rbp)
callq 0x46e0
movq -0xa58(%rbp), %rsi
movq -0xa50(%rbp), %rdx
leaq -0x680(%rbp), %rdi
callq 0x7670
jmp 0x5ddb
leaq -0x90(%rbp), %rdi
movq %rdi, -0xa68(%rbp)
leaq -0x680(%rbp), %rsi
movq %rsi, -0xa70(%rbp)
callq 0x4490
movq -0xa70(%rbp), %rdi
callq 0x41e0
leaq -0x681(%rbp), %rdi
callq 0x43d0
movq -0xa68(%rbp), %rdi
leaq 0x1e251(%rip), %rsi     # 0x24073
callq 0x77f0
movb %al, -0xa59(%rbp)
jmp 0x5e2f
movb -0xa59(%rbp), %al
testb $0x1, %al
jne 0x5e3b
jmp 0x5e8e
leaq 0x1e234(%rip), %rsi     # 0x24076
leaq -0x90(%rbp), %rdi
callq 0x77f0
movb %al, -0xa71(%rbp)
jmp 0x5e56
movb -0xa71(%rbp), %al
testb $0x1, %al
jne 0x5e62
jmp 0x5e8e
callq 0x6db0
jmp 0x5e69
jmp 0x5e8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x681(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xa88(%rbp)
leaq -0x6a9(%rbp), %rdi
movq %rdi, -0xa80(%rbp)
callq 0x46e0
movq -0xa88(%rbp), %rsi
movq -0xa80(%rbp), %rdx
leaq -0x6a8(%rbp), %rdi
callq 0x7670
jmp 0x5ecc
leaq -0x50(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0x4490
leaq -0x6a8(%rbp), %rdi
callq 0x41e0
leaq -0x6a9(%rbp), %rdi
callq 0x43d0
cmpl $0x3, -0x8(%rbp)
jne 0x608e
leaq -0x50(%rbp), %rdi
leaq 0x203c0(%rip), %rsi     # 0x262c9
movq $-0x1, %rdx
callq 0x4310
cmpq $-0x1, %rax
je 0x5fa7
leaq 0x203a3(%rip), %rsi     # 0x262c9
leaq -0x50(%rbp), %rdi
movq %rdi, -0xa98(%rbp)
movq $-0x1, %rdx
movq %rdx, -0xa90(%rbp)
callq 0x4310
movq -0xa98(%rbp), %rsi
movq -0xa90(%rbp), %rcx
movq %rax, %rdx
incq %rdx
leaq -0x6d0(%rbp), %rdi
callq 0x4390
jmp 0x5f66
leaq -0x70(%rbp), %rdi
leaq -0x6d0(%rbp), %rsi
callq 0x4490
leaq -0x6d0(%rbp), %rdi
callq 0x41e0
jmp 0x5fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x6a9(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
leaq -0x50(%rbp), %rdi
leaq 0x1e0bf(%rip), %rsi     # 0x24071
movq $-0x1, %rdx
callq 0x4310
cmpq $-0x1, %rax
je 0x6029
leaq 0x1e0a6(%rip), %rsi     # 0x24071
leaq -0x50(%rbp), %rdi
movq %rdi, -0xaa8(%rbp)
movq $-0x1, %rdx
movq %rdx, -0xaa0(%rbp)
callq 0x4310
movq -0xaa8(%rbp), %rsi
movq -0xaa0(%rbp), %rcx
movq %rax, %rdx
incq %rdx
leaq -0x6f0(%rbp), %rdi
callq 0x4390
jmp 0x600b
leaq -0x70(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
callq 0x4490
leaq -0x6f0(%rbp), %rdi
callq 0x41e0
jmp 0x603a
leaq -0x70(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4050
jmp 0x6038
jmp 0x603a
leaq 0x1e032(%rip), %rsi     # 0x24073
leaq -0x90(%rbp), %rdi
callq 0x7820
movb %al, -0xaa9(%rbp)
jmp 0x6055
movb -0xaa9(%rbp), %al
testb $0x1, %al
jne 0x6061
jmp 0x6075
leaq 0x1e011(%rip), %rsi     # 0x24079
leaq -0x70(%rbp), %rdi
callq 0x4330
jmp 0x6073
jmp 0x6089
leaq 0x1fa72(%rip), %rsi     # 0x25aee
leaq -0x70(%rbp), %rdi
callq 0x4560
jmp 0x6087
jmp 0x6089
jmp 0x6119
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0xac0(%rbp)
leaq -0x711(%rbp), %rdi
movq %rdi, -0xab8(%rbp)
callq 0x46e0
movq -0xac0(%rbp), %rsi
movq -0xab8(%rbp), %rdx
leaq -0x710(%rbp), %rdi
callq 0x7670
jmp 0x60cc
leaq -0x70(%rbp), %rdi
leaq -0x710(%rbp), %rsi
callq 0x4490
leaq -0x710(%rbp), %rdi
callq 0x41e0
leaq -0x711(%rbp), %rdi
callq 0x43d0
jmp 0x6119
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x711(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
leaq 0x1df56(%rip), %rsi     # 0x24076
leaq -0x90(%rbp), %rdi
callq 0x7820
movb %al, -0xac1(%rbp)
jmp 0x6134
movb -0xac1(%rbp), %al
testb $0x1, %al
jne 0x6143
jmp 0x68c1
leaq -0x739(%rbp), %rdi
movq %rdi, -0xad0(%rbp)
callq 0x46e0
movq -0xad0(%rbp), %rdx
leaq 0x1df1a(%rip), %rsi     # 0x2407e
leaq -0x738(%rbp), %rdi
callq 0x7670
jmp 0x6172
leaq -0x739(%rbp), %rdi
callq 0x43d0
movl $0x238, %edi            # imm = 0x238
callq 0x4360
movq %rax, -0xad8(%rbp)
jmp 0x6191
movb $0x1, -0x769(%rbp)
leaq -0x768(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4170
jmp 0x61aa
movq -0xad8(%rbp), %rdi
leaq -0x768(%rbp), %rsi
xorl %edx, %edx
callq 0x17380
jmp 0x61c1
movb $0x0, -0x769(%rbp)
leaq -0x768(%rbp), %rdi
callq 0x41e0
movq -0xad8(%rbp), %rax
movq %rax, -0x748(%rbp)
movq $0x0, -0x778(%rbp)
leaq -0x798(%rbp), %rdi
callq 0x4570
movl $0x58, %edi
callq 0x4360
movq %rax, -0xae0(%rbp)
jmp 0x620c
movq -0xae0(%rbp), %rdi
callq 0x7850
jmp 0x621a
movq -0xae0(%rbp), %rax
movq %rax, -0x7a0(%rbp)
movl $0x30, %edi
callq 0x4360
movq %rax, -0xae8(%rbp)
jmp 0x623b
movq -0xae8(%rbp), %rdi
callq 0x9d70
jmp 0x6249
movq -0xae8(%rbp), %rax
movq %rax, -0x7a8(%rbp)
movq -0x7a8(%rbp), %rdi
movq -0x748(%rbp), %rsi
callq 0x9db0
jmp 0x626c
movq -0x7a8(%rbp), %rsi
leaq -0x7c8(%rbp), %rdi
callq 0xa980
jmp 0x6281
leaq 0x1def3(%rip), %rsi     # 0x2417b
leaq -0x7c8(%rbp), %rdi
callq 0x7820
movb %al, -0xae9(%rbp)
jmp 0x629c
leaq -0x7c8(%rbp), %rdi
callq 0x41e0
movb -0xae9(%rbp), %al
testb $0x1, %al
jne 0x62b7
jmp 0x6422
movq 0x2ad2a(%rip), %rdi     # 0x30fe8
leaq 0x1deba(%rip), %rsi     # 0x2417f
callq 0x4340
movq %rax, -0xaf8(%rbp)
jmp 0x62d3
movq -0xaf8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42e0
movq %rax, -0xb00(%rbp)
jmp 0x62ec
movq -0xb00(%rbp), %rdi
movq 0x2acae(%rip), %rsi     # 0x30fa8
callq 0x43b0
jmp 0x6301
movl $0x1, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x739(%rbp), %rdi
callq 0x43d0
jmp 0x6d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x68b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x6377
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x768(%rbp), %rdi
callq 0x41e0
testb $0x1, -0x769(%rbp)
jne 0x6382
jmp 0x6393
movq -0xad8(%rbp), %rdi
movl $0x238, %esi            # imm = 0x238
callq 0x4370
jmp 0x68b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x68a4
movq -0xae0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x58, %esi
callq 0x4370
jmp 0x68a4
movq -0xae8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x30, %esi
callq 0x4370
jmp 0x68a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x7c8(%rbp), %rdi
callq 0x41e0
jmp 0x68a4
movq -0x7a8(%rbp), %rsi
leaq -0x7e8(%rbp), %rdi
callq 0x6e10
jmp 0x6437
leaq -0x798(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
movq %rsi, -0xb10(%rbp)
callq 0x4490
movq -0xb10(%rbp), %rdi
callq 0x41e0
movl $0x90, %edi
callq 0x4360
movq %rax, -0xb08(%rbp)
jmp 0x6470
movq -0xb08(%rbp), %rdi
callq 0x18310
jmp 0x647e
movq -0xb08(%rbp), %rax
movq %rax, -0x7f0(%rbp)
movq -0x7f0(%rbp), %rdi
leaq -0x798(%rbp), %rsi
callq 0x1e1d0
jmp 0x64a1
movq -0x7f0(%rbp), %rax
movq %rax, -0xb20(%rbp)
leaq -0x811(%rbp), %rdi
movq %rdi, -0xb18(%rbp)
callq 0x46e0
movq -0xb18(%rbp), %rdx
leaq 0x1dcd6(%rip), %rsi     # 0x241a6
leaq -0x810(%rbp), %rdi
callq 0x7670
jmp 0x64de
movq -0xb20(%rbp), %rdi
leaq -0x810(%rbp), %rsi
callq 0x1e3f0
jmp 0x64f3
leaq -0x810(%rbp), %rdi
callq 0x41e0
leaq -0x811(%rbp), %rdi
callq 0x43d0
movq -0x7f0(%rbp), %rdi
movq -0x748(%rbp), %rsi
callq 0x18400
jmp 0x6520
movq -0x7f0(%rbp), %rdi
movq -0x7a0(%rbp), %rsi
callq 0x1e4e0
jmp 0x6535
movq -0x7f0(%rbp), %rdi
callq 0x189f0
jmp 0x6543
leaq 0x1f5a4(%rip), %rsi     # 0x25aee
leaq -0x70(%rbp), %rdi
callq 0x7820
movb %al, -0xb21(%rbp)
jmp 0x655b
movb -0xb21(%rbp), %al
testb $0x1, %al
jne 0x656a
jmp 0x6631
movl $0x220, %edi            # imm = 0x220
callq 0x4360
movq %rax, -0xb30(%rbp)
jmp 0x657d
movq -0xb30(%rbp), %rdi
callq 0x17f50
jmp 0x658b
movq -0xb30(%rbp), %rax
movq %rax, -0x778(%rbp)
jmp 0x66e8
movq -0xb08(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x90, %esi
callq 0x4370
jmp 0x68a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x65f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x810(%rbp), %rdi
callq 0x41e0
leaq -0x811(%rbp), %rdi
callq 0x43d0
jmp 0x68a4
movq -0xb30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x220, %esi            # imm = 0x220
callq 0x4370
jmp 0x68a4
movl $0x220, %edi            # imm = 0x220
callq 0x4360
movq %rax, -0xb38(%rbp)
jmp 0x6644
movb $0x1, -0x839(%rbp)
leaq -0x838(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x4170
jmp 0x665d
movq -0xb38(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x18010
jmp 0x6672
movq -0xb38(%rbp), %rax
movb $0x0, -0x839(%rbp)
movq %rax, -0x778(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x41e0
jmp 0x66e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x66c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x41e0
testb $0x1, -0x839(%rbp)
jne 0x66d2
jmp 0x66e3
movq -0xb38(%rbp), %rdi
movl $0x220, %esi            # imm = 0x220
callq 0x4370
jmp 0x68a4
movl $0x38, %edi
callq 0x4360
movq %rax, -0xb40(%rbp)
jmp 0x66fb
movq -0xb40(%rbp), %rdi
callq 0x227a0
jmp 0x6709
movq -0xb40(%rbp), %rax
movq %rax, -0x848(%rbp)
movq -0x848(%rbp), %rdi
movq -0x778(%rbp), %rsi
callq 0x22d30
jmp 0x672c
movq -0x848(%rbp), %rdi
movq -0x7a0(%rbp), %rsi
callq 0x22d50
jmp 0x6741
movq -0x848(%rbp), %rdi
leaq -0x738(%rbp), %rsi
callq 0x22d70
jmp 0x6756
movq -0x848(%rbp), %rdi
callq 0x229b0
jmp 0x6764
movq -0x848(%rbp), %rax
movq %rax, -0xb48(%rbp)
cmpq $0x0, %rax
je 0x6795
movq -0xb48(%rbp), %rdi
callq 0x22d90
movq -0xb48(%rbp), %rdi
movl $0x38, %esi
callq 0x4370
movq -0x778(%rbp), %rax
movq %rax, -0xb50(%rbp)
cmpq $0x0, %rax
je 0x67c6
movq -0xb50(%rbp), %rdi
callq 0x18270
movq -0xb50(%rbp), %rdi
movl $0x220, %esi            # imm = 0x220
callq 0x4370
movq -0x7f0(%rbp), %rax
movq %rax, -0xb58(%rbp)
cmpq $0x0, %rax
je 0x67f7
movq -0xb58(%rbp), %rdi
callq 0x1ec90
movq -0xb58(%rbp), %rdi
movl $0x90, %esi
callq 0x4370
movq -0x7a8(%rbp), %rax
movq %rax, -0xb60(%rbp)
cmpq $0x0, %rax
je 0x6828
movq -0xb60(%rbp), %rdi
callq 0xa9b0
movq -0xb60(%rbp), %rdi
movl $0x30, %esi
callq 0x4370
movq -0x7a0(%rbp), %rdi
callq 0x16790
jmp 0x6836
movq -0x748(%rbp), %rax
movq %rax, -0xb68(%rbp)
cmpq $0x0, %rax
je 0x6867
movq -0xb68(%rbp), %rdi
callq 0x17e30
movq -0xb68(%rbp), %rdi
movl $0x238, %esi            # imm = 0x238
callq 0x4370
leaq -0x798(%rbp), %rdi
callq 0x41e0
leaq -0x738(%rbp), %rdi
callq 0x41e0
jmp 0x68c1
movq -0xb40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x38, %esi
callq 0x4370
leaq -0x798(%rbp), %rdi
callq 0x41e0
leaq -0x738(%rbp), %rdi
callq 0x41e0
jmp 0x6d64
leaq 0x1d7ab(%rip), %rsi     # 0x24073
leaq -0x90(%rbp), %rdi
callq 0x7820
movb %al, -0xb69(%rbp)
jmp 0x68dc
movb -0xb69(%rbp), %al
testb $0x1, %al
jne 0x68eb
jmp 0x6d5d
leaq -0x868(%rbp), %rdi
callq 0x4570
movl $0x58, %edi
callq 0x4360
movq %rax, -0xb78(%rbp)
jmp 0x690a
movq -0xb78(%rbp), %rdi
callq 0x7850
jmp 0x6918
movq -0xb78(%rbp), %rax
movq %rax, -0x870(%rbp)
movl $0x38, %edi
callq 0x4360
movq %rax, -0xb80(%rbp)
jmp 0x6939
movq -0xb80(%rbp), %rdi
callq 0x227a0
jmp 0x6947
movq -0xb80(%rbp), %rax
movq %rax, -0x878(%rbp)
movq -0x878(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x22c20
jmp 0x6967
movq -0x878(%rbp), %rdi
movq -0x870(%rbp), %rsi
callq 0x22d50
jmp 0x697c
movq -0x878(%rbp), %rdi
callq 0x22840
jmp 0x698a
movl $0x30, %edi
callq 0x4360
movq %rax, -0xb88(%rbp)
jmp 0x699d
movq -0xb88(%rbp), %rdi
callq 0x9d70
jmp 0x69ab
movq -0xb88(%rbp), %rax
movq %rax, -0x880(%rbp)
movq -0x880(%rbp), %rdi
movq -0x870(%rbp), %rsi
callq 0xa8f0
jmp 0x69ce
movq -0x880(%rbp), %rsi
leaq -0x8a0(%rbp), %rdi
callq 0xa980
jmp 0x69e3
leaq 0x1d791(%rip), %rsi     # 0x2417b
leaq -0x8a0(%rbp), %rdi
callq 0x7820
movb %al, -0xb89(%rbp)
jmp 0x69fe
leaq -0x8a0(%rbp), %rdi
callq 0x41e0
movb -0xb89(%rbp), %al
testb $0x1, %al
jne 0x6a19
jmp 0x6b1f
movq 0x2a5c8(%rip), %rdi     # 0x30fe8
leaq 0x1d758(%rip), %rsi     # 0x2417f
callq 0x4340
movq %rax, -0xb98(%rbp)
jmp 0x6a35
movq -0xb98(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42e0
movq %rax, -0xba0(%rbp)
jmp 0x6a4e
movq -0xba0(%rbp), %rdi
movq 0x2a54c(%rip), %rsi     # 0x30fa8
callq 0x43b0
jmp 0x6a63
movl $0x1, %edi
callq 0x4470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x6d4f
movq -0xb78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x58, %esi
callq 0x4370
jmp 0x6d4f
movq -0xb80(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x38, %esi
callq 0x4370
jmp 0x6d4f
movq -0xb88(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x30, %esi
callq 0x4370
jmp 0x6d4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x8a0(%rbp), %rdi
callq 0x41e0
jmp 0x6d4f
movq -0x880(%rbp), %rsi
leaq -0x8c0(%rbp), %rdi
callq 0x6e10
jmp 0x6b34
leaq -0x868(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
movq %rsi, -0xbb0(%rbp)
callq 0x4490
movq -0xbb0(%rbp), %rdi
callq 0x41e0
movl $0x90, %edi
callq 0x4360
movq %rax, -0xba8(%rbp)
jmp 0x6b6d
movq -0xba8(%rbp), %rdi
callq 0x18310
jmp 0x6b7b
movq -0xba8(%rbp), %rax
movq %rax, -0x8c8(%rbp)
movq -0x8c8(%rbp), %rdi
leaq -0x868(%rbp), %rsi
callq 0x1e1d0
jmp 0x6b9e
movq -0x8c8(%rbp), %rax
movq %rax, -0xbc0(%rbp)
leaq -0x8e9(%rbp), %rdi
movq %rdi, -0xbb8(%rbp)
callq 0x46e0
movq -0xbb8(%rbp), %rdx
leaq 0x1d5d9(%rip), %rsi     # 0x241a6
leaq -0x8e8(%rbp), %rdi
callq 0x7670
jmp 0x6bdb
movq -0xbc0(%rbp), %rdi
leaq -0x8e8(%rbp), %rsi
callq 0x1e3f0
jmp 0x6bf0
leaq -0x8e8(%rbp), %rdi
callq 0x41e0
leaq -0x8e9(%rbp), %rdi
callq 0x43d0
movq -0x8c8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1e420
jmp 0x6c1a
movq -0x8c8(%rbp), %rdi
movq -0x870(%rbp), %rsi
callq 0x1e4e0
jmp 0x6c2f
movq -0x8c8(%rbp), %rdi
callq 0x1dff0
jmp 0x6c3d
movq -0x8c8(%rbp), %rax
movq %rax, -0xbc8(%rbp)
cmpq $0x0, %rax
je 0x6c6e
movq -0xbc8(%rbp), %rdi
callq 0x1ec90
movq -0xbc8(%rbp), %rdi
movl $0x90, %esi
callq 0x4370
movq -0x880(%rbp), %rax
movq %rax, -0xbd0(%rbp)
cmpq $0x0, %rax
je 0x6c9f
movq -0xbd0(%rbp), %rdi
callq 0xa9b0
movq -0xbd0(%rbp), %rdi
movl $0x30, %esi
callq 0x4370
movq -0x878(%rbp), %rax
movq %rax, -0xbd8(%rbp)
cmpq $0x0, %rax
je 0x6cd0
movq -0xbd8(%rbp), %rdi
callq 0x22d90
movq -0xbd8(%rbp), %rdi
movl $0x38, %esi
callq 0x4370
movq -0x870(%rbp), %rdi
callq 0x16790
jmp 0x6cde
leaq -0x868(%rbp), %rdi
callq 0x41e0
jmp 0x6d5d
movq -0xba8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl $0x90, %esi
callq 0x4370
jmp 0x6d4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x6d43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x8e8(%rbp), %rdi
callq 0x41e0
leaq -0x8e9(%rbp), %rdi
callq 0x43d0
leaq -0x868(%rbp), %rdi
callq 0x41e0
jmp 0x6d64
xorl %edi, %edi
callq 0x4470
leaq -0xd0(%rbp), %rdi
callq 0x41e0
leaq -0xb0(%rbp), %rdi
callq 0x41e0
leaq -0x90(%rbp), %rdi
callq 0x41e0
leaq -0x70(%rbp), %rdi
callq 0x41e0
leaq -0x50(%rbp), %rdi
callq 0x41e0
leaq -0x30(%rbp), %rdi
callq 0x41e0
movq -0x128(%rbp), %rdi
callq 0x46d0
nop