// File: /workspace/github_cpp_makefile_star2_O3/monikakushwaha28[P]Fiduccia_Matthesys-using-c-/Fiduccia_Mattheyses_v1.0.cpp
// Function: main
int main(int argc, char** argv)
{
	if (argc < 2)
	{
		cout << "missing argument: " << endl;
		cout << "Please provide files in correct format." << endl;
		return 0;
	}
	else if (argc == 2)
	{
		string aux_f, auxline;
		vector<string> aux_val;
		aux_f = argv[1];
		const char* aux_fi = argv[1];
		string node_f;
		string net_f;
		bool is_node = false, is_net = false;
		if (aux_f == "design.aux");
		{
			aux_file.open(aux_fi);
			while (getline(aux_file, auxline))
			{
				aux_val = split(auxline, ' ');
				for (int au = 0; au < aux_val.size(); au++)
				{
					if (aux_val[au] == "design.nodes")
					{
						node_f = aux_val[au];
						is_node = true;
					}
					if (aux_val[au] == "design.nets")
					{
						net_f = aux_val[au];
						is_net = true;
					}
					if (is_node && is_net)
					{
						break;
					}
				}
			}
		}
		if (is_node && is_net)
		{
			//Fetching Data from Nodes file;
			node_file.open(node_f.c_str());
			while (getline(node_file, nodeline))
			{
				sep_node = split(nodeline, ' ');
				node_type = sep_node[1];
				sep_node2 = split(sep_node[0], '_');
				istringstream(sep_node2[1]) >> instance;
				free_nodes.push_back(instance);

				if (node_type == "FDRE") weight = 5;
				else if (node_type == "LUT6") weight = 7;
				else if (node_type == "LUT5") weight = 6;
				else if (node_type == "LUT4") weight = 5;
				else if (node_type == "LUT3") weight = 4;
				else if (node_type == "LUT2") weight = 3;
				else if (node_type == "LUT1") weight = 2;
				else if (node_type == "CARRY8") weight = 34;
				else if (node_type == "DSP48E") weight = 429;
				else if (node_type == "RAMB36E2") weight = 379;
				else if (node_type == "BUFGCE") weight = 3;
				else if (node_type == "IBUF") weight = 2;
				else if (node_type == "OBUF") weight = 2;

				if ((part_count % 2) == 0) {
					node_map[instance].push_back(weight);
					node_map[instance].push_back(1);
					wp1 = wp1 + weight;
				}
				else if ((part_count % 2) != 0) {
					node_map[instance].push_back(weight);
					node_map[instance].push_back(-1);
					wpn1 = wpn1 + weight;
				}
				node_map[instance].push_back(0); //pushing back fix;
				part_count++;
			}
			node_file.close();

			//writing into files
			if (part_count == 3336)
			{
				output_f.open("Sain_Kushwaha_output_FPGA-example1_rc1.txt");
				output_f << "Benchmark Name : FPGA-example1" << endl;
				is_benc = true;
			}
			else if (part_count == 542239)
			{
				output_f.open("Sain_Kushwaha_output_FPGA-example2_rc1.txt");
				output_f << "Benchmark Name : FPGA-example2" << endl;
				is_benc = true;
			}
			else if (part_count == 427800)
			{
				output_f.open("Sain_Kushwaha_output_FPGA-example3_rc1.txt");
				output_f << "Benchmark Name : FPGA-example3" << endl;
				is_benc = true;
			}
			else if (part_count == 844184)
			{
				output_f.open("Sain_Kushwaha_output_FPGA-example4_rc1.txt");
				output_f << "Benchmark Name : FPGA-example4" << endl;
				is_benc = true;
			}

			net_file.open(net_f.c_str());
			while (getline(net_file, netline))
			{
				count1 = 0;
				countn1 = 0;
				if (netline.substr(0, 3) == "net")
				{
					int a = 0;
					while (netline.substr(a + 4, 1) != " ")
					{
						a = a++;
					}
					netname = netline.substr(4, a);   //NET is HERE.
					getline(net_file, net_nodeline);

					while (net_nodeline.substr(0, 6) != "endnet")
					{
						int b = 0;
						while (net_nodeline.substr(b + 1, 1) != " ")
						{
							b = b++;
						}
						sep_node = split(net_nodeline.substr(1, b), '_');  //NODE is HERE.
						istringstream(sep_node[1]) >> nodename;
						node_net_map[nodename].push_back(netname);
						net_node_map[netname].push_back(nodename);

						if (node_map[nodename][1] == 1)
						{
							count1 = count1 + 1;
						}
						else
						{
							countn1 = countn1 + 1;
						}

						getline(net_file, net_nodeline);
					}
					net_card[netname].push_back(count1);
					net_card[netname].push_back(countn1);
				}
			}
			net_file.close();

			//Removing Duplicates
			for (net_nodeiter iter = node_net_map.begin(); iter != node_net_map.end(); iter++)
			{
				node_net_map[iter->first].erase(unique(node_net_map[iter->first].begin(), node_net_map[iter->first].end()), node_net_map[iter->first].end());
			}

			//Initial Gain Bucket Calculation
			for (int i = 0; i < free_nodes.size(); i++)
			{
				int current_node = free_nodes[i];
				gain = 0;
				for (int var = 0; var < node_net_map[current_node].size(); var++)
				{
					current_net = node_net_map[current_node].at(var);
					net_count1 = net_card[current_net].at(0);
					net_countn1 = net_card[current_net].at(1);
					current_part = node_map[current_node].at(1);
					if (current_part == 1)
					{
						if (net_count1 == 1)
						{
							gain = gain + 1;
						}
						else if (net_countn1 == 0)
						{
							gain = gain - 1;
						}
					}
					else
					{
						if (net_count1 == 0)
						{
							gain = gain - 1;
						}
						else if (net_countn1 == 1)
						{
							gain = gain + 1;
						}
					}
				}
				gain_bucket[gain].push_back(current_node);
				node_map[current_node].push_back(gain);
			}


			//Initial Cutset 
			for (netcarditer a = net_card.begin(); a != net_card.end(); a++)
			{
				if ((net_card[a->first][0] != 0) && (net_card[a->first][1] != 0))
				{
					cutset = cutset + 1;
					initial_cutset = cutset;
				}
			}

			for (fg = 1; fg < 9; fg++)
			{
				cutset = cutset_cal(cutset);
			}
		}
	}

	end:int stop_s = clock(); //Timing of code ends here

	int time_ms = (stop_s - start_s) / double(CLOCKS_PER_SEC) * 1000;
	int time_hours = (time_ms) / (1000 * 60 * 60);
	int time_minutes = (time_ms - time_hours * (60 * 60 * 1000)) / (1000 * 60);
	int time_seconds = (time_ms - time_minutes * (1000 * 60)) / (1000);
	cout << "Execution Time:" << endl;
	cout << "HH: " << time_hours << " MM: " << time_minutes << " SS: " << time_seconds << endl; //Printing out total execution time.
	cout << "Execution Time: " << time_ms << endl;

	if (is_benc)
	{
		output_f << "Execution Time: " << " HH: " << time_hours << " MM: " << time_minutes << " SS: " << time_seconds << endl;
		output_f << "Starting Cut: " << initial_cutset << endl;
		output_f << "Final Cut: " << cutset << endl;
		output_f << "Percentage Change: " << (((initial_cutset - cutset) / initial_cutset) * 100) << "%" << endl;
		output_f << "Ratio Cut: " << (wp1 / wpn1) << endl;
	}

	output_f.close();
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
cmpl $0x1, %edi
jg 0x47ef
movq 0x685c(%rip), %rbx      # 0xafd0
leaq 0x38c5(%rip), %rsi      # 0x8040
movl $0x12, %edx
movq %rbx, %rdi
callq 0x2230
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x389d(%rip), %rsi      # 0x8053
movl $0x27, %edx
movq %rbx, %rdi
callq 0x2230
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
jmp 0x5c91
cmpl $0x2, %edi
jne 0x58b9
movq %rsi, %rbx
leaq -0x118(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x78(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq %rax, -0x50(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x60(%rbp)
movq 0x8(%rsi), %r14
movq %r14, %rdi
callq 0x20d0
leaq -0x128(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %r14, %rcx
movq %rax, %r8
callq 0x22b0
movq 0x8(%rbx), %rbx
leaq -0xf8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xd8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x3803(%rip), %rsi      # 0x807b
leaq -0x128(%rbp), %rdi
callq 0x2090
leaq 0x6d65(%rip), %rdi      # 0xb5f0
movq %rbx, %rsi
movl $0x8, %edx
callq 0x2130
xorl %r12d, %r12d
xorl %r14d, %r14d
movq 0x6d4b(%rip), %rax      # 0xb5f0
movq -0x18(%rax), %rdi
leaq 0x6d40(%rip), %r15      # 0xb5f0
addq %r15, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %edx
movq %r15, %rdi
leaq -0x88(%rbp), %rsi
callq 0x2350
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
leaq -0x168(%rbp), %r13
jne 0x4a22
leaq -0x158(%rbp), %r15
movq %r15, -0x168(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x6260
leaq -0x40(%rbp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movl $0x20, %edx
callq 0x289c
movaps -0x60(%rbp), %xmm0
movq -0x50(%rbp), %rax
movaps -0x40(%rbp), %xmm1
movaps %xmm1, -0x60(%rbp)
movq -0x30(%rbp), %rcx
movq %rcx, -0x50(%rbp)
movups %xmm0, -0x2e8(%rbp)
movq %rax, -0x2d8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x40(%rbp)
movq $0x0, -0x30(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x5e6c
movq %rbx, %rdi
callq 0x5e6c
movq -0x168(%rbp), %rdi
cmpq %r15, %rdi
je 0x4984
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x60(%rbp), %rdi
cmpq %rdi, -0x58(%rbp)
je 0x489e
xorl %r15d, %r15d
xorl %r13d, %r13d
addq %r15, %rdi
leaq 0x36e4(%rip), %rsi      # 0x8086
callq 0x2090
testl %eax, %eax
jne 0x49c1
movq -0x60(%rbp), %rsi
addq %r15, %rsi
movb $0x1, %r14b
leaq -0x108(%rbp), %rdi
callq 0x2100
movq -0x60(%rbp), %rdi
addq %r15, %rdi
leaq 0x36c4(%rip), %rsi      # 0x8093
callq 0x2090
testl %eax, %eax
jne 0x49ee
movq -0x60(%rbp), %rsi
addq %r15, %rsi
movb $0x1, %r12b
leaq -0xe8(%rbp), %rdi
callq 0x2100
testb $0x1, %r14b
je 0x49fe
testb $0x1, %r12b
jne 0x489e
incq %r13
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
subq %rdi, %rax
sarq $0x5, %rax
addq $0x20, %r15
cmpq %r13, %rax
ja 0x4998
jmp 0x489e
testb $0x1, %r14b
je 0x582e
testb $0x1, %r12b
je 0x582e
movq -0x108(%rbp), %rsi
leaq 0x679c(%rip), %r14      # 0xb1e0
movq %r14, %rdi
movl $0x8, %edx
callq 0x2130
leaq -0x40(%rbp), %r13
leaq -0x2e8(%rbp), %rbx
leaq -0xa8(%rbp), %r12
movq 0x6776(%rip), %rax      # 0xb1e0
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %edx
movq %r14, %rdi
leaq 0x6f70(%rip), %rsi      # 0xb9f8
callq 0x2350
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x4fc5
leaq -0xb8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq 0x6f44(%rip), %rsi      # 0xb9f8
movq 0x6f45(%rip), %rdx      # 0xba00
addq %rsi, %rdx
leaq -0xc8(%rbp), %r15
movq %r15, %rdi
callq 0x6260
movq %r13, %rdi
movq %r15, %rsi
movl $0x20, %edx
callq 0x289c
movups 0x70bc(%rip), %xmm0     # 0xbba0
movq 0x70c5(%rip), %rax      # 0xbbb0
movaps -0x40(%rbp), %xmm1
movups %xmm1, 0x70aa(%rip)     # 0xbba0
movq -0x30(%rbp), %rcx
movq %rcx, 0x70af(%rip)      # 0xbbb0
movups %xmm0, -0x2e8(%rbp)
movq %rax, -0x2d8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x40(%rbp)
movq $0x0, -0x30(%rbp)
movq %rbx, %rdi
callq 0x5e6c
movq %r13, %rdi
callq 0x5e6c
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x4b50
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x7049(%rip), %rsi      # 0xbba0
addq $0x20, %rsi
leaq 0x6eb6(%rip), %rdi      # 0xba18
callq 0x2100
movq 0x7032(%rip), %rax      # 0xbba0
leaq -0x98(%rbp), %rcx
movq %rcx, -0xa8(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x6260
movq %r13, %rdi
movq %r12, %rsi
movl $0x5f, %edx
callq 0x289c
movups 0x7013(%rip), %xmm0     # 0xbbb8
movq 0x701c(%rip), %rax      # 0xbbc8
movaps -0x40(%rbp), %xmm1
movups %xmm1, 0x7001(%rip)     # 0xbbb8
movq -0x30(%rbp), %rcx
movq %rcx, 0x7006(%rip)      # 0xbbc8
movups %xmm0, -0x2e8(%rbp)
movq %rax, -0x2d8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x40(%rbp)
movq $0x0, -0x30(%rbp)
movq %rbx, %rdi
callq 0x5e6c
movq %r13, %rdi
callq 0x5e6c
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x4c11
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x6fa0(%rip), %rsi      # 0xbbb8
addq $0x20, %rsi
movq %rbx, %rdi
movl $0x8, %edx
callq 0x2300
movq %rbx, %rdi
leaq 0x6ec5(%rip), %rsi      # 0xbaf8
callq 0x2120
movq %rbx, %rdi
movq 0x6386(%rip), %rsi      # 0xafc8
callq 0x2270
leaq -0x270(%rbp), %rdi
callq 0x20a0
movq 0x706e(%rip), %rsi      # 0xbcc8
cmpq 0x706f(%rip), %rsi      # 0xbcd0
je 0x4c78
movl 0x6e8f(%rip), %eax      # 0xbaf8
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x7052(%rip)      # 0xbcc8
jmp 0x4c8b
leaq 0x7041(%rip), %rdi      # 0xbcc0
leaq 0x6e72(%rip), %rdx      # 0xbaf8
callq 0x6ba2
movq %rbx, %r15
movq %r12, %rbx
movq %r13, %r12
leaq 0x6d7d(%rip), %r13      # 0xba18
movq %r13, %rdi
leaq 0x33fa(%rip), %rsi      # 0x809f
callq 0x2090
movl $0x5, %r14d
testl %eax, %eax
je 0x4dfa
movq %r13, %rdi
leaq 0x33e2(%rip), %rsi      # 0x80a4
callq 0x2090
testl %eax, %eax
je 0x4dec
movq %r13, %rdi
leaq 0x33d0(%rip), %rsi      # 0x80a9
callq 0x2090
testl %eax, %eax
je 0x4df4
movq %r13, %rdi
leaq 0x33be(%rip), %rsi      # 0x80ae
callq 0x2090
testl %eax, %eax
movq %r12, %r13
movq %rbx, %r12
movq %r15, %rbx
je 0x4e03
leaq 0x6d0b(%rip), %r14      # 0xba18
movq %r14, %rdi
leaq 0x339c(%rip), %rsi      # 0x80b3
callq 0x2090
testl %eax, %eax
je 0x4f8e
movq %r14, %rdi
leaq 0x338a(%rip), %rsi      # 0x80b8
callq 0x2090
movq %r14, %r15
movl $0x3, %r14d
testl %eax, %eax
je 0x4e03
movq %r15, %rdi
leaq 0x336f(%rip), %rsi      # 0x80bd
callq 0x2090
testl %eax, %eax
je 0x4f99
movq %r15, %rdi
leaq 0x335d(%rip), %rsi      # 0x80c2
callq 0x2090
testl %eax, %eax
je 0x4fa4
movq %r15, %rdi
leaq 0x334d(%rip), %rsi      # 0x80c9
callq 0x2090
testl %eax, %eax
je 0x4faf
movq %r15, %rdi
leaq 0x333d(%rip), %rsi      # 0x80d0
callq 0x2090
testl %eax, %eax
je 0x4fba
movq %r15, %rdi
leaq 0x332f(%rip), %rsi      # 0x80d9
callq 0x2090
testl %eax, %eax
je 0x4e03
leaq 0x6c5e(%rip), %r14      # 0xba18
movq %r14, %rdi
leaq 0x331c(%rip), %rsi      # 0x80e0
callq 0x2090
testl %eax, %eax
je 0x4f99
movq %r14, %rdi
leaq 0x330a(%rip), %rsi      # 0x80e5
callq 0x2090
movl $0x2, %r14d
testl %eax, %eax
jne 0x4e0a
jmp 0x4e03
movl $0x7, %r14d
jmp 0x4dfa
movl $0x6, %r14d
movq %r12, %r13
movq %rbx, %r12
movq %r15, %rbx
movl %r14d, 0x6cf2(%rip)     # 0xbafc
testb $0x1, 0x6cef(%rip)      # 0xbb00
jne 0x4e49
leaq 0x6db6(%rip), %rdi      # 0xbbd0
leaq 0x6cd7(%rip), %rsi      # 0xbaf8
callq 0x5f62
leaq 0x63b3(%rip), %r14      # 0xb1e0
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x4e7f
movl 0x6cbf(%rip), %ecx      # 0xbafc
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x4e8e
leaq 0x6d80(%rip), %rdi      # 0xbbd0
leaq 0x6ca1(%rip), %rsi      # 0xbaf8
callq 0x5f62
leaq 0x637d(%rip), %r14      # 0xb1e0
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x4ec5
movl 0x6c89(%rip), %ecx      # 0xbafc
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x4ed4
movq %rax, %rdi
leaq 0x6c73(%rip), %rdx      # 0xbafc
callq 0x6ba2
leaq 0x6d3b(%rip), %rdi      # 0xbbd0
leaq 0x6c5c(%rip), %rsi      # 0xbaf8
callq 0x5f62
movl $0x1, -0x2e8(%rbp)
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x4f0b
movl $0x1, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x4f16
movq %rax, %rdi
leaq 0x6c2d(%rip), %rdx      # 0xbafc
callq 0x6ba2
leaq 0x6cf5(%rip), %rdi      # 0xbbd0
leaq 0x6c16(%rip), %rsi      # 0xbaf8
callq 0x5f62
movl $0xffffffff, -0x2e8(%rbp) # imm = 0xFFFFFFFF
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x4f1f
movl $0xffffffff, (%rsi)     # imm = 0xFFFFFFFF
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x4f2a
movq %rax, %rdi
movq %rbx, %rdx
callq 0x713a
leaq 0x6c03(%rip), %rax      # 0xbb20
jmp 0x4f31
movq %rax, %rdi
movq %rbx, %rdx
callq 0x713a
leaq 0x6bf3(%rip), %rax      # 0xbb24
cvtsi2ssl 0x6bc3(%rip), %xmm0 # 0xbafc
addss (%rax), %xmm0
movss %xmm0, (%rax)
leaq 0x6c88(%rip), %rdi      # 0xbbd0
leaq 0x6ba9(%rip), %rsi      # 0xbaf8
callq 0x5f62
movl $0x0, -0x2e8(%rbp)
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x4f78
movl $0x0, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x4f83
movq %rax, %rdi
movq %rbx, %rdx
callq 0x713a
incl 0x6b77(%rip)            # 0xbb00
jmp 0x4a63
movl $0x4, %r14d
jmp 0x4e03
movl $0x2, %r14d
jmp 0x4e03
movl $0x22, %r14d
jmp 0x4e03
movl $0x1ad, %r14d           # imm = 0x1AD
jmp 0x4e03
movl $0x17b, %r14d           # imm = 0x17B
jmp 0x4e03
leaq 0x6214(%rip), %rdi      # 0xb1e0
callq 0x2070
movl 0x6b29(%rip), %eax      # 0xbb00
cmpl $0x8461e, %eax          # imm = 0x8461E
jg 0x5011
cmpl $0xd08, %eax            # imm = 0xD08
je 0x5044
cmpl $0x68718, %eax          # imm = 0x68718
jne 0x50a8
leaq 0x6801(%rip), %rdi      # 0xb7f8
leaq 0x3180(%rip), %rsi      # 0x817e
movl $0x10, %edx
callq 0x2050
leaq 0x319a(%rip), %rsi      # 0x81a9
jmp 0x5084
cmpl $0x8461f, %eax          # imm = 0x8461F
je 0x5065
cmpl $0xce198, %eax          # imm = 0xCE198
jne 0x50a8
leaq 0x67ce(%rip), %rdi      # 0xb7f8
leaq 0x3197(%rip), %rsi      # 0x81c8
movl $0x10, %edx
callq 0x2050
leaq 0x31b1(%rip), %rsi      # 0x81f3
jmp 0x5084
leaq 0x67ad(%rip), %rdi      # 0xb7f8
leaq 0x3098(%rip), %rsi      # 0x80ea
movl $0x10, %edx
callq 0x2050
leaq 0x30b2(%rip), %rsi      # 0x8115
jmp 0x5084
leaq 0x678c(%rip), %rdi      # 0xb7f8
leaq 0x30c1(%rip), %rsi      # 0x8134
movl $0x10, %edx
callq 0x2050
leaq 0x30db(%rip), %rsi      # 0x815f
leaq 0x676d(%rip), %rdi      # 0xb7f8
movl $0x1e, %edx
callq 0x2230
leaq 0x675c(%rip), %rdi      # 0xb7f8
callq 0x20e0
movb $0x1, 0x6af6(%rip)      # 0xbb9e
movq -0xe8(%rbp), %rsi
leaq 0x6332(%rip), %r14      # 0xb3e8
movq %r14, %rdi
movl $0x8, %edx
callq 0x2130
leaq -0x2d8(%rbp), %rbx
leaq -0x2e8(%rbp), %r12
leaq 0x6980(%rip), %r15      # 0xba58
movq 0x6309(%rip), %rax      # 0xb3e8
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %edx
movq %r14, %rdi
leaq 0x693b(%rip), %rsi      # 0xba38
callq 0x2350
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x54e8
xorl %eax, %eax
movl %eax, 0x69ec(%rip)      # 0xbb08
movl %eax, 0x69ea(%rip)      # 0xbb0c
movl $0x3, %ecx
movq %r12, %rdi
leaq 0x6907(%rip), %rsi      # 0xba38
xorl %edx, %edx
callq 0x2200
movq %r12, %rdi
leaq 0x30d3(%rip), %rsi      # 0x8215
callq 0x2090
movl %eax, %r14d
movq -0x2e8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5165
movq -0x2d8(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
leaq 0x6279(%rip), %r14      # 0xb3e8
jne 0x50d8
movl $0x4, %edx
movl $0x1, %ecx
movq %r12, %rdi
leaq 0x68af(%rip), %rsi      # 0xba38
callq 0x2200
movq %r12, %rdi
leaq 0x30b2(%rip), %rsi      # 0x824a
callq 0x2090
movl %eax, %r14d
movq -0x2e8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x51bb
movq -0x2d8(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
jne 0x5175
movl $0x4, %edx
movq %r12, %rdi
leaq 0x6869(%rip), %rsi      # 0xba38
xorl %ecx, %ecx
callq 0x2200
leaq 0x689b(%rip), %rdi      # 0xba78
movq %r12, %rsi
callq 0x2250
movq -0x2e8(%rbp), %rdi
cmpq %rbx, %rdi
leaq 0x61f2(%rip), %r14      # 0xb3e8
je 0x5207
movq -0x2d8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x61da(%rip), %rax      # 0xb3e8
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x2350
movl $0x6, %ecx
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2200
movq %r12, %rdi
leaq 0x2fc9(%rip), %rsi      # 0x8212
callq 0x2090
movl %eax, %r14d
movq -0x2e8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x526c
movq -0x2d8(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
je 0x545d
movl $0x1, %edx
movl $0x1, %ecx
movq %r12, %rdi
movq %r15, %rsi
callq 0x2200
movq %r12, %rdi
leaq 0x2fb6(%rip), %rsi      # 0x824a
callq 0x2090
movl %eax, %r14d
movq -0x2e8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x52b7
movq -0x2d8(%rbp), %rsi
incq %rsi
callq 0x21e0
testl %r14d, %r14d
jne 0x5275
movl $0x1, %edx
leaq -0x148(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
xorl %ecx, %ecx
callq 0x2200
leaq -0x40(%rbp), %r13
movq %r13, %rdi
movq %r14, %rsi
movl $0x5f, %edx
callq 0x289c
leaq 0x60f8(%rip), %r14      # 0xb3e8
movups 0x68a9(%rip), %xmm0     # 0xbba0
movq 0x68b2(%rip), %rax      # 0xbbb0
movaps -0x40(%rbp), %xmm1
movups %xmm1, 0x6897(%rip)     # 0xbba0
movq -0x30(%rbp), %rcx
movq %rcx, 0x689c(%rip)      # 0xbbb0
movups %xmm0, -0x2e8(%rbp)
movq %rax, -0x2d8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x40(%rbp)
movq $0x0, -0x30(%rbp)
movq %r12, %rdi
callq 0x5e6c
movq %r13, %rdi
callq 0x5e6c
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x5363
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x21e0
movq 0x6836(%rip), %rsi      # 0xbba0
addq $0x20, %rsi
movq %r12, %rdi
movl $0x8, %edx
callq 0x2300
movq %r12, %rdi
leaq 0x677f(%rip), %r13      # 0xbb04
movq %r13, %rsi
callq 0x2120
movq %r12, %rdi
movq 0x5c31(%rip), %rsi      # 0xafc8
callq 0x2270
leaq -0x270(%rbp), %rdi
callq 0x20a0
leaq 0x6851(%rip), %rdi      # 0xbc00
movq %r13, %rsi
callq 0x604a
movq %rax, %rdi
leaq 0x66b7(%rip), %rsi      # 0xba78
callq 0x5f16
leaq 0x6863(%rip), %rdi      # 0xbc30
leaq 0x66a4(%rip), %rsi      # 0xba78
callq 0x5fca
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x53f5
movl 0x671b(%rip), %ecx      # 0xbb04
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x5404
movq %rax, %rdi
leaq 0x6705(%rip), %rdx      # 0xbb04
callq 0x6ba2
leaq 0x67c5(%rip), %rdi      # 0xbbd0
leaq 0x66f2(%rip), %rsi      # 0xbb04
callq 0x5f62
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
leaq 0x66e7(%rip), %rax      # 0xbb0c
leaq 0x66dc(%rip), %rcx      # 0xbb08
cmoveq %rcx, %rax
incl (%rax)
movq 0x5faf(%rip), %rax      # 0xb3e8
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x2350
jmp 0x522d
leaq 0x682c(%rip), %rdi      # 0xbc90
leaq 0x660d(%rip), %rsi      # 0xba78
callq 0x5fca
leaq 0x5f71(%rip), %r14      # 0xb3e8
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x5493
movl 0x6681(%rip), %ecx      # 0xbb08
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x54a2
movq %rax, %rdi
leaq 0x666b(%rip), %rdx      # 0xbb08
callq 0x6ba2
leaq 0x67e7(%rip), %rdi      # 0xbc90
leaq 0x65c8(%rip), %rsi      # 0xba78
callq 0x5fca
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x54d4
movl 0x6647(%rip), %ecx      # 0xbb0c
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x50d8
movq %rax, %rdi
leaq 0x662e(%rip), %rdx      # 0xbb0c
callq 0x6ba2
jmp 0x50d8
leaq 0x5ef9(%rip), %rdi      # 0xb3e8
callq 0x2070
movq 0x671d(%rip), %rbx      # 0xbc18
leaq 0x6706(%rip), %rax      # 0xbc08
cmpq %rax, %rbx
je 0x5579
leaq 0x66f2(%rip), %r14      # 0xbc00
leaq 0x20(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x604a
movq %rax, %r15
movq %r14, %rdi
movq %r12, %rsi
callq 0x604a
movq (%rax), %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x604a
movq 0x8(%rax), %rsi
movq %r13, %rdi
callq 0x7215
movq %rax, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x604a
movq 0x8(%rax), %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0x72f0
movq %rbx, %rdi
callq 0x2160
movq %rax, %rbx
leaq 0x6694(%rip), %rax      # 0xbc08
cmpq %rax, %rbx
jne 0x550e
movq 0x6740(%rip), %rax      # 0xbcc0
cmpq %rax, 0x6741(%rip)      # 0xbcc8
je 0x577b
leaq -0x2e8(%rbp), %r14
leaq 0x64fd(%rip), %r15      # 0xba98
xorl %ebx, %ebx
movl $0x1, %r13d
movq %rbx, -0x68(%rbp)
movl (%rax,%rbx,4), %eax
movl %eax, -0x2e8(%rbp)
movl $0x0, 0x658a(%rip)      # 0xbb44
xorl %ebx, %ebx
xorl %r12d, %r12d
leaq 0x663a(%rip), %rdi      # 0xbc00
movq %r14, %rsi
callq 0x604a
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x5, %rcx
cmpq %r12, %rcx
jbe 0x56e2
leaq 0x6617(%rip), %rdi      # 0xbc00
movq %r14, %rsi
callq 0x604a
movq (%rax), %rsi
movq 0x8(%rax), %rdx
subq %rsi, %rdx
sarq $0x5, %rdx
cmpq %r12, %rdx
jbe 0x5ca5
addq %rbx, %rsi
movq %r15, %rdi
callq 0x2100
leaq 0x6676(%rip), %rdi      # 0xbc90
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rcx
cmpq %rcx, 0x8(%rax)
je 0x5caa
movl (%rcx), %eax
movl %eax, 0x6505(%rip)      # 0xbb3c
leaq 0x6652(%rip), %rdi      # 0xbc90
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rcx
movq 0x8(%rax), %rdx
subq %rcx, %rdx
sarq $0x2, %rdx
cmpq $0x2, %rdx
jb 0x5caf
movl 0x4(%rcx), %eax
movl %eax, 0x64d9(%rip)      # 0xbb40
leaq 0x6562(%rip), %rdi      # 0xbbd0
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rcx
movq 0x8(%rax), %rdx
subq %rcx, %rdx
sarq $0x2, %rdx
cmpq $0x2, %rdx
jb 0x5caf
movl 0x4(%rcx), %eax
movl %eax, 0x64a1(%rip)      # 0xbb38
movl 0x649f(%rip), %ecx      # 0xbb3c
cmpl $0x1, %eax
jne 0x56b7
movl $0x1, %eax
cmpl $0x1, %ecx
je 0x56d0
cmpl $0x0, 0x648d(%rip)      # 0xbb40
jne 0x56d6
jmp 0x56cb
testl %ecx, %ecx
je 0x56cb
movl $0x1, %eax
cmpl $0x1, 0x6479(%rip)      # 0xbb40
je 0x56d0
jmp 0x56d6
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addl %eax, 0x646e(%rip)      # 0xbb44
incq %r12
addq $0x20, %rbx
jmp 0x55bf
leaq 0x6577(%rip), %rdi      # 0xbc60
leaq 0x6454(%rip), %rsi      # 0xbb44
callq 0x5f62
movq -0x68(%rbp), %rbx
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x5715
movl -0x2e8(%rbp), %ecx
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x5720
movq %rax, %rdi
movq %r14, %rdx
callq 0x6ba2
leaq 0x64a9(%rip), %rdi      # 0xbbd0
movq %r14, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x574b
movl 0x6405(%rip), %ecx      # 0xbb44
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x575a
movq %rax, %rdi
leaq 0x63ef(%rip), %rdx      # 0xbb44
callq 0x6ba2
incq %rbx
movq 0x6564(%rip), %rcx      # 0xbcc8
movq 0x6555(%rip), %rax      # 0xbcc0
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x55a3
movq 0x6526(%rip), %rbx      # 0xbca8
leaq 0x650f(%rip), %r12      # 0xbc98
cmpq %r12, %rbx
je 0x57f0
leaq 0x64fb(%rip), %r14      # 0xbc90
leaq 0x20(%rbx), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x0, (%rax)
je 0x57e0
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x57e0
movss 0x6354(%rip), %xmm0     # 0xbb1c
addss 0x2850(%rip), %xmm0     # 0x8020
movss %xmm0, 0x6344(%rip)     # 0xbb1c
movss %xmm0, 0x6338(%rip)     # 0xbb18
movq %rbx, %rdi
callq 0x2160
movq %rax, %rbx
cmpq %r12, %rax
jne 0x5795
movl $0x1, 0x59c6(%rip)      # 0xb1c0
movss 0x631a(%rip), %xmm0     # 0xbb1c
cvttss2si %xmm0, %edi
callq 0x42a9
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movss %xmm0, 0x6302(%rip)     # 0xbb1c
movl 0x59a0(%rip), %eax      # 0xb1c0
leal 0x1(%rax), %ecx
movl %ecx, 0x5997(%rip)      # 0xb1c0
cmpl $0x8, %eax
jl 0x5802
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x5850
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x5872
movq -0xf8(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq -0x60(%rbp), %rdi
callq 0x5e6c
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x5897
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x58b9
movq -0x118(%rbp), %rsi
incq %rsi
callq 0x21e0
callq 0x2140
subl 0x5918(%rip), %eax      # 0xb1dc
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x273d(%rip), %xmm0     # 0x8010
mulsd 0x273d(%rip), %xmm0     # 0x8018
cvttsd2si %xmm0, %eax
cltq
imulq $0x4a90be59, %rax, %r12 # imm = 0x4A90BE59
movq %rax, %rcx
movq %rax, -0x68(%rbp)
movq %r12, %rax
shrq $0x3f, %rax
sarq $0x34, %r12
addl %eax, %r12d
imull $0xffc91180, %r12d, %eax # imm = 0xFFC91180
addl %ecx, %eax
cltq
imulq $0x45e7b273, %rax, %r15 # imm = 0x45E7B273
movq %r15, %rax
shrq $0x3f, %rax
sarq $0x2e, %r15
addl %eax, %r15d
imull $0xffff15a0, %r15d, %eax # imm = 0xFFFF15A0
addl %ecx, %eax
cltq
imulq $0x10624dd3, %rax, %r14 # imm = 0x10624DD3
movq %r14, %rax
shrq $0x3f, %rax
sarq $0x26, %r14
addl %eax, %r14d
movq 0x568c(%rip), %r13      # 0xafd0
leaq 0x28ce(%rip), %rsi      # 0x8219
movl $0xf, %edx
movq %r13, %rdi
callq 0x2230
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x28c0(%rip), %rsi      # 0x8247
movl $0x4, %edx
movq %r13, %rdi
callq 0x2230
movq %r13, %rdi
movl %r12d, %esi
callq 0x2320
movq %rax, %rbx
leaq 0x2880(%rip), %rsi      # 0x8229
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
movl %r15d, %esi
callq 0x2320
movq %rax, %rbx
leaq 0x2864(%rip), %rsi      # 0x822f
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
movl %r14d, %esi
callq 0x2320
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x2821(%rip), %rsi      # 0x8235
movl $0x10, %edx
movq %r13, %rdi
callq 0x2230
movq %r13, %rdi
movq -0x68(%rbp), %rsi
callq 0x2320
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
cmpb $0x1, 0x6140(%rip)      # 0xbb9e
jne 0x5c85
leaq 0x5d8d(%rip), %rbx      # 0xb7f8
leaq 0x27c3(%rip), %rsi      # 0x8235
movl $0x10, %edx
movq %rbx, %rdi
callq 0x2230
leaq 0x27c0(%rip), %rsi      # 0x8246
movl $0x5, %edx
movq %rbx, %rdi
callq 0x2230
movq %rbx, %rdi
movl %r12d, %esi
callq 0x2320
movq %rax, %r12
leaq 0x2781(%rip), %rsi      # 0x8229
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %r12, %rdi
movl %r15d, %esi
callq 0x2320
movq %rax, %r15
leaq 0x2765(%rip), %rsi      # 0x822f
movl $0x5, %edx
movq %rax, %rdi
callq 0x2230
movq %r15, %rdi
movl %r14d, %esi
callq 0x2320
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x2739(%rip), %rsi      # 0x824c
movl $0xe, %edx
movq %rbx, %rdi
callq 0x2230
cvtss2sd 0x5ff0(%rip), %xmm0     # 0xbb18
movq %rbx, %rdi
callq 0x22d0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x26fa(%rip), %rsi      # 0x825b
movl $0xb, %edx
movq %rbx, %rdi
callq 0x2230
xorps %xmm0, %xmm0
cvtss2sd 0x5fa3(%rip), %xmm0     # 0xbb1c
movq %rbx, %rdi
callq 0x22d0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x26b5(%rip), %rsi      # 0x8267
movl $0x13, %edx
movq %rbx, %rdi
callq 0x2230
movss 0x5f51(%rip), %xmm0     # 0xbb18
movaps %xmm0, %xmm1
subss 0x5f4a(%rip), %xmm1     # 0xbb1c
divss %xmm0, %xmm1
mulss 0x2446(%rip), %xmm1     # 0x8024
xorps %xmm0, %xmm0
cvtss2sd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x22d0
movq %rax, %r14
leaq 0x2684(%rip), %rsi      # 0x827b
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x264b(%rip), %rsi      # 0x827d
movl $0xb, %edx
movq %rbx, %rdi
callq 0x2230
movss 0x5ed9(%rip), %xmm0     # 0xbb20
divss 0x5ed5(%rip), %xmm0     # 0xbb24
cvtss2sd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x22d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0x5b6c(%rip), %rdi      # 0xb7f8
callq 0x2260
xorl %eax, %eax
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r12, %r13
jmp 0x5caf
xorl %r13d, %r13d
xorl %edx, %edx
leaq 0x2617(%rip), %rdi      # 0x82cd
movq %r13, %rsi
xorl %eax, %eax
callq 0x2290
movq %rax, %rbx
jmp 0x5e1c
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5da3
jmp 0x5dd5
movq %rax, %rbx
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x5dd8
movq -0x98(%rbp), %rsi
jmp 0x5d97
jmp 0x5dd5
movq %rax, %rbx
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x5dd8
movq -0xb8(%rbp), %rsi
jmp 0x5d97
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
movq %rax, %rbx
movq -0x168(%rbp), %rdi
cmpq %r15, %rdi
je 0x5dd8
movq -0x158(%rbp), %rsi
jmp 0x5d97
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
movq %rax, %rbx
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x5dd8
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x21e0
jmp 0x5dd8
jmp 0x5dd5
movq %rax, %rbx
movq 0x521b(%rip), %rsi      # 0xafc8
leaq -0x2e8(%rbp), %rdi
callq 0x2270
leaq -0x270(%rbp), %rdi
callq 0x20a0
jmp 0x5dd8
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
jmp 0x5dd5
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x5dfa
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x5e1c
movq -0xf8(%rbp), %rsi
incq %rsi
callq 0x21e0
leaq -0x60(%rbp), %rdi
callq 0x5e6c
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x5e41
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x21e0
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x5e63
movq -0x118(%rbp), %rsi
incq %rsi
callq 0x21e0
movq %rbx, %rdi
callq 0x2330
nop