// File: /workspace/github_cpp_makefile_star2_O3/angelapwen[P]text-based-game/game.cpp
// Function: Game::characterChoice()
void Game::characterChoice() {
	cout <<
	     "********************************************************************************"
	     << endl;
	cout << "You may pick a disguise before you enter." << endl;
	cout << "\nYou have the option of disguising yourself with Hydra technology "
			"as "
			"one of\nthe other guests while you complete your mission. ";
	cout << "Each disguise will come with a\nspecial feature. ";
	cout << "Each character also begins in a different room in the estate." <<
	     endl;
	cout << "If you continue as yourself, you will also receive a special "
			"feature." << endl;
	cout << "\nThe disguises we have available are:" << endl;
	cout << "\n- Miss Scarlet is a femme fetale." << endl;
	cout << "Special Feature: Miss Scarlet has charmed a Hydra employee to let"
			" her satchel\nbegin with a revolver instead of empty." << endl;
	cout << "Starting Location: Hall." << endl;
	cout << "\n- Colonel Mustard is a dangerous hunter." << endl;
	cout << "Special Feature: Colonel Mustard's satchel's capacity is 1 more "
			"than the\ndefault number."	<< endl;
	cout << "Starting Location: Dining Room." << endl;
	cout << "\n- Mrs. White is the disgruntled servant of the estate." << endl;
	cout << "Special Feature: Mrs. White will never be randomly discovered by "
			"Mr. Boddy, as\nshe is allowed to be in the Estate at any time."	<<
	     endl;
	cout << "Starting Location: Kitchen." << endl;
	cout << "\n- Mr. Green is a mobster." << endl;
	cout << "Special Feature: Mr. Green has paid one of the Hydra employees "
			"off to find out\nwhich room the secret escape is in before the game "
			"begins." << endl;
	cout << "Starting Location: Ballroom." << endl;
	cout << "\n- Mrs. Peacock is a grand dame." << endl;
	cout << "Special Feature: Due to her age, Mrs. Peacock receives 1.25x the "
			"number of\nmaximum moves before the dinner begins." << endl;
	cout << "Starting Location: Conservatory." << endl;
	cout << "\n- Complete your mission as Professor Plum." << endl;
	cout << "Special Feature: you receive a key to access all the "
			"corner passageways\nthroughout the game, regardless of if you have "
			"the wrench." << endl;
	cout << "Starting Location: Library." << endl;
	cout << "\nHere is a map of the Estate:" << endl;
	map->printBoard();
	cout << "\n\tCHARACTER MENU" << endl;
	cout << "1. Miss Scarlet" << endl;
	cout << "2. Colonel Mustard" << endl;
	cout << "3. Mrs. White" << endl;
	cout << "4. Mr. Green" << endl;
	cout << "5. Mrs. Peacock" << endl;
	cout << "6. Turn down the disguise-- remain as Professor Plum." << endl;
	cout << "Make your choice: ";

	int characterChoice = intValidation(1,6);

	// Initialize character variable depending on choice
	switch (characterChoice) {
		case 1: {
			character = 's'; // For Scarlet
			current = hall;
			map->placeHall();
			break;
		}
		case 2: {
			character = 'm'; // For Mustard
			current = dining;
			map->placeDining();
			break;
		}
		case 3: {
			character = 'w'; // For White
			current = kitchen;
			map->placeKitchen();
			break;
		}
		case 4: {
			character = 'g'; // For Green
			current = ballroom;
			map->placeBallroom();
			break;
		}
		case 5: {
			character = 'p'; // For Peacock
			current = conservatory;
			map->placeConservatory();
			break;
		}
			case 6: {
			character = 'o'; // For original, Plum
			current = library;
			map->placeLibrary();
			break;
		}
		default:
			break;
	}

	cout << "Thank you, your choice has been noted." << endl;
	cout << "\nPress enter to continue." << endl;
	getchar();
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movq 0xf30e(%rip), %rbx      # 0x14fd0
leaq 0x7e49(%rip), %rsi      # 0xdb12
movl $0x50, %edx
movq %rbx, %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
leaq 0x8c0a(%rip), %rsi      # 0xe90e
movl $0x29, %edx
movq %rbx, %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
leaq 0x8bf9(%rip), %rsi      # 0xe938
movl $0x7e, %edx
movq %rbx, %rdi
callq 0x21c0
leaq 0x8c64(%rip), %rsi      # 0xe9b7
movl $0x30, %edx
movq %rbx, %rdi
callq 0x21c0
leaq 0x8c81(%rip), %rsi      # 0xe9e8
movl $0x3d, %edx
movq %rbx, %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
leaq 0x8c84(%rip), %rsi      # 0xea26
movl $0x45, %edx
movq %rbx, %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
leaq 0x8c8f(%rip), %rsi      # 0xea6c
movl $0x25, %edx
movq %rbx, %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
leaq 0x8c7a(%rip), %rsi      # 0xea92
movl $0x22, %edx
movq %rbx, %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
leaq 0x8c62(%rip), %rsi      # 0xeab5
movl $0x75, %edx
movq %rbx, %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
leaq 0x8c9d(%rip), %rsi      # 0xeb2b
movl $0x18, %edx
movq %rbx, %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
leaq 0x8c7b(%rip), %rsi      # 0xeb44
movl $0x29, %edx
movq %rbx, %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
leaq 0x8c6a(%rip), %rsi      # 0xeb6e
movl $0x58, %edx
movq %rbx, %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
leaq 0x8c88(%rip), %rsi      # 0xebc7
movl $0x1f, %edx
movq %rbx, %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
leaq 0x8c6d(%rip), %rsi      # 0xebe7
movl $0x37, %edx
movq %rbx, %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
leaq 0x8c6a(%rip), %rsi      # 0xec1f
movl $0x7e, %edx
movq %rbx, %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
leaq 0x8cae(%rip), %rsi      # 0xec9e
movl $0x1b, %edx
movq %rbx, %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
leaq 0x8c8f(%rip), %rsi      # 0xecba
movl $0x1a, %edx
movq %rbx, %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
leaq 0x8c6f(%rip), %rsi      # 0xecd5
movl $0x89, %edx
movq %rbx, %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
leaq 0x8cbe(%rip), %rsi      # 0xed5f
movl $0x1c, %edx
movq %rbx, %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
leaq 0x8ca0(%rip), %rsi      # 0xed7c
movl $0x20, %edx
movq %rbx, %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
leaq 0x8c86(%rip), %rsi      # 0xed9d
movl $0x72, %edx
movq %rbx, %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
leaq 0x8cbe(%rip), %rsi      # 0xee10
movl $0x20, %edx
movq %rbx, %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
leaq 0x8ca4(%rip), %rsi      # 0xee31
movl $0x2b, %edx
movq %rbx, %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
leaq 0x8c95(%rip), %rsi      # 0xee5d
movl $0x82, %edx
movq %rbx, %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
leaq 0x8cdd(%rip), %rsi      # 0xeee0
movl $0x1b, %edx
movq %rbx, %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
leaq 0x8cbe(%rip), %rsi      # 0xeefc
movl $0x1d, %edx
movq %rbx, %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 (%r14), %rdi
callq 0x8bda
leaq 0x8c99(%rip), %rsi      # 0xef1a
movl $0x10, %edx
movq %rbx, %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
leaq 0x8c6f(%rip), %rsi      # 0xef2b
movl $0xf, %edx
movq %rbx, %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
leaq 0x8c44(%rip), %rsi      # 0xef3b
movl $0x12, %edx
movq %rbx, %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
leaq 0x8c1c(%rip), %rsi      # 0xef4e
movl $0xd, %edx
movq %rbx, %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
leaq 0x8bef(%rip), %rsi      # 0xef5c
movl $0xc, %edx
movq %rbx, %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
leaq 0x8bc1(%rip), %rsi      # 0xef69
movl $0xf, %edx
movq %rbx, %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
leaq 0x8b96(%rip), %rsi      # 0xef79
movl $0x35, %edx
movq %rbx, %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
leaq 0x9564(%rip), %rsi      # 0xf982
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21c0
movl $0x1, %esi
movl $0x6, %edx
callq 0x751a
decl %eax
cmpl $0x5, %eax
ja 0x64f2
leaq 0x7264(%rip), %rcx      # 0xd6b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x73, 0x8a(%r14)
movq (%r14), %rdi
movq 0x60(%r14), %rax
movq %rax, 0x18(%r14)
callq 0x8b1a
jmp 0x64f2
movb $0x70, 0x8a(%r14)
movq (%r14), %rdi
movq 0x38(%r14), %rax
movq %rax, 0x18(%r14)
callq 0x8aba
jmp 0x64f2
movb $0x77, 0x8a(%r14)
movq (%r14), %rdi
movq 0x48(%r14), %rax
movq %rax, 0x18(%r14)
callq 0x8baa
jmp 0x64f2
movb $0x67, 0x8a(%r14)
movq (%r14), %rdi
movq 0x40(%r14), %rax
movq %rax, 0x18(%r14)
callq 0x8aea
jmp 0x64f2
movb $0x6d, 0x8a(%r14)
movq (%r14), %rdi
movq 0x50(%r14), %rax
movq %rax, 0x18(%r14)
callq 0x8b7a
jmp 0x64f2
movb $0x6f, 0x8a(%r14)
movq (%r14), %rdi
movq 0x28(%r14), %rax
movq %rax, 0x18(%r14)
callq 0x8a5a
leaq 0x8ab6(%rip), %rsi      # 0xefaf
movl $0x26, %edx
movq %rbx, %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
leaq 0x8aa2(%rip), %rsi      # 0xefd6
movl $0x19, %edx
movq %rbx, %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
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x21f0