// File: /workspace/github_cpp_makefile_star2_O1/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
movb $0x1, %r13b
leaq 0x1c45(%rip), %r14      # 0x533e
movq 0x48d0(%rip), %r15      # 0x7fd0
movq 0x48d9(%rip), %rbp      # 0x7fe0
movq %r14, %rdi
callq 0x20b0
movl $0x12, %edx
movq %r15, %rdi
leaq 0x1a85(%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 0x1a33(%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 0x1a0f(%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 0x19ee(%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 0x1951(%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 0x339a
movl %eax, 0x14(%rsp)
cmpl $0x3, %eax
je 0x3f3a
cmpl $0x2, %eax
je 0x3bd8
cmpl $0x1, %eax
jne 0x3f3d
movl %r13d, 0x10(%rsp)
movb $0x1, %r13b
movq %r14, %rdi
callq 0x20b0
movl $0x1c, %edx
movq %r15, %rdi
leaq 0x1965(%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 0x191d(%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 0x18e8(%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 0x18b3(%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 0x1880(%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
leaq 0x1812(%rip), %rsi      # 0x5275
callq 0x2120
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x2080
movl 0xc(%rsp), %esi
movl $0x1, %edx
movl $0x4, %ecx
callq 0x339a
movl %eax, 0xc(%rsp)
movl $0x0, 0x8(%rsp)
decl %eax
cmpl $0x3, %eax
ja 0x3bc9
leaq 0x15ca(%rip), %rcx      # 0x5070
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 0x179c(%rip), %rsi      # 0x5281
callq 0x2120
movq %rbp, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2080
movl 0x8(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339a
movl %eax, 0x50(%rbx)
jmp 0x3bc9
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 0x1772(%rip), %rsi      # 0x52b6
callq 0x2120
movq %rbp, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2080
movl 0x8(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339a
movl %eax, 0x58(%rbx)
jmp 0x3bc9
xorl %r13d, %r13d
jmp 0x3bc9
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 0x16f6(%rip), %rsi      # 0x529b
callq 0x2120
movq %rbp, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2080
movl 0x8(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339a
movl %eax, 0x54(%rbx)
testb $0x1, %r13b
jne 0x3880
jmp 0x3f33
movl %r13d, 0x10(%rsp)
movb $0x1, %r13b
movq %r14, %rdi
callq 0x20b0
movl $0x1f, %edx
movq %r15, %rdi
leaq 0x16dc(%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 0x15bd(%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 0x1588(%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 0x1553(%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 0x1520(%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
leaq 0x14b2(%rip), %rsi      # 0x5275
callq 0x2120
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x2080
movl 0xc(%rsp), %esi
movl $0x1, %edx
movl $0x4, %ecx
callq 0x339a
movl %eax, 0xc(%rsp)
movl $0x0, 0x8(%rsp)
decl %eax
cmpl $0x3, %eax
ja 0x3f29
leaq 0x125a(%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 0x143c(%rip), %rsi      # 0x5281
callq 0x2120
movq %rbp, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2080
movl 0x8(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339a
movl %eax, 0x5c(%rbx)
jmp 0x3f29
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 0x1412(%rip), %rsi      # 0x52b6
callq 0x2120
movq %rbp, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2080
movl 0x8(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339a
movl %eax, 0x64(%rbx)
jmp 0x3f29
xorl %r13d, %r13d
jmp 0x3f29
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 0x1396(%rip), %rsi      # 0x529b
callq 0x2120
movq %rbp, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2080
movl 0x8(%rsp), %esi
movl 0x48(%rbx), %ecx
movl 0x4c(%rbx), %edx
callq 0x339a
movl %eax, 0x60(%rbx)
testb $0x1, %r13b
jne 0x3be0
movl 0x10(%rsp), %r13d
jmp 0x3f3d
xorl %r13d, %r13d
testb $0x1, %r13b
jne 0x3707
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq