// File: /workspace/github_cpp_makefile_star2_O3/migueeelvargas[P]Auto-Complete/benchdict.cpp
// Function: main
int main(int argc, char* argv[]) {
  // Check for arguments
  if(argc != 5) {
    std::cout << "Invalid number of arguments." << std::endl;
    std::cout << "Usage: ./benchdict minSize stepSize iterations dictionary" << std::endl;
    return -1;
  }

  // Make a vector loaded with words not in the dictionary.
  std::vector<std::string> words;
  words.push_back("Hello");
  words.push_back("my");
  words.push_back("name");
  words.push_back("is");
  words.push_back("Miguel Angel");
  words.push_back("Vargas");
  words.push_back("Ok");
  words.push_back("Bye");

  // Calls the different dictionary tests.
  testTrie(argv[4],atoi(argv[1]),atoi(argv[2]), atoi(argv[3]), words);
  testBST(argv[4], atoi(argv[1]), atoi(argv[2]), atoi(argv[3]), words);
  testHT(argv[4], atoi(argv[1]), atoi(argv[2]), atoi(argv[3]), words);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0xe8, %rsp
cmpl $0x5, %edi
jne 0x296f
movq %rsi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x5a91(%rip), %rsi      # 0x8077
leaq 0x5a8f(%rip), %rdx      # 0x807c
movq %rsp, %rdi
callq 0x37e0
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x3570
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2618
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x5a58(%rip), %rsi      # 0x807d
leaq 0x5a53(%rip), %rdx      # 0x807f
callq 0x37e0
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x3570
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2654
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x5a1f(%rip), %rsi      # 0x8080
leaq 0x5a1c(%rip), %rdx      # 0x8084
callq 0x37e0
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x3570
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2690
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x59e8(%rip), %rsi      # 0x8085
leaq 0x59e3(%rip), %rdx      # 0x8087
callq 0x37e0
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x3570
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x26cc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x59af(%rip), %rsi      # 0x8088
leaq 0x59b4(%rip), %rdx      # 0x8094
callq 0x37e0
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x3570
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2708
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x5980(%rip), %rsi      # 0x8095
leaq 0x597f(%rip), %rdx      # 0x809b
callq 0x37e0
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x3570
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2744
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x594b(%rip), %rsi      # 0x809c
leaq 0x5946(%rip), %rdx      # 0x809e
callq 0x37e0
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x3570
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2780
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x5912(%rip), %rsi      # 0x809f
leaq 0x590e(%rip), %rdx      # 0x80a2
callq 0x37e0
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x3570
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x27bc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x20(%rbx), %rsi
leaq 0x80(%rsp), %rdi
movq %rsp, %rdx
callq 0x33c8
movq 0x8(%rbx), %rdi
callq 0x2290
movl %eax, %ebp
movq 0x10(%rbx), %rdi
callq 0x2290
movl %eax, %r14d
movq 0x18(%rbx), %rdi
callq 0x2290
movl %eax, %r15d
leaq 0xd0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3406
leaq 0x80(%rsp), %rdi
leaq 0xd0(%rsp), %r8
movl %ebp, %esi
movl %r14d, %edx
movl %r15d, %ecx
callq 0x2adf
leaq 0xd0(%rsp), %rdi
callq 0x3352
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2850
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x20(%rbx), %rsi
leaq 0x60(%rsp), %rdi
movq %rsp, %rdx
callq 0x33c8
movq 0x8(%rbx), %rdi
callq 0x2290
movl %eax, %ebp
movq 0x10(%rbx), %rdi
callq 0x2290
movl %eax, %r14d
movq 0x18(%rbx), %rdi
callq 0x2290
movl %eax, %r15d
leaq 0xb8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3406
leaq 0x60(%rsp), %rdi
leaq 0xb8(%rsp), %r8
movl %ebp, %esi
movl %r14d, %edx
movl %r15d, %ecx
callq 0x2db0
leaq 0xb8(%rsp), %rdi
callq 0x3352
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x28d8
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x20(%rbx), %rsi
leaq 0x40(%rsp), %rdi
movq %rsp, %rdx
callq 0x33c8
movq 0x8(%rbx), %rdi
callq 0x2290
movl %eax, %ebp
movq 0x10(%rbx), %rdi
callq 0x2290
movl %eax, %r14d
movq 0x18(%rbx), %rdi
callq 0x2290
movl %eax, %ebx
leaq 0xa0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3406
leaq 0x40(%rsp), %rdi
leaq 0xa0(%rsp), %r8
movl %ebp, %esi
movl %r14d, %edx
movl %ebx, %ecx
callq 0x3081
leaq 0xa0(%rsp), %rdi
callq 0x3352
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x295e
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x20(%rsp), %rdi
callq 0x3352
xorl %eax, %eax
jmp 0x29f1
movq 0x8662(%rip), %rbx      # 0xafd8
leaq 0x56a3(%rip), %rsi      # 0x8020
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x2210
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
leaq 0x5685(%rip), %rsi      # 0x803d
movl $0x39, %edx
movq %rbx, %rdi
callq 0x2210
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0xe8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x3352
jmp 0x2a14
movq %rax, %rbx
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2acd
movq 0x50(%rsp), %rsi
jmp 0x2ac0
jmp 0x2aca
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x3352
jmp 0x2a4a
movq %rax, %rbx
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2acd
movq 0x70(%rsp), %rsi
jmp 0x2ac0
jmp 0x2aca
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x3352
jmp 0x2a76
movq %rax, %rbx
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2acd
movq 0x90(%rsp), %rsi
jmp 0x2ac0
jmp 0x2aca
jmp 0x2aaf
jmp 0x2aca
jmp 0x2aaf
jmp 0x2aca
jmp 0x2aaf
jmp 0x2aca
jmp 0x2aaf
jmp 0x2aca
jmp 0x2aaf
jmp 0x2aca
jmp 0x2aaf
jmp 0x2aca
jmp 0x2aaf
jmp 0x2aca
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2acd
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21d0
jmp 0x2acd
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3352
movq %rbx, %rdi
callq 0x22e0