// File: millanek[P]Dsuite/KolmogorovSmirnovDist.cpp
// Function: fbarSpecial(int, double)
static double fbarSpecial (int n, double x)
{
   const double w = n * x * x;

   if ((w >= 370.0) || (x >= 1.0))
      return 0.0;
   if ((w <= 0.0274) || (x <= 0.5 / n))
      return 1.0;
   if (n == 1)
      return 2.0 - 2.0 * x;

   if (x <= 1.0 / n) {
      double z;
      double t = 2.0 * x - 1.0 / n;
      if (n <= NFACT) {
         z = Factorial[n];
         return 1.0 - z * pow (t, (double) n);
      }
      z = getLogFactorial (n) + n * log (t);
      return 1.0 - exp (z);
   }

   if (x >= 1.0 - 1.0 / n) {
      return 2.0 * pow (1.0 - x, (double) n);
   }
   return -1.0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0xc(%rbp)
movsd %xmm0, -0x18(%rbp)
cvtsi2sdl -0xc(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0x6a97(%rip), %xmm1     # 0x8d7c8
ucomisd %xmm1, %xmm0
jae 0x86d4a
movsd -0x18(%rbp), %xmm0
movsd 0x1764(%rip), %xmm1     # 0x884a8
ucomisd %xmm1, %xmm0
jb 0x86d57
xorps %xmm0, %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x86f3d
movsd 0x6a71(%rip), %xmm0     # 0x8d7d0
ucomisd -0x20(%rbp), %xmm0
jae 0x86d82
movsd -0x18(%rbp), %xmm1
cvtsi2sdl -0xc(%rbp), %xmm2
movsd 0x1738(%rip), %xmm0     # 0x884b0
divsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0x86d94
movsd 0x171e(%rip), %xmm0     # 0x884a8
movsd %xmm0, -0x8(%rbp)
jmp 0x86f3d
cmpl $0x1, -0xc(%rbp)
jne 0x86db9
movsd -0x18(%rbp), %xmm1
addsd %xmm1, %xmm1
movsd 0x1715(%rip), %xmm0     # 0x884c0
subsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x86f3d
movsd -0x18(%rbp), %xmm1
cvtsi2sdl -0xc(%rbp), %xmm2
movsd 0x16dd(%rip), %xmm0     # 0x884a8
divsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0x86edb
movsd -0x18(%rbp), %xmm0
cvtsi2sdl -0xc(%rbp), %xmm2
movsd 0x16bd(%rip), %xmm1     # 0x884a8
divsd %xmm2, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
cmpl $0x14, -0xc(%rbp)
jg 0x86e80
movslq -0xc(%rbp), %rcx
leaq 0x38cec(%rip), %rax     # 0xbfb10
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x30(%rbp), %xmm0
cvtsi2sdl -0xc(%rbp), %xmm1
callq 0x8a20
movaps %xmm0, %xmm1
movsd -0x38(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0x1636(%rip), %xmm1     # 0x884a8
addsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x86f3d
movl -0xc(%rbp), %edi
callq 0x87370
movsd %xmm0, -0x48(%rbp)
cvtsi2sdl -0xc(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
callq 0x8490
movsd -0x48(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x40(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
callq 0x8a70
movaps %xmm0, %xmm1
movsd 0x15d8(%rip), %xmm0     # 0x884a8
subsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x86f3d
movsd -0x18(%rbp), %xmm0
cvtsi2sdl -0xc(%rbp), %xmm1
movsd 0x15bb(%rip), %xmm2     # 0x884a8
divsd %xmm1, %xmm2
movsd 0x15af(%rip), %xmm1     # 0x884a8
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jb 0x86f30
movsd 0x159d(%rip), %xmm0     # 0x884a8
subsd -0x18(%rbp), %xmm0
cvtsi2sdl -0xc(%rbp), %xmm1
callq 0x8a20
movaps %xmm0, %xmm1
movsd 0x159b(%rip), %xmm0     # 0x884c0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x86f3d
movsd 0x1590(%rip), %xmm0     # 0x884c8
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)