// File: /workspace/github_cpp_makefile_star2_O2/angelapwen[P]text-based-game/game.cpp
// Function: Game::satchelChoice()
void Game::satchelChoice() {
	cout <<
	     "********************************************************************************"
	     << endl;
	cout << "It is time to choose your satchel." << endl;
	cout << "Should you succeed in your missions, your placement in Hydra will"
			" depend upon\nyour demonstrated abilities and desire to challenge "
			"yourself."	<< endl;
	cout << "\n- The Bronze Satchel will provide you with the highest chance "
			"of success." << endl;
	cout << "It will only allow weapons that it does not already contain to be "
			"placed inside." << endl;
	cout << "Its capacity is 4 weapons. Once you fill it, you may proceed "
			"directly to find\nthe room with the secret escape." << endl;
	cout << "\n- The Silver Satchel will provide you with a moderate "
			"chance of success." << endl;
	cout << "It has a capacity of 5 weapons." << endl;
	cout << "It will allow you to add repeated weapons into the bag." << endl;
	cout << "Once you reach capacity and attempt to add more weapons, it will "
			"choose a random\nweapon to drop before adding the new weapon." <<
	     endl;
	cout << "With this satchel, you will need to keep track of its contents so"
			" that you have\n4 unique weapons to be able to commit the murder."
	<< endl;
	cout << "\n- The Gold Satchel will provide you with the lowest chance of "
			"success." << endl;
	cout << "It has a capacity of 4 weapons, and allows repeated weapons." <<
	     endl;
	cout << "Once you reach capacity and attempt to add more weapons, it will "
			"drop the first\nweapon in it (in a First In First Out format)." <<
	     endl;
	cout << "You will need to keep track of its contents and which rooms "
	     << "contain which\nweapons in order to succeed with the Gold Satchel."
			<< endl;
	cout << "\n\tSATCHEL MENU" << endl;
	cout << "1. Bronze Satchel" << endl;
	cout << "2. Silver Satchel" << endl;
	cout << "3. Gold Satchel" << endl;
	cout << "Make your choice: ";

	int satchelChoice = intValidation(1,3);

	// Construct the appropriate satchel based off the user's choice.
	switch (satchelChoice) {
		case 1: {
			satchel = new BasicSatchel;
			cout << "\nYou have selected the Bronze Satchel." << endl;
			cout << "We hope that next time, you will challenge yourself further."
			  << endl;
			break;
		}
		case 2: {
			satchel = new VectorSatchel;
			cout << "\nYou have selected the Silver Satchel." << endl;
			cout << "A safe choice. We will be watching you closely to assess "
			  "your talent." << endl;
			break;
		}
		case 3: {
			satchel = new QueueSatchel;
			cout << "\nYou have selected the Gold Satchel." << endl;
			cout << "You have demonstrated your ambition. Should you succeed, you "
			  "will be rewarded\nbeyond your wildest dreams." << endl;
		}
		default:
			break;
	}

	cout << "\nPress enter to take your satchel and begin your mission."	<< endl;
	getchar();
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0xc763(%rip), %r14      # 0x10fd0
leaq 0x522a(%rip), %rsi      # 0x9a9e
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x66f1(%rip), %rsi      # 0xaf7c
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x66fd(%rip), %rsi      # 0xaf9f
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6772(%rip), %rsi      # 0xb02b
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x67a6(%rip), %rsi      # 0xb076
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x67e0(%rip), %rsi      # 0xb0c7
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6838(%rip), %rsi      # 0xb136
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x686b(%rip), %rsi      # 0xb180
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6874(%rip), %rsi      # 0xb1a0
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6895(%rip), %rsi      # 0xb1d8
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x68fc(%rip), %rsi      # 0xb256
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6967(%rip), %rsi      # 0xb2d8
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6998(%rip), %rsi      # 0xb320
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x69be(%rip), %rsi      # 0xb35d
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6a26(%rip), %rsi      # 0xb3dc
movq %r14, %rdi
callq 0x21a0
leaq 0x6a54(%rip), %rsi      # 0xb419
movq %rax, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6a7e(%rip), %rsi      # 0xb45a
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6a76(%rip), %rsi      # 0xb469
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6a71(%rip), %rsi      # 0xb47b
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6a6c(%rip), %rsi      # 0xb48d
movq %r14, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
leaq 0x6ed6(%rip), %rsi      # 0xb90e
movq %r14, %rdi
callq 0x21a0
pushq $0x1
popq %rsi
pushq $0x3
popq %rdx
callq 0x506a
cmpl $0x3, %eax
je 0x4aa4
cmpl $0x2, %eax
je 0x4a81
cmpl $0x1, %eax
jne 0x4af3
pushq $0x18
popq %rdi
callq 0x21b0
movq %rax, %r14
movq %rax, %rdi
callq 0x2630
leaq 0x6a4c(%rip), %r15      # 0xb4c4
leaq 0x6a1e(%rip), %rsi      # 0xb49d
jmp 0x4ac5
pushq $0x30
popq %rdi
callq 0x21b0
movq %rax, %r14
movq %rax, %rdi
callq 0x7ac8
leaq 0x6a8d(%rip), %r15      # 0xb528
leaq 0x6a5f(%rip), %rsi      # 0xb501
jmp 0x4ac5
pushq $0x68
popq %rdi
callq 0x21b0
movq %rax, %r14
movq %rax, %rdi
callq 0x601c
leaq 0x6ad5(%rip), %r15      # 0xb593
leaq 0x6aa9(%rip), %rsi      # 0xb56e
movq %r14, 0x8(%rbx)
movq 0xc500(%rip), %rbx      # 0x10fd0
movq %rbx, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
movq 0xc4d6(%rip), %rdi      # 0x10fd0
leaq 0x6afc(%rip), %rsi      # 0xb5fd
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
popq %rbx
popq %r14
popq %r15
jmp 0x2220
movq %rax, %rbx
pushq $0x18
jmp 0x4b2b
movq %rax, %rbx
pushq $0x68
jmp 0x4b2b
movq %rax, %rbx
pushq $0x30
popq %rsi
movq %r14, %rdi
callq 0x21c0
movq %rbx, %rdi
callq 0x2290