// File: /workspace/github_cpp_makefile_star2_O1/t0mm4rx[P]piscine_cpp/day03/ex01/main.cpp
// Function: main
int main(void)
{
	srand(time(0));
	FragTrap john("John");
	FragTrap micheal("Micheal");
	ScavTrap rose("Rose");

	rose.challengeNewcomer();
	john.rangedAttack("Micheal");
	john.vaulthunter_dot_exe("Micheal");
	john.vaulthunter_dot_exe("Micheal");
	john.vaulthunter_dot_exe("Micheal");
	john.vaulthunter_dot_exe("Micheal");
	john.vaulthunter_dot_exe("Micheal");
	rose.challengeNewcomer();
	micheal.vaulthunter_dot_exe("John");
	micheal.takeDamage(30);
	micheal.meleeAttack("John");
	john.takeDamage(20);

	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x160, %rsp            # imm = 0x160
xorl %edi, %edi
callq 0x10d0
movl %eax, %edi
callq 0x10e0
leaq -0x80(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1291(%rip), %rsi      # 0x32d0
leaq 0x128e(%rip), %rdx      # 0x32d4
leaq -0x90(%rbp), %rbx
movq %rbx, %rdi
callq 0x243c
leaq -0xd8(%rbp), %rdi
movq %rbx, %rsi
callq 0x130c
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x207c
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x60(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x124a(%rip), %rsi      # 0x32d5
leaq 0x124a(%rip), %rdx      # 0x32dc
leaq -0x70(%rbp), %rdi
callq 0x243c
leaq -0x120(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x130c
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x20c0
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x40(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x120e(%rip), %rsi      # 0x32dd
leaq 0x120b(%rip), %rdx      # 0x32e1
leaq -0x50(%rbp), %rdi
callq 0x243c
leaq -0x168(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x19d8
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0x2104
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x168(%rbp), %rdi
callq 0x1f00
leaq -0x20(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x11b6(%rip), %rsi      # 0x32d5
leaq 0x11b6(%rip), %rdx      # 0x32dc
leaq -0x30(%rbp), %rdi
callq 0x243c
leaq -0xd8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x155c
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x2154
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x1173(%rip), %rsi      # 0x32d5
leaq 0x1173(%rip), %rdx      # 0x32dc
callq 0x243c
leaq -0xd8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1834
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x2193
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x1134(%rip), %rsi      # 0x32d5
leaq 0x1134(%rip), %rdx      # 0x32dc
callq 0x243c
leaq -0xd8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1834
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x21d2
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x10f5(%rip), %rsi      # 0x32d5
leaq 0x10f5(%rip), %rdx      # 0x32dc
callq 0x243c
leaq -0xd8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1834
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x2211
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x10b6(%rip), %rsi      # 0x32d5
leaq 0x10b6(%rip), %rdx      # 0x32dc
callq 0x243c
leaq -0xd8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1834
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x2250
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x1077(%rip), %rsi      # 0x32d5
leaq 0x1077(%rip), %rdx      # 0x32dc
callq 0x243c
leaq -0xd8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1834
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x228f
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x168(%rbp), %rdi
callq 0x1f00
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x1027(%rip), %rsi      # 0x32d0
leaq 0x1024(%rip), %rdx      # 0x32d4
callq 0x243c
leaq -0x120(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1834
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x22da
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0x120(%rbp), %rdi
movl $0x1e, %esi
callq 0x16c4
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0xfd7(%rip), %rsi       # 0x32d0
leaq 0xfd4(%rip), %rdx       # 0x32d4
callq 0x243c
leaq -0x120(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1610
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x232a
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
leaq -0xd8(%rbp), %rdi
movl $0x14, %esi
callq 0x16c4
leaq -0x168(%rbp), %rdi
callq 0x1ba2
leaq -0x120(%rbp), %rdi
callq 0x14d6
leaq -0xd8(%rbp), %rdi
callq 0x14d6
xorl %eax, %eax
addq $0x160, %rsp            # imm = 0x160
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x2395
jmp 0x240c
jmp 0x2395
jmp 0x240c
jmp 0x2395
jmp 0x240c
jmp 0x2395
jmp 0x240c
jmp 0x2395
jmp 0x240c
jmp 0x2395
jmp 0x240c
jmp 0x2395
jmp 0x240c
movq %rax, %rbx
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x240f
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x1100
jmp 0x240f
jmp 0x240c
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0x241b
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x1100
jmp 0x241b
movq %rax, %rbx
jmp 0x241b
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x2427
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x1100
jmp 0x2427
movq %rax, %rbx
jmp 0x2427
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x2433
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x1100
jmp 0x2433
movq %rax, %rbx
leaq -0x168(%rbp), %rdi
callq 0x1ba2
leaq -0x120(%rbp), %rdi
callq 0x14d6
leaq -0xd8(%rbp), %rdi
callq 0x14d6
movq %rbx, %rdi
callq 0x1150
nop