// File: /workspace/github_cpp_makefile_star2_O2/t0mm4rx[P]piscine_cpp/day05/ex02/main.cpp
// Function: main
int main(void)
{
	Bureaucrat				john("John", 4);
	Bureaucrat				johnson("Johnson", 140);
	ShrubberyCreationForm	form1("tree");
	RobotomyRequestForm		form2("Micheal");
	PresidentialPardonForm	form3("Johson");

	johnson.signForm(form1);
	johnson.executeForm(form1);
	john.executeForm(form1);
	john.executeForm(form2);
	john.signForm(form2);
	john.executeForm(form2);
	johnson.signForm(form3);
	john.executeForm(form3);
	john.signForm(form3);
	john.executeForm(form3);
	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
leaq 0xec8(%rip), %rsi       # 0x441f
leaq -0x100(%rbp), %rdi
leaq -0x1b0(%rbp), %rdx
callq 0x2e5c
leaq -0x38(%rbp), %rdi
leaq -0x100(%rbp), %rsi
pushq $0x4
popq %rdx
callq 0x240c
leaq -0x100(%rbp), %rdi
callq 0x21a8
leaq 0xe94(%rip), %rsi       # 0x4424
leaq -0xe0(%rbp), %rdi
leaq -0x1b0(%rbp), %rdx
callq 0x2e5c
leaq -0x60(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movl $0x8c, %edx
callq 0x240c
leaq -0xe0(%rbp), %rdi
callq 0x21a8
leaq 0xe61(%rip), %rsi       # 0x442c
leaq -0xc0(%rbp), %rdi
leaq -0x208(%rbp), %rdx
callq 0x2e5c
leaq -0x1b0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x31b4
leaq -0xc0(%rbp), %rdi
callq 0x21a8
leaq 0xe2d(%rip), %rsi       # 0x4431
leaq -0xa0(%rbp), %rdi
leaq -0x158(%rbp), %rdx
callq 0x2e5c
leaq -0x208(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x2f38
leaq -0xa0(%rbp), %rdi
callq 0x21a8
leaq 0xdfc(%rip), %rsi       # 0x4439
leaq -0x80(%rbp), %rdi
leaq -0x9(%rbp), %rdx
callq 0x2e5c
leaq -0x158(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x2c00
leaq -0x80(%rbp), %rdi
callq 0x21a8
leaq -0x60(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x2512
leaq -0x60(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x2604
leaq -0x38(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x2604
leaq -0x38(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x2604
leaq -0x38(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x2512
leaq -0x38(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x2604
leaq -0x60(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x2512
leaq -0x38(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x2604
leaq -0x38(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x2512
leaq -0x38(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x2604
leaq -0x158(%rbp), %rdi
callq 0x2da4
leaq -0x208(%rbp), %rdi
callq 0x30dc
leaq -0x1b0(%rbp), %rdi
callq 0x335c
leaq -0x60(%rbp), %rdi
callq 0x24d0
leaq -0x38(%rbp), %rdi
callq 0x24d0
xorl %eax, %eax
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %rbp
retq
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x21a8
jmp 0x37bf
movq %rax, %rbx
jmp 0x37bf
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x21a8
jmp 0x37cb
movq %rax, %rbx
jmp 0x37cb
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x21a8
jmp 0x37d7
movq %rax, %rbx
jmp 0x37d7
movq %rax, %rbx
leaq -0xe0(%rbp), %rdi
callq 0x21a8
jmp 0x37e0
movq %rax, %rbx
jmp 0x37e0
movq %rax, %rbx
leaq -0x100(%rbp), %rdi
callq 0x21a8
jmp 0x37e9
movq %rax, %rbx
jmp 0x37e9
movq %rax, %rbx
leaq -0x158(%rbp), %rdi
callq 0x2da4
leaq -0x208(%rbp), %rdi
callq 0x30dc
leaq -0x1b0(%rbp), %rdi
callq 0x335c
leaq -0x60(%rbp), %rdi
callq 0x24d0
leaq -0x38(%rbp), %rdi
callq 0x24d0
movq %rbx, %rdi
callq 0x2160