user: Converte this assembly snippet into its equivalent C code:

```asm
<sigma_pp_diff>:
  endbr64
  sub    $0x18,%rsp
  movsd  %xmm0,(%rsp)
  call   <log10@plt>
  movsd  (%rsp),%xmm2
  comisd D163(%rip),%xmm2
  movapd %xmm0,%xmm1
  movsd  D124(%rip),%xmm0
  jb     L20
  comisd %xmm2,%xmm0
  ja     L63
L20:
  comisd %xmm0,%xmm2
  movsd  D8(%rip),%xmm0
  jb     L5
  comisd %xmm2,%xmm0
  jae    L66
L5:
  comisd %xmm0,%xmm2
  ja     L51
  pxor   %xmm0,%xmm0
  add    $0x18,%rsp
  ret
  nopw   0x0(%rax,%rax,1)
L51:
  mulsd  D53(%rip),%xmm1
  movsd  D137(%rip),%xmm0
  add    $0x18,%rsp
  addsd  %xmm1,%xmm0
  ret
  nopl   0x0(%rax)
L63:
  pxor   %xmm2,%xmm2
  movapd %xmm1,%xmm0
  subsd  D48(%rip),%xmm0
  divsd  D78(%rip),%xmm0
  ucomisd %xmm0,%xmm2
  ja     L9
  sqrtsd %xmm0,%xmm0
  movsd  %xmm0,(%rsp)
L61:
  movapd %xmm1,%xmm0
  subsd  D155(%rip),%xmm0
  movsd  %xmm1,0x8(%rsp)
  mulsd  D37(%rip),%xmm0
  call   <log10@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  D28(%rip),%xmm3
  movsd  D67(%rip),%xmm2
  addsd  %xmm0,%xmm0
  addsd  D167(%rip),%xmm0
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm1
  subsd  %xmm3,%xmm2
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm1
  movsd  (%rsp),%xmm0
  add    $0x18,%rsp
  mulsd  %xmm1,%xmm0
  ret
  xchg   %ax,%ax
L66:
  movapd %xmm1,%xmm0
  subsd  D155(%rip),%xmm0
  movsd  %xmm1,(%rsp)
  mulsd  D37(%rip),%xmm0
  call   <log10@plt>
  movsd  (%rsp),%xmm1
  movsd  D28(%rip),%xmm3
  movsd  D67(%rip),%xmm2
  addsd  %xmm0,%xmm0
  addsd  D167(%rip),%xmm0
  add    $0x18,%rsp
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm1
  subsd  %xmm3,%xmm2
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  ret
L9:
  movsd  %xmm1,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  %xmm0,(%rsp)
  jmp    L61
```

tool_calls: name: unpack_data
arguments: data_label: D163
datatype: f64[2]
name: unpack_data
arguments: data_label: D124
datatype: f64
name: unpack_data
arguments: data_label: D8
datatype: f64
name: unpack_data
arguments: data_label: D53
datatype: f64
name: unpack_data
arguments: data_label: D137
datatype: f64
name: unpack_data
arguments: data_label: D48
datatype: f64
name: unpack_data
arguments: data_label: D78
datatype: f64
name: unpack_data
arguments: data_label: D155
datatype: f64
name: unpack_data
arguments: data_label: D37
datatype: f64
name: unpack_data
arguments: data_label: D28
datatype: f64
name: unpack_data
arguments: data_label: D67
datatype: f64
name: unpack_data
arguments: data_label: D167
datatype: f64

tool: {"D163": [2.25,3.2]}

tool: D124: 3.2

tool: D8: 100

tool: D53: 1.632

tool: D137: 5.922

tool: D48: 0.3522

tool: D78: 0.153

tool: D155: 0.25

tool: D37: 30

tool: D28: 1.042

tool: D67: 3.155

tool: D167: 1.498

assistant: ```c
double sigma_pp_diff(double Pp) {
  double d[7] = {0.3522, 0.1530, 1.498, 2.0, 30.0, 3.155, 1.042};
  double e[2] = {5.922, 1.632};
  double x, sigma;
  x = log10(Pp);
  sigma = 0;
  if ((Pp >= 2.25) && (Pp < 3.2)) {
    sigma = sqrt((x - d[0]) / d[1]) * (d[2] + d[3] * log10(d[4] * (x - 0.25)) + x * x * (d[5] - d[6] * x));
  } else if ((Pp >= 3.2) && (Pp <= 100.0)) {
    sigma = d[2] + d[3] * log10(d[4] * (x - 0.25)) + x * x * (d[5] - d[6] * x);
  } else if (Pp > 100.0) {
    sigma = e[0] + e[1] * x;
  }
  return sigma;
}
```