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

```asm
<gsw_pt0_from_t>:
  endbr64
  push   %rbx
  movapd %xmm0,%xmm4
  mov    $0x2,%ebx
  sub    $0x30,%rsp
  movsd  D18(%rip),%xmm5
  movsd  D55(%rip),%xmm6
  mulsd  D95(%rip),%xmm0
  movsd  D53(%rip),%xmm3
  movsd  %xmm4,0x10(%rsp)
  mulsd  %xmm1,%xmm6
  movsd  D20(%rip),%xmm7
  mulsd  %xmm2,%xmm7
  divsd  %xmm5,%xmm0
  mulsd  %xmm0,%xmm3
  subsd  D96(%rip),%xmm3
  mulsd  D49(%rip),%xmm0
  addsd  %xmm6,%xmm3
  movsd  D141(%rip),%xmm6
  mulsd  %xmm2,%xmm6
  addsd  %xmm6,%xmm3
  movsd  D115(%rip),%xmm6
  subsd  %xmm0,%xmm6
  movsd  D26(%rip),%xmm0
  mulsd  %xmm1,%xmm3
  subsd  %xmm7,%xmm6
  addsd  %xmm6,%xmm3
  movapd %xmm4,%xmm6
  divsd  %xmm5,%xmm6
  movapd %xmm0,%xmm5
  mulsd  %xmm2,%xmm3
  addsd  %xmm1,%xmm3
  movsd  %xmm3,0x18(%rsp)
  subsd  %xmm6,%xmm5
  mulsd  D79(%rip),%xmm5
  subsd  %xmm5,%xmm0
  movapd %xmm3,%xmm5
  addsd  D25(%rip),%xmm5
  mulsd  %xmm5,%xmm0
  movsd  D131(%rip),%xmm5
  divsd  %xmm0,%xmm5
  movapd %xmm4,%xmm0
  movsd  %xmm5,0x8(%rsp)
  call   <gsw_entropy_part@plt>
  movsd  0x10(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm3
  movsd  %xmm0,0x28(%rsp)
L2:
  movapd %xmm3,%xmm1
  movapd %xmm4,%xmm0
  movsd  %xmm3,0x18(%rsp)
  movsd  %xmm4,0x10(%rsp)
  call   <gsw_entropy_part_zerop@plt>
  movsd  0x18(%rsp),%xmm3
  movsd  0x10(%rsp),%xmm4
  movapd %xmm0,%xmm2
  subsd  0x28(%rsp),%xmm2
  movapd %xmm3,%xmm1
  movapd %xmm2,%xmm0
  divsd  0x8(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movapd %xmm4,%xmm0
  movsd  %xmm2,0x20(%rsp)
  addsd  %xmm3,%xmm1
  mulsd  D40(%rip),%xmm1
  call   <gsw_gibbs_pt0_pt0@plt>
  movq   D57(%rip),%xmm5
  movsd  0x20(%rsp),%xmm2
  cmp    $0x1,%ebx
  movsd  0x18(%rsp),%xmm3
  movapd %xmm0,%xmm7
  movsd  0x10(%rsp),%xmm4
  xorpd  %xmm5,%xmm2
  xorpd  %xmm5,%xmm7
  divsd  %xmm0,%xmm2
  movsd  %xmm7,0x8(%rsp)
  subsd  %xmm2,%xmm3
  jne    L10
  add    $0x30,%rsp
  movapd %xmm3,%xmm0
  pop    %rbx
  ret
  nopw   0x0(%rax,%rax,1)
L10:
  mov    $0x1,%ebx
  jmp    L2
```

tool_calls: name: parse_data
arguments: data_label: D18
type_infered: f64
name: parse_data
arguments: data_label: D55
type_infered: byte[8]
name: parse_data
arguments: data_label: D95
type_infered: f64
name: parse_data
arguments: data_label: D53
type_infered: byte[8]
name: parse_data
arguments: data_label: D20
type_infered: byte[8]
name: parse_data
arguments: data_label: D96
type_infered: byte[8]
name: parse_data
arguments: data_label: D49
type_infered: byte[8]
name: parse_data
arguments: data_label: D141
type_infered: byte[8]
name: parse_data
arguments: data_label: D115
type_infered: byte[8]
name: parse_data
arguments: data_label: D26
type_infered: f64
name: parse_data
arguments: data_label: D79
type_infered: f64
name: parse_data
arguments: data_label: D25
type_infered: f64
name: parse_data
arguments: data_label: D131
type_infered: f64
name: parse_data
arguments: data_label: D40
type_infered: f64
name: parse_data
arguments: data_label: D57
type_infered: byte[8]

tool: D18: 35.16504

tool: {"D55": [0x88,0xfb,0x99,0x2c,0x70,0x17,0x53,0x3e]}

tool: D95: 35

tool: {"D53": [0xf8,0x16,0x2f,0x75,0xb3,0x7c,0x5e,0x3e]}

tool: {"D20": [0x76,0x5c,0x53,0xa9,0x8b,0xb5,0x3f,0x3e]}

tool: {"D96": [0xe0,0x35,0x10,0x26,0x46,0x94,0xe1,0x3e]}

tool: {"D49": [0x55,0x82,0xb8,0x95,0x3b,0xc3,0xb7,0x3e]}

tool: {"D141": [0x4e,0xf8,0x09,0xc4,0x00,0x86,0xe7,0x3d]}

tool: {"D115": [0xe7,0x41,0x75,0x08,0x88,0x26,0xe2,0x3e]}

tool: D26: 1

tool: D79: 0.05

tool: D25: 273.15

tool: D131: 3991.86795711963

tool: D40: 0.5

tool: {"D57": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

assistant: ```c
double gsw_pt0_from_t(double sa, double t, double p) {
  int n0, n2, no_iter;
  double pt0, pt0_old, dentropy, dentropy_dt, sso, cp0;
  double s1, true_entropy_part, pt0m;
  n0 = 0;
  n2 = 2;
  cp0 = 3991.86795711963e0;
  sso = 35.16504e0;
  s1 = sa * 35e0 / sso;
  pt0 = t + p * (8.65483913395442e-6 - s1 * 1.41636299744881e-6 - p * 7.38286467135737e-9 + t * (-8.38241357039698e-6 + s1 * 2.83933368585534e-8 + t * 1.77803965218656e-8 + p * 1.71155619208233e-10));
  dentropy_dt = cp0 / ((273.15e0 + pt0) * (1e0 - 0.05e0 * (1e0 - sa / sso)));
  true_entropy_part = gsw_entropy_part(sa, t, p);
  for (no_iter = 1; no_iter <= 2; no_iter++) {
    pt0_old = pt0;
    dentropy = gsw_entropy_part_zerop(sa, pt0_old) - true_entropy_part;
    pt0 = pt0_old - dentropy / dentropy_dt;
    pt0m = 0.5e0 * (pt0 + pt0_old);
    dentropy_dt = -gsw_gibbs_pt0_pt0(sa, pt0m);
    pt0 = pt0_old - dentropy / dentropy_dt;
  }
  return (pt0);
}
```