// File: /workspace/github_cpp_makefile_star2_O1/t0mm4rx[P]piscine_cpp/day01/ex06/main.cpp
// Function: main
int main()
{

	Weapon club1 = Weapon("crude spiked club");
	HumanA bob("Bob", club1);
	bob.attack();
	club1.setType("some other type of club");
	bob.attack();

	Weapon club2 = Weapon("crude spiked club");
	HumanB jim("Jim");
	jim.setWeapon(club2);
	jim.attack();
	club2.setType("some other type of club");
	jim.attack();

}

// Assembly:
pushq %r14
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
leaq 0x148(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xa78(%rip), %rsi       # 0x2041
leaq 0xa82(%rip), %rdx       # 0x2052
leaq 0x138(%rsp), %rbx
movq %rbx, %rdi
callq 0x19b2
leaq 0xf0(%rsp), %rdi
movq %rbx, %rsi
callq 0x14d8
movq 0x138(%rsp), %rdi
cmpq %r14, %rdi
je 0x160d
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0xb8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xa33(%rip), %rsi       # 0x2053
leaq 0xa2f(%rip), %rdx       # 0x2056
leaq 0xa8(%rsp), %rdi
callq 0x19b2
leaq 0x110(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
callq 0x126c
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x166e
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x110(%rsp), %rdi
callq 0x1290
leaq 0x98(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x9c9(%rip), %rsi       # 0x2057
leaq 0x9d9(%rip), %rdx       # 0x206e
leaq 0x88(%rsp), %rdi
callq 0x19b2
leaq 0xf0(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x1584
movq 0x88(%rsp), %rdi
cmpq %r14, %rdi
je 0x16d4
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x110(%rsp), %rdi
callq 0x1290
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x950(%rip), %rsi       # 0x2041
leaq 0x95a(%rip), %rdx       # 0x2052
leaq 0x48(%rsp), %rdi
callq 0x19b2
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x14d8
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x1728
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x38(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x937(%rip), %rsi       # 0x206f
leaq 0x933(%rip), %rdx       # 0x2072
leaq 0x28(%rsp), %rdi
callq 0x19b2
leaq 0xc8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x13e8
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x1772
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0xc8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x14d2
leaq 0xc8(%rsp), %rdi
callq 0x140a
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8b6(%rip), %rsi       # 0x2057
leaq 0x8c6(%rip), %rdx       # 0x206e
leaq 0x8(%rsp), %rdi
callq 0x19b2
leaq 0x68(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1584
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x17d8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0xc8(%rsp), %rdi
callq 0x140a
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1806
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1821
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x128(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1842
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x100(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1863
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x10a0
xorl %eax, %eax
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r14
retq
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x1930
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x10a0
jmp 0x1930
jmp 0x192d
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x1951
movq 0x38(%rsp), %rsi
jmp 0x1949
movq %rax, %rbx
jmp 0x1951
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x196c
movq 0x58(%rsp), %rsi
jmp 0x1964
jmp 0x1928
movq %rax, %rbx
movq 0x88(%rsp), %rdi
cmpq %r14, %rdi
je 0x196c
movq 0x98(%rsp), %rsi
jmp 0x1964
jmp 0x1928
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x198d
movq 0xb8(%rsp), %rsi
jmp 0x1985
movq %rax, %rbx
jmp 0x198d
movq %rax, %rbx
movq 0x138(%rsp), %rdi
jmp 0x1999
movq %rax, %rbx
jmp 0x196c
movq %rax, %rbx
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1951
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x196c
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x128(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x198d
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x10a0
leaq 0x100(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x19a9
movq (%r14), %rsi
incq %rsi
callq 0x10a0
movq %rbx, %rdi
callq 0x10d0
nop