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

  for (int i = 0; i < 2048; ++i)
  {
    char str[128];
    sprintf(str, "foo%d", i);
    HashTableInsert(&tbl, Djb2HashNoCase(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, Djb2HashNoCase(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 0x698e0
movl $0x0, -0x3c(%rbp)
cmpl $0x800, -0x3c(%rbp)     # imm = 0x800
jge 0x684e9
leaq -0xc0(%rbp), %rdi
movl -0x3c(%rbp), %edx
leaq 0x264ad(%rip), %rsi     # 0x8e945
movb $0x0, %al
callq 0xe110
leaq -0xc0(%rbp), %rdi
callq 0x6be70
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 0x69910
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x6847e
movl $0x800, -0xd4(%rbp)     # imm = 0x800
leaq -0x20(%rbp), %r8
leaq 0x2644d(%rip), %rsi     # 0x8e94b
leaq 0x26418(%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 0x68533
movb -0x1e5(%rbp), %al
testb $0x1, %al
jne 0x6853f
jmp 0x6855b
jmp 0x68616
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x686e2
leaq -0xf0(%rbp), %rdi
callq 0x16d70
jmp 0x68569
leaq -0xd0(%rbp), %rdi
callq 0x310b0
movq %rax, -0x1f8(%rbp)
jmp 0x6857e
movq -0x1f8(%rbp), %r8
leaq 0x26375(%rip), %rdx     # 0x8e901
leaq -0xf8(%rbp), %rdi
movl $0x1, %esi
movl $0x67, %ecx
callq 0x13fa0
jmp 0x685a4
leaq -0xf8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x14060
jmp 0x685b9
leaq -0xf8(%rbp), %rdi
callq 0x14020
leaq -0xf0(%rbp), %rdi
callq 0x31070
jmp 0x68616
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x68605
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 0x686e2
leaq -0xd0(%rbp), %rdi
callq 0x30d20
movl $0x0, -0xfc(%rbp)
cmpl $0x800, -0xfc(%rbp)     # imm = 0x800
jge 0x68955
movl -0xfc(%rbp), %edx
leaq 0x2631f(%rip), %rsi     # 0x8e968
xorl %eax, %eax
leaq -0x180(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0xe110
movq -0x210(%rbp), %rdi
callq 0x6be70
movq -0x210(%rbp), %rdx
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x69960
movq %rax, -0x188(%rbp)
movq $0x0, -0x1a0(%rbp)
leaq 0x242e6(%rip), %rsi     # 0x8c97b
leaq 0x26297(%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 0x686d1
movb -0x1f9(%rbp), %al
testb $0x1, %al
jne 0x686dd
jmp 0x6870a
jmp 0x687cc
leaq -0xd0(%rbp), %rdi
callq 0x30d20
jmp 0x68967
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x68847
leaq -0x1a8(%rbp), %rdi
callq 0x16d70
jmp 0x68718
leaq -0x198(%rbp), %rdi
callq 0x310b0
movq %rax, -0x218(%rbp)
jmp 0x6872d
movq -0x218(%rbp), %r8
leaq 0x261c6(%rip), %rdx     # 0x8e901
leaq -0x1b0(%rbp), %rdi
movl $0x2, %esi
movl $0x6e, %ecx
callq 0x13fa0
jmp 0x68753
leaq -0x1b0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x14060
jmp 0x68768
leaq -0x1b0(%rbp), %rdi
callq 0x14020
leaq -0x1a8(%rbp), %rdi
callq 0x31070
movl $0x1, -0x1b4(%rbp)
jmp 0x687d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x687be
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 0x68847
movl $0x0, -0x1b4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x30d20
movl -0x1b4(%rbp), %eax
testl %eax, %eax
je 0x687f3
jmp 0x687ee
jmp 0x6895e
movq -0x188(%rbp), %r8
leaq 0x24cb8(%rip), %rsi     # 0x8d4b9
leaq 0x2612a(%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 0x68836
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0x68842
jmp 0x6886f
jmp 0x68927
leaq -0x198(%rbp), %rdi
callq 0x30d20
jmp 0x68967
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x68947
leaq -0x1d0(%rbp), %rdi
callq 0x16d70
jmp 0x6887d
leaq -0x1c8(%rbp), %rdi
callq 0x310b0
movq %rax, -0x230(%rbp)
jmp 0x68892
movq -0x230(%rbp), %r8
leaq 0x26061(%rip), %rdx     # 0x8e901
leaq -0x1d8(%rbp), %rdi
movl $0x1, %esi
movl $0x6f, %ecx
callq 0x13fa0
jmp 0x688b8
leaq -0x1d8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x14060
jmp 0x688cd
leaq -0x1d8(%rbp), %rdi
callq 0x14020
leaq -0x1d0(%rbp), %rdi
callq 0x31070
jmp 0x68927
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x68919
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 0x68947
leaq -0x1c8(%rbp), %rdi
callq 0x30d20
movl -0xfc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xfc(%rbp)
jmp 0x6862c
leaq -0x1c8(%rbp), %rdi
callq 0x30d20
jmp 0x68967
leaq -0x38(%rbp), %rdi
callq 0x699c0
addq $0x230, %rsp            # imm = 0x230
popq %rbp
retq
movq -0xe0(%rbp), %rdi
callq 0xee80
nopw %cs:(%rax,%rax)