user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<gsw_sp_from_c>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  movapd %xmm0,%xmm3
  movq   %xmm1,%rbp
  movapd %xmm1,%xmm4
  mulsd  D302(%rip),%xmm4
  movapd %xmm4,%xmm1
  subsd  D251(%rip),%xmm1
  movapd %xmm1,%xmm0
  mulsd  D343(%rip),%xmm0
  movsd  D301(%rip),%xmm5
  addsd  %xmm5,%xmm0
  divsd  %xmm0,%xmm1
  movsd  %xmm1,0x10(%rsp)
  mulsd  D264(%rip),%xmm3
  movapd %xmm2,%xmm1
  mulsd  D366(%rip),%xmm1
  addsd  D220(%rip),%xmm1
  movapd %xmm2,%xmm0
  mulsd  D175(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  movapd %xmm4,%xmm1
  mulsd  D375(%rip),%xmm1
  addsd  %xmm5,%xmm1
  movapd %xmm4,%xmm2
  mulsd  D221(%rip),%xmm2
  mulsd  %xmm4,%xmm2
  addsd  %xmm2,%xmm1
  movapd %xmm4,%xmm2
  mulsd  D315(%rip),%xmm2
  addsd  D46(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm5,%xmm2
  movapd %xmm4,%xmm0
  mulsd  D74(%rip),%xmm0
  subsd  D164(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  addsd  D248(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  addsd  D232(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  addsd  D312(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  comisd %xmm3,%xmm0
  ja     L3
  movq   %xmm3,%rbx
  ucomisd %xmm3,%xmm0
  ja     L63
L46:
  movq   %rbx,%xmm5
  sqrtsd %xmm5,%xmm5
  movsd  %xmm5,0x18(%rsp)
L51:
  movsd  0x18(%rsp),%xmm6
  movapd %xmm6,%xmm0
  mulsd  D94(%rip),%xmm0
  addsd  D305(%rip),%xmm0
  mulsd  %xmm6,%xmm0
  subsd  D231(%rip),%xmm0
  mulsd  %xmm6,%xmm0
  subsd  D274(%rip),%xmm0
  mulsd  %xmm6,%xmm0
  subsd  D240(%rip),%xmm0
  mulsd  %xmm6,%xmm0
  addsd  D357(%rip),%xmm0
  mulsd  0x10(%rsp),%xmm0
  movapd %xmm6,%xmm1
  mulsd  D64(%rip),%xmm1
  subsd  D239(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  D71(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  D170(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  D76(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  D30(%rip),%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm7
  movsd  %xmm0,0x8(%rsp)
  movsd  D279(%rip),%xmm0
  comisd %xmm7,%xmm0
  ja     L57
L7:
  pxor   %xmm0,%xmm0
  comisd 0x8(%rsp),%xmm0
  ja     L13
L9:
  movsd  0x8(%rsp),%xmm0
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  ret
L3:
  mov    D332(%rip),%rbx
  jmp    L46
L63:
  movapd %xmm3,%xmm0
  call   <sqrt@plt>
  movsd  %xmm0,0x18(%rsp)
  jmp    L51
L57:
  movq   %rbp,%xmm0
  call   <gsw_hill_ratio_at_sp2@plt>
  movapd %xmm0,%xmm5
  movq   %rbx,%xmm1
  mulsd  D300(%rip),%xmm1
  movsd  0x18(%rsp),%xmm0
  mulsd  D144(%rip),%xmm0
  movapd %xmm1,%xmm2
  addsd  D24(%rip),%xmm2
  mulsd  %xmm2,%xmm1
  movsd  D301(%rip),%xmm3
  addsd  %xmm3,%xmm1
  movsd  D30(%rip),%xmm2
  divsd  %xmm1,%xmm2
  movsd  0x8(%rsp),%xmm4
  subsd  %xmm2,%xmm4
  movsd  0x10(%rsp),%xmm1
  mulsd  D357(%rip),%xmm1
  movapd %xmm0,%xmm2
  addsd  %xmm3,%xmm2
  mulsd  %xmm0,%xmm2
  addsd  %xmm3,%xmm2
  mulsd  %xmm0,%xmm2
  addsd  %xmm3,%xmm2
  divsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm4
  mulsd  %xmm4,%xmm5
  movsd  %xmm5,0x8(%rsp)
  jmp    L7
L13:
  movsd  D332(%rip),%xmm3
  movsd  %xmm3,0x8(%rsp)
  jmp    L9
```

tool_calls: name: extract_symbolic_data
arguments: label: D302
data_type: f64
name: extract_symbolic_data
arguments: label: D251
data_type: f64
name: extract_symbolic_data
arguments: label: D343
data_type: f64
name: extract_symbolic_data
arguments: label: D301
data_type: f64
name: extract_symbolic_data
arguments: label: D264
data_type: f64
name: extract_symbolic_data
arguments: label: D366
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D220
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D175
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D375
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D221
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D315
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D46
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D74
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D164
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D248
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D232
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D312
data_type: f64
name: extract_symbolic_data
arguments: label: D94
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D305
data_type: f64
name: extract_symbolic_data
arguments: label: D231
data_type: f64
name: extract_symbolic_data
arguments: label: D274
data_type: f64
name: extract_symbolic_data
arguments: label: D240
data_type: f64
name: extract_symbolic_data
arguments: label: D357
data_type: f64
name: extract_symbolic_data
arguments: label: D64
data_type: f64
name: extract_symbolic_data
arguments: label: D239
data_type: f64
name: extract_symbolic_data
arguments: label: D71
data_type: f64
name: extract_symbolic_data
arguments: label: D170
data_type: f64
name: extract_symbolic_data
arguments: label: D76
data_type: f64
name: extract_symbolic_data
arguments: label: D30
data_type: f64
name: extract_symbolic_data
arguments: label: D279
data_type: f32[2]
name: extract_symbolic_data
arguments: label: D332
data_type: f64
name: extract_symbolic_data
arguments: label: D300
data_type: f64
name: extract_symbolic_data
arguments: label: D144
data_type: f64
name: extract_symbolic_data
arguments: label: D24
data_type: f64

tool: D302: 1.00024

tool: D251: 15

tool: D343: 0.0162

tool: D301: 1

tool: D264: 0.023302418791070513

tool: {"D366": [0xb6,0x9f,0x37,0x7b,0x1c,0xe3,0x05,0xbe]}

tool: {"D220": [0xbb,0x91,0x1e,0x2b,0x9d,0xb4,0xf5,0x3e]}

tool: {"D175": [0x87,0x15,0x67,0xfe,0x00,0xf7,0xf1,0x3c]}

tool: {"D375": [0x26,0x36,0x1f,0xd7,0x86,0x8a,0xa1,0x3f]}

tool: {"D221": [0x08,0xa3,0xa3,0x66,0x59,0x41,0x3d,0x3f]}

tool: {"D315": [0x43,0x00,0x70,0xec,0xd9,0x73,0x69,0xbf]}

tool: {"D46": [0x60,0xe5,0xd0,0x22,0xdb,0xf9,0xda,0x3f]}

tool: {"D74": [0x2a,0x5a,0x51,0x32,0xae,0x3b,0x11,0x3e]}

tool: {"D164": [0x2b,0x1c,0x89,0x3a,0x03,0x63,0xa7,0x3e]}

tool: {"D248": [0x4e,0x03,0x3b,0x84,0x8e,0xf2,0x1c,0x3f]}

tool: {"D232": [0x67,0x4e,0x4d,0x38,0xaa,0x89,0x94,0x3f]}

tool: D312: 0.6766097

tool: {"D94": [0x92,0xcb,0x7f,0x48,0xbf,0x7d,0x8d,0xbf]}

tool: D305: 0.0636

tool: D231: 0.0375

tool: D274: 0.0066

tool: D240: 0.0056

tool: D357: 0.0005

tool: D64: 2.7081

tool: D239: 7.0261

tool: D71: 14.0941

tool: D170: 25.3851

tool: D76: 0.1692

tool: D30: 0.008

tool: {"D279": [0.0,2.0]}

tool: D332: 9000000000000000.0

tool: D300: 400

tool: D144: 10

tool: D24: 1.5

assistant: ```c
double gsw_sp_from_c(double c, double t, double p) {
  double a0 = 0.0080e0, a1 = -0.1692e0, a2 = 25.3851e0, a3 = 14.0941e0, a4 = -7.0261e0, a5 = 2.7081e0, b0 = 0.0005e0, b1 = -0.0056e0, b2 = -0.0066e0, b3 = -0.0375e0, b4 = 0.0636e0, b5 = -0.0144e0, c0 = 0.6766097e0, c1 = 2.00564e-2, c2 = 1.104259e-4, c3 = -6.9698e-7, c4 = 1.0031e-9, d1 = 3.426e-2, d2 = 4.464e-4, d3 = 4.215e-1, d4 = -3.107e-3, e1 = 2.070e-5, e2 = -6.370e-10, e3 = 3.989e-15, k = 0.0162;
  double sp, t68, ft68, r, rt_lc, rp, rt, rtx, hill_ratio, x, sqrty, part1, part2, sp_hill_raw;
  t68 = t * 1.00024e0;
  ft68 = (t68 - 15e0) / (1e0 + k * (t68 - 15e0));
  r = 0.023302418791070513e0 * c;
  rt_lc = c0 + (c1 + (c2 + (c3 + c4 * t68) * t68) * t68) * t68;
  rp = 1e0 + (p * (e1 + e2 * p + e3 * p * p)) / (1e0 + d1 * t68 + d2 * t68 * t68 + (d3 + d4 * t68) * r);
  rt = r / (rp * rt_lc);
  if (rt < 0.0) {
    rt = 9e15;
  }
  rtx = sqrt(rt);
  sp = a0 + (a1 + (a2 + (a3 + (a4 + a5 * rtx) * rtx) * rtx) * rtx) * rtx + ft68 * (b0 + (b1 + (b2 + (b3 + (b4 + b5 * rtx) * rtx) * rtx) * rtx) * rtx);
  if (sp < 2) {
    hill_ratio = gsw_hill_ratio_at_sp2(t);
    x = 400e0 * rt;
    sqrty = 10e0 * rtx;
    part1 = 1e0 + x * (1.5e0 + x);
    part2 = 1e0 + sqrty * (1e0 + sqrty * (1e0 + sqrty));
    sp_hill_raw = sp - a0 / part1 - b0 * ft68 / part2;
    sp = hill_ratio * sp_hill_raw;
  }
  if (sp < 0.0) {
    sp = 9e15;
  }
  return (sp);
}
```