user: 下面的汇编指令对应的C源代码是什么:

```asm
<pearsonIIIFit>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %rdi,-0x48(%rbp)
  mov    %rsi,-0x50(%rbp)
  movsd  D27(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x40(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x48(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x30(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L40
  movsd  D60(%rip),%xmm0
  comisd -0x30(%rbp),%xmm0
  jbe    L40
  movsd  -0x40(%rbp),%xmm1
  movsd  D112(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x30(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x28(%rbp),%xmm1
  movsd  D33(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D136(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm2
  movsd  D165(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  addsd  -0x28(%rbp),%xmm2
  movsd  -0x18(%rbp),%xmm3
  movsd  D68(%rip),%xmm1
  mulsd  %xmm3,%xmm1
  addsd  %xmm2,%xmm1
  mov    -0x50(%rbp),%rax
  add    $0x10,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L47
L40:
  movsd  -0x30(%rbp),%xmm0
  comisd D60(%rip),%xmm0
  jb     L47
  movsd  D136(%rip),%xmm0
  comisd -0x30(%rbp),%xmm0
  jbe    L47
  movsd  D136(%rip),%xmm0
  subsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x28(%rbp),%xmm1
  movsd  D147(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm2
  movsd  D119(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x18(%rbp),%xmm2
  movsd  D80(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x28(%rbp),%xmm2
  movsd  D6(%rip),%xmm1
  movapd %xmm2,%xmm3
  mulsd  %xmm1,%xmm3
  movsd  D136(%rip),%xmm1
  movapd %xmm1,%xmm2
  subsd  %xmm3,%xmm2
  movsd  -0x20(%rbp),%xmm3
  movsd  D48(%rip),%xmm1
  mulsd  %xmm3,%xmm1
  addsd  %xmm2,%xmm1
  movsd  -0x18(%rbp),%xmm3
  movsd  D57(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  subsd  %xmm2,%xmm1
  mov    -0x50(%rbp),%rax
  add    $0x10,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L47:
  mov    -0x48(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x50(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <gammaLn@plt>
  mov    %rax,%rbx
  mov    -0x50(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  D143(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <gammaLn@plt>
  mov    %rax,%rdx
  mov    %rbx,%rax
  sub    %rdx,%rax
  mov    %rax,%rdi
  call   <exp@plt>
  mov    -0x50(%rbp),%rax
  add    $0x8,%rax
  mulsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x48(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  mov    -0x50(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x50(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x50(%rbp),%rax
  movsd  %xmm0,(%rax)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D27
type: f64
name: extract_symbolic_data
arguments: tag: D60
type: f64[2]
name: extract_symbolic_data
arguments: tag: D112
type: f32[2]
name: extract_symbolic_data
arguments: tag: D33
type: f64
name: extract_symbolic_data
arguments: tag: D136
type: f32[2]
name: extract_symbolic_data
arguments: tag: D165
type: f64
name: extract_symbolic_data
arguments: tag: D68
type: f64
name: extract_symbolic_data
arguments: tag: D147
type: f64
name: extract_symbolic_data
arguments: tag: D119
type: f64
name: extract_symbolic_data
arguments: tag: D80
type: f64
name: extract_symbolic_data
arguments: tag: D6
type: f64
name: extract_symbolic_data
arguments: tag: D48
type: f64
name: extract_symbolic_data
arguments: tag: D57
type: f64
name: extract_symbolic_data
arguments: tag: D143
type: f64

tool: D27: 3.14159265358979

tool: {"D60": [0.333333,3.0]}

tool: {"D112": [0.0,2.125]}

tool: D33: 0.2906

tool: {"D136": [0.0,1.875]}

tool: D165: 0.1882

tool: D68: 0.0442

tool: D147: 0.36067

tool: D119: 0.5967

tool: D80: 0.25361

tool: D6: 2.78861

tool: D48: 2.56096

tool: D57: 0.77045

tool: D143: 0.5

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];
}
```