// File: j-faria[P]kima/src/RVConditionalPrior.cpp
// Function: RVConditionalPrior::log_pdf(std::vector<double, std::allocator<double>> const&) const
double RVConditionalPrior::log_pdf(const std::vector<double>& vec) const
{
    if(hyperpriors)
    {
        if(vec[2] < 0. || vec[2] > 2.*M_PI ||
           vec[3] < 0. || vec[3] >= 1.0 ||
           vec[4] < 0. || vec[4] > 2.*M_PI)
             return -1E300;

        Pprior->setpars(center, width);
        Kprior->setpars(muK);
    }
    else
    {
        if(vec[0] < 1. || vec[0] > 1E4 ||
           vec[1] < 0. ||
           vec[2] < 0. || vec[2] > 2.*M_PI ||
           vec[3] < 0. || vec[3] >= 1.0 ||
           vec[4] < 0. || vec[4] > 2.*M_PI)
             return -1E300;
    }

    return Pprior->log_pdf(vec[0]) + 
           Kprior->log_pdf(vec[1]) + 
           phiprior->log_pdf(vec[2]) + 
           eprior->log_pdf(vec[3]) + 
           wprior->log_pdf(vec[4]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq 0xba123(%rip), %rax     # 0xc59a2
testb $0x1, (%rax)
je 0xb98a
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0xa6a0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0xb931
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0xa6a0
movsd (%rax), %xmm0
movsd 0xab89b(%rip), %xmm1    # 0xb7158
ucomisd %xmm1, %xmm0
ja 0xb931
movq -0x18(%rbp), %rdi
movl $0x3, %esi
callq 0xa6a0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0xb931
movq -0x18(%rbp), %rdi
movl $0x3, %esi
callq 0xa6a0
movsd (%rax), %xmm0
movsd 0xab73c(%rip), %xmm1    # 0xb7030
ucomisd %xmm1, %xmm0
jae 0xb931
movq -0x18(%rbp), %rdi
movl $0x4, %esi
callq 0xa6a0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0xb931
movq -0x18(%rbp), %rdi
movl $0x4, %esi
callq 0xa6a0
movsd (%rax), %xmm0
movsd 0xab82d(%rip), %xmm1    # 0xb7158
ucomisd %xmm1, %xmm0
jbe 0xb943
movsd 0xab8b7(%rip), %xmm0    # 0xb71f0
movsd %xmm0, -0x8(%rbp)
jmp 0xbbcd
movq -0x20(%rbp), %rdi
addq $0x20, %rdi
callq 0xc680
movq %rax, %rdi
movq -0x20(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd 0x10(%rax), %xmm1
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x20(%rbp), %rdi
addq $0x30, %rdi
callq 0xc680
movq %rax, %rdi
movq -0x20(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq (%rdi), %rax
callq *(%rax)
jmp 0xbaa4
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa6a0
movsd 0xab691(%rip), %xmm0    # 0xb7030
ucomisd (%rax), %xmm0
ja 0xba90
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa6a0
movsd (%rax), %xmm0
movsd 0xab826(%rip), %xmm1    # 0xb71e8
ucomisd %xmm1, %xmm0
ja 0xba90
movq -0x18(%rbp), %rdi
movl $0x1, %esi
callq 0xa6a0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0xba90
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0xa6a0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0xba90
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0xa6a0
movsd (%rax), %xmm0
movsd 0xab73c(%rip), %xmm1    # 0xb7158
ucomisd %xmm1, %xmm0
ja 0xba90
movq -0x18(%rbp), %rdi
movl $0x3, %esi
callq 0xa6a0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0xba90
movq -0x18(%rbp), %rdi
movl $0x3, %esi
callq 0xa6a0
movsd (%rax), %xmm0
movsd 0xab5dd(%rip), %xmm1    # 0xb7030
ucomisd %xmm1, %xmm0
jae 0xba90
movq -0x18(%rbp), %rdi
movl $0x4, %esi
callq 0xa6a0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0xba90
movq -0x18(%rbp), %rdi
movl $0x4, %esi
callq 0xa6a0
movsd (%rax), %xmm0
movsd 0xab6ce(%rip), %xmm1    # 0xb7158
ucomisd %xmm1, %xmm0
jbe 0xbaa2
movsd 0xab758(%rip), %xmm0    # 0xb71f0
movsd %xmm0, -0x8(%rbp)
jmp 0xbbcd
jmp 0xbaa4
movq -0x20(%rbp), %rdi
addq $0x20, %rdi
callq 0xc680
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa6a0
movq -0x68(%rbp), %rdi
movsd (%rax), %xmm0
movq (%rdi), %rax
callq *0x20(%rax)
movq -0x20(%rbp), %rdi
movsd %xmm0, -0x58(%rbp)
addq $0x30, %rdi
callq 0xc680
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rdi
movl $0x1, %esi
callq 0xa6a0
movq -0x60(%rbp), %rdi
movsd (%rax), %xmm0
movq (%rdi), %rax
callq *0x20(%rax)
movq -0x20(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x58(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
addq $0x50, %rdi
callq 0xc680
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0xa6a0
movq -0x50(%rbp), %rdi
movsd (%rax), %xmm0
movq (%rdi), %rax
callq *0x20(%rax)
movq -0x20(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x48(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
addq $0x40, %rdi
callq 0xc680
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rdi
movl $0x3, %esi
callq 0xa6a0
movq -0x40(%rbp), %rdi
movsd (%rax), %xmm0
movq (%rdi), %rax
callq *0x20(%rax)
movq -0x20(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x38(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
addq $0x60, %rdi
callq 0xc680
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
movl $0x4, %esi
callq 0xa6a0
movq -0x30(%rbp), %rdi
movsd (%rax), %xmm0
movq (%rdi), %rax
callq *0x20(%rax)
movaps %xmm0, %xmm1
movsd -0x28(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax,%rax)