// File: /workspace/github_cpp_makefile_star2_O1/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, %r14
movq 0xea1b(%rip), %rbx      # 0x14fd0
leaq 0x7556(%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 0x89f9(%rip), %rsi      # 0xeff0
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 0x89e1(%rip), %rsi      # 0xf013
movl $0x8b, %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 0x8a32(%rip), %rsi      # 0xf09f
movl $0x4a, %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 0x8a42(%rip), %rsi      # 0xf0ea
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 0x8a58(%rip), %rsi      # 0xf13b
movl $0x6e, %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 0x8a8c(%rip), %rsi      # 0xf1aa
movl $0x49, %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 0x8a9b(%rip), %rsi      # 0xf1f4
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 0x8a80(%rip), %rsi      # 0xf214
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 0x8a7d(%rip), %rsi      # 0xf24c
movl $0x7d, %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 0x8ac0(%rip), %rsi      # 0xf2ca
movl $0x81, %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 0x8b07(%rip), %rsi      # 0xf34c
movl $0x47, %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 0x8b14(%rip), %rsi      # 0xf394
movl $0x3c, %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 0x8b16(%rip), %rsi      # 0xf3d1
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 0x8b5a(%rip), %rsi      # 0xf450
movl $0x3c, %edx
movq %rbx, %rdi
callq 0x21c0
leaq 0x8b83(%rip), %rsi      # 0xf48d
movl $0x40, %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 0x8b89(%rip), %rsi      # 0xf4ce
movl $0xe, %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 0x8b5d(%rip), %rsi      # 0xf4dd
movl $0x11, %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 0x8b34(%rip), %rsi      # 0xf4ef
movl $0x11, %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 0x8b0b(%rip), %rsi      # 0xf501
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 0x8f51(%rip), %rsi      # 0xf982
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21c0
movl $0x1, %esi
movl $0x3, %edx
callq 0x754c
cmpl $0x3, %eax
je 0x6b2b
cmpl $0x2, %eax
je 0x6ac9
cmpl $0x1, %eax
jne 0x6bba
movl $0x18, %edi
callq 0x2190
movq %rax, %r15
movq %rax, %rdi
callq 0x2670
movq %r15, 0x8(%r14)
leaq 0x8a8d(%rip), %rsi      # 0xf511
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 0x8a79(%rip), %rsi      # 0xf538
movl $0x3c, %edx
jmp 0x6b8b
movl $0x30, %edi
callq 0x2190
movq %rax, %r15
movq %rax, %rdi
callq 0xae70
movq %r15, 0x8(%r14)
leaq 0x8a8c(%rip), %rsi      # 0xf575
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 0x8a78(%rip), %rsi      # 0xf59c
movl $0x45, %edx
jmp 0x6b8b
movl $0x68, %edi
callq 0x2190
movq %rax, %r15
movq %rax, %rdi
callq 0x8d10
movq %r15, 0x8(%r14)
leaq 0x8a97(%rip), %rsi      # 0xf5e2
movl $0x24, %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 0x8a81(%rip), %rsi      # 0xf607
movl $0x69, %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 0x8ab0(%rip), %rsi      # 0xf671
movl $0x39, %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
popq %rbx
popq %r14
popq %r15
jmp 0x21f0
movq %rax, %rbx
movl $0x18, %esi
jmp 0x6c1b
movq %rax, %rbx
movl $0x68, %esi
jmp 0x6c1b
movq %rax, %rbx
movl $0x30, %esi
movq %r15, %rdi
callq 0x21a0
movq %rbx, %rdi
callq 0x2270
nop