// File: /workspace/github_cpp_makefile_star2_O3/eschwabe[P]interview-practice/src/libds_btree.cpp
// Function: main
int main()
{
  BinaryTree t;
  t.Insert(1);
  t.Insert(97);
  t.Insert(44);
  t.Insert(4);
  t.Insert(3);
  t.Insert(10);
  t.Insert(100);
  t.Insert(5);
  t.Insert(5);
  t.Print(std::cout);
  std::cout << "Find: " << 10 << " : " << t.Find(10) << std::endl;
  std::cout << "Find: " << 100 << " : " << t.Find(100) << std::endl;
  std::cout << "Find: " << 99 << " : " << t.Find(99) << std::endl;
  t.Remove(10);
  t.Remove(5);
  t.Remove(4);
  t.Remove(100);
  t.Remove(44);
  t.Print(std::cout);
  t.Remove(5);
  t.Remove(1);
  t.Remove(3);
  t.Remove(97);
  t.Print(std::cout);
  t.Insert(5);
  t.Insert(5);
  t.Print(std::cout);

  return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
leaq 0x10(%rsp), %rdi
movq $0x0, (%rdi)
leaq 0xc(%rsp), %rsi
movl $0x1, (%rsi)
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0x61, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0x2c, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0x4, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0x3, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0xa, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0x64, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0x5, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0x5, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
movq 0x2adc(%rip), %rsi      # 0x3fd8
leaq 0x10(%rsp), %rdi
callq 0x1396
movq 0x2acb(%rip), %rdi      # 0x3fd8
leaq 0xaf0(%rip), %rsi       # 0x2004
movl $0x6, %edx
callq 0x1090
movq 0x2ab3(%rip), %rdi      # 0x3fd8
movl $0xa, %esi
callq 0x10c0
movq %rax, %rbx
leaq 0xad2(%rip), %rsi       # 0x200b
movl $0x3, %edx
movq %rax, %rdi
callq 0x1090
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
je 0x156a
cmpl $0xa, 0x10(%rcx)
sete %al
je 0x156c
setl %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
testq %rcx, %rcx
jne 0x1550
jmp 0x156c
xorl %eax, %eax
movzbl %al, %esi
movq %rbx, %rdi
callq 0x10b0
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 0x2a30(%rip), %rdi      # 0x3fd8
leaq 0xa55(%rip), %rsi       # 0x2004
movl $0x6, %edx
callq 0x1090
movq 0x2a18(%rip), %rdi      # 0x3fd8
movl $0x64, %esi
callq 0x10c0
movq %rax, %rbx
leaq 0xa37(%rip), %rsi       # 0x200b
movl $0x3, %edx
movq %rax, %rdi
callq 0x1090
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
je 0x1605
cmpl $0x64, 0x10(%rcx)
sete %al
je 0x1607
setl %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
testq %rcx, %rcx
jne 0x15eb
jmp 0x1607
xorl %eax, %eax
movzbl %al, %esi
movq %rbx, %rdi
callq 0x10b0
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 0x2995(%rip), %rdi      # 0x3fd8
leaq 0x9ba(%rip), %rsi       # 0x2004
movl $0x6, %edx
callq 0x1090
movq 0x297d(%rip), %rdi      # 0x3fd8
movl $0x63, %esi
callq 0x10c0
movq %rax, %rbx
leaq 0x99c(%rip), %rsi       # 0x200b
movl $0x3, %edx
movq %rax, %rdi
callq 0x1090
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
je 0x16a0
cmpl $0x63, 0x10(%rcx)
sete %al
je 0x16a2
setl %dl
movzbl %dl, %edx
movq (%rcx,%rdx,8), %rcx
testq %rcx, %rcx
jne 0x1686
jmp 0x16a2
xorl %eax, %eax
movzbl %al, %esi
movq %rbx, %rdi
callq 0x10b0
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), %r14
movl $0xa, (%r14)
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x12c6
movl $0x5, (%r14)
leaq 0xc(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x12c6
movl $0x4, (%r14)
leaq 0xc(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x12c6
movl $0x64, (%r14)
leaq 0xc(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x12c6
movl $0x2c, (%r14)
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x12c6
movq 0x2885(%rip), %rsi      # 0x3fd8
movq %rbx, %rdi
callq 0x1396
leaq 0xc(%rsp), %rbx
movl $0x5, (%rbx)
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x12c6
movl $0x1, (%rbx)
leaq 0xc(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x12c6
movl $0x3, (%rbx)
leaq 0xc(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x12c6
movl $0x61, (%rbx)
leaq 0xc(%rsp), %rsi
movq %r14, %rdi
callq 0x12c6
movq 0x281c(%rip), %rsi      # 0x3fd8
movq %r14, %rdi
callq 0x1396
leaq 0xc(%rsp), %rsi
movl $0x5, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
leaq 0xc(%rsp), %rsi
movl $0x5, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x121a
movq 0x27e3(%rip), %rsi      # 0x3fd8
leaq 0x10(%rsp), %rdi
callq 0x1396
leaq 0x10(%rsp), %rdi
callq 0x1844
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r14
retq
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
jmp 0x182f
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1844
movq %rbx, %rdi
callq 0x10d0