// File: /workspace/github_cpp_makefile_star2_O3/MarkCBell[P]twister/./twister/kernel/manifold.cpp
// Function: initialise_manifold(manifold&, std::vector<annulus, std::allocator<annulus>>&, std::vector<rectangle, std::allocator<rectangle>>&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void initialise_manifold(manifold &M, 
	std::vector<annulus> &annuli,
	std::vector<rectangle> &rectangles,
	std::vector<std::string> &annulus_name,
	std::vector<std::string> &annulus_name_inverse,
	std::vector<std::string> &rectangle_name,
	std::vector<std::string> &rectangle_name_inverse,
	std::vector<std::string> &macro_name,
	std::vector<std::string> &macro,
	std::string surface_file_contents)
{
	// Check that we actually got the contents of a surface file.
	if (surface_file_contents.substr(0,24) != "# A Twister surface file")
		output_error("A surface file must start with \"# A Twister surface file\".");
	
	std::vector<std::string> surface_description;
	
	{
		size_t marker = 0;
		std::string parsed_line = "";
		surface_file_contents += "\n";  // We add one extra new line, just to make sure / our lives easier.
		for (std::string line = find_next_substring(surface_file_contents, "\n", marker); marker != 0; line = find_next_substring(surface_file_contents, "\n", marker))
		{
			size_t marker2 = 0;
			parsed_line += find_next_substring(line, comment, marker2);  // Remove comments.
			if ((count_substring(line, comment) != 0) && (parsed_line != ""))
			{
				std::string cleaned_line = remove_whitespace(parsed_line);  // Clean up the information that we got.
				if (cleaned_line != "") surface_description.push_back(cleaned_line);
				output_debugging("Parsed line: " + cleaned_line + "\n", 1);
				parsed_line = "";
			}
		}
	}
	
	if (surface_description.size() == 0) output_error("Empty surface description.");
	
	// Determine the number of cubes needed.
	// int num_cubes = atoi((char *) surface_description[0].c_str());
	
	// Determine the number of cubes needed by finding the largest cube number referenced.
	int num_cubes = 0;
	int size = int(surface_description.size());
	for (int i = 0; i < size; i++)
	{
		size_t marker = 0;
		std::string line = surface_description[i];
		
		// Get information about this line.
		std::string type = find_next_substring(line, delimiter, marker);
		if ((type == "annulus") || (type == "rectangle"))
		{
			std::string curve_name = find_next_substring(line, delimiter, marker);
			std::string curve_name_inverse = find_next_substring(line, delimiter, marker);
			
			int sq_num = count_substring(line, delimiter) - 2;  // How many squares there are in this curve.
			if (sq_num < 1) output_error("Invalid curve description.");
			
			// Build the chain.
			for (int j = 0; j < sq_num; j++)
			{
				std::string cube_description = find_next_substring(line, delimiter, marker);
				
				bool orientation = true;
				int number = extract_info(cube_description, orientation);
				if (number+1 >  num_cubes)
					num_cubes = number + 1;
			}
		}
	}
	
	if (num_cubes == 0) output_error("No cubes requested.");
	
	for (int i = 0; i < num_cubes; i++)
		M.cubes.push_back(new cube(M));
	
	// If the manifold we're in is a surface bundle, close
	// up the cube (top to bottom) to get a solid torus. 
	if (M.get_manifold_type() == bundle)
		for (int i = 0; i < num_cubes; i++)
			M.cubes[i]->closeup_cube();
	
	// For storing the information needed to calculate the boundary component
	// indices of the rectangle names.
	std::vector<int> first_number, last_number;  // The first / last cube number of the thickened rectangles.
	std::vector<bool> first_orientation, last_orientation;  // The first / last cube orientations of the thickened rectangles.
	
	std::vector<bool> glued_edges (4*num_cubes, false);
	std::vector<int> vertex_indices;
	vertex_indices.reserve(4*num_cubes);
	for (int i = 0; i < 4*num_cubes; i++)
		vertex_indices.push_back(i);
	
	// Read in each line.
	for (int i = 0; i < size; i++)
	{
		size_t marker = 0;
		std::string line = surface_description[i];
		
		// Get information about this line.
		std::string type = find_next_substring(line, delimiter, marker);
		
		// We extract lines labelled "macro" - these are for parsing shortcuts.
		if (type == "macro")
		{
			macro_name.push_back(find_next_substring(line, delimiter, marker));  // curve_name
			macro.push_back(find_next_substring(line, delimiter, marker));  
		}
		else if ((type == "annulus") || (type == "rectangle"))
		{
			std::string curve_name = find_next_substring(line, delimiter, marker);
			std::string curve_name_inverse = find_next_substring(line, delimiter, marker);
			
			std::vector<int> chain_indices;
			std::vector<cube*> chain_cubes;
			std::vector<bool> chain_upright;
			
			int sq_num = count_substring(line, delimiter) - 2;  // How many squares there are in this curve.
			if (sq_num < 1) output_error("Invalid curve description.");
			chain_cubes.reserve(sq_num);
			chain_upright.reserve(sq_num);
			
			// Build the chain.
			for (int j = 0; j < sq_num; j++)
			{
				std::string cube_description = find_next_substring(line, delimiter, marker);
				
				bool orientation = true;
				int number = extract_info(cube_description, orientation);
				if (number >= num_cubes) output_error(curve_name + " uses a cube that does not exist.");
				chain_indices.push_back(number);
				chain_cubes.push_back(M.cubes[number]);
				chain_upright.push_back(orientation);
			}
			
			// Glue up the edges / vertices as needed.
			for (int j = 0; j < ((type == "annulus") ? sq_num : sq_num-1); j++)
			{
				glued_edges[4*chain_indices[j] + ((chain_upright[j]) ? 1 : 0)] = true;
				glued_edges[4*chain_indices[(j+1) % sq_num] + ((chain_upright[(j+1) % sq_num]) ? 3 : 2)] = true;
				
				int a = vertex_indices[4*chain_indices[j] + ((chain_upright[j]) ? 1 : 0)];
				int b = vertex_indices[4*chain_indices[(j+1) % sq_num] + ((chain_upright[(j+1) % sq_num]) ? 0 : 3)];
				
				// Replace max(a,b) with min(a,b).
				for (int k = 0; k < 4*num_cubes; k++)
					if (vertex_indices[k] == ((a < b) ? b : a)) vertex_indices[k] = ((a < b) ? a : b);
				
				a = vertex_indices[4*chain_indices[j] + ((chain_upright[j]) ? 2 : 1)];
				b = vertex_indices[4*chain_indices[(j+1) % sq_num] + ((chain_upright[(j+1) % sq_num]) ? 3 : 2)];
				
				// Replace max(a,b) with min(a,b).
				for (int k = 0; k < 4*num_cubes; k++)
					if (vertex_indices[k] == ((a < b) ? b : a)) vertex_indices[k] = ((a < b) ? a : b);
			}
			
			// Store it according to its type.
			if (type == "annulus")
			{
				annulus_name.push_back(curve_name);
				annulus_name_inverse.push_back(curve_name_inverse);
				annuli.push_back(annulus(chain_cubes, chain_upright));
			}
			else if (type == "rectangle")
			{
				rectangle_name.push_back(curve_name);
				rectangle_name_inverse.push_back(curve_name_inverse);
				rectangles.push_back(rectangle(chain_cubes, chain_upright));
				
				// Push the first / last cube info onto the relevant lists.
				first_orientation.push_back(chain_upright[0]);
				first_number.push_back(chain_indices[0]);
				last_orientation.push_back(chain_upright[sq_num-1]);
				last_number.push_back(chain_indices[sq_num-1]);
			}
		}
		else
		{
			output_error("Invalid curve or macro description.");
		}
	}
	
	// Now we collate together all of the gluing information to determine the
	// boundary component index of each unglued edge.
	std::vector<int> boundary_index (4*num_cubes, -1);
	int boundary_components = 0;
	for (int i = 0; i < 4*num_cubes; i++)
	{
		if (glued_edges[i]) continue;
		if (boundary_index[i] != -1) continue;
		
		int start_index = vertex_indices[i];
		int current_index = start_index;
		do
		{
			for (int j = 0; j < 4*num_cubes; j++)
			{
				if (glued_edges[j]) continue;
				if (boundary_index[j] != -1) continue;
				if (vertex_indices[j] != current_index) continue;
				
				current_index = vertex_indices[j + ((j % 4 == 3) ? -3 : 1)];  // Move on to the next vertex
				boundary_index[j] = boundary_components;  // Remember to write down the boundary index for that component.
				break;
			}
		} while (current_index != start_index);
		boundary_components++;
	}
	
	// Create the needed marked points.
	for (int i = 0; i < boundary_components; i++)
		M.marked_points.push_back(half_twisted);
	
	// Set the front and back boundary component indices of each rectangle.
	for (int i = 0; i < int(rectangles.size()); i++)
	{
		rectangles[i].set_front(boundary_index[4*first_number[i] + ((first_orientation[i]) ? 3 : 2)]);
		rectangles[i].set_back(boundary_index[4*last_number[i] + ((last_orientation[i]) ? 1 : 0)]);
		rectangles[i].set_one_ended(rectangles[i].get_front() == rectangles[i].get_back());
	}
	
	// Collate all names together.
	std::vector<std::string> arc_names;
	arc_names.insert(arc_names.end(), annulus_name.begin(), annulus_name.end());
	arc_names.insert(arc_names.end(), annulus_name_inverse.begin(), annulus_name_inverse.end());
	arc_names.insert(arc_names.end(), rectangle_name.begin(), rectangle_name.end());
	arc_names.insert(arc_names.end(), rectangle_name_inverse.begin(), rectangle_name_inverse.end());
	arc_names.insert(arc_names.end(), macro_name.begin(), macro_name.end());
	
	// And check that they are a valid collection of names.
	check_valid_names(arc_names);
	
	return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x7f8, %rsp            # imm = 0x7F8
movq %r9, 0x230(%rsp)
movq %r8, 0x238(%rsp)
movq %rcx, 0x240(%rsp)
movq %rdx, 0x228(%rsp)
movq %rsi, 0x6f0(%rsp)
movq %rdi, %r13
movq 0x848(%rsp), %r12
leaq 0x60(%rsp), %r14
movl $0x18, %ecx
movq %r14, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x3240
leaq 0x12af2(%rip), %rsi     # 0x170b0
movq %r14, %rdi
callq 0x30c0
movl %eax, %ebx
movq (%r14), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x45e2
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
testl %ebx, %ebx
je 0x4635
leaq 0x7e8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x12ad0(%rip), %rsi     # 0x170c9
leaq 0x12b03(%rip), %rdx     # 0x17103
leaq 0x7d8(%rsp), %rbx
movq %rbx, %rdi
callq 0x892e
movq %rbx, %rdi
callq 0x43b0
movq 0x7d8(%rsp), %rdi
cmpq %r15, %rdi
je 0x4635
movq 0x7e8(%rsp), %rsi
incq %rsi
callq 0x3220
xorps %xmm0, %xmm0
movaps %xmm0, 0x1c0(%rsp)
xorl %eax, %eax
movq %rax, 0x1d0(%rsp)
movq %rax, 0x90(%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
movq %rax, (%rdi)
leaq 0x12cd3(%rip), %rdx     # 0x17339
movq %rdx, %rsi
callq 0x892e
leaq 0x129df(%rip), %rsi     # 0x17054
movq %r12, %rdi
callq 0x3420
leaq 0x7c8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq 0x7b8(%rsp), %rdi
callq 0x89c4
leaq 0x7a8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1299f(%rip), %rsi     # 0x17054
leaq 0x12999(%rip), %rdx     # 0x17055
leaq 0x798(%rsp), %rdi
callq 0x892e
leaq 0xc0(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
leaq 0x798(%rsp), %rdx
leaq 0x90(%rsp), %rcx
callq 0xa485
movq 0x798(%rsp), %rdi
cmpq %r15, %rdi
je 0x470b
movq 0x7a8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x7b8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4728
movq 0x7c8(%rsp), %rsi
incq %rsi
callq 0x3220
cmpq $0x0, 0x90(%rsp)
movq %r13, 0x118(%rsp)
je 0x4c06
leaq 0xf8(%rsp), %rbx
leaq 0xe8(%rsp), %r12
leaq 0x60(%rsp), %rbp
leaq 0x6b0(%rsp), %r15
movq $0x0, 0x10(%rsp)
leaq 0x460(%rsp), %rax
movq %rax, 0x450(%rsp)
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x450(%rsp), %rdi
callq 0x89c4
leaq 0x728(%rsp), %r13
movq %r13, 0x718(%rsp)
movq 0x19c0c(%rip), %rsi     # 0x1e3b8
movq 0x19c0d(%rip), %rdx     # 0x1e3c0
addq %rsi, %rdx
leaq 0x718(%rsp), %r14
movq %r14, %rdi
callq 0x89c4
movq %r12, %rdi
leaq 0x450(%rsp), %rsi
movq %r14, %rdx
leaq 0x10(%rsp), %rcx
callq 0xa485
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %rbp, %rdi
callq 0x30d0
movq 0xe8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4813
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x718(%rsp), %rdi
cmpq %r13, %rdi
je 0x4830
movq 0x728(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x450(%rsp), %rdi
leaq 0x460(%rsp), %rax
cmpq %rax, %rdi
leaq 0x290(%rsp), %r14
leaq 0x270(%rsp), %r13
je 0x4865
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x2a0(%rsp), %rax
movq %rax, 0x290(%rsp)
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x89c4
leaq 0x280(%rsp), %rax
movq %rax, 0x270(%rsp)
movq 0x19b11(%rip), %rsi     # 0x1e3b8
movq 0x19b12(%rip), %rdx     # 0x1e3c0
addq %rsi, %rdx
movq %r13, %rdi
callq 0x89c4
movq %r14, %rdi
movq %r13, %rsi
callq 0xa439
testl %eax, %eax
je 0x4a13
movq %rbp, %rdi
leaq 0x12a63(%rip), %rsi     # 0x17339
callq 0x30c0
movl %eax, %r13d
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x4903
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4928
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3220
testl %r13d, %r13d
movq 0x118(%rsp), %r13
je 0x4b10
leaq 0x6e0(%rsp), %rax
movq %rax, 0x6d0(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x6d0(%rsp), %r14
movq %r14, %rdi
callq 0x89c4
movq %r12, %rdi
movq %r14, %rsi
callq 0xa541
movq 0x6d0(%rsp), %rdi
leaq 0x6e0(%rsp), %rax
cmpq %rax, %rdi
je 0x4996
movq 0x6e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq %r12, %rdi
leaq 0x12999(%rip), %rsi     # 0x17339
callq 0x30c0
testl %eax, %eax
je 0x49b9
leaq 0x1c0(%rsp), %rdi
movq %r12, %rsi
callq 0x830a
leaq 0x30(%rsp), %r14
movq %r14, %rdi
leaq 0x1273c(%rip), %rsi     # 0x17104
movq %r12, %rdx
callq 0x44d4
movq %r14, %rdi
leaq 0x1267a(%rip), %rsi     # 0x17054
callq 0x3420
leaq 0x260(%rsp), %rsi
movq %rsi, 0x250(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4a66
movq %rdx, 0x250(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x260(%rsp)
jmp 0x4a6c
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x4a38
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
movq 0x118(%rsp), %r13
je 0x4b10
movq 0x2a0(%rsp), %rsi
jmp 0x4b08
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x258(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x250(%rsp), %rdi
movl $0x1, %esi
callq 0x4229
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x4abe
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x4ada
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x68(%rsp), %rdx
movq %rbp, %rdi
xorl %esi, %esi
leaq 0x1284e(%rip), %rcx     # 0x17339
xorl %r8d, %r8d
callq 0x3340
movq 0xe8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4b10
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x440(%rsp), %rax
movq %rax, 0x430(%rsp)
movq 0x848(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x430(%rsp), %rdi
callq 0x89c4
leaq 0x6c0(%rsp), %rax
movq %rax, 0x6b0(%rsp)
movq %r15, %rdi
leaq 0x124fb(%rip), %rsi     # 0x17054
leaq 0x124f5(%rip), %rdx     # 0x17055
callq 0x892e
movq %r12, %rdi
leaq 0x430(%rsp), %rsi
movq %r15, %rdx
leaq 0x90(%rsp), %rcx
callq 0xa485
leaq 0xc0(%rsp), %rdi
movq %r12, %rsi
callq 0x32a0
movq 0xe8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4bad
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x6b0(%rsp), %rdi
leaq 0x6c0(%rsp), %rax
cmpq %rax, %rdi
je 0x4bd2
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0x4bf7
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x3220
cmpq $0x0, 0x90(%rsp)
jne 0x475c
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4c27
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x4c43
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x1c8(%rsp), %rax
cmpq 0x1c0(%rsp), %rax
jne 0x4ca6
leaq 0x788(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x124aa(%rip), %rsi     # 0x17112
leaq 0x124bd(%rip), %rdx     # 0x1712c
leaq 0x778(%rsp), %rdi
callq 0x892e
leaq 0x778(%rsp), %rdi
callq 0x43b0
movq 0x778(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4ca6
movq 0x788(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x1c8(%rsp), %rax
subq 0x1c0(%rsp), %rax
shrq $0x5, %rax
movq %rax, 0x110(%rsp)
testl %eax, %eax
jle 0x5307
leaq 0x420(%rsp), %rbx
movq 0x110(%rsp), %rax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq %rax, 0x58(%rsp)
xorl %ecx, %ecx
leaq 0x5d0(%rsp), %rbp
leaq 0x5b0(%rsp), %r15
xorl %r12d, %r12d
movq $0x0, 0x10(%rsp)
movq 0x1c0(%rsp), %rax
movq %rcx, %r13
shlq $0x5, %rcx
leaq 0x70(%rsp), %rdx
movq %rdx, 0x60(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rdi
callq 0x89c4
movq %rbx, 0x410(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x410(%rsp), %rdi
callq 0x89c4
leaq 0x6a0(%rsp), %rax
movq %rax, 0x690(%rsp)
movq 0x1962e(%rip), %rsi     # 0x1e398
movq 0x1962f(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x690(%rsp), %r14
movq %r14, %rdi
callq 0x89c4
leaq 0xc0(%rsp), %rdi
leaq 0x410(%rsp), %rsi
movq %r14, %rdx
leaq 0x10(%rsp), %rcx
callq 0xa485
movq 0x690(%rsp), %rdi
leaq 0x6a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4dc6
movq 0x6a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x410(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4de3
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0xc0(%rsp), %r14
movq %r14, %rdi
leaq 0x12338(%rip), %rsi     # 0x1712d
callq 0x30c0
testl %eax, %eax
je 0x4e15
movq %r14, %rdi
leaq 0x1232d(%rip), %rsi     # 0x17135
callq 0x30c0
testl %eax, %eax
jne 0x5255
leaq 0x680(%rsp), %rbx
movq %rbx, 0x670(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x670(%rsp), %rdi
callq 0x89c4
leaq 0x660(%rsp), %rax
movq %rax, 0x650(%rsp)
movq 0x19542(%rip), %rsi     # 0x1e398
movq 0x19543(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x650(%rsp), %r14
movq %r14, %rdi
callq 0x89c4
leaq 0xe8(%rsp), %rdi
leaq 0x670(%rsp), %rsi
movq %r14, %rdx
leaq 0x10(%rsp), %rcx
callq 0xa485
movq 0x650(%rsp), %rdi
leaq 0x660(%rsp), %rax
cmpq %rax, %rdi
je 0x4eb2
movq 0x660(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x670(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4ecf
movq 0x680(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x640(%rsp), %rbx
movq %rbx, 0x630(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x630(%rsp), %rdi
callq 0x89c4
leaq 0x620(%rsp), %rax
movq %rax, 0x610(%rsp)
movq 0x19488(%rip), %rsi     # 0x1e398
movq 0x19489(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x610(%rsp), %r14
movq %r14, %rdi
callq 0x89c4
leaq 0x30(%rsp), %rdi
leaq 0x630(%rsp), %rsi
movq %r14, %rdx
leaq 0x10(%rsp), %rcx
callq 0xa485
movq 0x610(%rsp), %rdi
leaq 0x620(%rsp), %rax
cmpq %rax, %rdi
je 0x4f69
movq 0x620(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x630(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4f86
movq 0x640(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x400(%rsp), %rax
movq %rax, 0x3f0(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3f0(%rsp), %rdi
callq 0x89c4
leaq 0x768(%rsp), %rbx
movq %rbx, 0x758(%rsp)
movq 0x193d1(%rip), %rsi     # 0x1e398
movq 0x193d2(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x758(%rsp), %r14
movq %r14, %rdi
callq 0x89c4
leaq 0x3f0(%rsp), %rdi
movq %r14, %rsi
callq 0xa439
movl %eax, %r14d
movq 0x758(%rsp), %rdi
cmpq %rbx, %rdi
je 0x5011
movq 0x768(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
leaq 0x5f0(%rsp), %rbx
je 0x503e
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x3220
cmpl $0x2, %r14d
jg 0x50a0
leaq 0x600(%rsp), %rax
movq %rax, 0x5f0(%rsp)
movq %rbx, %rdi
leaq 0x120e1(%rip), %rsi     # 0x1713f
leaq 0x120f4(%rip), %rdx     # 0x17159
callq 0x892e
movq %rbx, %rdi
callq 0x43b0
movq 0x5f0(%rsp), %rdi
leaq 0x600(%rsp), %rax
cmpq %rax, %rdi
je 0x520c
movq 0x600(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x520c
addl $-0x2, %r14d
movl %r12d, %ebx
leaq 0x3e0(%rsp), %rax
movq %rax, 0x3d0(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3d0(%rsp), %rdi
callq 0x89c4
leaq 0x5e0(%rsp), %rax
movq %rax, 0x5d0(%rsp)
movq 0x192b0(%rip), %rsi     # 0x1e398
movq 0x192b1(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
movq %rbp, %rdi
callq 0x89c4
leaq 0x90(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
movq %rbp, %rdx
leaq 0x10(%rsp), %rcx
callq 0xa485
movq 0x5d0(%rsp), %rdi
leaq 0x5e0(%rsp), %rax
cmpq %rax, %rdi
je 0x513c
movq 0x5e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x3d0(%rsp), %rdi
leaq 0x3e0(%rsp), %rax
cmpq %rax, %rdi
je 0x5161
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x3220
movb $0x1, 0x200(%rsp)
leaq 0x5c0(%rsp), %rax
movq %rax, 0x5b0(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x89c4
movq %r15, %rdi
leaq 0x200(%rsp), %rsi
callq 0xa4d5
movl %eax, %r12d
movq 0x5b0(%rsp), %rdi
leaq 0x5c0(%rsp), %rax
cmpq %rax, %rdi
je 0x51cc
movq 0x5c0(%rsp), %rsi
incq %rsi
callq 0x3220
leal 0x1(%r12), %eax
cmpl %ebx, %r12d
movq %rax, %r12
cmovll %ebx, %r12d
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x5200
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3220
movl %r12d, %ebx
decl %r14d
jne 0x50a7
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x5228
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
leaq 0x420(%rsp), %rbx
je 0x5255
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x527a
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x5296
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
movq %r13, %rcx
incq %rcx
cmpq 0x58(%rsp), %rcx
jne 0x4cf9
testl %r12d, %r12d
movq 0x118(%rsp), %r13
je 0x5307
setg %al
movl %eax, 0x58(%rsp)
jle 0x538e
leaq 0x40(%r13), %rbx
movq %r12, %rax
leaq 0x60(%rsp), %r12
movq %rax, %r14
movl %eax, %ebp
movl $0x40, %edi
callq 0x3210
movq %rax, %r15
movq %rax, %rdi
movq %r13, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0xe452
movq %r15, 0x60(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x8ca4
decl %ebp
jne 0x52d2
movq %r14, %r12
jmp 0x5363
leaq 0x748(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x11e40(%rip), %rsi     # 0x1715a
leaq 0x11e4c(%rip), %rdx     # 0x1716d
leaq 0x738(%rsp), %rdi
callq 0x892e
leaq 0x738(%rsp), %rdi
callq 0x43b0
movq 0x738(%rsp), %rdi
cmpq %rbx, %rdi
je 0x5358
movq 0x748(%rsp), %rsi
incq %rsi
callq 0x3220
movl $0x0, 0x58(%rsp)
xorl %r12d, %r12d
cmpl $0x1, 0x10(%r13)
jne 0x5396
cmpb $0x0, 0x58(%rsp)
je 0x5396
movl %r12d, %ebx
xorl %r14d, %r14d
movq 0x40(%r13), %rax
movq (%rax,%r14,8), %rdi
callq 0x8348
incq %r14
cmpq %r14, %rbx
jne 0x5377
jmp 0x5396
movl $0x0, 0x58(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x1a0(%rsp)
xorl %eax, %eax
movq %rax, 0x1b0(%rsp)
movq %rax, 0x190(%rsp)
movaps %xmm0, 0x180(%rsp)
movq %rax, 0x60(%rsp)
movl %eax, 0x68(%rsp)
movq %rax, 0x70(%rsp)
movl %eax, 0x78(%rsp)
movq %rax, 0x80(%rsp)
movq %rax, 0xc0(%rsp)
movl %eax, 0xc8(%rsp)
movq %rax, 0xd0(%rsp)
movl %eax, 0xd8(%rsp)
movq %rax, 0xe0(%rsp)
leal (,%r12,4), %ebx
leaq 0x30(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0xe8(%rsp), %rdi
leaq 0x90(%rsp), %rcx
movq %rbx, %rsi
callq 0x83d6
movq %r12, 0x6f8(%rsp)
leaq 0x160(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq %rbx, %rsi
callq 0x843e
movl $0x0, 0x30(%rsp)
cmpb $0x0, 0x58(%rsp)
je 0x54a2
xorl %eax, %eax
leaq 0x160(%rsp), %r12
leaq 0x30(%rsp), %r15
movq 0x168(%rsp), %rsi
cmpq 0x170(%rsp), %rsi
je 0x5489
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x168(%rsp)
jmp 0x5494
movq %r12, %rdi
movq %r15, %rdx
callq 0x8f02
movl 0x30(%rsp), %eax
incl %eax
movl %eax, 0x30(%rsp)
cmpl %ebx, %eax
jl 0x5467
movq %rbx, 0x220(%rsp)
cmpl $0x0, 0x110(%rsp)
jle 0x6335
leaq 0x20(%rsp), %rbx
leaq 0x2e0(%rsp), %r15
movq 0x220(%rsp), %rax
cmpl $0x2, %eax
movl $0x1, %ecx
cmovgel %eax, %ecx
movq %rcx, 0x708(%rsp)
movq 0x110(%rsp), %rax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq %rax, 0x110(%rsp)
xorl %ecx, %ecx
movq $0x0, 0xb8(%rsp)
movq 0x1c0(%rsp), %rax
movq %rcx, 0x700(%rsp)
shlq $0x5, %rcx
movq %rbx, 0x10(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x89c4
movq %r15, 0x2d0(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2d0(%rsp), %rdi
callq 0x89c4
leaq 0x5a0(%rsp), %rax
movq %rax, 0x590(%rsp)
movq 0x18e2d(%rip), %rsi     # 0x1e398
movq 0x18e2e(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x590(%rsp), %rbp
movq %rbp, %rdi
callq 0x89c4
movq 0x6f8(%rsp), %r14
leaq 0x200(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
movq %rbp, %rdx
leaq 0xb8(%rsp), %rcx
callq 0xa485
movq 0x590(%rsp), %rdi
leaq 0x5a0(%rsp), %rax
cmpq %rax, %rdi
je 0x55d2
movq 0x5a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x2d0(%rsp), %rdi
cmpq %r15, %rdi
je 0x55ef
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x200(%rsp), %rbp
movq %rbp, %rdi
leaq 0x11b6d(%rip), %rsi     # 0x1716e
callq 0x30c0
testl %eax, %eax
je 0x5f47
movq %rbp, %rdi
leaq 0x11b15(%rip), %rsi     # 0x1712d
callq 0x30c0
testl %eax, %eax
je 0x5690
movq %rbp, %rdi
leaq 0x11b0a(%rip), %rsi     # 0x17135
callq 0x30c0
testl %eax, %eax
je 0x5690
leaq 0x480(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x470(%rsp), %r14
movq %r14, %rdi
leaq 0x11b40(%rip), %rsi     # 0x17196
leaq 0x11b5c(%rip), %rdx     # 0x171b9
callq 0x892e
movq %r14, %rdi
callq 0x43b0
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
je 0x62e0
movq 0x480(%rsp), %rsi
jmp 0x62d8
leaq 0x380(%rsp), %rax
movq %rax, 0x370(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x370(%rsp), %rdi
callq 0x89c4
leaq 0x540(%rsp), %rax
movq %rax, 0x530(%rsp)
movq 0x18cc7(%rip), %rsi     # 0x1e398
movq 0x18cc8(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x530(%rsp), %r15
movq %r15, %rdi
callq 0x89c4
leaq 0x2b0(%rsp), %rdi
leaq 0x370(%rsp), %rsi
movq %r15, %rdx
leaq 0xb8(%rsp), %rcx
callq 0xa485
movq 0x530(%rsp), %rdi
leaq 0x540(%rsp), %rax
cmpq %rax, %rdi
je 0x5730
movq 0x540(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x5755
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x360(%rsp), %rax
movq %rax, 0x350(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x350(%rsp), %rdi
callq 0x89c4
leaq 0x500(%rsp), %rax
movq %rax, 0x4f0(%rsp)
movq 0x18c02(%rip), %rsi     # 0x1e398
movq 0x18c03(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x4f0(%rsp), %r15
movq %r15, %rdi
callq 0x89c4
leaq 0x510(%rsp), %rdi
leaq 0x350(%rsp), %rsi
movq %r15, %rdx
leaq 0xb8(%rsp), %rcx
callq 0xa485
movq 0x4f0(%rsp), %rdi
leaq 0x500(%rsp), %rax
cmpq %rax, %rdi
je 0x57f5
movq 0x500(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x581a
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x3220
xorps %xmm0, %xmm0
movaps %xmm0, 0x140(%rsp)
xorl %eax, %eax
movq %rax, 0x150(%rsp)
movq %rax, 0x130(%rsp)
movaps %xmm0, 0x120(%rsp)
movq %rax, 0x30(%rsp)
movl %eax, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl %eax, 0x48(%rsp)
movq %rax, 0x50(%rsp)
leaq 0x340(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x330(%rsp), %rdi
callq 0x89c4
leaq 0x4e0(%rsp), %rax
movq %rax, 0x4d0(%rsp)
movq 0x18b01(%rip), %rsi     # 0x1e398
movq 0x18b02(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x4d0(%rsp), %r15
movq %r15, %rdi
callq 0x89c4
leaq 0x330(%rsp), %rdi
movq %r15, %rsi
callq 0xa439
movl %eax, %r12d
movq 0x4d0(%rsp), %rdi
leaq 0x4e0(%rsp), %rax
cmpq %rax, %rdi
je 0x58e9
movq 0x4e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x590e
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x3220
cmpl $0x2, %r12d
jg 0x596f
leaq 0x4c0(%rsp), %rax
movq %rax, 0x4b0(%rsp)
leaq 0x4b0(%rsp), %r15
movq %r15, %rdi
leaq 0x11809(%rip), %rsi     # 0x1713f
leaq 0x1181c(%rip), %rdx     # 0x17159
callq 0x892e
movq %r15, %rdi
callq 0x43b0
movq 0x4b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rax
cmpq %rax, %rdi
je 0x596f
movq 0x4c0(%rsp), %rsi
incq %rsi
callq 0x3220
leal -0x2(%r12), %eax
movl %eax, 0x88(%rsp)
movslq %eax, %rbp
leaq 0x120(%rsp), %rdi
movq %rbp, %rsi
callq 0x84da
leaq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0x8576
movl 0x88(%rsp), %r15d
cmpl $0x3, %r12d
jl 0x5c1d
leaq 0x320(%rsp), %rax
movq %rax, 0x310(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x310(%rsp), %rdi
callq 0x89c4
leaq 0x4a0(%rsp), %rax
movq %rax, 0x490(%rsp)
movq 0x189aa(%rip), %rsi     # 0x1e398
movq 0x189ab(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x490(%rsp), %rbp
movq %rbp, %rdi
callq 0x89c4
leaq 0x90(%rsp), %rdi
leaq 0x310(%rsp), %rsi
movq %rbp, %rdx
leaq 0xb8(%rsp), %rcx
callq 0xa485
movq 0x490(%rsp), %rdi
leaq 0x4a0(%rsp), %rax
cmpq %rax, %rdi
je 0x5a4d
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x5a72
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x3220
movb $0x1, 0xf(%rsp)
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2f0(%rsp), %rdi
callq 0x89c4
leaq 0x2f0(%rsp), %rdi
leaq 0xf(%rsp), %rsi
callq 0xa4d5
movl %eax, %ebp
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x5ae0
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3220
movl %ebp, 0x8c(%rsp)
cmpl %r14d, %ebp
jl 0x5b60
leaq 0x1f0(%rsp), %rax
movq %rax, 0x1e0(%rsp)
movq 0x2b0(%rsp), %rsi
movq 0x2b8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x89c4
leaq 0x1e0(%rsp), %rbp
movq %rbp, %rdi
leaq 0x11646(%rip), %rsi     # 0x17174
callq 0x3420
movq %rbp, %rdi
callq 0x43b0
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x5b60
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x148(%rsp), %rsi
cmpq 0x150(%rsp), %rsi
je 0x5b89
movl 0x8c(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x148(%rsp)
jmp 0x5ba5
leaq 0x140(%rsp), %rdi
leaq 0x8c(%rsp), %rdx
callq 0x8f02
movl 0x8c(%rsp), %eax
movslq %eax, %rdx
shlq $0x3, %rdx
addq 0x40(%r13), %rdx
movq 0x128(%rsp), %rsi
cmpq 0x130(%rsp), %rsi
je 0x5bd3
movq (%rdx), %rax
movq %rax, (%rsi)
addq $0x8, 0x128(%rsp)
jmp 0x5be0
leaq 0x120(%rsp), %rdi
callq 0x9356
movzbl 0xf(%rsp), %esi
leaq 0x30(%rsp), %rdi
callq 0x85a8
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x5c14
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3220
decl %r15d
jne 0x59ad
leaq 0x200(%rsp), %rdi
leaq 0x11501(%rip), %rsi     # 0x1712d
callq 0x30c0
addl $-0x3, %r12d
testl %eax, %eax
movq %r12, 0x248(%rsp)
movl %r12d, %eax
movl 0x88(%rsp), %ebx
cmovel %ebx, %eax
testl %eax, %eax
jle 0x5e56
xorl %ebp, %ebp
movq %rbp, %rsi
movq 0x140(%rsp), %r14
movslq (%r14,%rbp,4), %r9
movq 0x30(%rsp), %r10
movl %ebp, %r11d
movl $0x1, %r8d
movl %esi, %ecx
shlq %cl, %r8
shrl $0x6, %r11d
movq (%r10,%r11,8), %rax
xorl %ecx, %ecx
btq %rbp, %rax
setb %cl
leaq (%rcx,%r9,4), %rcx
movq 0xe8(%rsp), %r13
leal 0x3f(%rcx), %eax
testl %ecx, %ecx
cmovnsl %ecx, %eax
sarl $0x6, %eax
cltq
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
leaq 0x3d(%rdi), %rdx
andq %rcx, %rdx
xorl %r15d, %r15d
cmpq %rdi, %rdx
setbe %r15b
movl $0x1, %edx
shlq %cl, %rdx
leaq (,%rax,8), %rax
addq %r13, %rax
orq %rdx, -0x8(%rax,%r15,8)
incq %rbp
movl %ebp, %eax
cltd
idivl %ebx
movl %edx, %r12d
movq %r14, 0x710(%rsp)
movslq (%r14,%r12,4), %r15
movl $0x1, %eax
movl %r12d, %ecx
shlq %cl, %rax
shrl $0x6, %edx
shlq $0x2, %r15
movq (%r10,%rdx,8), %rcx
btq %r12, %rcx
movl $0x0, %ecx
adcl $0x2, %ecx
orq %r15, %rcx
leal 0x3f(%rcx), %ebx
testl %ecx, %ecx
cmovnsl %ecx, %ebx
sarl $0x6, %ebx
movslq %ebx, %rbx
leaq (,%rbx,8), %rbx
addq %r13, %rbx
leaq 0x3f(%rdi), %r13
andq %rcx, %r13
xorl %r14d, %r14d
cmpq %rdi, %r13
setbe %r14b
movl $0x1, %r13d
shlq %cl, %r13
orq %r13, -0x8(%rbx,%r14,8)
cmpb $0x0, 0x58(%rsp)
movq 0x708(%rsp), %rdi
je 0x5e23
shlq $0x2, %r9
movq (%r10,%r11,8), %r11
movq 0x160(%rsp), %rcx
movq (%r10,%rdx,8), %r10
xorl %edx, %edx
testq %rax, %r10
sete %dl
xorl %ebx, %ebx
testq %r8, %r11
setne %bl
leal (%rdx,%rdx,2), %edx
orl %r15d, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %edx
orl %r9d, %ebx
movslq %ebx, %r9
movl (%rcx,%r9,4), %ebx
cmpl %edx, %ebx
movl %edx, %r9d
cmovgl %ebx, %r9d
cmovll %ebx, %edx
xorl %r15d, %r15d
cmpl %r9d, (%rcx,%r15,4)
jne 0x5daf
movl %edx, (%rcx,%r15,4)
incq %r15
cmpq %r15, %rdi
jne 0x5da5
cmpb $0x0, 0x58(%rsp)
je 0x5e23
andq %rax, %r10
xorl %edx, %edx
testq %r8, %r11
setne %dl
movq 0x710(%rsp), %r9
movslq (%r9,%r12,4), %rax
cmpq $0x1, %r10
movl $0x3, %r8d
sbbl $0x0, %r8d
shlq $0x4, %rax
shll $0x2, %r8d
orq %rax, %r8
movl (%rcx,%r8), %eax
movslq (%r9,%rsi,4), %rsi
shlq $0x4, %rsi
leal 0x4(,%rdx,4), %edx
orq %rsi, %rdx
movl (%rcx,%rdx), %esi
cmpl %eax, %esi
movl %eax, %edx
cmovgl %esi, %edx
cmovll %esi, %eax
xorl %esi, %esi
cmpl %edx, (%rcx,%rsi,4)
jne 0x5e1b
movl %eax, (%rcx,%rsi,4)
incq %rsi
cmpq %rsi, %rdi
jne 0x5e13
leaq 0x200(%rsp), %rdi
leaq 0x112fb(%rip), %rsi     # 0x1712d
callq 0x30c0
testl %eax, %eax
movq 0x248(%rsp), %rax
movl 0x88(%rsp), %ebx
cmovel %ebx, %eax
cltq
cmpq %rax, %rbp
jl 0x5c56
leaq 0x200(%rsp), %rbx
movq %rbx, %rdi
leaq 0x112c5(%rip), %rsi     # 0x1712d
callq 0x30c0
testl %eax, %eax
je 0x6128
movq %rbx, %rdi
leaq 0x112b6(%rip), %rsi     # 0x17135
callq 0x30c0
testl %eax, %eax
movq 0x118(%rsp), %r13
leaq 0x20(%rsp), %rbx
leaq 0x2e0(%rsp), %r15
jne 0x6245
movq 0x230(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
callq 0x830a
movq 0x830(%rsp), %rdi
leaq 0x510(%rsp), %rsi
callq 0x830a
leaq 0x90(%rsp), %r14
movq %r14, %rdi
leaq 0x120(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x109ba
movq 0x228(%rsp), %rdi
movq %r14, %rsi
callq 0x99c2
movq %r14, %rdi
callq 0x10bca
movq 0x30(%rsp), %rax
movl (%rax), %esi
andl $0x1, %esi
leaq 0x60(%rsp), %rdi
callq 0x85a8
movq 0x140(%rsp), %rdx
movq 0x1a8(%rsp), %rsi
cmpq 0x1b0(%rsp), %rsi
je 0x61a1
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x1a8(%rsp)
jmp 0x61ae
leaq 0x3c0(%rsp), %rax
movq %rax, 0x3b0(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3b0(%rsp), %rdi
callq 0x89c4
leaq 0x580(%rsp), %rax
movq %rax, 0x570(%rsp)
movq 0x18410(%rip), %rsi     # 0x1e398
movq 0x18411(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x570(%rsp), %r14
movq %r14, %rdi
callq 0x89c4
leaq 0x30(%rsp), %rbp
movq %rbp, %rdi
leaq 0x3b0(%rsp), %rsi
movq %r14, %rdx
leaq 0xb8(%rsp), %rcx
callq 0xa485
movq 0x838(%rsp), %rdi
movq %rbp, %rsi
callq 0x9022
movq %rbp, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x5ff1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x570(%rsp), %rdi
leaq 0x580(%rsp), %rax
cmpq %rax, %rdi
je 0x6016
movq 0x580(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x603b
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x3a0(%rsp), %rax
movq %rax, 0x390(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x390(%rsp), %rdi
callq 0x89c4
leaq 0x560(%rsp), %rax
movq %rax, 0x550(%rsp)
movq 0x1831c(%rip), %rsi     # 0x1e398
movq 0x1831d(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x550(%rsp), %rbp
movq %rbp, %rdi
callq 0x89c4
movq %r14, %rdi
leaq 0x390(%rsp), %rsi
movq %rbp, %rdx
leaq 0xb8(%rsp), %rcx
callq 0xa485
movq 0x840(%rsp), %rdi
movq %r14, %rsi
callq 0x9022
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x60dd
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x550(%rsp), %rdi
leaq 0x560(%rsp), %rax
cmpq %rax, %rdi
je 0x6102
movq 0x560(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x62e0
movq 0x3a0(%rsp), %rsi
jmp 0x62d8
movq 0x240(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
leaq 0x20(%rsp), %rbx
callq 0x830a
movq 0x118(%rsp), %r13
leaq 0x2e0(%rsp), %r15
movq 0x238(%rsp), %rdi
leaq 0x510(%rsp), %rsi
callq 0x830a
leaq 0x90(%rsp), %r14
movq %r14, %rdi
leaq 0x120(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0xf3d0
movq 0x6f0(%rsp), %rdi
movq %r14, %rsi
callq 0x9712
movq %r14, %rdi
callq 0xf5dc
jmp 0x6245
leaq 0x1a0(%rsp), %rdi
callq 0x8f02
movq 0x248(%rsp), %rdi
leal 0x3f(%rdi), %eax
testl %edi, %edi
cmovnsl %edi, %eax
movslq %edi, %rbp
sarl $0x6, %eax
cltq
shlq $0x3, %rax
addq 0x30(%rsp), %rax
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
leaq 0x3f(%rsi), %rcx
andq %rbp, %rcx
xorl %edx, %edx
cmpq %rsi, %rcx
setbe %dl
movq -0x8(%rax,%rdx,8), %rax
xorl %esi, %esi
btq %rdi, %rax
setb %sil
leaq 0xc0(%rsp), %rdi
callq 0x85a8
shlq $0x2, %rbp
addq 0x140(%rsp), %rbp
movq 0x188(%rsp), %rsi
cmpq 0x190(%rsp), %rsi
je 0x6235
movl (%rbp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x188(%rsp)
jmp 0x6245
leaq 0x180(%rsp), %rdi
movq %rbp, %rdx
callq 0x8f02
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x625c
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x6279
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x6296
movq 0x150(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x62bb
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x62e0
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x6305
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x10(%rsp), %rdi
cmpq %rbx, %rdi
je 0x631c
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x700(%rsp), %rcx
incq %rcx
cmpq 0x110(%rsp), %rcx
jne 0x54f7
leaq 0x90(%rsp), %rdx
movl $0xffffffff, (%rdx)     # imm = 0xFFFFFFFF
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rcx
movq 0x220(%rsp), %rbx
movq %rbx, %rsi
callq 0x85f6
cmpb $0x0, 0x58(%rsp)
je 0x643d
movq 0xe8(%rsp), %rax
movq 0x30(%rsp), %rcx
movq 0x160(%rsp), %rdx
xorl %esi, %esi
xorl %ebp, %ebp
movl %esi, %edi
shrl $0x6, %edi
movq (%rax,%rdi,8), %rdi
btq %rsi, %rdi
jb 0x63f1
cmpl $-0x1, (%rcx,%rsi,4)
jne 0x63f1
movl (%rdx,%rsi,4), %edi
movl %edi, %r8d
xorl %r9d, %r9d
movl %r9d, %r10d
shrl $0x6, %r10d
movq (%rax,%r10,8), %r10
btq %r9, %r10
jb 0x63bd
cmpl $-0x1, (%rcx,%r9,4)
jne 0x63bd
cmpl %r8d, (%rdx,%r9,4)
je 0x63cc
incq %r9
cmpq %r9, %rbx
jne 0x639f
cmpl %edi, %r8d
jne 0x639c
jmp 0x63ef
movl %r9d, %r8d
notl %r8d
xorl %r10d, %r10d
testb $0x3, %r8b
setne %r10b
leal -0x3(%r9,%r10,4), %r8d
movslq %r8d, %r8
movl (%rdx,%r8,4), %r8d
movl %ebp, (%rcx,%r9,4)
jmp 0x63c5
incl %ebp
incq %rsi
cmpq %rbx, %rsi
jne 0x6381
testl %ebp, %ebp
jle 0x643d
leaq 0x58(%r13), %rbx
leaq 0x90(%rsp), %r14
movl $0x2, 0x90(%rsp)
movq 0x60(%r13), %rsi
cmpq 0x68(%r13), %rsi
je 0x642e
movl $0x2, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x60(%r13)
jmp 0x6439
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9c72
decl %ebp
jne 0x6409
movq 0x228(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rcx
testl %ecx, %ecx
jle 0x6501
movq 0x1a0(%rsp), %rdx
movq 0x60(%rsp), %rsi
movq 0x30(%rsp), %rdi
movq 0x180(%rsp), %r8
movq 0xc0(%rsp), %r9
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addq $0x20, %rax
xorl %r10d, %r10d
movslq (%rdx,%r10,4), %r11
movl %r10d, %ebx
shrl $0x6, %ebx
movq (%rsi,%rbx,8), %r14
movl %r10d, %r15d
andl $0x3f, %r15d
btq %r15, %r14
movl $0x0, %r14d
adcl $0x2, %r14d
shlq $0x4, %r11
shll $0x2, %r14d
orq %r11, %r14
movl (%rdi,%r14), %r11d
movl %r11d, -0x8(%rax)
movslq (%r8,%r10,4), %r14
movq (%r9,%rbx,8), %rbx
xorl %r12d, %r12d
btq %r15, %rbx
setb %r12b
shlq $0x4, %r14
leaq (%r14,%r12,4), %rbx
movl (%rdi,%rbx), %ebx
movl %ebx, -0x4(%rax)
cmpl %ebx, %r11d
sete (%rax)
incq %r10
addq $0x28, %rax
cmpq %r10, %rcx
jne 0x6498
xorps %xmm0, %xmm0
leaq 0x90(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x240(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
xorl %esi, %esi
callq 0x9dae
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x238(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9dae
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x230(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9dae
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x830(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9dae
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x838(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9dae
leaq 0x90(%rsp), %rdi
callq 0xa641
leaq 0x90(%rsp), %rdi
callq 0x8772
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x65de
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x65fb
movq 0x170(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x6618
movq 0x108(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x664c
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq $0x0, 0xc0(%rsp)
movl $0x0, 0xc8(%rsp)
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x667a
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x60(%rsp)
movl $0x0, 0x68(%rsp)
movq %rax, 0x70(%rsp)
movq 0x180(%rsp), %rdi
testq %rdi, %rdi
je 0x6697
movq 0x190(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x66b4
movq 0x1b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
leaq 0x1c0(%rsp), %rdi
callq 0x8772
addq $0x7f8, %rsp            # imm = 0x7F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x778(%rsp), %rdi
cmpq %rbx, %rdi
je 0x728c
movq 0x788(%rsp), %rsi
jmp 0x7078
jmp 0x6cff
movq %rax, %r14
movq 0x738(%rsp), %rdi
cmpq %rbx, %rdi
je 0x728c
movq 0x748(%rsp), %rsi
jmp 0x7078
jmp 0x6cff
movq %rax, %r14
movq 0x7d8(%rsp), %rdi
cmpq %r15, %rdi
je 0x7299
movq 0x7e8(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x7299
jmp 0x6752
jmp 0x6752
jmp 0x6752
jmp 0x6752
jmp 0x6752
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x8772
jmp 0x680c
jmp 0x6c93
jmp 0x6c93
movq %rax, %r14
jmp 0x71ea
movq %rax, %r14
movq 0x798(%rsp), %rdi
cmpq %r15, %rdi
je 0x679e
movq 0x7a8(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x679e
movq %rax, %r14
movq 0x7b8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7060
movq 0x7c8(%rsp), %rsi
jmp 0x7058
jmp 0x6d07
jmp 0x6d07
jmp 0x6cff
jmp 0x6f4f
jmp 0x6f4f
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x10bca
jmp 0x70a8
jmp 0x6f4f
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0xf5dc
jmp 0x70a8
jmp 0x6f4f
movq %rax, %r14
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x7193
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
jmp 0x718e
jmp 0x6f4f
movq %rax, %r14
movq 0x4b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rax
cmpq %rax, %rdi
je 0x6ab2
movq 0x4c0(%rsp), %rsi
jmp 0x6aaa
movq %rax, %r14
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
je 0x6a29
movq 0x480(%rsp), %rsi
jmp 0x6a21
jmp 0x6abc
jmp 0x6c93
movq %rax, %r14
movq 0x5f0(%rsp), %rdi
leaq 0x600(%rsp), %rax
cmpq %rax, %rdi
je 0x6ffa
movq 0x600(%rsp), %rsi
jmp 0x6ff2
jmp 0x6f86
jmp 0x68b8
movq %rax, %r14
jmp 0x6a29
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x6905
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6905
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x692f
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x692f
movq %rax, %r14
movq 0x550(%rsp), %rdi
leaq 0x560(%rsp), %rax
cmpq %rax, %rdi
je 0x6959
movq 0x560(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6959
movq %rax, %r14
movq 0x570(%rsp), %rdi
leaq 0x580(%rsp), %rax
cmpq %rax, %rdi
je 0x6982
movq 0x580(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6982
movq %rax, %r14
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x6a29
movq 0x3a0(%rsp), %rsi
jmp 0x6a21
movq %rax, %r14
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x6a29
movq 0x3c0(%rsp), %rsi
jmp 0x6a21
movq %rax, %r14
jmp 0x6a8d
movq %rax, %r14
movq 0x530(%rsp), %rdi
leaq 0x540(%rsp), %rax
cmpq %rax, %rdi
je 0x6a04
movq 0x540(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6a04
movq %rax, %r14
movq 0x4f0(%rsp), %rdi
leaq 0x500(%rsp), %rax
cmpq %rax, %rdi
je 0x6a36
movq 0x500(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6a36
movq %rax, %r14
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x6a29
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x20(%rsp), %rbx
jmp 0x7157
movq %rax, %r14
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x6a5b
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x20(%rsp), %rbx
jmp 0x7132
movq %rax, %r14
movq 0x4d0(%rsp), %rdi
leaq 0x4e0(%rsp), %rax
cmpq %rax, %rdi
je 0x6a8d
movq 0x4e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x6ab2
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x20(%rsp), %rbx
jmp 0x70a8
movq %rax, %r14
jmp 0x7157
movq %rax, %r14
jmp 0x7132
movq %rax, %r14
movl $0x40, %esi
movq %r15, %rdi
jmp 0x7287
movq %rax, %r14
movq 0x6d0(%rsp), %rdi
leaq 0x6e0(%rsp), %rax
cmpq %rax, %rdi
je 0x6e81
movq 0x6e0(%rsp), %rsi
jmp 0x6e79
movq %rax, %r14
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x6b37
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6b37
jmp 0x6e2a
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x6c71
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6c71
jmp 0x6c6e
movq %rax, %r14
jmp 0x6bbc
movq %rax, %r14
movq 0x758(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6c40
movq 0x768(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6c40
movq %rax, %r14
jmp 0x6c0a
movq %rax, %r14
movq 0x610(%rsp), %rdi
leaq 0x620(%rsp), %rax
cmpq %rax, %rdi
je 0x6bbc
movq 0x620(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x630(%rsp), %rdi
leaq 0x640(%rsp), %rax
cmpq %rax, %rdi
je 0x7016
movq 0x640(%rsp), %rsi
jmp 0x700e
movq %rax, %r14
movq 0x650(%rsp), %rdi
leaq 0x660(%rsp), %rax
cmpq %rax, %rdi
je 0x6c0a
movq 0x660(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x670(%rsp), %rdi
leaq 0x680(%rsp), %rax
cmpq %rax, %rdi
je 0x703b
movq 0x680(%rsp), %rsi
jmp 0x7033
jmp 0x6f86
movq %rax, %r14
jmp 0x7016
movq %rax, %r14
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x6ffa
movq 0x400(%rsp), %rsi
jmp 0x6ff2
movq %rax, %r14
jmp 0x703b
movq %rax, %r14
movq 0xe8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6e81
movq 0xf8(%rsp), %rsi
jmp 0x6e79
jmp 0x6cff
jmp 0x6cff
movq %rax, %r14
jmp 0x7193
movq %rax, %r14
jmp 0x717c
movq %rax, %r14
jmp 0x6cd0
movq %rax, %r14
movq 0x590(%rsp), %rdi
leaq 0x5a0(%rsp), %rax
cmpq %rax, %rdi
je 0x6cd0
movq 0x5a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x6cf5
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x20(%rsp), %rbx
jmp 0x717c
movq %rax, %r14
jmp 0x728c
movq %rax, %r14
jmp 0x7060
movq %rax, %r14
jmp 0x6d3c
movq %rax, %r14
movq 0x690(%rsp), %rdi
leaq 0x6a0(%rsp), %rax
cmpq %rax, %rdi
je 0x6d3c
movq 0x6a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x7060
movq 0x420(%rsp), %rsi
jmp 0x7058
movq %rax, %r14
jmp 0x6d94
jmp 0x6e2a
movq %rax, %r14
movq 0x6b0(%rsp), %rdi
leaq 0x6c0(%rsp), %rax
cmpq %rax, %rdi
je 0x6d94
movq 0x6c0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0x6e81
movq 0x440(%rsp), %rsi
jmp 0x6e79
jmp 0x6e2a
movq %rax, %r14
jmp 0x6e0b
movq %rax, %r14
jmp 0x6de6
movq %rax, %r14
movq 0xe8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6de6
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x718(%rsp), %rdi
leaq 0x728(%rsp), %rax
cmpq %rax, %rdi
je 0x6e0b
movq 0x728(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x450(%rsp), %rdi
leaq 0x460(%rsp), %rax
cmpq %rax, %rdi
je 0x6e81
movq 0x460(%rsp), %rsi
jmp 0x6e79
movq %rax, %r14
jmp 0x6e81
movq %rax, %r14
jmp 0x6e5c
movq %rax, %r14
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x6e5c
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x6e81
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x704b
jmp 0x6f4f
jmp 0x6e99
movq %rax, %r14
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x6ec1
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x20(%rsp), %rbx
jmp 0x7083
movq %rax, %r14
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x7083
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x7083
movq %rax, %r14
movq 0x490(%rsp), %rdi
leaq 0x4a0(%rsp), %rax
cmpq %rax, %rdi
je 0x6f29
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6f29
movq %rax, %r14
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x70a8
movq 0x320(%rsp), %rsi
jmp 0x70a0
movq %rax, %r14
jmp 0x70a8
movq %rax, %r14
movq 0x5d0(%rsp), %rdi
leaq 0x5e0(%rsp), %rax
cmpq %rax, %rdi
je 0x6fd5
movq 0x5e0(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6fd5
movq %rax, %r14
jmp 0x6fb3
movq %rax, %r14
jmp 0x6ffa
movq %rax, %r14
movq 0x5b0(%rsp), %rdi
leaq 0x5c0(%rsp), %rax
cmpq %rax, %rdi
je 0x6fb3
movq 0x5c0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x6ffa
movq 0xa0(%rsp), %rsi
jmp 0x6ff2
movq %rax, %r14
movq 0x3d0(%rsp), %rdi
leaq 0x3e0(%rsp), %rax
cmpq %rax, %rdi
je 0x6ffa
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7016
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x703b
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x7060
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x728c
movq 0x70(%rsp), %rsi
incq %rsi
jmp 0x7287
movq %rax, %r14
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x70a8
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x70d3
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x30(%rsp)
movl $0x0, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x70f0
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x710d
movq 0x150(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x7132
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x7157
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x717c
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x10(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7193
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x71b0
movq 0x170(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x71ea
movq 0x108(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0xe8(%rsp)
movl $0x0, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x7224
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0xc0(%rsp)
movl $0x0, 0xc8(%rsp)
movq %rax, 0xd0(%rsp)
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x7252
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x60(%rsp)
movl $0x0, 0x68(%rsp)
movq %rax, 0x70(%rsp)
movq 0x180(%rsp), %rdi
testq %rdi, %rdi
je 0x726f
movq 0x190(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x728c
movq 0x1b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
leaq 0x1c0(%rsp), %rdi
callq 0x8772
movq %r14, %rdi
callq 0x33e0