// File: /workspace/github_cpp_makefile_star2_O1/sgalkina[P]data_structures/src/main.cpp
// Function: main
int main(int argc, char* argv[]) {
  std::srand(std::time(0));
  // test_vector();
  // test_vector_map();
  // test_hash_map();
  // test_tree_map();
  // map_comparison();

  std::ofstream f("bin/benchmark.dat");
  f << "Map Addition Search Search+Add+Delete Deletion\n";
  std::cout << "benchmark vector map" << std::endl;
  f << "VectorMap" << " " << gtl::benchmark<gtl::vector_map<int, int>>();
  std::cout << "benchmark hash map" << std::endl;
  f << "HashMap" << " " << gtl::benchmark<gtl::hash_map<int, int, std::hash<int>>>();
  std::cout << "benchmark tree map" << std::endl;
  f << "TreeMap" << " " << gtl::benchmark<gtl::tree_map<int, int>>();
  return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x228, %rsp            # imm = 0x228
xorl %edi, %edi
callq 0x10d0
movl %eax, %edi
callq 0x10f0
leaq 0x76df(%rip), %rsi      # 0x917a
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
movl $0x10, %edx
callq 0x1120
leaq 0x76d8(%rip), %rsi      # 0x918c
movl $0x2f, %edx
movq %rbx, %rdi
callq 0x1140
movq 0xc510(%rip), %rbx      # 0xdfd8
leaq 0x76ed(%rip), %rsi      # 0x91bc
movl $0x14, %edx
movq %rbx, %rdi
callq 0x1140
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x1100
movsbl %al, %esi
movq 0xc4de(%rip), %rdi      # 0xdfd8
callq 0x1040
movq %rax, %rdi
callq 0x10a0
leaq 0x76c3(%rip), %rsi      # 0x91d1
leaq 0x28(%rsp), %rdi
movl $0x9, %edx
callq 0x1140
leaq 0x76b7(%rip), %rsi      # 0x91db
leaq 0x28(%rsp), %rdi
movl $0x1, %edx
callq 0x1140
leaq 0x8(%rsp), %rdi
callq 0x3664
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x28(%rsp), %rdi
callq 0x1140
leaq 0x18(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x1b64
callq 0x10e0
movq 0xc46d(%rip), %rbx      # 0xdfd8
leaq 0x766b(%rip), %rsi      # 0x91dd
movl $0x12, %edx
movq %rbx, %rdi
callq 0x1140
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x1100
movsbl %al, %esi
movq 0xc43b(%rip), %rdi      # 0xdfd8
callq 0x1040
movq %rax, %rdi
callq 0x10a0
leaq 0x763f(%rip), %rsi      # 0x91f0
leaq 0x28(%rsp), %rdi
movl $0x7, %edx
callq 0x1140
leaq 0x7614(%rip), %rsi      # 0x91db
leaq 0x28(%rsp), %rdi
movl $0x1, %edx
callq 0x1140
leaq 0x8(%rsp), %rdi
callq 0x3f7e
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x28(%rsp), %rdi
callq 0x1140
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x1c03
callq 0x10e0
movq 0xc3ce(%rip), %rbx      # 0xdfd8
leaq 0x75e7(%rip), %rsi      # 0x91f8
movl $0x12, %edx
movq %rbx, %rdi
callq 0x1140
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x1100
movsbl %al, %esi
movq 0xc39c(%rip), %rdi      # 0xdfd8
callq 0x1040
movq %rax, %rdi
callq 0x10a0
leaq 0x75bb(%rip), %rsi      # 0x920b
leaq 0x28(%rsp), %rdi
movl $0x7, %edx
callq 0x1140
leaq 0x7575(%rip), %rsi      # 0x91db
leaq 0x28(%rsp), %rdi
movl $0x1, %edx
callq 0x1140
leaq 0x8(%rsp), %rdi
callq 0x4895
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x28(%rsp), %rdi
callq 0x1140
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x1ca2
callq 0x10e0
movq 0xc327(%rip), %rax      # 0xdfd0
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x30(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x28(%rsp,%rcx)
callq 0x10b0
leaq 0x120(%rsp), %rdi
callq 0x1070
xorl %eax, %eax
addq $0x228, %rsp            # imm = 0x228
popq %rbx
popq %r14
retq
jmp 0x1ce5
jmp 0x1d10
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x1d07
jmp 0x1d13
jmp 0x1d10
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1d13
callq 0x10e0
jmp 0x1d13
jmp 0x1d10
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x1170
movq %rbx, %rdi
callq 0x1190
nop