// File: /workspace/github_cpp_makefile_star2_O3/Albuso0[P]support/main.cpp
// Function: main
int main(int argc, char *argv[])
{
    double pmin = 0;
    int L = 0;
    double M = 0;
    std::string fin = "", hist = "";
    
    std::CommandLine cmd;
    cmd.AddValue ("pmin",  "Minimum mass", pmin);
    cmd.AddValue ("L",  "Polynoimal degree. Default c0*log(1/pmin)", L);
    cmd.AddValue ("M",  "M/n is the right-end of approximation interval. Default c1*log(1/pmin)", M);
    cmd.AddValue ("fin",  "fingerprint data file", fin);
    cmd.AddValue ("hist",  "histogram data file", hist);
    cmd.Parse (argc, argv);
    if( pmin == 0 ) { std::cerr<<"Please input pmin!\n"; exit(1); }
    if( L == 0 ) L = 0.45*log(1/pmin); // Default value
    if( M == 0 ) M = 0.5*log(1/pmin);  // Default value
    if( (hist=="") && (fin=="") ) { std::cerr<<"Please input fingerprint or histogram!\n"; exit(1); }
    
    printf("\n");
    // Configure estimator
    Support support( pmin );  // set pmin
    support.setDegree( L );   // set degree    =L
    support.setInterval( M ); // set interval  =[pmin,M/n]
    print_param(support);

    // Input fingerprint from file
    if ( fin!="")
        support.setFin(fin);
    else
        support.setHist(hist);
    print_results(support);

    
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rsi, %rbx
movl %edi, %ebp
xorl %eax, %eax
movq %rax, 0x78(%rsp)
movl $0x0, 0xc(%rsp)
movq %rax, 0x70(%rsp)
leaq 0xa8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1d88(%rip), %r14      # 0x61ed
leaq 0x98(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x4dec
leaq 0xc8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xb8(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x4dec
leaq 0x80(%rsp), %rax
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x40(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1bae(%rip), %rsi      # 0x606d
leaq 0x1bab(%rip), %rdx      # 0x6071
leaq 0x30(%rsp), %rdi
callq 0x4dec
leaq 0x20(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x1b92(%rip), %rsi      # 0x6072
leaq 0x1b97(%rip), %rdx      # 0x607e
leaq 0x10(%rsp), %rdi
callq 0x4dec
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x78(%rsp), %rcx
callq 0x4b64
movq 0x10(%rsp), %rdi
cmpq %r13, %rdi
je 0x4524
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3230
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x453b
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1b35(%rip), %rsi      # 0x607f
leaq 0x1b2f(%rip), %rdx      # 0x6080
callq 0x4dec
leaq 0x10(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1b1c(%rip), %rsi      # 0x6081
leaq 0x1b3e(%rip), %rdx      # 0x60aa
callq 0x4dec
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0xc(%rsp), %rcx
callq 0x4c0a
movq 0x10(%rsp), %rdi
cmpq %r13, %rdi
je 0x45a4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3230
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x45bb
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1ae1(%rip), %rsi      # 0x60ab
leaq 0x1adb(%rip), %rdx      # 0x60ac
callq 0x4dec
leaq 0x10(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1ac8(%rip), %rsi      # 0x60ad
leaq 0x1b07(%rip), %rdx      # 0x60f3
callq 0x4dec
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x70(%rsp), %rcx
callq 0x4b64
movq 0x10(%rsp), %rdi
cmpq %r13, %rdi
je 0x4624
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3230
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x463b
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1aaa(%rip), %rsi      # 0x60f4
leaq 0x1aa6(%rip), %rdx      # 0x60f7
callq 0x4dec
leaq 0x10(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1a93(%rip), %rsi      # 0x60f8
leaq 0x1aa1(%rip), %rdx      # 0x610d
callq 0x4dec
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x98(%rsp), %rcx
callq 0x4cb0
movq 0x10(%rsp), %rdi
cmpq %r13, %rdi
je 0x46a7
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3230
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x46be
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1a41(%rip), %rsi      # 0x610e
leaq 0x1a3e(%rip), %rdx      # 0x6112
callq 0x4dec
leaq 0x10(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1a2b(%rip), %rsi      # 0x6113
leaq 0x1a37(%rip), %rdx      # 0x6126
callq 0x4dec
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0xb8(%rsp), %rcx
callq 0x4cb0
movq 0x10(%rsp), %rdi
cmpq %r13, %rdi
je 0x472a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3230
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x4741
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3230
leaq 0x80(%rsp), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x525c
movsd 0x78(%rsp), %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jne 0x4769
jnp 0x496c
cmpl $0x0, 0xc(%rsp)
jne 0x4791
movsd 0x1890(%rip), %xmm0     # 0x6008
divsd %xmm1, %xmm0
callq 0x31b0
mulsd 0x1897(%rip), %xmm0     # 0x6020
cvttsd2si %xmm0, %eax
movl %eax, 0xc(%rsp)
movsd 0x70(%rsp), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x47c4
jp 0x47c4
movsd 0x185d(%rip), %xmm0     # 0x6008
divsd 0x78(%rsp), %xmm0
callq 0x31b0
mulsd 0x186a(%rip), %xmm0     # 0x6028
movsd %xmm0, 0x70(%rsp)
leaq 0x1a22(%rip), %rsi      # 0x61ed
leaq 0xb8(%rsp), %rdi
callq 0x30a0
testl %eax, %eax
jne 0x47f8
leaq 0x1a0a(%rip), %rsi      # 0x61ed
leaq 0x98(%rsp), %rdi
callq 0x30a0
testl %eax, %eax
je 0x4981
movl $0xa, %edi
callq 0x32c0
movsd 0x78(%rsp), %xmm0
leaq 0x30(%rsp), %rdi
callq 0x3b38
movl 0xc(%rsp), %eax
leaq 0x30(%rsp), %rdi
movl %eax, 0x10(%rdi)
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x18(%rdi)
callq 0x4aac
leaq 0x19b8(%rip), %rsi      # 0x61ed
leaq 0x98(%rsp), %rdi
callq 0x30a0
testl %eax, %eax
je 0x488e
leaq 0x108(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x98(%rsp), %rsi
movq 0xa0(%rsp), %rdx
addq %rsi, %rdx
leaq 0xf8(%rsp), %rdi
callq 0x4d56
leaq 0x30(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x3ba0
movq 0xf8(%rsp), %rdi
jmp 0x48d4
leaq 0xe8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
addq %rsi, %rdx
leaq 0xd8(%rsp), %rdi
callq 0x4d56
leaq 0x30(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x3e72
movq 0xd8(%rsp), %rdi
cmpq %r14, %rdi
je 0x48e4
movq (%r14), %rsi
incq %rsi
callq 0x3230
leaq 0x30(%rsp), %rdi
callq 0x4b03
leaq 0x436b(%rip), %rax      # 0x8c60
movq %rax, 0x30(%rsp)
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x4911
movq 0x68(%rsp), %rsi
subq %rdi, %rsi
callq 0x3230
leaq 0x80(%rsp), %rdi
callq 0x58b0
movq 0xb8(%rsp), %rdi
cmpq %r12, %rdi
je 0x493b
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3230
movq 0x98(%rsp), %rdi
cmpq %r15, %rdi
je 0x4958
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3230
xorl %eax, %eax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x467d(%rip), %rdi      # 0x8ff0
leaq 0x17ad(%rip), %rsi      # 0x6127
callq 0x3210
jmp 0x4994
movq 0x4668(%rip), %rdi      # 0x8ff0
leaq 0x17ac(%rip), %rsi      # 0x613b
callq 0x3210
movl $0x1, %edi
callq 0x3290
movq %rax, %rbx
movq 0xd8(%rsp), %rdi
cmpq %r14, %rdi
je 0x4a3a
movq 0xe8(%rsp), %rsi
jmp 0x49d4
movq %rax, %rbx
movq 0xf8(%rsp), %rdi
cmpq %r14, %rdi
je 0x4a3a
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x3230
jmp 0x4a3a
jmp 0x4a32
jmp 0x49f8
jmp 0x4a14
jmp 0x4a32
jmp 0x49f8
jmp 0x4a14
jmp 0x4a32
jmp 0x49f8
jmp 0x4a14
jmp 0x4a32
jmp 0x49f8
jmp 0x4a14
jmp 0x4a32
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a17
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3230
jmp 0x4a17
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x4a5d
movq 0x40(%rsp), %rsi
incq %rsi
jmp 0x4a58
jmp 0x4a32
movq %rax, %rbx
jmp 0x4a87
movq %rax, %rbx
jmp 0x4a5d
movq %rax, %rbx
leaq 0x421f(%rip), %rax      # 0x8c60
movq %rax, 0x30(%rsp)
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x4a5d
movq 0x68(%rsp), %rsi
subq %rdi, %rsi
callq 0x3230
leaq 0x80(%rsp), %rdi
callq 0x58b0
movq 0xb8(%rsp), %rdi
cmpq %r12, %rdi
je 0x4a87
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3230
movq 0x98(%rsp), %rdi
cmpq %r15, %rdi
je 0x4aa4
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3230
movq %rbx, %rdi
callq 0x3390