// File: MichaelXanth[P]RPG_Game/Living/Heroes/Hero.cpp
// Function: Hero::SpellUsed(unsigned int, unsigned int)
bool Hero::SpellUsed(const unsigned int slotNum , const unsigned int typeOfSpell) //deletes the used spell
{
    availableSpellSlots++;

    switch(typeOfSpell)
    {
        case 1:
            delete lightingSpellsArray[slotNum - 1];
            lightingSpellsArray.erase(lightingSpellsArray.begin() + slotNum - 1);

            return true;

        case 2:
            delete iceSpellsArray[slotNum - 1];
            iceSpellsArray.erase(iceSpellsArray.begin() + slotNum - 1);

            return true;

        case 3:
            delete fireSpellsArray[slotNum - 1];
            fireSpellsArray.erase(fireSpellsArray.begin() + slotNum - 1);

            return true;
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movl 0xe8(%rax), %ecx
incl %ecx
movl %ecx, 0xe8(%rax)
movl -0x18(%rbp), %eax
movl %eax, -0x94(%rbp)
subl $0x1, %eax
je 0x203d3
jmp 0x203ae
movl -0x94(%rbp), %eax
subl $0x2, %eax
je 0x2047a
jmp 0x203bf
movl -0x94(%rbp), %eax
subl $0x3, %eax
je 0x20521
jmp 0x205ce
movq -0xa0(%rbp), %rdi
addq $0x38, %rdi
movl -0x14(%rbp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
callq 0x27400
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
cmpq $0x0, %rax
je 0x2040a
movq -0xa8(%rbp), %rdi
movq (%rdi), %rax
callq *0x60(%rax)
movq -0xa0(%rbp), %rdi
movq %rdi, %rax
addq $0x38, %rax
movq %rax, -0xb0(%rbp)
addq $0x38, %rdi
callq 0x27490
movq %rax, -0x38(%rbp)
movl -0x14(%rbp), %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x274c0
movq %rax, -0x30(%rbp)
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x27900
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x27500
movq -0xb0(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x27420
movq %rax, -0x40(%rbp)
movb $0x1, -0x1(%rbp)
jmp 0x205d2
movq -0xa0(%rbp), %rdi
addq $0x68, %rdi
movl -0x14(%rbp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
callq 0x27180
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
cmpq $0x0, %rax
je 0x204b1
movq -0xb8(%rbp), %rdi
movq (%rdi), %rax
callq *0x60(%rax)
movq -0xa0(%rbp), %rdi
movq %rdi, %rax
addq $0x68, %rax
movq %rax, -0xc0(%rbp)
addq $0x68, %rdi
callq 0x27210
movq %rax, -0x60(%rbp)
movl -0x14(%rbp), %eax
movl %eax, %esi
leaq -0x60(%rbp), %rdi
callq 0x27240
movq %rax, -0x58(%rbp)
leaq -0x58(%rbp), %rdi
movl $0x1, %esi
callq 0x27940
movq %rax, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x27280
movq -0xc0(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x271a0
movq %rax, -0x68(%rbp)
movb $0x1, -0x1(%rbp)
jmp 0x205d2
movq -0xa0(%rbp), %rdi
addq $0x50, %rdi
movl -0x14(%rbp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
callq 0x272c0
movq (%rax), %rax
movq %rax, -0xc8(%rbp)
cmpq $0x0, %rax
je 0x20558
movq -0xc8(%rbp), %rdi
movq (%rdi), %rax
callq *0x60(%rax)
movq -0xa0(%rbp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, -0xd0(%rbp)
addq $0x50, %rdi
callq 0x27350
movq %rax, -0x88(%rbp)
movl -0x14(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x27380
movq %rax, -0x80(%rbp)
leaq -0x80(%rbp), %rdi
movl $0x1, %esi
callq 0x27980
movq %rax, -0x78(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x273c0
movq -0xd0(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x272e0
movq %rax, -0x90(%rbp)
movb $0x1, -0x1(%rbp)
jmp 0x205d2
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xd0, %rsp
popq %rbp
retq