// File: /workspace/github_cpp_makefile_star2_O2/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
pushq $0x6
popq %rdi
callq 0x5623
movq 0x5b52(%rip), %r13      # 0x8fc8
movq (%r13), %rdi
pushq $0x1
popq %rdx
xorl %esi, %esi
xorl %ecx, %ecx
callq 0x3030
pushq $0xc
popq %rdi
pushq $0x10
popq %rsi
pushq $0x2
popq %rdx
callq 0x3824
movq %rax, %rbx
xorl %esi, %esi
testq %rax, %rax
setne %sil
subq $0x8, %rsp
leaq 0x2b68(%rip), %r10      # 0x6013
leaq 0x2b57(%rip), %rbp      # 0x6009
leaq 0x2b4b(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r10
pushq $0x22
pushq %rbp
callq 0x4d14
addq $0x20, %rsp
leaq 0x2bd1(%rip), %rsi      # 0x60aa
movq %rbx, %rdi
callq 0x3b5f
testl %eax, %eax
je 0x350c
movl %eax, %r10d
leaq 0x2b2c(%rip), %r11      # 0x601b
leaq 0x2b0e(%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
pushq $0x25
pushq %rbp
jmp 0x3542
subq $0x20, %rsp
leaq 0x2b04(%rip), %rax      # 0x601b
andl $0x0, 0x18(%rsp)
movq %rax, 0x10(%rsp)
movq %rbp, (%rsp)
movl $0x25, 0x8(%rsp)
leaq 0x2ad0(%rip), %r9       # 0x6004
pushq $0x1
popq %rsi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x4d14
addq $0x20, %rsp
leaq 0x2b52(%rip), %rdi      # 0x60a4
callq 0x32b0
leaq 0x2b4c(%rip), %r14      # 0x60aa
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3955
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3b5f
testl %eax, %eax
je 0x35a0
movl %eax, %r10d
leaq 0x2abb(%rip), %r11      # 0x603d
leaq 0x2a7b(%rip), %r9       # 0x6004
pushq $0x1
popq %rsi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r10
pushq %r11
pushq $0x2b
pushq %rbp
jmp 0x35d5
subq $0x20, %rsp
leaq 0x2a92(%rip), %rax      # 0x603d
movq %rax, 0x10(%rsp)
movq %rbp, (%rsp)
andl $0x0, 0x18(%rsp)
movl $0x2b, 0x8(%rsp)
leaq 0x2a3c(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x4d14
addq $0x20, %rsp
leaq 0x2ac8(%rip), %rdi      # 0x60ad
callq 0x32b0
leaq 0x2ac2(%rip), %rsi      # 0x60b3
movq %rbx, %rdi
callq 0x3955
leaq 0x2a56(%rip), %rsi      # 0x6056
movq %rbx, %rdi
callq 0x3b5f
testl %eax, %eax
je 0x3634
movl %eax, %r10d
leaq 0x2a43(%rip), %r11      # 0x6059
leaq 0x29e7(%rip), %r9       # 0x6004
pushq $0x1
popq %rsi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r10
pushq %r11
pushq $0x31
pushq %rbp
jmp 0x3669
subq $0x20, %rsp
leaq 0x2a1a(%rip), %rax      # 0x6059
movq %rax, 0x10(%rsp)
movq %rbp, (%rsp)
andl $0x0, 0x18(%rsp)
movl $0x31, 0x8(%rsp)
leaq 0x29a8(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x4d14
addq $0x20, %rsp
leaq 0x2a3d(%rip), %rdi      # 0x60b6
callq 0x32b0
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x3bf7
movq %rbx, %rdi
callq 0x3bb5
movl %eax, %r15d
movq %rbx, %rdi
callq 0x3bd7
movl %eax, %r14d
leaq 0x4(%rsp), %r12
movb $0x0, 0x2(%r12)
movw $0x5f5f, (%r12)         # imm = 0x5F5F
movb $0x41, %al
movb %al, 0x5(%rsp)
cmpb $0x44, %al
jg 0x36e1
movb $0x43, %al
movb %al, 0x4(%rsp)
cmpb $0x5a, %al
jg 0x36d9
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3955
movb 0x4(%rsp), %al
incb %al
jmp 0x36be
movb 0x5(%rsp), %al
incb %al
jmp 0x36b4
leaq 0x29e6(%rip), %rdi      # 0x60ce
callq 0x32b0
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x3bf7
movb $0x41, %al
leaq 0x4(%rsp), %r12
movb %al, 0x5(%rsp)
cmpb $0x44, %al
jg 0x372d
movb $0x43, %al
movb %al, 0x4(%rsp)
cmpb $0x5a, %al
jg 0x3725
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3a82
movb 0x4(%rsp), %al
incb %al
jmp 0x370a
movb 0x5(%rsp), %al
incb %al
jmp 0x3700
leaq 0x29b2(%rip), %rdi      # 0x60e6
callq 0x32b0
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x3bf7
movq %rbx, %rdi
callq 0x3bb5
movl %eax, %r13d
movq %rbx, %rdi
callq 0x3bd7
movl %eax, %r12d
subq $0x8, %rsp
cmpl %r15d, %r13d
jne 0x3784
leaq 0x291d(%rip), %r10      # 0x6088
leaq 0x2892(%rip), %r9       # 0x6004
pushq $0x1
popq %rsi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r15
jmp 0x37a1
leaq 0x28fd(%rip), %r10      # 0x6088
leaq 0x2872(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r13
pushq %r15
pushq %r10
pushq $0x48
pushq %rbp
callq 0x4d14
addq $0x30, %rsp
subq $0x8, %rsp
cmpl %r14d, %r12d
jne 0x37da
leaq 0x28d5(%rip), %r10      # 0x6096
leaq 0x283c(%rip), %r9       # 0x6004
pushq $0x1
popq %rsi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r14
jmp 0x37f7
leaq 0x28b5(%rip), %r10      # 0x6096
leaq 0x281c(%rip), %r9       # 0x6004
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
pushq %r12
pushq %r14
pushq %r10
pushq $0x49
pushq %rbp
callq 0x4d14
addq $0x30, %rsp
movq %rbx, %rdi
callq 0x3930
callq 0x58c1
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop