// File: /workspace/github_cpp_makefile_star2_O1/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 0x134a(%rip), %rsi      # 0x5448
leaq 0x1347(%rip), %rdx      # 0x544c
leaq -0x160(%rbp), %rbx
movq %rbx, %rdi
callq 0x368e
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
movl $0x17, %edx
callq 0x251c
movq -0x160(%rbp), %rdi
cmpq %r14, %rdi
je 0x4140
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x2110
leaq -0x1d8(%rbp), %rdi
callq 0x2ff0
leaq -0x130(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1029(%rip), %rsi      # 0x5187
leaq 0x102a(%rip), %rdx      # 0x518f
leaq -0x140(%rbp), %rdi
callq 0x368e
leaq -0x110(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x12c5(%rip), %rsi      # 0x5448
leaq 0x12c2(%rip), %rdx      # 0x544c
leaq -0x120(%rbp), %rdi
callq 0x368e
leaq -0x1d8(%rbp), %rdi
leaq -0x140(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0x312c
movq %rax, %rbx
movq -0x120(%rbp), %rdi
cmpq %r15, %rdi
je 0x41ce
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x140(%rbp), %rdi
cmpq %r14, %rdi
je 0x41e9
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 0x1231(%rip), %rsi      # 0x544d
leaq 0x122d(%rip), %rdx      # 0x5450
leaq -0x100(%rbp), %rdi
callq 0x368e
leaq -0xd0(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x1207(%rip), %rsi      # 0x5448
leaq 0x1204(%rip), %rdx      # 0x544c
leaq -0xe0(%rbp), %rdi
callq 0x368e
leaq -0x1d8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x312c
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0x4289
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x100(%rbp), %rdi
cmpq %r14, %rdi
je 0x42a4
movq -0xf0(%rbp), %rsi
incq %rsi
callq 0x2110
leaq -0xb0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x1138(%rip), %rsi      # 0x53ee
leaq 0x113a(%rip), %rdx      # 0x53f7
leaq -0xc0(%rbp), %rdi
callq 0x368e
leaq -0x90(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x1176(%rip), %rsi      # 0x5451
leaq 0x1174(%rip), %rdx      # 0x5456
leaq -0xa0(%rbp), %rdi
callq 0x368e
leaq -0x1d8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x312c
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x4326
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0xc0(%rbp), %rdi
cmpq %r14, %rdi
je 0x4341
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 0xe1f(%rip), %rsi       # 0x5190
leaq 0xe24(%rip), %rdx       # 0x519c
leaq -0x80(%rbp), %rdi
callq 0x368e
leaq -0x50(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x10c7(%rip), %rsi      # 0x5457
leaq 0x10c7(%rip), %rdx      # 0x545e
leaq -0x60(%rbp), %rdi
callq 0x368e
leaq -0x1d8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x312c
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x43cc
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x43e1
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 0x30f2
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 0x4444
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x4444
movq %rax, %rbx
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x4544
movq -0x70(%rbp), %rsi
jmp 0x4510
jmp 0x4541
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x4482
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x4482
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
cmpq %r14, %rdi
je 0x4544
movq -0xb0(%rbp), %rsi
jmp 0x4510
jmp 0x4541
movq %rax, %rbx
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0x44c3
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x44c3
movq %rax, %rbx
movq -0x100(%rbp), %rdi
cmpq %r14, %rdi
je 0x4544
movq -0xf0(%rbp), %rsi
jmp 0x4510
jmp 0x4541
movq %rax, %rbx
movq -0x120(%rbp), %rdi
cmpq %r15, %rdi
je 0x44fd
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x44fd
movq %rax, %rbx
movq -0x140(%rbp), %rdi
cmpq %r14, %rdi
je 0x4544
movq -0x130(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x4544
jmp 0x4541
movq %rax, %rbx
jmp 0x4550
movq %rax, %rbx
movq -0x160(%rbp), %rdi
cmpq %r14, %rdi
je 0x4559
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x4559
movq %rax, %rbx
leaq -0x1d8(%rbp), %rdi
callq 0x30f2
leaq -0x40(%rbp), %rdi
callq 0x2610
movq %rbx, %rdi
callq 0x21c0