// File: EmbeddedPaul166[P]SNMP-Agent/src/parser.cpp
// Function: Parser::parseDataType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
DataType Parser::parseDataType(std::string & dataTypeString)
{
    DataType dataType;
    std::regex patternName("\\w+");
    std::regex patternSequenceObject("(\\w+)\\n");
    std::regex patternBrace("\\(SIZE (.*?)\\)\\)");
    std::regex patternBraceTwo(" (.*?)\\)");
    std::regex patternInteger("INTEGER");
    std::regex patternOctetString("OCTET STRING");
    std::regex patternObjectIdentifier("OBJECT IDENTIFIER");
    std::regex patternNULL("NULL");
    std::smatch match;
    
    if (std::regex_search(dataTypeString, match, patternName))
    {
        std::string name = match.str(0);
        if (name == "SEQUENCE")
        {
            dataType.m_baseType = BaseDataType::SEQUENCE_OF;
            if (std::regex_search(dataTypeString, match, patternSequenceObject))
            {
                dataType.m_nodeNameList.push_back(match.str(1));
            }
            else
            {
                dataType.m_nodeNameList.push_back("Error");
            }
        }
        else if (std::regex_search(dataTypeString, match, patternInteger))
        {
            dataType.m_baseType = BaseDataType::INTEGER;
            if (std::regex_search(dataTypeString, match, patternBrace))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_lengthLimit;
            }
            else if (std::regex_search(dataTypeString, match, patternBraceTwo))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_rangeLimitUpper;
            }
        }
        else if (std::regex_search(dataTypeString, match, patternOctetString))
        {
            dataType.m_baseType = BaseDataType::OCTET_STRING;   
            if (std::regex_search(dataTypeString, match, patternBrace))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_lengthLimit;
            }
            else if (std::regex_search(dataTypeString, match, patternBraceTwo))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_rangeLimitUpper;
            }
        }
        else if (std::regex_search(dataTypeString, match, patternObjectIdentifier))
        {
            dataType.m_baseType = BaseDataType::OBJECT_IDENTIFIER;    
            if (std::regex_search(dataTypeString, match, patternBrace))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_lengthLimit;
            }
            else if (std::regex_search(dataTypeString, match, patternBraceTwo))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_rangeLimitUpper;
            }
        }
        else if (std::regex_search(dataTypeString, match, patternNULL))
        {
            dataType.m_baseType = BaseDataType::NULL_D;   
            if (std::regex_search(dataTypeString, match, patternBrace))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_lengthLimit;
            }
            else if (std::regex_search(dataTypeString, match, patternBraceTwo))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_rangeLimitUpper;
            }
        }
        else
        {
            for (std::vector<std::string>::size_type i = m_customDataTypeNameVector.size() - 1; i != (std::vector<std::string>::size_type) - 1; i--)
            {
                if (m_customDataTypeNameVector[i] == name)
                {
                    dataType = m_customDataTypeVector[i];
                }
         
                if (std::regex_search(dataTypeString, match, patternBrace))
                {
                    std::stringstream conv(match.str(1));     
                    conv >> dataType.m_lengthLimit;
                }
                else if (std::regex_search(dataTypeString, match, patternBraceTwo))
                {
                    std::stringstream conv(match.str(1));     
                    conv >> dataType.m_rangeLimitUpper;
                }
            }
        }
    }
    
    
    return dataType;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x12e0, %rsp           # imm = 0x12E0
movq %rdi, -0x1268(%rbp)
movq %rdi, %rax
movq %rax, -0x1260(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1258(%rbp)
movb $0x0, -0x19(%rbp)
callq 0x44a20
leaq 0x322dd(%rip), %rsi     # 0x48530
leaq -0x40(%rbp), %rdi
movl $0x10, %edx
callq 0x18ef0
jmp 0x16263
leaq 0x32469(%rip), %rsi     # 0x486d3
leaq -0x70(%rbp), %rdi
movl $0x10, %edx
callq 0x18ef0
jmp 0x1627a
leaq 0x3245a(%rip), %rsi     # 0x486db
leaq -0x90(%rbp), %rdi
movl $0x10, %edx
callq 0x18ef0
jmp 0x16294
leaq 0x32451(%rip), %rsi     # 0x486ec
leaq -0xb0(%rbp), %rdi
movl $0x10, %edx
callq 0x18ef0
jmp 0x162ae
leaq 0x32440(%rip), %rsi     # 0x486f5
leaq -0xd0(%rbp), %rdi
movl $0x10, %edx
callq 0x18ef0
jmp 0x162c8
leaq 0x3242e(%rip), %rsi     # 0x486fd
leaq -0xf0(%rbp), %rdi
movl $0x10, %edx
callq 0x18ef0
jmp 0x162e2
leaq 0x322ad(%rip), %rsi     # 0x48596
leaq -0x110(%rbp), %rdi
movl $0x10, %edx
callq 0x18ef0
jmp 0x162fc
leaq 0x32407(%rip), %rsi     # 0x4870a
leaq -0x130(%rbp), %rdi
movl $0x10, %edx
callq 0x18ef0
jmp 0x16316
leaq -0x150(%rbp), %rdi
callq 0x18eb0
jmp 0x16324
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x40(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x1269(%rbp)
jmp 0x16342
movb -0x1269(%rbp), %al
testb $0x1, %al
jne 0x16351
jmp 0x17093
xorl %eax, %eax
movl %eax, %edx
leaq -0x170(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x18ff0
jmp 0x1636a
leaq 0x3239e(%rip), %rsi     # 0x4870f
leaq -0x170(%rbp), %rdi
callq 0xeb60
movb %al, -0x126a(%rbp)
jmp 0x16385
movb -0x126a(%rbp), %al
testb $0x1, %al
jne 0x16394
jmp 0x165a4
movq -0x1268(%rbp), %rax
movl $0x6, (%rax)
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x70(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x126b(%rbp)
jmp 0x163bf
movb -0x126b(%rbp), %al
testb $0x1, %al
jne 0x163ce
jmp 0x164f8
movq -0x1268(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x1278(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x163fa
movq -0x1278(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x19300
jmp 0x1640f
leaq -0x190(%rbp), %rdi
callq 0x62e0
jmp 0x1659f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17189
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17162
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17159
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1714d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17141
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17135
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17129
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1711d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17111
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17105
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq -0x1268(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x1288(%rbp)
leaq -0x1b1(%rbp), %rdi
movq %rdi, -0x1280(%rbp)
callq 0x67a0
movq -0x1280(%rbp), %rdx
leaq 0x31f19(%rip), %rsi     # 0x48444
leaq -0x1b0(%rbp), %rdi
callq 0x8130
jmp 0x16539
movq -0x1288(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x19300
jmp 0x1654e
leaq -0x1b0(%rbp), %rdi
callq 0x62e0
leaq -0x1b1(%rbp), %rdi
callq 0x64d0
jmp 0x1659f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1658e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x62e0
leaq -0x1b1(%rbp), %rdi
callq 0x64d0
jmp 0x17085
jmp 0x17077
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0xd0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x1289(%rbp)
jmp 0x165c5
movb -0x1289(%rbp), %al
testb $0x1, %al
jne 0x165d4
jmp 0x167bd
movq -0x1268(%rbp), %rax
movl $0x0, (%rax)
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x90(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x128a(%rbp)
jmp 0x16602
movb -0x128a(%rbp), %al
testb $0x1, %al
jne 0x16611
jmp 0x166cd
leaq -0x360(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x1662b
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x1290(%rbp)
jmp 0x16642
movl -0x1290(%rbp), %edx
leaq -0x340(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x6690
jmp 0x1665d
leaq -0x360(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x10, %rsi
leaq -0x340(%rbp), %rdi
callq 0x62d0
jmp 0x16682
leaq -0x340(%rbp), %rdi
callq 0x6380
jmp 0x167b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x6380
jmp 0x17085
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x1291(%rbp)
jmp 0x166ee
movb -0x1291(%rbp), %al
testb $0x1, %al
jne 0x166fd
jmp 0x167b6
leaq -0x508(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16717
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x1298(%rbp)
jmp 0x1672e
movl -0x1298(%rbp), %edx
leaq -0x4e8(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x6690
jmp 0x16749
leaq -0x508(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x18, %rsi
leaq -0x4e8(%rbp), %rdi
callq 0x62d0
jmp 0x1676e
leaq -0x4e8(%rbp), %rdi
callq 0x6380
jmp 0x167b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x508(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x6380
jmp 0x17085
jmp 0x167b8
jmp 0x17075
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x1299(%rbp)
jmp 0x167de
movb -0x1299(%rbp), %al
testb $0x1, %al
jne 0x167ed
jmp 0x169d6
movq -0x1268(%rbp), %rax
movl $0x1, (%rax)
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x90(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x129a(%rbp)
jmp 0x1681b
movb -0x129a(%rbp), %al
testb $0x1, %al
jne 0x1682a
jmp 0x168e6
leaq -0x6b0(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16844
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x12a0(%rbp)
jmp 0x1685b
movl -0x12a0(%rbp), %edx
leaq -0x690(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x6690
jmp 0x16876
leaq -0x6b0(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x10, %rsi
leaq -0x690(%rbp), %rdi
callq 0x62d0
jmp 0x1689b
leaq -0x690(%rbp), %rdi
callq 0x6380
jmp 0x169d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x6b0(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x6380
jmp 0x17085
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12a1(%rbp)
jmp 0x16907
movb -0x12a1(%rbp), %al
testb $0x1, %al
jne 0x16916
jmp 0x169cf
leaq -0x858(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16930
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x12a8(%rbp)
jmp 0x16947
movl -0x12a8(%rbp), %edx
leaq -0x838(%rbp), %rdi
leaq -0x858(%rbp), %rsi
callq 0x6690
jmp 0x16962
leaq -0x858(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x18, %rsi
leaq -0x838(%rbp), %rdi
callq 0x62d0
jmp 0x16987
leaq -0x838(%rbp), %rdi
callq 0x6380
jmp 0x169cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x858(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x6380
jmp 0x17085
jmp 0x169d1
jmp 0x17073
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x110(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12a9(%rbp)
jmp 0x169f7
movb -0x12a9(%rbp), %al
testb $0x1, %al
jne 0x16a06
jmp 0x16bef
movq -0x1268(%rbp), %rax
movl $0x2, (%rax)
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x90(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12aa(%rbp)
jmp 0x16a34
movb -0x12aa(%rbp), %al
testb $0x1, %al
jne 0x16a43
jmp 0x16aff
leaq -0xa00(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16a5d
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x12b0(%rbp)
jmp 0x16a74
movl -0x12b0(%rbp), %edx
leaq -0x9e0(%rbp), %rdi
leaq -0xa00(%rbp), %rsi
callq 0x6690
jmp 0x16a8f
leaq -0xa00(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x10, %rsi
leaq -0x9e0(%rbp), %rdi
callq 0x62d0
jmp 0x16ab4
leaq -0x9e0(%rbp), %rdi
callq 0x6380
jmp 0x16bea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa00(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x9e0(%rbp), %rdi
callq 0x6380
jmp 0x17085
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12b1(%rbp)
jmp 0x16b20
movb -0x12b1(%rbp), %al
testb $0x1, %al
jne 0x16b2f
jmp 0x16be8
leaq -0xba8(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16b49
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x12b8(%rbp)
jmp 0x16b60
movl -0x12b8(%rbp), %edx
leaq -0xb88(%rbp), %rdi
leaq -0xba8(%rbp), %rsi
callq 0x6690
jmp 0x16b7b
leaq -0xba8(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x18, %rsi
leaq -0xb88(%rbp), %rdi
callq 0x62d0
jmp 0x16ba0
leaq -0xb88(%rbp), %rdi
callq 0x6380
jmp 0x16be8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xba8(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xb88(%rbp), %rdi
callq 0x6380
jmp 0x17085
jmp 0x16bea
jmp 0x17071
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x130(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12b9(%rbp)
jmp 0x16c10
movb -0x12b9(%rbp), %al
testb $0x1, %al
jne 0x16c1f
jmp 0x16e08
movq -0x1268(%rbp), %rax
movl $0x4, (%rax)
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x90(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12ba(%rbp)
jmp 0x16c4d
movb -0x12ba(%rbp), %al
testb $0x1, %al
jne 0x16c5c
jmp 0x16d18
leaq -0xd50(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16c76
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x12c0(%rbp)
jmp 0x16c8d
movl -0x12c0(%rbp), %edx
leaq -0xd30(%rbp), %rdi
leaq -0xd50(%rbp), %rsi
callq 0x6690
jmp 0x16ca8
leaq -0xd50(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x10, %rsi
leaq -0xd30(%rbp), %rdi
callq 0x62d0
jmp 0x16ccd
leaq -0xd30(%rbp), %rdi
callq 0x6380
jmp 0x16e03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd50(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd30(%rbp), %rdi
callq 0x6380
jmp 0x17085
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12c1(%rbp)
jmp 0x16d39
movb -0x12c1(%rbp), %al
testb $0x1, %al
jne 0x16d48
jmp 0x16e01
leaq -0xef8(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16d62
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x12c8(%rbp)
jmp 0x16d79
movl -0x12c8(%rbp), %edx
leaq -0xed8(%rbp), %rdi
leaq -0xef8(%rbp), %rsi
callq 0x6690
jmp 0x16d94
leaq -0xef8(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x18, %rsi
leaq -0xed8(%rbp), %rdi
callq 0x62d0
jmp 0x16db9
leaq -0xed8(%rbp), %rdi
callq 0x6380
jmp 0x16e01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xef8(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xed8(%rbp), %rdi
callq 0x6380
jmp 0x17085
jmp 0x16e03
jmp 0x1706f
movq -0x1258(%rbp), %rdi
addq $0x18, %rdi
callq 0x8200
subq $0x1, %rax
movq %rax, -0xf00(%rbp)
cmpq $-0x1, -0xf00(%rbp)
je 0x1706d
movq -0x1258(%rbp), %rdi
addq $0x18, %rdi
movq -0xf00(%rbp), %rsi
callq 0x82b0
movq %rax, %rdi
leaq -0x170(%rbp), %rsi
callq 0x8220
testb $0x1, %al
jne 0x16e5d
jmp 0x16e83
movq -0x1258(%rbp), %rdi
movq -0xf00(%rbp), %rsi
callq 0xb830
movq -0x1268(%rbp), %rdi
movq %rax, %rsi
callq 0x199a0
jmp 0x16e81
jmp 0x16e83
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x90(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12c9(%rbp)
jmp 0x16ea4
movb -0x12c9(%rbp), %al
testb $0x1, %al
jne 0x16eb3
jmp 0x16f6f
leaq -0x10a8(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16ecd
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x12d0(%rbp)
jmp 0x16ee4
movl -0x12d0(%rbp), %edx
leaq -0x1088(%rbp), %rdi
leaq -0x10a8(%rbp), %rsi
callq 0x6690
jmp 0x16eff
leaq -0x10a8(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x10, %rsi
leaq -0x1088(%rbp), %rdi
callq 0x62d0
jmp 0x16f24
leaq -0x1088(%rbp), %rdi
callq 0x6380
jmp 0x17054
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x10a8(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1088(%rbp), %rdi
callq 0x6380
jmp 0x17085
movq -0x18(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x18f90
movb %al, -0x12d1(%rbp)
jmp 0x16f90
movb -0x12d1(%rbp), %al
testb $0x1, %al
jne 0x16f9f
jmp 0x17052
leaq -0x1250(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x1, %edx
callq 0x18ff0
jmp 0x16fb9
movl $0x10, %edi
movl $0x8, %esi
callq 0x19a10
movl %eax, -0x12d8(%rbp)
jmp 0x16fd0
movl -0x12d8(%rbp), %edx
leaq -0x1230(%rbp), %rdi
leaq -0x1250(%rbp), %rsi
callq 0x6690
jmp 0x16feb
leaq -0x1250(%rbp), %rdi
callq 0x62e0
movq -0x1268(%rbp), %rsi
addq $0x18, %rsi
leaq -0x1230(%rbp), %rdi
callq 0x62d0
jmp 0x17010
leaq -0x1230(%rbp), %rdi
callq 0x6380
jmp 0x17052
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1250(%rbp), %rdi
callq 0x62e0
jmp 0x17085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1230(%rbp), %rdi
callq 0x6380
jmp 0x17085
jmp 0x17054
jmp 0x17056
movq -0xf00(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0xf00(%rbp)
jmp 0x16e23
jmp 0x1706f
jmp 0x17071
jmp 0x17073
jmp 0x17075
jmp 0x17077
leaq -0x170(%rbp), %rdi
callq 0x62e0
jmp 0x17093
leaq -0x170(%rbp), %rdi
callq 0x62e0
jmp 0x17105
movb $0x1, -0x19(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x195a0
leaq -0x130(%rbp), %rdi
callq 0x19570
leaq -0x110(%rbp), %rdi
callq 0x19570
leaq -0xf0(%rbp), %rdi
callq 0x19570
leaq -0xd0(%rbp), %rdi
callq 0x19570
leaq -0xb0(%rbp), %rdi
callq 0x19570
leaq -0x90(%rbp), %rdi
callq 0x19570
leaq -0x70(%rbp), %rdi
callq 0x19570
leaq -0x40(%rbp), %rdi
callq 0x19570
testb $0x1, -0x19(%rbp)
jne 0x17179
jmp 0x1716d
leaq -0x150(%rbp), %rdi
callq 0x195a0
leaq -0x130(%rbp), %rdi
callq 0x19570
leaq -0x110(%rbp), %rdi
callq 0x19570
leaq -0xf0(%rbp), %rdi
callq 0x19570
leaq -0xd0(%rbp), %rdi
callq 0x19570
leaq -0xb0(%rbp), %rdi
callq 0x19570
leaq -0x90(%rbp), %rdi
callq 0x19570
leaq -0x70(%rbp), %rdi
callq 0x19570
leaq -0x40(%rbp), %rdi
callq 0x19570
jmp 0x17189
movq -0x1268(%rbp), %rdi
callq 0x44a90
movq -0x1260(%rbp), %rax
addq $0x12e0, %rsp           # imm = 0x12E0
popq %rbp
retq
movq -0x1268(%rbp), %rdi
callq 0x44a90
movq -0x48(%rbp), %rdi
callq 0x6790
nop