// File: EmbeddedPaul166[P]SNMP-Agent/src/parser.cpp
// Function: Parser::parseCustomDataTypesInMain(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void Parser::parseCustomDataTypesInMain(std::string fileContent)
{
    std::smatch match;
    
    std::string patternOneString ="\\w* ::=\\n\\s*.*[^\\{]\\n";
    std::string patternTwoString = "\\w* ::=\\n\\s*SEQUENCE((.*\\n)*?)\\s*\\}";
    std::string patternThreeString = "\\w* ::=\\n\\s*CHOICE((.*\\n)*?)\\s*\\}";
    
    std::regex patternOne(patternOneString);
    std::regex patternTwo(patternTwoString);
    std::regex patternThree(patternThreeString);
    
    std::sregex_iterator beginOne(fileContent.cbegin(), fileContent.cend(), patternOne);
    
    std::sregex_iterator beginTwo(fileContent.cbegin(), fileContent.cend(), patternTwo);
    
    std::sregex_iterator beginThree(fileContent.cbegin(), fileContent.cend(), patternThree);
    
    std::sregex_iterator end;
    
    for (std::sregex_iterator it = beginOne; it != end; it++)
    {
        match = *it;
        m_customDataTypeStringVector.push_back(match.str(0));
    }
    
    for (std::sregex_iterator it = beginTwo; it != end; it++)
    {
        match = *it;
        m_customDataTypeStringVector.push_back(match.str(0));
    }
    
    for (std::sregex_iterator it = beginThree; it != end; it++)
    {
        match = *it;
        m_customDataTypeStringVector.push_back(match.str(0));
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x470, %rsp            # imm = 0x470
movq %rsi, -0x440(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x438(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x18eb0
leaq -0x51(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0x67a0
movq -0x430(%rbp), %rdx
leaq 0x3152c(%rip), %rsi     # 0x48718
leaq -0x50(%rbp), %rdi
callq 0x8130
jmp 0x171f7
leaq -0x51(%rbp), %rdi
callq 0x64d0
leaq -0x89(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0x67a0
movq -0x448(%rbp), %rdx
leaq 0x3150d(%rip), %rsi     # 0x4872e
leaq -0x88(%rbp), %rdi
callq 0x8130
jmp 0x1722f
leaq -0x89(%rbp), %rdi
callq 0x64d0
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x450(%rbp)
callq 0x67a0
movq -0x450(%rbp), %rdx
leaq 0x314f6(%rip), %rsi     # 0x48752
leaq -0xb0(%rbp), %rdi
callq 0x8130
jmp 0x1726a
leaq -0xb1(%rbp), %rdi
callq 0x64d0
leaq -0xd8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
movl $0x10, %edx
callq 0x195c0
jmp 0x1728d
leaq -0xf8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
movl $0x10, %edx
callq 0x195c0
jmp 0x172a7
leaq -0x118(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
movl $0x10, %edx
callq 0x195c0
jmp 0x172c1
movq -0x440(%rbp), %rdi
callq 0x61b0
movq -0x440(%rbp), %rdi
movq %rax, -0x160(%rbp)
callq 0x60c0
movq %rax, -0x168(%rbp)
movq -0x160(%rbp), %rsi
movq -0x168(%rbp), %rdx
leaq -0x158(%rbp), %rdi
leaq -0xd8(%rbp), %rcx
xorl %r8d, %r8d
callq 0x190a0
jmp 0x1730d
movq -0x440(%rbp), %rdi
callq 0x61b0
movq -0x440(%rbp), %rdi
movq %rax, -0x1b0(%rbp)
callq 0x60c0
movq %rax, -0x1b8(%rbp)
movq -0x1b0(%rbp), %rsi
movq -0x1b8(%rbp), %rdx
leaq -0x1a8(%rbp), %rdi
leaq -0xf8(%rbp), %rcx
xorl %r8d, %r8d
callq 0x190a0
jmp 0x17359
movq -0x440(%rbp), %rdi
callq 0x61b0
movq -0x440(%rbp), %rdi
movq %rax, -0x200(%rbp)
callq 0x60c0
movq %rax, -0x208(%rbp)
movq -0x200(%rbp), %rsi
movq -0x208(%rbp), %rdx
leaq -0x1f8(%rbp), %rdi
leaq -0x118(%rbp), %rcx
xorl %r8d, %r8d
callq 0x190a0
jmp 0x173a5
leaq -0x248(%rbp), %rdi
callq 0x191d0
jmp 0x173b3
leaq -0x288(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x19220
jmp 0x173c8
jmp 0x173ca
leaq -0x288(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x19270
testb $0x1, %al
jne 0x174d2
leaq -0x288(%rbp), %rdi
callq 0x193b0
jmp 0x17594
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x51(%rbp), %rdi
callq 0x64d0
jmp 0x17892
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x89(%rbp), %rdi
callq 0x64d0
jmp 0x17889
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xb1(%rbp), %rdi
callq 0x64d0
jmp 0x1787d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17871
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17865
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17859
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1784d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17841
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17835
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17829
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1781d
leaq -0x288(%rbp), %rdi
callq 0x192a0
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
callq 0x192c0
jmp 0x174ec
movq -0x438(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x458(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x2a8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x18ff0
jmp 0x17514
movq -0x458(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x19300
jmp 0x17529
leaq -0x2a8(%rbp), %rdi
callq 0x62e0
leaq -0x2e8(%rbp), %rdi
leaq -0x288(%rbp), %rsi
xorl %edx, %edx
callq 0x19330
jmp 0x1754c
leaq -0x2e8(%rbp), %rdi
callq 0x193b0
jmp 0x173ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17583
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x62e0
leaq -0x288(%rbp), %rdi
callq 0x193b0
jmp 0x1781d
leaq -0x328(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x19220
jmp 0x175a9
jmp 0x175ab
leaq -0x328(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x19270
testb $0x1, %al
jne 0x175d3
leaq -0x328(%rbp), %rdi
callq 0x193b0
jmp 0x17695
leaq -0x328(%rbp), %rdi
callq 0x192a0
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
callq 0x192c0
jmp 0x175ed
movq -0x438(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x460(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x348(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x18ff0
jmp 0x17615
movq -0x460(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x19300
jmp 0x1762a
leaq -0x348(%rbp), %rdi
callq 0x62e0
leaq -0x388(%rbp), %rdi
leaq -0x328(%rbp), %rsi
xorl %edx, %edx
callq 0x19330
jmp 0x1764d
leaq -0x388(%rbp), %rdi
callq 0x193b0
jmp 0x175ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17684
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x62e0
leaq -0x328(%rbp), %rdi
callq 0x193b0
jmp 0x1781d
leaq -0x3c8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x19220
jmp 0x176aa
jmp 0x176ac
leaq -0x3c8(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x19270
testb $0x1, %al
jne 0x176d4
leaq -0x3c8(%rbp), %rdi
callq 0x193b0
jmp 0x17796
leaq -0x3c8(%rbp), %rdi
callq 0x192a0
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
callq 0x192c0
jmp 0x176ee
movq -0x438(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x468(%rbp)
xorl %eax, %eax
movl %eax, %edx
leaq -0x3e8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x18ff0
jmp 0x17716
movq -0x468(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x19300
jmp 0x1772b
leaq -0x3e8(%rbp), %rdi
callq 0x62e0
leaq -0x428(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
xorl %edx, %edx
callq 0x19330
jmp 0x1774e
leaq -0x428(%rbp), %rdi
callq 0x193b0
jmp 0x176ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x17785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x62e0
leaq -0x3c8(%rbp), %rdi
callq 0x193b0
jmp 0x1781d
leaq -0x248(%rbp), %rdi
callq 0x193b0
leaq -0x1f8(%rbp), %rdi
callq 0x193b0
leaq -0x1a8(%rbp), %rdi
callq 0x193b0
leaq -0x158(%rbp), %rdi
callq 0x193b0
leaq -0x118(%rbp), %rdi
callq 0x19570
leaq -0xf8(%rbp), %rdi
callq 0x19570
leaq -0xd8(%rbp), %rdi
callq 0x19570
leaq -0xb0(%rbp), %rdi
callq 0x62e0
leaq -0x88(%rbp), %rdi
callq 0x62e0
leaq -0x50(%rbp), %rdi
callq 0x62e0
leaq -0x30(%rbp), %rdi
callq 0x195a0
addq $0x470, %rsp            # imm = 0x470
popq %rbp
retq
leaq -0x248(%rbp), %rdi
callq 0x193b0
leaq -0x1f8(%rbp), %rdi
callq 0x193b0
leaq -0x1a8(%rbp), %rdi
callq 0x193b0
leaq -0x158(%rbp), %rdi
callq 0x193b0
leaq -0x118(%rbp), %rdi
callq 0x19570
leaq -0xf8(%rbp), %rdi
callq 0x19570
leaq -0xd8(%rbp), %rdi
callq 0x19570
leaq -0xb0(%rbp), %rdi
callq 0x62e0
leaq -0x88(%rbp), %rdi
callq 0x62e0
leaq -0x50(%rbp), %rdi
callq 0x62e0
leaq -0x30(%rbp), %rdi
callq 0x195a0
movq -0x60(%rbp), %rdi
callq 0x6790
nopw %cs:(%rax,%rax)