// File: gilecheverria[P]UP_Battle_Project/Game.cpp
// Function: Game::gameMenu()
void Game::gameMenu()
{
    std::string option = "a";

    while (option != "q")
    {
        std::cout << "\n<<< Main Game Menu >>>\n";
        std::cout << "\tv. View the arrays of heros and monsters\n";
        std::cout << "\tah. Add a new Hero\n";
        std::cout << "\tam. Add a new Monster\n";
        std::cout << "\tph. Create a party of heros\n";
        std::cout << "\tpm. Create a party of monsters\n";
        std::cout << "\tb. Battle with the existing parties\n";
        std::cout << "\tq. Quit the program\n";
        std::cout << "Select an option: ";
        std::cin >> option;

        if (option == "v")
        {
            printHeroArray();
            printMonsterArray();
        }
        else if (option == "ah")
        {
            createHero();
        }
        else if (option == "am")
        {
            createMonster();
        }
        else if (option == "ph")
        {
            createHeroParty();
        }
        else if (option == "pm")
        {
            createMonsterParty();
        }
        else if (option == "b")
        {
            the_battle->battleLoop();
        }
        else if (option == "q")
        {
            std::cout << "Thanks for playing! See you next time ..." << std::endl;
        }
        else
        {
            std::cout << "Incorrect option. Try again ..." << std::endl;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x2330
movq -0x48(%rbp), %rdx
leaq 0x146e(%rip), %rsi      # 0x64da
leaq -0x28(%rbp), %rdi
callq 0x34b0
jmp 0x5077
leaq -0x29(%rbp), %rdi
callq 0x2210
leaq 0x1455(%rip), %rsi      # 0x64dc
leaq -0x28(%rbp), %rdi
callq 0x5930
movb %al, -0x51(%rbp)
jmp 0x5095
movb -0x51(%rbp), %al
testb $0x1, %al
jne 0x50a1
jmp 0x5350
movq 0x3f20(%rip), %rdi      # 0x8fc8
leaq 0x142f(%rip), %rsi      # 0x64de
callq 0x21b0
jmp 0x50b6
movq 0x3f0b(%rip), %rdi      # 0x8fc8
leaq 0x1433(%rip), %rsi      # 0x64f7
callq 0x21b0
jmp 0x50cb
movq 0x3ef6(%rip), %rdi      # 0x8fc8
leaq 0x1449(%rip), %rsi      # 0x6522
callq 0x21b0
jmp 0x50e0
movq 0x3ee1(%rip), %rdi      # 0x8fc8
leaq 0x1449(%rip), %rsi      # 0x6537
callq 0x21b0
jmp 0x50f5
movq 0x3ecc(%rip), %rdi      # 0x8fc8
leaq 0x144c(%rip), %rsi      # 0x654f
callq 0x21b0
jmp 0x510a
movq 0x3eb7(%rip), %rdi      # 0x8fc8
leaq 0x1455(%rip), %rsi      # 0x656d
callq 0x21b0
jmp 0x511f
movq 0x3ea2(%rip), %rdi      # 0x8fc8
leaq 0x1461(%rip), %rsi      # 0x658e
callq 0x21b0
jmp 0x5134
movq 0x3e8d(%rip), %rdi      # 0x8fc8
leaq 0x1472(%rip), %rsi      # 0x65b4
callq 0x21b0
jmp 0x5149
movq 0x3e78(%rip), %rdi      # 0x8fc8
leaq 0x1473(%rip), %rsi      # 0x65ca
callq 0x21b0
jmp 0x515e
movq 0x3e73(%rip), %rdi      # 0x8fd8
leaq -0x28(%rbp), %rsi
callq 0x2280
jmp 0x5170
leaq 0x1466(%rip), %rsi      # 0x65dd
leaq -0x28(%rbp), %rdi
callq 0x5960
movb %al, -0x52(%rbp)
jmp 0x5185
movb -0x52(%rbp), %al
testb $0x1, %al
jne 0x518e
jmp 0x51dd
movq -0x50(%rbp), %rdi
callq 0x5370
jmp 0x5199
movq -0x50(%rbp), %rdi
callq 0x5400
jmp 0x51a4
jmp 0x534b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x2210
jmp 0x535f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x2100
jmp 0x535f
leaq 0x13fb(%rip), %rsi      # 0x65df
leaq -0x28(%rbp), %rdi
callq 0x5960
movb %al, -0x53(%rbp)
jmp 0x51f2
movb -0x53(%rbp), %al
testb $0x1, %al
jne 0x51fb
jmp 0x520b
movq -0x50(%rbp), %rdi
callq 0x54a0
jmp 0x5206
jmp 0x5349
leaq 0x13d0(%rip), %rsi      # 0x65e2
leaq -0x28(%rbp), %rdi
callq 0x5960
movb %al, -0x54(%rbp)
jmp 0x5220
movb -0x54(%rbp), %al
testb $0x1, %al
jne 0x5229
jmp 0x5239
movq -0x50(%rbp), %rdi
callq 0x5550
jmp 0x5234
jmp 0x5347
leaq 0x13a5(%rip), %rsi      # 0x65e5
leaq -0x28(%rbp), %rdi
callq 0x5960
movb %al, -0x55(%rbp)
jmp 0x524e
movb -0x55(%rbp), %al
testb $0x1, %al
jne 0x5257
jmp 0x5267
movq -0x50(%rbp), %rdi
callq 0x5600
jmp 0x5262
jmp 0x5345
leaq 0x137a(%rip), %rsi      # 0x65e8
leaq -0x28(%rbp), %rdi
callq 0x5960
movb %al, -0x56(%rbp)
jmp 0x527c
movb -0x56(%rbp), %al
testb $0x1, %al
jne 0x5285
jmp 0x5295
movq -0x50(%rbp), %rdi
callq 0x5680
jmp 0x5290
jmp 0x5343
leaq 0x141d(%rip), %rsi      # 0x66b9
leaq -0x28(%rbp), %rdi
callq 0x5960
movb %al, -0x57(%rbp)
jmp 0x52aa
movb -0x57(%rbp), %al
testb $0x1, %al
jne 0x52b3
jmp 0x52c7
movq -0x50(%rbp), %rax
movq 0x2d0(%rax), %rdi
callq 0x4320
jmp 0x52c5
jmp 0x5341
leaq 0x120e(%rip), %rsi      # 0x64dc
leaq -0x28(%rbp), %rdi
callq 0x5960
movb %al, -0x58(%rbp)
jmp 0x52dc
movb -0x58(%rbp), %al
testb $0x1, %al
jne 0x52e5
jmp 0x5312
movq 0x3cdc(%rip), %rdi      # 0x8fc8
leaq 0x12f8(%rip), %rsi      # 0x65eb
callq 0x21b0
movq %rax, -0x60(%rbp)
jmp 0x52fe
movq -0x60(%rbp), %rdi
movq 0x3ca7(%rip), %rsi      # 0x8fb0
callq 0x21f0
jmp 0x5310
jmp 0x533f
movq 0x3caf(%rip), %rdi      # 0x8fc8
leaq 0x12f5(%rip), %rsi      # 0x6615
callq 0x21b0
movq %rax, -0x68(%rbp)
jmp 0x532b
movq -0x68(%rbp), %rdi
movq 0x3c7a(%rip), %rsi      # 0x8fb0
callq 0x21f0
jmp 0x533d
jmp 0x533f
jmp 0x5341
jmp 0x5343
jmp 0x5345
jmp 0x5347
jmp 0x5349
jmp 0x534b
jmp 0x5080
leaq -0x28(%rbp), %rdi
callq 0x2100
addq $0x70, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x2320
nopl (%rax,%rax)