// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/distributions.c
// Function: kolmogorov_one_sample
double kolmogorov_one_sample(int n, double d) 
{ 
 int k, m, i, j, g;
 double h, s;
 matrix H, Q;
 s = d * d * n; 
 if (s > 7.24 || (s > 3.76 && n > 99)) 
   return 1 - 2 * exp(-(2.000071 + .331 / sqrt(n) + 1.409 / n) * s);
 k = (int)(n * d) + 1; 
 m = 2 * k - 1; 
 h = k - n * d; 
 H = matrix_alloc(m, m); 
 for (i = 0; i < m; i++) 
   for (j = 0; j < m; j++)
     if (i - j + 1 < 0) 
       H.values[i][j] = 0; 
     else 
       H.values[i][j] = 1; 
 for (i = 0; i < m; i++) 
  {
   H.values[i][0] -= pow(h, i + 1); 
   H.values[m - 1][i] -= pow(h, (m - i));
  } 
 H.values[m - 1][0] += (2 * h - 1 > 0 ? pow(2 * h - 1, m):0); 
 for (i = 0; i < m; i++) 
   for (j = 0; j < m; j++)
     if (i - j + 1 > 0) 
      for (g = 1; g <= i - j + 1; g++) 
        H.values[i][j] /= g; 
 Q = matrix_power(H, n); 
 s = Q.values[k - 1][k - 1]; 
 for (i = 1;i <= n; i++) 
   s = (s * i) / n; 
 matrix_free(H); 
 matrix_free(Q); 
 return s;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movl %edi, -0xc(%rbp)
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
cvtsi2sdl -0xc(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x40(%rbp), %xmm0
movsd 0xb5298(%rip), %xmm1    # 0xe48c0
ucomisd %xmm1, %xmm0
ja 0x2f647
movsd -0x40(%rbp), %xmm0
movsd 0xb528d(%rip), %xmm1    # 0xe48c8
ucomisd %xmm1, %xmm0
jbe 0x2f6bc
cmpl $0x63, -0xc(%rbp)
jle 0x2f6bc
cvtsi2sdl -0xc(%rbp), %xmm0
callq 0x42a0
movsd 0xb5287(%rip), %xmm1    # 0xe48e0
divsd %xmm0, %xmm1
movsd 0xb5273(%rip), %xmm0    # 0xe48d8
addsd %xmm1, %xmm0
cvtsi2sdl -0xc(%rbp), %xmm2
movsd 0xb525a(%rip), %xmm1    # 0xe48d0
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd -0x40(%rbp), %xmm0
callq 0x4060
movaps %xmm0, %xmm1
addsd %xmm1, %xmm1
movsd 0xb296a(%rip), %xmm0    # 0xe2018
subsd %xmm1, %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x2f9e0
cvtsi2sdl -0xc(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
cvttsd2si %xmm0, %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
shll %eax
subl $0x1, %eax
movl %eax, -0x20(%rbp)
cvtsi2sdl -0x1c(%rbp), %xmm1
cvtsi2sdl -0xc(%rbp), %xmm0
movsd -0x18(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movl -0x20(%rbp), %edi
movl -0x20(%rbp), %esi
callq 0x57fc0
movq %rax, -0x70(%rbp)
movq %rdx, -0x68(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x2f7ae
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x2f7a1
movl -0x24(%rbp), %eax
subl -0x28(%rbp), %eax
addl $0x1, %eax
cmpl $0x0, %eax
jge 0x2f777
movq -0x48(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x28(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x2f794
movq -0x48(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x28(%rbp), %rcx
movsd 0xb2889(%rip), %xmm0    # 0xe2018
movsd %xmm0, (%rax,%rcx,8)
jmp 0x2f796
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x2f747
jmp 0x2f7a3
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2f738
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x2f831
movsd -0x38(%rbp), %xmm0
movl -0x24(%rbp), %eax
addl $0x1, %eax
cvtsi2sd %eax, %xmm1
callq 0x4290
movaps %xmm0, %xmm1
movq -0x48(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movsd -0x38(%rbp), %xmm0
movl -0x20(%rbp), %eax
subl -0x24(%rbp), %eax
cvtsi2sd %eax, %xmm1
callq 0x4290
movaps %xmm0, %xmm1
movq -0x48(%rbp), %rax
movl -0x20(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x24(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2f7b5
movsd -0x38(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd 0xb3206(%rip), %xmm1    # 0xe2a48
addsd %xmm1, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x2f878
movsd -0x38(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd 0xb31e8(%rip), %xmm1    # 0xe2a48
addsd %xmm1, %xmm0
cvtsi2sdl -0x20(%rbp), %xmm1
callq 0x4290
movsd %xmm0, -0x88(%rbp)
jmp 0x2f885
xorps %xmm0, %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x2f885
movsd -0x88(%rbp), %xmm0
movq -0x48(%rbp), %rax
movl -0x20(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x2f93a
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x2f92a
movl -0x24(%rbp), %eax
subl -0x28(%rbp), %eax
addl $0x1, %eax
cmpl $0x0, %eax
jle 0x2f91d
movl $0x1, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movl -0x24(%rbp), %ecx
subl -0x28(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x2f91b
cvtsi2sdl -0x2c(%rbp), %xmm1
movq -0x48(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x28(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x2f8dd
jmp 0x2f91d
jmp 0x2f91f
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x2f8c0
jmp 0x2f92c
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2f8ad
movl -0xc(%rbp), %edx
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x5b010
movq %rax, -0x80(%rbp)
movq %rdx, -0x78(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movl -0x1c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movl -0x1c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x40(%rbp)
movl $0x1, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0xc(%rbp), %eax
jg 0x2f9bc
movsd -0x40(%rbp), %xmm0
cvtsi2sdl -0x24(%rbp), %xmm1
mulsd %xmm1, %xmm0
cvtsi2sdl -0xc(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2f98d
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x59ea0
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x59ea0
movsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
addq $0x90, %rsp
popq %rbp
retq
nop