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

```asm
<pearsonIIIFit>:
  endbr64
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x10,%rsp
  movsd  0x10(%rdi),%xmm1
  movsd  0x18(%rdi),%xmm0
  movsd  D138(%rip),%xmm2
  divsd  %xmm1,%xmm0
  comisd D131(%rip),%xmm0
  jbe    L5
  comisd %xmm0,%xmm2
  jbe    L5
  movsd  D16(%rip),%xmm1
  movsd  D22(%rip),%xmm2
  mulsd  %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D34(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm1,%xmm3
  mulsd  %xmm1,%xmm3
  addsd  D140(%rip),%xmm0
  mulsd  %xmm3,%xmm2
  addsd  %xmm1,%xmm2
  mulsd  %xmm3,%xmm1
  mulsd  D46(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rsi)
  movsd  0x10(%rdi),%xmm1
  jmp    L43
  nopl   0x0(%rax)
L5:
  comisd %xmm2,%xmm0
  jae    L36
L17:
  movsd  0x10(%rbx),%xmm0
L43:
  movsd  %xmm1,0x8(%rsp)
  call   <gammaLn@plt>
  movsd  D43(%rip),%xmm0
  addsd  0x10(%rbx),%xmm0
  mov    %rax,%r12
  call   <gammaLn@plt>
  mov    %r12,%rdi
  sub    %rax,%rdi
  call   <exp@plt>
  movsd  0x8(%rsp),%xmm1
  mulsd  D72(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,0x8(%rbx)
  mulsd  0x10(%rbx),%xmm1
  movsd  0x8(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rbx)
  add    $0x10,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L36:
  movsd  D140(%rip),%xmm2
  comisd %xmm0,%xmm2
  jbe    L17
  movapd %xmm2,%xmm1
  movsd  D93(%rip),%xmm5
  subsd  %xmm0,%xmm1
  movsd  D38(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm1,%xmm3
  movapd %xmm1,%xmm4
  mulsd  %xmm1,%xmm3
  mulsd  D35(%rip),%xmm1
  mulsd  %xmm3,%xmm5
  mulsd  %xmm3,%xmm4
  subsd  %xmm1,%xmm2
  mulsd  D47(%rip),%xmm3
  subsd  %xmm5,%xmm0
  movsd  D75(%rip),%xmm5
  mulsd  %xmm4,%xmm5
  addsd  %xmm3,%xmm2
  mulsd  D133(%rip),%xmm4
  addsd  %xmm5,%xmm0
  subsd  %xmm4,%xmm2
  divsd  %xmm2,%xmm0
  movsd  %xmm0,0x10(%rbx)
  movsd  0x10(%rbp),%xmm1
  jmp    L43
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D138
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D131
data_type: f64[2]
name: extract_symbolic_data
arguments: data_tag: D16
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D22
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D34
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D140
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D46
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D43
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D72
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D93
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D38
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D35
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D47
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D75
data_type: f64
name: extract_symbolic_data
arguments: data_tag: D133
data_type: f64

tool: D138: 0.333333

tool: {"D131": [0.0,0.333333]}

tool: {"D16": [0xcd,0x21,0x33,0x7f,0x7c,0xd9,0x22,0x40]}

tool: D22: 0.1882

tool: D34: 0.2906

tool: {"D140": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D46: 0.0442

tool: D43: 0.5

tool: {"D72": [0x67,0xef,0xb4,0x91,0xf8,0x5b,0xfc,0x3f]}

tool: D93: 0.5967

tool: D38: 0.36067

tool: D35: 2.78861

tool: D47: 2.56096

tool: D75: 0.25361

tool: D133: 0.77045

assistant: ```c
void pearsonIIIFit(double L[], double pearsonIIIParams[]) {
  double lMomentRatio, pi, sqrtPi, t, t2, t3;
  pi = 3.14159265358979;
  sqrtPi = sqrt(pi);
  lMomentRatio = L[3] / L[2];
  if (lMomentRatio > 0.0 && lMomentRatio < 0.333333) {
    t = 3 * pi * lMomentRatio * lMomentRatio;
    t2 = t * t;
    t3 = t2 * t;
    pearsonIIIParams[2] = (1 + 0.2906 * t) / (t + 0.1882 * t2 + 0.0442 * t3);
  } else if (lMomentRatio >= 0.333333 && lMomentRatio < 1) {
    t = 1 - lMomentRatio;
    t2 = t * t;
    t3 = t2 * t;
    pearsonIIIParams[2] = (0.36067 * t - 0.5967 * t2 + 0.25361 * t3) / (1 - 2.78861 * t + 2.56096 * t2 - 0.77045 * t3);
  }
  pearsonIIIParams[1] = sqrtPi * L[2] * exp(gammaLn(pearsonIIIParams[2]) - gammaLn(pearsonIIIParams[2] + 0.5));
  pearsonIIIParams[0] = L[1] - pearsonIIIParams[1] * pearsonIIIParams[2];
}
```