// File: /workspace/github_cpp_makefile_star2_O2/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 0x98c(%rip), %xmm0      # 0x40c0
movq %rbx, %rdi
callq 0x28bc
movl $0x5, 0x10(%rbx)
movabsq $0x4018000000000000, %rax # imm = 0x4018000000000000
movq %rax, 0x18(%rbx)
movq %rbx, %rdi
callq 0x3980
leaq 0x968(%rip), %rsi       # 0x40c8
leaq 0xd0(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x3a34
leaq 0x70(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x2920
leaq 0xd0(%rsp), %rdi
callq 0x20b0
leaq 0x70(%rsp), %rdi
callq 0x39d5
leaq 0x50(%rsp), %rdi
andq $0x0, 0x10(%rdi)
xorps %xmm0, %xmm0
andq $0x0, 0x40(%rsp)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x30(%rsp)
leaq 0x10(%rsp), %rsi
movl $0x1, (%rsi)
callq 0x3b3a
leaq 0x10(%rsp), %rsi
movl $0xb5e, (%rsi)          # imm = 0xB5E
leaq 0x30(%rsp), %rdi
callq 0x3b3a
leaq 0x10(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x50(%rsp), %rdi
callq 0x3b3a
leaq 0x10(%rsp), %rsi
movl $0x2d, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0x3b3a
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x2a0a
leaq 0x70(%rsp), %rdi
callq 0x39d5
leaq 0x8ad(%rip), %rsi       # 0x40d7
leaq 0xb0(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3a34
leaq 0x70(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x2bac
leaq 0xb0(%rsp), %rdi
callq 0x20b0
leaq 0x70(%rsp), %rdi
callq 0x39d5
leaq 0x10(%rsp), %rbx
andq $0x0, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
movl $0xb5e, %ebp            # imm = 0xB5E
leaq 0xc(%rsp), %r14
subl $0x1, %ebp
jb 0x3899
movl $0x1, 0xc(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3ce4
jmp 0x387f
pushq $0x2d
popq %rbp
leaq 0x10(%rsp), %rbx
leaq 0xc(%rsp), %r14
subl $0x1, %ebp
jb 0x38c0
movl $0x2, 0xc(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3ce4
jmp 0x38a6
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2a98
leaq 0x70(%rsp), %rdi
callq 0x39d5
leaq 0x10(%rsp), %rdi
callq 0x3cb0
leaq 0x30(%rsp), %rdi
callq 0x3b06
leaq 0x50(%rsp), %rdi
callq 0x3b06
leaq 0x70(%rsp), %rdi
callq 0x2d22
xorl %eax, %eax
addq $0xf0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x20b0
jmp 0x395a
jmp 0x3946
jmp 0x3946
jmp 0x3946
jmp 0x3946
jmp 0x3946
jmp 0x393f
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x20b0
jmp 0x396e
movq %rax, %rbx
jmp 0x396e
jmp 0x394d
movq %rax, %rbx
jmp 0x395a
jmp 0x394d
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3cb0
leaq 0x30(%rsp), %rdi
callq 0x3b06
leaq 0x50(%rsp), %rdi
callq 0x3b06
leaq 0x70(%rsp), %rdi
callq 0x2d22
movq %rbx, %rdi
callq 0x2270