// File: /workspace/github_cpp_makefile_star2_O2/CMU-SAFARI[P]Register-Interval/main.cpp
// Function: create_control_flow_graph(char*)
vector<basicBlock*> create_control_flow_graph(char* file_name){
    /* The control flow analysis of nvdisasm tool generates a CFG that its nodes are abstract basic blocks. So
     we first extract the abstract basic blocks from graphviz dot code (the output of nvdisasm tool) and then  we will create basic blocks and CFG.*/
    
    vector<basicBlock*> abstract_basic_blocks;
    
    //**********************getting input file and finding abstract basic blocks*******************************
        fstream file (file_name, fstream::in);
        
	char ch;
	string cfgString;
	string str = "";
	bool start = false;
	bool ready = false;
	bool OK = false;
	while (file >> noskipws >> ch)
	{
		cfgString = cfgString + ch;
	}

	for (int i = 0; i < cfgString.size(); i++){
		if (start){
			str = str + cfgString[i];
		}

		if (cfgString[i] == '"'){
			if (!start){
				start = true;
			}
			else{
				ready = true;
				start = false;
			}
		}

		if (ready){
			if (cfgString[i + 1] == '\n' || cfgString[i + 1] == 13){
				OK = true;
				ready = false;
			}
			else{
				ready = false;
				str = "";
			}
		}

		if (OK){
			str.erase(str.size() - 1, 1);
			auto temp = new basicBlock(str);
			abstract_basic_blocks.push_back(temp);
			OK = false;
			str = "";
		}
	}
	//******************************************************************************************

	//***************************setting code of abstract basic blocks*************************************
	int found1 = 0;
	int found2 = 0;
	string code;
	for (int i = 0; i < abstract_basic_blocks.size(); i++){
		code = "";
		found1 = cfgString.find("<entry>", found1 + 1, 7);
		found2 = cfgString.find("}\"]", found2 + 1, 3);
		for (int j = found1; j < found2 - 2; j++){
			code = code + cfgString[j];
		}
		abstract_basic_blocks[i]->set_code(code);
	}
	//******************************************************************************************

	//********************************Setting successors of abstract basic blocks******************************
	size_t found = 0;
	string tmp;
	int count = 0;
	for (int i = 0; i < abstract_basic_blocks.size(); i++){
		str = "\"";
		str = str + abstract_basic_blocks[i]->get_name();
		str = str + "\"";
		str = str + ":exit";
		found = 0;
		found = cfgString.find(str, found + 1);
		while (found != string::npos){
			count = 0;
			tmp = "";
			for (int j = found + 1; count < 3; j++){
				if (count == 2){
					tmp = tmp + cfgString[j];
				}

				if (cfgString[j] == '"')
					count++;
			}
			tmp.erase(tmp.end() - 1);
			for (int j = 0; j < abstract_basic_blocks.size(); j++){
				if (abstract_basic_blocks[j]->get_name() == tmp){
					abstract_basic_blocks[i]->add_successor(abstract_basic_blocks[j]);
					break;
				}
			}

			found = cfgString.find(str, found + 1);
		}
	}
	
	count = 0;
	for (int i = 0; i < abstract_basic_blocks.size(); i++){
		str = "\"";
		str = str + abstract_basic_blocks[i]->get_name();
		str = str + "\"";
		str = str + ":entry:s";
		found = 0;
		found = cfgString.find(str, found + 1);
		while (found != string::npos){
			count = 0;
			tmp = "";
			for (int j = found + 1; count < 3; j++){
				if (count == 2){
					tmp = tmp + cfgString[j];
				}

				if (cfgString[j] == '"')
					count++;
			}
			tmp.erase(tmp.end() - 1);
			for (int j = 0; j < abstract_basic_blocks.size(); j++){
				if (abstract_basic_blocks[j]->get_name() == tmp){
					abstract_basic_blocks[i]->add_successor(abstract_basic_blocks[j]);
					break;
				}
			}

			found = cfgString.find(str, found + 1);
		}
	}
	//************************************************************************************************

	//********************************Setting predecessors of abstract basic blocks**********************************
	vector<basicBlock*> x;
	for (int i = 0; i < abstract_basic_blocks.size(); i++){
		for (int j = 0; j < abstract_basic_blocks.size(); j++){
			x = abstract_basic_blocks[j]->get_successors();
			for (int k = 0; k < x.size(); k++){
				if (x[k]->get_name() == abstract_basic_blocks[i]->get_name()){
					abstract_basic_blocks[i]->add_predecessor(abstract_basic_blocks[j]);
				}
			}
		}
	}
	//************************************************************************************************
	
	//**************************Splitting abstract basic blocks to regular basic blocks***********************************
	auto basic_blocks = split_abstract_basic_blocks(abstract_basic_blocks);
	
	//***********************Extracting Registers of each basicBlock***************************************
	found = 0;
	for (int i = 0; i < basic_blocks.size(); i++){
		found = 0;
		code = basic_blocks[i]->get_code();
		found = code.find("R", found + 1, 1);
		while (found != string::npos){
			str = "R";
			if (code[found + 1] > 47 && code[found + 1] < 58){
				for (int j = found + 1; code[j] >47 && code[j] < 58; j++){
					str = str + code[j];
				}
				basic_blocks[i]->add_register(str);
			}

			found = code.find("R", found + 1, 1);
		}
	}
	//************************************************************************************************
        
        return basic_blocks;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x398, %rsp            # imm = 0x398
movq %rdi, -0x58(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
andq $0x0, -0x40(%rbp)
leaq -0x3c0(%rbp), %rdi
pushq $0x8
popq %rdx
callq 0x2260
leaq -0x68(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x44fa(%rip), %rsi      # 0x90b6
leaq -0xb8(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x20c0
leaq -0x3c0(%rbp), %rbx
leaq -0x31(%rbp), %r14
leaq -0x98(%rbp), %r15
leaq -0x78(%rbp), %r12
movq -0x3c0(%rbp), %rax
movq -0x18(%rax), %rax
andl $0xffffefff, -0x3a8(%rbp,%rax) # imm = 0xFFFFEFFF
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2250
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x4c38
movsbl -0x31(%rbp), %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x6d0c
movq %r12, %rdi
movq %r15, %rsi
callq 0x2220
movq %r15, %rdi
callq 0x2100
jmp 0x4be5
xorl %r13d, %r13d
leaq -0x98(%rbp), %rbx
leaq -0xb8(%rbp), %r14
xorl %r15d, %r15d
cmpq %r13, -0x70(%rbp)
jbe 0x4d42
movq -0x78(%rbp), %rax
testb $0x1, %r15b
je 0x4c87
movsbl (%rax,%r13), %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x6d0c
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2100
movq -0x78(%rbp), %rax
cmpb $0x22, (%rax,%r13)
sete %bl
testb %r15b, %bl
je 0x4d30
movzbl 0x1(%rax,%r13), %eax
cmpl $0xa, %eax
je 0x4ca8
cmpl $0xd, %eax
jne 0x4d21
movq -0xb0(%rbp), %rsi
decq %rsi
movq %r14, %rdi
pushq $0x1
popq %rdx
callq 0x2080
movl $0xf8, %edi
callq 0x21c0
movq %rax, -0x30(%rbp)
movq %r14, %rsi
leaq -0x170(%rbp), %rdi
callq 0x2270
movq -0x30(%rbp), %r12
movq %r12, %rdi
leaq -0x170(%rbp), %rsi
callq 0x2a1c
leaq -0x170(%rbp), %rdi
callq 0x2100
movq %r12, -0x98(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x6ab2
movq %r14, %rdi
leaq 0x439c(%rip), %rsi      # 0x90b6
callq 0x2360
jmp 0x4d30
movq %r14, %rdi
leaq 0x438b(%rip), %rsi      # 0x90b6
callq 0x2360
xorb %bl, %r15b
incq %r13
leaq -0x98(%rbp), %rbx
jmp 0x4c4c
leaq -0x88(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
xorl %r15d, %r15d
leaq -0x98(%rbp), %r14
leaq -0xd8(%rbp), %r13
movq $0x0, -0x30(%rbp)
xorl %r12d, %r12d
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x4e7e
movq %r14, %rdi
leaq 0x4320(%rip), %rsi      # 0x90b6
callq 0x2360
movq %r15, -0xf8(%rbp)
movq -0x30(%rbp), %rdx
shlq $0x20, %rdx
movabsq $0x100000000, %rax      # imm = 0x100000000
addq %rax, %rdx
sarq $0x20, %rdx
leaq -0x78(%rbp), %r15
movq %r15, %rdi
leaq 0x4259(%rip), %rsi      # 0x9022
pushq $0x7
popq %rcx
callq 0x2330
movq %rax, %rbx
shlq $0x20, %r12
movabsq $0x100000000, %rax      # imm = 0x100000000
addq %rax, %r12
sarq $0x20, %r12
movq %r15, %rdi
leaq 0x4237(%rip), %rsi      # 0x902a
movq %r12, %rdx
pushq $0x3
popq %rcx
callq 0x2330
movq %rax, %r12
movq %rbx, -0x30(%rbp)
movslq %ebx, %rbx
addl $-0x2, %eax
movslq %eax, %r15
cmpq %r15, %rbx
jge 0x4e3e
movq -0x78(%rbp), %rax
movsbl (%rax,%rbx), %edx
movq %r13, %rdi
movq %r14, %rsi
callq 0x6d0c
movq %r14, %rdi
movq %r13, %rsi
callq 0x2220
movq %r13, %rdi
callq 0x2100
incq %rbx
jmp 0x4e0e
movq -0x50(%rbp), %rax
movq -0xf8(%rbp), %r15
movq (%rax,%r15,8), %rbx
leaq -0x190(%rbp), %rdi
movq %r14, %rsi
callq 0x2270
movq %rbx, %rdi
leaq -0x190(%rbp), %rbx
movq %rbx, %rsi
callq 0x2c08
movq %rbx, %rdi
callq 0x2100
incq %r15
jmp 0x4d71
leaq -0xc8(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb $0x0, (%rdx)
xorl %r15d, %r15d
leaq -0xb8(%rbp), %r12
leaq -0x150(%rbp), %r14
leaq -0xd8(%rbp), %rbx
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x5082
movq %r12, %rdi
leaq 0x4168(%rip), %rsi      # 0x902e
callq 0x2360
movq -0x50(%rbp), %rax
movq (%rax,%r15,8), %rsi
addq $0x8, %rsi
leaq -0x130(%rbp), %r13
movq %r13, %rdi
callq 0x2270
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x6c5e
movq %r12, %rdi
movq %r14, %rsi
callq 0x2220
movq %r14, %rdi
callq 0x2100
movq %r13, %rdi
callq 0x2100
movq %r14, %rdi
movq %r12, %rsi
leaq 0x4112(%rip), %rdx      # 0x902e
callq 0x6d47
movq %r15, -0x30(%rbp)
movq %r12, %rdi
movq %r14, %rsi
callq 0x2220
movq %r14, %rdi
callq 0x2100
movq %r14, %rdi
movq %r12, %rsi
leaq 0x40eb(%rip), %rdx      # 0x9030
callq 0x6d47
movq %r12, %rdi
movq %r14, %rsi
callq 0x2220
movq %r14, %rdi
callq 0x2100
pushq $0x1
popq %r13
leaq -0x78(%rbp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x23a0
cmpq $-0x1, %rax
je 0x506e
movq %rax, %r13
movq %rbx, %rdi
leaq 0x412f(%rip), %rsi      # 0x90b6
callq 0x2360
incq %r13
movslq %r13d, %r15
xorl %r12d, %r12d
cmpl $0x3, %r12d
jae 0x4fde
movq -0x78(%rbp), %rax
cmpl $0x2, %r12d
jne 0x4fcc
movsbl (%rax,%r15), %edx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6d0c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2220
movq %r14, %rdi
callq 0x2100
movq -0x78(%rbp), %rax
xorl %ecx, %ecx
cmpb $0x22, (%rax,%r15)
sete %cl
incq %r15
addl %ecx, %r12d
jmp 0x4f95
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %rbx, %rdi
callq 0x2230
xorl %r12d, %r12d
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r12, %rcx
jbe 0x5062
movq (%rax,%r12,8), %rsi
addq $0x8, %rsi
movq %r14, %rdi
callq 0x2270
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6d7f
movl %eax, %r15d
movq %r14, %rdi
callq 0x2100
incq %r12
testb %r15b, %r15b
je 0x4ffe
movq -0x50(%rbp), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x8(%rax,%r12,8), %rsi
callq 0x2cc8
leaq -0xb8(%rbp), %r12
jmp 0x4f61
leaq -0xb8(%rbp), %r12
jmp 0x4f61
movq -0x30(%rbp), %r15
incq %r15
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
jmp 0x4ea9
xorl %r14d, %r14d
leaq -0xb8(%rbp), %r15
leaq -0x150(%rbp), %r13
leaq -0xd8(%rbp), %rbx
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r14, %rdx
jbe 0x5273
movq %r15, %rdi
leaq 0x3f77(%rip), %rsi      # 0x902e
callq 0x2360
movq -0x50(%rbp), %rax
movq (%rax,%r14,8), %rsi
addq $0x8, %rsi
leaq -0x130(%rbp), %r12
movq %r12, %rdi
callq 0x2270
movq %r13, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x6c5e
movq %r15, %rdi
movq %r13, %rsi
callq 0x2220
movq %r13, %rdi
callq 0x2100
movq %r12, %rdi
callq 0x2100
movq %r13, %rdi
movq %r15, %rsi
leaq 0x3f21(%rip), %rdx      # 0x902e
callq 0x6d47
movq %r14, -0x30(%rbp)
movq %r15, %rdi
movq %r13, %rsi
callq 0x2220
movq %r13, %rdi
callq 0x2100
movq %r13, %rdi
movq %r15, %rsi
leaq 0x3f00(%rip), %rdx      # 0x9036
callq 0x6d47
movq %r15, %rdi
movq %r13, %rsi
callq 0x2220
movq %r13, %rdi
callq 0x2100
pushq $0x1
popq %r12
leaq -0x78(%rbp), %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x23a0
cmpq $-0x1, %rax
je 0x525f
movq %rax, %r12
movq %rbx, %rdi
leaq 0x3f3e(%rip), %rsi      # 0x90b6
callq 0x2360
incq %r12
movslq %r12d, %r14
xorl %r15d, %r15d
cmpl $0x3, %r15d
jae 0x51cf
movq -0x78(%rbp), %rax
cmpl $0x2, %r15d
jne 0x51bd
movsbl (%rax,%r14), %edx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x6d0c
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2220
movq %r13, %rdi
callq 0x2100
movq -0x78(%rbp), %rax
xorl %ecx, %ecx
cmpb $0x22, (%rax,%r14)
sete %cl
incq %r14
addl %ecx, %r15d
jmp 0x5186
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movq %rbx, %rdi
callq 0x2230
xorl %r15d, %r15d
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r15, %rcx
jbe 0x5253
movq (%rax,%r15,8), %rsi
addq $0x8, %rsi
movq %r13, %rdi
callq 0x2270
movq %r13, %rdi
movq %rbx, %rsi
callq 0x6d7f
movl %eax, %r14d
movq %r13, %rdi
callq 0x2100
incq %r15
testb %r14b, %r14b
je 0x51ef
movq -0x50(%rbp), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x8(%rax,%r15,8), %rsi
callq 0x2cc8
leaq -0xb8(%rbp), %r15
jmp 0x5152
leaq -0xb8(%rbp), %r15
jmp 0x5152
movq -0x30(%rbp), %r14
incq %r14
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
jmp 0x509a
xorps %xmm0, %xmm0
leaq -0xf0(%rbp), %rdx
andq $0x0, 0x10(%rdx)
movaps %xmm0, (%rdx)
xorl %r13d, %r13d
leaq -0x150(%rbp), %r14
leaq -0x130(%rbp), %r15
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r13, %rdx
jbe 0x5382
xorl %ebx, %ebx
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %rbx, %rdx
jbe 0x537a
movq (%rax,%rbx,8), %rsi
addq $0x78, %rsi
movq %r14, %rdi
callq 0x6bdc
movq %rbx, -0x30(%rbp)
leaq -0xf0(%rbp), %rdi
movq %r14, %rsi
callq 0x8ee2
movq %r14, %rdi
callq 0x7ed2
xorl %ebx, %ebx
movq -0xf0(%rbp), %rax
movq -0xe8(%rbp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rbx, %rcx
jbe 0x5366
movq (%rax,%rbx,8), %rsi
addq $0x8, %rsi
movq %r14, %rdi
callq 0x2270
movq -0x50(%rbp), %rax
movq (%rax,%r13,8), %rsi
addq $0x8, %rsi
movq %r15, %rdi
callq 0x2270
movq %r14, %rdi
movq %r15, %rsi
callq 0x6d7f
movl %eax, %r12d
movq %r15, %rdi
callq 0x2100
movq %r14, %rdi
callq 0x2100
testb %r12b, %r12b
je 0x5361
movq -0x50(%rbp), %rax
movq (%rax,%r13,8), %rdi
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x2c76
incq %rbx
jmp 0x52eb
movq -0x30(%rbp), %rbx
incq %rbx
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
jmp 0x52ab
incq %r13
jmp 0x5296
leaq -0x110(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x6bdc
leaq -0x110(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x5ea4
leaq -0x110(%rbp), %rdi
callq 0x7ed2
xorl %edx, %edx
leaq -0x150(%rbp), %rbx
leaq -0xb8(%rbp), %r13
leaq -0x1b0(%rbp), %r14
movq -0x58(%rbp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rdx, %rcx
jbe 0x54e6
movq %rdx, -0x30(%rbp)
movq (%rax,%rdx,8), %rsi
addq $0x28, %rsi
movq %rbx, %rdi
callq 0x2270
leaq -0x98(%rbp), %rdi
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2100
pushq $0x1
popq %r15
leaq -0x98(%rbp), %rdi
leaq 0x3c03(%rip), %r12      # 0x9020
movq %r12, %rsi
movq %r15, %rdx
pushq $0x1
popq %rcx
callq 0x2330
cmpq $-0x1, %rax
je 0x54da
movq %rax, %r15
movq %r12, %rsi
movq %r14, %r12
movq %r13, %rdi
callq 0x2360
movq %r15, %rcx
incq %r15
movq -0x98(%rbp), %rax
movb 0x1(%rax,%rcx), %cl
addb $-0x30, %cl
cmpb $0x9, %cl
movq %r12, %r14
ja 0x540f
movslq %r15d, %r14
movb (%rax,%r14), %al
leal -0x30(%rax), %ecx
cmpb $0xa, %cl
jae 0x549e
movsbl %al, %edx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x6d0c
movq %r13, %rdi
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2100
incq %r14
movq -0x98(%rbp), %rax
jmp 0x5465
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %r14
movq %r12, %rdi
movq %r13, %rsi
callq 0x2270
addq $0xc0, %r14
movq %r14, %rdi
movq %r12, %r14
movq %r12, %rsi
callq 0x7ee6
movq %r14, %rdi
callq 0x2100
jmp 0x540f
movq -0x30(%rbp), %rdx
incq %rdx
jmp 0x53c5
leaq -0xf0(%rbp), %rdi
callq 0x7ed2
leaq -0xd8(%rbp), %rdi
callq 0x2100
leaq -0x98(%rbp), %rdi
callq 0x2100
leaq -0xb8(%rbp), %rdi
callq 0x2100
leaq -0x78(%rbp), %rdi
callq 0x2100
leaq -0x3c0(%rbp), %rdi
callq 0x2070
leaq -0x50(%rbp), %rdi
callq 0x7ed2
movq -0x58(%rbp), %rax
addq $0x398, %rsp            # imm = 0x398
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq -0x110(%rbp), %rdi
jmp 0x55fd
jmp 0x5611
movq %rax, %r14
jmp 0x5655
movq %rax, %r14
jmp 0x566a
movq %rax, %r14
leaq -0x170(%rbp), %rdi
callq 0x2100
jmp 0x5582
movq %rax, %r14
movq -0x30(%rbp), %rdi
callq 0x21a0
jmp 0x5649
jmp 0x55c9
jmp 0x55c9
jmp 0x55f6
jmp 0x560c
jmp 0x55a2
jmp 0x560c
jmp 0x560c
jmp 0x560c
jmp 0x560c
movq %rax, %r14
leaq -0x130(%rbp), %rdi
callq 0x2100
jmp 0x5631
jmp 0x560c
jmp 0x560c
jmp 0x560c
movq %rax, %r14
leaq -0x190(%rbp), %rdi
jmp 0x5638
jmp 0x55c9
jmp 0x55c9
movq %rax, %r14
jmp 0x5649
jmp 0x55ef
movq %rax, %r14
leaq -0x1b0(%rbp), %rdi
callq 0x2100
jmp 0x55f9
jmp 0x560c
jmp 0x560c
jmp 0x5611
jmp 0x560c
jmp 0x560c
jmp 0x560c
jmp 0x560c
movq %rax, %r14
jmp 0x563d
jmp 0x55f6
movq %rax, %r14
movq -0x58(%rbp), %rdi
callq 0x7ed2
jmp 0x5625
jmp 0x5611
jmp 0x560c
jmp 0x560c
jmp 0x560c
movq %rax, %r14
jmp 0x5631
movq %rax, %r14
jmp 0x5625
movq %rax, %r14
leaq -0x150(%rbp), %rdi
callq 0x2100
leaq -0xf0(%rbp), %rdi
callq 0x7ed2
leaq -0xd8(%rbp), %rdi
callq 0x2100
leaq -0x98(%rbp), %rdi
callq 0x2100
leaq -0xb8(%rbp), %rdi
callq 0x2100
leaq -0x78(%rbp), %rdi
callq 0x2100
leaq -0x3c0(%rbp), %rdi
callq 0x2070
leaq -0x50(%rbp), %rdi
callq 0x7ed2
movq %r14, %rdi
callq 0x2340