// File: /workspace/github_cpp_makefile_star2_O3/angelapwen[P]text-based-game/game.cpp
// Function: Game::startGame()
void Game::startGame() {
	welcomeMenu();

	characterChoice(); // Choose appropriate character
	satchelChoice(); // Construct appropriate satchel

	string weapon; // Weapon picked up every round
	bool exit = false; // Set bool flag to false until player chosoes to exit

	cout <<
	     "********************************************************************************"
	     << endl;
	// If character is Miss Scarlet, add revolver to Satchel
	if (character == 's') {
		cout << "Hello, Miss Scarlet.";
		satchel->addWeapon("revolver");
	}

	// If character is Colonel Mustard, increment Satchel capacity
	else if (character == 'm') {
		cout << "Hello, Colonel Mustard." << endl;
		satchel->addCapacity();
	}

	// If character is Mrs. White, turn switch on corner access
	else if (character == 'w') {
		cout << "Hello, Mrs. White." << endl;
		cout << "Mr. Boddy wouldn't report his own maid to the police for being"
			 " on his Estate." << endl;
	}

	// If character is Mr. Green, display room with escape door
	else if (character == 'g') {
		cout << "Hello, Mr. Green." << endl;
		cout << "Thank you for your generous donation to Hydra." << endl;
		cout << "The room you must commit the murder in is the " << murderRoom
		     << "." << endl;
	}

	// If character is Mrs. Peacock, multiply the number of total moves
	else if (character == 'p') {
		cout << "Hello, Mrs. Peacock." << endl;
		maxMoves *= 1.25;
		cout << "Your new number of maximum moves in the estate is " <<
		     maxMoves << "." << endl;
	}

	else {
		cout << "Welcome, Professor Plum." << endl;
		current->setCornerAccess('y');
		cout << "You will be able to access the corner passageways throughout "
		        "the game." << endl;
	}

	cout << "The Boddy Estate butler greets you at the entrance." << endl;
	cout << "\nPress enter to begin searching the Estate for weapons." << endl;
	getchar();

	// Repeat these steps while the murder has not been committed, the user
	// has not elected to exit, step count is below max, and random
	// discovery event has not occurred
	while (moves < maxMoves && !murder && !exit && !discovery) {
		// Increment and print the step number
		moves++;

		cout <<
		     "********************************************************************************"
		     << endl;
		cout << "You are on Move #" << moves << "." << endl;

		// Move player to correct place and print board
		updateMap();
		map->printBoard();
		map->printKey();

		// Check if player has enough weapons and is in the appropriate room
		if ((satchel->getNumUniqueWeapons()) > 3 &&
		    current->getName() == murderRoom) {
			current->roomWelcome();
			commitMurder();
		}

		// If murder has not been committed, move forward with room action
		if (!murder) {
			current->roomWelcome();

			// Chance 1 in 9 that character drops their satchel
			int emptyChance = (rand() % 9) + 1;
			switch (emptyChance) {
				case 1: {
					satchel->clearContents();
					break;
				}
				default:
					break;
			}

			// Store the weapon picked up (if any) from action method
			weapon = current->action();

			// Add weapon (if applicable) to satchel
			if (weapon != "none") {
				satchel->addWeapon(weapon);
			}

			// Check again if player has enough weapons and is in the correct room
			if ((satchel->getNumUniqueWeapons()) > 3 && current->getName() ==
			                                            murderRoom) {
				commitMurder();
			}
		}

		// If murder has not been committed at this stage, chance in 1 of 30
		// that player is discovered by Boddy before moving.
		if (!murder) {
			int discoveryChance = (rand() % 30) + 1;

			switch (discoveryChance) {
				case 1: {
					// Turn discovery on if character is not Mrs. White
					if (character != 'w') {
						discovery = true;
					}
					break;
				}
				default:
					break;
			}

			// If discovery did not occur, move character to next room
			if (!discovery) {
				cout << "\nIt is time to move to another room." << endl;

				// If character is Plum, set corner access on
				if (character == 'o') {
					current->setCornerAccess('y');
				}
					// Else if character is not Mrs. White but has wrench, set corner
					// access on
				else if (satchel->getWrench()) {
					cout
							<< "\nHello from Hydra. We noticed that you have a wrench in";
					cout << " your satchel. While you\nhave a wrench, you may access "
							   "the secret corner passageways in the Boddy Estate."
							<< endl << endl;
					current->setCornerAccess('y');
				}
					// Else turn corner access off
				else {
					current->setCornerAccess('n');
				}

				// Display options for the user to move and get user choice
				char move = current->makeMove();

				// Depending on char returned, point current to new room or exit
				switch (move) {
					case 't':
						current = current->getTop();
						break;
					case 'b':
						current = current->getBottom();
						break;
					case 'l':
						current = current->getLeft();
						break;
					case 'r':
						current = current->getRight();
						break;
					case 'c':
						current = current->getCorner();
						break;
					case 'e':
						exit = true;
						break;
					default:
						break;
				}
			}
		}
	}

	cout <<
	     "\n********************************************************************************"
	     << endl;

	// If murder has been committed, display congratulations
	if (murder) {
		cout << "Congratulations, professor! You have completed your mission in "
			  << moves << " moves." << endl;
		cout << "We have activated a secret escape in the " << murderRoom <<
					"." << endl;
		cout << "Open the door and step in to your freedom." << endl;
		cout << "\n\nYour next mission will be:" << endl;
		cout << "DEFEND YOUR INNOCENCE. FRAME ANOTHER GUEST FOR MR. BODDY'S "
		        "MURDER." << endl;
		cout << "The others will be here soon..." << endl;
		cout << "\n\nRemember: Cut off a limb, and two more shall take its "
		        "place." << endl;
	}

	// Else if user reached max number of moves, display exit message
	else if (moves >= maxMoves) {
		cout << "Unfortunately, you exceeded the total number of moves to "
		        "complete your mission." << endl;
		cout << "We have removed you from Mr. Boddy's estate." << endl;
		cout << "\nNot everyone is meant for the greatness of HYDRA." << endl;
		cout << "The Hydra selection process is a dangerous one." << endl;
		cout << "Those who do not successfully complete it are liabilities to "
		        "our organization." << endl;
		cout << "Perhaps you may serve Hydra in your next life." << endl;
		cout << "\n\n\nDo you have any last words before we begin?" << endl;
	}

	// Else player has been discovered, display exit message
	else if (discovery) {
		cout << "Before you decide on your next move, Mr. Boddy walks into the " <<
		     current->getName() << "." << endl;
		cout << "You have been discovered after " << moves << " move(s)!!" <<
		     endl;
		cout << "\nMR. BODDY: \"You aren't supposed to be in here.\"" << endl;
		cout << "MR. BODDY: \"Are you trying to steal my things??\"" << endl;
		cout << "MR. BODDY: \"I expected better from you. I'd better call the "
		        "police. \"" << endl;
		cout << "\nThe police have escorted you from Mr. Boddy's estate." << endl;
		cout << "They do not find any evidence of stolen items on you and you "
			 "are released." << endl;
		cout << "\nYou have failed to complete your mission." << endl;
		cout << "Not everyone is meant for the greatness of HYDRA." << endl;
		cout << "The HYDRA selection process is a dangerous one." << endl;
		cout << "Those who do not successfully complete it are liabilities to "
		        "our organization." << endl;
		cout << "Perhaps you may serve Hydra in your next life." << endl;
		cout << "\n\n\nDo you have any last words before we begin?" << endl;
	}

	// Else if user has elected to exit, display exit message
	else {
		cout << "You have chosen to use the Emergency Exit after " << moves <<
		     " move(s)." << endl;
		cout << "You decided to leave your mission incomplete." << endl;
		cout << "\nNot everyone is meant for the greatness of HYDRA." << endl;
		cout << "The HYDRA selection process is a dangerous one." << endl;
		cout << "Those who do not successfully complete it are liabilities to "
		        "our organization." << endl;
		cout << "Perhaps you may serve Hydra in your next life." << endl;
		cout << "\n\n\nDo you have any last words before we begin?" << endl;
	}
	cout <<
	     "********************************************************************************"
	     << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
callq 0x5664
movq %rbx, %rdi
callq 0x5cb4
movq %rbx, %rdi
callq 0x6574
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
movq 0x10b0c(%rip), %r14     # 0x14fd0
leaq 0x9647(%rip), %rsi      # 0xdb12
movl $0x50, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x10ada(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movzbl 0x8a(%rbx), %eax
cmpl $0x6f, %eax
jle 0x4598
cmpl $0x70, %eax
je 0x45fe
cmpl $0x77, %eax
je 0x46af
cmpl $0x73, %eax
jne 0x47ee
movq 0x10a9b(%rip), %rdi     # 0x14fd0
leaq 0x92e5(%rip), %rsi      # 0xd821
movl $0x14, %edx
callq 0x21c0
movq 0x8(%rbx), %r14
leaq 0x78(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x8ff2(%rip), %rsi      # 0xd54c
leaq 0x8ff3(%rip), %rdx      # 0xd554
leaq 0x68(%rsp), %rdi
callq 0x7b50
movq (%r14), %rax
leaq 0x68(%rsp), %rsi
movq %r14, %rdi
callq *(%rax)
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x4884
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x4884
cmpl $0x67, %eax
je 0x4706
cmpl $0x6d, %eax
jne 0x47ee
movq 0x10a1f(%rip), %r14     # 0x14fd0
leaq 0x927e(%rip), %rsi      # 0xd836
movl $0x17, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x109ed(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x8(%rbx), %rdi
callq 0x9fca
jmp 0x4884
movq 0x109cb(%rip), %r14     # 0x14fd0
leaq 0x9313(%rip), %rsi      # 0xd91f
movl $0x14, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x10999(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
cvtsi2sdl 0x14(%rbx), %xmm0
mulsd 0x9057(%rip), %xmm0     # 0xd6a8
cvttsd2si %xmm0, %eax
movl %eax, 0x14(%rbx)
movq 0x10971(%rip), %rdi     # 0x14fd0
leaq 0x92ce(%rip), %rsi      # 0xd934
movl $0x32, %edx
callq 0x21c0
movl 0x14(%rbx), %esi
movq 0x10956(%rip), %rdi     # 0x14fd0
callq 0x2260
movq %rax, %r14
leaq 0x99eb(%rip), %rsi      # 0xe074
movl $0x1, %edx
movq %rax, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
jmp 0x4871
movq 0x1091a(%rip), %r14     # 0x14fd0
leaq 0x9191(%rip), %rsi      # 0xd84e
movl $0x12, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x108e8(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x4d, %edx
leaq 0x9160(%rip), %rsi      # 0xd861
jmp 0x484e
movq 0x108c3(%rip), %r14     # 0x14fd0
leaq 0x919b(%rip), %rsi      # 0xd8af
movl $0x11, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x10891(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x1087d(%rip), %r14     # 0x14fd0
leaq 0x9167(%rip), %rsi      # 0xd8c1
movl $0x2e, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x1084b(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x10837(%rip), %rdi     # 0x14fd0
leaq 0x9150(%rip), %rsi      # 0xd8f0
movl $0x2e, %edx
callq 0x21c0
movq 0x68(%rbx), %rsi
movq 0x70(%rbx), %rdx
movq 0x10817(%rip), %rdi     # 0x14fd0
callq 0x21c0
movq %rax, %r14
leaq 0x98ac(%rip), %rsi      # 0xe074
movl $0x1, %edx
movq %rax, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
jmp 0x4871
movq 0x107db(%rip), %r14     # 0x14fd0
leaq 0x916b(%rip), %rsi      # 0xd967
movl $0x18, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x107a9(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x18(%rbx), %rdi
movl $0x79, %esi
callq 0xa460
movl $0x46, %edx
leaq 0x9132(%rip), %rsi      # 0xd980
movq 0x1077b(%rip), %r14     # 0x14fd0
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x10745(%rip), %r14     # 0x14fd0
leaq 0x9135(%rip), %rsi      # 0xd9c7
movl $0x33, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x10713(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x106ff(%rip), %r14     # 0x14fd0
leaq 0x9123(%rip), %rsi      # 0xd9fb
movl $0x37, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x106cd(%rip), %r14     # 0x14fd0
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
callq 0x21f0
movl 0x10(%rbx), %ecx
cmpl 0x14(%rbx), %ecx
jge 0x4d65
leaq 0x38(%rsp), %r13
xorl %eax, %eax
leaq 0x28(%rsp), %rbp
testb $0x1, %al
jne 0x4d65
cmpb $0x0, 0x88(%rbx)
jne 0x4d65
cmpb $0x0, 0x89(%rbx)
jne 0x4d65
incl %ecx
movl %ecx, 0x10(%rbx)
movl $0x50, %edx
movq %r14, %rdi
leaq 0x91ac(%rip), %rsi      # 0xdb12
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x11, %edx
movq %r14, %rdi
leaq 0x9092(%rip), %rsi      # 0xda33
callq 0x21c0
movl 0x10(%rbx), %esi
movq %r14, %rdi
callq 0x2260
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0x96b1(%rip), %rsi      # 0xe074
callq 0x21c0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq %rbx, %rdi
callq 0x6bfa
movq (%rbx), %rdi
callq 0x8bda
movq (%rbx), %rdi
callq 0x8c88
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
cmpl $0x4, %eax
jl 0x4a84
movq 0x18(%rbx), %rsi
movq %rbp, %rdi
callq 0xa43c
movq 0x30(%rsp), %rdx
cmpq 0x70(%rbx), %rdx
jne 0x4a4c
movq 0x28(%rsp), %r12
testq %rdx, %rdx
je 0x4a56
movq 0x68(%rbx), %rsi
movq %r12, %rdi
callq 0x21b0
testl %eax, %eax
sete %r15b
jmp 0x4a59
movq 0x28(%rsp), %r12
xorl %r15d, %r15d
jmp 0x4a59
movb $0x1, %r15b
cmpq %r13, %r12
je 0x4a6e
movq 0x38(%rsp), %rsi
incq %rsi
movq %r12, %rdi
callq 0x21a0
testb %r15b, %r15b
je 0x4a84
movq 0x18(%rbx), %rdi
callq 0xa3c4
movq %rbx, %rdi
callq 0x6ec8
cmpb $0x0, 0x88(%rbx)
jne 0x4bc2
movq 0x18(%rbx), %rdi
callq 0xa3c4
callq 0x2050
imull $0x38e38e39, %eax, %eax # imm = 0x38E38E39
addl $0xe38e38e, %eax        # imm = 0xE38E38E
cmpl $0x1c71c71c, %eax       # imm = 0x1C71C71C
ja 0x4abb
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq 0x18(%rbx), %rsi
movq (%rsi), %rax
movq %rbp, %rdi
callq *(%rax)
leaq 0x8(%rsp), %rdi
movq %rbp, %rsi
callq 0x21d0
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x4aeb
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x8(%rsp), %rdi
leaq 0x8f4e(%rip), %rsi      # 0xda45
callq 0x2070
testl %eax, %eax
je 0x4b4f
movq 0x8(%rbx), %r12
leaq 0x58(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %rdi
callq 0x31d0
movq (%r12), %rax
movq %r12, %rdi
leaq 0x48(%rsp), %rsi
callq *(%rax)
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x4b4f
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
cmpl $0x4, %eax
jl 0x4bc2
movq 0x18(%rbx), %rsi
movq %rbp, %rdi
callq 0xa43c
movq 0x30(%rsp), %rdx
cmpq 0x70(%rbx), %rdx
jne 0x4b93
movq 0x28(%rsp), %r12
testq %rdx, %rdx
je 0x4b9d
movq 0x68(%rbx), %rsi
movq %r12, %rdi
callq 0x21b0
testl %eax, %eax
sete %r15b
jmp 0x4ba0
movq 0x28(%rsp), %r12
xorl %r15d, %r15d
jmp 0x4ba0
movb $0x1, %r15b
cmpq %r13, %r12
je 0x4bb5
movq 0x38(%rsp), %rsi
incq %rsi
movq %r12, %rdi
callq 0x21a0
testb %r15b, %r15b
je 0x4bc2
movq %rbx, %rdi
callq 0x6ec8
cmpb $0x0, 0x88(%rbx)
jne 0x4d57
callq 0x2050
imull $0xeeeeeeef, %eax, %eax # imm = 0xEEEEEEEF
movl $0x8888888, %ecx        # imm = 0x8888888
addl %ecx, %eax
rorl %eax
cmpl %ecx, %eax
ja 0x4bfc
cmpb $0x77, 0x8a(%rbx)
je 0x4bfc
movb $0x1, 0x89(%rbx)
jmp 0x4d57
testb $0x1, 0x89(%rbx)
jne 0x4d57
movl $0x24, %edx
movq %r14, %rdi
leaq 0x8e32(%rip), %rsi      # 0xda4a
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movb $0x79, %cl
cmpb $0x6f, 0x8a(%rbx)
je 0x4cdd
movq 0x8(%rbx), %rdi
callq 0x9fc6
movb $0x6e, %cl
testb %al, %al
je 0x4cdd
movl $0x37, %edx
movq %r14, %rdi
leaq 0x8dfe(%rip), %rsi      # 0xda6f
callq 0x21c0
movl $0x69, %edx
movq %r14, %rdi
leaq 0x8e22(%rip), %rsi      # 0xdaa7
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movb $0x79, %cl
movq 0x18(%rbx), %rdi
movzbl %cl, %esi
callq 0xa460
movq 0x18(%rbx), %rdi
callq 0xa46a
movzbl %al, %ecx
xorl %eax, %eax
cmpl $0x6b, %ecx
jg 0x4d0f
cmpl $0x62, %ecx
je 0x4d29
cmpl $0x63, %ecx
je 0x4d3f
cmpl $0x65, %ecx
jne 0x4d59
movb $0x1, %al
jmp 0x4d59
cmpl $0x6c, %ecx
je 0x4d34
cmpl $0x72, %ecx
je 0x4d4a
cmpl $0x74, %ecx
jne 0x4d59
movq 0x18(%rbx), %rdi
callq 0xabc4
jmp 0x4d53
movq 0x18(%rbx), %rdi
callq 0xabce
jmp 0x4d53
movq 0x18(%rbx), %rdi
callq 0xabd8
jmp 0x4d53
movq 0x18(%rbx), %rdi
callq 0xabec
jmp 0x4d53
movq 0x18(%rbx), %rdi
callq 0xabe2
movq %rax, 0x18(%rbx)
xorl %eax, %eax
movl 0x10(%rbx), %ecx
cmpl 0x14(%rbx), %ecx
jl 0x4930
movq 0x10264(%rip), %r14     # 0x14fd0
leaq 0x8d9e(%rip), %rsi      # 0xdb11
movl $0x51, %edx
movq %r14, %rdi
leaq 0x18(%rsp), %r12
callq 0x21c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x1022d(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
cmpb $0x1, 0x88(%rbx)
jne 0x4fb5
movq 0x1020c(%rip), %rdi     # 0x14fd0
leaq 0x8d98(%rip), %rsi      # 0xdb63
movl $0x3f, %edx
callq 0x21c0
movl 0x10(%rbx), %esi
movq 0x101f1(%rip), %rdi     # 0x14fd0
callq 0x2260
movq %rax, %r14
leaq 0x8db5(%rip), %rsi      # 0xdba3
movl $0x7, %edx
movq %rax, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x101a7(%rip), %rdi     # 0x14fd0
leaq 0x8d7b(%rip), %rsi      # 0xdbab
movl $0x29, %edx
callq 0x21c0
movq 0x68(%rbx), %rsi
movq 0x70(%rbx), %rdx
movq 0x10187(%rip), %rdi     # 0x14fd0
callq 0x21c0
movq %rax, %rbx
leaq 0x921c(%rip), %rsi      # 0xe074
movl $0x1, %edx
movq %rax, %rdi
callq 0x21c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x1013d(%rip), %rbx     # 0x14fd0
leaq 0x8d3b(%rip), %rsi      # 0xdbd5
movl $0x2a, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x1010b(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100f7(%rip), %rbx     # 0x14fd0
leaq 0x8d20(%rip), %rsi      # 0xdc00
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x100c5(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x100b1(%rip), %rbx     # 0x14fd0
leaq 0x8cf7(%rip), %rsi      # 0xdc1d
movl $0x42, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x1007f(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x1006b(%rip), %rbx     # 0x14fd0
leaq 0x8cf4(%rip), %rsi      # 0xdc60
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x10039(%rip), %rdi     # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x3e, %edx
leaq 0x8cd0(%rip), %rsi      # 0xdc80
jmp 0x552a
movl 0x10(%rbx), %eax
cmpl 0x14(%rbx), %eax
jge 0x527d
cmpb $0x1, 0x89(%rbx)
jne 0x535b
movq 0xfffb(%rip), %rdi      # 0x14fd0
leaq 0x8e70(%rip), %rsi      # 0xde4c
movl $0x3e, %edx
callq 0x21c0
movq 0x18(%rbx), %rsi
leaq 0x28(%rsp), %rdi
callq 0xa43c
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0xffcb(%rip), %rdi      # 0x14fd0
callq 0x21c0
movq %rax, %r14
leaq 0x9060(%rip), %rsi      # 0xe074
movl $0x1, %edx
movq %rax, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5063
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21a0
movq 0xff66(%rip), %rdi      # 0x14fd0
leaq 0x8e1a(%rip), %rsi      # 0xde8b
movl $0x1f, %edx
callq 0x21c0
movl 0x10(%rbx), %esi
movq 0xff4b(%rip), %rdi      # 0x14fd0
callq 0x2260
movq %rax, %rbx
leaq 0x8e17(%rip), %rsi      # 0xdeab
movl $0xa, %edx
movq %rax, %rdi
callq 0x21c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xff01(%rip), %rbx      # 0x14fd0
leaq 0x8de0(%rip), %rsi      # 0xdeb6
movl $0x30, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfecf(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfebb(%rip), %rbx      # 0x14fd0
leaq 0x8dcb(%rip), %rsi      # 0xdee7
movl $0x30, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfe89(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfe75(%rip), %rbx      # 0x14fd0
leaq 0x8db6(%rip), %rsi      # 0xdf18
movl $0x45, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfe43(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfe2f(%rip), %rbx      # 0x14fd0
leaq 0x8db6(%rip), %rsi      # 0xdf5e
movl $0x36, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfdfd(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfde9(%rip), %rbx      # 0x14fd0
leaq 0x8da7(%rip), %rsi      # 0xdf95
movl $0x4a, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfdb7(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfda3(%rip), %rbx      # 0x14fd0
leaq 0x8dac(%rip), %rsi      # 0xdfe0
movl $0x2a, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfd71(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x31, %edx
leaq 0x8ac5(%rip), %rsi      # 0xdd3d
jmp 0x5412
movq 0xfd4c(%rip), %rbx      # 0x14fd0
leaq 0x8a34(%rip), %rsi      # 0xdcbf
movl $0x4f, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfd1a(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfd06(%rip), %rbx      # 0x14fd0
leaq 0x8a3e(%rip), %rsi      # 0xdd0f
movl $0x2c, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfcd4(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfcc0(%rip), %rbx      # 0x14fd0
leaq 0x8a25(%rip), %rsi      # 0xdd3c
movl $0x32, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfc8e(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x8a19(%rip), %rsi      # 0xdd6f
jmp 0x5453
movq 0xfc6e(%rip), %rdi      # 0x14fd0
leaq 0x8cd2(%rip), %rsi      # 0xe03b
movl $0x30, %edx
callq 0x21c0
movl 0x10(%rbx), %esi
movq 0xfc53(%rip), %rdi      # 0x14fd0
callq 0x2260
movq %rax, %rbx
leaq 0x8ce0(%rip), %rsi      # 0xe06c
movl $0x9, %edx
movq %rax, %rdi
callq 0x21c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfc09(%rip), %rbx      # 0x14fd0
leaq 0x8ca8(%rip), %rsi      # 0xe076
movl $0x2d, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfbd7(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x32, %edx
leaq 0x892a(%rip), %rsi      # 0xdd3c
movq 0xfbb7(%rip), %rbx      # 0x14fd0
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfb91(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
leaq 0x8bb8(%rip), %rsi      # 0xe00b
movq 0xfb76(%rip), %rbx      # 0x14fd0
movl $0x2f, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfb4b(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfb37(%rip), %rbx      # 0x14fd0
leaq 0x88ff(%rip), %rsi      # 0xdd9f
movl $0x4e, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfb05(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfaf1(%rip), %rbx      # 0x14fd0
leaq 0x8908(%rip), %rsi      # 0xddee
movl $0x2e, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfabf(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movl $0x2e, %edx
leaq 0x88f3(%rip), %rsi      # 0xde1d
movq 0xfa9f(%rip), %rbx      # 0x14fd0
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfa79(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0xfa65(%rip), %rbx      # 0x14fd0
leaq 0x85a0(%rip), %rsi      # 0xdb12
movl $0x50, %edx
movq %rbx, %rdi
callq 0x21c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xfa33(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2100
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x55c1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x563d
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x5645
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x5645
jmp 0x5638
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5640
movq 0x38(%rsp), %rsi
jmp 0x5626
jmp 0x563d
jmp 0x563d
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x5640
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x5640
jmp 0x563d
jmp 0x563d
jmp 0x563d
jmp 0x563d
movq %rax, %rbx
jmp 0x5645
movq %rax, %rbx
leaq 0x18(%rsp), %r12
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x565c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
movq %rbx, %rdi
callq 0x2270