// File: /workspace/github_cpp_makefile_star2_O1/EmbeddedPaul166[P]SNMP-Agent/src/parser.cpp
// Function: Parser::parseCustomDataTypeInformation()
void Parser::parseCustomDataTypeInformation()
{ 
    std::smatch match; 
    std::regex patternName("(\\w*) ::=");
    std::regex patternSequence("SEQUENCE");
    std::regex patternChoice("CHOICE");
    
    std::regex patternBrace("(\\d+)\\)\\)");
    std::regex patternBraceTwo("(\\d+)\\)");
    
    std::regex patternInteger("INTEGER");
    std::regex patternOctetString("OCTET STRING");
    std::regex patternObjectIdentifier("OBJECT IDENTIFIER");
    std::regex patternNULL("NULL");
    
    std::regex patternImplicit("IMPLICIT");
    std::regex patternExplicit("EXPLICIT");
    
    std::regex patternUniversal("UNIVERSAL");
    std::regex patternApplication("APPLICATION");
    std::regex patternContextSpecific("CONTEXT-SPECIFIC");
    std::regex patternPrivate("PRIVATE");
    
    std::regex patternSingleElementSequence("\\s*(\\w*?[^{},=])\\n\\s*.*?[^{}]\\n");
    std::regex patternSingleElementChoice("(\\w+)\\n");
    
    std::regex patternTagNumber("(\\d+)\\]");
    
    
    DataType dataType;
    
    m_customDataTypeNameVector.clear();
    
    for (std::vector<std::string>::size_type i = m_customDataTypeStringVector.size() - 1; i != (std::vector<std::string>::size_type) - 1; i--)
    {
        std::string & dataString = m_customDataTypeStringVector[i];
        
        if (std::regex_search(dataString, match, patternName))
        {
           m_customDataTypeNameVector.push_back(match.str(1));
        }
        
        if (std::regex_search(dataString, match, patternSequence))
        {
            
            dataType.m_baseType = BaseDataType::SEQUENCE;
            dataType.m_complexity = EncodingComplexity::CONSTRUCTED;
            std::sregex_iterator beginS(dataString.cbegin(), dataString.cend(), patternSingleElementSequence); 
            std::sregex_iterator endS;
            for (std::sregex_iterator it = beginS; it != endS; it++)
            {
                match = *it;
                dataType.m_nodeNameList.push_back(match.str(1));
            }
        }
        else if (std::regex_search(dataString, match, patternChoice))
        {
            dataType.m_baseType = BaseDataType::CHOICE;
            dataType.m_complexity = EncodingComplexity::CONSTRUCTED;
            std::sregex_iterator beginC(dataString.cbegin(), dataString.cend(), patternSingleElementChoice); 
            std::sregex_iterator endC;
            for (std::sregex_iterator it = beginC; it != endC; it++)
            {
                match = *it;
                dataType.m_nodeNameList.push_back(match.str(1));
            }
        
        }
        else if (std::regex_search(dataString, match, patternInteger))
        {
            dataType.m_baseType = BaseDataType::INTEGER;
            dataType.m_complexity = EncodingComplexity::PRIMITIVE;
            if (std::regex_search(dataString, match, patternBrace))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_lengthLimit;
            }
            else if (std::regex_search(dataString, match, patternBraceTwo))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_rangeLimitUpper;
            }
        }
        else if (std::regex_search(dataString, match, patternOctetString))
        {
            dataType.m_baseType = BaseDataType::OCTET_STRING;
            dataType.m_complexity = EncodingComplexity::PRIMITIVE;
            if (std::regex_search(dataString, match, patternBrace))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_lengthLimit;
            }
            else if (std::regex_search(dataString, match, patternBraceTwo))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_rangeLimitUpper;
            }
        }
        else if (std::regex_search(dataString, match, patternObjectIdentifier))
        {
            dataType.m_baseType = BaseDataType::OBJECT_IDENTIFIER;
            dataType.m_complexity = EncodingComplexity::PRIMITIVE;
            if (std::regex_search(dataString, match, patternBrace))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_lengthLimit;
            }
            else if (std::regex_search(dataString, match, patternBraceTwo))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_rangeLimitUpper;
            }
        }
        else
        {
            dataType.m_baseType = BaseDataType::NULL_D;
            dataType.m_complexity = EncodingComplexity::PRIMITIVE;
            if (std::regex_search(dataString, match, patternBrace))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_lengthLimit;
            }
            else if (std::regex_search(dataString, match, patternBraceTwo))
            {
                std::stringstream conv(match.str(1));     
                conv >> dataType.m_rangeLimitUpper;
            }
        }
        
        if (std::regex_search(dataString, match, patternImplicit))
        {
            dataType.m_encodingType = EncodingType::IMPLICIT;
        }
        else if (std::regex_search(dataString, match, patternExplicit))
        {
            dataType.m_encodingType = EncodingType::EXPLICIT;
        }
        else
        {
            dataType.m_encodingType = EncodingType::UNIVERSAL;
        }
        
        if (std::regex_search(dataString, match, patternUniversal))
        {
            dataType.m_visibility = DataVisibility::UNIVERSAL;
        }
        else if (std::regex_search(dataString, match, patternApplication))
        {
            dataType.m_visibility = DataVisibility::APPLICATION;
        }
        else if (std::regex_search(dataString, match, patternPrivate))
        {
            dataType.m_visibility = DataVisibility::PRIVATE;
        }
        else
        {
            dataType.m_visibility = DataVisibility::CONTEXT_SPECIFIC;
        }
        
        if (std::regex_search(dataString, match, patternTagNumber))
        {
            int tag = std::stoi(match.str(1));
            dataType.m_tag = tag;
        }
        
        m_customDataTypeVector.push_back(dataType);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x578, %rsp            # imm = 0x578
movq %rdi, 0x68(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, (%rsp)
leaq 0x114d3(%rip), %rsi     # 0x1f744
leaq 0x498(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x11455(%rip), %rsi     # 0x1f6df
leaq 0x478(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x11291(%rip), %rsi     # 0x1f534
leaq 0x458(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x11492(%rip), %rsi     # 0x1f74e
leaq 0x150(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x11483(%rip), %rsi     # 0x1f758
leaq 0x130(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113d7(%rip), %rsi     # 0x1f6c5
leaq 0x438(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113c6(%rip), %rsi     # 0x1f6cd
leaq 0x418(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x11246(%rip), %rsi     # 0x1f566
leaq 0x3f8(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113a1(%rip), %rsi     # 0x1f6da
leaq 0x4d8(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x1140e(%rip), %rsi     # 0x1f760
leaq 0x3d8(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113fe(%rip), %rsi     # 0x1f769
leaq 0x3b8(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113ee(%rip), %rsi     # 0x1f772
leaq 0x398(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113df(%rip), %rsi     # 0x1f77c
leaq 0x378(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113d2(%rip), %rsi     # 0x1f788
leaq 0x4b8(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113ca(%rip), %rsi     # 0x1f799
leaq 0x358(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113b9(%rip), %rsi     # 0x1f7a1
leaq 0x338(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x112a2(%rip), %rsi     # 0x1f6a3
leaq 0x318(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0x113a7(%rip), %rsi     # 0x1f7c1
leaq 0x2f8(%rsp), %rdi
movl $0x10, %edx
callq 0xf4b6
leaq 0xd8(%rsp), %rdi
callq 0x1dc38
movq 0x68(%rsp), %rbx
leaq 0x18(%rbx), %rdi
movq 0x18(%rbx), %rsi
movq %rdi, 0x128(%rsp)
callq 0x1d08c
movq 0x50(%rbx), %r14
subq 0x48(%rbx), %r14
sarq $0x5, %r14
leaq 0x170(%rsp), %rax
addq $0x80, %rax
movq %rax, 0x60(%rsp)
leaq 0xc8(%rsp), %rbp
subq $0x1, %r14
jb 0xeeed
movq 0x68(%rsp), %rax
movq 0x48(%rax), %rbx
movq %r14, %r13
shlq $0x5, %r13
movq (%rbx,%r13), %rdi
movq 0x8(%rbx,%r13), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x498(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xe504
movl $0x1, %edx
leaq 0x170(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
movq 0x128(%rsp), %rdi
movq %r12, %rsi
callq 0x1cc5c
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xe504
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x5320
addq %r13, %rbx
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x478(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xe680
movabsq $0x100000005, %rax      # imm = 0x100000005
movq %rax, 0xd8(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x170(%rsp), %rdi
leaq 0x338(%rsp), %rcx
xorl %r8d, %r8d
callq 0xf598
leaq 0x30(%rsp), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, 0x2c(%rsp)
movaps %xmm0, 0x20(%rsp)
movups 0x170(%rsp), %xmm0
movups 0x17c(%rsp), %xmm1
movups %xmm1, 0x7c(%rsp)
movaps %xmm0, 0x70(%rsp)
leaq 0x90(%rsp), %r13
movq %r13, %rdi
leaq 0x190(%rsp), %rsi
callq 0x1b778
movq 0x1a8(%rsp), %rax
movq %rax, 0xa8(%rsp)
leaq 0x70(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1ca70
testb %al, %al
leaq 0xf8(%rsp), %r12
jne 0xe7f4
movq %rsp, %rdi
movq %r13, %rsi
callq 0xf812
movq 0xa8(%rsp), %rax
movq %rax, 0x18(%rsp)
movl $0x1, %edx
leaq 0xb8(%rsp), %r15
movq %r15, %rdi
movq %rsp, %rsi
callq 0xf51e
movq %r12, %rdi
movq %r15, %rsi
callq 0x1cc5c
movq 0xb8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xe633
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x5320
leaq 0x538(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %edx, %edx
callq 0xf660
movq 0x558(%rsp), %rdi
testq %rdi, %rdi
je 0xe664
movq 0x568(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
leaq 0x70(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1ca70
testb %al, %al
je 0xe5db
jmp 0xe7f4
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x458(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xe84e
movabsq $0x100000007, %rax      # imm = 0x100000007
movq %rax, 0xd8(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x170(%rsp), %rdi
leaq 0x318(%rsp), %rcx
xorl %r8d, %r8d
callq 0xf598
leaq 0x30(%rsp), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, 0x2c(%rsp)
movaps %xmm0, 0x20(%rsp)
movups 0x170(%rsp), %xmm0
movups 0x17c(%rsp), %xmm1
movups %xmm1, 0x7c(%rsp)
movaps %xmm0, 0x70(%rsp)
leaq 0x90(%rsp), %r12
movq %r12, %rdi
leaq 0x190(%rsp), %rsi
callq 0x1b778
leaq 0x20(%rsp), %rsi
movq 0x1a8(%rsp), %rax
movq %rax, 0xa8(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x1ca70
testb %al, %al
leaq 0xf8(%rsp), %r13
jne 0xe7f4
movq %rsp, %rdi
movq %r12, %rsi
callq 0xf812
movq 0xa8(%rsp), %rax
movq %rax, 0x18(%rsp)
movl $0x1, %edx
leaq 0xb8(%rsp), %r15
movq %r15, %rdi
movq %rsp, %rsi
callq 0xf51e
movq %r13, %rdi
movq %r15, %rsi
callq 0x1cc5c
movq 0xb8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xe7ac
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x5320
leaq 0x4f8(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %edx, %edx
callq 0xf660
movq 0x518(%rsp), %rdi
testq %rdi, %rdi
je 0xe7dd
movq 0x528(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
leaq 0x70(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1ca70
testb %al, %al
je 0xe754
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xe811
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0xe828
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0xed12
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
jmp 0xed12
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x438(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xe902
movq $0x0, 0xd8(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x150(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xe9b6
movl $0x1, %edx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
leaq 0x170(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
movl $0x18, %edx
callq 0x54c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xe8ed
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5320
movq %r13, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x5210
jmp 0xecf9
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x418(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xea39
movq $0x1, 0xd8(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x150(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xeaed
movl $0x1, %edx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
leaq 0x170(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
movl $0x18, %edx
callq 0x54c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xe9a1
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5320
movq %r13, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x5210
jmp 0xecf9
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x130(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xed12
movl $0x1, %edx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
leaq 0x170(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
movl $0x18, %edx
callq 0x54c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xea24
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5320
movq %r13, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x5210
jmp 0xecf9
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x3f8(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xeb70
movq $0x2, 0xd8(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x150(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xebff
movl $0x1, %edx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
leaq 0x170(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
movl $0x18, %edx
callq 0x54c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xead8
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5320
movq %r13, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x5210
jmp 0xecf9
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x130(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xed12
movl $0x1, %edx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
leaq 0x170(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
movl $0x18, %edx
callq 0x54c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xeb5b
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5320
movq %r13, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x5210
jmp 0xecf9
movq $0x4, 0xd8(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x150(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xec7f
movl $0x1, %edx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
leaq 0x170(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
movl $0x18, %edx
callq 0x54c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xebea
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5320
movq %r13, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x5210
jmp 0xecf9
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x130(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xed12
movl $0x1, %edx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
leaq 0x170(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
movl $0x18, %edx
callq 0x54c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xec6d
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5320
movq %r13, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x5210
jmp 0xecf9
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x130(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xed12
movl $0x1, %edx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rsp, %rsi
callq 0xf51e
leaq 0x170(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
movl $0x18, %edx
callq 0x54c0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xece9
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5320
movq %r13, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x5210
movq %r13, %rdi
movq 0x1c275(%rip), %rsi     # 0x2af78
callq 0x52a0
movq 0x60(%rsp), %rdi
callq 0x5100
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x3d8(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xed40
movl $0x1, 0xe0(%rsp)
jmp 0xed79
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x3b8(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xed6e
movl $0x2, 0xe0(%rsp)
jmp 0xed79
movl $0x0, 0xe0(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x398(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xeda7
movl $0x0, 0xe4(%rsp)
jmp 0xee0e
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x378(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xedd5
movl $0x1, 0xe4(%rsp)
jmp 0xee0e
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x358(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xee03
movl $0x3, 0xe4(%rsp)
jmp 0xee0e
movl $0x2, 0xe4(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
movq %rsp, %rdx
leaq 0x2f8(%rsp), %rcx
xorl %r8d, %r8d
callq 0x1ab53
testb %al, %al
je 0xeed6
movl $0x1, %edx
leaq 0x170(%rsp), %rdi
movq %rsp, %rsi
callq 0xf51e
movq 0x170(%rsp), %rbx
callq 0x5060
movq %rax, %r13
movl (%rax), %r12d
movl $0x0, (%rax)
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
movl $0xa, %edx
callq 0x5430
cmpq %rbx, 0x20(%rsp)
je 0xf00c
movq %rax, %rbp
movslq %ebp, %rax
cmpq %rbp, %rax
jne 0xf018
movl (%r13), %eax
cmpl $0x22, %eax
je 0xf018
testl %eax, %eax
jne 0xeea2
movl %r12d, (%r13)
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %r12
cmpq %r12, %rdi
je 0xeec7
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x5320
movl %ebp, 0xf4(%rsp)
leaq 0xc8(%rsp), %rbp
movq 0x68(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0xf7c2
jmp 0xe47a
leaq 0xd8(%rsp), %rdi
callq 0x1dc56
leaq 0x2f8(%rsp), %rdi
callq 0xf700
leaq 0x318(%rsp), %rdi
callq 0xf700
leaq 0x338(%rsp), %rdi
callq 0xf700
leaq 0x358(%rsp), %rdi
callq 0xf700
leaq 0x4b8(%rsp), %rdi
callq 0xf700
leaq 0x378(%rsp), %rdi
callq 0xf700
leaq 0x398(%rsp), %rdi
callq 0xf700
leaq 0x3b8(%rsp), %rdi
callq 0xf700
leaq 0x3d8(%rsp), %rdi
callq 0xf700
leaq 0x4d8(%rsp), %rdi
callq 0xf700
leaq 0x3f8(%rsp), %rdi
callq 0xf700
leaq 0x418(%rsp), %rdi
callq 0xf700
leaq 0x438(%rsp), %rdi
callq 0xf700
leaq 0x130(%rsp), %rdi
callq 0xf700
leaq 0x150(%rsp), %rdi
callq 0xf700
leaq 0x458(%rsp), %rdi
callq 0xf700
leaq 0x478(%rsp), %rdi
callq 0xf700
leaq 0x498(%rsp), %rdi
callq 0xf700
movq (%rsp), %rdi
testq %rdi, %rdi
je 0xeffa
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
addq $0x578, %rsp            # imm = 0x578
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x107b6(%rip), %rdi     # 0x1f7c9
callq 0x5200
leaq 0x107aa(%rip), %rdi     # 0x1f7c9
callq 0x5460
jmp 0xf125
jmp 0xf14e
jmp 0xf1e2
jmp 0xf125
jmp 0xf14e
jmp 0xf1e2
jmp 0xf125
jmp 0xf14e
jmp 0xf1e2
jmp 0xf125
jmp 0xf14e
jmp 0xf1e2
jmp 0xf125
jmp 0xf14e
jmp 0xf1e2
jmp 0xf14e
jmp 0xf1e2
jmp 0xf125
jmp 0xf14e
jmp 0xf1e2
jmp 0xf125
movq %rax, %rbx
jmp 0xf248
movq %rax, %rbx
jmp 0xf255
movq %rax, %rbx
jmp 0xf262
movq %rax, %rbx
jmp 0xf26f
movq %rax, %rbx
jmp 0xf27c
movq %rax, %rbx
jmp 0xf289
movq %rax, %rbx
jmp 0xf296
movq %rax, %rbx
jmp 0xf2a3
movq %rax, %rbx
jmp 0xf2b0
movq %rax, %rbx
jmp 0xf2bd
movq %rax, %rbx
jmp 0xf2ca
movq %rax, %rbx
jmp 0xf2d7
movq %rax, %rbx
jmp 0xf2e4
movq %rax, %rbx
jmp 0xf2f1
movq %rax, %rbx
jmp 0xf2fe
movq %rax, %rbx
jmp 0xf30b
movq %rax, %rbx
jmp 0xf318
movq %rax, %rbx
jmp 0xf325
movq %rax, %rbx
jmp 0xf332
movq %rax, %rbx
movq 0x1be49(%rip), %rsi     # 0x2af78
leaq 0x170(%rsp), %rdi
callq 0x52a0
leaq 0x1f0(%rsp), %rdi
callq 0x5100
jmp 0xf23b
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xf23b
movq 0x30(%rsp), %rsi
jmp 0xf1b3
jmp 0xf1e2
jmp 0xf178
jmp 0xf1e2
jmp 0xf1e2
movq %rax, %rbx
jmp 0xf192
movq %rax, %rbx
jmp 0xf207
jmp 0xf1e2
jmp 0xf1e2
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xf192
movl %r12d, (%r13)
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xf23b
movq 0x180(%rsp), %rsi
incq %rsi
jmp 0xf236
jmp 0xf1e7
jmp 0xf1be
jmp 0xf1e7
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xf1ea
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x5320
jmp 0xf1ea
jmp 0xf1e7
movq %rax, %rbx
jmp 0xf23b
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xf207
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0xf21e
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0xf23b
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
leaq 0xd8(%rsp), %rdi
callq 0x1dc56
leaq 0x2f8(%rsp), %rdi
callq 0xf700
leaq 0x318(%rsp), %rdi
callq 0xf700
leaq 0x338(%rsp), %rdi
callq 0xf700
leaq 0x358(%rsp), %rdi
callq 0xf700
leaq 0x4b8(%rsp), %rdi
callq 0xf700
leaq 0x378(%rsp), %rdi
callq 0xf700
leaq 0x398(%rsp), %rdi
callq 0xf700
leaq 0x3b8(%rsp), %rdi
callq 0xf700
leaq 0x3d8(%rsp), %rdi
callq 0xf700
leaq 0x4d8(%rsp), %rdi
callq 0xf700
leaq 0x3f8(%rsp), %rdi
callq 0xf700
leaq 0x418(%rsp), %rdi
callq 0xf700
leaq 0x438(%rsp), %rdi
callq 0xf700
leaq 0x130(%rsp), %rdi
callq 0xf700
leaq 0x150(%rsp), %rdi
callq 0xf700
leaq 0x458(%rsp), %rdi
callq 0xf700
leaq 0x478(%rsp), %rdi
callq 0xf700
leaq 0x498(%rsp), %rdi
callq 0xf700
movq (%rsp), %rdi
testq %rdi, %rdi
je 0xf348
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x5320
movq %rbx, %rdi
callq 0x5550