// File: /workspace/github_cpp_makefile_star2_O1/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 0x8cc(%rip), %xmm0      # 0x40c0
movq %rbx, %rdi
callq 0x29f4
movl $0x5, 0x10(%rbx)
movabsq $0x4018000000000000, %rax # imm = 0x4018000000000000
movq %rax, 0x18(%rbx)
movq %rbx, %rdi
callq 0x3bd4
leaq 0xe0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x89c(%rip), %rsi       # 0x40c8
leaq 0x8a3(%rip), %rdx       # 0x40d6
leaq 0xd0(%rsp), %rdi
callq 0x3c8c
leaq 0x70(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x2a5c
movq 0xd0(%rsp), %rdi
cmpq %r14, %rdi
je 0x386f
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x2190
leaq 0x70(%rsp), %rdi
callq 0x3c2b
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
xorl %eax, %eax
movq %rax, 0x60(%rsp)
movq %rax, 0x40(%rsp)
movaps %xmm0, 0x30(%rsp)
movl $0x1, 0x10(%rsp)
movq 0x58(%rsp), %rsi
testq %rsi, %rsi
je 0x38b5
movl $0x1, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x38c4
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3d1c
movl $0xb5e, 0x10(%rsp)      # imm = 0xB5E
movq 0x38(%rsp), %rsi
cmpq 0x40(%rsp), %rsi
je 0x38e9
movl $0xb5e, (%rsi)          # imm = 0xB5E
addq $0x4, %rsi
movq %rsi, 0x38(%rsp)
jmp 0x38f8
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3d1c
movl $0x2, 0x10(%rsp)
movq 0x58(%rsp), %rsi
cmpq 0x60(%rsp), %rsi
je 0x391d
movl $0x2, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x392c
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3d1c
movl $0x2d, 0x10(%rsp)
movq 0x38(%rsp), %rsi
cmpq 0x40(%rsp), %rsi
je 0x3951
movl $0x2d, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x38(%rsp)
jmp 0x3960
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3d1c
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x2b4c
leaq 0x70(%rsp), %rdi
callq 0x3c2b
leaq 0xc0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x746(%rip), %rsi       # 0x40d7
leaq 0x74e(%rip), %rdx       # 0x40e6
leaq 0xb0(%rsp), %rdi
callq 0x3c8c
leaq 0x70(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x2d20
movq 0xb0(%rsp), %rdi
cmpq %r14, %rdi
je 0x39d4
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x2190
leaq 0x70(%rsp), %rdi
callq 0x3c2b
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 0x3a20
movl $0x1, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x3a2b
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3e58
decl %ebp
jne 0x39fb
movl $0x2d, %ebp
leaq 0x10(%rsp), %rbx
leaq 0xc(%rsp), %r14
movl $0x2, 0xc(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x3a63
movl $0x2, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x3a6e
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3e58
decl %ebp
jne 0x3a3e
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2bea
leaq 0x70(%rsp), %rdi
callq 0x3c2b
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3aa2
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x3ab9
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x3ad0
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
leaq 0x3291(%rip), %rax      # 0x6d68
movq %rax, 0x70(%rsp)
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x3af9
movq 0xa8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
xorl %eax, %eax
addq $0xf0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x3b54
jmp 0x3b54
jmp 0x3b54
jmp 0x3b54
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
cmpq %r14, %rdi
je 0x3b75
movq 0xc0(%rsp), %rsi
incq %rsi
jmp 0x3b70
jmp 0x3b54
jmp 0x3b4d
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
cmpq %r14, %rdi
je 0x3ba3
movq 0xe0(%rsp), %rsi
incq %rsi
jmp 0x3b9e
movq %rax, %rbx
jmp 0x3ba3
jmp 0x3b5b
movq %rax, %rbx
jmp 0x3b75
jmp 0x3b5b
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3b75
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x3b8c
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x3ba3
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
leaq 0x31be(%rip), %rax      # 0x6d68
movq %rax, 0x70(%rsp)
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x3bcc
movq 0xa8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2190
movq %rbx, %rdi
callq 0x2260