// File: /workspace/github_cpp_makefile_star2_O3/Albuso0[P]support/main_test.cpp
// Function: main
int main()
{
    double pmin = 1e-5;

    // Configure estimator
    Support support( pmin );
    // Optional parameters configuration
    support.setDegree( 5 ); 
    support.setInterval( 6 ); 
    print_param(support); // print parameters

    // Input fingerprint from file
    support.setFin("fin_sample.txt"); // fingerprint of 3000 samples generated from uniform[100000]
    print_results(support); // print estimation results

    // Input fingerprint inline
    std::vector<int> freq, cnt;
    freq.push_back(1); cnt.push_back(2910); 
    freq.push_back(2); cnt.push_back(45);
    support.setFin(freq, cnt);
    print_results(support);

    // Input histogram from file
    support.setHist("hist_sample.txt"); // histogram of 3000 samples generated from uniform[100000]
    print_results(support);
    
    // Input histogram inline
    std::vector<unsigned> hist;
    for (int i = 0; i < 2910; i++) hist.push_back(1);
    for (int i = 0; i < 45; i++) hist.push_back(2);
    support.setHist(hist);
    print_results(support);

    return 0;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0xf0, %rsp
leaq 0x70(%rsp), %rbx
movsd 0x8c8(%rip), %xmm0      # 0x40c0
movq %rbx, %rdi
callq 0x29e8
movl $0x5, 0x10(%rbx)
movabsq $0x4018000000000000, %rax # imm = 0x4018000000000000
movq %rax, 0x18(%rbx)
movq %rbx, %rdi
callq 0x3bba
leaq 0xe0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x898(%rip), %rsi       # 0x40c8
leaq 0x89f(%rip), %rdx       # 0x40d6
leaq 0xd0(%rsp), %rdi
callq 0x3c72
leaq 0x70(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x2a50
movq 0xd0(%rsp), %rdi
cmpq %r14, %rdi
je 0x3873
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x2190
leaq 0x70(%rsp), %rdi
callq 0x3c11
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, (%rdi)
xorl %eax, %eax
movq %rax, 0x10(%rdi)
movq %rax, 0x40(%rsp)
movaps %xmm0, 0x30(%rsp)
leaq 0x10(%rsp), %rdx
movl $0x1, (%rdx)
xorl %esi, %esi
callq 0x3d08
movq 0x38(%rsp), %rsi
movl $0xb5e, 0x10(%rsp)      # imm = 0xB5E
cmpq 0x40(%rsp), %rsi
je 0x38cf
movl $0xb5e, (%rsi)          # imm = 0xB5E
addq $0x4, %rsi
movq %rsi, 0x38(%rsp)
jmp 0x38de
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3d08
movl $0x2, 0x10(%rsp)
movq 0x58(%rsp), %rsi
cmpq 0x60(%rsp), %rsi
je 0x3903
movl $0x2, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x3912
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3d08
movl $0x2d, 0x10(%rsp)
movq 0x38(%rsp), %rsi
cmpq 0x40(%rsp), %rsi
je 0x3937
movl $0x2d, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x38(%rsp)
jmp 0x3946
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3d08
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x2b40
leaq 0x70(%rsp), %rdi
callq 0x3c11
leaq 0xc0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x760(%rip), %rsi       # 0x40d7
leaq 0x768(%rip), %rdx       # 0x40e6
leaq 0xb0(%rsp), %rdi
callq 0x3c72
leaq 0x70(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x2d22
movq 0xb0(%rsp), %rdi
cmpq %r14, %rdi
je 0x39ba
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x2190
leaq 0x70(%rsp), %rdi
callq 0x3c11
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rbx
movaps %xmm0, (%rbx)
movq $0x0, 0x10(%rbx)
movl $0xb5e, %ebp            # imm = 0xB5E
leaq 0xc(%rsp), %r14
movl $0x1, 0xc(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x3a06
movl $0x1, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x3a11
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3e44
decl %ebp
jne 0x39e1
movl $0x2d, %ebp
leaq 0x10(%rsp), %rbx
leaq 0xc(%rsp), %r14
movl $0x2, 0xc(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x3a49
movl $0x2, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x3a54
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3e44
decl %ebp
jne 0x3a24
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2bde
leaq 0x70(%rsp), %rdi
callq 0x3c11
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3a88
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x3a9f
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x3ab6
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
leaq 0x32ab(%rip), %rax      # 0x6d68
movq %rax, 0x70(%rsp)
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x3adf
movq 0xa8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
xorl %eax, %eax
addq $0xf0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x3b3a
jmp 0x3b3a
jmp 0x3b3a
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
cmpq %r14, %rdi
je 0x3b5b
movq 0xc0(%rsp), %rsi
incq %rsi
jmp 0x3b56
jmp 0x3b3a
jmp 0x3b3a
jmp 0x3b33
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
cmpq %r14, %rdi
je 0x3b89
movq 0xe0(%rsp), %rsi
incq %rsi
jmp 0x3b84
movq %rax, %rbx
jmp 0x3b89
jmp 0x3b41
movq %rax, %rbx
jmp 0x3b5b
jmp 0x3b41
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3b5b
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x3b72
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x3b89
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
leaq 0x31d8(%rip), %rax      # 0x6d68
movq %rax, 0x70(%rsp)
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x3bb2
movq 0xa8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq %rbx, %rdi
callq 0x2260