// File: /workspace/github_cpp_makefile_star2_O1/t0mm4rx[P]piscine_cpp/day03/ex03/main.cpp
// Function: main
int main(void)
{
	srand(time(0));
	ScavTrap rose("Rose");
	FragTrap john("John");
	FragTrap john2 = john;
	ScavTrap rose2(rose);
	NinjaTrap jordan("Jordan");

	rose.challengeNewcomer();
	rose2.meleeAttack("Micheal");
	rose.rangedAttack("John");
	john.meleeAttack("Rose");
	john2.rangedAttack("Micheal");
	john.vaulthunter_dot_exe("Rose");
	jordan.meleeAttack("Rose");
	jordan.rangedAttack("Micheal");
	jordan.ninjaShoebox(john);

	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x210, %rsp            # imm = 0x210
xorl %edi, %edi
callq 0x20d0
movl %eax, %edi
callq 0x20e0
leaq -0x80(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x18e9(%rip), %rsi      # 0x54d8
leaq 0x18e6(%rip), %rdx      # 0x54dc
leaq -0x90(%rbp), %rbx
movq %rbx, %rdi
callq 0x3ff4
leaq -0x180(%rbp), %rdi
movq %rbx, %rsi
callq 0x36b4
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x3c2c
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x60(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x18a2(%rip), %rsi      # 0x54dd
leaq 0x189f(%rip), %rdx      # 0x54e1
leaq -0x70(%rbp), %rdi
callq 0x3ff4
leaq -0xe0(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x29ac
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x3c70
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x220(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x2abc
leaq -0x1d0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x37c4
leaq -0x40(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x183d(%rip), %rsi      # 0x54e2
leaq 0x183c(%rip), %rdx      # 0x54e8
leaq -0x50(%rbp), %rdi
callq 0x3ff4
leaq -0x130(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x2f3c
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0x3cda
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x180(%rbp), %rdi
callq 0x3948
leaq -0x20(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x17f4(%rip), %rsi      # 0x54e9
leaq 0x17f4(%rip), %rdx      # 0x54f0
leaq -0x30(%rbp), %rdi
callq 0x3ff4
leaq -0x1d0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x3b10
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x3d2a
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x17a5(%rip), %rsi      # 0x54dd
leaq 0x17a2(%rip), %rdx      # 0x54e1
callq 0x3ff4
leaq -0x180(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x3a5c
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x3d69
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x1761(%rip), %rsi      # 0x54d8
leaq 0x175e(%rip), %rdx      # 0x54dc
callq 0x3ff4
leaq -0xe0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2e88
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x3da8
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x1733(%rip), %rsi      # 0x54e9
leaq 0x1733(%rip), %rdx      # 0x54f0
callq 0x3ff4
leaq -0x220(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2dd4
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x3de7
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x16e3(%rip), %rsi      # 0x54d8
leaq 0x16e0(%rip), %rdx      # 0x54dc
callq 0x3ff4
leaq -0xe0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2c40
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x3e26
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x16a4(%rip), %rsi      # 0x54d8
leaq 0x16a1(%rip), %rdx      # 0x54dc
callq 0x3ff4
leaq -0x130(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x3600
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x3e65
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x1676(%rip), %rsi      # 0x54e9
leaq 0x1676(%rip), %rdx      # 0x54f0
callq 0x3ff4
leaq -0x130(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x354c
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x3ea4
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x2100
leaq -0x130(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x338c
leaq -0x130(%rbp), %rdi
callq 0x3130
leaq -0x1d0(%rbp), %rdi
callq 0x38ac
leaq -0x220(%rbp), %rdi
callq 0x2ba4
leaq -0xe0(%rbp), %rdi
callq 0x2ba4
leaq -0x180(%rbp), %rdi
callq 0x38ac
xorl %eax, %eax
addq $0x210, %rsp            # imm = 0x210
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x3f2b
jmp 0x3fac
jmp 0x3f2b
jmp 0x3fac
jmp 0x3f2b
jmp 0x3fac
jmp 0x3f2b
jmp 0x3fac
jmp 0x3f2b
jmp 0x3fac
jmp 0x3f2b
jmp 0x3fac
movq %rax, %rbx
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x3faf
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x3faf
jmp 0x3fac
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0x3fbb
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x3fbb
movq %rax, %rbx
jmp 0x3fbb
movq %rax, %rbx
jmp 0x3fc7
movq %rax, %rbx
jmp 0x3fd3
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x3fdf
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x3fdf
movq %rax, %rbx
jmp 0x3fdf
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x3feb
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x2100
jmp 0x3feb
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x3130
leaq -0x1d0(%rbp), %rdi
callq 0x38ac
leaq -0x220(%rbp), %rdi
callq 0x2ba4
leaq -0xe0(%rbp), %rdi
callq 0x2ba4
leaq -0x180(%rbp), %rdi
callq 0x38ac
movq %rbx, %rdi
callq 0x2150
nop