// File: /workspace/github_cpp_makefile_star2_O2/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 $0xf8, %rsp
cmpl $0x5, %edi
jne 0x286b
movq %rsi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0x3afd(%rip), %rsi      # 0x6077
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2f6e
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3096
leaq 0x10(%rsp), %rdi
callq 0x2100
leaq 0x3ad4(%rip), %rsi      # 0x607d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2f6e
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3096
leaq 0x10(%rsp), %rdi
callq 0x2100
leaq 0x3aa8(%rip), %rsi      # 0x6080
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2f6e
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3096
leaq 0x10(%rsp), %rdi
callq 0x2100
leaq 0x3a7e(%rip), %rsi      # 0x6085
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2f6e
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3096
leaq 0x10(%rsp), %rdi
callq 0x2100
leaq 0x3a52(%rip), %rsi      # 0x6088
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2f6e
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3096
leaq 0x10(%rsp), %rdi
callq 0x2100
leaq 0x3a30(%rip), %rsi      # 0x6095
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2f6e
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3096
leaq 0x10(%rsp), %rdi
callq 0x2100
leaq 0x3a08(%rip), %rsi      # 0x609c
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2f6e
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3096
leaq 0x10(%rsp), %rdi
callq 0x2100
leaq 0x39dc(%rip), %rsi      # 0x609f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2f6e
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3096
leaq 0x10(%rsp), %rdi
callq 0x2100
movq 0x20(%rbx), %rsi
leaq 0xd8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x2f6e
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 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2faa
leaq 0xd8(%rsp), %rdi
leaq 0x80(%rsp), %r8
movl %ebp, %esi
movl %r14d, %edx
movl %r15d, %ecx
callq 0x294e
leaq 0x80(%rsp), %rdi
callq 0x2f46
leaq 0xd8(%rsp), %rdi
callq 0x2100
movq 0x20(%rbx), %rsi
leaq 0xb8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x2f6e
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 0x68(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2faa
leaq 0xb8(%rsp), %rdi
leaq 0x68(%rsp), %r8
movl %ebp, %esi
movl %r14d, %edx
movl %r15d, %ecx
callq 0x2b4b
leaq 0x68(%rsp), %rdi
callq 0x2f46
leaq 0xb8(%rsp), %rdi
callq 0x2100
movq 0x20(%rbx), %rsi
leaq 0x98(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x2f6e
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 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2faa
leaq 0x98(%rsp), %rdi
leaq 0x50(%rsp), %r8
movl %ebp, %esi
movl %r14d, %edx
movl %ebx, %ecx
callq 0x2d48
leaq 0x50(%rsp), %rdi
callq 0x2f46
leaq 0x98(%rsp), %rdi
callq 0x2100
leaq 0x30(%rsp), %rdi
callq 0x2f46
xorl %eax, %eax
jmp 0x28a3
movq 0x7766(%rip), %rbx      # 0x9fd8
leaq 0x37a7(%rip), %rsi      # 0x6020
movq %rbx, %rdi
callq 0x21c0
movq %rax, %rdi
callq 0x2120
leaq 0x37ad(%rip), %rsi      # 0x603d
movq %rbx, %rdi
callq 0x21c0
movq %rax, %rdi
callq 0x2120
pushq $-0x1
popq %rax
addq $0xf8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x2f46
jmp 0x28c3
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
jmp 0x2932
jmp 0x2939
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x2f46
jmp 0x28e1
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x2932
jmp 0x2939
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x2f46
jmp 0x2902
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
jmp 0x2932
jmp 0x2939
jmp 0x292a
jmp 0x2939
jmp 0x292a
jmp 0x2939
jmp 0x292a
jmp 0x2939
jmp 0x292a
jmp 0x2939
jmp 0x292a
jmp 0x2939
jmp 0x292a
jmp 0x2939
jmp 0x292a
jmp 0x2939
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2100
jmp 0x293c
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2f46
movq %rbx, %rdi
callq 0x22e0