// File: /workspace/github_cpp_makefile_star2_O2/mehrangoli[P]Static-Data-Extractor/SCmain.cpp
// Function: ScMain::find_localVar_elements[abi:cxx11](std::basic_ifstream<char, std::char_traits<char>>&, unsigned int)
vector<NT> ScMain::find_localVar_elements (ifstream &debugSymbol, unsigned int lineNum){
	vector<NT> Vect_NameType;
	vector<string> split_line;
	NT NameType;
	string line;
	GotoLine(debugSymbol, lineNum);
	bool findComplexType = 0;

	if (debugSymbol.is_open()){
		while (getline(debugSymbol, line)) {
			if ((!string_finder (line, DCSCMODULE)) && (!line.empty()) && (string_finder (line, CLASS) || string_finder (line, STRUCT))){ //--------- first step of extracting local var of systemC
				split_line = split(line, ' ');
				remove_element_vector(split_line, "");
				if ((split_line.size() > 3) && string_finder (line, CLASS))
					NameType.second = split_line[2];
				else
					NameType.second = split_line[1];
				if (string_finder (NameType.second, SCCORE) && string_finder (NameType.second, "<"))
					NameType.second = replace_first_occurrence(NameType.second,",",">");
				
				findComplexType = 1;
			}
			else if (string_finder (line, CAT) && findComplexType && (!string_finder (line, CT)) && string_finder (line,"}")){ //--- second step of complex type
				split_line = split(line, ' ');
				remove_element_vector(split_line, "");
				NameType.first = split_line[1];
				NameType.first = replace_first_occurrence(NameType.first,";","");

				set_NT_vector (Vect_NameType, NameType);
			}
			else if (string_finder (line, CAT) && (!string_finder (line, CT))){ //----------- extracting local var of c++ for each function
				NameType = find_module_var(line);
				set_NT_vector (Vect_NameType, NameType);
			}
			if (string_finder (line, BLOCK))
				return Vect_NameType;
		}
	}
	
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4f8, %rsp            # imm = 0x4F8
movq %rdx, %rsi
xorps %xmm0, %xmm0
andq $0x0, 0x10(%rdi)
andq $0x0, 0x20(%rsp)
leaq 0x88(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movq %rdi, 0x8(%rsp)
movups %xmm0, (%rdi)
xorl %edx, %edx
movb %dl, (%rax)
leaq 0xa8(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movaps %xmm0, 0x10(%rsp)
movb %dl, (%rax)
leaq 0x1a8(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %dl, (%rax)
movq %rsi, 0x50(%rsp)
movq %rsi, %rdi
movl %ecx, %esi
callq 0x7641
movl $0x0, 0x4(%rsp)
leaq 0x198(%rsp), %r12
leaq 0x4b8(%rsp), %rbp
leaq 0x298(%rsp), %r14
movq 0x50(%rsp), %rdi
movq %r12, %rsi
callq 0x2050
leaq 0x58(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0x178(%rsp), %r13
movq %r13, %rdi
leaq 0x6201(%rip), %rsi      # 0xa2b2
movq %rbp, %rdx
callq 0x31b8
leaq 0x58(%rsp), %rdi
movq %r13, %rsi
callq 0x7630
cmpq $0x0, 0x1a0(%rsp)
sete %cl
orb %cl, %al
je 0x41ad
leaq 0x178(%rsp), %rdi
callq 0x2110
leaq 0x58(%rsp), %rdi
callq 0x2110
leaq 0x118(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0xf8(%rsp), %r13
movq %r13, %rdi
leaq 0x61bf(%rip), %rsi      # 0xa2d2
movq %rbp, %rdx
callq 0x31b8
leaq 0x118(%rsp), %rdi
movq %r13, %rsi
callq 0x7630
andb 0x4(%rsp), %al
cmpb $0x1, %al
jne 0x4227
leaq 0xd8(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
movq %r14, %rbx
leaq 0x1d8(%rsp), %r13
movq %r13, %rdi
leaq 0x618a(%rip), %rsi      # 0xa2e6
leaq 0x30(%rsp), %rdx
callq 0x31b8
leaq 0xd8(%rsp), %rdi
movq %r13, %rsi
callq 0x7630
testb %al, %al
je 0x4639
leaq 0x1d8(%rsp), %rdi
callq 0x2110
leaq 0xd8(%rsp), %rdi
callq 0x2110
leaq 0xf8(%rsp), %rdi
callq 0x2110
movq %rbx, %r14
jmp 0x4234
leaq 0x158(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0x218(%rsp), %rbx
movq %rbx, %rdi
leaq 0x60ef(%rip), %rsi      # 0xa2be
leaq 0x30(%rsp), %rdx
callq 0x31b8
leaq 0x158(%rsp), %rdi
movq %rbx, %rsi
callq 0x7630
testb %al, %al
je 0x4382
leaq 0x218(%rsp), %rdi
callq 0x2110
leaq 0x158(%rsp), %rdi
callq 0x2110
leaq 0x178(%rsp), %rdi
callq 0x2110
leaq 0x58(%rsp), %rdi
callq 0x2110
jmp 0x440c
leaq 0xf8(%rsp), %rdi
callq 0x2110
leaq 0x118(%rsp), %rdi
callq 0x2110
leaq 0xb8(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0x1b8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x606f(%rip), %rsi      # 0xa2d2
movq %rbp, %rdx
callq 0x31b8
leaq 0xb8(%rsp), %rdi
movq %rbx, %rsi
callq 0x7630
testb %al, %al
je 0x4368
leaq 0x258(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0x358(%rsp), %r15
movq %r15, %rdi
leaq 0x6041(%rip), %rsi      # 0xa2e6
leaq 0x30(%rsp), %rdx
callq 0x31b8
leaq 0x258(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7630
movl %eax, %r13d
movq %r15, %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2110
leaq 0x1b8(%rsp), %rdi
callq 0x2110
leaq 0xb8(%rsp), %rdi
callq 0x2110
testb %r13b, %r13b
jne 0x47ca
leaq 0x338(%rsp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x2260
movq %rbp, %rdi
movq %r15, %rdx
callq 0x4ad4
leaq 0x78(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x6d5e
movq %rbp, %rdi
callq 0x334e
movq %r15, %rdi
callq 0x2110
leaq 0x438(%rsp), %rdi
movq %rbx, %rsi
callq 0x6d24
movq 0x8(%rsp), %rdi
leaq 0x438(%rsp), %rbx
movq %rbx, %rsi
callq 0x7964
movq %rbx, %rdi
callq 0x334e
jmp 0x47ca
leaq 0x1b8(%rsp), %rdi
callq 0x2110
leaq 0xb8(%rsp), %rdi
jmp 0x4610
leaq 0x2f8(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0x418(%rsp), %r15
movq %r15, %rdi
leaq 0x60c1(%rip), %rsi      # 0xa465
movq %r14, %rdx
callq 0x31b8
leaq 0x2f8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7630
movl %eax, %r13d
movq %r15, %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2110
leaq 0x218(%rsp), %rdi
callq 0x2110
leaq 0x158(%rsp), %rdi
callq 0x2110
leaq 0x178(%rsp), %rdi
callq 0x2110
leaq 0x58(%rsp), %rdi
callq 0x2110
testb %r13b, %r13b
je 0x40f1
movq %rbp, %rdi
movq %r12, %rsi
pushq $0x20
popq %rdx
callq 0x7696
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x722e
movq %rbp, %rdi
callq 0x322e
leaq 0x3f8(%rsp), %r15
movq %r15, %rdi
leaq 0x60a8(%rip), %rsi      # 0xa4ec
movq %rbp, %rdx
callq 0x31b8
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7928
movq %r15, %rdi
callq 0x2110
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rax
subq %rsi, %rax
cmpq $0x61, %rax
jb 0x44d2
leaq 0x2d8(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0x3d8(%rsp), %r15
movq %r15, %rdi
leaq 0x5e2a(%rip), %rsi      # 0xa2be
movq %rbp, %rdx
callq 0x31b8
leaq 0x2d8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7630
movl %eax, %r13d
movq %r15, %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2110
movq 0x10(%rsp), %rsi
testb %r13b, %r13b
je 0x44d2
addq $0x40, %rsi
jmp 0x44d6
addq $0x20, %rsi
leaq 0x98(%rsp), %rdi
callq 0x2140
leaq 0x138(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x2260
leaq 0x1f8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x5dba(%rip), %rsi      # 0xa2c4
movq %rbp, %rdx
callq 0x31b8
leaq 0x138(%rsp), %rdi
movq %rbx, %rsi
callq 0x7630
testb %al, %al
je 0x461a
leaq 0x2b8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x2260
leaq 0x3b8(%rsp), %r15
movq %r15, %rdi
leaq 0x5d7d(%rip), %rsi      # 0xa2ce
leaq 0x30(%rsp), %rdx
callq 0x31b8
leaq 0x2b8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7630
movl %eax, %r13d
movq %r15, %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2110
leaq 0x1f8(%rsp), %rdi
callq 0x2110
leaq 0x138(%rsp), %rdi
callq 0x2110
movb $0x1, %al
movl %eax, 0x4(%rsp)
testb %r13b, %r13b
je 0x47ca
leaq 0x30(%rsp), %rdi
leaq 0x5d1a(%rip), %rsi      # 0xa2d0
leaq 0x3(%rsp), %rdx
callq 0x31b8
movq %r14, %rdi
leaq 0x5f7b(%rip), %rsi      # 0xa545
leaq 0x2(%rsp), %rdx
callq 0x31b8
movq %rbp, %rdi
leaq 0x98(%rsp), %r13
movq %r13, %rsi
leaq 0x30(%rsp), %r15
movq %r15, %rdx
movq %r14, %rcx
callq 0x7752
movq %r13, %rdi
movq %rbp, %rsi
callq 0x2210
movq %rbp, %rdi
callq 0x2110
movq %r14, %rdi
callq 0x2110
movq %r15, %rdi
callq 0x2110
jmp 0x47ca
leaq 0x1f8(%rsp), %rdi
callq 0x2110
leaq 0x138(%rsp), %rdi
callq 0x2110
jmp 0x47c4
leaq 0x278(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0x398(%rsp), %r14
movq %r14, %rdi
leaq 0x5c97(%rip), %rsi      # 0xa2f2
movq %rbx, %rdx
callq 0x31b8
leaq 0x278(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x7630
movl %eax, %r13d
movq %r14, %rdi
callq 0x2110
movq %r15, %rdi
callq 0x2110
leaq 0x1d8(%rsp), %rdi
callq 0x2110
leaq 0xd8(%rsp), %rdi
callq 0x2110
leaq 0xf8(%rsp), %rdi
callq 0x2110
leaq 0x118(%rsp), %rdi
callq 0x2110
testb %r13b, %r13b
movq %rbx, %r14
je 0x4241
movq %rbp, %rdi
movq %r12, %rsi
pushq $0x20
popq %rdx
callq 0x7696
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x722e
movq %rbp, %rdi
callq 0x322e
leaq 0x378(%rsp), %r15
movq %r15, %rdi
leaq 0x5deb(%rip), %rsi      # 0xa4ec
movq %rbp, %rdx
callq 0x31b8
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7928
movq %r15, %rdi
callq 0x2110
movq 0x10(%rsp), %rsi
addq $0x20, %rsi
leaq 0x78(%rsp), %rdi
callq 0x2140
leaq 0x30(%rsp), %rdi
leaq 0x5d38(%rip), %rsi      # 0xa473
leaq 0x3(%rsp), %rdx
callq 0x31b8
movq %r14, %rdi
leaq 0x5d9d(%rip), %rsi      # 0xa4ec
leaq 0x2(%rsp), %rdx
callq 0x31b8
movq %rbp, %rdi
leaq 0x78(%rsp), %r15
movq %r15, %rsi
leaq 0x30(%rsp), %rbx
movq %rbx, %rdx
movq %r14, %rcx
callq 0x7752
movq %r15, %rdi
movq %rbp, %rsi
callq 0x2210
movq %rbp, %rdi
callq 0x2110
movq %r14, %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2110
leaq 0x478(%rsp), %rdi
movq %r15, %rsi
callq 0x6d24
movq 0x8(%rsp), %rdi
leaq 0x478(%rsp), %rbx
movq %rbx, %rsi
callq 0x7964
movq %rbx, %rdi
callq 0x334e
movb $0x1, %al
movl %eax, 0x4(%rsp)
leaq 0x238(%rsp), %rdi
movq %r12, %rsi
callq 0x2260
leaq 0x318(%rsp), %r15
movq %r15, %rdi
leaq 0x5b08(%rip), %rsi      # 0xa2f4
movq %rbp, %rdx
callq 0x31b8
leaq 0x238(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7630
movl %eax, %r13d
movq %r15, %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2110
testb %r13b, %r13b
je 0x4085
leaq 0x198(%rsp), %rdi
callq 0x2110
leaq 0x78(%rsp), %rdi
callq 0x334e
leaq 0x10(%rsp), %rdi
callq 0x322e
movq 0x8(%rsp), %rax
addq $0x4f8, %rsp            # imm = 0x4F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4a9e
jmp 0x4a9e
movq %rax, %rbx
leaq 0x478(%rsp), %rdi
jmp 0x48bf
jmp 0x4890
jmp 0x48a2
jmp 0x4a9e
movq %rax, %rbx
leaq 0x378(%rsp), %rdi
jmp 0x4a97
jmp 0x4a9e
movq %rax, %rbx
leaq 0x298(%rsp), %rdi
callq 0x2110
jmp 0x48a5
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x4a97
jmp 0x4a9e
movq %rax, %rbx
leaq 0x438(%rsp), %rdi
callq 0x334e
jmp 0x4aa1
movq %rax, %rbx
leaq 0x338(%rsp), %rdi
jmp 0x4a97
jmp 0x4a9e
movq %rax, %rbx
leaq 0x398(%rsp), %rdi
callq 0x2110
jmp 0x48f3
movq %rax, %rbx
leaq 0x278(%rsp), %rdi
callq 0x2110
jmp 0x49c3
movq %rax, %rbx
leaq 0x3b8(%rsp), %rdi
callq 0x2110
jmp 0x491a
movq %rax, %rbx
leaq 0x2b8(%rsp), %rdi
callq 0x2110
jmp 0x49ec
movq %rax, %rbx
leaq 0x3d8(%rsp), %rdi
callq 0x2110
jmp 0x4941
movq %rax, %rbx
leaq 0x2d8(%rsp), %rdi
jmp 0x4a97
movq %rax, %rbx
leaq 0x418(%rsp), %rdi
callq 0x2110
jmp 0x4963
movq %rax, %rbx
leaq 0x2f8(%rsp), %rdi
callq 0x2110
jmp 0x4a0e
movq %rax, %rbx
leaq 0x358(%rsp), %rdi
callq 0x2110
jmp 0x498a
movq %rax, %rbx
leaq 0x258(%rsp), %rdi
callq 0x2110
jmp 0x4a2d
movq %rax, %rbx
jmp 0x49d0
jmp 0x4a9e
movq %rax, %rbx
leaq 0x3f8(%rsp), %rdi
jmp 0x4a97
jmp 0x4a9e
movq %rax, %rbx
jmp 0x49f9
movq %rax, %rbx
leaq 0x1d8(%rsp), %rdi
callq 0x2110
leaq 0xd8(%rsp), %rdi
callq 0x2110
jmp 0x4a47
movq %rax, %rbx
jmp 0x4a1b
movq %rax, %rbx
jmp 0x4a3a
movq %rax, %rbx
leaq 0x1f8(%rsp), %rdi
callq 0x2110
leaq 0x138(%rsp), %rdi
jmp 0x4a97
movq %rax, %rbx
jmp 0x4a54
movq %rax, %rbx
leaq 0x218(%rsp), %rdi
callq 0x2110
leaq 0x158(%rsp), %rdi
callq 0x2110
jmp 0x4a85
movq %rax, %rbx
leaq 0x1b8(%rsp), %rdi
callq 0x2110
leaq 0xb8(%rsp), %rdi
jmp 0x4a97
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0x2110
leaq 0x118(%rsp), %rdi
jmp 0x4a97
movq %rax, %rbx
jmp 0x4a73
movq %rax, %rbx
leaq 0x318(%rsp), %rdi
callq 0x2110
leaq 0x238(%rsp), %rdi
jmp 0x4a97
movq %rax, %rbx
jmp 0x4a92
movq %rax, %rbx
leaq 0x178(%rsp), %rdi
callq 0x2110
leaq 0x58(%rsp), %rdi
callq 0x2110
jmp 0x4aa1
movq %rax, %rbx
leaq 0x198(%rsp), %rdi
callq 0x2110
leaq 0x78(%rsp), %rdi
callq 0x334e
leaq 0x10(%rsp), %rdi
callq 0x322e
movq 0x8(%rsp), %rdi
callq 0x32e8
movq %rbx, %rdi
callq 0x2300