// File: /workspace/github_cpp_makefile_star2_O3/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, %r12
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps %xmm0, 0x10(%rsp)
leaq 0x114be(%rip), %rsi     # 0x1e744
leaq 0x498(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x11440(%rip), %rsi     # 0x1e6df
leaq 0x478(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x1127c(%rip), %rsi     # 0x1e534
leaq 0x458(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x1147d(%rip), %rsi     # 0x1e74e
leaq 0x150(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x1146e(%rip), %rsi     # 0x1e758
leaq 0x130(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113c2(%rip), %rsi     # 0x1e6c5
leaq 0x438(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113b1(%rip), %rsi     # 0x1e6cd
leaq 0x418(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x11231(%rip), %rsi     # 0x1e566
leaq 0x3f8(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x1138c(%rip), %rsi     # 0x1e6da
leaq 0x4d8(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113f9(%rip), %rsi     # 0x1e760
leaq 0x3d8(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113e9(%rip), %rsi     # 0x1e769
leaq 0x3b8(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113d9(%rip), %rsi     # 0x1e772
leaq 0x398(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113ca(%rip), %rsi     # 0x1e77c
leaq 0x378(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113bd(%rip), %rsi     # 0x1e788
leaq 0x4b8(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113b5(%rip), %rsi     # 0x1e799
leaq 0x358(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x113a4(%rip), %rsi     # 0x1e7a1
leaq 0x338(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x1128d(%rip), %rsi     # 0x1e6a3
leaq 0x318(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0x11392(%rip), %rsi     # 0x1e7c1
leaq 0x2f8(%rsp), %rdi
movl $0x10, %edx
callq 0xe4b4
leaq 0xd8(%rsp), %rdi
callq 0x1cc78
leaq 0x18(%r12), %rdi
movq 0x18(%r12), %rsi
movq %rdi, 0x128(%rsp)
callq 0x1c0c4
movq 0x50(%r12), %r15
subq 0x48(%r12), %r15
sarq $0x5, %r15
leaq 0x170(%rsp), %rax
addq $0x80, %rax
movq %rax, 0x8(%rsp)
leaq 0xc8(%rsp), %rbp
subq $0x1, %r15
jb 0xdeef
movq 0x48(%r12), %rbx
movq %r15, %r14
shlq $0x5, %r14
movq (%rbx,%r14), %rdi
movq 0x8(%rbx,%r14), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x498(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xd518
movl $0x1, %edx
leaq 0x170(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
movq 0x128(%rsp), %rdi
movq %r13, %rsi
callq 0x1bcc4
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xd518
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x4320
addq %r14, %rbx
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x478(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xd6f1
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 0xe592
leaq 0x40(%rsp), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, 0x3c(%rsp)
movaps %xmm0, 0x30(%rsp)
movups 0x170(%rsp), %xmm0
movups 0x17c(%rsp), %xmm1
movups %xmm1, 0x7c(%rsp)
movaps %xmm0, 0x70(%rsp)
leaq 0x90(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0x1a7e2
leaq 0x30(%rsp), %rsi
movq 0x1a8(%rsp), %rax
movq %rax, 0xa8(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x1baec
testb %al, %al
leaq 0xf8(%rsp), %r14
jne 0xd697
leaq 0x10(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe80c
movq 0xa8(%rsp), %rax
movq %rax, 0x28(%rsp)
movl $0x1, %edx
leaq 0xb8(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
movq %r14, %rdi
movq %r13, %rsi
callq 0x1bcc4
movq 0xb8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xd64f
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x4320
leaq 0x538(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %edx, %edx
callq 0xe65a
movq 0x558(%rsp), %rdi
testq %rdi, %rdi
je 0xd680
movq 0x568(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
leaq 0x70(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x1baec
testb %al, %al
je 0xd5ee
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xd6b4
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0xd6cb
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0xdd44
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
jmp 0xdd44
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x458(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xd85a
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 0xe592
leaq 0x40(%rsp), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, 0x3c(%rsp)
movaps %xmm0, 0x30(%rsp)
movups 0x170(%rsp), %xmm0
movups 0x17c(%rsp), %xmm1
movups %xmm1, 0x7c(%rsp)
movaps %xmm0, 0x70(%rsp)
leaq 0x90(%rsp), %r14
movq %r14, %rdi
leaq 0x190(%rsp), %rsi
callq 0x1a7e2
movq 0x1a8(%rsp), %rax
movq %rax, 0xa8(%rsp)
leaq 0x70(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x1baec
testb %al, %al
jne 0xd697
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0xe80c
movq 0xa8(%rsp), %rax
movq %rax, 0x28(%rsp)
movl $0x1, %edx
leaq 0xb8(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0xf8(%rsp), %rdi
movq %r13, %rsi
callq 0x1bcc4
movq 0xb8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xd820
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x4320
leaq 0x4f8(%rsp), %rdi
leaq 0x70(%rsp), %rsi
xorl %edx, %edx
callq 0xe65a
movq 0x518(%rsp), %rdi
testq %rdi, %rdi
je 0xd7a8
movq 0x528(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
jmp 0xd7a8
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x438(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xd914
movq $0x0, 0xd8(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x150(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xd9ce
movl $0x1, %edx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0x170(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x44c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xd8ff
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4320
movq %r14, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x4210
jmp 0xdd2b
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x418(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xda55
movq $0x1, 0xd8(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x150(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdb0f
movl $0x1, %edx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0x170(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x44c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xd9b9
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4320
movq %r14, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x4210
jmp 0xdd2b
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x130(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdd44
movl $0x1, %edx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0x170(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x44c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xda40
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4320
movq %r14, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x4210
jmp 0xdd2b
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x3f8(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdb96
movq $0x2, 0xd8(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x150(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdc29
movl $0x1, %edx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0x170(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x44c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xdafa
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4320
movq %r14, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x4210
jmp 0xdd2b
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x130(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdd44
movl $0x1, %edx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0x170(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x44c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xdb81
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4320
movq %r14, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x4210
jmp 0xdd2b
movq $0x4, 0xd8(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x150(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdcad
movl $0x1, %edx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0x170(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x44c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xdc14
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4320
movq %r14, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x4210
jmp 0xdd2b
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x130(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdd44
movl $0x1, %edx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0x170(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x44c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xdc9b
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4320
movq %r14, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x4210
jmp 0xdd2b
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x130(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdd44
movl $0x1, %edx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
leaq 0x170(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x44c0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xdd1b
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4320
movq %r14, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x4210
movq %r14, %rdi
movq 0x1c243(%rip), %rsi     # 0x29f78
callq 0x42a0
movq 0x8(%rsp), %rdi
callq 0x4100
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x3d8(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
movl $0x1, %ecx
testb %al, %al
jne 0xdd90
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x3b8(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
movzbl %al, %ecx
addl %ecx, %ecx
movl %ecx, 0xe0(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x398(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
xorl %ecx, %ecx
testb %al, %al
jne 0xde09
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x378(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
movl $0x1, %ecx
testb %al, %al
jne 0xde09
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x358(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
movzbl %al, %ecx
orl $0x2, %ecx
movl %ecx, 0xe4(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
addq %rdi, %rsi
leaq 0x10(%rsp), %rdx
leaq 0x2f8(%rsp), %rcx
xorl %r8d, %r8d
callq 0x19bbf
testb %al, %al
je 0xdeda
movl $0x1, %edx
leaq 0x170(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe51c
movq 0x170(%rsp), %rbx
callq 0x4060
movq %rax, %r14
movl (%rax), %r13d
movl $0x0, (%rax)
movq %rbx, %rdi
leaq 0x30(%rsp), %rsi
movl $0xa, %edx
callq 0x4430
cmpq %rbx, 0x30(%rsp)
je 0xe00f
movq %rax, %rbp
movslq %ebp, %rax
cmpq %rbp, %rax
jne 0xe01b
movl (%r14), %eax
cmpl $0x22, %eax
je 0xe01b
testl %eax, %eax
jne 0xdea6
movl %r13d, (%r14)
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %r13
cmpq %r13, %rdi
je 0xdecb
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x4320
movl %ebp, 0xf4(%rsp)
leaq 0xc8(%rsp), %rbp
movq %r12, %rdi
leaq 0xd8(%rsp), %rsi
callq 0xe7bc
jmp 0xd48e
leaq 0xd8(%rsp), %rdi
callq 0x1cc96
leaq 0x2f8(%rsp), %rdi
callq 0xe6fa
leaq 0x318(%rsp), %rdi
callq 0xe6fa
leaq 0x338(%rsp), %rdi
callq 0xe6fa
leaq 0x358(%rsp), %rdi
callq 0xe6fa
leaq 0x4b8(%rsp), %rdi
callq 0xe6fa
leaq 0x378(%rsp), %rdi
callq 0xe6fa
leaq 0x398(%rsp), %rdi
callq 0xe6fa
leaq 0x3b8(%rsp), %rdi
callq 0xe6fa
leaq 0x3d8(%rsp), %rdi
callq 0xe6fa
leaq 0x4d8(%rsp), %rdi
callq 0xe6fa
leaq 0x3f8(%rsp), %rdi
callq 0xe6fa
leaq 0x418(%rsp), %rdi
callq 0xe6fa
leaq 0x438(%rsp), %rdi
callq 0xe6fa
leaq 0x130(%rsp), %rdi
callq 0xe6fa
leaq 0x150(%rsp), %rdi
callq 0xe6fa
leaq 0x458(%rsp), %rdi
callq 0xe6fa
leaq 0x478(%rsp), %rdi
callq 0xe6fa
leaq 0x498(%rsp), %rdi
callq 0xe6fa
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xdffd
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
addq $0x578, %rsp            # imm = 0x578
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x107b3(%rip), %rdi     # 0x1e7c9
callq 0x4200
leaq 0x107a7(%rip), %rdi     # 0x1e7c9
callq 0x4460
jmp 0xe120
jmp 0xe146
jmp 0xe1d8
jmp 0xe120
jmp 0xe146
jmp 0xe1d8
jmp 0xe120
jmp 0xe146
jmp 0xe1d8
jmp 0xe120
jmp 0xe146
jmp 0xe1d8
jmp 0xe120
jmp 0xe146
jmp 0xe1d8
jmp 0xe146
jmp 0xe1d8
jmp 0xe120
jmp 0xe146
jmp 0xe1d8
jmp 0xe120
movq %rax, %rbx
jmp 0xe23e
movq %rax, %rbx
jmp 0xe24b
movq %rax, %rbx
jmp 0xe258
movq %rax, %rbx
jmp 0xe265
movq %rax, %rbx
jmp 0xe272
movq %rax, %rbx
jmp 0xe27f
movq %rax, %rbx
jmp 0xe28c
movq %rax, %rbx
jmp 0xe299
movq %rax, %rbx
jmp 0xe2a6
movq %rax, %rbx
jmp 0xe2b3
movq %rax, %rbx
jmp 0xe2c0
movq %rax, %rbx
jmp 0xe2cd
movq %rax, %rbx
jmp 0xe2da
movq %rax, %rbx
jmp 0xe2e7
movq %rax, %rbx
jmp 0xe2f4
movq %rax, %rbx
jmp 0xe301
movq %rax, %rbx
jmp 0xe30e
movq %rax, %rbx
jmp 0xe31b
movq %rax, %rbx
movq 0x1be4e(%rip), %rsi     # 0x29f78
leaq 0x170(%rsp), %rdi
callq 0x42a0
movq 0x8(%rsp), %rdi
callq 0x4100
jmp 0xe231
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xe231
movq 0x40(%rsp), %rsi
jmp 0xe1a9
jmp 0xe1d8
jmp 0xe170
jmp 0xe1d8
jmp 0xe1d8
movq %rax, %rbx
jmp 0xe188
movq %rax, %rbx
jmp 0xe1fd
jmp 0xe1d8
jmp 0xe1d8
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0xe188
movl %r13d, (%r14)
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xe231
movq 0x180(%rsp), %rsi
incq %rsi
jmp 0xe22c
jmp 0xe1b4
jmp 0xe1dd
jmp 0xe1dd
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xe1e0
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x4320
jmp 0xe1e0
jmp 0xe1dd
movq %rax, %rbx
jmp 0xe231
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xe1fd
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0xe214
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0xe231
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
leaq 0xd8(%rsp), %rdi
callq 0x1cc96
leaq 0x2f8(%rsp), %rdi
callq 0xe6fa
leaq 0x318(%rsp), %rdi
callq 0xe6fa
leaq 0x338(%rsp), %rdi
callq 0xe6fa
leaq 0x358(%rsp), %rdi
callq 0xe6fa
leaq 0x4b8(%rsp), %rdi
callq 0xe6fa
leaq 0x378(%rsp), %rdi
callq 0xe6fa
leaq 0x398(%rsp), %rdi
callq 0xe6fa
leaq 0x3b8(%rsp), %rdi
callq 0xe6fa
leaq 0x3d8(%rsp), %rdi
callq 0xe6fa
leaq 0x4d8(%rsp), %rdi
callq 0xe6fa
leaq 0x3f8(%rsp), %rdi
callq 0xe6fa
leaq 0x418(%rsp), %rdi
callq 0xe6fa
leaq 0x438(%rsp), %rdi
callq 0xe6fa
leaq 0x130(%rsp), %rdi
callq 0xe6fa
leaq 0x150(%rsp), %rdi
callq 0xe6fa
leaq 0x458(%rsp), %rdi
callq 0xe6fa
leaq 0x478(%rsp), %rdi
callq 0xe6fa
leaq 0x498(%rsp), %rdi
callq 0xe6fa
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xe33f
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x4320
movq %rbx, %rdi
callq 0x4550
nop