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

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

	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movl $0x0, -0x4(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x2110
movl %eax, %edi
callq 0x2120
leaq -0x79(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x2230
movq -0x278(%rbp), %rdx
leaq 0xdc1(%rip), %rsi       # 0x42c1
leaq -0x78(%rbp), %rdi
callq 0x3a10
jmp 0x350b
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x2fb0
jmp 0x351a
leaq -0x78(%rbp), %rdi
callq 0x20a0
leaq -0x79(%rbp), %rdi
callq 0x2170
leaq -0x101(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x2230
movq -0x280(%rbp), %rdx
leaq 0xd79(%rip), %rsi       # 0x42c6
leaq -0x100(%rbp), %rdi
callq 0x3a10
jmp 0x355b
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x2a00
jmp 0x3570
leaq -0x100(%rbp), %rdi
callq 0x20a0
leaq -0x101(%rbp), %rdi
callq 0x2170
leaq -0x158(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x2af0
jmp 0x359d
leaq -0x1a8(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x30a0
jmp 0x35af
leaq -0x58(%rbp), %rdi
callq 0x3240
jmp 0x35ba
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x2230
movq -0x288(%rbp), %rdx
leaq 0xcf0(%rip), %rsi       # 0x42cb
leaq -0x1c8(%rbp), %rdi
callq 0x3a10
jmp 0x35e9
leaq -0x1a8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x3430
jmp 0x35fe
leaq -0x1c8(%rbp), %rdi
callq 0x20a0
leaq -0x1c9(%rbp), %rdi
callq 0x2170
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x2230
movq -0x290(%rbp), %rdx
leaq 0xc8f(%rip), %rsi       # 0x42c6
leaq -0x1f0(%rbp), %rdi
callq 0x3a10
jmp 0x3645
leaq -0x58(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x33a0
jmp 0x3657
leaq -0x1f0(%rbp), %rdi
callq 0x20a0
leaq -0x1f1(%rbp), %rdi
callq 0x2170
leaq -0x219(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x2230
movq -0x298(%rbp), %rdx
leaq 0xc31(%rip), %rsi       # 0x42c1
leaq -0x218(%rbp), %rdi
callq 0x3a10
jmp 0x369e
leaq -0xe0(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x2f20
jmp 0x36b3
leaq -0x218(%rbp), %rdi
callq 0x20a0
leaq -0x219(%rbp), %rdi
callq 0x2170
leaq -0x241(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x2230
movq -0x2a0(%rbp), %rdx
leaq 0xbdf(%rip), %rsi       # 0x42cb
leaq -0x240(%rbp), %rdi
callq 0x3a10
jmp 0x36fa
leaq -0x158(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x2e90
jmp 0x370f
leaq -0x240(%rbp), %rdi
callq 0x20a0
leaq -0x241(%rbp), %rdi
callq 0x2170
leaq -0x269(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x2230
movq -0x2a8(%rbp), %rdx
leaq 0xb79(%rip), %rsi       # 0x42c1
leaq -0x268(%rbp), %rdi
callq 0x3a10
jmp 0x3756
leaq -0xe0(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x2c90
jmp 0x376b
leaq -0x268(%rbp), %rdi
callq 0x20a0
leaq -0x269(%rbp), %rdi
callq 0x2170
movl $0x0, -0x4(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x3190
leaq -0x158(%rbp), %rdi
callq 0x2be0
leaq -0xe0(%rbp), %rdi
callq 0x2be0
leaq -0x58(%rbp), %rdi
callq 0x3190
movl -0x4(%rbp), %eax
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x37f2
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 0x39f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x3832
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 0x39f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x39e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x39d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x39cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x38ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x20a0
leaq -0x1c9(%rbp), %rdi
callq 0x2170
jmp 0x39cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x38fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x20a0
leaq -0x1f1(%rbp), %rdi
callq 0x2170
jmp 0x39cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x3940
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 0x39cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x3980
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 0x39cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x39c0
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
leaq -0x1a8(%rbp), %rdi
callq 0x3190
leaq -0x158(%rbp), %rdi
callq 0x2be0
leaq -0xe0(%rbp), %rdi
callq 0x2be0
leaq -0x58(%rbp), %rdi
callq 0x3190
movq -0x88(%rbp), %rdi
callq 0x2220
nopw %cs:(%rax,%rax)
nop