// File: /workspace/github_cpp_makefile_star2_O1/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 0x3763
cmpq $0x0, 0x8dae(%rip)      # 0xbc88
je 0x3763
movl $0x0, 0x8c7a(%rip)      # 0xbb64
leaq 0x8d0f(%rip), %rdi      # 0xbc00
leaq 0x8c54(%rip), %rsi      # 0xbb4c
callq 0x602a
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3763
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 0x602a
movslq 0x8c25(%rip), %rsi      # 0xbb64
shlq $0x5, %rsi
addq (%rax), %rsi
movq %r15, %rdi
callq 0x2100
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x315b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
leaq 0x8c05(%rip), %r14      # 0xbb84
leaq 0x8c4a(%rip), %r12      # 0xbbd0
jne 0x3318
movl $0x0, 0x8bd2(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3318
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x8ba8(%rip), %rsi      # 0xbb68
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x5f42
movq (%rax), %rax
cmpl $-0x1, 0x4(%rax)
jne 0x3127
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
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 0x5f42
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3127
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
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 0x5f42
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x8c17(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x8b05(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f42
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f2e
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x30ca
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x30b2
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x30ca
movq %rbx, 0x8(%r12)
leaq 0x8b8f(%rip), %rdi      # 0xbc60
leaq 0x8a84(%rip), %rsi      # 0xbb5c
callq 0x5f42
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3100
movl 0x8a97(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x8a86(%rip), %r14      # 0xbb84
jmp 0x3112
movq %rax, %rdi
leaq 0x8a7a(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6bbc
leaq 0x8ab7(%rip), %r12      # 0xbbd0
leaq 0x8b10(%rip), %r13      # 0xbc30
leaq 0x8991(%rip), %r15      # 0xbab8
movslq 0x8a3a(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x8a31(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x2fae
jmp 0x3318
movl $0x0, 0x8a03(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
leaq 0x8a06(%rip), %r14      # 0xbb84
leaq 0x8a4b(%rip), %r12      # 0xbbd0
je 0x3318
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x89cb(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x89db(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x32e9
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x8980(%rip)      # 0xbb58
incl %eax
movl %eax, 0x897c(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %ebx
incl %ebx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x8a55(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x8943(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f42
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f2e
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x328c
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3274
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x328c
movq %rbx, 0x8(%r12)
leaq 0x89cd(%rip), %rdi      # 0xbc60
leaq 0x88c2(%rip), %rsi      # 0xbb5c
callq 0x5f42
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x32c2
movl 0x88d5(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x88c4(%rip), %r14      # 0xbb84
jmp 0x32d4
movq %rax, %rdi
leaq 0x88b8(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6bbc
leaq 0x88f5(%rip), %r12      # 0xbbd0
leaq 0x894e(%rip), %r13      # 0xbc30
leaq 0x87cf(%rip), %r15      # 0xbab8
movslq 0x8878(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x886f(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x318b
leaq 0x8971(%rip), %r14      # 0xbc90
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
movl (%rax), %ebx
decl %ebx
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
movl %ebx, (%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
movl 0x4(%rax), %ebx
incl %ebx
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
movl %ebx, 0x4(%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
cmpl $0x0, (%rax)
je 0x3569
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
cmpl $0x1, (%rax)
leaq 0x87f0(%rip), %r14      # 0xbb84
jne 0x371f
movl $0x0, 0x87c4(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x371f
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x879a(%rip), %rsi      # 0xbb68
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x5f42
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x3535
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x876c(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x877c(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3535
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %ebx
movl %ebx, 0x8721(%rip)      # 0xbb58
incl %ebx
movl %ebx, 0x871d(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x8809(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x86f7(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f42
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f2e
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x34d8
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x34c0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x34d8
movq %rbx, 0x8(%r12)
leaq 0x8781(%rip), %rdi      # 0xbc60
leaq 0x8676(%rip), %rsi      # 0xbb5c
callq 0x5f42
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x350e
movl 0x8689(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x8678(%rip), %r14      # 0xbb84
jmp 0x3520
movq %rax, %rdi
leaq 0x866c(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6bbc
leaq 0x86a9(%rip), %r12      # 0xbbd0
leaq 0x8702(%rip), %r13      # 0xbc30
leaq 0x8583(%rip), %r15      # 0xbab8
movslq 0x862c(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x8623(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x33bc
jmp 0x371f
movl $0x0, 0x85f5(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
leaq 0x85f8(%rip), %r14      # 0xbb84
je 0x371f
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x85c4(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x85d4(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x36f0
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x8579(%rip)      # 0xbb58
decl %eax
movl %eax, 0x8575(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %ebx
decl %ebx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x864e(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x853c(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f42
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f2e
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x3693
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x367b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x3693
movq %rbx, 0x8(%r12)
leaq 0x85c6(%rip), %rdi      # 0xbc60
leaq 0x84bb(%rip), %rsi      # 0xbb5c
callq 0x5f42
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x36c9
movl 0x84ce(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x84bd(%rip), %r14      # 0xbb84
jmp 0x36db
movq %rax, %rdi
leaq 0x84b1(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6bbc
leaq 0x84ee(%rip), %r12      # 0xbbd0
leaq 0x8547(%rip), %r13      # 0xbc30
leaq 0x83c8(%rip), %r15      # 0xbab8
movslq 0x8471(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x8468(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x3592
movslq 0x843e(%rip), %rbx      # 0xbb64
incq %rbx
movl %ebx, 0x8435(%rip)      # 0xbb64
leaq 0x84ca(%rip), %r14      # 0xbc00
movq %r14, %rdi
leaq 0x840c(%rip), %r12      # 0xbb4c
movq %r12, %rsi
callq 0x602a
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x5, %rcx
cmpq %rbx, %rcx
leaq 0x8533(%rip), %rbx      # 0xbc90
ja 0x2f2d
cmpb $0x1, 0x8433(%rip)      # 0xbb9d
jne 0x4001
cmpq $0x0, 0x8510(%rip)      # 0xbc88
je 0x4001
movl $0x0, 0x83dc(%rip)      # 0xbb64
leaq 0x8471(%rip), %rdi      # 0xbc00
leaq 0x83b6(%rip), %rsi      # 0xbb4c
callq 0x602a
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x4001
leaq 0x8451(%rip), %r14      # 0xbc00
leaq 0x8396(%rip), %r12      # 0xbb4c
leaq 0x82fb(%rip), %r15      # 0xbab8
leaq 0x84cc(%rip), %rbx      # 0xbc90
leaq 0x8465(%rip), %r13      # 0xbc30
movq %r14, %rdi
movq %r12, %rsi
callq 0x602a
movslq 0x8387(%rip), %rsi      # 0xbb64
shlq $0x5, %rsi
addq (%rax), %rsi
movq %r15, %rdi
callq 0x2100
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
cmpl $0x0, (%rax)
je 0x39f7
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
cmpl $0x1, (%rax)
leaq 0x8369(%rip), %r14      # 0xbb84
leaq 0x83ae(%rip), %r12      # 0xbbd0
jne 0x3bb4
movl $0x0, 0x8336(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3bb4
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x830c(%rip), %rsi      # 0xbb68
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x5f42
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x39c3
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x82de(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x82ee(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x39c3
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %ebx
movl %ebx, 0x8293(%rip)      # 0xbb58
decl %ebx
movl %ebx, 0x828f(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x837b(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x8269(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f42
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f2e
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x3966
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x394e
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x3966
movq %rbx, 0x8(%r12)
leaq 0x82f3(%rip), %rdi      # 0xbc60
leaq 0x81e8(%rip), %rsi      # 0xbb5c
callq 0x5f42
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x399c
movl 0x81fb(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x81ea(%rip), %r14      # 0xbb84
jmp 0x39ae
movq %rax, %rdi
leaq 0x81de(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6bbc
leaq 0x821b(%rip), %r12      # 0xbbd0
leaq 0x8274(%rip), %r13      # 0xbc30
leaq 0x80f5(%rip), %r15      # 0xbab8
movslq 0x819e(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x8195(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x384a
jmp 0x3bb4
movl $0x0, 0x8167(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
leaq 0x816a(%rip), %r14      # 0xbb84
leaq 0x81af(%rip), %r12      # 0xbbd0
je 0x3bb4
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x812f(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x813f(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3b85
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x80e4(%rip)      # 0xbb58
incl %eax
movl %eax, 0x80e0(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %ebx
incl %ebx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x81b9(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x80a7(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f42
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f2e
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x3b28
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3b10
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x3b28
movq %rbx, 0x8(%r12)
leaq 0x8131(%rip), %rdi      # 0xbc60
leaq 0x8026(%rip), %rsi      # 0xbb5c
callq 0x5f42
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3b5e
movl 0x8039(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x8028(%rip), %r14      # 0xbb84
jmp 0x3b70
movq %rax, %rdi
leaq 0x801c(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6bbc
leaq 0x8059(%rip), %r12      # 0xbbd0
leaq 0x80b2(%rip), %r13      # 0xbc30
leaq 0x7f33(%rip), %r15      # 0xbab8
movslq 0x7fdc(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x7fd3(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x3a27
leaq 0x80d5(%rip), %r14      # 0xbc90
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
movl 0x4(%rax), %ebx
decl %ebx
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
movl %ebx, 0x4(%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
movl (%rax), %ebx
incl %ebx
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
movl %ebx, (%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x3e07
movq %r14, %rdi
movq %r15, %rsi
callq 0x5faa
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
leaq 0x7f52(%rip), %r14      # 0xbb84
jne 0x3fbd
movl $0x0, 0x7f26(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3fbd
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x7efc(%rip), %rsi      # 0xbb68
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x5f42
movq (%rax), %rax
cmpl $-0x1, 0x4(%rax)
jne 0x3dd3
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x7ece(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7ede(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3dd3
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %ebx
movl %ebx, 0x7e83(%rip)      # 0xbb58
incl %ebx
movl %ebx, 0x7e7f(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x7f6b(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x7e59(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f42
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f2e
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x3d76
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3d5e
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x3d76
movq %rbx, 0x8(%r12)
leaq 0x7ee3(%rip), %rdi      # 0xbc60
leaq 0x7dd8(%rip), %rsi      # 0xbb5c
callq 0x5f42
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3dac
movl 0x7deb(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x7dda(%rip), %r14      # 0xbb84
jmp 0x3dbe
movq %rax, %rdi
leaq 0x7dce(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6bbc
leaq 0x7e0b(%rip), %r12      # 0xbbd0
leaq 0x7e64(%rip), %r13      # 0xbc30
leaq 0x7ce5(%rip), %r15      # 0xbab8
movslq 0x7d8e(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x7d85(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x3c5a
jmp 0x3fbd
movl $0x0, 0x7d57(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
leaq 0x7d5a(%rip), %r14      # 0xbb84
je 0x3fbd
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movslq 0x7d26(%rip), %rcx      # 0xbb68
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7d36(%rip)      # 0xbb84
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3f8e
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x7cdb(%rip)      # 0xbb58
decl %eax
movl %eax, 0x7cd7(%rip)      # 0xbb5c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl 0xc(%rax), %ebx
decl %ebx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5f42
movq (%rax), %rax
movl %ebx, 0xc(%rax)
leaq 0x7db0(%rip), %r15      # 0xbc60
movq %r15, %rdi
leaq 0x7c9e(%rip), %r13      # 0xbb58
movq %r13, %rsi
callq 0x5f42
movq %rax, %r12
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq (%rax), %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x6f2e
movq %rax, %rbx
movq %r15, %rdi
movq %r13, %rsi
callq 0x5f42
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0x3f31
movq 0x8(%r12), %rdx
subq %r14, %rdx
je 0x3f19
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x8(%r12), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x3f31
movq %rbx, 0x8(%r12)
leaq 0x7d28(%rip), %rdi      # 0xbc60
leaq 0x7c1d(%rip), %rsi      # 0xbb5c
callq 0x5f42
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x3f67
movl 0x7c30(%rip), %ecx      # 0xbb84
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
leaq 0x7c1f(%rip), %r14      # 0xbb84
jmp 0x3f79
movq %rax, %rdi
leaq 0x7c13(%rip), %r14      # 0xbb84
movq %r14, %rdx
callq 0x6bbc
leaq 0x7c50(%rip), %r12      # 0xbbd0
leaq 0x7ca9(%rip), %r13      # 0xbc30
leaq 0x7b2a(%rip), %r15      # 0xbab8
movslq 0x7bd3(%rip), %rbx      # 0xbb68
incq %rbx
movl %ebx, 0x7bca(%rip)      # 0xbb68
movq %r13, %rdi
movq %r15, %rsi
callq 0x5faa
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbx, %rcx
ja 0x3e30
movslq 0x7ba0(%rip), %rbx      # 0xbb64
incq %rbx
movl %ebx, 0x7b97(%rip)      # 0xbb64
leaq 0x7c2c(%rip), %r14      # 0xbc00
movq %r14, %rdi
leaq 0x7b6e(%rip), %r12      # 0xbb4c
movq %r12, %rsi
callq 0x602a
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x5, %rcx
cmpq %rbx, %rcx
leaq 0x7c95(%rip), %rbx      # 0xbc90
ja 0x37cb
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq