// File: /workspace/github_cpp_makefile_star2_O1/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 0x2ac9(%rip), %rsi      # 0x3fd8
leaq 0x10(%rsp), %rdi
callq 0x13ac
movq 0x2ab8(%rip), %rdi      # 0x3fd8
leaq 0xadd(%rip), %rsi       # 0x2004
movl $0x6, %edx
callq 0x1090
movq 0x2aa0(%rip), %rdi      # 0x3fd8
movl $0xa, %esi
callq 0x10c0
movq %rax, %rbx
leaq 0xabf(%rip), %rsi       # 0x200b
movl $0x3, %edx
movq %rax, %rdi
callq 0x1090
movq 0x10(%rsp), %rax
testq %rax, %rax
setne %cl
je 0x1589
movl 0x10(%rax), %edx
movb $0x1, %cl
cmpl $0xa, %edx
je 0x1589
xorl %ecx, %ecx
cmpl $0xa, %edx
setl %cl
movq (%rax,%rcx,8), %rax
testq %rax, %rax
setne %cl
je 0x1589
movl 0x10(%rax), %edx
jmp 0x156b
movzbl %cl, %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 0x2a13(%rip), %rdi      # 0x3fd8
leaq 0xa38(%rip), %rsi       # 0x2004
movl $0x6, %edx
callq 0x1090
movq 0x29fb(%rip), %rdi      # 0x3fd8
movl $0x64, %esi
callq 0x10c0
movq %rax, %rbx
leaq 0xa1a(%rip), %rsi       # 0x200b
movl $0x3, %edx
movq %rax, %rdi
callq 0x1090
movq 0x10(%rsp), %rax
testq %rax, %rax
setne %cl
je 0x162e
movl 0x10(%rax), %edx
movb $0x1, %cl
cmpl $0x64, %edx
je 0x162e
xorl %ecx, %ecx
cmpl $0x64, %edx
setl %cl
movq (%rax,%rcx,8), %rax
testq %rax, %rax
setne %cl
je 0x162e
movl 0x10(%rax), %edx
jmp 0x1610
movzbl %cl, %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 0x296e(%rip), %rdi      # 0x3fd8
leaq 0x993(%rip), %rsi       # 0x2004
movl $0x6, %edx
callq 0x1090
movq 0x2956(%rip), %rdi      # 0x3fd8
movl $0x63, %esi
callq 0x10c0
movq %rax, %rbx
leaq 0x975(%rip), %rsi       # 0x200b
movl $0x3, %edx
movq %rax, %rdi
callq 0x1090
movq 0x10(%rsp), %rax
testq %rax, %rax
setne %cl
je 0x16d3
movl 0x10(%rax), %edx
movb $0x1, %cl
cmpl $0x63, %edx
je 0x16d3
xorl %ecx, %ecx
cmpl $0x63, %edx
setl %cl
movq (%rax,%rcx,8), %rax
testq %rax, %rax
setne %cl
je 0x16d3
movl 0x10(%rax), %edx
jmp 0x16b5
movzbl %cl, %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 0x2854(%rip), %rsi      # 0x3fd8
movq %rbx, %rdi
callq 0x13ac
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 0x27eb(%rip), %rsi      # 0x3fd8
movq %r14, %rdi
callq 0x13ac
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 0x27b2(%rip), %rsi      # 0x3fd8
leaq 0x10(%rsp), %rdi
callq 0x13ac
leaq 0x10(%rsp), %rdi
callq 0x1876
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r14
retq
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
jmp 0x1860
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1876
movq %rbx, %rdi
callq 0x10d0
nop