// File: /workspace/github_cpp_makefile_star2_O3/t0mm4rx[P]piscine_cpp/day02/ex02/main.cpp
// Function: main
int main(void) {
	Fixed a;
	Fixed const b(Fixed(5.05f) * Fixed(2));

	std::cout << "A: " << a << std::endl;
	std::cout << "++A: " << ++a << std::endl;
	std::cout << "A: " << a << std::endl;
	std::cout << "A++: " << a++ << std::endl;
	std::cout << "A: " << a << std::endl;
	std::cout << "B: " << b << std::endl;
	std::cout << "Max(A, B): " << Fixed::max(a, b) << std::endl;
	std::cout << "Min(A, B): " << Fixed::min(a, b) << std::endl;
	std::cout << "A / B: " << a / b << std::endl;
	std::cout << "42.5 / 21.14: " << Fixed(42.5f) / Fixed(21.14f) << std::endl;
	std::cout << "A * B: " << a * b << std::endl;
	std::cout << "42.42 * 21.21: " << Fixed(42.42f) * Fixed(21.21f) << std::endl;
	std::cout << "A + B: " << a + b << std::endl;
	std::cout << "A - B: " << a - b << std::endl;
	return (0);
}

// Assembly:
pushq %rbx
subq $0x20, %rsp
leaq 0x10(%rsp), %rdi
callq 0x120c
leaq 0xc(%rsp), %rdi
movss 0xc10(%rip), %xmm0      # 0x2020
callq 0x121a
leaq 0x14(%rsp), %rdi
movl $0x2, %esi
callq 0x1214
leaq 0x18(%rsp), %rdi
leaq 0xc(%rsp), %rsi
leaq 0x14(%rsp), %rdx
callq 0x1326
leaq 0x14(%rsp), %rdi
callq 0x1234
leaq 0xc(%rsp), %rdi
callq 0x1234
movq 0x2b85(%rip), %rdi      # 0x3fd8
leaq 0xbdc(%rip), %rsi       # 0x2036
movl $0x3, %edx
callq 0x1080
movq 0x2b6d(%rip), %rdi      # 0x3fd8
leaq 0x10(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x2b32(%rip), %rdi      # 0x3fd8
leaq 0xb87(%rip), %rsi       # 0x2034
movl $0x5, %edx
callq 0x1080
leaq 0x10(%rsp), %rdi
callq 0x139e
movq 0x2b10(%rip), %rdi      # 0x3fd8
movq %rax, %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x2ad7(%rip), %rdi      # 0x3fd8
leaq 0xb2e(%rip), %rsi       # 0x2036
movl $0x3, %edx
callq 0x1080
movq 0x2abf(%rip), %rdi      # 0x3fd8
leaq 0x10(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x2a84(%rip), %rdi      # 0x3fd8
leaq 0xadf(%rip), %rsi       # 0x203a
movl $0x5, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
xorl %edx, %edx
callq 0x13aa
movq 0x2a5b(%rip), %rdi      # 0x3fd8
leaq 0xc(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
leaq 0xc(%rsp), %rdi
callq 0x1234
movq 0x2a16(%rip), %rdi      # 0x3fd8
leaq 0xa6d(%rip), %rsi       # 0x2036
movl $0x3, %edx
callq 0x1080
movq 0x29fe(%rip), %rdi      # 0x3fd8
leaq 0x10(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x29c3(%rip), %rdi      # 0x3fd8
leaq 0xa57(%rip), %rsi       # 0x2073
movl $0x3, %edx
callq 0x1080
movq 0x29ab(%rip), %rdi      # 0x3fd8
leaq 0x18(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x2970(%rip), %rdi      # 0x3fd8
leaq 0x9d1(%rip), %rsi       # 0x2040
movl $0xb, %edx
callq 0x1080
leaq 0x10(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x13e6
movq 0x2949(%rip), %rdi      # 0x3fd8
movq %rax, %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x2910(%rip), %rdi      # 0x3fd8
leaq 0x97d(%rip), %rsi       # 0x204c
movl $0xb, %edx
callq 0x1080
leaq 0x10(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x13ce
movq 0x28e9(%rip), %rdi      # 0x3fd8
movq %rax, %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x28b0(%rip), %rdi      # 0x3fd8
leaq 0x929(%rip), %rsi       # 0x2058
movl $0x7, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x1362
movq 0x2884(%rip), %rdi      # 0x3fd8
leaq 0xc(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
leaq 0xc(%rsp), %rdi
callq 0x1234
movq 0x283f(%rip), %rdi      # 0x3fd8
leaq 0x8c0(%rip), %rsi       # 0x2060
movl $0xe, %edx
callq 0x1080
leaq 0x14(%rsp), %rdi
movss 0x86d(%rip), %xmm0      # 0x2024
callq 0x121a
leaq 0x1c(%rsp), %rdi
movss 0x85f(%rip), %xmm0      # 0x2028
callq 0x121a
leaq 0xc(%rsp), %rdi
leaq 0x14(%rsp), %rsi
leaq 0x1c(%rsp), %rdx
callq 0x1362
movq 0x27ef(%rip), %rdi      # 0x3fd8
leaq 0xc(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
leaq 0xc(%rsp), %rdi
callq 0x1234
leaq 0x1c(%rsp), %rdi
callq 0x1234
leaq 0x14(%rsp), %rdi
callq 0x1234
movq 0x2796(%rip), %rdi      # 0x3fd8
leaq 0x826(%rip), %rsi       # 0x206f
movl $0x7, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x1326
movq 0x276a(%rip), %rdi      # 0x3fd8
leaq 0xc(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
leaq 0xc(%rsp), %rdi
callq 0x1234
movq 0x2725(%rip), %rdi      # 0x3fd8
leaq 0x7bd(%rip), %rsi       # 0x2077
movl $0xf, %edx
callq 0x1080
leaq 0x14(%rsp), %rdi
movss 0x75b(%rip), %xmm0      # 0x202c
callq 0x121a
leaq 0x1c(%rsp), %rdi
movss 0x74d(%rip), %xmm0      # 0x2030
callq 0x121a
leaq 0xc(%rsp), %rdi
leaq 0x14(%rsp), %rsi
leaq 0x1c(%rsp), %rdx
callq 0x1326
movq 0x26d5(%rip), %rdi      # 0x3fd8
leaq 0xc(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
leaq 0xc(%rsp), %rdi
callq 0x1234
leaq 0x1c(%rsp), %rdi
callq 0x1234
leaq 0x14(%rsp), %rdi
callq 0x1234
movq 0x267c(%rip), %rdi      # 0x3fd8
leaq 0x724(%rip), %rsi       # 0x2087
movl $0x7, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x12ae
movq 0x2650(%rip), %rdi      # 0x3fd8
leaq 0xc(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
leaq 0xc(%rsp), %rdi
callq 0x1234
movq 0x260b(%rip), %rdi      # 0x3fd8
leaq 0x6bb(%rip), %rsi       # 0x208f
movl $0x7, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x12ea
movq 0x25df(%rip), %rdi      # 0x3fd8
leaq 0xc(%rsp), %rsi
callq 0x1260
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
leaq 0xc(%rsp), %rdi
callq 0x1234
leaq 0x18(%rsp), %rdi
callq 0x1234
leaq 0x10(%rsp), %rdi
callq 0x1234
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
retq
jmp 0x1ac4
jmp 0x1ac4
jmp 0x1a5f
jmp 0x1a64
jmp 0x1ac4
jmp 0x1ac4
movq %rax, %rbx
jmp 0x1aa2
movq %rax, %rbx
jmp 0x1aac
jmp 0x1ac4
jmp 0x1ac4
jmp 0x1ac4
movq %rax, %rbx
leaq 0x14(%rsp), %rdi
callq 0x1234
jmp 0x1a81
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
jmp 0x1acc
movq %rax, %rbx
jmp 0x1ad1
jmp 0x1ab5
jmp 0x1ab5
jmp 0x1a95
jmp 0x1ab5
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
callq 0x1234
leaq 0x1c(%rsp), %rdi
callq 0x1234
leaq 0x14(%rsp), %rdi
jmp 0x1abd
jmp 0x1ab5
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
callq 0x1234
jmp 0x1ac7
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x1234
leaq 0x10(%rsp), %rdi
callq 0x1234
movq %rbx, %rdi
callq 0x10b0