// File: Matteo-Grellier[P]RPG/Barbarian.cpp
// Function: Barbarian::enterFury()
void Barbarian::enterFury(){
    if( inFury ){
        throw IllegalFury(true);
    }
    baseAttack = this->physicalAttack;
    baseDefense = this->defense;
    inFury = true;
    physicalAttack *= 1.5f;
    defense = 0;
    this->receiveDamage(maxHp*0.15f);

    Menu::toScreen(
        "",
        this->name + " rentre en mode FURY ! il perd donc " + to_string(maxHp*0.15f) + "de vie",
        this->name + " est à " + to_string(this->getCurrentHp()) + " pv."
    );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x148(%rbp)
testb $0x1, 0x4c(%rax)
je 0x7a5a
movl $0x10, %edi
callq 0x3110
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x150(%rbp)
movl $0x1, %esi
callq 0x7f00
jmp 0x7a23
movq -0x150(%rbp), %rdi
leaq 0xc297(%rip), %rsi      # 0x13cc8
leaq 0x518(%rip), %rdx       # 0x7f50
callq 0x3370
movq -0x150(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x31a0
jmp 0x7d55
movq -0x148(%rbp), %rdi
movl 0x2c(%rdi), %eax
movl %eax, 0x44(%rdi)
movl 0x34(%rdi), %eax
movl %eax, 0x48(%rdi)
movb $0x1, 0x4c(%rdi)
cvtsi2ssl 0x2c(%rdi), %xmm0
movss 0x68c2(%rip), %xmm1     # 0xe340
mulss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, 0x2c(%rdi)
movl $0x0, 0x34(%rdi)
cvtsi2ssl 0x38(%rdi), %xmm0
movss 0x68a7(%rip), %xmm1     # 0xe344
mulss %xmm1, %xmm0
cvttss2si %xmm0, %esi
callq 0x6160
leaq -0x39(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x33a0
movq -0x158(%rbp), %rdx
leaq 0x6a4a(%rip), %rsi      # 0xe512
leaq -0x38(%rbp), %rdi
callq 0x4500
jmp 0x7ad3
movq -0x148(%rbp), %rsi
addq $0x8, %rsi
leaq 0x6863(%rip), %rdx      # 0xe348
leaq -0xa0(%rbp), %rdi
callq 0x66a0
jmp 0x7af3
movq -0x148(%rbp), %rax
cvtsi2ssl 0x38(%rax), %xmm0
movss 0x683d(%rip), %xmm1     # 0xe344
mulss %xmm1, %xmm0
leaq -0xc0(%rbp), %rdi
callq 0x7f70
jmp 0x7b19
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0x65d0
jmp 0x7b32
leaq 0x6834(%rip), %rdx      # 0xe36d
leaq -0x60(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x4770
jmp 0x7b48
movq -0x148(%rbp), %rsi
addq $0x8, %rsi
leaq 0x65e7(%rip), %rdx      # 0xe141
leaq -0x120(%rbp), %rdi
callq 0x66a0
jmp 0x7b68
movq -0x148(%rbp), %rdi
callq 0x5da0
movl %eax, -0x15c(%rbp)
jmp 0x7b7c
movl -0x15c(%rbp), %esi
leaq -0x140(%rbp), %rdi
callq 0x6720
jmp 0x7b90
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x65d0
jmp 0x7bac
leaq 0x6589(%rip), %rdx      # 0xe13c
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x4770
jmp 0x7bc8
leaq -0x38(%rbp), %rdi
leaq -0x60(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x93f0
jmp 0x7bde
leaq -0xe0(%rbp), %rdi
callq 0x3418
leaq -0x100(%rbp), %rdi
callq 0x3418
leaq -0x140(%rbp), %rdi
callq 0x3418
leaq -0x120(%rbp), %rdi
callq 0x3418
leaq -0x60(%rbp), %rdi
callq 0x3418
leaq -0x80(%rbp), %rdi
callq 0x3418
leaq -0xc0(%rbp), %rdi
callq 0x3418
leaq -0xa0(%rbp), %rdi
callq 0x3418
leaq -0x38(%rbp), %rdi
callq 0x3418
leaq -0x39(%rbp), %rdi
callq 0x3280
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7d4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7d43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7d37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7d2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7d22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7d19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7d0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7d01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x7cf5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x3418
leaq -0x100(%rbp), %rdi
callq 0x3418
leaq -0x140(%rbp), %rdi
callq 0x3418
leaq -0x120(%rbp), %rdi
callq 0x3418
leaq -0x60(%rbp), %rdi
callq 0x3418
leaq -0x80(%rbp), %rdi
callq 0x3418
leaq -0xc0(%rbp), %rdi
callq 0x3418
leaq -0xa0(%rbp), %rdi
callq 0x3418
leaq -0x38(%rbp), %rdi
callq 0x3418
leaq -0x39(%rbp), %rdi
callq 0x3280
movq -0x10(%rbp), %rdi
callq 0x3390
nop