// File: /workspace/github_cpp_makefile_star2_O2/adamiaonr[P]rid-analytics/src/prob.cpp
// Function: Prob::print_lm_prob(unsigned char, bool)
void Prob::print_lm_prob(uint8_t iface, bool iface_complement) {

    // decide if we're calculating the iface or 'iface complement' largest match 
    // probabilities
    std::vector<std::vector<std::vector<__float080> > > * lmp;
    if (!iface_complement) lmp = &(this->lm_cond_prob);
    else lmp = &(this->lm_complement_cond_prob);

    printf("\n---------------------");
    for (uint8_t i = 0; i < (this->n + 2); i++)
        printf("-------------");

    printf("\n[|L|]         : |");

    for (uint8_t i = 0; i < (this->n + 1); i++)
        printf(" %-11d|", i);

    if (!iface_complement) printf(" SUM P(L_{i|t}) |");
    else printf(" SUM P(L_{~i|t}) |");

    printf("\n---------------------");
    for (uint8_t i = 0; i < (this->n + 2); i++)
        printf("-------------");

    __float080 cumulative_prob = 0.0;
    __float080 prob = 0.0;

    for (uint8_t fptree_size = 0; fptree_size < (this->n + 1); fptree_size++) {

        if (!iface_complement) printf("\n[P(L_{%d|%d}) ] : |", iface, fptree_size);
        else printf("\n[P(L_{~%d|%d})] : |", iface, fptree_size);

        for (uint8_t f = 0; f < (this->n + 1); f++) {

            prob = (*lmp)[iface][fptree_size][f];
            printf(" %-.5LE|", prob);

            cumulative_prob += prob;
        }

        printf("     %-.5LE|", cumulative_prob);
        cumulative_prob = 0.0;
    }

    printf("\n---------------------");
    for (uint8_t i = 0; i < (this->n + 2); i++)
        printf("-------------");

    printf("\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %rbx
xorl %r12d, %r12d
testl %edx, %edx
pushq $0x18
popq %r13
cmoveq %r12, %r13
leaq 0x6506(%rip), %rdi      # 0x2b5c6
xorl %eax, %eax
callq 0x4060
leaq 0x5b46(%rip), %r15      # 0x2ac14
movzbl %r12b, %eax
movw %ax, 0x1a(%rsp)
filds 0x1a(%rsp)
fldt 0x90(%rbx)
fadds 0x6495(%rip)            # 0x2b57c
fucompi %st(1), %st
fstp %st(0)
jbe 0x250fc
movq %r15, %rdi
xorl %eax, %eax
callq 0x4060
incb %r12b
jmp 0x250ce
leaq 0x64da(%rip), %rdi      # 0x2b5dd
xorl %r15d, %r15d
xorl %eax, %eax
callq 0x4060
leaq 0x64dc(%rip), %r12      # 0x2b5f0
movzbl %r15b, %r15d
movw %r15w, 0x18(%rsp)
filds 0x18(%rsp)
fldt 0x90(%rbx)
fld1
faddp %st, %st(1)
fucompi %st(1), %st
fstp %st(0)
jbe 0x25144
movq %r12, %rdi
movl %r15d, %esi
xorl %eax, %eax
callq 0x4060
incb %r15b
jmp 0x25114
leaq 0x64bf(%rip), %rax      # 0x2b60a
leaq 0x64a6(%rip), %rdi      # 0x2b5f8
testb %bpl, %bpl
cmovneq %rax, %rdi
xorl %r12d, %r12d
xorl %eax, %eax
callq 0x4060
leaq 0x645c(%rip), %rdi      # 0x2b5c6
xorl %eax, %eax
callq 0x4060
leaq 0x5a9c(%rip), %r15      # 0x2ac14
movzbl %r12b, %eax
movw %ax, 0x16(%rsp)
filds 0x16(%rsp)
fldt 0x90(%rbx)
fld %st(0)
fadds 0x63e9(%rip)            # 0x2b57c
fucompi %st(2), %st
fstp %st(1)
jbe 0x251aa
fstp %st(0)
movq %r15, %rdi
xorl %eax, %eax
callq 0x4060
incb %r12b
jmp 0x25178
movzbl %r14b, %ecx
leaq 0x647d(%rip), %rax      # 0x2b632
leaq 0x6461(%rip), %rdx      # 0x2b61d
testb %bpl, %bpl
cmovneq %rax, %rdx
movq %rdx, 0x20(%rsp)
xorl %eax, %eax
movq %rcx, 0x28(%rsp)
imulq $0x18, %rcx, %r15
leaq 0x6471(%rip), %r12      # 0x2b64b
movzbl %al, %ebp
movw %bp, 0x14(%rsp)
filds 0x14(%rsp)
fld1
faddp %st, %st(2)
fxch %st(1)
fucompi %st(1), %st
fstp %st(0)
jbe 0x25291
movl %eax, 0x1c(%rsp)
xorl %r14d, %r14d
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
movl %ebp, %edx
xorl %eax, %eax
callq 0x4060
imulq $0x18, %rbp, %rbp
fldz
movzbl %r14b, %r14d
movw %r14w, 0x10(%rsp)
filds 0x10(%rsp)
fldt 0x90(%rbx)
fld1
faddp %st, %st(1)
fucompi %st(1), %st
fstp %st(0)
jbe 0x2526f
movq (%rbx,%r13), %rax
movq (%rax,%r15), %rax
movq (%rax,%rbp), %rax
movl %r14d, %ecx
shll $0x4, %ecx
fldt (%rax,%rcx)
fld %st(0)
fstpt 0x30(%rsp)
fstpt (%rsp)
movq %r12, %rdi
xorl %eax, %eax
fstpt 0x3c(%rsp)
callq 0x4060
fldt 0x3c(%rsp)
fldt 0x30(%rsp)
faddp %st, %st(1)
incb %r14b
jmp 0x25216
fstpt (%rsp)
leaq 0x63ce(%rip), %rdi      # 0x2b647
xorl %eax, %eax
callq 0x4060
movl 0x1c(%rsp), %eax
incb %al
fldt 0x90(%rbx)
jmp 0x251da
leaq 0x632e(%rip), %rdi      # 0x2b5c6
xorl %ebp, %ebp
xorl %eax, %eax
callq 0x4060
leaq 0x596c(%rip), %r14      # 0x2ac14
movzbl %bpl, %eax
movw %ax, 0x12(%rsp)
filds 0x12(%rsp)
fldt 0x90(%rbx)
fadds 0x62bb(%rip)            # 0x2b57c
fucompi %st(1), %st
fstp %st(0)
jbe 0x252d6
movq %r14, %rdi
xorl %eax, %eax
callq 0x4060
incb %bpl
jmp 0x252a8
pushq $0xa
popq %rdi
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4530