// File: /workspace/github_c_makefile_star2_O0/deplinenoise[P]tundra/unittest/Test_HashTable.cpp
// Function: HashTableTest_MultiDistinct_Test::TestBody()
TEST_F(HashTableTest, MultiDistinct)
{
  HashTable<int, kFlagCaseSensitive> tbl;
  HashTableInit(&tbl, &heap);

  for (int i = 0; i < 2048; ++i)
  {
    char str[128];
    sprintf(str, "foo%d", i);
    HashTableInsert(&tbl, Djb2Hash(str), StrDup(&alloc, str), i);
  }
  EXPECT_EQ(2048, tbl.m_RecordCount);

  for (int i = 0; i < 2048; ++i)
  {
    char str[128];
    sprintf(str, "foo%d", i);
    int* ptr = HashTableLookup(&tbl, Djb2Hash(str), str);
    ASSERT_NE(nullptr, ptr);
    EXPECT_EQ(i, *ptr);
  }
  HashTableDestroy(&tbl);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x230, %rsp            # imm = 0x230
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rsi
movq %rsi, -0x1e0(%rbp)
addq $0x10, %rsi
leaq -0x38(%rbp), %rdi
callq 0x69640
movl $0x0, -0x3c(%rbp)
cmpl $0x800, -0x3c(%rbp)     # imm = 0x800
jge 0x67fb9
leaq -0xc0(%rbp), %rdi
movl -0x3c(%rbp), %edx
leaq 0x269dd(%rip), %rsi     # 0x8e945
movb $0x0, %al
callq 0xe110
leaq -0xc0(%rbp), %rdi
callq 0x6bda0
movq -0x1e0(%rbp), %rdi
movl %eax, -0x1e4(%rbp)
addq $0x18, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x69860
movl -0x1e4(%rbp), %esi
movq %rax, %rdx
leaq -0x38(%rbp), %rdi
leaq -0x3c(%rbp), %rcx
callq 0x69700
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x67f4e
movl $0x800, -0xd4(%rbp)     # imm = 0x800
leaq -0x20(%rbp), %r8
leaq 0x2697d(%rip), %rsi     # 0x8e94b
leaq 0x26948(%rip), %rdx     # 0x8e91d
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
leaq -0xd4(%rbp), %rcx
callq 0x61ee0
movq -0x1f0(%rbp), %rdi
callq 0x31090
movb %al, -0x1e5(%rbp)
jmp 0x68003
movb -0x1e5(%rbp), %al
testb $0x1, %al
jne 0x6800f
jmp 0x6802b
jmp 0x680e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x681b2
leaq -0xf0(%rbp), %rdi
callq 0x16d70
jmp 0x68039
leaq -0xd0(%rbp), %rdi
callq 0x310b0
movq %rax, -0x1f8(%rbp)
jmp 0x6804e
movq -0x1f8(%rbp), %r8
leaq 0x268a5(%rip), %rdx     # 0x8e901
leaq -0xf8(%rbp), %rdi
movl $0x1, %esi
movl $0x4f, %ecx
callq 0x13fa0
jmp 0x68074
leaq -0xf8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x14060
jmp 0x68089
leaq -0xf8(%rbp), %rdi
callq 0x14020
leaq -0xf0(%rbp), %rdi
callq 0x31070
jmp 0x680e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x680d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x14020
leaq -0xf0(%rbp), %rdi
callq 0x31070
jmp 0x681b2
leaq -0xd0(%rbp), %rdi
callq 0x30d20
movl $0x0, -0xfc(%rbp)
cmpl $0x800, -0xfc(%rbp)     # imm = 0x800
jge 0x68425
movl -0xfc(%rbp), %edx
leaq 0x2682c(%rip), %rsi     # 0x8e945
xorl %eax, %eax
leaq -0x180(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0xe110
movq -0x210(%rbp), %rdi
callq 0x6bda0
movq -0x210(%rbp), %rdx
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x69750
movq %rax, -0x188(%rbp)
movq $0x0, -0x1a0(%rbp)
leaq 0x24816(%rip), %rsi     # 0x8c97b
leaq 0x267c7(%rip), %rdx     # 0x8e933
leaq -0x198(%rbp), %rdi
movq %rdi, -0x208(%rbp)
leaq -0x1a0(%rbp), %rcx
leaq -0x188(%rbp), %r8
callq 0x697b0
movq -0x208(%rbp), %rdi
callq 0x31090
movb %al, -0x1f9(%rbp)
jmp 0x681a1
movb -0x1f9(%rbp), %al
testb $0x1, %al
jne 0x681ad
jmp 0x681da
jmp 0x6829c
leaq -0xd0(%rbp), %rdi
callq 0x30d20
jmp 0x68437
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x68317
leaq -0x1a8(%rbp), %rdi
callq 0x16d70
jmp 0x681e8
leaq -0x198(%rbp), %rdi
callq 0x310b0
movq %rax, -0x218(%rbp)
jmp 0x681fd
movq -0x218(%rbp), %r8
leaq 0x266f6(%rip), %rdx     # 0x8e901
leaq -0x1b0(%rbp), %rdi
movl $0x2, %esi
movl $0x56, %ecx
callq 0x13fa0
jmp 0x68223
leaq -0x1b0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x14060
jmp 0x68238
leaq -0x1b0(%rbp), %rdi
callq 0x14020
leaq -0x1a8(%rbp), %rdi
callq 0x31070
movl $0x1, -0x1b4(%rbp)
jmp 0x682a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x6828e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x14020
leaq -0x1a8(%rbp), %rdi
callq 0x31070
jmp 0x68317
movl $0x0, -0x1b4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x30d20
movl -0x1b4(%rbp), %eax
testl %eax, %eax
je 0x682c3
jmp 0x682be
jmp 0x6842e
movq -0x188(%rbp), %r8
leaq 0x251e8(%rip), %rsi     # 0x8d4b9
leaq 0x2665a(%rip), %rdx     # 0x8e932
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x228(%rbp)
leaq -0xfc(%rbp), %rcx
callq 0x4eba0
movq -0x228(%rbp), %rdi
callq 0x31090
movb %al, -0x219(%rbp)
jmp 0x68306
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0x68312
jmp 0x6833f
jmp 0x683f7
leaq -0x198(%rbp), %rdi
callq 0x30d20
jmp 0x68437
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x68417
leaq -0x1d0(%rbp), %rdi
callq 0x16d70
jmp 0x6834d
leaq -0x1c8(%rbp), %rdi
callq 0x310b0
movq %rax, -0x230(%rbp)
jmp 0x68362
movq -0x230(%rbp), %r8
leaq 0x26591(%rip), %rdx     # 0x8e901
leaq -0x1d8(%rbp), %rdi
movl $0x1, %esi
movl $0x57, %ecx
callq 0x13fa0
jmp 0x68388
leaq -0x1d8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x14060
jmp 0x6839d
leaq -0x1d8(%rbp), %rdi
callq 0x14020
leaq -0x1d0(%rbp), %rdi
callq 0x31070
jmp 0x683f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x683e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x14020
leaq -0x1d0(%rbp), %rdi
callq 0x31070
jmp 0x68417
leaq -0x1c8(%rbp), %rdi
callq 0x30d20
movl -0xfc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xfc(%rbp)
jmp 0x680fc
leaq -0x1c8(%rbp), %rdi
callq 0x30d20
jmp 0x68437
leaq -0x38(%rbp), %rdi
callq 0x69670
addq $0x230, %rsp            # imm = 0x230
popq %rbp
retq
movq -0xe0(%rbp), %rdi
callq 0xee80
nopw %cs:(%rax,%rax)