// File: t0mm4rx[P]piscine_cpp/day01/ex02/ZombieEvent.cpp
// Function: ZombieEvent::randomChump()
Zombie *ZombieEvent::randomChump(void)
{
	std::string names[] = {"Gabrielle", "Charlie", "Aimée", "Jacqueline", "Adele", "Marie", "Harris", "Jessie", "Calvin", "John", "Jordan"};

	if (this->type == "")
		this->type = "NoType";
	return (this->newZombie(names[rand() % 11]));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movb $0x1, -0x197(%rbp)
leaq -0x170(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x179(%rbp), %rdi
movq %rdi, -0x1c0(%rbp)
callq 0x2230
movq -0x1c8(%rbp), %rdi
movq -0x1c0(%rbp), %rdx
leaq 0x1945(%rip), %rsi      # 0x4013
callq 0x2da0
jmp 0x26d5
leaq -0x150(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x18d(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x2230
movq -0x1e0(%rbp), %rdi
movq -0x1d8(%rbp), %rdx
leaq 0x190b(%rip), %rsi      # 0x401d
callq 0x2da0
jmp 0x2719
leaq -0x130(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x18e(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x2230
movq -0x1f0(%rbp), %rdi
movq -0x1e8(%rbp), %rdx
leaq 0x18cf(%rip), %rsi      # 0x4025
callq 0x2da0
jmp 0x275d
leaq -0x110(%rbp), %rax
movq %rax, -0x200(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x18f(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
callq 0x2230
movq -0x200(%rbp), %rdi
movq -0x1f8(%rbp), %rdx
leaq 0x1892(%rip), %rsi      # 0x402c
callq 0x2da0
jmp 0x27a1
leaq -0xf0(%rbp), %rax
movq %rax, -0x210(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x190(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x2230
movq -0x210(%rbp), %rdi
movq -0x208(%rbp), %rdx
leaq 0x1859(%rip), %rsi      # 0x4037
callq 0x2da0
jmp 0x27e5
leaq -0xd0(%rbp), %rax
movq %rax, -0x220(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x191(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0x2230
movq -0x220(%rbp), %rdi
movq -0x218(%rbp), %rdx
leaq 0x181b(%rip), %rsi      # 0x403d
callq 0x2da0
jmp 0x2829
leaq -0xb0(%rbp), %rax
movq %rax, -0x230(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x192(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0x2230
movq -0x230(%rbp), %rdi
movq -0x228(%rbp), %rdx
leaq 0x17dd(%rip), %rsi      # 0x4043
callq 0x2da0
jmp 0x286d
leaq -0x90(%rbp), %rax
movq %rax, -0x240(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x193(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x2230
movq -0x240(%rbp), %rdi
movq -0x238(%rbp), %rdx
leaq 0x17a0(%rip), %rsi      # 0x404a
callq 0x2da0
jmp 0x28b1
leaq -0x70(%rbp), %rax
movq %rax, -0x250(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x194(%rbp), %rdi
movq %rdi, -0x248(%rbp)
callq 0x2230
movq -0x250(%rbp), %rdi
movq -0x248(%rbp), %rdx
leaq 0x1766(%rip), %rsi      # 0x4051
callq 0x2da0
jmp 0x28f2
leaq -0x50(%rbp), %rax
movq %rax, -0x260(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x195(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x2230
movq -0x260(%rbp), %rdi
movq -0x258(%rbp), %rdx
leaq 0x172c(%rip), %rsi      # 0x4058
callq 0x2da0
jmp 0x2933
leaq -0x30(%rbp), %rax
movq %rax, -0x270(%rbp)
movq %rax, -0x178(%rbp)
leaq -0x196(%rbp), %rdi
movq %rdi, -0x268(%rbp)
callq 0x2230
movq -0x270(%rbp), %rdi
movq -0x268(%rbp), %rdx
leaq 0x16f0(%rip), %rsi      # 0x405d
callq 0x2da0
jmp 0x2974
movb $0x0, -0x197(%rbp)
leaq -0x196(%rbp), %rdi
callq 0x2190
leaq -0x195(%rbp), %rdi
callq 0x2190
leaq -0x194(%rbp), %rdi
callq 0x2190
leaq -0x193(%rbp), %rdi
callq 0x2190
leaq -0x192(%rbp), %rdi
callq 0x2190
leaq -0x191(%rbp), %rdi
callq 0x2190
leaq -0x190(%rbp), %rdi
callq 0x2190
leaq -0x18f(%rbp), %rdi
callq 0x2190
leaq -0x18e(%rbp), %rdi
callq 0x2190
leaq -0x18d(%rbp), %rdi
callq 0x2190
leaq -0x179(%rbp), %rdi
callq 0x2190
movq -0x1d0(%rbp), %rdi
leaq 0x15ff(%rip), %rsi      # 0x400c
callq 0x2e50
movb %al, -0x271(%rbp)
jmp 0x2a1a
movb -0x271(%rbp), %al
testb $0x1, %al
jne 0x2a29
jmp 0x2c27
movq -0x1d0(%rbp), %rdi
leaq 0x162d(%rip), %rsi      # 0x4064
callq 0x21d0
jmp 0x2a3e
jmp 0x2c27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2ba7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2b3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x196(%rbp), %rdi
callq 0x2190
leaq -0x195(%rbp), %rdi
callq 0x2190
leaq -0x194(%rbp), %rdi
callq 0x2190
leaq -0x193(%rbp), %rdi
callq 0x2190
leaq -0x192(%rbp), %rdi
callq 0x2190
leaq -0x191(%rbp), %rdi
callq 0x2190
leaq -0x190(%rbp), %rdi
callq 0x2190
leaq -0x18f(%rbp), %rdi
callq 0x2190
leaq -0x18e(%rbp), %rdi
callq 0x2190
leaq -0x18d(%rbp), %rdi
callq 0x2190
leaq -0x179(%rbp), %rdi
callq 0x2190
testb $0x1, -0x197(%rbp)
jne 0x2bbe
jmp 0x2c0b
movq -0x178(%rbp), %rax
leaq -0x170(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x280(%rbp)
je 0x2c09
movq -0x280(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x288(%rbp)
callq 0x20b0
movq -0x288(%rbp), %rax
leaq -0x170(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x280(%rbp)
jne 0x2bd8
jmp 0x2c0b
jmp 0x2d67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
jmp 0x2d19
callq 0x2050
movslq %eax, %rcx
imulq $0x2e8ba2e9, %rcx, %rdx # imm = 0x2E8BA2E9
movq %rdx, %rcx
shrq $0x3f, %rcx
sarq $0x21, %rdx
addl %ecx, %edx
movl %edx, %ecx
leal (%rcx,%rcx,4), %esi
movl %esi, %edx
leal (%rcx,%rdx,2), %ecx
subl %ecx, %eax
cltq
shlq $0x5, %rax
leaq -0x170(%rbp,%rax), %rsi
leaq -0x1b8(%rbp), %rdi
callq 0x2090
jmp 0x2c6b
movq -0x1d0(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x2590
movq %rax, -0x290(%rbp)
jmp 0x2c87
movq -0x290(%rbp), %rax
movq %rax, -0x8(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x20b0
leaq -0x170(%rbp), %rax
movq %rax, -0x2a0(%rbp)
addq $0x160, %rax            # imm = 0x160
movq %rax, -0x298(%rbp)
jmp 0x2cdb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x188(%rbp)
movl %eax, -0x18c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x20b0
jmp 0x2d19
movq -0x298(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x20b0
movq -0x2a0(%rbp), %rcx
movq -0x2a8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x298(%rbp)
jne 0x2cdb
movq -0x8(%rbp), %rax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
leaq -0x170(%rbp), %rax
movq %rax, -0x2b8(%rbp)
addq $0x160, %rax            # imm = 0x160
movq %rax, -0x2b0(%rbp)
movq -0x2b0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x20b0
movq -0x2b8(%rbp), %rcx
movq -0x2c0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x2b0(%rbp)
jne 0x2d34
jmp 0x2d67
movq -0x188(%rbp), %rdi
callq 0x2220
nopw %cs:(%rax,%rax)