// File: /workspace/github_cpp_makefile_star2_O1/t0mm4rx[P]piscine_cpp/day07/ex00/whatever.cpp
// Function: main
int main(void)
{
  int a = 2;
  int b = 3;
  ::swap(a, b);
  std::cout << "a = " << a << ", b = " << b << std::endl;
  std::cout << "min(a, b) = " << ::min( a, b ) << std::endl;
  std::cout << "max(a, b) = " << ::max( a, b ) << std::endl;
  std::string c = "chaine1";
  std::string d = "chaine2";
  ::swap(c, d);
  std::cout << "c = " << c << ", d = " << d << std::endl;
  std::cout << "min(c, d) = " << ::min(c, d) << std::endl;
  std::cout << "max(c, d) = " << ::max(c, d) << std::endl;
  A e(42);
  A f(21);
  ::swap(e, f);
  std::cout << "e = " << e.getN() << ", f = " << f.getN() << std::endl;
  std::cout << "min(e, f) = " << ::min(e, e).getN() << std::endl;
  std::cout << "max(e, f) = " << ::max(f, f).getN() << std::endl;
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq 0x2d58(%rip), %rbx      # 0x3fd8
leaq 0xd7d(%rip), %rsi       # 0x2004
movl $0x4, %edx
movq %rbx, %rdi
callq 0x10e0
movq %rbx, %rdi
movl $0x3, %esi
callq 0x1100
movq %rax, %r14
leaq 0xd5e(%rip), %rsi       # 0x2009
movl $0x6, %edx
movq %rax, %rdi
callq 0x10e0
movq %r14, %rdi
movl $0x2, %esi
callq 0x1100
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
leaq 0xd1a(%rip), %rsi       # 0x2010
movl $0xc, %edx
movq %rbx, %rdi
callq 0x10e0
movq %rbx, %rdi
movl $0x2, %esi
callq 0x1100
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
leaq 0xcdc(%rip), %rsi       # 0x201d
movl $0xc, %edx
movq %rbx, %rdi
callq 0x10e0
movq %rbx, %rdi
movl $0x3, %esi
callq 0x1100
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
leaq -0x48(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xc96(%rip), %rsi       # 0x202a
leaq 0xc96(%rip), %rdx       # 0x2031
leaq -0x58(%rbp), %rdi
callq 0x178a
leaq -0x28(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0xc7f(%rip), %rsi       # 0x2032
leaq 0xc7f(%rip), %rdx       # 0x2039
leaq -0x38(%rbp), %rdi
callq 0x178a
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x16a1
movq 0x2c01(%rip), %rdi      # 0x3fd8
leaq 0xc5c(%rip), %rsi       # 0x203a
movl $0x4, %edx
callq 0x10e0
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq 0x2be1(%rip), %rdi      # 0x3fd8
callq 0x10e0
movq %rax, %rbx
leaq 0xc39(%rip), %rsi       # 0x203f
movl $0x6, %edx
movq %rax, %rdi
callq 0x10e0
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq %rbx, %rdi
callq 0x10e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
movq 0x2b84(%rip), %rdi      # 0x3fd8
leaq 0xbeb(%rip), %rsi       # 0x2046
movl $0xc, %edx
callq 0x10e0
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x172b
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x2b58(%rip), %rdi      # 0x3fd8
callq 0x10e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
movq 0x2b22(%rip), %rdi      # 0x3fd8
leaq 0xb96(%rip), %rsi       # 0x2053
movl $0xc, %edx
callq 0x10e0
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1753
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x2af6(%rip), %rdi      # 0x3fd8
callq 0x10e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
movq 0x2ac0(%rip), %rdi      # 0x3fd8
leaq 0xb41(%rip), %rsi       # 0x2060
movl $0x4, %edx
callq 0x10e0
movq 0x2aa8(%rip), %rdi      # 0x3fd8
movl $0x15, %esi
callq 0x1100
movq %rax, %rbx
leaq 0xb21(%rip), %rsi       # 0x2065
movl $0x6, %edx
movq %rax, %rdi
callq 0x10e0
movq %rbx, %rdi
movl $0x2a, %esi
callq 0x1100
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
movq 0x2a49(%rip), %rdi      # 0x3fd8
leaq 0xad6(%rip), %rsi       # 0x206c
movl $0xc, %edx
callq 0x10e0
movq 0x2a31(%rip), %rdi      # 0x3fd8
movl $0x15, %esi
callq 0x1100
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
movq 0x29f6(%rip), %rdi      # 0x3fd8
leaq 0xa90(%rip), %rsi       # 0x2079
movl $0xc, %edx
callq 0x10e0
movq 0x29de(%rip), %rdi      # 0x3fd8
movl $0x2a, %esi
callq 0x1100
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
movq -0x38(%rbp), %rdi
cmpq %r15, %rdi
je 0x1643
movq -0x28(%rbp), %rsi
incq %rsi
callq 0x10d0
movq -0x58(%rbp), %rdi
cmpq %r14, %rdi
je 0x1658
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x10d0
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x1684
jmp 0x166c
movq %rax, %rbx
movq -0x38(%rbp), %rdi
cmpq %r15, %rdi
je 0x1684
movq -0x28(%rbp), %rsi
incq %rsi
callq 0x10d0
movq -0x58(%rbp), %rdi
cmpq %r14, %rdi
je 0x1699
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x10d0
movq %rbx, %rdi
callq 0x1110