// File: /workspace/github_c_makefile_star2_O0/samtools[P]htslib/kfunc.c
// Function: hypergeo_acc
static double hypergeo_acc(int n11, int n1_, int n_1, int n, hgacc_t *aux)
{
    if (n1_ || n_1 || n) {
        aux->n11 = n11; aux->n1_ = n1_; aux->n_1 = n_1; aux->n = n;
    } else { // then only n11 changed; the rest fixed
        if (n11%11 && n11 + aux->n - aux->n1_ - aux->n_1) {
            if (n11 == aux->n11 + 1) { // incremental
                aux->p *= (double)(aux->n1_ - aux->n11) / n11
                    * (aux->n_1 - aux->n11) / (n11 + aux->n - aux->n1_ - aux->n_1);
                aux->n11 = n11;
                return aux->p;
            }
            if (n11 == aux->n11 - 1) { // incremental
                aux->p *= (double)aux->n11 / (aux->n1_ - n11)
                    * (aux->n11 + aux->n - aux->n1_ - aux->n_1) / (aux->n_1 - n11);
                aux->n11 = n11;
                return aux->p;
            }
        }
        aux->n11 = n11;
    }
    aux->p = hypergeo(aux->n11, aux->n1_, aux->n_1, aux->n);
    return aux->p;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edi, -0xc(%rbp)
movl %esi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
cmpl $0x0, -0x10(%rbp)
jne 0x282a
cmpl $0x0, -0x14(%rbp)
jne 0x282a
cmpl $0x0, -0x18(%rbp)
je 0x2856
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movl -0x10(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x18(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x29a5
movl -0xc(%rbp), %eax
movl $0xb, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
je 0x299c
movl -0xc(%rbp), %eax
movq -0x20(%rbp), %rcx
addl 0xc(%rcx), %eax
movq -0x20(%rbp), %rcx
subl 0x4(%rcx), %eax
movq -0x20(%rbp), %rcx
subl 0x8(%rcx), %eax
cmpl $0x0, %eax
je 0x299c
movl -0xc(%rbp), %eax
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0x2914
movq -0x20(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x20(%rbp), %rcx
subl (%rcx), %eax
cvtsi2sd %eax, %xmm0
cvtsi2sdl -0xc(%rbp), %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x20(%rbp), %rcx
subl (%rcx), %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm1, %xmm0
movl -0xc(%rbp), %eax
movq -0x20(%rbp), %rcx
addl 0xc(%rcx), %eax
movq -0x20(%rbp), %rcx
subl 0x4(%rcx), %eax
movq -0x20(%rbp), %rcx
subl 0x8(%rcx), %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x29dc
movl -0xc(%rbp), %eax
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x299a
movq -0x20(%rbp), %rax
cvtsi2sdl (%rax), %xmm0
movq -0x20(%rbp), %rax
movl 0x4(%rax), %eax
subl -0xc(%rbp), %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movl (%rax), %eax
movq -0x20(%rbp), %rcx
addl 0xc(%rcx), %eax
movq -0x20(%rbp), %rcx
subl 0x4(%rcx), %eax
movq -0x20(%rbp), %rcx
subl 0x8(%rcx), %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
subl -0xc(%rbp), %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x29dc
jmp 0x299c
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rax
movl (%rax), %edi
movq -0x20(%rbp), %rax
movl 0x4(%rax), %esi
movq -0x20(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x20(%rbp), %rax
movl 0xc(%rax), %ecx
callq 0x29f0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movq -0x20(%rbp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)