// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
leaq -0x150(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1362(%rip), %rsi      # 0x5448
leaq 0x135f(%rip), %rdx      # 0x544c
leaq -0x160(%rbp), %rbx
movq %rbx, %rdi
callq 0x3672
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
movl $0x17, %edx
callq 0x251c
movq -0x160(%rbp), %rdi
cmpq %r14, %rdi
je 0x4128
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x2110
leaq -0x1d8(%rbp), %rdi
callq 0x2ff4
leaq -0x130(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1041(%rip), %rsi      # 0x5187
leaq 0x1042(%rip), %rdx      # 0x518f
leaq -0x140(%rbp), %rdi
callq 0x3672
leaq -0x110(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x12dd(%rip), %rsi      # 0x5448
leaq 0x12da(%rip), %rdx      # 0x544c
leaq -0x120(%rbp), %rdi
callq 0x3672
leaq -0x1d8(%rbp), %rdi
leaq -0x140(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0x3130
movq %rax, %rbx
movq -0x120(%rbp), %rdi
cmpq %r15, %rdi
je 0x41b6
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x140(%rbp), %rdi
cmpq %r14, %rdi
je 0x41d1
movq -0x130(%rbp), %rsi
incq %rsi
callq 0x2110
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x267e
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x27aa
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x8(%rax)
leaq -0xf0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1249(%rip), %rsi      # 0x544d
leaq 0x1245(%rip), %rdx      # 0x5450
leaq -0x100(%rbp), %rdi
callq 0x3672
leaq -0xd0(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x121f(%rip), %rsi      # 0x5448
leaq 0x121c(%rip), %rdx      # 0x544c
leaq -0xe0(%rbp), %rdi
callq 0x3672
leaq -0x1d8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x3130
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0x4271
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x100(%rbp), %rdi
cmpq %r14, %rdi
je 0x428c
movq -0xf0(%rbp), %rsi
incq %rsi
callq 0x2110
leaq -0xb0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1150(%rip), %rsi      # 0x53ee
leaq 0x1152(%rip), %rdx      # 0x53f7
leaq -0xc0(%rbp), %rdi
callq 0x3672
leaq -0x90(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x118e(%rip), %rsi      # 0x5451
leaq 0x118c(%rip), %rdx      # 0x5456
leaq -0xa0(%rbp), %rdi
callq 0x3672
leaq -0x1d8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x3130
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x430e
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0xc0(%rbp), %rdi
cmpq %r14, %rdi
je 0x4329
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x2110
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x267e
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x27aa
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x8(%rax)
leaq -0x70(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xe37(%rip), %rsi       # 0x5190
leaq 0xe3c(%rip), %rdx       # 0x519c
leaq -0x80(%rbp), %rdi
callq 0x3672
leaq -0x50(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x10df(%rip), %rsi      # 0x5457
leaq 0x10df(%rip), %rdx      # 0x545e
leaq -0x60(%rbp), %rdi
callq 0x3672
leaq -0x1d8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x3130
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x43b4
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x43c9
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x2110
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x267e
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x27aa
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x8(%rax)
leaq -0x1d8(%rbp), %rdi
callq 0x30f6
leaq -0x40(%rbp), %rdi
callq 0x2610
xorl %eax, %eax
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x442c
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x442c
movq %rax, %rbx
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x452c
movq -0x70(%rbp), %rsi
jmp 0x44f8
jmp 0x4529
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x446a
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x446a
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
cmpq %r14, %rdi
je 0x452c
movq -0xb0(%rbp), %rsi
jmp 0x44f8
jmp 0x4529
movq %rax, %rbx
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0x44ab
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x44ab
movq %rax, %rbx
movq -0x100(%rbp), %rdi
cmpq %r14, %rdi
je 0x452c
movq -0xf0(%rbp), %rsi
jmp 0x44f8
jmp 0x4529
movq %rax, %rbx
movq -0x120(%rbp), %rdi
cmpq %r15, %rdi
je 0x44e5
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x44e5
movq %rax, %rbx
movq -0x140(%rbp), %rdi
cmpq %r14, %rdi
je 0x452c
movq -0x130(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x452c
jmp 0x4529
movq %rax, %rbx
jmp 0x4538
movq %rax, %rbx
movq -0x160(%rbp), %rdi
cmpq %r14, %rdi
je 0x4541
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x4541
movq %rax, %rbx
leaq -0x1d8(%rbp), %rdi
callq 0x30f6
leaq -0x40(%rbp), %rdi
callq 0x2610
movq %rbx, %rdi
callq 0x21c0