// File: zeeev[P]DASVC/bamtools/src/utils/bamtools_options.cpp
// Function: BamTools::Options::Parse(int, char**, int)
void Options::Parse(int argc, char* argv[], int offset) {

    // initialize
    map<string, OptionValue>::const_iterator ovMapIter;
    map<string, OptionValue>::const_iterator checkMapIter;
    const int LAST_INDEX = argc - 1;
    ostringstream errorBuilder;
    bool foundError = false;
    char* end_ptr = NULL;
    const string ERROR_SPACER(7, ' ');

    // check if we should show the help menu
    bool showHelpMenu = false;
    if (argc > 1) {
        for (int i = 1; i < argc; i++) {
            const std::string argument = argv[i];
            if ( (argument == "-h") || (argument == "--help") || (argument == "help") ) 
                showHelpMenu = true;
        }
    } else showHelpMenu = true;

    if (showHelpMenu) 
        DisplayHelp();

    // check each argument
    for (int i = offset+1; i < argc; i++) {
      
        const string argument = argv[i];
        ovMapIter = m_optionsMap.find(argument);

        if (ovMapIter == m_optionsMap.end()) {
            errorBuilder << ERROR_SPACER << "An unrecognized argument was found: " << argument << std::endl;
            foundError = true;
        } else {

            *ovMapIter->second.pFoundArgument = true;

            // grab the value
            if (ovMapIter->second.StoreValue) {

                if (i < LAST_INDEX) {

                    // check if the next argument is really a command line option
                    const string val = argv[i + 1]; 
                    checkMapIter = m_optionsMap.find(val);

                    if (checkMapIter == m_optionsMap.end()) {
                        
                        ++i;
                        
                        if (ovMapIter->second.VariantValue.is_type<unsigned int>()) {
                            const unsigned int uint32 = (unsigned int)strtoul(val.c_str(), &end_ptr, 10);
                            unsigned int* varValue = (unsigned int*)ovMapIter->second.pValue;
                            *varValue = uint32;
                        } else if (ovMapIter->second.VariantValue.is_type<unsigned char>()) {
                            const unsigned char uint8 = (unsigned char)strtoul(val.c_str(), &end_ptr, 10);
                            unsigned char* varValue = (unsigned char*)ovMapIter->second.pValue;
                            *varValue = uint8;
                        } else if (ovMapIter->second.VariantValue.is_type<uint64_t>()) {
                            const uint64_t uint64 = strtoui64(val.c_str(), &end_ptr, 10);
                            uint64_t* varValue = (uint64_t*)ovMapIter->second.pValue;
                            *varValue = uint64;
                        } else if (ovMapIter->second.VariantValue.is_type<double>()) {
                            const double d = strtod(val.c_str(), &end_ptr);
                            double* varValue = (double*)ovMapIter->second.pValue;
                            *varValue = d;
                        } else if (ovMapIter->second.VariantValue.is_type<float>()) {
                            const float f = (float)strtod(val.c_str(), &end_ptr);
                            float* varValue = (float*)ovMapIter->second.pValue;
                            *varValue = f;
                        } else if (ovMapIter->second.VariantValue.is_type<string>()) {
                            string* pStringValue = (string*)ovMapIter->second.pValue;
                            *pStringValue = val;
                        } else if (ovMapIter->second.VariantValue.is_type<vector<string> >()) {
                            vector<string>* pVectorValue = (vector<string>*)ovMapIter->second.pValue;
                            pVectorValue->push_back(val);
                        } else {
                            printf("ERROR: Found an unsupported data type for argument %s when parsing the arguments.\n",
                                   argument.c_str());
                            exit(1);
                        }
                    } else {
                        errorBuilder << ERROR_SPACER << "The argument (" << argument
                                     << ") expects a value, but none was found." << endl;
                        foundError = true;
                    }
                } else {
                    errorBuilder << ERROR_SPACER << "The argument (" << argument
                                 << ") expects a value, but none was found." << endl;
                    foundError = true;
                }
            }
        }
    }

    // check if we missed any required parameters
    for (ovMapIter = m_optionsMap.begin(); ovMapIter != m_optionsMap.end(); ++ovMapIter) {
        if (ovMapIter->second.IsRequired && !*ovMapIter->second.pFoundArgument) {
            errorBuilder << ERROR_SPACER << ovMapIter->second.ValueTypeDescription
                         << " was not specified. Please use the " << ovMapIter->first << " parameter." << endl;
            foundError = true;
        }
    }

    // print the errors if any were found
    if (foundError) {
        printf("ERROR: Some problems were encountered when parsing the command line options:\n");
        printf("%s\n", errorBuilder.str().c_str());
        printf("For a complete list of command line options, type \"%s help %s\"\n", argv[0], argv[1]);
        exit(1);
    }
}

// Assembly:
subq $0x568, %rsp            # imm = 0x568
movl %edi, 0x564(%rsp)
movq %rsi, 0x558(%rsp)
movl %edx, 0x554(%rsp)
leaq 0x548(%rsp), %rdi
callq 0x10f870
leaq 0x540(%rsp), %rdi
callq 0x10f870
movl 0x564(%rsp), %eax
decl %eax
movl %eax, 0x53c(%rsp)
leaq 0x3c0(%rsp), %rdi
callq 0x869d0
movb $0x0, 0x3bf(%rsp)
movq $0x0, 0x3b0(%rsp)
leaq 0x38f(%rsp), %rdi
movq %rdi, 0x210(%rsp)
callq 0x86da0
movq 0x210(%rsp), %rcx
leaq 0x390(%rsp), %rdi
movl $0x7, %esi
movl $0x20, %edx
callq 0x864b0
jmp 0x10e2fe
leaq 0x38f(%rsp), %rdi
callq 0x867b0
movb $0x0, 0x37b(%rsp)
cmpl $0x1, 0x564(%rsp)
jle 0x10e4db
movl $0x1, 0x374(%rsp)
movl 0x374(%rsp), %eax
cmpl 0x564(%rsp), %eax
jge 0x10e4d9
movq 0x558(%rsp), %rax
movslq 0x374(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x200(%rsp)
leaq 0x34f(%rsp), %rdi
movq %rdi, 0x208(%rsp)
callq 0x86da0
movq 0x200(%rsp), %rsi
movq 0x208(%rsp), %rdx
leaq 0x350(%rsp), %rdi
callq 0x86a00
jmp 0x10e390
leaq 0x34f(%rsp), %rdi
callq 0x867b0
leaq 0x2548a(%rip), %rsi     # 0x13382e
leaq 0x350(%rsp), %rdi
callq 0xa9570
movb %al, 0x1ff(%rsp)
jmp 0x10e3ba
movb 0x1ff(%rsp), %al
testb $0x1, %al
jne 0x10e41b
jmp 0x10e3c7
leaq 0x25459(%rip), %rsi     # 0x133827
leaq 0x350(%rsp), %rdi
callq 0xa9570
movb %al, 0x1fe(%rsp)
jmp 0x10e3e4
movb 0x1fe(%rsp), %al
testb $0x1, %al
jne 0x10e41b
jmp 0x10e3f1
leaq 0x25431(%rip), %rsi     # 0x133829
leaq 0x350(%rsp), %rdi
callq 0xa9570
movb %al, 0x1fd(%rsp)
jmp 0x10e40e
movb 0x1fd(%rsp), %al
testb $0x1, %al
jne 0x10e41b
jmp 0x10e494
movb $0x1, 0x37b(%rsp)
jmp 0x10e494
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
leaq 0x38f(%rsp), %rdi
callq 0x867b0
jmp 0x10f201
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
leaq 0x34f(%rsp), %rdi
callq 0x867b0
jmp 0x10f1f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x86f68
jmp 0x10e4d4
leaq 0x350(%rsp), %rdi
callq 0x86f68
jmp 0x10e4a3
jmp 0x10e4a5
movl 0x374(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x374(%rsp)
jmp 0x10e32c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
jmp 0x10f1f0
jmp 0x10f1f0
jmp 0x10e4e3
movb $0x1, 0x37b(%rsp)
testb $0x1, 0x37b(%rsp)
je 0x10e4f6
callq 0x10d490
jmp 0x10e4f4
jmp 0x10e4f6
movl 0x554(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x348(%rsp)
movl 0x348(%rsp), %eax
cmpl 0x564(%rsp), %eax
jge 0x10ef39
movq 0x558(%rsp), %rax
movslq 0x348(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x1e8(%rsp)
leaq 0x327(%rsp), %rdi
movq %rdi, 0x1f0(%rsp)
callq 0x86da0
movq 0x1e8(%rsp), %rsi
movq 0x1f0(%rsp), %rdx
leaq 0x328(%rsp), %rdi
callq 0x86a00
jmp 0x10e56b
leaq 0x327(%rsp), %rdi
callq 0x867b0
leaq 0x58269(%rip), %rdi     # 0x1667e8
leaq 0x328(%rsp), %rsi
callq 0x10f890
movq %rax, 0x1e0(%rsp)
jmp 0x10e596
movq 0x1e0(%rsp), %rax
movq %rax, 0x310(%rsp)
leaq 0x318(%rsp), %rdi
leaq 0x310(%rsp), %rsi
callq 0x968b0
jmp 0x10e5bd
movq 0x318(%rsp), %rax
movq %rax, 0x548(%rsp)
leaq 0x58214(%rip), %rdi     # 0x1667e8
callq 0x96470
movq %rax, 0x1d8(%rsp)
jmp 0x10e5e3
movq 0x1d8(%rsp), %rax
movq %rax, 0x300(%rsp)
leaq 0x308(%rsp), %rdi
leaq 0x300(%rsp), %rsi
callq 0x968b0
jmp 0x10e60a
leaq 0x548(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x10f8c0
movb %al, 0x1d7(%rsp)
jmp 0x10e628
movb 0x1d7(%rsp), %al
testb $0x1, %al
jne 0x10e638
jmp 0x10e6f6
leaq 0x3c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x86640
movq %rax, 0x1c8(%rsp)
jmp 0x10e657
movq 0x1c8(%rsp), %rdi
leaq 0x25a94(%rip), %rsi     # 0x1340fa
callq 0x86700
movq %rax, 0x1c0(%rsp)
jmp 0x10e675
movq 0x1c0(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x86640
movq %rax, 0x1b8(%rsp)
jmp 0x10e694
movq 0x1b8(%rsp), %rdi
movq 0x568cd(%rip), %rsi     # 0x164f70
callq 0x86770
jmp 0x10e6aa
movb $0x1, 0x3bf(%rsp)
jmp 0x10eefe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
leaq 0x327(%rsp), %rdi
callq 0x867b0
jmp 0x10f1f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
jmp 0x10ef25
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x1b0(%rsp)
jmp 0x10e70d
movq 0x1b0(%rsp), %rax
movq 0x20(%rax), %rax
movb $0x1, (%rax)
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x1a8(%rsp)
jmp 0x10e733
movq 0x1a8(%rsp), %rax
testb $0x1, 0x51(%rax)
je 0x10eefc
movl 0x348(%rsp), %eax
cmpl 0x53c(%rsp), %eax
jge 0x10ee74
movq 0x558(%rsp), %rax
movslq 0x348(%rsp), %rcx
movq 0x8(%rax,%rcx,8), %rax
movq %rax, 0x198(%rsp)
leaq 0x2df(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x86da0
movq 0x198(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
leaq 0x2e0(%rsp), %rdi
callq 0x86a00
jmp 0x10e7aa
leaq 0x2df(%rsp), %rdi
callq 0x867b0
leaq 0x5802a(%rip), %rdi     # 0x1667e8
leaq 0x2e0(%rsp), %rsi
callq 0x10f890
movq %rax, 0x190(%rsp)
jmp 0x10e7d5
movq 0x190(%rsp), %rax
movq %rax, 0x2c8(%rsp)
leaq 0x2d0(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
callq 0x968b0
jmp 0x10e7fc
movq 0x2d0(%rsp), %rax
movq %rax, 0x540(%rsp)
leaq 0x57fd5(%rip), %rdi     # 0x1667e8
callq 0x96470
movq %rax, 0x188(%rsp)
jmp 0x10e822
movq 0x188(%rsp), %rax
movq %rax, 0x2b8(%rsp)
leaq 0x2c0(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x968b0
jmp 0x10e849
leaq 0x540(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x10f8c0
movb %al, 0x187(%rsp)
jmp 0x10e867
movb 0x187(%rsp), %al
testb $0x1, %al
jne 0x10e877
jmp 0x10edc3
movl 0x348(%rsp), %eax
incl %eax
movl %eax, 0x348(%rsp)
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x178(%rsp)
jmp 0x10e89e
movq 0x178(%rsp), %rdi
addq $0x58, %rdi
callq 0xbadb0
movb %al, 0x177(%rsp)
jmp 0x10e8b8
movb 0x177(%rsp), %al
testb $0x1, %al
jne 0x10e8c8
jmp 0x10e98d
leaq 0x2e0(%rsp), %rdi
callq 0x86320
movq %rax, 0x168(%rsp)
jmp 0x10e8df
movq 0x168(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movl $0xa, %edx
callq 0x86270
movl %eax, 0x2b4(%rsp)
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x160(%rsp)
jmp 0x10e917
movq 0x160(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x2a8(%rsp)
movl 0x2b4(%rsp), %ecx
movq 0x2a8(%rsp), %rax
movl %ecx, (%rax)
jmp 0x10edbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
leaq 0x2df(%rsp), %rdi
callq 0x867b0
jmp 0x10ef25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
leaq 0x2e0(%rsp), %rdi
callq 0x86f68
jmp 0x10ee6f
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x158(%rsp)
jmp 0x10e9a4
movq 0x158(%rsp), %rdi
addq $0x58, %rdi
callq 0x10f6c0
movb %al, 0x157(%rsp)
jmp 0x10e9be
movb 0x157(%rsp), %al
testb $0x1, %al
jne 0x10e9cb
jmp 0x10ea44
leaq 0x2e0(%rsp), %rdi
callq 0x86320
movq %rax, 0x148(%rsp)
jmp 0x10e9e2
movq 0x148(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movl $0xa, %edx
callq 0x86270
movb %al, 0x2a7(%rsp)
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x140(%rsp)
jmp 0x10ea1a
movq 0x140(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x298(%rsp)
movb 0x2a7(%rsp), %cl
movq 0x298(%rsp), %rax
movb %cl, (%rax)
jmp 0x10edbc
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x138(%rsp)
jmp 0x10ea5b
movq 0x138(%rsp), %rdi
addq $0x58, %rdi
callq 0x10f900
movb %al, 0x137(%rsp)
jmp 0x10ea75
movb 0x137(%rsp), %al
testb $0x1, %al
jne 0x10ea82
jmp 0x10eafe
leaq 0x2e0(%rsp), %rdi
callq 0x86320
movq %rax, 0x128(%rsp)
jmp 0x10ea99
movq 0x128(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movl $0xa, %edx
callq 0x869a0
movq %rax, 0x290(%rsp)
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x120(%rsp)
jmp 0x10ead2
movq 0x120(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x288(%rsp)
movq 0x290(%rsp), %rcx
movq 0x288(%rsp), %rax
movq %rcx, (%rax)
jmp 0x10edba
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x118(%rsp)
jmp 0x10eb15
movq 0x118(%rsp), %rdi
addq $0x58, %rdi
callq 0x10f780
movb %al, 0x117(%rsp)
jmp 0x10eb2f
movb 0x117(%rsp), %al
testb $0x1, %al
jne 0x10eb3c
jmp 0x10ebb6
leaq 0x2e0(%rsp), %rdi
callq 0x86320
movq %rax, 0x108(%rsp)
jmp 0x10eb53
movq 0x108(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
callq 0x865a0
movsd %xmm0, 0x280(%rsp)
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x100(%rsp)
jmp 0x10eb88
movq 0x100(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x278(%rsp)
movsd 0x280(%rsp), %xmm0
movq 0x278(%rsp), %rax
movsd %xmm0, (%rax)
jmp 0x10edb8
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0xf8(%rsp)
jmp 0x10ebcd
movq 0xf8(%rsp), %rdi
addq $0x58, %rdi
callq 0xbe930
movb %al, 0xf7(%rsp)
jmp 0x10ebe7
movb 0xf7(%rsp), %al
testb $0x1, %al
jne 0x10ebf4
jmp 0x10ec72
leaq 0x2e0(%rsp), %rdi
callq 0x86320
movq %rax, 0xe8(%rsp)
jmp 0x10ec0b
movq 0xe8(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
callq 0x865a0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x274(%rsp)
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0xe0(%rsp)
jmp 0x10ec44
movq 0xe0(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x268(%rsp)
movss 0x274(%rsp), %xmm0
movq 0x268(%rsp), %rax
movss %xmm0, (%rax)
jmp 0x10edb6
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0xd8(%rsp)
jmp 0x10ec89
movq 0xd8(%rsp), %rdi
addq $0x58, %rdi
callq 0xa9640
movb %al, 0xd7(%rsp)
jmp 0x10eca3
movb 0xd7(%rsp), %al
testb $0x1, %al
jne 0x10ecb0
jmp 0x10ecf7
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0xc8(%rsp)
jmp 0x10ecc7
movq 0xc8(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x260(%rsp)
movq 0x260(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x86070
jmp 0x10ecf2
jmp 0x10edb4
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0xc0(%rsp)
jmp 0x10ed0e
movq 0xc0(%rsp), %rdi
addq $0x58, %rdi
callq 0x10f940
movb %al, 0xbf(%rsp)
jmp 0x10ed28
movb 0xbf(%rsp), %al
testb $0x1, %al
jne 0x10ed35
jmp 0x10ed79
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0xb0(%rsp)
jmp 0x10ed4c
movq 0xb0(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x258(%rsp)
movq 0x258(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x91220
jmp 0x10ed77
jmp 0x10edb2
leaq 0x328(%rsp), %rdi
callq 0x86320
movq %rax, 0xa8(%rsp)
jmp 0x10ed90
movq 0xa8(%rsp), %rsi
leaq 0x25380(%rip), %rdi     # 0x13411f
xorl %eax, %eax
callq 0x86080
jmp 0x10eda8
movl $0x1, %edi
callq 0x868d0
jmp 0x10edb4
jmp 0x10edb6
jmp 0x10edb8
jmp 0x10edba
jmp 0x10edbc
jmp 0x10edbe
jmp 0x10ee5b
leaq 0x3c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x86640
movq %rax, 0xa0(%rsp)
jmp 0x10ede2
movq 0xa0(%rsp), %rdi
leaq 0x25381(%rip), %rsi     # 0x134172
callq 0x86700
movq %rax, 0x98(%rsp)
jmp 0x10ee00
movq 0x98(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x86640
movq %rax, 0x90(%rsp)
jmp 0x10ee1f
movq 0x90(%rsp), %rdi
leaq 0x25353(%rip), %rsi     # 0x134181
callq 0x86700
movq %rax, 0x88(%rsp)
jmp 0x10ee3d
movq 0x88(%rsp), %rdi
movq 0x56124(%rip), %rsi     # 0x164f70
callq 0x86770
jmp 0x10ee53
movb $0x1, 0x3bf(%rsp)
leaq 0x2e0(%rsp), %rdi
callq 0x86f68
jmp 0x10ee6a
jmp 0x10eefa
jmp 0x10ef25
leaq 0x3c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x86640
movq %rax, 0x80(%rsp)
jmp 0x10ee93
movq 0x80(%rsp), %rdi
leaq 0x252d0(%rip), %rsi     # 0x134172
callq 0x86700
movq %rax, 0x78(%rsp)
jmp 0x10eeae
movq 0x78(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x86640
movq %rax, 0x70(%rsp)
jmp 0x10eec7
movq 0x70(%rsp), %rdi
leaq 0x252ae(%rip), %rsi     # 0x134181
callq 0x86700
movq %rax, 0x68(%rsp)
jmp 0x10eedf
movq 0x68(%rsp), %rdi
movq 0x56085(%rip), %rsi     # 0x164f70
callq 0x86770
jmp 0x10eef2
movb $0x1, 0x3bf(%rsp)
jmp 0x10eefc
jmp 0x10eefe
leaq 0x328(%rsp), %rdi
callq 0x86f68
jmp 0x10ef0d
jmp 0x10ef0f
movl 0x348(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x348(%rsp)
jmp 0x10e507
leaq 0x328(%rsp), %rdi
callq 0x86f68
jmp 0x10ef34
jmp 0x10f1f0
leaq 0x578a8(%rip), %rdi     # 0x1667e8
callq 0x10f980
movq %rax, 0x60(%rsp)
jmp 0x10ef4c
movq 0x60(%rsp), %rax
movq %rax, 0x248(%rsp)
leaq 0x250(%rsp), %rdi
leaq 0x248(%rsp), %rsi
callq 0x968b0
jmp 0x10ef70
movq 0x250(%rsp), %rax
movq %rax, 0x548(%rsp)
leaq 0x57861(%rip), %rdi     # 0x1667e8
callq 0x96470
movq %rax, 0x58(%rsp)
jmp 0x10ef93
movq 0x58(%rsp), %rax
movq %rax, 0x238(%rsp)
leaq 0x240(%rsp), %rdi
leaq 0x238(%rsp), %rsi
callq 0x968b0
jmp 0x10efb7
leaq 0x548(%rsp), %rdi
leaq 0x240(%rsp), %rsi
callq 0x10f9b0
movb %al, 0x57(%rsp)
jmp 0x10efd2
movb 0x57(%rsp), %al
testb $0x1, %al
jne 0x10efdf
jmp 0x10f0fd
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x48(%rsp)
jmp 0x10eff3
movq 0x48(%rsp), %rax
testb $0x1, 0x52(%rax)
je 0x10f0e7
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x40(%rsp)
jmp 0x10f016
movq 0x40(%rsp), %rax
movq 0x20(%rax), %rax
testb $0x1, (%rax)
jne 0x10f0e7
leaq 0x3c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x86640
movq %rax, 0x38(%rsp)
jmp 0x10f044
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x30(%rsp)
jmp 0x10f058
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
addq $0x30, %rsi
callq 0x86640
movq %rax, 0x28(%rsp)
jmp 0x10f072
movq 0x28(%rsp), %rdi
leaq 0x2512a(%rip), %rsi     # 0x1341a8
callq 0x86700
movq %rax, 0x20(%rsp)
jmp 0x10f08a
leaq 0x548(%rsp), %rdi
callq 0x10f8e0
movq %rax, 0x18(%rsp)
jmp 0x10f09e
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdi
callq 0x86640
movq %rax, 0x10(%rsp)
jmp 0x10f0b4
movq 0x10(%rsp), %rdi
leaq 0x2510c(%rip), %rsi     # 0x1341cc
callq 0x86700
movq %rax, 0x8(%rsp)
jmp 0x10f0cc
movq 0x8(%rsp), %rdi
movq 0x55e98(%rip), %rsi     # 0x164f70
callq 0x86770
jmp 0x10f0df
movb $0x1, 0x3bf(%rsp)
jmp 0x10f0e9
leaq 0x548(%rsp), %rdi
callq 0x10f9d0
jmp 0x10f0f8
jmp 0x10ef80
testb $0x1, 0x3bf(%rsp)
je 0x10f1b6
leaq 0x250c6(%rip), %rdi     # 0x1341d8
xorl %eax, %eax
callq 0x86080
jmp 0x10f11b
leaq 0x218(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
callq 0x86740
jmp 0x10f132
leaq 0x218(%rsp), %rdi
callq 0x86320
movq %rax, (%rsp)
jmp 0x10f145
movq (%rsp), %rsi
leaq 0x24f65(%rip), %rdi     # 0x1340b5
xorl %eax, %eax
callq 0x86080
jmp 0x10f159
leaq 0x218(%rsp), %rdi
callq 0x86f68
jmp 0x10f168
movq 0x558(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x250a8(%rip), %rdi     # 0x134226
xorl %eax, %eax
callq 0x86080
jmp 0x10f187
movl $0x1, %edi
callq 0x868d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
leaq 0x218(%rsp), %rdi
callq 0x86f68
jmp 0x10f1b4
jmp 0x10f1f0
leaq 0x390(%rsp), %rdi
callq 0x86f68
jmp 0x10f1c5
leaq 0x3c0(%rsp), %rdi
callq 0x861b0
addq $0x568, %rsp            # imm = 0x568
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x380(%rsp)
movl %eax, 0x37c(%rsp)
jmp 0x10f201
leaq 0x390(%rsp), %rdi
callq 0x86f68
jmp 0x10f1ff
jmp 0x10f201
leaq 0x3c0(%rsp), %rdi
callq 0x861b0
jmp 0x10f210
jmp 0x10f212
movq 0x380(%rsp), %rdi
callq 0x86d80
movq %rax, %rdi
callq 0x91290
nopw (%rax,%rax)