// File: t0mm4rx[P]piscine_cpp/day05/ex03/main.cpp
// Function: main
int main(void)
{
	Form		*form;
	Bureaucrat	john("John", 23);
	Intern		intern;

	form = intern.makeForm("robotomy", "John");
	john.signForm(*form);
	john.executeForm(*form);
	delete form;
	form = intern.makeForm("shr", "John");
	form = intern.makeForm("shrubbery", "house");
	john.signForm(*form);
	john.executeForm(*form);
	delete form;
	form = intern.makeForm("presidential", "Micheal");
	john.signForm(*form);
	john.executeForm(*form);
	delete form;
	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movl $0x0, -0x4(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0x230(%rbp)
callq 0x3280
movq -0x230(%rbp), %rdx
leaq 0x1878(%rip), %rsi      # 0x7448
leaq -0x58(%rbp), %rdi
callq 0x4dc0
jmp 0x5bdb
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
movl $0x17, %edx
callq 0x3620
jmp 0x5bef
leaq -0x58(%rbp), %rdi
callq 0x32e8
leaq -0x59(%rbp), %rdi
callq 0x3180
leaq -0xe8(%rbp), %rdi
callq 0x45d0
jmp 0x5c0f
leaq -0x109(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x3280
movq -0x238(%rbp), %rdx
leaq 0x152d(%rip), %rsi      # 0x715d
leaq -0x108(%rbp), %rdi
callq 0x4dc0
jmp 0x5c3e
leaq -0x131(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x3280
movq -0x240(%rbp), %rdx
leaq 0x17e9(%rip), %rsi      # 0x7448
leaq -0x130(%rbp), %rdi
callq 0x4dc0
jmp 0x5c6d
leaq -0xe8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
leaq -0x130(%rbp), %rdx
callq 0x4780
movq %rax, -0x248(%rbp)
jmp 0x5c90
movq -0x248(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x32e8
leaq -0x131(%rbp), %rdi
callq 0x3180
leaq -0x108(%rbp), %rdi
callq 0x32e8
leaq -0x109(%rbp), %rdi
callq 0x3180
movq -0x10(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x38b0
jmp 0x5cda
movq -0x10(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x3a10
jmp 0x5ce9
movq -0x10(%rbp), %rax
movq %rax, -0x250(%rbp)
cmpq $0x0, %rax
je 0x5d07
movq -0x250(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x3280
movq -0x258(%rbp), %rdx
leaq 0x1725(%rip), %rsi      # 0x744d
leaq -0x158(%rbp), %rdi
callq 0x4dc0
jmp 0x5d36
leaq -0x181(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x3280
movq -0x260(%rbp), %rdx
leaq 0x16f1(%rip), %rsi      # 0x7448
leaq -0x180(%rbp), %rdi
callq 0x4dc0
jmp 0x5d65
leaq -0xe8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
leaq -0x180(%rbp), %rdx
callq 0x4780
movq %rax, -0x268(%rbp)
jmp 0x5d88
movq -0x268(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x32e8
leaq -0x181(%rbp), %rdi
callq 0x3180
leaq -0x158(%rbp), %rdi
callq 0x32e8
leaq -0x159(%rbp), %rdi
callq 0x3180
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x3280
movq -0x270(%rbp), %rdx
leaq 0x160a(%rip), %rsi      # 0x73ee
leaq -0x1a8(%rbp), %rdi
callq 0x4dc0
jmp 0x5df2
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x3280
movq -0x278(%rbp), %rdx
leaq 0x163e(%rip), %rsi      # 0x7451
leaq -0x1d0(%rbp), %rdi
callq 0x4dc0
jmp 0x5e21
leaq -0xe8(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1d0(%rbp), %rdx
callq 0x4780
movq %rax, -0x280(%rbp)
jmp 0x5e44
movq -0x280(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x32e8
leaq -0x1d1(%rbp), %rdi
callq 0x3180
leaq -0x1a8(%rbp), %rdi
callq 0x32e8
leaq -0x1a9(%rbp), %rdi
callq 0x3180
movq -0x10(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x38b0
jmp 0x5e8e
movq -0x10(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x3a10
jmp 0x5e9d
movq -0x10(%rbp), %rax
movq %rax, -0x288(%rbp)
cmpq $0x0, %rax
je 0x5ebb
movq -0x288(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x3280
movq -0x290(%rbp), %rdx
leaq 0x128a(%rip), %rsi      # 0x7166
leaq -0x1f8(%rbp), %rdi
callq 0x4dc0
jmp 0x5eea
leaq -0x221(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x3280
movq -0x298(%rbp), %rdx
leaq 0x154c(%rip), %rsi      # 0x7457
leaq -0x220(%rbp), %rdi
callq 0x4dc0
jmp 0x5f19
leaq -0xe8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x220(%rbp), %rdx
callq 0x4780
movq %rax, -0x2a0(%rbp)
jmp 0x5f3c
movq -0x2a0(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x32e8
leaq -0x221(%rbp), %rdi
callq 0x3180
leaq -0x1f8(%rbp), %rdi
callq 0x32e8
leaq -0x1f9(%rbp), %rdi
callq 0x3180
movq -0x10(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x38b0
jmp 0x5f86
movq -0x10(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x3a10
jmp 0x5f95
movq -0x10(%rbp), %rax
movq %rax, -0x2a8(%rbp)
cmpq $0x0, %rax
je 0x5fb3
movq -0x2a8(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movl $0x0, -0x4(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x4730
leaq -0x38(%rbp), %rdi
callq 0x3800
movl -0x4(%rbp), %eax
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x5ffe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x32e8
leaq -0x59(%rbp), %rdi
callq 0x3180
jmp 0x61af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x61a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x6069
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x6051
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x32e8
leaq -0x131(%rbp), %rdi
callq 0x3180
leaq -0x108(%rbp), %rdi
callq 0x32e8
leaq -0x109(%rbp), %rdi
callq 0x3180
jmp 0x619a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x619a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x60d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x60bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x32e8
leaq -0x181(%rbp), %rdi
callq 0x3180
leaq -0x158(%rbp), %rdi
callq 0x32e8
leaq -0x159(%rbp), %rdi
callq 0x3180
jmp 0x619a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x6134
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x611c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x32e8
leaq -0x1d1(%rbp), %rdi
callq 0x3180
leaq -0x1a8(%rbp), %rdi
callq 0x32e8
leaq -0x1a9(%rbp), %rdi
callq 0x3180
jmp 0x619a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x618e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x6176
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x32e8
leaq -0x221(%rbp), %rdi
callq 0x3180
leaq -0x1f8(%rbp), %rdi
callq 0x32e8
leaq -0x1f9(%rbp), %rdi
callq 0x3180
leaq -0xe8(%rbp), %rdi
callq 0x4730
leaq -0x38(%rbp), %rdi
callq 0x3800
movq -0x68(%rbp), %rdi
callq 0x3270