// File: MarkCBell[P]twister/./twister/kernel/manifold.cpp
// Function: construct_manifold(manifold&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 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 construct_manifold(manifold &M, std::string surface_file_contents, std::string gluing, std::string handles)
{
	// These will hold all the pieces of information for the manifold.
	std::vector<annulus> annuli;
	std::vector<rectangle> rectangles;
	std::vector<std::string> annulus_name, annulus_name_inverse, rectangle_name, rectangle_name_inverse, macro_name, macro;
	
	// Fill up the manifold with interesting information from the surface_file_contents.
	initialise_manifold(M, annuli, rectangles, annulus_name, annulus_name_inverse, rectangle_name, rectangle_name_inverse, macro_name, macro, surface_file_contents);
	
	// Format the commands.
	format_command(handles, annulus_name, annulus_name_inverse, rectangle_name, rectangle_name_inverse, macro_name, macro);
	format_command(gluing, annulus_name, annulus_name_inverse, rectangle_name, rectangle_name_inverse, macro_name, macro);
	
	output_debugging("\nParsed handles: " + handles + "\nParsed gluing: " + gluing + "\n", 1);
	
	int num_annuli = int(annulus_name.size());
	int num_rectangles = int(rectangle_name.size());
	
	if (handles != "")  // Attach handles (if needed).
	{
		size_t marker = 0;
		
		do
		{
			std::string handle_location = find_next_substring(handles, separator, marker);
			
			if (handle_location == "") continue;  // Skip it if there is no action.
			
			bool performed_action = false;  // Records if we actually performed an action.
			for (int i = 0; i < num_annuli; i++)
			{
				if ((annulus_name[i] == handle_location) || (annulus_name_inverse[i] == handle_location))
				{
					annuli[i].twohandle((annulus_name[i] == handle_location));
					performed_action = true;
					break;  // Annuli / rectangle names are unique, so we can give up if we get a hit.
				}
			}
			if (performed_action) continue;
			
			output_warning("No annulus named '" + handle_location + "' found to attach a handle to.");
		} while (marker != 0);
	}
	
	M.insert_layer();  // Insert layer #1 to prevent rooftop access.
	
	// Reset the layer flags on cubes and marked points.
	for (int i = 0; i < int(M.marked_points.size()); i++)
		M.marked_points[i] = half_twisted;
	
	for (int i = 0; i < int(M.cubes.size()); i++)
		M.cubes[i]->set_status(false);
	
	// We parse the gluing w = w_1 ... w_n from left to right, so our twists are 
	// stacked from top to bottom. So when a curve c at the bottom is pushed up 
	// the resulting curve at the top is w(c) = w_1( ... w_n(c) ... ), i.e. mapping
	// classes act on the left.
	if (gluing != "")  // Twist / drill (if needed).
	{
		size_t marker = 0;
		
		do
		{
			std::string action_name = find_next_substring(gluing, separator, marker);
			
			if (action_name == "") continue;  // Skip it if there is no action.
			
			bool drilling = (action_name.substr(0, 1) == drill);  // Are we drilling?
			if (drilling) action_name = action_name.substr(1);  // If so, drop the drill symbol.
			
			bool performed_action = false;  // Records if we actually performed an action.
			
			for (int i = 0; i < num_annuli; i++)
			{
				if ((annulus_name[i] == action_name) || (annulus_name_inverse[i] == action_name))
				{
					if (drilling)
						annuli[i].drill();
					else
						annuli[i].twist((annulus_name[i] == action_name) ? plus : minus);
					
					performed_action = true;
					break;  // Annuli / rectangle names are unique, so we can give up if we get a hit.
				}
			}
			if (performed_action) continue;
			
			for (int i = 0; i < num_rectangles; i++)
			{
				if ((rectangle_name[i] == action_name) || (rectangle_name_inverse[i] == action_name))
				{
					if (drilling)
						rectangles[i].drill();
					else
						rectangles[i].half_twist((rectangle_name[i] == action_name) ? plus : minus);
					
					performed_action = true;
					break;  // Annuli / rectangle names are unique, so we can give up if we get a hit.
				}
			}
			if (performed_action) continue;
			
			// If our action_name didn't match any curves then throw a warning.
			output_warning("No annulus or rectangle named '" + action_name + "' found to twist or half-twist.");
		} while (marker != 0);
	}
	
	M.tidy_boundary();
	
	return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3d0, %rsp            # imm = 0x3D0
movq %rsi, -0x368(%rbp)
movq %rdx, -0x378(%rbp)
movq %rcx, -0x370(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x9990
leaq -0x50(%rbp), %rdi
callq 0x99b0
leaq -0x68(%rbp), %rdi
callq 0x8bd0
leaq -0x80(%rbp), %rdi
callq 0x8bd0
leaq -0x98(%rbp), %rdi
callq 0x8bd0
leaq -0xb0(%rbp), %rdi
callq 0x8bd0
leaq -0xc8(%rbp), %rdi
callq 0x8bd0
leaq -0xe0(%rbp), %rdi
callq 0x8bd0
movq -0x368(%rbp), %rsi
movq -0x8(%rbp), %rax
movq %rax, -0x360(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x3130
jmp 0x7fd4
movq -0x360(%rbp), %rdi
movq %rsp, %rax
leaq -0x100(%rbp), %rcx
movq %rcx, 0x18(%rax)
leaq -0xe0(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x38(%rbp), %rsi
leaq -0x50(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq -0x80(%rbp), %r8
leaq -0x98(%rbp), %r9
callq 0x5320
jmp 0x8027
leaq -0x100(%rbp), %rdi
callq 0x35f8
movq -0x370(%rbp), %rdi
movq %rsp, %rax
leaq -0xe0(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x68(%rbp), %rsi
leaq -0x80(%rbp), %rdx
leaq -0x98(%rbp), %rcx
leaq -0xb0(%rbp), %r8
leaq -0xc8(%rbp), %r9
callq 0x146d0
jmp 0x806b
movq -0x378(%rbp), %rdi
movq %rsp, %rax
leaq -0xe0(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x68(%rbp), %rsi
leaq -0x80(%rbp), %rdx
leaq -0x98(%rbp), %rcx
leaq -0xb0(%rbp), %r8
leaq -0xc8(%rbp), %r9
callq 0x146d0
jmp 0x80a3
movq -0x370(%rbp), %rdx
leaq 0x1f0ec(%rip), %rsi     # 0x2719d
leaq -0x190(%rbp), %rdi
callq 0x4ec0
jmp 0x80bf
leaq 0x1f0e9(%rip), %rdx     # 0x271af
leaq -0x170(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x4fd0
jmp 0x80db
movq -0x378(%rbp), %rdx
leaq -0x150(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x99d0
jmp 0x80f7
leaq 0x1ef61(%rip), %rdx     # 0x2705f
leaq -0x130(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x4fd0
jmp 0x8113
leaq -0x130(%rbp), %rdi
movl $0x1, %esi
callq 0x4c10
jmp 0x8126
leaq -0x130(%rbp), %rdi
callq 0x35f8
leaq -0x150(%rbp), %rdi
callq 0x35f8
leaq -0x170(%rbp), %rdi
callq 0x35f8
leaq -0x190(%rbp), %rdi
callq 0x35f8
leaq -0x68(%rbp), %rdi
callq 0x8c60
movl %eax, -0x194(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x8c60
movq -0x370(%rbp), %rdi
movl %eax, -0x198(%rbp)
leaq 0x1f16d(%rip), %rsi     # 0x272f2
callq 0x8ba0
movb %al, -0x379(%rbp)
jmp 0x8192
movb -0x379(%rbp), %al
testb $0x1, %al
jne 0x81a1
jmp 0x852a
movq $0x0, -0x1a0(%rbp)
movq -0x370(%rbp), %rsi
leaq -0x1e0(%rbp), %rdi
callq 0x3130
jmp 0x81c1
leaq 0x2d310(%rip), %rsi     # 0x354d8
leaq -0x200(%rbp), %rdi
callq 0x3130
jmp 0x81d6
leaq -0x1c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
leaq -0x200(%rbp), %rdx
leaq -0x1a0(%rbp), %rcx
callq 0x11c10
jmp 0x81f9
leaq -0x200(%rbp), %rdi
callq 0x35f8
leaq -0x1e0(%rbp), %rdi
callq 0x35f8
leaq 0x1f0da(%rip), %rsi     # 0x272f2
leaq -0x1c0(%rbp), %rdi
callq 0x8ca0
movb %al, -0x37a(%rbp)
jmp 0x822c
movb -0x37a(%rbp), %al
testb $0x1, %al
jne 0x823b
jmp 0x8361
movl $0x3, -0x204(%rbp)
jmp 0x84af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x8b32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x35f8
jmp 0x8b32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x82f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x82ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x82de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x35f8
leaq -0x150(%rbp), %rdi
callq 0x35f8
leaq -0x170(%rbp), %rdi
callq 0x35f8
leaq -0x190(%rbp), %rdi
callq 0x35f8
jmp 0x8b32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x8339
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x35f8
leaq -0x1e0(%rbp), %rdi
callq 0x35f8
jmp 0x8b32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x8519
movb $0x0, -0x205(%rbp)
movl $0x0, -0x20c(%rbp)
movl -0x20c(%rbp), %eax
cmpl -0x194(%rbp), %eax
jge 0x8432
movslq -0x20c(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x9a20
testb $0x1, %al
jne 0x83cc
movslq -0x20c(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x9a20
testb $0x1, %al
jne 0x83cc
jmp 0x841c
movslq -0x20c(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x9ab0
movq %rax, -0x388(%rbp)
movslq -0x20c(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x9a20
movq -0x388(%rbp), %rdi
movzbl %al, %esi
callq 0x199c0
jmp 0x8413
movb $0x1, -0x205(%rbp)
jmp 0x8432
jmp 0x841e
movl -0x20c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20c(%rbp)
jmp 0x8372
testb $0x1, -0x205(%rbp)
je 0x8447
movl $0x3, -0x204(%rbp)
jmp 0x84af
leaq 0x1ed72(%rip), %rsi     # 0x271c0
leaq -0x250(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
callq 0x4ec0
jmp 0x8463
leaq 0x1ed69(%rip), %rdx     # 0x271d3
leaq -0x230(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x4fd0
jmp 0x847f
leaq -0x230(%rbp), %rdi
callq 0x4c90
jmp 0x848d
leaq -0x230(%rbp), %rdi
callq 0x35f8
leaq -0x250(%rbp), %rdi
callq 0x35f8
movl $0x0, -0x204(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x35f8
movl -0x204(%rbp), %eax
testl %eax, %eax
je 0x84c9
jmp 0x84c7
jmp 0x84cb
jmp 0x84cb
cmpq $0x0, -0x1a0(%rbp)
jne 0x81ac
jmp 0x852a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x850d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x35f8
leaq -0x250(%rbp), %rdi
callq 0x35f8
leaq -0x1c0(%rbp), %rdi
callq 0x35f8
jmp 0x8b32
movq -0x8(%rbp), %rdi
callq 0x1b770
jmp 0x8535
movl $0x0, -0x254(%rbp)
movl -0x254(%rbp), %eax
movl %eax, -0x38c(%rbp)
movq -0x8(%rbp), %rdi
addq $0x58, %rdi
callq 0x9ad0
movq %rax, %rcx
movl -0x38c(%rbp), %eax
cmpl %ecx, %eax
jge 0x8590
movq -0x8(%rbp), %rdi
addq $0x58, %rdi
movslq -0x254(%rbp), %rsi
callq 0x9af0
movl $0x2, (%rax)
movl -0x254(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x254(%rbp)
jmp 0x853f
movl $0x0, -0x258(%rbp)
movl -0x258(%rbp), %eax
movl %eax, -0x390(%rbp)
movq -0x8(%rbp), %rdi
addq $0x40, %rdi
callq 0x9b10
movq %rax, %rcx
movl -0x390(%rbp), %eax
cmpl %ecx, %eax
jge 0x85f3
movq -0x8(%rbp), %rdi
addq $0x40, %rdi
movslq -0x258(%rbp), %rsi
callq 0x8d20
movq (%rax), %rdi
xorl %esi, %esi
callq 0x9b30
jmp 0x85e0
jmp 0x85e2
movl -0x258(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x258(%rbp)
jmp 0x859a
movq -0x378(%rbp), %rdi
leaq 0x1ecf1(%rip), %rsi     # 0x272f2
callq 0x8ba0
movb %al, -0x391(%rbp)
jmp 0x860e
movb -0x391(%rbp), %al
testb $0x1, %al
jne 0x861d
jmp 0x8ac0
movq $0x0, -0x260(%rbp)
movq -0x378(%rbp), %rsi
leaq -0x2a0(%rbp), %rdi
callq 0x3130
jmp 0x863d
leaq 0x2ce94(%rip), %rsi     # 0x354d8
leaq -0x2c0(%rbp), %rdi
callq 0x3130
jmp 0x8652
leaq -0x280(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
leaq -0x2c0(%rbp), %rdx
leaq -0x260(%rbp), %rcx
callq 0x11c10
jmp 0x8675
leaq -0x2c0(%rbp), %rdi
callq 0x35f8
leaq -0x2a0(%rbp), %rdi
callq 0x35f8
leaq 0x1ec5e(%rip), %rsi     # 0x272f2
leaq -0x280(%rbp), %rdi
callq 0x8ca0
movb %al, -0x392(%rbp)
jmp 0x86a8
movb -0x392(%rbp), %al
testb $0x1, %al
jne 0x86b4
jmp 0x871d
movl $0xe, -0x204(%rbp)
jmp 0x8a48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x86f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x35f8
leaq -0x2a0(%rbp), %rdi
callq 0x35f8
jmp 0x8b32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x8ab2
xorl %eax, %eax
movl %eax, %edx
leaq -0x2e8(%rbp), %rdi
leaq -0x280(%rbp), %rsi
movl $0x1, %ecx
callq 0x3320
jmp 0x873b
leaq -0x2e8(%rbp), %rdi
leaq 0x2cdaf(%rip), %rsi     # 0x354f8
callq 0x9a20
movb %al, -0x393(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x35f8
movb -0x393(%rbp), %al
andb $0x1, %al
movb %al, -0x2c1(%rbp)
testb $0x1, -0x2c1(%rbp)
je 0x87b7
leaq -0x308(%rbp), %rdi
leaq -0x280(%rbp), %rsi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0x3320
jmp 0x8798
leaq -0x280(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x33c0
leaq -0x308(%rbp), %rdi
callq 0x35f8
movb $0x0, -0x309(%rbp)
movl $0x0, -0x310(%rbp)
movl -0x310(%rbp), %eax
cmpl -0x194(%rbp), %eax
jge 0x88b4
movslq -0x310(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x280(%rbp), %rsi
callq 0x9a20
testb $0x1, %al
jne 0x8822
movslq -0x310(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x280(%rbp), %rsi
callq 0x9a20
testb $0x1, %al
jne 0x8822
jmp 0x889e
testb $0x1, -0x2c1(%rbp)
je 0x8847
movslq -0x310(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x9ab0
movq %rax, %rdi
callq 0x1b290
jmp 0x8845
jmp 0x8895
movslq -0x310(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x9ab0
movq %rax, -0x3a0(%rbp)
movslq -0x310(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x280(%rbp), %rsi
callq 0x9a20
movq -0x3a0(%rbp), %rdi
movzbl %al, %esi
decl %esi
orl $0x1, %esi
callq 0x1a2b0
jmp 0x8893
jmp 0x8895
movb $0x1, -0x309(%rbp)
jmp 0x88b4
jmp 0x88a0
movl -0x310(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x310(%rbp)
jmp 0x87c8
testb $0x1, -0x309(%rbp)
je 0x88cc
movl $0xe, -0x204(%rbp)
jmp 0x8a48
movl $0x0, -0x314(%rbp)
movl -0x314(%rbp), %eax
cmpl -0x198(%rbp), %eax
jge 0x89cb
movslq -0x314(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x280(%rbp), %rsi
callq 0x9a20
testb $0x1, %al
jne 0x8936
movslq -0x314(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x280(%rbp), %rsi
callq 0x9a20
testb $0x1, %al
jne 0x8936
jmp 0x89b5
testb $0x1, -0x2c1(%rbp)
je 0x895b
movslq -0x314(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x9720
movq %rax, %rdi
callq 0x1c020
jmp 0x8959
jmp 0x89ac
movslq -0x314(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x9720
movq %rax, -0x3a8(%rbp)
movslq -0x314(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0x8c80
movq %rax, %rdi
leaq -0x280(%rbp), %rsi
callq 0x9a20
movq -0x3a8(%rbp), %rdi
movzbl %al, %esi
decl %esi
orl $0x1, %esi
callq 0x1cb40
jmp 0x89aa
jmp 0x89ac
movb $0x1, -0x309(%rbp)
jmp 0x89cb
jmp 0x89b7
movl -0x314(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x314(%rbp)
jmp 0x88d6
testb $0x1, -0x309(%rbp)
je 0x89e0
movl $0xe, -0x204(%rbp)
jmp 0x8a48
leaq 0x1e80b(%rip), %rsi     # 0x271f2
leaq -0x358(%rbp), %rdi
leaq -0x280(%rbp), %rdx
callq 0x4ec0
jmp 0x89fc
leaq 0x1e80f(%rip), %rdx     # 0x27212
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x4fd0
jmp 0x8a18
leaq -0x338(%rbp), %rdi
callq 0x4c90
jmp 0x8a26
leaq -0x338(%rbp), %rdi
callq 0x35f8
leaq -0x358(%rbp), %rdi
callq 0x35f8
movl $0x0, -0x204(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x35f8
movl -0x204(%rbp), %eax
testl %eax, %eax
je 0x8a62
jmp 0x8a60
jmp 0x8a64
jmp 0x8a64
cmpq $0x0, -0x260(%rbp)
jne 0x8628
jmp 0x8ac0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x8aa6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x35f8
leaq -0x358(%rbp), %rdi
callq 0x35f8
leaq -0x280(%rbp), %rdi
callq 0x35f8
jmp 0x8b32
movq -0x8(%rbp), %rdi
callq 0x20340
jmp 0x8acb
movl $0x1, -0x204(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x9930
leaq -0xc8(%rbp), %rdi
callq 0x9930
leaq -0xb0(%rbp), %rdi
callq 0x9930
leaq -0x98(%rbp), %rdi
callq 0x9930
leaq -0x80(%rbp), %rdi
callq 0x9930
leaq -0x68(%rbp), %rdi
callq 0x9930
leaq -0x50(%rbp), %rdi
callq 0x9b50
leaq -0x38(%rbp), %rdi
callq 0x9bb0
addq $0x3d0, %rsp            # imm = 0x3D0
popq %rbp
retq
leaq -0xe0(%rbp), %rdi
callq 0x9930
leaq -0xc8(%rbp), %rdi
callq 0x9930
leaq -0xb0(%rbp), %rdi
callq 0x9930
leaq -0x98(%rbp), %rdi
callq 0x9930
leaq -0x80(%rbp), %rdi
callq 0x9930
leaq -0x68(%rbp), %rdi
callq 0x9930
leaq -0x50(%rbp), %rdi
callq 0x9b50
leaq -0x38(%rbp), %rdi
callq 0x9bb0
movq -0x108(%rbp), %rdi
callq 0x3550
nopw %cs:(%rax,%rax)
nopl (%rax)