// File: rozpo[P]enemy/data/skills/Skill.cpp
// Function: Skill::createSkills(std::vector<std::shared_ptr<Skill>, std::allocator<std::shared_ptr<Skill>>>&)
std::vector<std::shared_ptr<Skill>> Skill::createSkills(std::vector<std::shared_ptr<Skill>> &skills)
{
    //ID, NAME, TARGET, DAMAGE, CHANCE, CRITICAL, TYPE
    //All
    skills.push_back (std::make_shared<Skill>(e_move_attack,"Fast attack",false,20,90,10,e_type_str,10));
    skills.push_back (std::make_shared<Skill>(e_move_heal,"Heal",true,50,100,20,e_type_int,10));

    //Warrior
    skills.push_back (std::make_shared<Skill>(e_move_power_attack,"Powerful swing",false,40,70,25,e_type_str,10));
    skills.push_back (std::make_shared<Skill>(e_move_bash,"Shield bash",false,30,50,30,e_type_str,10));

    //Rogue
    skills.push_back (std::make_shared<Skill>(e_move_throw,"Throw knife",false,30,85,75,e_type_agi,10));
    skills.push_back (std::make_shared<Skill>(e_move_poison,"Spread poison",false,40,75,40,e_type_agi,10));

    //Mage
    skills.push_back (std::make_shared<Skill>(e_move_firebolt,"Throw firebolt",false,100,65,5,e_type_int,10));
    skills.push_back (std::make_shared<Skill>(e_move_frost_nova,"Cast frost nova",false,50,75,50,e_type_int,10));

    return skills;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x250, %rsp            # imm = 0x250
movq %rdi, -0x1c0(%rbp)
movq %rdi, %rax
movq %rax, -0x1b8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movl $0x0, -0x24(%rbp)
movb $0x0, -0x25(%rbp)
movl $0x14, -0x2c(%rbp)
movl $0x5a, -0x30(%rbp)
movl $0xa, -0x34(%rbp)
movl $0x0, -0x38(%rbp)
movl $0xa, -0x3c(%rbp)
movq %rsp, %rax
leaq -0x3c(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0x38(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x34(%rbp), %rcx
movq %rcx, (%rax)
leaq 0xce91(%rip), %rdx      # 0x1d82f
leaq -0x20(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
leaq -0x24(%rbp), %rsi
leaq -0x25(%rbp), %rcx
leaq -0x2c(%rbp), %r8
leaq -0x30(%rbp), %r9
callq 0x11580
movq -0x1b0(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x11550
jmp 0x109d3
leaq -0x20(%rbp), %rdi
callq 0x11650
movq -0x10(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movl $0x1, -0x64(%rbp)
movb $0x1, -0x65(%rbp)
movl $0x32, -0x6c(%rbp)
movl $0x64, -0x70(%rbp)
movl $0x14, -0x74(%rbp)
movl $0x2, -0x78(%rbp)
movl $0xa, -0x7c(%rbp)
movq %rsp, %rax
leaq -0x7c(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0x78(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x74(%rbp), %rcx
movq %rcx, (%rax)
leaq 0xce05(%rip), %rdx      # 0x1d83b
leaq -0x60(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
leaq -0x64(%rbp), %rsi
leaq -0x65(%rbp), %rcx
leaq -0x6c(%rbp), %r8
leaq -0x70(%rbp), %r9
callq 0x11670
movq -0x1d0(%rbp), %rdi
movq -0x1c8(%rbp), %rsi
callq 0x11550
jmp 0x10a6b
leaq -0x60(%rbp), %rdi
callq 0x11650
movq -0x10(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movl $0x4, -0x94(%rbp)
movb $0x0, -0x95(%rbp)
movl $0x28, -0x9c(%rbp)
movl $0x46, -0xa0(%rbp)
movl $0x19, -0xa4(%rbp)
movl $0x0, -0xa8(%rbp)
movl $0xa, -0xac(%rbp)
movq %rsp, %rax
leaq -0xac(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0xa8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0xa4(%rbp), %rcx
movq %rcx, (%rax)
leaq 0xcd54(%rip), %rdx      # 0x1d840
leaq -0x90(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
leaq -0x94(%rbp), %rsi
leaq -0x95(%rbp), %rcx
leaq -0x9c(%rbp), %r8
leaq -0xa0(%rbp), %r9
callq 0x11740
movq -0x1e0(%rbp), %rdi
movq -0x1d8(%rbp), %rsi
callq 0x11550
jmp 0x10b30
leaq -0x90(%rbp), %rdi
callq 0x11650
movq -0x10(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movl $0x5, -0xc4(%rbp)
movb $0x0, -0xc5(%rbp)
movl $0x1e, -0xcc(%rbp)
movl $0x32, -0xd0(%rbp)
movl $0x1e, -0xd4(%rbp)
movl $0x0, -0xd8(%rbp)
movl $0xa, -0xdc(%rbp)
movq %rsp, %rax
leaq -0xdc(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0xd8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0xd4(%rbp), %rcx
movq %rcx, (%rax)
leaq 0xcc9b(%rip), %rdx      # 0x1d84f
leaq -0xc0(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
leaq -0xc4(%rbp), %rsi
leaq -0xc5(%rbp), %rcx
leaq -0xcc(%rbp), %r8
leaq -0xd0(%rbp), %r9
callq 0x11580
movq -0x1f0(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
callq 0x11550
jmp 0x10bf8
leaq -0xc0(%rbp), %rdi
callq 0x11650
movq -0x10(%rbp), %rax
movq %rax, -0x200(%rbp)
movl $0x2, -0xf4(%rbp)
movb $0x0, -0xf5(%rbp)
movl $0x1e, -0xfc(%rbp)
movl $0x55, -0x100(%rbp)
movl $0x4b, -0x104(%rbp)
movl $0x1, -0x108(%rbp)
movl $0xa, -0x10c(%rbp)
movq %rsp, %rax
leaq -0x10c(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0x108(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x104(%rbp), %rcx
movq %rcx, (%rax)
leaq 0xcbdf(%rip), %rdx      # 0x1d85b
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
leaq -0xf4(%rbp), %rsi
leaq -0xf5(%rbp), %rcx
leaq -0xfc(%rbp), %r8
leaq -0x100(%rbp), %r9
callq 0x11580
movq -0x200(%rbp), %rdi
movq -0x1f8(%rbp), %rsi
callq 0x11550
jmp 0x10cc0
leaq -0xf0(%rbp), %rdi
callq 0x11650
movq -0x10(%rbp), %rax
movq %rax, -0x210(%rbp)
movl $0x3, -0x124(%rbp)
movb $0x0, -0x125(%rbp)
movl $0x28, -0x12c(%rbp)
movl $0x4b, -0x130(%rbp)
movl $0x28, -0x134(%rbp)
movl $0x1, -0x138(%rbp)
movl $0xa, -0x13c(%rbp)
movq %rsp, %rax
leaq -0x13c(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0x138(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x134(%rbp), %rcx
movq %rcx, (%rax)
leaq 0xcb23(%rip), %rdx      # 0x1d867
leaq -0x120(%rbp), %rdi
movq %rdi, -0x208(%rbp)
leaq -0x124(%rbp), %rsi
leaq -0x125(%rbp), %rcx
leaq -0x12c(%rbp), %r8
leaq -0x130(%rbp), %r9
callq 0x11810
movq -0x210(%rbp), %rdi
movq -0x208(%rbp), %rsi
callq 0x11550
jmp 0x10d88
leaq -0x120(%rbp), %rdi
callq 0x11650
movq -0x10(%rbp), %rax
movq %rax, -0x220(%rbp)
movl $0x6, -0x154(%rbp)
movb $0x0, -0x155(%rbp)
movl $0x64, -0x15c(%rbp)
movl $0x41, -0x160(%rbp)
movl $0x5, -0x164(%rbp)
movl $0x2, -0x168(%rbp)
movl $0xa, -0x16c(%rbp)
movq %rsp, %rax
leaq -0x16c(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0x168(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x164(%rbp), %rcx
movq %rcx, (%rax)
leaq 0xca69(%rip), %rdx      # 0x1d875
leaq -0x150(%rbp), %rdi
movq %rdi, -0x218(%rbp)
leaq -0x154(%rbp), %rsi
leaq -0x155(%rbp), %rcx
leaq -0x15c(%rbp), %r8
leaq -0x160(%rbp), %r9
callq 0x11740
movq -0x220(%rbp), %rdi
movq -0x218(%rbp), %rsi
callq 0x11550
jmp 0x10e50
leaq -0x150(%rbp), %rdi
callq 0x11650
movq -0x10(%rbp), %rax
movq %rax, -0x230(%rbp)
movl $0x7, -0x184(%rbp)
movb $0x0, -0x185(%rbp)
movl $0x32, -0x18c(%rbp)
movl $0x4b, -0x190(%rbp)
movl $0x32, -0x194(%rbp)
movl $0x2, -0x198(%rbp)
movl $0xa, -0x19c(%rbp)
movq %rsp, %rax
leaq -0x19c(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0x198(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x194(%rbp), %rcx
movq %rcx, (%rax)
leaq 0xc9b0(%rip), %rdx      # 0x1d884
leaq -0x180(%rbp), %rdi
movq %rdi, -0x228(%rbp)
leaq -0x184(%rbp), %rsi
leaq -0x185(%rbp), %rcx
leaq -0x18c(%rbp), %r8
leaq -0x190(%rbp), %r9
callq 0x118e0
movq -0x230(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0x11550
jmp 0x10f18
leaq -0x180(%rbp), %rdi
callq 0x11650
movq -0x1c0(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x119b0
movq -0x1b8(%rbp), %rax
addq $0x250, %rsp            # imm = 0x250
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x11650
jmp 0x11015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x11650
jmp 0x11015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x11650
jmp 0x11015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x11650
jmp 0x11015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x11650
jmp 0x11015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x11650
jmp 0x11015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x11650
jmp 0x11015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x11650
movq -0x48(%rbp), %rdi
callq 0x42e0
nop