// File: /workspace/github_cpp_makefile_star2_O2/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
movq 0x7f70(%rip), %rax      # 0xac60
testq %rax, %rax
setne %cl
andb 0x7e78(%rip), %cl       # 0xab74
cmpb $0x1, %cl
jne 0x33b9
xorl %eax, %eax
leaq 0x7eca(%rip), %r12      # 0xabd8
leaq 0x7e0f(%rip), %r14      # 0xab24
leaq 0x7d74(%rip), %r15      # 0xaa90
leaq 0x7ee5(%rip), %r13      # 0xac08
leaq 0x7e32(%rip), %rbx      # 0xab5c
movl %eax, 0x7e0c(%rip)      # 0xab3c
cltq
movq %rax, -0x30(%rbp)
movq %r12, %rdi
movq %r14, %rsi
callq 0x50a4
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x5, %rcx
cmpq -0x30(%rbp), %rcx
jbe 0x33b2
movq %r12, %rdi
movq %r14, %rsi
callq 0x50a4
movslq 0x7dd4(%rip), %rsi      # 0xab3c
shlq $0x5, %rsi
addq (%rax), %rsi
movq %r15, %rdi
callq 0x2100
leaq 0x7eea(%rip), %r12      # 0xac68
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x2f12
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x305d
xorl %eax, %eax
movl %eax, 0x7d8a(%rip)      # 0xab40
movslq %eax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x305d
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x7d56(%rip), %rsi      # 0xab40
shlq $0x2, %rsi
addq (%rax), %rsi
leaq 0x7db0(%rip), %r12      # 0xaba8
movq %r12, %rdi
callq 0x4fa0
movq (%rax), %rax
cmpl $-0x1, 0x4(%rax)
jne 0x2f05
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x7d21(%rip), %rcx      # 0xab40
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7d31(%rip)      # 0xab5c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x2f05
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %r14d
movl %r14d, 0x7cd4(%rip)     # 0xab30
decl %r14d
movl %r14d, 0x7cce(%rip)     # 0xab34
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl %r14d, 0xc(%rax)
leaq 0x7db9(%rip), %r13      # 0xac38
movq %r13, %rdi
leaq 0x7ca7(%rip), %rbx      # 0xab30
movq %rbx, %rsi
callq 0x4fa0
movq %rax, %r12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq 0x8(%rax), %rsi
movq %r14, %rdi
leaq 0x7ca1(%rip), %rdx      # 0xab5c
callq 0x615f
movq %rax, %r14
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x7c8c(%rip), %rbx      # 0xab5c
callq 0x4fa0
movq 0x8(%rax), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5118
movq %r13, %rdi
leaq 0x7d1a(%rip), %r13      # 0xac08
leaq 0x7c3f(%rip), %rsi      # 0xab34
callq 0x4fa0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x505c
movl 0x7c35(%rip), %eax      # 0xab40
incl %eax
jmp 0x2db0
xorl %eax, %eax
movl %eax, 0x7c26(%rip)      # 0xab40
movslq %eax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x305d
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x7bf2(%rip), %rcx      # 0xab40
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7c02(%rip)      # 0xab5c
leaq 0x7c47(%rip), %rdi      # 0xaba8
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3050
leaq 0x7c2b(%rip), %r12      # 0xaba8
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x7b9c(%rip)      # 0xab30
incl %eax
movl %eax, 0x7b98(%rip)      # 0xab34
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %r14d
incl %r14d
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl %r14d, 0xc(%rax)
leaq 0x7c6e(%rip), %r13      # 0xac38
movq %r13, %rdi
leaq 0x7b5c(%rip), %rbx      # 0xab30
movq %rbx, %rsi
callq 0x4fa0
movq %rax, %r12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq 0x8(%rax), %rsi
movq %r14, %rdi
leaq 0x7b56(%rip), %rdx      # 0xab5c
callq 0x615f
movq %rax, %r14
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x7b41(%rip), %rbx      # 0xab5c
callq 0x4fa0
movq 0x8(%rax), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5118
movq %r13, %rdi
leaq 0x7bcf(%rip), %r13      # 0xac08
leaq 0x7af4(%rip), %rsi      # 0xab34
callq 0x4fa0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x505c
movl 0x7aea(%rip), %eax      # 0xab40
incl %eax
jmp 0x2f14
leaq 0x7c04(%rip), %r12      # 0xac68
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
movl (%rax), %r14d
decl %r14d
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
movl %r14d, (%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
movl 0x4(%rax), %r14d
incl %r14d
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
movl %r14d, 0x4(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
cmpl $0x0, (%rax)
je 0x3249
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
cmpl $0x1, (%rax)
leaq 0x7ac9(%rip), %r12      # 0xaba8
jne 0x3397
xorl %eax, %eax
movl %eax, 0x7a53(%rip)      # 0xab40
movslq %eax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x3397
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x7a1f(%rip), %rsi      # 0xab40
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x323c
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x79f1(%rip), %rcx      # 0xab40
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7a01(%rip)      # 0xab5c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x323c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %r14d
movl %r14d, 0x79a4(%rip)     # 0xab30
incl %r14d
movl %r14d, 0x799e(%rip)     # 0xab34
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl %r14d, 0xc(%rax)
leaq 0x7a89(%rip), %r13      # 0xac38
movq %r13, %rdi
leaq 0x7977(%rip), %rbx      # 0xab30
movq %rbx, %rsi
callq 0x4fa0
movq %rax, %r12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq 0x8(%rax), %rsi
movq %r14, %rdi
leaq 0x7971(%rip), %rdx      # 0xab5c
callq 0x615f
movq %rax, %r14
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x795c(%rip), %rbx      # 0xab5c
callq 0x4fa0
movq 0x8(%rax), %rdx
movq %r12, %rdi
leaq 0x7995(%rip), %r12      # 0xaba8
movq %r14, %rsi
callq 0x5118
movq %r13, %rdi
leaq 0x79e3(%rip), %r13      # 0xac08
leaq 0x7908(%rip), %rsi      # 0xab34
callq 0x4fa0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x505c
movl 0x78fe(%rip), %eax      # 0xab40
incl %eax
jmp 0x30e7
xorl %eax, %eax
leaq 0x7956(%rip), %r12      # 0xaba8
movl %eax, 0x78e8(%rip)      # 0xab40
movslq %eax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x3397
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x78b4(%rip), %rcx      # 0xab40
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x78c4(%rip)      # 0xab5c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x338a
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x7869(%rip)      # 0xab30
decl %eax
movl %eax, 0x7865(%rip)      # 0xab34
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %r14d
decl %r14d
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl %r14d, 0xc(%rax)
leaq 0x793b(%rip), %r13      # 0xac38
movq %r13, %rdi
leaq 0x7829(%rip), %rbx      # 0xab30
movq %rbx, %rsi
callq 0x4fa0
movq %rax, %r12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq 0x8(%rax), %rsi
movq %r14, %rdi
leaq 0x7823(%rip), %rdx      # 0xab5c
callq 0x615f
movq %rax, %r14
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x780e(%rip), %rbx      # 0xab5c
callq 0x4fa0
movq 0x8(%rax), %rdx
movq %r12, %rdi
leaq 0x7847(%rip), %r12      # 0xaba8
movq %r14, %rsi
callq 0x5118
movq %r13, %rdi
leaq 0x7895(%rip), %r13      # 0xac08
leaq 0x77ba(%rip), %rsi      # 0xab34
callq 0x4fa0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x505c
movl 0x77b0(%rip), %eax      # 0xab40
incl %eax
jmp 0x3252
movl 0x779f(%rip), %eax      # 0xab3c
incl %eax
leaq 0x7832(%rip), %r12      # 0xabd8
leaq 0x7777(%rip), %r14      # 0xab24
jmp 0x2d2a
movq 0x78a7(%rip), %rax      # 0xac60
cmpb $0x1, 0x77b5(%rip)      # 0xab75
jne 0x3a7c
testq %rax, %rax
je 0x3a7c
xorl %eax, %eax
leaq 0x7800(%rip), %r12      # 0xabd8
leaq 0x7745(%rip), %r14      # 0xab24
leaq 0x76aa(%rip), %r15      # 0xaa90
leaq 0x781b(%rip), %r13      # 0xac08
leaq 0x7768(%rip), %rbx      # 0xab5c
movl %eax, 0x7742(%rip)      # 0xab3c
cltq
movq %rax, -0x30(%rbp)
movq %r12, %rdi
movq %r14, %rsi
callq 0x50a4
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x5, %rcx
cmpq -0x30(%rbp), %rcx
jbe 0x3a7c
movq %r12, %rdi
movq %r14, %rsi
callq 0x50a4
movslq 0x770a(%rip), %rsi      # 0xab3c
shlq $0x5, %rsi
addq (%rax), %rsi
movq %r15, %rdi
callq 0x2100
leaq 0x7820(%rip), %r12      # 0xac68
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
cmpl $0x0, (%rax)
je 0x35da
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
cmpl $0x1, (%rax)
jne 0x3725
xorl %eax, %eax
movl %eax, 0x76c2(%rip)      # 0xab40
movslq %eax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x3725
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x768e(%rip), %rsi      # 0xab40
shlq $0x2, %rsi
addq (%rax), %rsi
leaq 0x76e8(%rip), %r12      # 0xaba8
movq %r12, %rdi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
jne 0x35cd
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x7659(%rip), %rcx      # 0xab40
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7669(%rip)      # 0xab5c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x35cd
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %r14d
movl %r14d, 0x760c(%rip)     # 0xab30
decl %r14d
movl %r14d, 0x7606(%rip)     # 0xab34
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl %r14d, 0xc(%rax)
leaq 0x76f1(%rip), %r13      # 0xac38
movq %r13, %rdi
leaq 0x75df(%rip), %rbx      # 0xab30
movq %rbx, %rsi
callq 0x4fa0
movq %rax, %r12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq 0x8(%rax), %rsi
movq %r14, %rdi
leaq 0x75d9(%rip), %rdx      # 0xab5c
callq 0x615f
movq %rax, %r14
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x75c4(%rip), %rbx      # 0xab5c
callq 0x4fa0
movq 0x8(%rax), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5118
movq %r13, %rdi
leaq 0x7652(%rip), %r13      # 0xac08
leaq 0x7577(%rip), %rsi      # 0xab34
callq 0x4fa0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x505c
movl 0x756d(%rip), %eax      # 0xab40
incl %eax
jmp 0x3478
xorl %eax, %eax
movl %eax, 0x755e(%rip)      # 0xab40
movslq %eax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x3725
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x752a(%rip), %rcx      # 0xab40
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x753a(%rip)      # 0xab5c
leaq 0x757f(%rip), %rdi      # 0xaba8
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3718
leaq 0x7563(%rip), %r12      # 0xaba8
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x74d4(%rip)      # 0xab30
incl %eax
movl %eax, 0x74d0(%rip)      # 0xab34
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %r14d
incl %r14d
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl %r14d, 0xc(%rax)
leaq 0x75a6(%rip), %r13      # 0xac38
movq %r13, %rdi
leaq 0x7494(%rip), %rbx      # 0xab30
movq %rbx, %rsi
callq 0x4fa0
movq %rax, %r12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq 0x8(%rax), %rsi
movq %r14, %rdi
leaq 0x748e(%rip), %rdx      # 0xab5c
callq 0x615f
movq %rax, %r14
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x7479(%rip), %rbx      # 0xab5c
callq 0x4fa0
movq 0x8(%rax), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0x5118
movq %r13, %rdi
leaq 0x7507(%rip), %r13      # 0xac08
leaq 0x742c(%rip), %rsi      # 0xab34
callq 0x4fa0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x505c
movl 0x7422(%rip), %eax      # 0xab40
incl %eax
jmp 0x35dc
leaq 0x753c(%rip), %r12      # 0xac68
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
movl 0x4(%rax), %r14d
decl %r14d
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
movl %r14d, 0x4(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
movl (%rax), %r14d
incl %r14d
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
movl %r14d, (%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x3913
movq %r12, %rdi
movq %r15, %rsi
callq 0x4ff2
movq (%rax), %rax
cmpl $0x1, 0x4(%rax)
leaq 0x73ff(%rip), %r12      # 0xaba8
jne 0x3a61
xorl %eax, %eax
movl %eax, 0x7389(%rip)      # 0xab40
movslq %eax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x3a61
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x7355(%rip), %rsi      # 0xab40
shlq $0x2, %rsi
addq (%rax), %rsi
movq %r12, %rdi
callq 0x4fa0
movq (%rax), %rax
cmpl $-0x1, 0x4(%rax)
jne 0x3906
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x7327(%rip), %rcx      # 0xab40
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x7337(%rip)      # 0xab5c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3906
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %r14d
movl %r14d, 0x72da(%rip)     # 0xab30
incl %r14d
movl %r14d, 0x72d4(%rip)     # 0xab34
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl %r14d, 0xc(%rax)
leaq 0x73bf(%rip), %r13      # 0xac38
movq %r13, %rdi
leaq 0x72ad(%rip), %rbx      # 0xab30
movq %rbx, %rsi
callq 0x4fa0
movq %rax, %r12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq 0x8(%rax), %rsi
movq %r14, %rdi
leaq 0x72a7(%rip), %rdx      # 0xab5c
callq 0x615f
movq %rax, %r14
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x7292(%rip), %rbx      # 0xab5c
callq 0x4fa0
movq 0x8(%rax), %rdx
movq %r12, %rdi
leaq 0x72cb(%rip), %r12      # 0xaba8
movq %r14, %rsi
callq 0x5118
movq %r13, %rdi
leaq 0x7319(%rip), %r13      # 0xac08
leaq 0x723e(%rip), %rsi      # 0xab34
callq 0x4fa0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x505c
movl 0x7234(%rip), %eax      # 0xab40
incl %eax
jmp 0x37b1
xorl %eax, %eax
leaq 0x728c(%rip), %r12      # 0xaba8
movl %eax, 0x721e(%rip)      # 0xab40
movslq %eax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x3a61
movq %r13, %rdi
movq %r15, %rsi
callq 0x4ff2
movslq 0x71ea(%rip), %rcx      # 0xab40
movq (%rax), %rax
movl (%rax,%rcx,4), %eax
movl %eax, 0x71fa(%rip)      # 0xab5c
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
cmpl $0x0, 0x8(%rax)
jne 0x3a54
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %eax
movl %eax, 0x719f(%rip)      # 0xab30
decl %eax
movl %eax, 0x719b(%rip)      # 0xab34
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl 0xc(%rax), %r14d
decl %r14d
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %rax
movl %r14d, 0xc(%rax)
leaq 0x7271(%rip), %r13      # 0xac38
movq %r13, %rdi
leaq 0x715f(%rip), %rbx      # 0xab30
movq %rbx, %rsi
callq 0x4fa0
movq %rax, %r12
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq (%rax), %r14
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4fa0
movq 0x8(%rax), %rsi
movq %r14, %rdi
leaq 0x7159(%rip), %rdx      # 0xab5c
callq 0x615f
movq %rax, %r14
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x7144(%rip), %rbx      # 0xab5c
callq 0x4fa0
movq 0x8(%rax), %rdx
movq %r12, %rdi
leaq 0x717d(%rip), %r12      # 0xaba8
movq %r14, %rsi
callq 0x5118
movq %r13, %rdi
leaq 0x71cb(%rip), %r13      # 0xac08
leaq 0x70f0(%rip), %rsi      # 0xab34
callq 0x4fa0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x505c
movl 0x70e6(%rip), %eax      # 0xab40
incl %eax
jmp 0x391c
movl 0x70d5(%rip), %eax      # 0xab3c
incl %eax
leaq 0x7168(%rip), %r12      # 0xabd8
leaq 0x70ad(%rip), %r14      # 0xab24
jmp 0x33f4
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq