// File: /workspace/github_cpp_makefile_star2_O3/JacobLCarter[P]2D-Portal/game.cpp
// Function: Game::executeUserInput(char)
void Game::executeUserInput(char userInput)
{
    //switch based on the user's chosen control input
    switch(userInput)
    {
        //move up
        case 'w': makeMove(userInput);
                  break;
        //move down 
        case 's': makeMove(userInput);
                  break;
        //move left 
        case 'a': makeMove(userInput);
                  break;
        //move right 
        case 'd': makeMove(userInput);
                  break;
        //move through Portal 
        case 'e': moveThroughPortal();
                  break;
        //show contents of player's backpack
        case 'b': testSubject->displayBackpackContents();
                  break;
        //show map legend 
        case 'm': std::cout << map->getMapLegend() << std::endl;
                  break;
        //show number of turns left 
        case 't': std::cout << "You have " << turnCounter 
                            << " turns before immolation." << std::endl;
                  break;
        //show help menu 
        case 'h': std::cout << displayHelpMenu();
                  break;
        //quit game 
        case 'x': endGame(EXITED);
                  break;
    }
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
addl $-0x61, %esi
cmpl $0x17, %esi
ja 0x3784
movq %rdi, %rbx
leaq 0x39c7(%rip), %rax      # 0x7004
movslq (%rax,%rsi,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq %rbx, %rdi
movl $0x61, %esi
jmp 0x37a8
movq %rbx, %rdi
movl $0x64, %esi
jmp 0x37a8
movq 0x18(%rbx), %rsi
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x4d82
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq 0x9951(%rip), %rdi      # 0xcfd0
callq 0x2180
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2140
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20e0
jmp 0x3769
movq 0x8(%rbx), %rdi
addq $0x28, %rsp
popq %rbx
popq %r14
jmp 0x43e2
movq %rbx, %rdi
movl $0x73, %esi
jmp 0x37a8
movq 0x98f9(%rip), %r14      # 0xcfd0
leaq 0x4d5f(%rip), %rsi      # 0x843d
movl $0x9, %edx
movq %r14, %rdi
callq 0x2180
movl (%rbx), %esi
movq %r14, %rdi
callq 0x2230
movq %rax, %rbx
leaq 0x4d48(%rip), %rsi      # 0x8447
movl $0x19, %edx
movq %rax, %rdi
callq 0x2180
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2140
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %r14
jmp 0x20e0
movq %rbx, %rdi
addq $0x28, %rsp
popq %rbx
popq %r14
jmp 0x33a4
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x2fde
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq 0x986c(%rip), %rdi      # 0xcfd0
callq 0x2180
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3784
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2160
addq $0x28, %rsp
popq %rbx
popq %r14
retq
movq %rbx, %rdi
movl $0x3, %esi
addq $0x28, %rsp
popq %rbx
popq %r14
jmp 0x37dc
movq %rbx, %rdi
movl $0x77, %esi
addq $0x28, %rsp
popq %rbx
popq %r14
jmp 0x30a0
jmp 0x37b6
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37d4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2160
movq %rbx, %rdi
callq 0x2240