// File: /workspace/github_c_makefile_star2_O0/samtools[P]htslib/kfunc.c
// Function: kf_betai_aux
static double kf_betai_aux(double a, double b, double x)
{
	double C, D, f;
	int j;
	if (x == 0.) return 0.;
	if (x == 1.) return 1.;
	f = 1.; C = f; D = 0.;
	// Modified Lentz's algorithm for computing continued fraction
	for (j = 1; j < 200; ++j) {
		double aa, d;
		int m = j>>1;
		aa = (j&1)? -(a + m) * (a + b + m) * x / ((a + 2*m) * (a + 2*m + 1))
			: m * (b - m) * x / ((a + 2*m - 1) * (a + 2*m));
		D = 1. + aa * D;
		if (D < KF_TINY) D = KF_TINY;
		C = 1. + aa / C;
		if (C < KF_TINY) C = KF_TINY;
		D = 1. / D;
		d = C * D;
		f *= d;
		if (fabs(d - 1.) < KF_GAMMA_EPS) break;
	}
	return exp(kf_lgamma(a+b) - kf_lgamma(a) - kf_lgamma(b) + a * log(x) + b * log(1.-x)) / a / f;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movsd %xmm0, -0x10(%rbp)
movsd %xmm1, -0x18(%rbp)
movsd %xmm2, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x2117
jp 0x2117
xorps %xmm0, %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x2412
movsd -0x20(%rbp), %xmm0
movsd 0xeec(%rip), %xmm1      # 0x3010
ucomisd %xmm1, %xmm0
jne 0x213e
jp 0x213e
movsd 0xedc(%rip), %xmm0      # 0x3010
movsd %xmm0, -0x8(%rbp)
jmp 0x2412
movsd 0xeca(%rip), %xmm0      # 0x3010
movsd %xmm0, -0x38(%rbp)
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movl $0x1, -0x3c(%rbp)
cmpl $0xc8, -0x3c(%rbp)
jge 0x2349
movl -0x3c(%rbp), %eax
sarl %eax
movl %eax, -0x54(%rbp)
movl -0x3c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x2208
movsd -0x10(%rbp), %xmm0
cvtsi2sdl -0x54(%rbp), %xmm1
addsd %xmm1, %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd -0x10(%rbp), %xmm1
addsd -0x18(%rbp), %xmm1
cvtsi2sdl -0x54(%rbp), %xmm2
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd -0x20(%rbp), %xmm0
movsd -0x10(%rbp), %xmm1
movl -0x54(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm2
addsd %xmm2, %xmm1
movsd -0x10(%rbp), %xmm2
movl -0x54(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm3
addsd %xmm3, %xmm2
movsd 0xe1b(%rip), %xmm3      # 0x3010
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x2261
cvtsi2sdl -0x54(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
cvtsi2sdl -0x54(%rbp), %xmm2
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd -0x20(%rbp), %xmm0
movsd -0x10(%rbp), %xmm1
movl -0x54(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm2
addsd %xmm2, %xmm1
movsd 0xdd2(%rip), %xmm2      # 0x3010
subsd %xmm2, %xmm1
movsd -0x10(%rbp), %xmm2
movl -0x54(%rbp), %eax
shll %eax
cvtsi2sd %eax, %xmm3
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x48(%rbp), %xmm0
movsd -0x30(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd 0xd8f(%rip), %xmm1      # 0x3010
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0xf96(%rip), %xmm0      # 0x3228
ucomisd -0x30(%rbp), %xmm0
jbe 0x22a6
movsd 0xf87(%rip), %xmm0      # 0x3228
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm1
divsd -0x28(%rbp), %xmm1
movsd 0xd58(%rip), %xmm0      # 0x3010
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd 0xf5f(%rip), %xmm0      # 0x3228
ucomisd -0x28(%rbp), %xmm0
jbe 0x22dd
movsd 0xf50(%rip), %xmm0      # 0x3228
movsd %xmm0, -0x28(%rbp)
movsd 0xd2b(%rip), %xmm0      # 0x3010
divsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x28(%rbp), %xmm0
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x50(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x50(%rbp), %xmm1
movsd 0xcf6(%rip), %xmm0      # 0x3010
subsd %xmm0, %xmm1
movaps 0xd5b(%rip), %xmm0      # 0x3080
pand %xmm0, %xmm1
movsd 0xeef(%rip), %xmm0      # 0x3220
ucomisd %xmm1, %xmm0
jbe 0x2339
jmp 0x2349
jmp 0x233b
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x2164
movsd -0x10(%rbp), %xmm0
addsd -0x18(%rbp), %xmm0
callq 0x16b0
movsd %xmm0, -0x90(%rbp)
movsd -0x10(%rbp), %xmm0
callq 0x16b0
movaps %xmm0, %xmm1
movsd -0x90(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x18(%rbp), %xmm0
callq 0x16b0
movaps %xmm0, %xmm1
movsd -0x88(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x10(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x1040
movsd -0x80(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x78(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0xc31(%rip), %xmm0      # 0x3010
subsd -0x20(%rbp), %xmm0
callq 0x1040
movsd -0x70(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x68(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1060
divsd -0x10(%rbp), %xmm0
divsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
addq $0x90, %rsp
popq %rbp
retq