LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/characters/players/mage/Mage.cpp
// Function: Mage::Mage()
Mage::Mage() :Player(e_player_mage,    //ID
                     "Mage",           //NAME
                     100,              //HP
                     5,                //STRENGTH
                     10,               //AGILITY
                     15)               //INTELLIGENCE
{
    skills[0] = e_move_attack;
    skills[1] = e_move_heal;
    skills[2] = e_move_firebolt;
    skills[3] = e_move_frost_nova;
    uses = {10, 10, 10 ,10};
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
leaq 0x604d(%rip), %rsi      # 0xa250
leaq 0x18(%rsp), %r14
leaq 0x17(%rsp), %rdx
movq %r14, %rdi
callq 0x39ea
movl $0xf, (%rsp)
pushq $0x3
popq %rsi
pushq $0x64
popq %rcx
pushq $0x5
popq %r8
pushq $0xa
popq %r9
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3dec
leaq 0x18(%rsp), %rdi
callq 0x3090
leaq 0xd5fa(%rip), %rax      # 0x11840
movq %rax, (%rbx)
movaps 0x5fc0(%rip), %xmm0     # 0xa210
movups %xmm0, 0x1c(%rbx)
movaps 0x5df5(%rip), %xmm0     # 0xa050
movups %xmm0, 0x2c(%rbx)
addq $0x38, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x3090
movq %rbx, %rdi
callq 0x3200
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/factory/Factory.cpp
// Function: Factory::createPlayer(int)
std::shared_ptr<Player> Factory::createPlayer(int type)
{
    switch(type)
    {
        case e_player_warrior:
            return std::make_shared<Warrior>();
        case e_player_rogue:
            return std::make_shared<Rogue>();
        case e_player_mage:
            return std::make_shared<Mage>();
        default:
            return nullptr;
    }
}

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
cmpl $0x3, %esi
je 0x4335
cmpl $0x2, %esi
je 0x432b
cmpl $0x1, %esi
jne 0x4359
movq %rsp, %rdi
callq 0x43c5
jmp 0x433d
movq %rsp, %rdi
callq 0x43e0
jmp 0x433d
movq %rsp, %rdi
callq 0x43fb
leaq 0x8(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movups %xmm0, (%rbx)
andq $0x0, -0x8(%rdi)
callq 0x4468
jmp 0x435f
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/factory/Factory.cpp
// Function: Factory::createEnemy(int)
std::shared_ptr<Enemy> Factory::createEnemy(int type)
{
    switch(type)
    {
        case e_enemy_orc:
            return std::make_shared<Orc>();
        case e_enemy_goblin:
            return std::make_shared<Goblin>();
        case e_enemy_warlock:
            return std::make_shared<Warlock>();
        default:
            return nullptr;
    }
}

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
cmpl $0x2, %esi
je 0x4392
cmpl $0x1, %esi
je 0x4388
testl %esi, %esi
jne 0x43b6
movq %rsp, %rdi
callq 0x4416
jmp 0x439a
movq %rsp, %rdi
callq 0x4431
jmp 0x439a
movq %rsp, %rdi
callq 0x444c
leaq 0x8(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movups %xmm0, (%rbx)
andq $0x0, -0x8(%rdi)
callq 0x4468
jmp 0x43bc
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/battle/Battle.cpp
// Function: Battle::levelupPlayer(std::shared_ptr<Player>&)
void Battle::levelupPlayer(std::shared_ptr<Player> &player)
{
    player->level++;
    player->level_points=+5;

    player->hitpoints+=5;
    player->max_hitpoints+=5;

    player->strength+=1;
    player->agility+=1;
    player->intelligence+=1;

    std::cout << "  !LEVEL UP!\n"
              << "  hitpoints "     << player->max_hitpoints << "\n"
              << "  strength "      << player->strength << "\n"
              << "  agility "       << player->agility << "\n"
              << "  intelligence "  << player->intelligence << "\n"
              << "  level points "  << player->level_points << "\n";
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rax
incl 0x88(%rax)
movl $0x5, 0x90(%rax)
movdqu 0x8(%rax), %xmm0
paddd 0x56f1(%rip), %xmm0     # 0xa4a0
movdqu %xmm0, 0x8(%rax)
incl 0x18(%rax)
movq 0xd212(%rip), %rdi      # 0x11fd0
leaq 0x56eb(%rip), %rsi      # 0xa4b0
callq 0x3130
leaq 0x56ed(%rip), %rsi      # 0xa4be
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rcx
movl 0xc(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
leaq 0x58a0(%rip), %r14      # 0xa68e
movq %rax, %rdi
movq %r14, %rsi
callq 0x3130
leaq 0x56cb(%rip), %rsi      # 0xa4cb
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rcx
movl 0x10(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x3130
leaq 0x56af(%rip), %rsi      # 0xa4d7
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rcx
movl 0x14(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x3130
leaq 0x5692(%rip), %rsi      # 0xa4e2
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rcx
movl 0x18(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x3130
leaq 0x567a(%rip), %rsi      # 0xa4f2
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rcx
movl 0x90(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3130
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/battle/Battle.cpp
// Function: Battle::endBattle(std::shared_ptr<Player>&, std::shared_ptr<Enemy>&)
void Battle::endBattle(std::shared_ptr<Player> &player,
                       std::shared_ptr<Enemy> &enemy)
{
    if (player->hitpoints >= 0)
    {
        player->win++;
        std::cout << "\n [ You win! ] \n"
                  << " Experience: +"
                  << enemy->get_exp << '\n'
                  << " Gold: +"
                  << enemy->gold
                  << "\n";
        player->gold += enemy->gold;
        player->experience += enemy->get_exp;
        if(player->experience >= player->level*100)
            levelupPlayer (player);
    }
    else
    {
        std::cout << "\n [ You lose! ] \n";
        player->lost++;
    }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rax
cmpl $0x0, 0x8(%rax)
js 0x4f63
movq %rsi, %r14
incl 0x94(%rax)
movq 0xd108(%rip), %rdi      # 0x11fd0
leaq 0x5633(%rip), %rsi      # 0xa502
callq 0x3130
leaq 0x5638(%rip), %rsi      # 0xa513
movq %rax, %rdi
callq 0x3130
movq (%r14), %rcx
movl 0x88(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x3170
leaq 0x561c(%rip), %rsi      # 0xa522
movq %rax, %rdi
callq 0x3130
movq (%r14), %rcx
movl 0x3c(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
leaq 0x576b(%rip), %rsi      # 0xa68e
movq %rax, %rdi
callq 0x3130
movq (%r14), %rax
movl 0x3c(%rax), %ecx
movq (%rbx), %rdx
addl %ecx, 0x3c(%rdx)
movl 0x8c(%rdx), %ecx
addl 0x88(%rax), %ecx
movl %ecx, 0x8c(%rdx)
imull $0x64, 0x88(%rdx), %eax
cmpl %eax, %ecx
jl 0x4f7f
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x4d88
movq 0xd066(%rip), %rdi      # 0x11fd0
leaq 0x55ba(%rip), %rsi      # 0xa52b
callq 0x3130
movq (%rbx), %rax
incl 0x98(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/battle/Battle.cpp
// Function: Battle::doBattle(std::shared_ptr<Player>&, std::shared_ptr<Enemy>&, std::vector<std::shared_ptr<Skill>, std::allocator<std::shared_ptr<Skill>>> const&)
void Battle::doBattle(std::shared_ptr<Player> &player,
                      std::shared_ptr<Enemy> &enemy,
                      const std::vector<std::shared_ptr<Skill>> &skills)
{
    if(player->hitpoints > 0)
    {
        int x;
        do
        {
            printBattle(player, enemy);
            printMoves(player, skills);
            std::cin >> x;
            if (x == 1 || x == 2 || x == 3 || x == 4)
            {
                if(player->uses[x-1] !=0)
                {
                    calculateDamage(player, enemy, x - 1, skills);
                    player->uses[x-1]--;
                }
                else
                    std::cout << player->name << " is exhausted\n";

                x = (std::rand () % 3)+1;

                if(enemy->uses[x-1] != 0)
                {
                    calculateDamage(enemy, player, x - 1, skills);
                    enemy->uses[x-1]--;
                }
                else
                    std::cout << enemy->name << " is exhausted\n";
            }
        } while(player->hitpoints > 0 && enemy->hitpoints > 0);
        endBattle (player,enemy);
    }
    else
        std::cout << player->name << " cant fight!\n";

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq (%rdi), %rsi
cmpl $0x0, 0x8(%rsi)
jle 0x50b6
movq %rdx, %r15
movq %rdi, %r14
movq 0xd030(%rip), %r12      # 0x11fe0
leaq 0x4(%rsp), %r13
pushq $0x3
popq %rbp
movq %r14, %rdi
movq %rbx, %rsi
callq 0x50e4
movq %r14, %rdi
movq %r15, %rsi
callq 0x51fc
movq %r12, %rdi
movq %r13, %rsi
callq 0x30b0
movl 0x4(%rsp), %edx
decl %edx
cmpl $0x3, %edx
ja 0x5086
movq (%r14), %rsi
movl %edx, %eax
cmpl $0x0, 0x2c(%rsi,%rax,4)
je 0x5010
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rcx
callq 0x53c0
movq (%r14), %rax
movslq 0x4(%rsp), %rcx
decl 0x28(%rax,%rcx,4)
jmp 0x502f
addq $0x40, %rsi
movq 0xcfb5(%rip), %rdi      # 0x11fd0
callq 0x3120
movq %rax, %rdi
leaq 0x5513(%rip), %rsi      # 0xa53d
callq 0x3130
callq 0x3040
cltd
idivl %ebp
leal 0x1(%rdx), %eax
movl %eax, 0x4(%rsp)
movq (%rbx), %rsi
movslq %edx, %rax
cmpl $0x0, 0x2c(%rsi,%rax,4)
je 0x5067
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rcx
callq 0x55ea
movq (%rbx), %rax
movslq 0x4(%rsp), %rcx
decl 0x28(%rax,%rcx,4)
jmp 0x5086
addq $0x40, %rsi
movq 0xcf5e(%rip), %rdi      # 0x11fd0
callq 0x3120
movq %rax, %rdi
leaq 0x54bc(%rip), %rsi      # 0xa53d
callq 0x3130
movq (%r14), %rax
cmpl $0x0, 0x8(%rax)
jle 0x509c
movq (%rbx), %rax
cmpl $0x0, 0x8(%rax)
jg 0x4fb8
movq %r14, %rdi
movq %rbx, %rsi
callq 0x4ea4
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
addq $0x40, %rsi
movq 0xcf0f(%rip), %rdi      # 0x11fd0
callq 0x3120
leaq 0x547f(%rip), %rsi      # 0xa54c
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3130
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/battle/Battle.cpp
// Function: Battle::printBattle(std::shared_ptr<Player> const&, std::shared_ptr<Enemy> const&)
void Battle::printBattle(const std::shared_ptr<Player> &player, const std::shared_ptr<Enemy> &enemy)
{
    std::cout << "------------------------------------" << '\n';
    std::cout << enemy->name << '\n';
    std::cout << enemy->hitpoints << "|" << enemy->max_hitpoints << '\n';
    enemy->printCharacter ();
    std::cout << '\n';
    std::cout << '\n';
    player->printCharacter ();
    std::cout << player->name << '\n';
    std::cout << player->hitpoints << "|" << player->max_hitpoints << '\n';
    std::cout << "-------------" << '\n';
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %r12
movq %rdi, %r14
movq 0xced7(%rip), %rbx      # 0x11fd0
leaq 0x545a(%rip), %rsi      # 0xa55a
movq %rbx, %rdi
callq 0x3130
pushq $0xa
popq %rbp
movq %rax, %rdi
movl %ebp, %esi
callq 0x3170
movq (%r12), %rsi
addq $0x40, %rsi
movq %rbx, %rdi
callq 0x3120
movq %rax, %rdi
movl %ebp, %esi
callq 0x3170
movq (%r12), %rax
movl 0x8(%rax), %esi
movq %rbx, %rdi
callq 0x31f0
leaq 0x50b4(%rip), %r15      # 0xa1f9
movq %rax, %rdi
movq %r15, %rsi
callq 0x3130
movq (%r12), %rcx
movl 0xc(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movl %ebp, %esi
callq 0x3170
movq (%r12), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq %rbx, %rdi
movl %ebp, %esi
callq 0x3170
movq %rbx, %rdi
movl %ebp, %esi
callq 0x3170
movq (%r14), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq (%r14), %rsi
addq $0x40, %rsi
movq %rbx, %rdi
callq 0x3120
movq %rax, %rdi
movl %ebp, %esi
callq 0x3170
movq (%r14), %rax
movl 0x8(%rax), %esi
movq %rbx, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r15, %rsi
callq 0x3130
movq (%r14), %rcx
movl 0xc(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movl %ebp, %esi
callq 0x3170
leaq 0x5390(%rip), %rsi      # 0xa571
movq %rbx, %rdi
callq 0x3130
movq %rax, %rdi
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x3170
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/battle/Battle.cpp
// Function: Battle::printMoves(std::shared_ptr<Player> const&, std::vector<std::shared_ptr<Skill>, std::allocator<std::shared_ptr<Skill>>> const&)
void Battle::printMoves(const std::shared_ptr<Player> &player, const std::vector<std::shared_ptr<Skill>> &skills)
{
    int n = 4;
    for(int i = 0; i < n; i++)
    {
        std::cout << "[" <<i+1<<"]: ("
                  << std::setw(2)
                  << player->uses[i]
                  << "/10) ";
        for(int j = 0; j < skills.size (); j++)
        {
            if (player->skills[ i ] == skills[ j ]->id)
            {
                std::cout << skills[ j ]->name << " ";
                if (! skills[ j ]->target)
                {
                    std::cout << "enemy (-";
                    std::cout << skills[j]->damage << "hp)\n";
                }
                else
                {
                    std::cout << "yourself (+";
                    std::cout << skills[j]->damage << "hp)\n";
                }
            }
        }
    }
    std::cout << "\n[>]: ";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
xorl %ebp, %ebp
movq 0xcdba(%rip), %r15      # 0x11fd0
cmpq $0x4, %rbp
je 0x531a
movq %r15, %rdi
leaq 0x5771(%rip), %rsi      # 0xa99b
callq 0x3130
leaq 0x1(%rbp), %rsi
movq %rax, %rdi
movq %rsi, (%rsp)
callq 0x31f0
movq %rax, %rdi
leaq 0x5336(%rip), %rsi      # 0xa57f
callq 0x3130
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movq $0x2, 0x10(%rax,%rcx)
movq (%r14), %rcx
movl 0x2c(%rcx,%rbp,4), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
leaq 0x530d(%rip), %rsi      # 0xa584
callq 0x3130
xorl %r12d, %r12d
xorl %r13d, %r13d
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
cmpq %r13, %rcx
jbe 0x5311
movq (%r14), %rcx
movl 0x1c(%rcx,%rbp,4), %ecx
movq (%rax,%r12), %rsi
cmpl (%rsi), %ecx
jne 0x5305
addq $0x8, %rsi
movq %r15, %rdi
callq 0x3120
movq %rax, %rdi
leaq 0x5313(%rip), %rsi      # 0xa5cd
callq 0x3130
movq (%rbx), %rax
movq (%rax,%r12), %rax
cmpb $0x0, 0x2c(%rax)
leaq 0x52b9(%rip), %rsi      # 0xa58a
leaq 0x52c0(%rip), %rax      # 0xa598
cmovneq %rax, %rsi
movq %r15, %rdi
callq 0x3130
movq (%rbx), %rax
movq (%rax,%r12), %rax
movl 0x28(%rax), %esi
movq %r15, %rdi
callq 0x31f0
movq %rax, %rdi
leaq 0x5293(%rip), %rsi      # 0xa593
callq 0x3130
incq %r13
addq $0x10, %r12
jmp 0x5282
movq (%rsp), %rbp
jmp 0x5216
movq 0xccaf(%rip), %rdi      # 0x11fd0
leaq 0x527c(%rip), %rsi      # 0xa5a4
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3130
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/battle/Battle.cpp
// Function: int Battle::characterDamage<Player>(std::shared_ptr<Player> const&, int)
int Battle::characterDamage(const std::shared_ptr<T1> &user, int type)
{
    switch(type)
    {
        case e_type_str:
            return user->strength;
        case e_type_agi:
            return user->agility;
        case e_type_int:
            return user->intelligence;
        default:
            return 0;
    }
}

// Assembly:
cmpl $0x2, %esi
je 0x5832
cmpl $0x1, %esi
je 0x582b
xorl %eax, %eax
testl %esi, %esi
jne 0x5838
movq (%rdi), %rax
movl 0x10(%rax), %eax
retq
movq (%rdi), %rax
movl 0x14(%rax), %eax
retq
movq (%rdi), %rax
movl 0x18(%rax), %eax
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/create/Create.cpp
// Function: Create::createPlayer(std::vector<std::shared_ptr<Player>, std::allocator<std::shared_ptr<Player>>>&, int&)
std::vector<std::shared_ptr<Player>> Create::createPlayer(std::vector<std::shared_ptr<Player>> &players, int &status)
{
    if (players.size () < 5)
    {
        if( status ==1 || status ==2 || status ==3)
        {
            players.push_back (Factory::getInstance().createPlayer(status));
            return players;
        }
        else
            return players;
    }
    else
    {
        std::cout << "Characters limit" << "\n";
        return players;
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdx, %r14
movq %rdi, %rbx
movq 0x8(%rdx), %rax
subq (%rdx), %rax
cmpq $0x40, %rax
ja 0x5aae
movq %rcx, %r15
movl (%rcx), %eax
decl %eax
cmpl $0x2, %eax
ja 0x5ad0
callq 0x42d4
movl (%r15), %esi
movq %rsp, %r15
movq %r15, %rdi
callq 0x430a
movq %r14, %rdi
movq %r15, %rsi
callq 0x5b52
leaq 0x8(%rsp), %rdi
callq 0x4468
jmp 0x5ad0
movq 0xc51b(%rip), %rdi      # 0x11fd0
leaq 0x4b2d(%rip), %rsi      # 0xa5e9
callq 0x3130
leaq 0x4bc6(%rip), %rsi      # 0xa68e
movq %rax, %rdi
callq 0x3130
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5afe
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4468
movq %rbx, %rdi
callq 0x3200
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/shop/Shop.cpp
// Function: Shop::print(int&, int, int&)
void Shop::print(int &gold, const int cost, int &recover)
{
    std::cout << "---\n"
              << name << " " << gold << "\n"
              << "---\n"
              << "[1] (" << std::setw(3) << cost << " gp)" << this->map_Choices[1] << "\n";
    for(int i = 2; i != this->map_Choices.size (); i++)
    {
        if(i == e_shop_recover)
            std::cout << "[" << i << "] (" << std::setw(3) << recover << " gp)" << this->map_Choices[i] << "\n";
        else
        std::cout << "[" << i << "] " << this->map_Choices[i] << '\n';
    }
    std::cout << "---\n" << "[0] " << this->map_Choices[0] << '\n';
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rcx, %r14
movl %edx, %ebp
movq %rsi, %r13
movq %rdi, %rbx
movq 0xb91e(%rip), %r15      # 0x11fd0
leaq 0x3fcf(%rip), %r12      # 0xa688
movq %r15, %rdi
movq %r12, %rsi
callq 0x3130
leaq 0x30(%rbx), %rsi
movq %rax, %rdi
callq 0x3120
leaq 0x3ef6(%rip), %rsi      # 0xa5cd
movq %rax, %rdi
callq 0x3130
movl (%r13), %esi
movq %rax, %rdi
callq 0x31f0
leaq 0x3f9c(%rip), %r13      # 0xa68e
movq %rax, %rdi
movq %r13, %rsi
callq 0x3130
movq %rax, %rdi
movq %r12, %rsi
callq 0x3130
leaq 0x40a9(%rip), %rsi      # 0xa7b8
movq %rax, %rdi
callq 0x3130
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movq $0x3, 0x10(%rax,%rcx)
movq %rax, %rdi
movl %ebp, %esi
callq 0x31f0
leaq 0x4086(%rip), %rsi      # 0xa7be
movq %rax, %rdi
callq 0x3130
movq %rax, %r12
leaq 0x14(%rsp), %rsi
movl $0x1, (%rsi)
movq %rbx, %rdi
callq 0x60ea
movq %r12, %rdi
movq %rax, %rsi
callq 0x3120
movq %rax, %rdi
movq %r13, %rsi
callq 0x3130
pushq $0x2
popq %r12
leaq 0x4224(%rip), %rbp      # 0xa99b
leaq 0xc(%rsp), %r13
movl %r12d, 0xc(%rsp)
movslq %r12d, %rax
cmpq %rax, 0x28(%rbx)
je 0x684b
movq %r15, %rdi
movq %rbp, %rsi
callq 0x3130
movl 0xc(%rsp), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
cmpl $0x3, %r12d
jne 0x680e
leaq 0x4005(%rip), %rsi      # 0xa7ba
callq 0x3130
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movq $0x3, 0x10(%rax,%rcx)
movl (%r14), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
leaq 0x3fdf(%rip), %rsi      # 0xa7be
callq 0x3130
movq %rax, %r12
movq %rbx, %rdi
movq %r13, %rsi
callq 0x68a6
movq %r12, %rdi
movq %rax, %rsi
callq 0x3120
movq %rax, %rdi
leaq 0x3e87(%rip), %rsi      # 0xa68e
callq 0x3130
jmp 0x683e
leaq 0x3fb0(%rip), %rsi      # 0xa7c5
callq 0x3130
movq %rax, %r12
movq %rbx, %rdi
movq %r13, %rsi
callq 0x68a6
movq %r12, %rdi
movq %rax, %rsi
callq 0x3120
movq %rax, %rdi
pushq $0xa
popq %rsi
callq 0x3170
movl 0xc(%rsp), %r12d
incl %r12d
jmp 0x677c
movq 0xb77e(%rip), %rdi      # 0x11fd0
leaq 0x3e2f(%rip), %rsi      # 0xa688
callq 0x3130
leaq 0x3f5e(%rip), %rsi      # 0xa7c3
movq %rax, %rdi
callq 0x3130
movq %rax, %r14
leaq 0x10(%rsp), %rsi
andl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x60ea
movq %r14, %rdi
movq %rax, %rsi
callq 0x3120
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x3170
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/stats/Stats.cpp
// Function: Stats::printMoves(std::shared_ptr<Player> const&, std::vector<std::shared_ptr<Skill>, std::allocator<std::shared_ptr<Skill>>> const&)
void Stats::printMoves(const std::shared_ptr<Player> &player, const std::vector<std::shared_ptr<Skill>> &skills)
{
    int n = 4;
    for(int i = 0; i < n; i++)
    {
        std::cout << "("
                  << std::setw(2)
                  << player->uses[i]
                  << "/10) ";
        for(int j = 0; j < skills.size (); j++)
        {
            if (player->skills[ i ] == skills[ j ]->id)
            {
                std::cout << skills[ j ]->name << "\n";
            }
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r14
xorl %r12d, %r12d
movq 0xb387(%rip), %r15      # 0x11fd0
cmpq $0x4, %r12
je 0x6ce5
movq %r15, %rdi
leaq 0x3925(%rip), %rsi      # 0xa582
callq 0x3130
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movq $0x2, 0x10(%rax,%rcx)
movq (%r14), %rcx
movl 0x2c(%rcx,%r12,4), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
leaq 0x38f8(%rip), %rsi      # 0xa584
callq 0x3130
xorl %r13d, %r13d
xorl %ebp, %ebp
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
cmpq %rbp, %rcx
jbe 0x6cdd
movq (%r14), %rcx
movl 0x1c(%rcx,%r12,4), %ecx
movq (%rax,%r13), %rsi
cmpl (%rsi), %ecx
jne 0x6cd4
addq $0x8, %rsi
movq %r15, %rdi
callq 0x3120
movq %rax, %rdi
leaq 0x39bf(%rip), %rsi      # 0xa68e
callq 0x3130
incq %rbp
addq $0x10, %r13
jmp 0x6c96
incq %r12
jmp 0x6c49
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/training/Training.cpp
// Function: Training::openTraining(std::shared_ptr<Player>&)
void Training::openTraining(std::shared_ptr<Player> &player)
{
    int z = 0;
    do
    {
        print();
        std::cout << player->name << "level points ( " << player->level_points << " )\n";
        z = choice();
        if(player->level_points > 0)
        {
            switch(z)
            {
                case e_training_health:
                {
                    player->hitpoints+=2;
                    player->max_hitpoints+=2;
                }
                    break;

                case e_training_strength:
                {
                    player->strength+=1;
                }
                    break;

                case e_training_agility:
                {
                    player->agility+=1;
                }
                    break;

                case e_training_intelligence:
                {
                    player->intelligence+=1;
                }
                    break;
            }
            player->level_points--;
        }
        else
            std::cout << "Not enough level points ;(\n";
    }while(z != 0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0xb2c4(%rip), %r15      # 0x11fd0
leaq 0x3918(%rip), %r13      # 0xa62b
leaq 0x3b96(%rip), %r12      # 0xa8b0
movq %r14, %rdi
callq 0x6dd8
movq (%rbx), %rsi
addq $0x40, %rsi
movq %r15, %rdi
callq 0x3120
movq %rax, %rdi
leaq 0x3b85(%rip), %rsi      # 0xa8c0
callq 0x3130
movq (%rbx), %rcx
movl 0x90(%rcx), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r13, %rsi
callq 0x3130
movq %r14, %rdi
callq 0x6eee
movl %eax, %ebp
movq (%rbx), %rax
movl 0x90(%rax), %ecx
testl %ecx, %ecx
jle 0x6d98
leal -0x1(%rbp), %edx
cmpl $0x3, %edx
ja 0x6db6
movslq (%r12,%rdx,4), %rdx
addq %r12, %rdx
jmpq *%rdx
movq 0x8(%rax), %xmm0
paddd 0x3b0f(%rip), %xmm0     # 0xa8a0
movq %xmm0, 0x8(%rax)
jmp 0x6db6
movq %r15, %rdi
leaq 0x3b2e(%rip), %rsi      # 0xa8d0
callq 0x3130
jmp 0x6dbe
incl 0x14(%rax)
jmp 0x6db6
incl 0x18(%rax)
jmp 0x6db6
incl 0x10(%rax)
decl %ecx
movl %ecx, 0x90(%rax)
testl %ebp, %ebp
jne 0x6d1a
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/Game.cpp
// Function: Game::print()
void Game::print()
{
    std::cout << "---\n"
              << name << "\n"
              << "---\n";
    for(int i = 1; i != this->map_Choices.size (); i++)
        std::cout << "[" << i << "] " << this->map_Choices[i] << '\n';
    std::cout << "---\n" << "[0] " << this->map_Choices[0] << '\n';
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0xb1e3(%rip), %rdi      # 0x11fd0
leaq 0x3894(%rip), %r15      # 0xa688
movq %r15, %rsi
callq 0x3130
leaq 0x30(%rbx), %rsi
movq %rax, %rdi
callq 0x3120
leaq 0x387f(%rip), %rsi      # 0xa68e
movq %rax, %rdi
callq 0x3130
movq %rax, %rdi
movq %r15, %rsi
callq 0x3130
pushq $0x1
popq %rax
leaq 0x3b6f(%rip), %r15      # 0xa99b
leaq 0x3992(%rip), %r12      # 0xa7c5
movq %rsp, %r13
pushq $0xa
popq %rbp
movl %eax, (%rsp)
cltq
cmpq %rax, 0x28(%rbx)
je 0x6e93
movq 0xb185(%rip), %rdi      # 0x11fd0
movq %r15, %rsi
callq 0x3130
movl (%rsp), %esi
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r12, %rsi
callq 0x3130
movq %rax, %r14
movq %rbx, %rdi
movq %r13, %rsi
callq 0x68a6
movq %r14, %rdi
movq %rax, %rsi
callq 0x3120
movq %rax, %rdi
movl %ebp, %esi
callq 0x3170
movl (%rsp), %eax
incl %eax
jmp 0x6e39
movq 0xb136(%rip), %rdi      # 0x11fd0
leaq 0x37e7(%rip), %rsi      # 0xa688
callq 0x3130
leaq 0x3916(%rip), %rsi      # 0xa7c3
movq %rax, %rdi
callq 0x3130
movq %rax, %r14
leaq 0x4(%rsp), %rsi
andl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x60ea
movq %r14, %rdi
movq %rax, %rsi
callq 0x3120
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x3170
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/game/Game.cpp
// Function: Game::choice()
int Game::choice()
{
    int x = 0;
    do
    {
        std::cout << "[>] ";
        std::cin >> x;
    }while(isdigit(x)!=0);
    return x;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
leaq 0x4(%rsp), %rbx
andl $0x0, (%rbx)
movq 0xb0cb(%rip), %r14      # 0x11fd0
leaq 0x39e0(%rip), %r15      # 0xa8ec
movq 0xb0cd(%rip), %r12      # 0x11fe0
movq %r14, %rdi
movq %r15, %rsi
callq 0x3130
movq %r12, %rdi
movq %rbx, %rsi
callq 0x30b0
movl 0x4(%rsp), %eax
leal -0x30(%rax), %ecx
cmpl $0xa, %ecx
jb 0x6f13
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/data/skills/Skill.cpp
// Function: Skill::printType[abi:cxx11](e_MoveType)
std::string Skill::printType(e_MoveType type)
{
    switch(type)
    {
        case e_type_str:
            return "STRE";
        case e_type_agi:
            return "AGIL";
        case e_type_int:
            return "INTE";
        default:
            return "";
    }
}

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
cmpl $0x2, %esi
je 0x769e
cmpl $0x1, %esi
je 0x7690
testl %esi, %esi
jne 0x76ac
leaq 0x3318(%rip), %rsi      # 0xa9a1
leaq 0xf(%rsp), %rdx
jmp 0x76b8
leaq 0x330f(%rip), %rsi      # 0xa9a6
leaq 0xe(%rsp), %rdx
jmp 0x76b8
leaq 0x3306(%rip), %rsi      # 0xa9ab
leaq 0xd(%rsp), %rdx
jmp 0x76b8
leaq 0x32ed(%rip), %rsi      # 0xa9a0
leaq 0xc(%rsp), %rdx
movq %rbx, %rdi
callq 0x39ea
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/./data/game/menu/Menu.h
// Function: Menu::Menu()
Menu()
    {
        name                            = "[M] Main Menu";
        map_Choices[e_menu_cancel]      = "Cancel";
        map_Choices[e_menu_create]      = "Create";
        map_Choices[e_menu_select]      = "Select";
        map_Choices[e_menu_stats]       = "Stats";
        map_Choices[e_menu_battle]      = "Battle";
        map_Choices[e_menu_shop]        = "Shop";
        map_Choices[e_menu_training]    = "Training";
        map_Choices[e_menu_items]       = "Items";
        map_Choices[e_menu_moves]       = "Skills";
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x8da6
leaq 0x30(%rbx), %rdi
leaq 0x1ead(%rip), %rsi      # 0xaaf2
callq 0x3230
leaq 0x4(%rsp), %rsi
andl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1e9f(%rip), %rsi      # 0xab00
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x1, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1e84(%rip), %rsi      # 0xab07
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x2, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1eac(%rip), %rsi      # 0xab51
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x3, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1e47(%rip), %rsi      # 0xab0e
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x4, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1e2b(%rip), %rsi      # 0xab14
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x5, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1f48(%rip), %rsi      # 0xac53
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x6, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1dee(%rip), %rsi      # 0xab1b
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x7, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1dd5(%rip), %rsi      # 0xab24
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x8, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1db9(%rip), %rsi      # 0xab2a
movq %rax, %rdi
callq 0x3230
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x8d93
jmp 0x8d93
jmp 0x8d93
jmp 0x8d93
jmp 0x8d93
jmp 0x8d93
jmp 0x8d93
jmp 0x8d93
jmp 0x8d93
movq %rax, %r14
movq %rbx, %rdi
callq 0x9ade
movq %r14, %rdi
callq 0x3200
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/./data/game/create/Create.h
// Function: Create::Create()
Create()
    {
        name                            = "[N] New Character";
        map_Choices[e_create_cancel]    = "Cancel";
        map_Choices[e_create_warrior]   = "Warrior";
        map_Choices[e_create_rogue]     = "Rogue";
        map_Choices[e_create_mage]      = "Mage";
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x8da6
leaq 0x30(%rbx), %rdi
leaq 0x1b9a(%rip), %rsi      # 0xab31
callq 0x3230
leaq 0x4(%rsp), %rsi
andl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1b4d(%rip), %rsi      # 0xab00
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x1, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1135(%rip), %rsi      # 0xa10a
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x2, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x120c(%rip), %rsi      # 0xa203
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x3, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1237(%rip), %rsi      # 0xa250
movq %rax, %rdi
callq 0x3230
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x9031
jmp 0x9031
jmp 0x9031
jmp 0x9031
movq %rax, %r14
movq %rbx, %rdi
callq 0x9ade
movq %r14, %rdi
callq 0x3200
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/./data/game/shop/Shop.h
// Function: Shop::Shop()
Shop()
    {
        name                                    = "[S] Shop Atrributes";
        map_Choices[e_shop_cancel]              = "Cancel";
        map_Choices[e_shop_heal]                = " Heal yourself";
        map_Choices[e_shop_revive]              = "(100 gp) Revive character";
        map_Choices[e_shop_recover]             = " Recover all skills";
        map_Choices[e_shop_add_hitpoints]       = "( 75 gp) +10 hitpoints";
        map_Choices[e_shop_add_strength]        = "( 50 gp) + 2 strength";
        map_Choices[e_shop_add_agility]         = "( 50 gp) + 2 agility";
        map_Choices[e_shop_add_intelligence]    = "( 50 gp) + 2 intelligence";
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x8da6
leaq 0x30(%rbx), %rdi
leaq 0x1673(%rip), %rsi      # 0xab58
callq 0x3230
leaq 0x4(%rsp), %rsi
andl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x15ff(%rip), %rsi      # 0xab00
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x1, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1649(%rip), %rsi      # 0xab6c
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x2, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1636(%rip), %rsi      # 0xab7b
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x3, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x162e(%rip), %rsi      # 0xab95
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x4, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1620(%rip), %rsi      # 0xaba9
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x5, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1615(%rip), %rsi      # 0xabc0
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x6, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1609(%rip), %rsi      # 0xabd6
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x7, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x15fc(%rip), %rsi      # 0xabeb
movq %rax, %rdi
callq 0x3230
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x960f
jmp 0x960f
jmp 0x960f
jmp 0x960f
jmp 0x960f
jmp 0x960f
jmp 0x960f
jmp 0x960f
movq %rax, %r14
movq %rbx, %rdi
callq 0x9ade
movq %r14, %rdi
callq 0x3200
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/./data/game/training/Training.h
// Function: Training::Training()
Training()
    {
        name = "[T] Training Center";
        map_Choices[ e_training_cancel ] = "Cancel";
        map_Choices[ e_training_health ] = "+2 Health";
        map_Choices[ e_training_strength ] = "+1 Strength";
        map_Choices[ e_training_agility ] = "+1 Agility";
        map_Choices[ e_training_intelligence ] = "+1 Intelligence";
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x8da6
leaq 0x30(%rbx), %rdi
leaq 0x1468(%rip), %rsi      # 0xac05
callq 0x3230
leaq 0x4(%rsp), %rsi
andl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1347(%rip), %rsi      # 0xab00
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x1, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x143e(%rip), %rsi      # 0xac19
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x2, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1426(%rip), %rsi      # 0xac23
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x3, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1410(%rip), %rsi      # 0xac2f
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x4, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x13f9(%rip), %rsi      # 0xac3a
movq %rax, %rdi
callq 0x3230
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x985b
jmp 0x985b
jmp 0x985b
jmp 0x985b
jmp 0x985b
movq %rax, %r14
movq %rbx, %rdi
callq 0x9ade
movq %r14, %rdi
callq 0x3200
// File: /workspace/github_cpp_makefile_star2_O2/rozpo[P]enemy/./data/game/items/Item.h
// Function: Item::Item()
Item()
    {
        name = "[I] Item Shop";
        map_Choices[ e_item_cancel ] = "Cancel";
        map_Choices[ e_item_dagger ] = "( 50 gp) + 5 dagger";
        map_Choices[ e_item_shortsword ] = "(120 gp) +10 short sword";
        map_Choices[ e_item_greataxe ] = "(299 gp) +19 great axe";
        map_Choices[ e_item_heavyhammer ] = "(420 gp) +35 heavy hammer";
        map_Choices[ e_item_devilscythe ] = "(666 gp) +666 Legendary Lucifer's Scythe ";
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x8da6
leaq 0x30(%rbx), %rdi
leaq 0x1261(%rip), %rsi      # 0xac4a
callq 0x3230
leaq 0x4(%rsp), %rsi
andl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x10fb(%rip), %rsi      # 0xab00
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x1, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1231(%rip), %rsi      # 0xac58
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x2, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1223(%rip), %rsi      # 0xac6c
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x3, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x121a(%rip), %rsi      # 0xac85
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x4, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x120f(%rip), %rsi      # 0xac9c
movq %rax, %rdi
callq 0x3230
leaq 0x4(%rsp), %rsi
movl $0x5, (%rsi)
movq %rbx, %rdi
callq 0x60ea
leaq 0x1207(%rip), %rsi      # 0xacb6
movq %rax, %rdi
callq 0x3230
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x9acb
jmp 0x9acb
jmp 0x9acb
jmp 0x9acb
jmp 0x9acb
jmp 0x9acb
movq %rax, %r14
movq %rbx, %rdi
callq 0x9ade
movq %r14, %rdi
callq 0x3200
// File: /workspace/github_cpp_makefile_star2_O2/ChaohuiYu[P]BPlusTree/parser.cpp
// Function: splitStr(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
std::vector<std::string> splitStr(std::string s, const std::string& delimiter) {
    std::vector<std::string> tokens;
    size_t pos = 0;
    std::string token;
    while ((pos = s.find(delimiter)) != std::string::npos) {
        token = s.substr(0, pos);
        tokens.push_back(token);
        s.erase(0, pos + delimiter.length());
    }
    tokens.push_back(s);
    return tokens;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
andq $0x0, 0x10(%rdi)
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movups %xmm0, (%rdi)
movb $0x0, (%rax)
leaq 0x28(%rsp), %r12
leaq 0x8(%rsp), %r13
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2310
cmpq $-0x1, %rax
je 0x2750
movq %rax, %rbp
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x2210
movq %r13, %rdi
movq %r12, %rsi
callq 0x2230
movq %r12, %rdi
callq 0x2100
movq %rbx, %rdi
movq %r13, %rsi
callq 0x35b0
addq 0x8(%r15), %rbp
movq %r14, %rdi
xorl %esi, %esi
movq %rbp, %rdx
callq 0x2080
jmp 0x26f9
movq %rbx, %rdi
movq %r14, %rsi
callq 0x35b0
leaq 0x8(%rsp), %rdi
callq 0x2100
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x277b
jmp 0x277b
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x2100
movq %rbx, %rdi
callq 0x35dc
movq %r14, %rdi
callq 0x22e0
// File: /workspace/github_cpp_makefile_star2_O2/ChaohuiYu[P]BPlusTree/commands.cpp
// Function: insertRecord(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void insertRecord(const string& relationName, const string& key, const string& record) {
    // need to check if key should be integer
    // need to check if key exists

    if (!isRelationExist(relationName)) {
        cout << "Error: Relation " << relationName << " doesn't exist.\n";
        return;
    }

    if (isRelationInRelationInt(relationName)) {
        if (!is_number(key)) {
            cout << "Error: Key " << key << " is not a number.\n";
            return;
        }
        relationNameToRelationInt[relationName]->insertRecord(stoi(key), record);
    }
    else if (isRelationInRelationStr(relationName)) {
        relationNameToRelationStr[relationName]->insertRecord(key.substr(1, 10), record);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
callq 0x3bff
testb %al, %al
je 0x3c9f
movq %r15, %rdi
callq 0x3d95
testb %al, %al
je 0x3cd8
movq %r14, %rdi
callq 0x3db4
testb %al, %al
je 0x3d49
leaq 0xa562(%rip), %rdi      # 0xe1c0
movq %r15, %rsi
callq 0x4482
movq (%rax), %r12
pushq $0xa
popq %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x360a
movl %eax, %ebp
leaq 0x40(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2250
movq %r12, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x4f4c
leaq 0x40(%rsp), %rdi
jmp 0x3d37
movq 0xa322(%rip), %rdi      # 0xdfc8
leaq 0x5642(%rip), %rsi      # 0x92ef
callq 0x21e0
movq %rax, %rdi
movq %r15, %rsi
callq 0x21d0
leaq 0x5794(%rip), %rsi      # 0x9458
movq %rax, %rdi
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x21e0
movq %r15, %rdi
callq 0x3e73
testb %al, %al
je 0x3d3c
leaq 0xa505(%rip), %rdi      # 0xe1f0
movq %r15, %rsi
callq 0x44e8
movq (%rax), %r12
leaq 0x20(%rsp), %r15
pushq $0x1
popq %rdx
pushq $0xa
popq %rcx
movq %r15, %rdi
movq %r14, %rsi
callq 0x2210
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x2250
leaq 0x20(%rsp), %r15
movq %rsp, %rdx
movq %r12, %rdi
movq %r15, %rsi
callq 0x5538
movq %rsp, %rdi
callq 0x2100
leaq 0x20(%rsp), %rdi
callq 0x2100
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0xa278(%rip), %rdi      # 0xdfc8
leaq 0x5626(%rip), %rsi      # 0x937d
callq 0x21e0
movq %rax, %rdi
movq %r14, %rsi
callq 0x21d0
leaq 0x561b(%rip), %rsi      # 0x9389
jmp 0x3cc4
movq %rax, %rbx
movq %rsp, %rdi
callq 0x2100
jmp 0x3d85
jmp 0x3d82
movq %rax, %rbx
movq %r15, %rdi
callq 0x2100
movq %rbx, %rdi
callq 0x22e0
// File: /workspace/github_cpp_makefile_star2_O2/ChaohuiYu[P]BPlusTree/commands.cpp
// Function: deleteRecord(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void deleteRecord(const string& relationName, const string& key) {
    // need to check if key should be integer
    // need to check if key exists

    if (!isRelationExist(relationName)) {
        cout << "Error: Relation " << relationName << " doesn't exist.\n";
        return;
    }

    if (isRelationInRelationInt(relationName)) {
        if (!is_number(key)) {
            cout << "Error: Key " << key << " is not a number.\n";
            return;
        }
        relationNameToRelationInt[relationName]->deleteRecord(stoi(key));
    }
    else if (isRelationInRelationStr(relationName)) {
        relationNameToRelationStr[relationName]->deleteRecord(key.substr(1, 10));
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rsi, %rbx
movq %rdi, %r14
callq 0x3bff
testb %al, %al
je 0x3ef8
movq %r14, %rdi
callq 0x3d95
testb %al, %al
je 0x3f2e
movq %rbx, %rdi
callq 0x3db4
testb %al, %al
je 0x3f7d
leaq 0xa2f3(%rip), %rdi      # 0xe1c0
movq %r14, %rsi
callq 0x4482
movq (%rax), %r14
pushq $0xa
popq %rdx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x360a
movq %r14, %rdi
movl %eax, %esi
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
jmp 0x5036
movq 0xa0c9(%rip), %rdi      # 0xdfc8
leaq 0x53e9(%rip), %rsi      # 0x92ef
callq 0x21e0
movq %rax, %rdi
movq %r14, %rsi
callq 0x21d0
leaq 0x553b(%rip), %rsi      # 0x9458
movq %rax, %rdi
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
jmp 0x21e0
movq %r14, %rdi
callq 0x3e73
testb %al, %al
je 0x3f73
leaq 0xa2af(%rip), %rdi      # 0xe1f0
movq %r14, %rsi
callq 0x44e8
movq (%rax), %r14
movq %rsp, %r15
pushq $0x1
popq %rdx
pushq $0xa
popq %rcx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2210
movq %r14, %rdi
movq %r15, %rsi
callq 0x563e
movq %rsp, %rdi
callq 0x2100
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq 0xa044(%rip), %rdi      # 0xdfc8
leaq 0x53f2(%rip), %rsi      # 0x937d
callq 0x21e0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x21d0
leaq 0x53e7(%rip), %rsi      # 0x9389
jmp 0x3f1d
movq %rax, %rbx
movq %rsp, %rdi
callq 0x2100
movq %rbx, %rdi
callq 0x22e0
// File: /workspace/github_cpp_makefile_star2_O2/ChaohuiYu[P]BPlusTree/commands.cpp
// Function: scanRelation(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void scanRelation(const string& relationName) {
    if (!isRelationExist(relationName)) {
        cout << "Error: Relation " << relationName << " doesn't exist.\n";
        return;
    }

    if (isRelationInRelationInt(relationName)) {
        relationNameToRelationInt[relationName]->scanIndex();
    }
    else if (isRelationInRelationStr(relationName)) {
        relationNameToRelationStr[relationName]->scanIndex();
    }
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x3bff
testb %al, %al
je 0x3feb
movq %rbx, %rdi
callq 0x3d95
testb %al, %al
je 0x4019
leaq 0xa1e6(%rip), %rdi      # 0xe1c0
movq %rbx, %rsi
callq 0x4482
movq (%rax), %rdi
popq %rbx
jmp 0x50dc
movq 0x9fd6(%rip), %rdi      # 0xdfc8
leaq 0x52f6(%rip), %rsi      # 0x92ef
callq 0x21e0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x21d0
leaq 0x5448(%rip), %rsi      # 0x9458
movq %rax, %rdi
popq %rbx
jmp 0x21e0
movq %rbx, %rdi
callq 0x3e73
testb %al, %al
je 0x403d
leaq 0xa1c4(%rip), %rdi      # 0xe1f0
movq %rbx, %rsi
callq 0x44e8
movq (%rax), %rdi
popq %rbx
jmp 0x575e
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/ChaohuiYu[P]BPlusTree/commands.cpp
// Function: queryRecord(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void queryRecord(const string& relationName, const string& key) {
    if (!isRelationExist(relationName)) {
        cout << "Error: Relation " << relationName << " doesn't exist.\n";
        return;
    }

    if (isRelationInRelationInt(relationName)) {
        if (!is_number(key)) {
            cout << "Error: Key " << key << " is not a number.\n";
            return;
        }
        relationNameToRelationInt[relationName]->queryRid(stoi(key));
    }
    else if (isRelationInRelationStr(relationName)) {
        relationNameToRelationStr[relationName]->queryRid(key.substr(1, 10));
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rsi, %rbx
movq %rdi, %r14
callq 0x3bff
testb %al, %al
je 0x40a5
movq %r14, %rdi
callq 0x3d95
testb %al, %al
je 0x40db
movq %rbx, %rdi
callq 0x3db4
testb %al, %al
je 0x412a
leaq 0xa146(%rip), %rdi      # 0xe1c0
movq %r14, %rsi
callq 0x4482
movq (%rax), %r14
pushq $0xa
popq %rdx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x360a
movq %r14, %rdi
movl %eax, %esi
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
jmp 0x5176
movq 0x9f1c(%rip), %rdi      # 0xdfc8
leaq 0x523c(%rip), %rsi      # 0x92ef
callq 0x21e0
movq %rax, %rdi
movq %r14, %rsi
callq 0x21d0
leaq 0x538e(%rip), %rsi      # 0x9458
movq %rax, %rdi
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
jmp 0x21e0
movq %r14, %rdi
callq 0x3e73
testb %al, %al
je 0x4120
leaq 0xa102(%rip), %rdi      # 0xe1f0
movq %r14, %rsi
callq 0x44e8
movq (%rax), %r14
movq %rsp, %r15
pushq $0x1
popq %rdx
pushq $0xa
popq %rcx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2210
movq %r14, %rdi
movq %r15, %rsi
callq 0x57f8
movq %rsp, %rdi
callq 0x2100
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq 0x9e97(%rip), %rdi      # 0xdfc8
leaq 0x5245(%rip), %rsi      # 0x937d
callq 0x21e0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x21d0
leaq 0x523a(%rip), %rsi      # 0x9389
jmp 0x40ca
movq %rax, %rbx
movq %rsp, %rdi
callq 0x2100
movq %rbx, %rdi
callq 0x22e0
// File: /workspace/github_cpp_makefile_star2_O2/ChaohuiYu[P]BPlusTree/commands.cpp
// Function: displayPage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void displayPage(const string& relationName, const string& pageId) {
    if (!isRelationExist(relationName)) {
        cout << "Error: Relation " << relationName << " doesn't exist.\n";
        return;
    }

    if (!is_number(pageId)) {
        cout << "Error: page id should be 0 or a positive integer\n";
        return;
    }

    int pageIdInt = stoi(pageId);

    if (pageIdInt < 0) {
        cout << "Error: page id should be 0 or a positive integer\n";
        return;
    }

    if (isRelationInRelationInt(relationName)) {
        relationNameToRelationInt[relationName]->printPage(pageIdInt);
    }
    else if (isRelationInRelationStr(relationName)) {
        relationNameToRelationStr[relationName]->printPage(pageIdInt);
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
callq 0x3bff
testb %al, %al
je 0x4382
movq %r14, %rdi
callq 0x3db4
testb %al, %al
je 0x43ac
pushq $0xa
popq %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x360a
testl %eax, %eax
js 0x43ac
movl %eax, %ebp
movq %rbx, %rdi
callq 0x3d95
testb %al, %al
je 0x43c3
leaq 0x9e54(%rip), %rdi      # 0xe1c0
movq %rbx, %rsi
callq 0x4482
movq (%rax), %rdi
movl %ebp, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x535e
movq 0x9c3f(%rip), %rdi      # 0xdfc8
leaq 0x4f5f(%rip), %rsi      # 0x92ef
callq 0x21e0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x21d0
leaq 0x50b1(%rip), %rsi      # 0x9458
movq %rax, %rdi
jmp 0x43ba
movq 0x9c15(%rip), %rdi      # 0xdfc8
leaq 0x4ffc(%rip), %rsi      # 0x93b6
popq %rbx
popq %r14
popq %rbp
jmp 0x21e0
movq %rbx, %rdi
callq 0x3e73
testb %al, %al
je 0x43ec
leaq 0x9e1a(%rip), %rdi      # 0xe1f0
movq %rbx, %rsi
callq 0x44e8
movq (%rax), %rdi
movl %ebp, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x5a8e
popq %rbx
popq %r14
popq %rbp
retq