// File: /workspace/github_cpp_makefile_star2_O3/monikakushwaha28[P]Fiduccia_Matthesys-using-c-/Fiduccia_Mattheyses_v1.0.cpp
// Function: update_gain()
void update_gain()
{
	//updating of gain of neighbours
	if (found_baseC1)
	{
		if (!gain_bucket.empty())
		{
			for (p = 0; p < node_net_map[base_cell].size(); p++)
			{
				curr_net = node_net_map[base_cell][p];
				if (net_card[curr_net][1] == 0)
				{
					for (q = 0; q < net_node_map[curr_net].size(); q++)
					{
						nb_node = net_node_map[curr_net][q];
						if (node_map[nb_node][2] == 0)
						{
							gain_old = node_map[nb_node][3];
							gain_new = gain_old + 1;
							node_map[nb_node][3] = node_map[nb_node][3] + 1;

							gain_bucket[gain_old].erase(remove(gain_bucket[gain_old].begin(), gain_bucket[gain_old].end(), nb_node), gain_bucket[gain_old].end());
							gain_bucket[gain_new].push_back(nb_node);

						}
					}
				}
				else if (net_card[curr_net][1] == 1)
				{
					for (q = 0; q < net_node_map[curr_net].size(); q++)
					{
						if (node_map[net_node_map[curr_net][q]][1] == -1)
						{
							nb_node = net_node_map[curr_net][q];
							if (node_map[nb_node][2] == 0)
							{
								gain_old = node_map[nb_node][3];
								gain_new = gain_old - 1;
								node_map[nb_node][3] = gain_new;

								gain_bucket[gain_old].erase(remove(gain_bucket[gain_old].begin(), gain_bucket[gain_old].end(), nb_node), gain_bucket[gain_old].end());
								gain_bucket[gain_new].push_back(nb_node);

							}
						}
					}
				}

				//Changing Net Cardinality
				net_card[curr_net][0] = net_card[curr_net][0] - 1;
				net_card[curr_net][1] = net_card[curr_net][1] + 1;

				if (net_card[curr_net][0] == 0)
				{
					for (q = 0; q < net_node_map[curr_net].size(); q++)
					{
						nb_node = net_node_map[curr_net][q];
						if (node_map[nb_node][2] == 0)
						{
							gain_old = node_map[nb_node][3];
							gain_new = gain_old - 1;
							node_map[nb_node][3] = node_map[nb_node][3] - 1;

							gain_bucket[gain_old].erase(remove(gain_bucket[gain_old].begin(), gain_bucket[gain_old].end(), nb_node), gain_bucket[gain_old].end());
							gain_bucket[gain_new].push_back(nb_node);

						}
					}
				}
				else if (net_card[curr_net][0] == 1)
				{
					for (q = 0; q < net_node_map[curr_net].size(); q++)
					{
						if (node_map[net_node_map[curr_net][q]][1] == 1)
						{
							nb_node = net_node_map[curr_net][q];
							if (node_map[nb_node][2] == 0)
							{
								gain_old = node_map[nb_node][3];
								gain_new = gain_old + 1;
								node_map[nb_node][3] = gain_new;

								gain_bucket[gain_old].erase(remove(gain_bucket[gain_old].begin(), gain_bucket[gain_old].end(), nb_node), gain_bucket[gain_old].end());
								gain_bucket[gain_new].push_back(nb_node);

							}
						}
					}
				}
			}
		}
	}

	if (found_baseCn1)
	{
		if (!gain_bucket.empty())
		{
			for (p = 0; p < node_net_map[base_cell].size(); p++)
			{
				curr_net = node_net_map[base_cell][p];
				if (net_card[curr_net][0] == 0)
				{
					for (q = 0; q < net_node_map[curr_net].size(); q++)
					{
						nb_node = net_node_map[curr_net][q];
						if (node_map[nb_node][2] == 0)  //checking if node is fixed
						{
							gain_old = node_map[nb_node][3];
							gain_new = gain_old + 1;
							node_map[nb_node][3] = node_map[nb_node][3] + 1;


							gain_bucket[gain_old].erase(remove(gain_bucket[gain_old].begin(), gain_bucket[gain_old].end(), nb_node), gain_bucket[gain_old].end());
							gain_bucket[gain_new].push_back(nb_node);

						}
					}
				}
				else if (net_card[curr_net][0] == 1)
				{
					for (q = 0; q < net_node_map[curr_net].size(); q++)
					{
						if (node_map[net_node_map[curr_net][q]][1] == 1)
						{
							nb_node = net_node_map[curr_net][q];
							if (node_map[nb_node][2] == 0)
							{
								gain_old = node_map[nb_node][3];
								gain_new = gain_old - 1;
								node_map[nb_node][3] = gain_new;
								gain_bucket[gain_old].erase(remove(gain_bucket[gain_old].begin(), gain_bucket[gain_old].end(), nb_node), gain_bucket[gain_old].end());
								gain_bucket[gain_new].push_back(nb_node);
							}
						}
					}
				}

				//Changing Net Cardinality
				net_card[curr_net][1] = net_card[curr_net][1] - 1;
				net_card[curr_net][0] = net_card[curr_net][0] + 1;

				if (net_card[curr_net][1] == 0)
				{
					for (q = 0; q < net_node_map[curr_net].size(); q++)
					{
						nb_node = net_node_map[curr_net][q];
						if (node_map[nb_node][2] == 0)  //checking if node is fixed
						{
							gain_old = node_map[nb_node][3];
							gain_new = gain_old - 1;
							node_map[nb_node][3] = node_map[nb_node][3] - 1;

							gain_bucket[gain_old].erase(remove(gain_bucket[gain_old].begin(), gain_bucket[gain_old].end(), nb_node), gain_bucket[gain_old].end());
							gain_bucket[gain_new].push_back(nb_node);

						}
					}

				}
				else if (net_card[curr_net][1] == 1)
				{
					for (q = 0; q < net_node_map[curr_net].size(); q++)
					{
						if (node_map[net_node_map[curr_net][q]][1] == -1)
						{
							nb_node = net_node_map[curr_net][q];
							if (node_map[nb_node][2] == 0)
							{
								gain_old = node_map[nb_node][3];
								gain_new = gain_old + 1;
								node_map[nb_node][3] = gain_new;

								gain_bucket[gain_old].erase(remove(gain_bucket[gain_old].begin(), gain_bucket[gain_old].end(), nb_node), gain_bucket[gain_old].end());
								gain_bucket[gain_new].push_back(nb_node);
							}
						}
					}
				}
			}
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
cmpb $0x1, 0x8cd0(%rip)      # 0xbb9c
jne 0x3783
cmpq $0x0, 0x8dae(%rip)      # 0xbc88
je 0x3783
movl $0x0, 0x8c7a(%rip)      # 0xbb64
leaq 0x8d0f(%rip), %rdi      # 0xbc00
leaq 0x8c54(%rip), %rsi      # 0xbb4c
callq 0x604a
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3783
leaq 0x8cef(%rip), %r14      # 0xbc00
leaq 0x8c34(%rip), %r12      # 0xbb4c
leaq 0x8b99(%rip), %r15      # 0xbab8
leaq 0x8d6a(%rip), %rbx      # 0xbc90
leaq 0x8d03(%rip), %r13      # 0xbc30
movq %r14, %rdi
movq %r12, %rsi
callq 0x604a
movslq 0x8c25(%rip), %rsi      # 0xbb64
shlq $0x5, %rsi
addq (%rax), %rsi
movq %r15, %rdi
callq 0x2100
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x3163
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
leaq 0x8c05(%rip), %r14      # 0xbb84
leaq 0x8c4a(%rip), %r12      # 0xbbd0
jne 0x3328
movl $0x0, 0x8bd2(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3328
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x8ba8(%rip), %rsi      # 0xbb68
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x5f62
movq (%rax), %rax
cmpl $-0x1, 0x4(%rax)
jne 0x312f
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x8b7a(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x8b8a(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x312f
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %ebx
movl %ebx, 0x8b2f(%rip)      # 0xbb58
decl %ebx
movl %ebx, 0x8b2b(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x8c17(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x8b05(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f62
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f08
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x30d2
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x30bc
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x30c2
movq %r14, %rax
movq %r14, %rcx
subq %r14, %rax
addq %rax, %rbx
cmpq %rbx, %rcx
je 0x30d2
movq %rbx, 0x8(%r12)
leaq 0x8b87(%rip), %rdi      # 0xbc60
leaq 0x8a7c(%rip), %rsi      # 0xbb5c
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3108
movl 0x8a8f(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x8a7e(%rip), %r14      # 0xbb84
jmp 0x311a
movq %rax, %rdi
leaq 0x8a72(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6ba2
leaq 0x8aaf(%rip), %r12      # 0xbbd0
leaq 0x8b08(%rip), %r13      # 0xbc30
leaq 0x8989(%rip), %r15      # 0xbab8
movslq 0x8a32(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x8a29(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x2fae
jmp 0x3328
movl $0x0, 0x89fb(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
leaq 0x89fe(%rip), %r14      # 0xbb84
leaq 0x8a43(%rip), %r12      # 0xbbd0
je 0x3328
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x89c3(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x89d3(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x32f9
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x8978(%rip)      # 0xbb58
incl %eax
movl %eax, 0x8974(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %ebx
incl %ebx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x8a4d(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x893b(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f62
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f08
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x329c
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3286
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x328c
movq %r14, %rax
movq %r14, %rcx
subq %r14, %rax
addq %rax, %rbx
cmpq %rbx, %rcx
je 0x329c
movq %rbx, 0x8(%r12)
leaq 0x89bd(%rip), %rdi      # 0xbc60
leaq 0x88b2(%rip), %rsi      # 0xbb5c
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x32d2
movl 0x88c5(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x88b4(%rip), %r14      # 0xbb84
jmp 0x32e4
movq %rax, %rdi
leaq 0x88a8(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6ba2
leaq 0x88e5(%rip), %r12      # 0xbbd0
leaq 0x893e(%rip), %r13      # 0xbc30
leaq 0x87bf(%rip), %r15      # 0xbab8
movslq 0x8868(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x885f(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x3193
leaq 0x8961(%rip), %r14      # 0xbc90
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
movl (%rax), %ebx
decl %ebx
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
movl %ebx, (%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
movl 0x4(%rax), %ebx
incl %ebx
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
movl %ebx, 0x4(%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x0, (%rax)
je 0x3581
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x1, (%rax)
leaq 0x87e0(%rip), %r14      # 0xbb84
jne 0x373f
movl $0x0, 0x87b4(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x373f
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x878a(%rip), %rsi      # 0xbb68
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x5f62
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x354d
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x875c(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x876c(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x354d
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %ebx
movl %ebx, 0x8711(%rip)      # 0xbb58
incl %ebx
movl %ebx, 0x870d(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x87f9(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x86e7(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f62
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f08
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x34f0
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x34da
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x34e0
movq %r14, %rax
movq %r14, %rcx
subq %r14, %rax
addq %rax, %rbx
cmpq %rbx, %rcx
je 0x34f0
movq %rbx, 0x8(%r12)
leaq 0x8769(%rip), %rdi      # 0xbc60
leaq 0x865e(%rip), %rsi      # 0xbb5c
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3526
movl 0x8671(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x8660(%rip), %r14      # 0xbb84
jmp 0x3538
movq %rax, %rdi
leaq 0x8654(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6ba2
leaq 0x8691(%rip), %r12      # 0xbbd0
leaq 0x86ea(%rip), %r13      # 0xbc30
leaq 0x856b(%rip), %r15      # 0xbab8
movslq 0x8614(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x860b(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x33cc
jmp 0x373f
movl $0x0, 0x85dd(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
leaq 0x85e0(%rip), %r14      # 0xbb84
je 0x373f
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x85ac(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x85bc(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3710
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x8561(%rip)      # 0xbb58
decl %eax
movl %eax, 0x855d(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %ebx
decl %ebx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x8636(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x8524(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f62
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f08
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x36b3
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x369d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x36a3
movq %r14, %rax
movq %r14, %rcx
subq %r14, %rax
addq %rax, %rbx
cmpq %rbx, %rcx
je 0x36b3
movq %rbx, 0x8(%r12)
leaq 0x85a6(%rip), %rdi      # 0xbc60
leaq 0x849b(%rip), %rsi      # 0xbb5c
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x36e9
movl 0x84ae(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x849d(%rip), %r14      # 0xbb84
jmp 0x36fb
movq %rax, %rdi
leaq 0x8491(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6ba2
leaq 0x84ce(%rip), %r12      # 0xbbd0
leaq 0x8527(%rip), %r13      # 0xbc30
leaq 0x83a8(%rip), %r15      # 0xbab8
movslq 0x8451(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x8448(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x35aa
movslq 0x841e(%rip), %rbx      # 0xbb64
incq %rbx
movl %ebx, 0x8415(%rip)      # 0xbb64
leaq 0x84aa(%rip), %r14      # 0xbc00
movq %r14, %rdi
leaq 0x83ec(%rip), %r12      # 0xbb4c
movq %r12, %rsi
callq 0x604a
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x5, %rcx
cmpq %rbx, %rcx
leaq 0x8513(%rip), %rbx      # 0xbc90
ja 0x2f2d
cmpb $0x1, 0x8413(%rip)      # 0xbb9d
jne 0x4041
cmpq $0x0, 0x84f0(%rip)      # 0xbc88
je 0x4041
movl $0x0, 0x83bc(%rip)      # 0xbb64
leaq 0x8451(%rip), %rdi      # 0xbc00
leaq 0x8396(%rip), %rsi      # 0xbb4c
callq 0x604a
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x4041
leaq 0x8431(%rip), %r14      # 0xbc00
leaq 0x8376(%rip), %r12      # 0xbb4c
leaq 0x82db(%rip), %r15      # 0xbab8
leaq 0x84ac(%rip), %rbx      # 0xbc90
leaq 0x8445(%rip), %r13      # 0xbc30
movq %r14, %rdi
movq %r12, %rsi
callq 0x604a
movslq 0x8367(%rip), %rsi      # 0xbb64
shlq $0x5, %rsi
addq (%rax), %rsi
movq %r15, %rdi
callq 0x2100
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x0, (%rax)
je 0x3a1f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x1, (%rax)
leaq 0x8349(%rip), %r14      # 0xbb84
leaq 0x838e(%rip), %r12      # 0xbbd0
jne 0x3be4
movl $0x0, 0x8316(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3be4
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x82ec(%rip), %rsi      # 0xbb68
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x5f62
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x39eb
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x82be(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x82ce(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x39eb
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %ebx
movl %ebx, 0x8273(%rip)      # 0xbb58
decl %ebx
movl %ebx, 0x826f(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x835b(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x8249(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f62
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f08
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x398e
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3978
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x397e
movq %r14, %rax
movq %r14, %rcx
subq %r14, %rax
addq %rax, %rbx
cmpq %rbx, %rcx
je 0x398e
movq %rbx, 0x8(%r12)
leaq 0x82cb(%rip), %rdi      # 0xbc60
leaq 0x81c0(%rip), %rsi      # 0xbb5c
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x39c4
movl 0x81d3(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x81c2(%rip), %r14      # 0xbb84
jmp 0x39d6
movq %rax, %rdi
leaq 0x81b6(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6ba2
leaq 0x81f3(%rip), %r12      # 0xbbd0
leaq 0x824c(%rip), %r13      # 0xbc30
leaq 0x80cd(%rip), %r15      # 0xbab8
movslq 0x8176(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x816d(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x386a
jmp 0x3be4
movl $0x0, 0x813f(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
leaq 0x8142(%rip), %r14      # 0xbb84
leaq 0x8187(%rip), %r12      # 0xbbd0
je 0x3be4
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x8107(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x8117(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3bb5
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x80bc(%rip)      # 0xbb58
incl %eax
movl %eax, 0x80b8(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %ebx
incl %ebx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x8191(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x807f(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f62
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f08
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x3b58
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3b42
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x3b48
movq %r14, %rax
movq %r14, %rcx
subq %r14, %rax
addq %rax, %rbx
cmpq %rbx, %rcx
je 0x3b58
movq %rbx, 0x8(%r12)
leaq 0x8101(%rip), %rdi      # 0xbc60
leaq 0x7ff6(%rip), %rsi      # 0xbb5c
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3b8e
movl 0x8009(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x7ff8(%rip), %r14      # 0xbb84
jmp 0x3ba0
movq %rax, %rdi
leaq 0x7fec(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6ba2
leaq 0x8029(%rip), %r12      # 0xbbd0
leaq 0x8082(%rip), %r13      # 0xbc30
leaq 0x7f03(%rip), %r15      # 0xbab8
movslq 0x7fac(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x7fa3(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x3a4f
leaq 0x80a5(%rip), %r14      # 0xbc90
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
movl 0x4(%rax), %ebx
decl %ebx
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
movl %ebx, 0x4(%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
movl (%rax), %ebx
incl %ebx
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
movl %ebx, (%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x3e3f
movq %r14, %rdi
movq %r15, %rsi
callq 0x5fca
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
leaq 0x7f22(%rip), %r14      # 0xbb84
jne 0x3ffd
movl $0x0, 0x7ef6(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3ffd
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x7ecc(%rip), %rsi      # 0xbb68
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x5f62
movq (%rax), %rax
cmpl $-0x1, 0x4(%rax)
jne 0x3e0b
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x7e9e(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7eae(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3e0b
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %ebx
movl %ebx, 0x7e53(%rip)      # 0xbb58
incl %ebx
movl %ebx, 0x7e4f(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x7f3b(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x7e29(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f62
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f08
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x3dae
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3d98
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x3d9e
movq %r14, %rax
movq %r14, %rcx
subq %r14, %rax
addq %rax, %rbx
cmpq %rbx, %rcx
je 0x3dae
movq %rbx, 0x8(%r12)
leaq 0x7eab(%rip), %rdi      # 0xbc60
leaq 0x7da0(%rip), %rsi      # 0xbb5c
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3de4
movl 0x7db3(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x7da2(%rip), %r14      # 0xbb84
jmp 0x3df6
movq %rax, %rdi
leaq 0x7d96(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6ba2
leaq 0x7dd3(%rip), %r12      # 0xbbd0
leaq 0x7e2c(%rip), %r13      # 0xbc30
leaq 0x7cad(%rip), %r15      # 0xbab8
movslq 0x7d56(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x7d4d(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x3c8a
jmp 0x3ffd
movl $0x0, 0x7d1f(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
leaq 0x7d22(%rip), %r14      # 0xbb84
je 0x3ffd
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movslq 0x7cee(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7cfe(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3fce
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x7ca3(%rip)      # 0xbb58
decl %eax
movl %eax, 0x7c9f(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl 0xc(%rax), %ebx
decl %ebx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f62
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x7d78(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x7c66(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f62
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f08
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f62
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x3f71
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3f5b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x3f61
movq %r14, %rax
movq %r14, %rcx
subq %r14, %rax
addq %rax, %rbx
cmpq %rbx, %rcx
je 0x3f71
movq %rbx, 0x8(%r12)
leaq 0x7ce8(%rip), %rdi      # 0xbc60
leaq 0x7bdd(%rip), %rsi      # 0xbb5c
callq 0x5f62
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3fa7
movl 0x7bf0(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x7bdf(%rip), %r14      # 0xbb84
jmp 0x3fb9
movq %rax, %rdi
leaq 0x7bd3(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6ba2
leaq 0x7c10(%rip), %r12      # 0xbbd0
leaq 0x7c69(%rip), %r13      # 0xbc30
leaq 0x7aea(%rip), %r15      # 0xbab8
movslq 0x7b93(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x7b8a(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5fca
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x3e68
movslq 0x7b60(%rip), %rbx      # 0xbb64
incq %rbx
movl %ebx, 0x7b57(%rip)      # 0xbb64
leaq 0x7bec(%rip), %r14      # 0xbc00
movq %r14, %rdi
leaq 0x7b2e(%rip), %r12      # 0xbb4c
movq %r12, %rsi
callq 0x604a
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x5, %rcx
cmpq %rbx, %rcx
leaq 0x7c55(%rip), %rbx      # 0xbc90
ja 0x37eb
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq