// File: millanek[P]Dsuite/Dsuite_utils.cpp
// Function: FdM_Denom_perVariant(double, double, double, double)
double FdM_Denom_perVariant(double p1, double p2, double p3, double pO) {
    double FdM_Denom = 0;
    if (p1 <= p2) {
        if (p2 > p3) FdM_Denom = ((1-p1) * p2 * p2 * (1-pO)) - (p1 * (1-p2) * p2 * (1-pO));
        else FdM_Denom = ((1-p1) * p3 * p3 * (1-pO)) - (p1 * (1-p3) * p3 * (1-pO));
    } else {
        if (p1 > p3) FdM_Denom = -(((1-p1)*p2*p1*(1-pO)) - (p1*(1-p2)*p1*(1-pO)));
        else FdM_Denom = -(((1-p3)*p2*p3*(1-pO)) - (p3*(1-p2)*p3*(1-pO)));
    }
    return FdM_Denom;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movsd %xmm0, -0x8(%rbp)
movsd %xmm1, -0x10(%rbp)
movsd %xmm2, -0x18(%rbp)
movsd %xmm3, -0x20(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x8(%rbp), %xmm1
movsd -0x10(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0xa10f
movsd -0x10(%rbp), %xmm0
ucomisd -0x18(%rbp), %xmm0
jbe 0xa096
movsd 0x7e480(%rip), %xmm0    # 0x884a8
subsd -0x8(%rbp), %xmm0
mulsd -0x10(%rbp), %xmm0
mulsd -0x10(%rbp), %xmm0
movsd 0x7e469(%rip), %xmm2    # 0x884a8
subsd -0x20(%rbp), %xmm2
movsd -0x8(%rbp), %xmm1
movsd 0x7e457(%rip), %xmm3    # 0x884a8
subsd -0x10(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd -0x10(%rbp), %xmm1
movsd 0x7e441(%rip), %xmm3    # 0x884a8
subsd -0x20(%rbp), %xmm3
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xa10a
movsd 0x7e40a(%rip), %xmm0    # 0x884a8
subsd -0x8(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
movsd 0x7e3f3(%rip), %xmm2    # 0x884a8
subsd -0x20(%rbp), %xmm2
movsd -0x8(%rbp), %xmm1
movsd 0x7e3e1(%rip), %xmm3    # 0x884a8
subsd -0x18(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd -0x18(%rbp), %xmm1
movsd 0x7e3cb(%rip), %xmm3    # 0x884a8
subsd -0x20(%rbp), %xmm3
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xa23c
movsd -0x8(%rbp), %xmm0
ucomisd -0x18(%rbp), %xmm0
jbe 0xa1af
movsd 0x7e381(%rip), %xmm0    # 0x884a8
subsd -0x8(%rbp), %xmm0
mulsd -0x10(%rbp), %xmm0
mulsd -0x8(%rbp), %xmm0
movsd 0x7e36a(%rip), %xmm2    # 0x884a8
subsd -0x20(%rbp), %xmm2
movsd -0x8(%rbp), %xmm1
movsd 0x7e358(%rip), %xmm3    # 0x884a8
subsd -0x10(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd -0x8(%rbp), %xmm1
movsd 0x7e342(%rip), %xmm3    # 0x884a8
subsd -0x20(%rbp), %xmm3
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xa23a
movsd 0x7e2f1(%rip), %xmm0    # 0x884a8
subsd -0x18(%rbp), %xmm0
mulsd -0x10(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
movsd 0x7e2da(%rip), %xmm2    # 0x884a8
subsd -0x20(%rbp), %xmm2
movsd -0x18(%rbp), %xmm1
movsd 0x7e2c8(%rip), %xmm3    # 0x884a8
subsd -0x10(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd -0x18(%rbp), %xmm1
movsd 0x7e2b2(%rip), %xmm3    # 0x884a8
subsd -0x20(%rbp), %xmm3
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xa23c
movsd -0x28(%rbp), %xmm0
popq %rbp
retq
nopw %cs:(%rax,%rax)