// File: 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
subq $0x390, %rsp            # imm = 0x390
movl $0x0, -0x4(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x2110
movl %eax, %edi
callq 0x2120
leaq -0x79(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x2230
movq -0x340(%rbp), %rdx
leaq 0x1831(%rip), %rsi      # 0x5421
leaq -0x78(%rbp), %rdi
callq 0x4300
jmp 0x3bfb
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x36a0
jmp 0x3c0a
leaq -0x78(%rbp), %rdi
callq 0x20a0
leaq -0x79(%rbp), %rdi
callq 0x2170
leaq -0x101(%rbp), %rdi
movq %rdi, -0x348(%rbp)
callq 0x2230
movq -0x348(%rbp), %rdx
leaq 0x17e9(%rip), %rsi      # 0x5426
leaq -0x100(%rbp), %rdi
callq 0x4300
jmp 0x3c4b
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x2a70
jmp 0x3c60
leaq -0x100(%rbp), %rdi
callq 0x20a0
leaq -0x101(%rbp), %rdi
callq 0x2170
leaq -0x158(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x2b60
jmp 0x3c8d
leaq -0x1a8(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x3790
jmp 0x3c9f
leaq -0x219(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x2230
movq -0x350(%rbp), %rdx
leaq 0x176b(%rip), %rsi      # 0x542b
leaq -0x218(%rbp), %rdi
callq 0x4300
jmp 0x3cce
leaq -0x1f8(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x3020
jmp 0x3ce3
leaq -0x218(%rbp), %rdi
callq 0x20a0
leaq -0x219(%rbp), %rdi
callq 0x2170
leaq -0x58(%rbp), %rdi
callq 0x3930
jmp 0x3d06
leaq -0x241(%rbp), %rdi
movq %rdi, -0x358(%rbp)
callq 0x2230
movq -0x358(%rbp), %rdx
leaq 0x170b(%rip), %rsi      # 0x5432
leaq -0x240(%rbp), %rdi
callq 0x4300
jmp 0x3d35
leaq -0x1a8(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x3b20
jmp 0x3d4a
leaq -0x240(%rbp), %rdi
callq 0x20a0
leaq -0x241(%rbp), %rdi
callq 0x2170
leaq -0x269(%rbp), %rdi
movq %rdi, -0x360(%rbp)
callq 0x2230
movq -0x360(%rbp), %rdx
leaq 0x16a3(%rip), %rsi      # 0x5426
leaq -0x268(%rbp), %rdi
callq 0x4300
jmp 0x3d91
leaq -0x58(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x3a90
jmp 0x3da3
leaq -0x268(%rbp), %rdi
callq 0x20a0
leaq -0x269(%rbp), %rdi
callq 0x2170
leaq -0x291(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0x2230
movq -0x368(%rbp), %rdx
leaq 0x1645(%rip), %rsi      # 0x5421
leaq -0x290(%rbp), %rdi
callq 0x4300
jmp 0x3dea
leaq -0xe0(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x2f90
jmp 0x3dff
leaq -0x290(%rbp), %rdi
callq 0x20a0
leaq -0x291(%rbp), %rdi
callq 0x2170
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x2230
movq -0x370(%rbp), %rdx
leaq 0x15fa(%rip), %rsi      # 0x5432
leaq -0x2b8(%rbp), %rdi
callq 0x4300
jmp 0x3e46
leaq -0x158(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x2f00
jmp 0x3e5b
leaq -0x2b8(%rbp), %rdi
callq 0x20a0
leaq -0x2b9(%rbp), %rdi
callq 0x2170
leaq -0x2e1(%rbp), %rdi
movq %rdi, -0x378(%rbp)
callq 0x2230
movq -0x378(%rbp), %rdx
leaq 0x158d(%rip), %rsi      # 0x5421
leaq -0x2e0(%rbp), %rdi
callq 0x4300
jmp 0x3ea2
leaq -0xe0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x2d00
jmp 0x3eb7
leaq -0x2e0(%rbp), %rdi
callq 0x20a0
leaq -0x2e1(%rbp), %rdi
callq 0x2170
leaq -0x309(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x2230
movq -0x380(%rbp), %rdx
leaq 0x1531(%rip), %rsi      # 0x5421
leaq -0x308(%rbp), %rdi
callq 0x4300
jmp 0x3efe
leaq -0x1f8(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x3610
jmp 0x3f13
leaq -0x308(%rbp), %rdi
callq 0x20a0
leaq -0x309(%rbp), %rdi
callq 0x2170
leaq -0x331(%rbp), %rdi
movq %rdi, -0x388(%rbp)
callq 0x2230
movq -0x388(%rbp), %rdx
leaq 0x14e6(%rip), %rsi      # 0x5432
leaq -0x330(%rbp), %rdi
callq 0x4300
jmp 0x3f5a
leaq -0x1f8(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x3580
jmp 0x3f6f
leaq -0x330(%rbp), %rdi
callq 0x20a0
leaq -0x331(%rbp), %rdi
callq 0x2170
leaq -0x1f8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3420
jmp 0x3f9c
movl $0x0, -0x4(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x3210
leaq -0x1a8(%rbp), %rdi
callq 0x3880
leaq -0x158(%rbp), %rdi
callq 0x2c50
leaq -0xe0(%rbp), %rdi
callq 0x2c50
leaq -0x58(%rbp), %rdi
callq 0x3880
movl -0x4(%rbp), %eax
addq $0x390, %rsp            # imm = 0x390
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4017
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x20a0
leaq -0x79(%rbp), %rdi
callq 0x2170
jmp 0x42f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4057
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x20a0
leaq -0x101(%rbp), %rdi
callq 0x2170
jmp 0x42ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x42de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x42d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x40c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x20a0
leaq -0x219(%rbp), %rdi
callq 0x2170
jmp 0x42c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x42ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4122
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x20a0
leaq -0x241(%rbp), %rdi
callq 0x2170
jmp 0x42ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4165
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x20a0
leaq -0x269(%rbp), %rdi
callq 0x2170
jmp 0x42ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x41a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x20a0
leaq -0x291(%rbp), %rdi
callq 0x2170
jmp 0x42ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x41eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x20a0
leaq -0x2b9(%rbp), %rdi
callq 0x2170
jmp 0x42ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x422e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x20a0
leaq -0x2e1(%rbp), %rdi
callq 0x2170
jmp 0x42ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x426e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x20a0
leaq -0x309(%rbp), %rdi
callq 0x2170
jmp 0x42ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x42ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x20a0
leaq -0x331(%rbp), %rdi
callq 0x2170
leaq -0x1f8(%rbp), %rdi
callq 0x3210
leaq -0x1a8(%rbp), %rdi
callq 0x3880
leaq -0x158(%rbp), %rdi
callq 0x2c50
leaq -0xe0(%rbp), %rdi
callq 0x2c50
leaq -0x58(%rbp), %rdi
callq 0x3880
movq -0x88(%rbp), %rdi
callq 0x2220
nop