user: 请将以下的汇编代码转换成C语言代码:

```asm
<gsw_sp_from_c>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x160,%rsp
  movsd  %xmm0,-0x148(%rbp)
  movsd  %xmm1,-0x150(%rbp)
  movsd  %xmm2,-0x158(%rbp)
  movsd  D358(%rip),%xmm0
  movsd  %xmm0,-0x128(%rbp)
  movsd  D392(%rip),%xmm0
  movsd  %xmm0,-0x120(%rbp)
  movsd  D119(%rip),%xmm0
  movsd  %xmm0,-0x118(%rbp)
  movsd  D243(%rip),%xmm0
  movsd  %xmm0,-0x110(%rbp)
  movsd  D74(%rip),%xmm0
  movsd  %xmm0,-0x108(%rbp)
  movsd  D103(%rip),%xmm0
  movsd  %xmm0,-0x100(%rbp)
  movsd  D181(%rip),%xmm0
  movsd  %xmm0,-0xf8(%rbp)
  movsd  D218(%rip),%xmm0
  movsd  %xmm0,-0xf0(%rbp)
  movsd  D57(%rip),%xmm0
  movsd  %xmm0,-0xe8(%rbp)
  movsd  D28(%rip),%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  D272(%rip),%xmm0
  movsd  %xmm0,-0xd8(%rbp)
  movsd  D149(%rip),%xmm0
  movsd  %xmm0,-0xd0(%rbp)
  movsd  D178(%rip),%xmm0
  movsd  %xmm0,-0xc8(%rbp)
  movsd  D378(%rip),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  D337(%rip),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  D42(%rip),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  D210(%rip),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  D262(%rip),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  D373(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  D383(%rip),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  D309(%rip),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  D333(%rip),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  D126(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  D160(%rip),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D22(%rip),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0x150(%rbp),%xmm1
  movsd  D203(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm0
  movsd  D286(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  -0x60(%rbp),%xmm1
  movsd  D286(%rip),%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x68(%rbp),%xmm2
  movsd  D139(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x148(%rbp),%xmm1
  movsd  D23(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  addsd  -0xb0(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  addsd  -0xb8(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  addsd  -0xc0(%rbp),%xmm0
  mulsd  -0x60(%rbp),%xmm0
  movsd  -0xc8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x78(%rbp),%xmm0
  mulsd  -0x158(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x80(%rbp),%xmm1
  movsd  -0x70(%rbp),%xmm0
  mulsd  -0x158(%rbp),%xmm0
  mulsd  -0x158(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x158(%rbp),%xmm0
  movsd  -0xa0(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x60(%rbp),%xmm2
  movsd  D139(%rip),%xmm1
  addsd  %xmm1,%xmm2
  movsd  -0x98(%rbp),%xmm1
  mulsd  -0x60(%rbp),%xmm1
  mulsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm2
  movsd  -0x88(%rbp),%xmm1
  mulsd  -0x60(%rbp),%xmm1
  addsd  -0x90(%rbp),%xmm1
  mulsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D139(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x40(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x48(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x130(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x130(%rbp),%xmm0
  jbe    L27
  movsd  D347(%rip),%xmm0
  movsd  %xmm0,-0x130(%rbp)
L27:
  mov    -0x130(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x38(%rbp)
  movsd  -0x100(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x108(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x110(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x118(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x120(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x128(%rbp),%xmm1
  movsd  -0xd0(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0xd8(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0xe0(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0xe8(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0xf0(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0xf8(%rbp),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x138(%rbp)
  movsd  D385(%rip),%xmm0
  comisd -0x138(%rbp),%xmm0
  jbe    L17
  mov    -0x150(%rbp),%rax
  movq   %rax,%xmm0
  call   <gsw_hill_ratio_at_sp2@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x30(%rbp)
  movsd  -0x130(%rbp),%xmm1
  movsd  D221(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x38(%rbp),%xmm1
  movsd  D35(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x28(%rbp),%xmm1
  movsd  D189(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x28(%rbp),%xmm1
  movsd  D139(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D139(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D139(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D139(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x128(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  -0x18(%rbp),%xmm1
  movsd  -0x138(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  -0xf8(%rbp),%xmm1
  mulsd  -0x58(%rbp),%xmm1
  divsd  -0x10(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x30(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x138(%rbp)
L17:
  pxor   %xmm0,%xmm0
  comisd -0x138(%rbp),%xmm0
  jbe    L29
  movsd  D347(%rip),%xmm0
  movsd  %xmm0,-0x138(%rbp)
L29:
  movsd  -0x138(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D358
datatype: f64
name: parse_data
arguments: label: D392
datatype: byte[8]
name: parse_data
arguments: label: D119
datatype: f64
name: parse_data
arguments: label: D243
datatype: f64
name: parse_data
arguments: label: D74
datatype: byte[8]
name: parse_data
arguments: label: D103
datatype: f64
name: parse_data
arguments: label: D181
datatype: f64
name: parse_data
arguments: label: D218
datatype: byte[8]
name: parse_data
arguments: label: D57
datatype: byte[8]
name: parse_data
arguments: label: D28
datatype: byte[8]
name: parse_data
arguments: label: D272
datatype: f64
name: parse_data
arguments: label: D149
datatype: byte[8]
name: parse_data
arguments: label: D178
datatype: f64
name: parse_data
arguments: label: D378
datatype: byte[8]
name: parse_data
arguments: label: D337
datatype: byte[8]
name: parse_data
arguments: label: D42
datatype: byte[8]
name: parse_data
arguments: label: D210
datatype: byte[8]
name: parse_data
arguments: label: D262
datatype: byte[8]
name: parse_data
arguments: label: D373
datatype: byte[8]
name: parse_data
arguments: label: D383
datatype: byte[8]
name: parse_data
arguments: label: D309
datatype: byte[8]
name: parse_data
arguments: label: D333
datatype: byte[8]
name: parse_data
arguments: label: D126
datatype: byte[8]
name: parse_data
arguments: label: D160
datatype: byte[8]
name: parse_data
arguments: label: D22
datatype: f64
name: parse_data
arguments: label: D203
datatype: f64
name: parse_data
arguments: label: D286
datatype: f64
name: parse_data
arguments: label: D139
datatype: f64
name: parse_data
arguments: label: D23
datatype: f64
name: parse_data
arguments: label: D347
datatype: f64
name: parse_data
arguments: label: D385
datatype: f32[2]
name: parse_data
arguments: label: D221
datatype: f64
name: parse_data
arguments: label: D35
datatype: f64
name: parse_data
arguments: label: D189
datatype: f64

tool: D358: 0.008

tool: {"D392": [0x7f,0xd9,0x3d,0x79,0x58,0xa8,0xc5,0xbf]}

tool: D119: 25.3851

tool: D243: 14.0941

tool: {"D74": [0xd0,0xb3,0x59,0xf5,0xb9,0x1a,0x1c,0xc0]}

tool: D103: 2.7081

tool: D181: 0.0005

tool: {"D218": [0xc7,0xba,0xb8,0x8d,0x06,0xf0,0x76,0xbf]}

tool: {"D57": [0x46,0x25,0x75,0x02,0x9a,0x08,0x7b,0xbf]}

tool: {"D28": [0x33,0x33,0x33,0x33,0x33,0x33,0xa3,0xbf]}

tool: D272: 0.0636

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

tool: D178: 0.6766097

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

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

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

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

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

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

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

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

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

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

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

tool: D22: 0.0162

tool: D203: 1.00024

tool: D286: 15

tool: D139: 1

tool: D23: 0.023302418791070513

tool: D347: 9000000000000000.0

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

tool: D221: 400

tool: D35: 10

tool: D189: 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);
}
```