// File: /workspace/github_cpp_makefile_star2_O1/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 $0x7e8, %rsp            # imm = 0x7E8
movq %r9, 0x228(%rsp)
movq %r8, 0x230(%rsp)
movq %rcx, 0x238(%rsp)
movq %rdx, 0x220(%rsp)
movq %rsi, 0x5f0(%rsp)
movq %rdi, %r12
movq 0x838(%rsp), %r13
leaq 0x30(%rsp), %r14
movl $0x18, %ecx
movq %r14, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x3240
leaq 0x12ac2(%rip), %rsi     # 0x17070
movq %r14, %rdi
callq 0x30c0
movl %eax, %ebx
movq (%r14), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x45d2
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
testl %ebx, %ebx
je 0x4625
leaq 0x7d8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x12aa0(%rip), %rsi     # 0x17089
leaq 0x12ad3(%rip), %rdx     # 0x170c3
leaq 0x7c8(%rsp), %rbx
movq %rbx, %rdi
callq 0x86fe
movq %rbx, %rdi
callq 0x4397
movq 0x7c8(%rsp), %rdi
cmpq %r15, %rdi
je 0x4625
movq 0x7d8(%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 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
movq %rax, (%rdi)
leaq 0x12ca3(%rip), %rdx     # 0x172f9
movq %rdx, %rsi
callq 0x86fe
leaq 0x129ef(%rip), %rsi     # 0x17054
movq %r13, %rdi
callq 0x3420
leaq 0x7b8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x7a8(%rsp), %rdi
callq 0x878e
leaq 0x798(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x129b0(%rip), %rsi     # 0x17054
leaq 0x129aa(%rip), %rdx     # 0x17055
leaq 0x788(%rsp), %rdi
callq 0x86fe
leaq 0xc0(%rsp), %rdi
leaq 0x7a8(%rsp), %rsi
leaq 0x788(%rsp), %rdx
leaq 0x90(%rsp), %rcx
callq 0xa261
movq 0x788(%rsp), %rdi
cmpq %r15, %rdi
je 0x46fa
movq 0x798(%rsp), %rsi
incq %rsi
callq 0x3220
movq %r12, 0x148(%rsp)
movq 0x7a8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x471f
movq 0x7b8(%rsp), %rsi
incq %rsi
callq 0x3220
cmpq $0x0, 0x90(%rsp)
je 0x4bf2
leaq 0x70(%rsp), %rbx
leaq 0x6b8(%rsp), %rbp
leaq 0x5d0(%rsp), %r15
leaq 0x410(%rsp), %r12
movq $0x0, 0xe8(%rsp)
leaq 0x5e0(%rsp), %rax
movq %rax, 0x5d0(%rsp)
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x878e
leaq 0x420(%rsp), %rax
movq %rax, 0x410(%rsp)
movq 0x19c1f(%rip), %rsi     # 0x1e3b8
movq 0x19c20(%rip), %rdx     # 0x1e3c0
addq %rsi, %rdx
movq %r12, %rdi
callq 0x878e
leaq 0x60(%rsp), %rdi
movq %r15, %rsi
movq %r12, %rdx
leaq 0xe8(%rsp), %rcx
callq 0xa261
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0x30(%rsp), %rdi
callq 0x30d0
movq 0x60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x47ee
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x4813
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x5d0(%rsp), %rdi
leaq 0x5e0(%rsp), %rax
cmpq %rax, %rdi
je 0x4838
movq 0x5e0(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x208(%rsp), %rax
movq %rax, 0x1f8(%rsp)
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1f8(%rsp), %rdi
callq 0x878e
leaq 0x2a0(%rsp), %rax
movq %rax, 0x290(%rsp)
movq 0x19b39(%rip), %rsi     # 0x1e3b8
movq 0x19b3a(%rip), %rdx     # 0x1e3c0
addq %rsi, %rdx
leaq 0x290(%rsp), %r14
movq %r14, %rdi
callq 0x878e
leaq 0x1f8(%rsp), %rdi
movq %r14, %rsi
callq 0xa215
testl %eax, %eax
je 0x4a13
movq %r15, %rbx
movq %rbp, %r15
leaq 0x30(%rsp), %rdi
leaq 0x12a36(%rip), %rsi     # 0x172f9
callq 0x30c0
movl %eax, %r14d
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x48f0
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x4915
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x3220
testl %r14d, %r14d
movq %r15, %rbp
movq %rbx, %r15
leaq 0x70(%rsp), %rbx
leaq 0x6a8(%rsp), %r14
je 0x4b0c
leaq 0x5c0(%rsp), %rax
movq %rax, 0x5b0(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x5b0(%rsp), %r12
movq %r12, %rdi
callq 0x878e
leaq 0x60(%rsp), %rdi
movq %r12, %rsi
callq 0xa31d
movq 0x5b0(%rsp), %rdi
leaq 0x5c0(%rsp), %rax
cmpq %rax, %rdi
je 0x4990
movq 0x5c0(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x60(%rsp), %rdi
leaq 0x1295d(%rip), %rsi     # 0x172f9
callq 0x30c0
testl %eax, %eax
je 0x49b7
leaq 0x1c0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x81f2
leaq 0x8(%rsp), %r12
movq %r12, %rdi
leaq 0x126fe(%rip), %rsi     # 0x170c4
leaq 0x60(%rsp), %rdx
callq 0x44c2
movq %r12, %rdi
leaq 0x1267a(%rip), %rsi     # 0x17054
callq 0x3420
leaq 0x280(%rsp), %rsi
movq %rsi, 0x270(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4a66
movq %rdx, 0x270(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x280(%rsp)
jmp 0x4a6c
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4a38
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
leaq 0x6a8(%rsp), %r14
je 0x4b0c
movq 0x208(%rsp), %rsi
jmp 0x4b04
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x278(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x270(%rsp), %rdi
movl $0x1, %esi
callq 0x4209
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x4abe
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4ada
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x38(%rsp), %rdx
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
leaq 0x1280c(%rip), %rcx     # 0x172f9
xorl %r8d, %r8d
callq 0x3340
movq 0x60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4b0c
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x400(%rsp), %rax
movq %rax, 0x3f0(%rsp)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x3f0(%rsp), %rdi
callq 0x878e
movq %rbp, 0x6a8(%rsp)
movq %r14, %rdi
leaq 0x1250e(%rip), %rsi     # 0x17054
leaq 0x12508(%rip), %rdx     # 0x17055
callq 0x86fe
leaq 0x410(%rsp), %r12
movq %r14, %rdx
leaq 0x60(%rsp), %r14
movq %r14, %rdi
leaq 0x3f0(%rsp), %rsi
leaq 0x90(%rsp), %rcx
callq 0xa261
leaq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0x32a0
movq 0x60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4ba1
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x6a8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4bbe
movq 0x6b8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x4be3
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x3220
cmpq $0x0, 0x90(%rsp)
jne 0x474b
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4c13
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x4c2f
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x1c8(%rsp), %rax
cmpq 0x1c0(%rsp), %rax
jne 0x4c92
leaq 0x778(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x1247e(%rip), %rsi     # 0x170d2
leaq 0x12491(%rip), %rdx     # 0x170ec
leaq 0x768(%rsp), %rdi
callq 0x86fe
leaq 0x768(%rsp), %rdi
callq 0x4397
movq 0x768(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4c92
movq 0x778(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x1c8(%rsp), %rax
subq 0x1c0(%rsp), %rax
shrq $0x5, %rax
testl %eax, %eax
movq %rax, 0x150(%rsp)
jle 0x5271
leaq 0x3e0(%rsp), %rbx
leaq 0x698(%rsp), %r15
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq %rax, 0x158(%rsp)
xorl %ecx, %ecx
leaq 0x708(%rsp), %r14
leaq 0x6e8(%rsp), %r12
xorl %ebp, %ebp
movq $0x0, 0xe8(%rsp)
movq 0x1c0(%rsp), %rax
movq %rcx, 0x58(%rsp)
shlq $0x5, %rcx
leaq 0x40(%rsp), %rdx
movq %rdx, 0x30(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rdi
callq 0x878e
movq %rbx, 0x3d0(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3d0(%rsp), %rdi
callq 0x878e
movq %r15, 0x688(%rsp)
movq 0x19643(%rip), %rsi     # 0x1e398
movq 0x19644(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x688(%rsp), %r13
movq %r13, %rdi
callq 0x878e
leaq 0xc0(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
movq %r13, %rdx
leaq 0xe8(%rsp), %rcx
callq 0xa261
movq 0x688(%rsp), %rdi
cmpq %r15, %rdi
je 0x4dac
movq 0x698(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x3d0(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0xc0(%rsp), %r13
je 0x4dd1
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq %r13, %rdi
leaq 0x12312(%rip), %rsi     # 0x170ed
callq 0x30c0
testl %eax, %eax
je 0x4dfb
movq %r13, %rdi
leaq 0x12307(%rip), %rsi     # 0x170f5
callq 0x30c0
testl %eax, %eax
jne 0x5218
leaq 0x678(%rsp), %rbx
movq %rbx, 0x668(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x668(%rsp), %r15
movq %r15, %rdi
callq 0x878e
leaq 0x5a0(%rsp), %rax
movq %rax, 0x590(%rsp)
movq 0x19559(%rip), %rsi     # 0x1e398
movq 0x1955a(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x590(%rsp), %r13
movq %r13, %rdi
callq 0x878e
leaq 0x60(%rsp), %rdi
movq %r15, %rsi
movq %r13, %rdx
leaq 0xe8(%rsp), %rcx
callq 0xa261
movq 0x590(%rsp), %rdi
leaq 0x5a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4e96
movq 0x5a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x668(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0x758(%rsp), %r15
je 0x4ebb
movq 0x678(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x580(%rsp), %rbx
movq %rbx, 0x570(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x570(%rsp), %rdi
callq 0x878e
movq %r15, 0x748(%rsp)
movq 0x194a4(%rip), %rsi     # 0x1e398
movq 0x194a5(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x748(%rsp), %r13
movq %r13, %rdi
callq 0x878e
leaq 0x8(%rsp), %rdi
leaq 0x570(%rsp), %rsi
movq %r13, %rdx
leaq 0xe8(%rsp), %rcx
callq 0xa261
movq 0x748(%rsp), %rdi
cmpq %r15, %rdi
je 0x4f48
movq 0x758(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x570(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0x728(%rsp), %r15
je 0x4f6d
movq 0x580(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x3c0(%rsp), %rax
movq %rax, 0x3b0(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3b0(%rsp), %rdi
callq 0x878e
leaq 0x738(%rsp), %rbx
movq %rbx, 0x728(%rsp)
movq 0x193ea(%rip), %rsi     # 0x1e398
movq 0x193eb(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
movq %r15, %rdi
callq 0x878e
leaq 0x3b0(%rsp), %rdi
movq %r15, %rsi
callq 0xa215
movl %eax, %r15d
movq 0x728(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4ff0
movq 0x738(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x550(%rsp), %rbx
je 0x501d
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x3220
cmpl $0x2, %r15d
jg 0x5076
leaq 0x560(%rsp), %rax
movq %rax, 0x550(%rsp)
movq %rbx, %rdi
leaq 0x120c2(%rip), %rsi     # 0x170ff
leaq 0x120d5(%rip), %rdx     # 0x17119
callq 0x86fe
movq %rbx, %rdi
callq 0x4397
movq 0x550(%rsp), %rdi
leaq 0x560(%rsp), %rax
cmpq %rax, %rdi
je 0x5076
movq 0x560(%rsp), %rsi
incq %rsi
callq 0x3220
cmpl $0x3, %r15d
jl 0x51d0
addl $-0x2, %r15d
movl %ebp, %ebx
leaq 0x658(%rsp), %r13
movq %r13, 0x648(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x648(%rsp), %rdi
callq 0x878e
leaq 0x718(%rsp), %rbp
movq %rbp, 0x708(%rsp)
movq 0x192d1(%rip), %rsi     # 0x1e398
movq 0x192d2(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
movq %r14, %rdi
callq 0x878e
leaq 0x90(%rsp), %rdi
leaq 0x648(%rsp), %rsi
movq %r14, %rdx
leaq 0xe8(%rsp), %rcx
callq 0xa261
movq 0x708(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5116
movq 0x718(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x648(%rsp), %rdi
cmpq %r13, %rdi
leaq 0x6f8(%rsp), %rbp
je 0x513b
movq 0x658(%rsp), %rsi
incq %rsi
callq 0x3220
movb $0x1, 0x250(%rsp)
movq %rbp, 0x6e8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x878e
movq %r12, %rdi
leaq 0x250(%rsp), %rsi
callq 0xa2b1
movl %eax, %r13d
movq 0x6e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5196
movq 0x6f8(%rsp), %rsi
incq %rsi
callq 0x3220
leal 0x1(%r13), %ebp
cmpl %ebx, %r13d
cmovll %ebx, %ebp
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x51c5
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3220
movl %ebp, %ebx
decl %r15d
jne 0x5086
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x51ec
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
leaq 0x3e0(%rsp), %rbx
leaq 0x698(%rsp), %r15
je 0x5218
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x523d
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x5259
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x58(%rsp), %rcx
incq %rcx
cmpq 0x158(%rsp), %rcx
jne 0x4ce7
jmp 0x5273
xorl %ebp, %ebp
testl %ebp, %ebp
movq 0x148(%rsp), %r12
jne 0x52d0
leaq 0x6d8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x11e88(%rip), %rsi     # 0x1711a
leaq 0x11e94(%rip), %rdx     # 0x1712d
leaq 0x6c8(%rsp), %rdi
callq 0x86fe
leaq 0x6c8(%rsp), %rdi
callq 0x4397
movq 0x6c8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x52d0
movq 0x6d8(%rsp), %rsi
incq %rsi
callq 0x3220
movq %rbp, 0x58(%rsp)
testl %ebp, %ebp
jle 0x531a
leaq 0x40(%r12), %rbx
leaq 0x30(%rsp), %r14
movq 0x58(%rsp), %rax
movl %eax, %ebp
movl $0x40, %edi
callq 0x3210
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0xe2a6
movq %r15, 0x30(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8aa2
decl %ebp
jne 0x52ea
cmpl $0x1, 0x10(%r12)
movq 0x58(%rsp), %r15
jne 0x5348
testl %r15d, %r15d
jle 0x5348
movl %r15d, %ebx
xorl %r14d, %r14d
movq 0x40(%r12), %rax
movq (%rax,%r14,8), %rdi
callq 0x8230
incq %r14
cmpq %r14, %rbx
jne 0x5332
xorps %xmm0, %xmm0
movaps %xmm0, 0x1a0(%rsp)
xorl %eax, %eax
movq %rax, 0x1b0(%rsp)
movq %rax, 0x190(%rsp)
movaps %xmm0, 0x180(%rsp)
movq %rax, 0x30(%rsp)
movl %eax, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl %eax, 0x48(%rsp)
movq %rax, 0x50(%rsp)
movq %rax, 0xc0(%rsp)
movl %eax, 0xc8(%rsp)
movq %rax, 0xd0(%rsp)
movl %eax, 0xd8(%rsp)
movq %rax, 0xe0(%rsp)
leal (,%r15,4), %r13d
leaq 0x8(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x60(%rsp), %rdi
leaq 0x90(%rsp), %rcx
movq %r13, %rsi
callq 0x82be
leaq 0x160(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq %r13, %rsi
callq 0x8326
movl $0x0, 0x8(%rsp)
testl %r15d, %r15d
jle 0x5445
xorl %eax, %eax
leaq 0x160(%rsp), %rbx
leaq 0x8(%rsp), %r14
movq 0x168(%rsp), %rsi
cmpq 0x170(%rsp), %rsi
je 0x542b
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x168(%rsp)
jmp 0x5436
movq %rbx, %rdi
movq %r14, %rdx
callq 0x8cf8
movl 0x8(%rsp), %eax
incl %eax
movl %eax, 0x8(%rsp)
cmpl %r13d, %eax
jl 0x5409
movq %r13, 0x218(%rsp)
movq 0x150(%rsp), %rbx
testl %ebx, %ebx
jle 0x6310
leaq 0x638(%rsp), %r14
movq 0x218(%rsp), %rax
cmpl $0x2, %eax
movl $0x1, %ecx
cmovgel %eax, %ecx
movq %rcx, 0x248(%rsp)
andl $0x7fffffff, %ebx       # imm = 0x7FFFFFFF
xorl %ecx, %ecx
movq %rbx, 0x150(%rsp)
movq $0x0, 0x108(%rsp)
movq 0x1c0(%rsp), %rax
movq %rcx, 0x5f8(%rsp)
shlq $0x5, %rcx
leaq 0xf8(%rsp), %rdx
movq %rdx, 0xe8(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0x878e
leaq 0x3a0(%rsp), %rax
movq %rax, 0x390(%rsp)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x390(%rsp), %rdi
callq 0x878e
movq %r14, 0x628(%rsp)
movq 0x18e80(%rip), %rsi     # 0x1e398
movq 0x18e81(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x628(%rsp), %r13
movq %r13, %rdi
callq 0x878e
leaq 0x250(%rsp), %rdi
leaq 0x390(%rsp), %rsi
movq %r13, %rdx
leaq 0x108(%rsp), %rcx
callq 0xa261
movq 0x628(%rsp), %rdi
cmpq %r14, %rdi
je 0x556f
movq 0x638(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x5594
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x250(%rsp), %r13
movq %r13, %rdi
leaq 0x11b88(%rip), %rsi     # 0x1712e
callq 0x30c0
testl %eax, %eax
je 0x5efc
movq %r13, %rdi
leaq 0x11b30(%rip), %rsi     # 0x170ed
callq 0x30c0
testl %eax, %eax
je 0x5635
movq %r13, %rdi
leaq 0x11b25(%rip), %rsi     # 0x170f5
callq 0x30c0
testl %eax, %eax
je 0x5635
leaq 0x440(%rsp), %rax
movq %rax, 0x430(%rsp)
leaq 0x430(%rsp), %r13
movq %r13, %rdi
leaq 0x11b5b(%rip), %rsi     # 0x17156
leaq 0x11b77(%rip), %rdx     # 0x17179
callq 0x86fe
movq %r13, %rdi
callq 0x4397
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0x62b2
movq 0x440(%rsp), %rsi
jmp 0x62aa
leaq 0x340(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x330(%rsp), %rdi
callq 0x878e
leaq 0x500(%rsp), %rax
movq %rax, 0x4f0(%rsp)
movq 0x18d1c(%rip), %rsi     # 0x1e398
movq 0x18d1d(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x4f0(%rsp), %r14
movq %r14, %rdi
callq 0x878e
leaq 0x2b0(%rsp), %rdi
leaq 0x330(%rsp), %rsi
movq %r14, %rdx
leaq 0x108(%rsp), %rcx
callq 0xa261
movq 0x4f0(%rsp), %rdi
leaq 0x500(%rsp), %rax
cmpq %rax, %rdi
je 0x56db
movq 0x500(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x5700
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x320(%rsp), %rax
movq %rax, 0x310(%rsp)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x310(%rsp), %rdi
callq 0x878e
leaq 0x4c0(%rsp), %rax
movq %rax, 0x4b0(%rsp)
movq 0x18c51(%rip), %rsi     # 0x1e398
movq 0x18c52(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x4b0(%rsp), %r14
movq %r14, %rdi
callq 0x878e
leaq 0x4d0(%rsp), %rdi
leaq 0x310(%rsp), %rsi
movq %r14, %rdx
leaq 0x108(%rsp), %rcx
callq 0xa261
movq 0x4b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rax
cmpq %rax, %rdi
je 0x57a6
movq 0x4c0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x57cb
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x3220
xorps %xmm0, %xmm0
movaps %xmm0, 0x130(%rsp)
xorl %eax, %eax
movq %rax, 0x140(%rsp)
movq %rax, 0x120(%rsp)
movaps %xmm0, 0x110(%rsp)
movq %rax, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movl %eax, 0x20(%rsp)
movq %rax, 0x28(%rsp)
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2f0(%rsp), %rdi
callq 0x878e
leaq 0x4a0(%rsp), %rax
movq %rax, 0x490(%rsp)
movq 0x18b4a(%rip), %rsi     # 0x1e398
movq 0x18b4b(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x490(%rsp), %r14
movq %r14, %rdi
callq 0x878e
leaq 0x2f0(%rsp), %rdi
movq %r14, %rsi
callq 0xa215
movl %eax, %ebp
movq 0x490(%rsp), %rdi
leaq 0x4a0(%rsp), %rax
cmpq %rax, %rdi
je 0x589f
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x58c4
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3220
cmpl $0x2, %ebp
jg 0x5924
leaq 0x480(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x470(%rsp), %r14
movq %r14, %rdi
leaq 0x11814(%rip), %rsi     # 0x170ff
leaq 0x11827(%rip), %rdx     # 0x17119
callq 0x86fe
movq %r14, %rdi
callq 0x4397
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
je 0x5924
movq 0x480(%rsp), %rsi
incq %rsi
callq 0x3220
leal -0x2(%rbp), %eax
movl %eax, 0x88(%rsp)
movslq %eax, %r13
leaq 0x110(%rsp), %rdi
movq %r13, %rsi
callq 0x83bc
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x8452
movl 0x88(%rsp), %r14d
cmpl $0x3, %ebp
leaq 0x618(%rsp), %rbx
jl 0x5bd0
movq %rbx, 0x608(%rsp)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x608(%rsp), %rdi
callq 0x878e
leaq 0x460(%rsp), %rax
movq %rax, 0x450(%rsp)
movq 0x189f2(%rip), %rsi     # 0x1e398
movq 0x189f3(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x450(%rsp), %r13
movq %r13, %rdi
callq 0x878e
leaq 0x90(%rsp), %rdi
leaq 0x608(%rsp), %rsi
movq %r13, %rdx
leaq 0x108(%rsp), %rcx
callq 0xa261
movq 0x450(%rsp), %rdi
leaq 0x460(%rsp), %rax
cmpq %rax, %rdi
je 0x5a05
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x608(%rsp), %rdi
cmpq %rbx, %rdi
je 0x5a22
movq 0x618(%rsp), %rsi
incq %rsi
callq 0x3220
movb $0x1, 0x7(%rsp)
leaq 0x2e0(%rsp), %rax
movq %rax, 0x2d0(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2d0(%rsp), %rdi
callq 0x878e
leaq 0x2d0(%rsp), %rdi
leaq 0x7(%rsp), %rsi
callq 0xa2b1
movl %eax, %r13d
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x5a91
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3220
movl %r13d, 0x8c(%rsp)
cmpl 0x58(%rsp), %r13d
jl 0x5b14
leaq 0x1e8(%rsp), %rax
movq %rax, 0x1d8(%rsp)
movq 0x2b0(%rsp), %rsi
movq 0x2b8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1d8(%rsp), %rdi
callq 0x878e
leaq 0x1d8(%rsp), %r13
movq %r13, %rdi
leaq 0x11652(%rip), %rsi     # 0x17134
callq 0x3420
movq %r13, %rdi
callq 0x4397
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x5b14
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x138(%rsp), %rsi
cmpq 0x140(%rsp), %rsi
je 0x5b3d
movl 0x8c(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x138(%rsp)
jmp 0x5b52
leaq 0x130(%rsp), %rdi
leaq 0x8c(%rsp), %rdx
callq 0x8cf8
movslq 0x8c(%rsp), %rdx
shlq $0x3, %rdx
addq 0x40(%r12), %rdx
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x5b86
movq (%rdx), %rax
movq %rax, (%rsi)
addq $0x8, 0x118(%rsp)
jmp 0x5b93
leaq 0x110(%rsp), %rdi
callq 0x9144
movzbl 0x7(%rsp), %esi
leaq 0x8(%rsp), %rdi
callq 0x8484
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x5bc7
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3220
decl %r14d
jne 0x5967
leaq 0x250(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1150b(%rip), %rsi     # 0x170ed
callq 0x30c0
addl $-0x3, %ebp
testl %eax, %eax
movq %rbp, 0x240(%rsp)
movl %ebp, %eax
movl 0x88(%rsp), %edi
cmovel %edi, %eax
testl %eax, %eax
jle 0x5e10
xorl %esi, %esi
movq 0x130(%rsp), %rbx
movslq (%rbx,%rsi,4), %r9
movq 0x8(%rsp), %r11
movl $0x1, %r15d
movl %esi, %ecx
shlq %cl, %r15
movq %rsi, %r14
shrq $0x6, %r14
movq (%r11,%r14,8), %rax
xorl %edx, %edx
btq %rsi, %rax
setb %dl
leaq (%rdx,%r9,4), %rcx
movq 0x60(%rsp), %r12
leaq (%rdx,%r9,4), %rax
addq $0x3f, %rax
testq %rcx, %rcx
cmovnsq %rcx, %rax
sarq $0x6, %rax
movabsq $-0x8000000000000000, %r8 # imm = 0x8000000000000000
leaq 0x3d(%r8), %rdx
andq %rcx, %rdx
xorl %r10d, %r10d
cmpq %r8, %rdx
setbe %r10b
movl $0x1, %edx
shlq %cl, %rdx
leaq (%r12,%rax,8), %rax
orq %rdx, -0x8(%rax,%r10,8)
leaq 0x1(%rsi), %rax
movq %rax, 0x158(%rsp)
cltd
idivl %edi
movq %rbx, 0x600(%rsp)
movslq (%rbx,%rdx,4), %rbp
movl %edx, %eax
movl $0x1, %r10d
movl %edx, %ecx
shlq %cl, %r10
shrl $0x6, %eax
shlq $0x2, %rbp
movq (%r11,%rax,8), %rcx
btq %rdx, %rcx
movl $0x0, %ecx
adcl $0x2, %ecx
orq %rbp, %rcx
leaq 0x3f(%rcx), %rbx
testq %rcx, %rcx
cmovnsq %rcx, %rbx
sarq $0x6, %rbx
leaq 0x3f(%r8), %r13
andq %rcx, %r13
xorl %edi, %edi
cmpq %r8, %r13
setbe %dil
movl $0x1, %r13d
shlq %cl, %r13
leaq (%r12,%rbx,8), %rcx
orq %r13, -0x8(%rcx,%rdi,8)
movq (%r11,%r14,8), %r14
movq (%r11,%rax,8), %rcx
movq 0x160(%rsp), %rax
cmpl $0x0, 0x58(%rsp)
jle 0x5d61
shlq $0x2, %r9
xorl %edi, %edi
testq %r10, %rcx
sete %dil
xorl %ebx, %ebx
testq %r15, %r14
setne %bl
leal (%rdi,%rdi,2), %edi
orl %ebp, %edi
movslq %edi, %rdi
movl (%rax,%rdi,4), %r11d
orl %r9d, %ebx
movslq %ebx, %rdi
movl (%rax,%rdi,4), %edi
cmpl %r11d, %edi
movl %r11d, %r9d
cmovgl %edi, %r9d
cmovll %edi, %r11d
movq 0x248(%rsp), %rdi
xorl %r12d, %r12d
cmpl %r9d, (%rax,%r12,4)
jne 0x5d59
movl %r11d, (%rax,%r12,4)
incq %r12
cmpq %r12, %rdi
jne 0x5d4f
cmpl $0x0, 0x58(%rsp)
leaq 0x250(%rsp), %rbx
jle 0x5dda
andq %r10, %rcx
xorl %edi, %edi
testq %r15, %r14
setne %dil
movq 0x600(%rsp), %r8
movslq (%r8,%rdx,4), %rdx
cmpq $0x1, %rcx
movl $0x3, %ecx
sbbl $0x0, %ecx
shlq $0x4, %rdx
shll $0x2, %ecx
orq %rdx, %rcx
movl (%rax,%rcx), %ecx
movslq (%r8,%rsi,4), %rdx
shlq $0x4, %rdx
leal 0x4(,%rdi,4), %esi
movq 0x248(%rsp), %rdi
orq %rdx, %rsi
movl (%rax,%rsi), %esi
cmpl %ecx, %esi
movl %ecx, %edx
cmovgl %esi, %edx
cmovll %esi, %ecx
xorl %esi, %esi
cmpl %edx, (%rax,%rsi,4)
jne 0x5dd2
movl %ecx, (%rax,%rsi,4)
incq %rsi
cmpq %rsi, %rdi
jne 0x5dca
movq %rbx, %rdi
leaq 0x11309(%rip), %rsi     # 0x170ed
callq 0x30c0
testl %eax, %eax
movq 0x240(%rsp), %rax
movl 0x88(%rsp), %edi
cmovel %edi, %eax
cltq
movq 0x158(%rsp), %rsi
cmpq %rax, %rsi
jl 0x5c0a
movq %rbx, %rdi
leaq 0x112d3(%rip), %rsi     # 0x170ed
callq 0x30c0
testl %eax, %eax
movq %rbx, %rdi
movq 0x150(%rsp), %rbx
leaq 0x638(%rsp), %r14
je 0x60eb
leaq 0x112b4(%rip), %rsi     # 0x170f5
callq 0x30c0
testl %eax, %eax
movq 0x148(%rsp), %r12
jne 0x61fe
movq 0x228(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
callq 0x81f2
movq 0x820(%rsp), %rdi
leaq 0x4d0(%rsp), %rsi
callq 0x81f2
leaq 0x90(%rsp), %r13
movq %r13, %rdi
leaq 0x110(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0x108a4
movq 0x220(%rsp), %rdi
movq %r13, %rsi
callq 0x97a2
movq %r13, %rdi
callq 0x10aac
movq 0x8(%rsp), %rax
movl (%rax), %esi
andl $0x1, %esi
leaq 0x30(%rsp), %rdi
callq 0x8484
movq 0x130(%rsp), %rdx
movq 0x1a8(%rsp), %rsi
cmpq 0x1b0(%rsp), %rsi
je 0x6157
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x1a8(%rsp)
jmp 0x6164
leaq 0x380(%rsp), %rax
movq %rax, 0x370(%rsp)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x370(%rsp), %rdi
callq 0x878e
leaq 0x540(%rsp), %rax
movq %rax, 0x530(%rsp)
movq 0x18455(%rip), %rsi     # 0x1e398
movq 0x18456(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x530(%rsp), %r13
movq %r13, %rdi
callq 0x878e
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
leaq 0x370(%rsp), %rsi
movq %r13, %rdx
leaq 0x108(%rsp), %rcx
callq 0xa261
movq 0x828(%rsp), %rdi
movq %rbp, %rsi
callq 0x8e18
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x5fa9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x530(%rsp), %rdi
leaq 0x540(%rsp), %rax
cmpq %rax, %rdi
je 0x5fce
movq 0x540(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x5ff3
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0x360(%rsp), %rax
movq %rax, 0x350(%rsp)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x350(%rsp), %rdi
callq 0x878e
leaq 0x520(%rsp), %rax
movq %rax, 0x510(%rsp)
movq 0x1835e(%rip), %rsi     # 0x1e398
movq 0x1835f(%rip), %rdx     # 0x1e3a0
addq %rsi, %rdx
leaq 0x510(%rsp), %rbp
movq %rbp, %rdi
callq 0x878e
leaq 0x8(%rsp), %r13
movq %r13, %rdi
leaq 0x350(%rsp), %rsi
movq %rbp, %rdx
leaq 0x108(%rsp), %rcx
callq 0xa261
movq 0x830(%rsp), %rdi
movq %r13, %rsi
callq 0x8e18
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x60a0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x60c5
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x62b2
movq 0x360(%rsp), %rsi
jmp 0x62aa
movq 0x238(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
callq 0x81f2
movq 0x148(%rsp), %r12
movq 0x230(%rsp), %rdi
leaq 0x4d0(%rsp), %rsi
callq 0x81f2
leaq 0x90(%rsp), %r13
movq %r13, %rdi
leaq 0x110(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xf2f0
movq 0x5f0(%rsp), %rdi
movq %r13, %rsi
callq 0x9500
movq %r13, %rdi
callq 0xf4f6
jmp 0x61fe
leaq 0x1a0(%rsp), %rdi
callq 0x8cf8
movq 0x240(%rsp), %rdi
movslq %edi, %r13
leaq 0x3f(%r13), %rax
testq %r13, %r13
cmovnsq %r13, %rax
sarq $0x6, %rax
shlq $0x3, %rax
addq 0x8(%rsp), %rax
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
leaq 0x3f(%rsi), %rcx
andq %r13, %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 0x8484
shlq $0x2, %r13
addq 0x130(%rsp), %r13
movq 0x188(%rsp), %rsi
cmpq 0x190(%rsp), %rsi
je 0x61ee
movl (%r13), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x188(%rsp)
jmp 0x61fe
leaq 0x180(%rsp), %rdi
movq %r13, %rdx
callq 0x8cf8
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x622e
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movl %eax, 0x20(%rsp)
movq %rax, 0x28(%rsp)
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x624b
movq 0x120(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x6268
movq 0x140(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x4d0(%rsp), %rdi
leaq 0x4e0(%rsp), %rax
cmpq %rax, %rdi
je 0x628d
movq 0x4e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x62b2
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x62d7
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x62fc
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x5f8(%rsp), %rcx
incq %rcx
cmpq %rbx, %rcx
jne 0x5490
leaq 0x90(%rsp), %rdx
movl $0xffffffff, (%rdx)     # imm = 0xFFFFFFFF
leaq 0x8(%rsp), %rdi
leaq 0xe8(%rsp), %rcx
movq 0x218(%rsp), %rbx
movq %rbx, %rsi
callq 0x84d2
cmpl $0x0, 0x58(%rsp)
jle 0x63e4
movq 0x60(%rsp), %rax
movq 0x8(%rsp), %rcx
movq 0x160(%rsp), %rdx
cmpl $0x2, %ebx
movl $0x1, %esi
cmovgel %ebx, %esi
xorl %edi, %edi
xorl %ebp, %ebp
movq %rdi, %r8
shrq $0x6, %r8
movq (%rax,%r8,8), %r8
btq %rdi, %r8
jb 0x63da
cmpl $-0x1, (%rcx,%rdi,4)
jne 0x63da
movl (%rdx,%rdi,4), %r8d
movl %r8d, %r9d
xorl %r10d, %r10d
movq %r10, %r11
shrq $0x6, %r11
movq (%rax,%r11,8), %r11
btq %r10, %r11
jb 0x63a6
cmpl $-0x1, (%rcx,%r10,4)
jne 0x63a6
cmpl %r9d, (%rdx,%r10,4)
je 0x63b5
incq %r10
cmpq %r10, %rsi
jne 0x6388
cmpl %r8d, %r9d
jne 0x6385
jmp 0x63d8
movl %r10d, %r9d
notl %r9d
xorl %r11d, %r11d
testb $0x3, %r9b
setne %r11b
leal -0x3(%r10,%r11,4), %r9d
movslq %r9d, %r9
movl (%rdx,%r9,4), %r9d
movl %ebp, (%rcx,%r10,4)
jmp 0x63ae
incl %ebp
incq %rdi
cmpq %rsi, %rdi
jne 0x6367
jmp 0x63e6
xorl %ebp, %ebp
testl %ebp, %ebp
jle 0x642e
leaq 0x58(%r12), %rbx
leaq 0x90(%rsp), %r14
movl $0x2, 0x90(%rsp)
movq 0x60(%r12), %rsi
cmpq 0x68(%r12), %rsi
je 0x641f
movl $0x2, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x60(%r12)
jmp 0x642a
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9a44
decl %ebp
jne 0x63f7
movq 0x220(%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 0x64f3
movq 0x1a0(%rsp), %rdx
movq 0x30(%rsp), %rsi
movq 0x8(%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
movq %r10, %rbx
shrq $0x6, %rbx
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 0x6489
xorps %xmm0, %xmm0
leaq 0x90(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x8(%rdi), %rsi
movq 0x238(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9b80
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x230(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9b80
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x228(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9b80
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x820(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9b80
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x828(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
callq 0x9b80
leaq 0x90(%rsp), %rdi
callq 0xa41d
leaq 0x90(%rsp), %rdi
callq 0x8550
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x65d2
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x65ef
movq 0x170(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x6625
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x60(%rsp)
movl %eax, 0x68(%rsp)
movq %rax, 0x70(%rsp)
movl %eax, 0x78(%rsp)
movq %rax, 0x80(%rsp)
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x666a
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0xc0(%rsp)
movl %eax, 0xc8(%rsp)
movq %rax, 0xd0(%rsp)
movl %eax, 0xd8(%rsp)
movq %rax, 0xe0(%rsp)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x669a
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x30(%rsp)
movl %eax, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl %eax, 0x48(%rsp)
movq %rax, 0x50(%rsp)
movq 0x180(%rsp), %rdi
testq %rdi, %rdi
je 0x66b7
movq 0x190(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x66d4
movq 0x1b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
leaq 0x1c0(%rsp), %rdi
callq 0x8550
addq $0x7e8, %rsp            # imm = 0x7E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x6c8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7251
movq 0x6d8(%rsp), %rsi
jmp 0x7021
jmp 0x6e6d
movq %rax, %r14
movq 0x768(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7251
movq 0x778(%rsp), %rsi
jmp 0x7021
jmp 0x6e6d
movq %rax, %r14
movq 0x7c8(%rsp), %rdi
cmpq %r15, %rdi
je 0x725e
movq 0x7d8(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x725e
jmp 0x6772
jmp 0x6772
jmp 0x6772
jmp 0x6772
jmp 0x6772
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x8550
jmp 0x69a8
jmp 0x6c83
jmp 0x6c83
movq %rax, %r14
jmp 0x71a2
movq %rax, %r14
movq 0x788(%rsp), %rdi
cmpq %r15, %rdi
je 0x67be
movq 0x798(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x67be
movq %rax, %r14
movq 0x7a8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7009
movq 0x7b8(%rsp), %rsi
jmp 0x7001
jmp 0x6ce6
jmp 0x6ce6
jmp 0x6e6d
jmp 0x6f19
jmp 0x6f19
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x10aac
jmp 0x7051
jmp 0x6f19
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0xf4f6
jmp 0x7051
jmp 0x6f19
jmp 0x6f19
movq %rax, %r14
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
je 0x7051
movq 0x480(%rsp), %rsi
jmp 0x7049
movq %rax, %r14
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0x7105
movq 0x440(%rsp), %rsi
jmp 0x70fd
jmp 0x6ac4
movq %rax, %r14
movq 0x550(%rsp), %rdi
leaq 0x560(%rsp), %rax
cmpq %rax, %rdi
je 0x6fac
movq 0x560(%rsp), %rsi
jmp 0x6fa4
jmp 0x6f62
jmp 0x6ac4
jmp 0x6ac4
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6902
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6902
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x692c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x692c
movq %rax, %r14
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x6956
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6956
movq %rax, %r14
movq 0x530(%rsp), %rdi
leaq 0x540(%rsp), %rax
cmpq %rax, %rdi
je 0x697f
movq 0x540(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x697f
movq %rax, %r14
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x7105
movq 0x360(%rsp), %rsi
jmp 0x70fd
movq %rax, %r14
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x7105
movq 0x380(%rsp), %rsi
jmp 0x70fd
movq %rax, %r14
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x714f
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
jmp 0x714a
jmp 0x6c83
movq %rax, %r14
jmp 0x6a9e
movq %rax, %r14
movq 0x4f0(%rsp), %rdi
leaq 0x500(%rsp), %rax
cmpq %rax, %rdi
je 0x6a27
movq 0x500(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6a27
movq %rax, %r14
movq 0x4b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rax
cmpq %rax, %rdi
je 0x6a50
movq 0x4c0(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6a50
movq %rax, %r14
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x7105
movq 0x340(%rsp), %rsi
jmp 0x70fd
movq %rax, %r14
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x70e0
movq 0x320(%rsp), %rsi
jmp 0x70d8
movq %rax, %r14
movq 0x490(%rsp), %rdi
leaq 0x4a0(%rsp), %rax
cmpq %rax, %rdi
je 0x6a9e
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x7051
movq 0x300(%rsp), %rsi
jmp 0x7049
movq %rax, %r14
jmp 0x7105
movq %rax, %r14
jmp 0x70e0
movq %rax, %r14
movq 0x5b0(%rsp), %rdi
leaq 0x5c0(%rsp), %rax
cmpq %rax, %rdi
je 0x6e57
movq 0x5c0(%rsp), %rsi
jmp 0x6e4f
movq %rax, %r14
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x6b2f
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6b2f
jmp 0x6e00
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6c61
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6c61
jmp 0x6c5e
movq %rax, %r14
jmp 0x6bac
movq %rax, %r14
movq 0x728(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6c30
movq 0x738(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6c30
movq %rax, %r14
jmp 0x6bfa
movq %rax, %r14
movq 0x748(%rsp), %rdi
cmpq %r15, %rdi
je 0x6bac
movq 0x758(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x570(%rsp), %rdi
leaq 0x580(%rsp), %rax
cmpq %rax, %rdi
je 0x6fc8
movq 0x580(%rsp), %rsi
jmp 0x6fc0
movq %rax, %r14
movq 0x590(%rsp), %rdi
leaq 0x5a0(%rsp), %rax
cmpq %rax, %rdi
je 0x6bfa
movq 0x5a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x668(%rsp), %rdi
leaq 0x678(%rsp), %rax
cmpq %rax, %rdi
je 0x6fe4
movq 0x678(%rsp), %rsi
jmp 0x6fdc
jmp 0x6f62
movq %rax, %r14
jmp 0x6fc8
movq %rax, %r14
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x6fac
movq 0x3c0(%rsp), %rsi
jmp 0x6fa4
movq %rax, %r14
jmp 0x6fe4
movq %rax, %r14
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x6e57
movq 0x70(%rsp), %rsi
jmp 0x6e4f
jmp 0x6e6d
movq %rax, %r14
jmp 0x714f
movq %rax, %r14
jmp 0x712a
movq %rax, %r14
jmp 0x6cbb
movq %r14, %rcx
movq %rax, %r14
movq 0x628(%rsp), %rdi
cmpq %rcx, %rdi
je 0x6cbb
movq 0x638(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x712a
movq 0x3a0(%rsp), %rsi
jmp 0x7122
jmp 0x6e6d
movq %rax, %r14
jmp 0x7009
movq %rax, %r14
jmp 0x6d13
movq %rax, %r14
movq 0x688(%rsp), %rdi
cmpq %r15, %rdi
je 0x6d13
movq 0x698(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x3d0(%rsp), %rdi
leaq 0x3e0(%rsp), %rax
cmpq %rax, %rdi
je 0x7009
movq 0x3e0(%rsp), %rsi
jmp 0x7001
movq %rax, %r14
movl $0x40, %esi
movq %r15, %rdi
jmp 0x724c
movq %rax, %r14
movq 0x6a8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6d6e
movq 0x6b8(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6d6e
movq %rax, %r14
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x6e57
movq 0x400(%rsp), %rsi
jmp 0x6e4f
jmp 0x6e00
jmp 0x6e00
movq %rax, %r14
jmp 0x6de1
movq %rax, %r14
jmp 0x6dbc
movq %rax, %r14
movq 0x60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6dbc
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x6de1
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x5d0(%rsp), %rdi
leaq 0x5e0(%rsp), %rax
cmpq %rax, %rdi
je 0x6e57
movq 0x5e0(%rsp), %rsi
jmp 0x6e4f
movq %rax, %r14
jmp 0x6e57
movq %rax, %r14
jmp 0x6e32
movq %rax, %r14
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x6e32
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x6e57
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x3220
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x6ff4
jmp 0x6f19
movq %rax, %r14
jmp 0x7251
jmp 0x6e77
movq %rax, %r14
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x702c
movq 0x1e8(%rsp), %rsi
jmp 0x6ec1
movq %rax, %r14
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x702c
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x702c
movq %rax, %r14
movq 0x450(%rsp), %rdi
leaq 0x460(%rsp), %rax
cmpq %rax, %rdi
je 0x6efb
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x3220
jmp 0x6efb
movq %rax, %r14
movq 0x608(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7051
movq 0x618(%rsp), %rsi
jmp 0x7049
movq %rax, %r14
jmp 0x7051
movq %rax, %r14
jmp 0x6f46
movq %rax, %r14
movq 0x708(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6f46
movq 0x718(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x648(%rsp), %rdi
cmpq %r13, %rdi
je 0x6fac
movq 0x658(%rsp), %rsi
jmp 0x6fa4
movq %rax, %r14
jmp 0x6f87
movq %rax, %r14
jmp 0x6fac
movq %rax, %r14
movq 0x6e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6f87
movq 0x6f8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x6fac
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6fc8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x6fe4
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x7009
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7251
movq 0x40(%rsp), %rsi
incq %rsi
jmp 0x724c
movq %rax, %r14
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x7051
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x7081
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movl %eax, 0x20(%rsp)
movq %rax, 0x28(%rsp)
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x709e
movq 0x120(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x70bb
movq 0x140(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x4d0(%rsp), %rdi
leaq 0x4e0(%rsp), %rax
cmpq %rax, %rdi
je 0x70e0
movq 0x4e0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x7105
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x712a
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x714f
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x716c
movq 0x170(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x71a2
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x60(%rsp)
movl %eax, 0x68(%rsp)
movq %rax, 0x70(%rsp)
movl %eax, 0x78(%rsp)
movq %rax, 0x80(%rsp)
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x71e7
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0xc0(%rsp)
movl %eax, 0xc8(%rsp)
movq %rax, 0xd0(%rsp)
movl %eax, 0xd8(%rsp)
movq %rax, 0xe0(%rsp)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x7217
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
xorl %eax, %eax
movq %rax, 0x30(%rsp)
movl %eax, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl %eax, 0x48(%rsp)
movq %rax, 0x50(%rsp)
movq 0x180(%rsp), %rdi
testq %rdi, %rdi
je 0x7234
movq 0x190(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x7251
movq 0x1b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
leaq 0x1c0(%rsp), %rdi
callq 0x8550
movq %r14, %rdi
callq 0x33e0