user: Translate the below assembly code into C programming language:

```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  D34(%rip),%xmm2
  divsd  %xmm1,%xmm0
  comisd D82(%rip),%xmm0
  jbe    L33
  comisd %xmm0,%xmm2
  jbe    L33
  movsd  D153(%rip),%xmm1
  movsd  D31(%rip),%xmm2
  mulsd  %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D60(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm1,%xmm3
  mulsd  %xmm1,%xmm3
  addsd  D95(%rip),%xmm0
  mulsd  %xmm3,%xmm2
  addsd  %xmm1,%xmm2
  mulsd  %xmm3,%xmm1
  mulsd  D147(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rsi)
  movsd  0x10(%rdi),%xmm1
  jmp    L6
  nopl   0x0(%rax)
L33:
  comisd %xmm2,%xmm0
  jae    L51
L5:
  movsd  0x10(%rbx),%xmm0
L6:
  movsd  %xmm1,0x8(%rsp)
  call   <gammaLn@plt>
  movsd  D15(%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  D100(%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
L51:
  movsd  D95(%rip),%xmm2
  comisd %xmm0,%xmm2
  jbe    L5
  movapd %xmm2,%xmm1
  movsd  D70(%rip),%xmm5
  subsd  %xmm0,%xmm1
  movsd  D106(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm1,%xmm3
  movapd %xmm1,%xmm4
  mulsd  %xmm1,%xmm3
  mulsd  D27(%rip),%xmm1
  mulsd  %xmm3,%xmm5
  mulsd  %xmm3,%xmm4
  subsd  %xmm1,%xmm2
  mulsd  D51(%rip),%xmm3
  subsd  %xmm5,%xmm0
  movsd  D83(%rip),%xmm5
  mulsd  %xmm4,%xmm5
  addsd  %xmm3,%xmm2
  mulsd  D61(%rip),%xmm4
  addsd  %xmm5,%xmm0
  subsd  %xmm4,%xmm2
  divsd  %xmm2,%xmm0
  movsd  %xmm0,0x10(%rbx)
  movsd  0x10(%rbp),%xmm1
  jmp    L6
```

tool_calls: name: extract_symbolic_data
arguments: label: D34
datatype: f64
name: extract_symbolic_data
arguments: label: D82
datatype: f64[2]
name: extract_symbolic_data
arguments: label: D153
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D31
datatype: f64
name: extract_symbolic_data
arguments: label: D60
datatype: f64
name: extract_symbolic_data
arguments: label: D95
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D147
datatype: f64
name: extract_symbolic_data
arguments: label: D15
datatype: f64
name: extract_symbolic_data
arguments: label: D100
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D70
datatype: f64
name: extract_symbolic_data
arguments: label: D106
datatype: f64
name: extract_symbolic_data
arguments: label: D27
datatype: f64
name: extract_symbolic_data
arguments: label: D51
datatype: f64
name: extract_symbolic_data
arguments: label: D83
datatype: f64
name: extract_symbolic_data
arguments: label: D61
datatype: f64

tool: D34: 0.333333

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

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

tool: D31: 0.1882

tool: D60: 0.2906

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

tool: D147: 0.0442

tool: D15: 0.5

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

tool: D70: 0.5967

tool: D106: 0.36067

tool: D27: 2.78861

tool: D51: 2.56096

tool: D83: 0.25361

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