// File: /workspace/github_cpp_makefile_star2_O1/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 0xc0c(%rip), %xmm0      # 0x200c
callq 0x121a
leaq 0x14(%rsp), %rdi
movl $0x2, %esi
callq 0x1214
leaq 0x18(%rsp), %rdi
leaq 0xc(%rsp), %rsi
leaq 0x14(%rsp), %rdx
callq 0x131e
leaq 0x14(%rsp), %rdi
callq 0x1234
leaq 0xc(%rsp), %rdi
callq 0x1234
movq 0x2b95(%rip), %rdi      # 0x3fd8
leaq 0xbd8(%rip), %rsi       # 0x2022
movl $0x3, %edx
callq 0x1080
movq 0x2b7d(%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 0x2b42(%rip), %rdi      # 0x3fd8
leaq 0xb83(%rip), %rsi       # 0x2020
movl $0x5, %edx
callq 0x1080
leaq 0x10(%rsp), %rdi
callq 0x138e
movq 0x2b20(%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 0x2ae7(%rip), %rdi      # 0x3fd8
leaq 0xb2a(%rip), %rsi       # 0x2022
movl $0x3, %edx
callq 0x1080
movq 0x2acf(%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 0x2a94(%rip), %rdi      # 0x3fd8
leaq 0xadb(%rip), %rsi       # 0x2026
movl $0x5, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
xorl %edx, %edx
callq 0x139a
movq 0x2a6b(%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 0x2a26(%rip), %rdi      # 0x3fd8
leaq 0xa69(%rip), %rsi       # 0x2022
movl $0x3, %edx
callq 0x1080
movq 0x2a0e(%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 0x29d3(%rip), %rdi      # 0x3fd8
leaq 0xa53(%rip), %rsi       # 0x205f
movl $0x3, %edx
callq 0x1080
movq 0x29bb(%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 0x2980(%rip), %rdi      # 0x3fd8
leaq 0x9cd(%rip), %rsi       # 0x202c
movl $0xb, %edx
callq 0x1080
leaq 0x10(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x13d6
movq 0x2959(%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 0x2920(%rip), %rdi      # 0x3fd8
leaq 0x979(%rip), %rsi       # 0x2038
movl $0xb, %edx
callq 0x1080
leaq 0x10(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x13be
movq 0x28f9(%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 0x28c0(%rip), %rdi      # 0x3fd8
leaq 0x925(%rip), %rsi       # 0x2044
movl $0x7, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x1356
movq 0x2894(%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 0x284f(%rip), %rdi      # 0x3fd8
leaq 0x8bc(%rip), %rsi       # 0x204c
movl $0xe, %edx
callq 0x1080
leaq 0x14(%rsp), %rdi
movss 0x869(%rip), %xmm0      # 0x2010
callq 0x121a
leaq 0x1c(%rsp), %rdi
movss 0x85b(%rip), %xmm0      # 0x2014
callq 0x121a
leaq 0xc(%rsp), %rdi
leaq 0x14(%rsp), %rsi
leaq 0x1c(%rsp), %rdx
callq 0x1356
movq 0x27ff(%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 0x27a6(%rip), %rdi      # 0x3fd8
leaq 0x822(%rip), %rsi       # 0x205b
movl $0x7, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x131e
movq 0x277a(%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 0x2735(%rip), %rdi      # 0x3fd8
leaq 0x7b9(%rip), %rsi       # 0x2063
movl $0xf, %edx
callq 0x1080
leaq 0x14(%rsp), %rdi
movss 0x757(%rip), %xmm0      # 0x2018
callq 0x121a
leaq 0x1c(%rsp), %rdi
movss 0x749(%rip), %xmm0      # 0x201c
callq 0x121a
leaq 0xc(%rsp), %rdi
leaq 0x14(%rsp), %rsi
leaq 0x1c(%rsp), %rdx
callq 0x131e
movq 0x26e5(%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 0x268c(%rip), %rdi      # 0x3fd8
leaq 0x720(%rip), %rsi       # 0x2073
movl $0x7, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x12ae
movq 0x2660(%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 0x261b(%rip), %rdi      # 0x3fd8
leaq 0x6b7(%rip), %rsi       # 0x207b
movl $0x7, %edx
callq 0x1080
leaq 0xc(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x12e6
movq 0x25ef(%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 0x1ab4
jmp 0x1ab4
jmp 0x1a4f
jmp 0x1a54
jmp 0x1ab4
jmp 0x1ab4
movq %rax, %rbx
jmp 0x1a92
movq %rax, %rbx
jmp 0x1a9c
jmp 0x1ab4
jmp 0x1ab4
jmp 0x1ab4
movq %rax, %rbx
leaq 0x14(%rsp), %rdi
callq 0x1234
jmp 0x1a71
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
jmp 0x1abc
movq %rax, %rbx
jmp 0x1ac1
jmp 0x1aa5
jmp 0x1aa5
jmp 0x1a85
jmp 0x1aa5
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
callq 0x1234
leaq 0x1c(%rsp), %rdi
callq 0x1234
leaq 0x14(%rsp), %rdi
jmp 0x1aad
jmp 0x1aa5
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
callq 0x1234
jmp 0x1ab7
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x1234
leaq 0x10(%rsp), %rdi
callq 0x1234
movq %rbx, %rdi
callq 0x10b0