// File: /workspace/github_cpp_makefile_star2_O3/adamiaonr[P]rid-analytics/include/prob.h
// Function: Prob::Prob(long double, long double, unsigned char)
Prob(
        __float080 m,
        __float080 n,
        uint8_t iface_num) {

        // bf size and req. size (as bf fp rate params)
        this->m = m;
        this->n = n;
        // k : optimal nr. of hash functions for bfs
        this->k = (log(2) * ((__float080) this->m)) / ((__float080) this->n);

        this->iface_num = iface_num;

        // initialize prob arrays:
        //  - P(L_i = l | P_i = p)
        //  - P(L_(~i) = l | P_(~i) = p)
        // for (unsigned i = 0; i < this->iface_num; i++) {
        //     this->lm_cond_prob.push_back(std::vector<std::vector<__float080> > ((n + 1), std::vector<__float080> ((n + 1), 0.0)));
        //     this->lm_complement_cond_prob.push_back(std::vector<std::vector<__float080> > ((n + 1), std::vector<__float080> ((n + 1), 0.0)));
        // }

        //  - P(P_i = p) and P(P_(~i) = p)
        this->fptree_prob.push_back(std::vector<std::vector<__float080> > ((this->iface_num), std::vector<__float080> ((n + 1), 0.0)));
        this->fptree_prob.push_back(std::vector<std::vector<__float080> > ((this->iface_num), std::vector<__float080> ((n + 1), 0.0)));

        // mark largest match probs as 'not calc'ed'
        this->has_lm_prob = false;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movl %esi, %ebp
movq %rdi, %rbx
fldt 0xa0(%rsp)
fldt 0x90(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0x70(%rdi)
fld %st(0)
fstpt 0x80(%rdi)
fmull 0x12eb3(%rip)           # 0x305d0
fld %st(1)
fstpt 0x90(%rdi)
fdiv %st(1), %st
fld1
faddp %st, %st(2)
flds 0x12eaf(%rip)           # 0x305e0
xorl %r15d, %r15d
fxch %st(2)
fucomi %st(2), %st
fldz
fld %st(0)
fcmovnb %st(4), %st
fstp %st(4)
fxch %st(2)
fstpt 0xa0(%rdi)
movb %bpl, 0xb0(%rdi)
fsubp %st, %st(2)
setae %r15b
fnstcw 0xc(%rsp)
movzwl 0xc(%rsp), %eax
orl $0xc00, %eax            # imm = 0xC00
movw %ax, 0xe(%rsp)
fldcw 0xe(%rsp)
leaq 0x60(%rdi), %r14
fxch %st(1)
fistpll 0x50(%rsp)
fldcw 0xc(%rsp)
shlq $0x3f, %r15
xorq 0x50(%rsp), %r15
fstpt 0x40(%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rdx
leaq 0xb(%rsp), %rcx
movq %r15, %rsi
callq 0x1d906
movzbl %bpl, %esi
leaq 0x28(%rsp), %rdi
leaq 0x10(%rsp), %rdx
leaq 0xa(%rsp), %rcx
callq 0x1dca0
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
callq 0x1ddd4
leaq 0x28(%rsp), %rdi
callq 0x1dd38
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1d7e4
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x43a0
movzbl 0xb0(%rbx), %r12d
fldz
fstpt 0x40(%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rdx
leaq 0xb(%rsp), %rcx
movq %r15, %rsi
callq 0x1d906
leaq 0x28(%rsp), %rdi
leaq 0x10(%rsp), %rdx
leaq 0xa(%rsp), %rcx
movq %r12, %rsi
callq 0x1dca0
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
callq 0x1ddd4
leaq 0x28(%rsp), %rdi
callq 0x1dd38
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1d84e
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x43a0
movb $0x0, 0xb1(%rbx)
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1d86a
jmp 0x1d879
jmp 0x1d895
movq %rax, %r15
leaq 0x28(%rsp), %rdi
callq 0x1dd38
jmp 0x1d87c
movq %rax, %r15
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1d898
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x43a0
jmp 0x1d898
movq %rax, %r15
leaq 0x48(%rbx), %r12
leaq 0x30(%rbx), %r13
leaq 0x18(%rbx), %rbp
movq %r14, %rdi
callq 0x1dd8c
movq %r12, %rdi
callq 0x1dd38
movq %r13, %rdi
callq 0x1dd38
movq %rbp, %rdi
callq 0x1dd8c
movq %rbx, %rdi
callq 0x1dd8c
movq %r15, %rdi
callq 0x4700