// File: /workspace/github_cpp_makefile_star2_O3/LifeAlgorithm[P]RockPaperScissors/RPSGame.cpp
// Function: RPSGame::toolSettingsMenu()
void RPSGame::toolSettingsMenu() {
	bool runToolSettings = true;
	int settingsInput;

	while (runToolSettings) {
		screenClear();
		cout << "Tool Settings Menu" << endl << endl;
		cout << "1) Human Tool Strength" << endl;
		cout << "2) Computer Tool Strength" << endl;
		cout << "3) Back to main menu" << endl;

		//cout << "X) Tempo - (" << getTempo() << " seconds)" << endl;     If we want to add tempo between rounds

		cout << "Enter option (1-3): ";
		cin >> settingsInput;
		settingsInput = validateBetween(settingsInput, 1, 3);

		switch (settingsInput) {
		case 1: //Human tool Strength
		{
			bool humanToolSettingsRun = true;
			int tempUserChoice;


			while (humanToolSettingsRun) {
				screenClear();
				cout << "Human tool strength settings" << endl << endl;
				cout << "1) Rock strength:  " << humanRockStrength << endl;
				cout << "2) Paper strength: " << humanPaperStrength << endl;
				cout << "3) Scissor strength: " << humanScissorStrength << endl;
				cout << "4) Back to Tool settings menu" << endl;
				cout << endl << endl << "Enter 1-4: ";
				cin >> tempUserChoice;
				tempUserChoice = validateBetween(tempUserChoice, 1, 4);
				int tempStrength = 0;

				switch (tempUserChoice) {
				case 1: // Set Human rock strength
				{
					cout << endl << "Enter new rock strength: ";
					cin >> tempStrength;
					humanRockStrength = validateBetween(tempStrength, minStrength, maxStrength);

					break;
				}
				case 2: // Set Human paper strength
				{
					cout << endl << "Enter new paper strength: ";
					cin >> tempStrength;
					humanPaperStrength = validateBetween(tempStrength, minStrength, maxStrength);

					break;
				}
				case 3: // Set Human scissor strength
				{
					cout << endl << "Enter new scissor strength: ";
					cin >> tempStrength;
					humanScissorStrength = validateBetween(tempStrength, minStrength, maxStrength);
					break;
				}
				case 4: {
					humanToolSettingsRun = false;
				}
				}
			}
			break;
		}

		case 2: //Computer tool Strength
		{
			bool computerToolSettingsRun = true;
			int tempUserChoice;


			while (computerToolSettingsRun) {
				screenClear();
				cout << "Computer tool strength settings" << endl << endl;
				cout << "1) Rock strength:  " << computerRockStrength << endl;
				cout << "2) Paper strength: " << computerPaperStrength << endl;
				cout << "3) Scissor strength: " << computerScissorStrength << endl;
				cout << "4) Back to Tool settings menu" << endl;
				cout << endl << endl << "Enter 1-4: ";
				cin >> tempUserChoice;
				tempUserChoice = validateBetween(tempUserChoice, 1, 4);
				int tempStrength = 0;
				switch (tempUserChoice) {
				case 1: // Set Computer rock strength
				{
					cout << endl << "Enter new rock strength: ";
					cin >> tempStrength;
					computerRockStrength = validateBetween(tempStrength, minStrength, maxStrength);
					break;
				}
				case 2: // Set Computer paper strength
				{
					cout << endl << "Enter new paper strength: ";
					cin >> tempStrength;
					computerPaperStrength = validateBetween(tempStrength, minStrength, maxStrength);
					break;
				}
				case 3: // Set Computer scissor strength
				{
					cout << endl << "Enter new scissor strength: ";
					cin >> tempStrength;
					computerScissorStrength = validateBetween(tempStrength, minStrength, maxStrength);
					break;
				}
				case 4: {
					computerToolSettingsRun = false;
				}
				}
			}
			break;
		}
		case 3: {
			runToolSettings = false;
		}
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq 0x48da(%rip), %r15      # 0x7fd0
movq 0x48e3(%rip), %rbp      # 0x7fe0
leaq 0x1b71(%rip), %r13      # 0x5275
leaq 0x10(%rsp), %r14
leaq 0x1c2e(%rip), %rdi      # 0x533e
callq 0x20b0
movl $0x12, %edx
movq %r15, %rdi
leaq 0x1a7f(%rip), %rsi      # 0x51a3
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x16, %edx
movq %r15, %rdi
leaq 0x1a2d(%rip), %rsi      # 0x51b6
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x19, %edx
movq %r15, %rdi
leaq 0x1a09(%rip), %rsi      # 0x51cd
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x14, %edx
movq %r15, %rdi
leaq 0x19e8(%rip), %rsi      # 0x51e7
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x14, %edx
movq %r15, %rdi
leaq 0x194b(%rip), %rsi      # 0x5185
callq 0x2120
movq %rbp, %rdi
leaq 0x14(%rsp), %rsi
callq 0x2080
movl 0x14(%rsp), %esi
movl $0x1, %edx
movl $0x3, %ecx
callq 0x339c
movl %eax, 0x14(%rsp)
cmpl $0x1, %eax
je 0x3cda
cmpl $0x2, %eax
je 0x3998
cmpl $0x3, %eax
jne 0x3709
jmp 0x3f07
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x19, %edx
movq %rax, %rdi
leaq 0x19c8(%rip), %rsi      # 0x5281
callq 0x2120
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x2080
movl 0xc(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339c
movl %eax, 0x5c(%rbx)
jmp 0x3998
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x1c, %edx
movq %rax, %rdi
leaq 0x199e(%rip), %rsi      # 0x52b6
callq 0x2120
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x2080
movl 0xc(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339c
movl %eax, 0x64(%rbx)
jmp 0x3998
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x1927(%rip), %rsi      # 0x529b
callq 0x2120
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x2080
movl 0xc(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339c
movl %eax, 0x60(%rbx)
leaq 0x199f(%rip), %rdi      # 0x533e
callq 0x20b0
movl $0x1f, %edx
movq %r15, %rdi
leaq 0x1920(%rip), %rsi      # 0x52d3
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x13, %edx
movq %r15, %rdi
leaq 0x1801(%rip), %rsi      # 0x5219
callq 0x2120
movl 0x5c(%rbx), %esi
movq %r15, %rdi
callq 0x2170
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x13, %edx
movq %r15, %rdi
leaq 0x17cc(%rip), %rsi      # 0x522d
callq 0x2120
movl 0x60(%rbx), %esi
movq %r15, %rdi
callq 0x2170
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x15, %edx
movq %r15, %rdi
leaq 0x1797(%rip), %rsi      # 0x5241
callq 0x2120
movl 0x64(%rbx), %esi
movq %r15, %rdi
callq 0x2170
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x1d, %edx
movq %r15, %rdi
leaq 0x1764(%rip), %rsi      # 0x5257
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0xb, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2120
movq %rbp, %rdi
movq %r14, %rsi
callq 0x2080
movl 0x10(%rsp), %esi
movl $0x1, %edx
movl $0x4, %ecx
callq 0x339c
movl %eax, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
decl %eax
cmpl $0x3, %eax
ja 0x3998
leaq 0x14a4(%rip), %rcx      # 0x5060
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x19, %edx
movq %rax, %rdi
leaq 0x1686(%rip), %rsi      # 0x5281
callq 0x2120
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x2080
movl 0xc(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339c
movl %eax, 0x50(%rbx)
jmp 0x3cda
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x1c, %edx
movq %rax, %rdi
leaq 0x165c(%rip), %rsi      # 0x52b6
callq 0x2120
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x2080
movl 0xc(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339c
movl %eax, 0x58(%rbx)
jmp 0x3cda
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x15e5(%rip), %rsi      # 0x529b
callq 0x2120
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x2080
movl 0xc(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339c
movl %eax, 0x54(%rbx)
leaq 0x165d(%rip), %rdi      # 0x533e
callq 0x20b0
movl $0x1c, %edx
movq %r15, %rdi
leaq 0x1507(%rip), %rsi      # 0x51fc
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x13, %edx
movq %r15, %rdi
leaq 0x14bf(%rip), %rsi      # 0x5219
callq 0x2120
movl 0x50(%rbx), %esi
movq %r15, %rdi
callq 0x2170
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x13, %edx
movq %r15, %rdi
leaq 0x148a(%rip), %rsi      # 0x522d
callq 0x2120
movl 0x54(%rbx), %esi
movq %r15, %rdi
callq 0x2170
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x15, %edx
movq %r15, %rdi
leaq 0x1455(%rip), %rsi      # 0x5241
callq 0x2120
movl 0x58(%rbx), %esi
movq %r15, %rdi
callq 0x2170
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0x1d, %edx
movq %r15, %rdi
leaq 0x1422(%rip), %rsi      # 0x5257
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movl $0xb, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2120
movq %rbp, %rdi
movq %r14, %rsi
callq 0x2080
movl 0x10(%rsp), %esi
movl $0x1, %edx
movl $0x4, %ecx
callq 0x339c
movl %eax, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
decl %eax
cmpl $0x3, %eax
ja 0x3cda
leaq 0x1172(%rip), %rcx      # 0x5070
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq