// File: /workspace/github_cpp_makefile_star2_O1/ctSkennerton[P]fxtract/util/bloom_t.c
// Function: main
int
main(void)
{
    plan_tests(6);
    setvbuf(stdout, 0, _IOLBF, 0);

    BLOOM *bp = bloom_create(12, 16, 2);
    ok(bp, "created");

    int rc = bloom_chk(bp, "AB");
    ok(rc == 0, "Check 'AB' not in empty table: %d", rc);

    printf("# Add AB\n");
    bloom_add(bp, "AB");

    rc = bloom_chk(bp, "AB");
    ok(rc != 0, "Check 'AB' after add: %d", rc);

    printf("# Add AC\n");
    bloom_add(bp, "AC");

    rc = bloom_chk(bp, "!@");
    ok(rc != 0, "Check '!@' without add: %d (false positive)", rc);

    printf("# Before adding CA...DZ\n");
    bloom_dump(bp, stdout);

    int antestat = bloom_stat(bp), anteover = bloom_over(bp);

    char hash[] = "__";
    for (hash[1] = 'A'; hash[1] <= 'D'; ++hash[1])
        for (hash[0] = 'C'; hash[0] <= 'Z'; ++hash[0])
            bloom_add(bp, hash);

    printf("# After adding CA...DZ:\n");
    bloom_dump(bp, stdout);

    for (hash[1] = 'A'; hash[1] <= 'D'; ++hash[1])
        for (hash[0] = 'C'; hash[0] <= 'Z'; ++hash[0])
            bloom_del(bp, hash);

    printf("# After deleting CA...DZ:\n");
    bloom_dump(bp, stdout);

    int poststat = bloom_stat(bp), postover = bloom_over(bp);
    ok(poststat == antestat, "stat %d -> %d", antestat, poststat);
    ok(postover == anteover, "over %d -> %d", anteover, postover);

    bloom_destroy(bp);

    return exit_status();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl $0x6, %edi
callq 0x577e
movq 0x5ac0(%rip), %r13      # 0x8fc8
movq (%r13), %rdi
xorl %esi, %esi
movl $0x1, %edx
xorl %ecx, %ecx
callq 0x3030
movl $0xc, %edi
movl $0x10, %esi
movl $0x2, %edx
callq 0x3858
movq %rax, %rbx
xorl %esi, %esi
testq %rax, %rax
setne %sil
subq $0x8, %rsp
leaq 0x2ace(%rip), %r10      # 0x6013
leaq 0x2abd(%rip), %r15      # 0x6009
leaq 0x2ab1(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r10
pushq $0x22
pushq %r15
callq 0x4ea8
addq $0x20, %rsp
leaq 0x2b36(%rip), %rsi      # 0x60aa
movq %rbx, %rdi
callq 0x3c2d
testl %eax, %eax
je 0x35a4
movl %eax, %r10d
leaq 0x2a91(%rip), %r11      # 0x601b
leaq 0x2a73(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r10
pushq %r11
jmp 0x35c6
leaq 0x2a70(%rip), %r10      # 0x601b
leaq 0x2a52(%rip), %r9       # 0x6004
movl $0x1, %esi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq $0x0
pushq %r10
pushq $0x25
pushq %r15
callq 0x4ea8
addq $0x20, %rsp
leaq 0x2aca(%rip), %rdi      # 0x60a4
callq 0x32b0
leaq 0x2ac4(%rip), %r14      # 0x60aa
movq %rbx, %rdi
movq %r14, %rsi
callq 0x399a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3c2d
testl %eax, %eax
je 0x3627
movl %eax, %r10d
leaq 0x2a33(%rip), %r11      # 0x603d
leaq 0x29f3(%rip), %r9       # 0x6004
movl $0x1, %esi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r10
pushq %r11
jmp 0x3646
leaq 0x2a0f(%rip), %r10      # 0x603d
leaq 0x29cf(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq $0x0
pushq %r10
pushq $0x2b
pushq %r15
callq 0x4ea8
addq $0x20, %rsp
leaq 0x2a53(%rip), %rdi      # 0x60ad
callq 0x32b0
leaq 0x2a4d(%rip), %rsi      # 0x60b3
movq %rbx, %rdi
callq 0x399a
leaq 0x29e1(%rip), %rsi      # 0x6056
movq %rbx, %rdi
callq 0x3c2d
testl %eax, %eax
je 0x36a8
movl %eax, %r10d
leaq 0x29ce(%rip), %r11      # 0x6059
leaq 0x2972(%rip), %r9       # 0x6004
movl $0x1, %esi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r10
pushq %r11
jmp 0x36c7
leaq 0x29aa(%rip), %r10      # 0x6059
leaq 0x294e(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq $0x0
pushq %r10
pushq $0x31
pushq %r15
callq 0x4ea8
addq $0x20, %rsp
leaq 0x29db(%rip), %rdi      # 0x60b6
callq 0x32b0
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x3cce
movq %rbx, %rdi
callq 0x3c80
movl %eax, %r15d
movq %rbx, %rdi
callq 0x3ca4
movl %eax, %r14d
leaq 0x4(%rsp), %r12
movw $0x5f5f, (%r12)         # imm = 0x5F5F
movb $0x0, 0x2(%r12)
movb $0x41, 0x1(%r12)
movb $0x43, 0x4(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x399a
movb 0x4(%rsp), %al
incb %al
movb %al, 0x4(%rsp)
cmpb $0x5b, %al
jl 0x371f
movb 0x5(%rsp), %al
incb %al
movb %al, 0x5(%rsp)
cmpb $0x45, %al
jl 0x371a
leaq 0x2981(%rip), %rdi      # 0x60ce
callq 0x32b0
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x3cce
leaq 0x4(%rsp), %r12
movb $0x41, 0x1(%r12)
movb $0x43, 0x4(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3af6
movb 0x4(%rsp), %al
incb %al
movb %al, 0x4(%rsp)
cmpb $0x5b, %al
jl 0x376e
movb 0x5(%rsp), %al
incb %al
movb %al, 0x5(%rsp)
cmpb $0x45, %al
jl 0x3769
leaq 0x294a(%rip), %rdi      # 0x60e6
callq 0x32b0
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x3cce
movq %rbx, %rdi
callq 0x3c80
movl %eax, %ebp
movq %rbx, %rdi
callq 0x3ca4
movl %eax, %r12d
xorl %esi, %esi
cmpl %r15d, %ebp
sete %sil
subq $0x8, %rsp
leaq 0x28b2(%rip), %r10      # 0x6088
leaq 0x2827(%rip), %r13      # 0x6004
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
movq %r13, %r9
xorl %eax, %eax
pushq %rbp
pushq %r15
pushq %r10
pushq $0x48
leaq 0x2810(%rip), %r15      # 0x6009
pushq %r15
callq 0x4ea8
addq $0x30, %rsp
xorl %esi, %esi
cmpl %r14d, %r12d
sete %sil
subq $0x8, %rsp
leaq 0x287e(%rip), %r10      # 0x6096
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
movq %r13, %r9
xorl %eax, %eax
pushq %r12
pushq %r14
pushq %r10
pushq $0x49
pushq %r15
callq 0x4ea8
addq $0x30, %rsp
movq %rbx, %rdi
callq 0x3975
callq 0x5a22
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)