// File: /workspace/github_cpp_makefile_star2_O2/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 0x11ec
leaq 0xc(%rsp), %rdi
movss 0xc38(%rip), %xmm0      # 0x2020
callq 0x11f6
leaq 0x14(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0x11f0
leaq 0x18(%rsp), %rdi
leaq 0xc(%rsp), %rsi
leaq 0x14(%rsp), %rdx
callq 0x12fe
leaq 0x14(%rsp), %rdi
callq 0x1210
leaq 0xc(%rsp), %rdi
callq 0x1210
movq 0x2baf(%rip), %rdi      # 0x3fd8
leaq 0xc06(%rip), %rsi       # 0x2036
callq 0x1060
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
movq 0x2b87(%rip), %rdi      # 0x3fd8
leaq 0xbdc(%rip), %rsi       # 0x2034
callq 0x1060
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1376
movq %rbx, %rdi
movq %rax, %rsi
callq 0x123c
movq %rax, %rdi
callq 0x1030
movq 0x2b54(%rip), %rdi      # 0x3fd8
leaq 0xbab(%rip), %rsi       # 0x2036
callq 0x1060
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
movq 0x2b2c(%rip), %rdi      # 0x3fd8
leaq 0xb87(%rip), %rsi       # 0x203a
callq 0x1060
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
xorl %edx, %edx
callq 0x1382
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
leaq 0xc(%rsp), %rdi
callq 0x1210
movq 0x2ae6(%rip), %rdi      # 0x3fd8
leaq 0xb3d(%rip), %rsi       # 0x2036
callq 0x1060
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
movq 0x2abe(%rip), %rdi      # 0x3fd8
leaq 0xb52(%rip), %rsi       # 0x2073
callq 0x1060
leaq 0x18(%rsp), %rsi
movq %rax, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
movq 0x2a96(%rip), %rdi      # 0x3fd8
leaq 0xaf7(%rip), %rsi       # 0x2040
callq 0x1060
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x13be
movq %rbx, %rdi
movq %rax, %rsi
callq 0x123c
movq %rax, %rdi
callq 0x1030
movq 0x2a5e(%rip), %rdi      # 0x3fd8
leaq 0xacb(%rip), %rsi       # 0x204c
callq 0x1060
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x13a6
movq %rbx, %rdi
movq %rax, %rsi
callq 0x123c
movq %rax, %rdi
callq 0x1030
movq 0x2a26(%rip), %rdi      # 0x3fd8
leaq 0xa9f(%rip), %rsi       # 0x2058
callq 0x1060
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x133a
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
leaq 0xc(%rsp), %rdi
callq 0x1210
movq 0x29dd(%rip), %rdi      # 0x3fd8
leaq 0xa5e(%rip), %rsi       # 0x2060
callq 0x1060
movq %rax, %rbx
leaq 0x14(%rsp), %rdi
movss 0xa0d(%rip), %xmm0      # 0x2024
callq 0x11f6
leaq 0x1c(%rsp), %rdi
movss 0x9ff(%rip), %xmm0      # 0x2028
callq 0x11f6
leaq 0xc(%rsp), %rdi
leaq 0x14(%rsp), %rsi
leaq 0x1c(%rsp), %rdx
callq 0x133a
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
leaq 0xc(%rsp), %rdi
callq 0x1210
leaq 0x1c(%rsp), %rdi
callq 0x1210
leaq 0x14(%rsp), %rdi
callq 0x1210
movq 0x295c(%rip), %rdi      # 0x3fd8
leaq 0x9ec(%rip), %rsi       # 0x206f
callq 0x1060
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x12fe
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
leaq 0xc(%rsp), %rdi
callq 0x1210
movq 0x2913(%rip), %rdi      # 0x3fd8
leaq 0x9ab(%rip), %rsi       # 0x2077
callq 0x1060
movq %rax, %rbx
leaq 0x14(%rsp), %rdi
movss 0x94b(%rip), %xmm0      # 0x202c
callq 0x11f6
leaq 0x1c(%rsp), %rdi
movss 0x93d(%rip), %xmm0      # 0x2030
callq 0x11f6
leaq 0xc(%rsp), %rdi
leaq 0x14(%rsp), %rsi
leaq 0x1c(%rsp), %rdx
callq 0x12fe
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
leaq 0xc(%rsp), %rdi
callq 0x1210
leaq 0x1c(%rsp), %rdi
callq 0x1210
leaq 0x14(%rsp), %rdi
callq 0x1210
movq 0x2892(%rip), %rdi      # 0x3fd8
leaq 0x93a(%rip), %rsi       # 0x2087
callq 0x1060
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x1286
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
leaq 0xc(%rsp), %rdi
callq 0x1210
movq 0x2849(%rip), %rdi      # 0x3fd8
leaq 0x8f9(%rip), %rsi       # 0x208f
callq 0x1060
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x12c2
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x123c
movq %rax, %rdi
callq 0x1030
leaq 0xc(%rsp), %rdi
callq 0x1210
leaq 0x18(%rsp), %rdi
callq 0x1210
leaq 0x10(%rsp), %rdi
callq 0x1210
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
retq
jmp 0x185e
jmp 0x185e
jmp 0x17f9
jmp 0x17fe
jmp 0x185e
jmp 0x185e
movq %rax, %rbx
jmp 0x183c
movq %rax, %rbx
jmp 0x1846
jmp 0x185e
jmp 0x185e
jmp 0x185e
movq %rax, %rbx
leaq 0x14(%rsp), %rdi
callq 0x1210
jmp 0x181b
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
jmp 0x1866
movq %rax, %rbx
jmp 0x186b
jmp 0x184f
jmp 0x184f
jmp 0x182f
jmp 0x184f
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
callq 0x1210
leaq 0x1c(%rsp), %rdi
callq 0x1210
leaq 0x14(%rsp), %rdi
jmp 0x1857
jmp 0x184f
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
callq 0x1210
jmp 0x1861
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x1210
leaq 0x10(%rsp), %rdi
callq 0x1210
movq %rbx, %rdi
callq 0x1090