// File: j-faria[P]kima/DNest4/code/RJObject/ConditionalPriors/ConditionalPrior.cpp
// Function: DNest4::ConditionalPrior::perturb1(DNest4::RNG&, std::vector<std::vector<double, std::allocator<double>>, std::allocator<std::vector<double, std::allocator<double>>>> const&, std::vector<std::vector<double, std::allocator<double>>, std::allocator<std::vector<double, std::allocator<double>>>>&)
double ConditionalPrior::perturb1(RNG& rng, const vector< vector<double> >& components,
				vector< vector<double> >& u_components)
{
	double logH = 0.;

	// 1/(old density)
	for(size_t i=0; i<components.size(); i++)
		logH -= log_pdf(components[i]);

	logH += perturb_hyperparameters(rng);

	// (new density)
	for(size_t i=0; i<components.size(); i++)
	{
		logH += log_pdf(components[i]);
		u_components[i] = components[i];
		to_uniform(u_components[i]);

        for(size_t j=0; j<components[i].size(); ++j)
            if(u_components[i][j] <= 0.0 || u_components[i][j] >= 1.0)
                logH = -1E300;
	}

	return logH;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rdi
callq 0x15d80
movq %rax, %rcx
movq -0x50(%rbp), %rax
cmpq %rcx, %rax
jae 0xb64e6
movq -0x18(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x27af0
movq -0x48(%rbp), %rdi
movq %rax, %rsi
movq (%rdi), %rax
callq *0x20(%rax)
movaps %xmm0, %xmm1
movsd -0x28(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0xb6490
movq -0x48(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq (%rdi), %rax
callq *(%rax)
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
callq 0x15d80
movq %rax, %rcx
movq -0x58(%rbp), %rax
cmpq %rcx, %rax
jae 0xb663f
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x27af0
movq -0x48(%rbp), %rdi
movq %rax, %rsi
movq (%rdi), %rax
callq *0x20(%rax)
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x27af0
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x15d30
movq -0x60(%rbp), %rsi
movq %rax, %rdi
callq 0x7950
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x15d30
movq -0x48(%rbp), %rdi
movq %rax, %rsi
movq (%rdi), %rax
callq *0x30(%rax)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x27af0
movq %rax, %rdi
callq 0x7c90
movq %rax, %rcx
movq -0x68(%rbp), %rax
cmpq %rcx, %rax
jae 0xb662c
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x15d30
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0xc6a0
xorps %xmm0, %xmm0
ucomisd (%rax), %xmm0
jae 0xb660c
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x15d30
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0xc6a0
movsd (%rax), %xmm0
movsd 0xa2a(%rip), %xmm1      # 0xb7030
ucomisd %xmm1, %xmm0
jb 0xb6619
movsd 0xbdc(%rip), %xmm0      # 0xb71f0
movsd %xmm0, -0x28(%rbp)
jmp 0xb661b
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0xb6596
jmp 0xb662e
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0xb6505
movsd -0x28(%rbp), %xmm0
addq $0x70, %rsp
popq %rbp
retq
nopw (%rax,%rax)