user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<plfit_kolmogorov>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  movsd  %xmm0,-0x98(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movsd  D70(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D141(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  D157(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D115(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D129(%rip),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  D127(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  D40(%rip),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D95(%rip),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0x98(%rbp),%xmm0
  movq   D0(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  D105(%rip),%xmm0
  comisd -0x60(%rbp),%xmm0
  jbe    L62
  movsd  D140(%rip),%xmm0
  jmp    L36
L62:
  movsd  D84(%rip),%xmm0
  comisd -0x60(%rbp),%xmm0
  jbe    L94
  movsd  -0x60(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D140(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x78(%rbp),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm3
  mulsd  -0x58(%rbp),%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm4
  addsd  -0xa0(%rbp),%xmm4
  movsd  %xmm4,-0xa0(%rbp)
  movsd  -0x68(%rbp),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  addsd  -0xa0(%rbp),%xmm0
  mulsd  -0x80(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x60(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  subsd  %xmm1,%xmm0
  jmp    L36
L94:
  movsd  D17(%rip),%xmm0
  comisd -0x60(%rbp),%xmm0
  jbe    L20
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  D94(%rip),%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x60(%rbp),%xmm1
  movsd  D144(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%rax
  mov    %rax,-0x90(%rbp)
  cmpq   $0x0,-0x90(%rbp)
  jg     L82
  movq   $0x1,-0x90(%rbp)
L82:
  movsd  -0x60(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movq   $0x0,-0x88(%rbp)
  jmp    L35
L63:
  mov    -0x88(%rbp),%rax
  movsd  -0x50(%rbp,%rax,8),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  mov    -0x88(%rbp),%rdx
  mov    %rax,-0x30(%rbp,%rdx,8)
  addq   $0x1,-0x88(%rbp)
L35:
  mov    -0x88(%rbp),%rax
  cmp    -0x90(%rbp),%rax
  jl     L63
  movsd  -0x30(%rbp),%xmm0
  movsd  -0x28(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x20(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L36
L20:
  pxor   %xmm0,%xmm0
L36:
  movq   %xmm0,%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L9
  call   <__stack_chk_fail@plt>
L9:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D70
type: byte[8]
name: extract_symbolic_data
arguments: tag: D141
type: byte[8]
name: extract_symbolic_data
arguments: tag: D157
type: byte[8]
name: extract_symbolic_data
arguments: tag: D115
type: byte[8]
name: extract_symbolic_data
arguments: tag: D129
type: f64
name: extract_symbolic_data
arguments: tag: D127
type: byte[8]
name: extract_symbolic_data
arguments: tag: D40
type: byte[8]
name: extract_symbolic_data
arguments: tag: D95
type: byte[8]
name: extract_symbolic_data
arguments: tag: D0
type: qword
name: extract_symbolic_data
arguments: tag: D105
type: f64
name: extract_symbolic_data
arguments: tag: D140
type: f64
name: extract_symbolic_data
arguments: tag: D84
type: f64
name: extract_symbolic_data
arguments: tag: D17
type: f64
name: extract_symbolic_data
arguments: tag: D94
type: f64
name: extract_symbolic_data
arguments: tag: D144
type: f64

tool: {"D70": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0]}

tool: {"D141": [0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xc0]}

tool: {"D157": [0x00,0x00,0x00,0x00,0x00,0x00,0x32,0xc0]}

tool: {"D115": [0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xc0]}

tool: D129: 2.50662827

tool: {"D127": [0xde,0x45,0xbe,0xc9,0x3c,0xbd,0xf3,0xbf]}

tool: {"D40": [0x9a,0x0e,0xf6,0x62,0xe4,0x34,0x26,0xc0]}

tool: {"D95": [0x2b,0x4d,0x39,0xfb,0xae,0xd7,0x3e,0xc0]}

tool: D0: 9223372036854775807

tool: D105: 0.2

tool: D140: 1

tool: D84: 0.755

tool: D17: 6.8116

tool: D94: 3

tool: D144: 0.5

assistant: ```c
double plfit_kolmogorov(double z) {
  const double fj[4] = {-2, -8, -18, -32};
  const double w = 2.50662827;
  const double c1 = -1.2337005501361697;
  const double c2 = -11.103304951225528;
  const double c3 = -30.842513753404244;
  double u = fabs(z);
  double v;
  if (u < 0.2)
    return 1;
  if (u < 0.755) {
    v = 1.0 / (u * u);
    return 1 - w * (exp(c1 * v) + exp(c2 * v) + exp(c3 * v)) / u;
  }
  if (u < 6.8116) {
    double r[4] = {0, 0, 0, 0};
    long int maxj = (long int)(3.0 / u + 0.5);
    long int j;
    if (maxj < 1)
      maxj = 1;
    v = u * u;
    for (j = 0; j < maxj; j++) {
      r[j] = exp(fj[j] * v);
    }
    return 2 * (r[0] - r[1] + r[2] - r[3]);
  }
  return 0;
}
```