// File: mehrangoli[P]Static-Data-Extractor/SCmain.cpp
// Function: ScMain::find_module_elements(std::basic_ifstream<char, std::char_traits<char>>&, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void ScMain::find_module_elements (ifstream &debugSymbol, unsigned int lineNum, string m_name){
	NT VarNameType;
	NT FuncNameType;
	GotoLine(debugSymbol, lineNum);
	string line, string_type;
	vector<string> split_line;
	
	if (debugSymbol.is_open()){
		while (getline(debugSymbol, line)) {
			if((!string_finder(line, "}")) && (string_finder(line, ");")) && (!line.empty())){
				FuncNameType = find_module_func(line);
				set_static_data_func (m_name, FuncNameType);
			}
			else if ((string_finder(line, ";")) && (!string_finder(line, TYPEDEF)) && (!string_finder(line, "}"))){
				VarNameType = find_module_var (line);
				set_static_data_var (m_name, VarNameType);
				
			}
			else if (string_finder(line, "}"))
				break;
		}
	}		
	else 
		cout << "\033[1;31mUnable to open Debug Symbol file\033[0m\n"; 	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4f0, %rsp            # imm = 0x4F0
movq %rcx, -0x460(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x458(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xe2f0
leaq -0xa0(%rbp), %rdi
callq 0xe2f0
jmp 0xcdb3
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x10e50
jmp 0xcdc1
leaq -0xd0(%rbp), %rdi
callq 0x3340
leaq -0xf0(%rbp), %rdi
callq 0x3340
leaq -0x108(%rbp), %rdi
callq 0xdfc0
movq -0x10(%rbp), %rdi
callq 0x33c0
movb %al, -0x461(%rbp)
jmp 0xcdf6
movb -0x461(%rbp), %al
testb $0x1, %al
jne 0xce05
jmp 0xd7f0
jmp 0xce07
movq -0x10(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3070
movq %rax, -0x470(%rbp)
jmp 0xce20
movq -0x470(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x32f0
movb %al, -0x471(%rbp)
jmp 0xce3e
movb -0x471(%rbp), %al
testb $0x1, %al
jne 0xce4d
jmp 0xd7ee
movb $0x0, -0x171(%rbp)
movb $0x0, -0x19a(%rbp)
movb $0x0, -0x19b(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3120
jmp 0xce77
leaq -0x149(%rbp), %rdi
movq %rdi, -0x480(%rbp)
callq 0x3430
movq -0x480(%rbp), %rdx
leaq 0xa460(%rip), %rsi      # 0x172f8
leaq -0x148(%rbp), %rdi
callq 0x6100
jmp 0xcea6
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x10e10
movb %al, -0x481(%rbp)
jmp 0xcec1
movb -0x481(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x482(%rbp)
jne 0xcf77
jmp 0xceda
leaq -0x170(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3120
jmp 0xceef
movb $0x1, -0x171(%rbp)
leaq -0x199(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x3430
movq -0x490(%rbp), %rdx
movb $0x1, -0x19a(%rbp)
leaq 0xa55a(%rip), %rsi      # 0x17478
leaq -0x198(%rbp), %rdi
callq 0x6100
jmp 0xcf2c
movb $0x1, -0x19b(%rbp)
leaq -0x170(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x10e10
movb %al, -0x491(%rbp)
jmp 0xcf4e
movb -0x491(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x482(%rbp)
jne 0xcf63
jmp 0xcf77
leaq -0xd0(%rbp), %rdi
callq 0x33e0
xorb $-0x1, %al
movb %al, -0x482(%rbp)
movb -0x482(%rbp), %al
movb %al, -0x492(%rbp)
testb $0x1, -0x19b(%rbp)
jne 0xcf8e
jmp 0xcf9a
leaq -0x198(%rbp), %rdi
callq 0x3190
testb $0x1, -0x19a(%rbp)
jne 0xcfa5
jmp 0xcfb1
leaq -0x199(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x171(%rbp)
jne 0xcfbc
jmp 0xcfc8
leaq -0x170(%rbp), %rdi
callq 0x3190
leaq -0x148(%rbp), %rdi
callq 0x3190
leaq -0x149(%rbp), %rdi
callq 0x32a0
leaq -0x128(%rbp), %rdi
callq 0x3190
movb -0x492(%rbp), %al
testb $0x1, %al
jne 0xcffb
jmp 0xd22f
leaq -0x200(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3120
jmp 0xd010
movq -0x458(%rbp), %rsi
leaq -0x1e0(%rbp), %rdi
leaq -0x200(%rbp), %rdx
callq 0xd890
jmp 0xd02c
leaq -0xa0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
movq %rsi, -0x4a0(%rbp)
callq 0xe3a0
movq -0x4a0(%rbp), %rdi
callq 0x6740
leaq -0x200(%rbp), %rdi
callq 0x3190
movq -0x460(%rbp), %rsi
leaq -0x220(%rbp), %rdi
callq 0x3120
jmp 0xd073
leaq -0x260(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0xe340
jmp 0xd088
movq -0x458(%rbp), %rdi
leaq -0x220(%rbp), %rsi
leaq -0x260(%rbp), %rdx
callq 0xa6a0
jmp 0xd0a4
leaq -0x260(%rbp), %rdi
callq 0x6740
leaq -0x220(%rbp), %rdi
callq 0x3190
jmp 0xd7e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd879
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd86d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd1ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd1a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd170
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
testb $0x1, -0x19b(%rbp)
jne 0xd162
jmp 0xd16e
leaq -0x198(%rbp), %rdi
callq 0x3190
jmp 0xd170
testb $0x1, -0x19a(%rbp)
jne 0xd17b
jmp 0xd187
leaq -0x199(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x171(%rbp)
jne 0xd192
jmp 0xd19e
leaq -0x170(%rbp), %rdi
callq 0x3190
jmp 0xd1a0
leaq -0x148(%rbp), %rdi
callq 0x3190
leaq -0x149(%rbp), %rdi
callq 0x32a0
leaq -0x128(%rbp), %rdi
callq 0x3190
jmp 0xd849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x3190
jmp 0xd849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd21e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x6740
leaq -0x220(%rbp), %rdi
callq 0x3190
jmp 0xd849
movb $0x0, -0x2c9(%rbp)
movb $0x0, -0x2f2(%rbp)
movb $0x0, -0x2f3(%rbp)
movb $0x0, -0x319(%rbp)
movb $0x0, -0x342(%rbp)
movb $0x0, -0x343(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3120
jmp 0xd26e
leaq -0x2a1(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x3430
movq -0x4a8(%rbp), %rdx
leaq 0xa1ea(%rip), %rsi      # 0x17479
leaq -0x2a0(%rbp), %rdi
callq 0x6100
jmp 0xd29d
leaq -0x280(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x10e10
movb %al, -0x4a9(%rbp)
jmp 0xd2b8
movb -0x4a9(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x4aa(%rbp)
jne 0xd2d0
jmp 0xd3df
leaq -0x2c8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3120
jmp 0xd2e5
movb $0x1, -0x2c9(%rbp)
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x3430
movq -0x4b8(%rbp), %rdx
movb $0x1, -0x2f2(%rbp)
leaq 0xa167(%rip), %rsi      # 0x1747b
leaq -0x2f0(%rbp), %rdi
callq 0x6100
jmp 0xd322
movb $0x1, -0x2f3(%rbp)
leaq -0x2c8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x10e10
movb %al, -0x4b9(%rbp)
jmp 0xd344
movb -0x4b9(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x4aa(%rbp)
jne 0xd3df
jmp 0xd35d
leaq -0x318(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3120
jmp 0xd372
movb $0x1, -0x319(%rbp)
leaq -0x341(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x3430
movq -0x4c8(%rbp), %rdx
movb $0x1, -0x342(%rbp)
leaq 0x9f57(%rip), %rsi      # 0x172f8
leaq -0x340(%rbp), %rdi
callq 0x6100
jmp 0xd3af
movb $0x1, -0x343(%rbp)
leaq -0x318(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x10e10
movb %al, -0x4c9(%rbp)
jmp 0xd3d1
movb -0x4c9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x4aa(%rbp)
movb -0x4aa(%rbp), %al
movb %al, -0x4ca(%rbp)
testb $0x1, -0x343(%rbp)
jne 0xd3f6
jmp 0xd402
leaq -0x340(%rbp), %rdi
callq 0x3190
testb $0x1, -0x342(%rbp)
jne 0xd40d
jmp 0xd419
leaq -0x341(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x319(%rbp)
jne 0xd424
jmp 0xd430
leaq -0x318(%rbp), %rdi
callq 0x3190
testb $0x1, -0x2f3(%rbp)
jne 0xd43b
jmp 0xd447
leaq -0x2f0(%rbp), %rdi
callq 0x3190
testb $0x1, -0x2f2(%rbp)
jne 0xd452
jmp 0xd45e
leaq -0x2f1(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x2c9(%rbp)
jne 0xd469
jmp 0xd475
leaq -0x2c8(%rbp), %rdi
callq 0x3190
leaq -0x2a0(%rbp), %rdi
callq 0x3190
leaq -0x2a1(%rbp), %rdi
callq 0x32a0
leaq -0x280(%rbp), %rdi
callq 0x3190
movb -0x4ca(%rbp), %al
testb $0x1, %al
jne 0xd4a8
jmp 0xd708
leaq -0x3a8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3120
jmp 0xd4bd
movq -0x458(%rbp), %rsi
leaq -0x388(%rbp), %rdi
leaq -0x3a8(%rbp), %rdx
callq 0x9ed0
jmp 0xd4d9
leaq -0x60(%rbp), %rdi
leaq -0x388(%rbp), %rsi
movq %rsi, -0x4d8(%rbp)
callq 0xe3a0
movq -0x4d8(%rbp), %rdi
callq 0x6740
leaq -0x3a8(%rbp), %rdi
callq 0x3190
movq -0x460(%rbp), %rsi
leaq -0x3c8(%rbp), %rdi
callq 0x3120
jmp 0xd51d
leaq -0x408(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xe340
jmp 0xd52f
movq -0x458(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
leaq -0x408(%rbp), %rdx
callq 0xa8e0
jmp 0xd54b
leaq -0x408(%rbp), %rdi
callq 0x6740
leaq -0x3c8(%rbp), %rdi
callq 0x3190
jmp 0xd7e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd685
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd679
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd649
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd630
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd600
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
testb $0x1, -0x343(%rbp)
jne 0xd5f2
jmp 0xd5fe
leaq -0x340(%rbp), %rdi
callq 0x3190
jmp 0xd600
testb $0x1, -0x342(%rbp)
jne 0xd60b
jmp 0xd617
leaq -0x341(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x319(%rbp)
jne 0xd622
jmp 0xd62e
leaq -0x318(%rbp), %rdi
callq 0x3190
jmp 0xd630
testb $0x1, -0x2f3(%rbp)
jne 0xd63b
jmp 0xd647
leaq -0x2f0(%rbp), %rdi
callq 0x3190
jmp 0xd649
testb $0x1, -0x2f2(%rbp)
jne 0xd654
jmp 0xd660
leaq -0x2f1(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x2c9(%rbp)
jne 0xd66b
jmp 0xd677
leaq -0x2c8(%rbp), %rdi
callq 0x3190
jmp 0xd679
leaq -0x2a0(%rbp), %rdi
callq 0x3190
leaq -0x2a1(%rbp), %rdi
callq 0x32a0
leaq -0x280(%rbp), %rdi
callq 0x3190
jmp 0xd849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x3190
jmp 0xd849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd6f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x6740
leaq -0x3c8(%rbp), %rdi
callq 0x3190
jmp 0xd849
leaq -0x428(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x3120
jmp 0xd71d
leaq -0x449(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x3430
movq -0x4e0(%rbp), %rdx
leaq 0x9bba(%rip), %rsi      # 0x172f8
leaq -0x448(%rbp), %rdi
callq 0x6100
jmp 0xd74c
leaq -0x428(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x10e10
movb %al, -0x4e1(%rbp)
jmp 0xd767
leaq -0x448(%rbp), %rdi
callq 0x3190
leaq -0x449(%rbp), %rdi
callq 0x32a0
leaq -0x428(%rbp), %rdi
callq 0x3190
movb -0x4e1(%rbp), %al
testb $0x1, %al
jne 0xd797
jmp 0xd7e5
jmp 0xd7ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xd7cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x448(%rbp), %rdi
callq 0x3190
leaq -0x449(%rbp), %rdi
callq 0x32a0
leaq -0x428(%rbp), %rdi
callq 0x3190
jmp 0xd849
jmp 0xd7e7
jmp 0xd7e9
jmp 0xce07
jmp 0xd807
movq 0x117d9(%rip), %rdi     # 0x1efd0
leaq 0x9a8d(%rip), %rsi      # 0x1728b
callq 0x3240
jmp 0xd805
jmp 0xd807
leaq -0x108(%rbp), %rdi
callq 0x6270
leaq -0xf0(%rbp), %rdi
callq 0x3190
leaq -0xd0(%rbp), %rdi
callq 0x3190
leaq -0xa0(%rbp), %rdi
callq 0x6740
leaq -0x60(%rbp), %rdi
callq 0x6740
addq $0x4f0, %rsp            # imm = 0x4F0
popq %rbp
retq
leaq -0x108(%rbp), %rdi
callq 0x6270
leaq -0xf0(%rbp), %rdi
callq 0x3190
leaq -0xd0(%rbp), %rdi
callq 0x3190
leaq -0xa0(%rbp), %rdi
callq 0x6740
leaq -0x60(%rbp), %rdi
callq 0x6740
movq -0xa8(%rbp), %rdi
callq 0x3420
nop