user: Please show me the C implementation that matches the assembly code listed below:

```asm
<gsw_sigma0>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x100,%rsp
  movsd  %xmm0,-0xf8(%rbp)
  movsd  %xmm1,-0x100(%rbp)
  movsd  D62(%rip),%xmm0
  movsd  %xmm0,-0xf0(%rbp)
  movsd  D217(%rip),%xmm0
  movsd  %xmm0,-0xe8(%rbp)
  movsd  D153(%rip),%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  D73(%rip),%xmm0
  movsd  %xmm0,-0xd8(%rbp)
  movsd  D58(%rip),%xmm0
  movsd  %xmm0,-0xd0(%rbp)
  movsd  D32(%rip),%xmm0
  movsd  %xmm0,-0xc8(%rbp)
  movsd  D162(%rip),%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  D20(%rip),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  movsd  D57(%rip),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  D175(%rip),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  D243(%rip),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  D201(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  D150(%rip),%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  D138(%rip),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  D147(%rip),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  D241(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  D60(%rip),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D197(%rip),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  D6(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  D135(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D212(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D231(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  D93(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D250(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D76(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D234(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D191(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0xf8(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  movsd  -0xd8(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0xe0(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0xe8(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0xf0(%rbp),%xmm1
  movsd  -0xc0(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0xc8(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  -0xd0(%rbp),%xmm2
  movsd  -0xa0(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0xa8(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0xb0(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0xb8(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  -0xf8(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x78(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x80(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x88(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x90(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x98(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x58(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x60(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x68(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  -0x70(%rbp),%xmm2
  movsd  -0x20(%rbp),%xmm0
  mulsd  -0xf8(%rbp),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x28(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x38(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x40(%rbp),%xmm0
  mulsd  -0x100(%rbp),%xmm0
  addsd  -0x48(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  -0xf8(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x10(%rbp),%xmm0
  divsd  -0x8(%rbp),%xmm0
  movsd  D126(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D62
type_guessed: f64
name: read_data
arguments: label: D217
type_guessed: f64
name: read_data
arguments: label: D153
type_guessed: byte[8]
name: read_data
arguments: label: D73
type_guessed: byte[8]
name: read_data
arguments: label: D58
type_guessed: byte[8]
name: read_data
arguments: label: D32
type_guessed: byte[8]
name: read_data
arguments: label: D162
type_guessed: byte[8]
name: read_data
arguments: label: D20
type_guessed: byte[8]
name: read_data
arguments: label: D57
type_guessed: byte[8]
name: read_data
arguments: label: D175
type_guessed: byte[8]
name: read_data
arguments: label: D243
type_guessed: byte[8]
name: read_data
arguments: label: D201
type_guessed: f64
name: read_data
arguments: label: D150
type_guessed: byte[8]
name: read_data
arguments: label: D138
type_guessed: byte[8]
name: read_data
arguments: label: D147
type_guessed: byte[8]
name: read_data
arguments: label: D241
type_guessed: byte[8]
name: read_data
arguments: label: D60
type_guessed: byte[8]
name: read_data
arguments: label: D197
type_guessed: byte[8]
name: read_data
arguments: label: D6
type_guessed: byte[8]
name: read_data
arguments: label: D135
type_guessed: byte[8]
name: read_data
arguments: label: D212
type_guessed: byte[8]
name: read_data
arguments: label: D231
type_guessed: byte[8]
name: read_data
arguments: label: D93
type_guessed: byte[8]
name: read_data
arguments: label: D250
type_guessed: byte[8]
name: read_data
arguments: label: D76
type_guessed: byte[8]
name: read_data
arguments: label: D234
type_guessed: byte[8]
name: read_data
arguments: label: D191
type_guessed: byte[8]
name: read_data
arguments: label: D126
type_guessed: f64

tool: D62: 999.8420897506056

tool: D217: 2.839940833161907

tool: {"D153": [0x8e,0x15,0x07,0xbe,0xd4,0x1d,0xa0,0xbf]}

tool: {"D73": [0x1f,0x14,0xa5,0x0a,0xda,0x5c,0x53,0x3f]}

tool: {"D58": [0xe4,0x32,0xf4,0xca,0xc0,0xca,0x1a,0xc0]}

tool: {"D32": [0xf2,0xa0,0x4f,0x84,0xed,0x94,0x9e,0xbf]}

tool: {"D162": [0xfc,0x2c,0x45,0x01,0x00,0x83,0x2e,0x3f]}

tool: {"D20": [0xfc,0x2d,0x58,0xb1,0x3a,0x6c,0xa4,0xbf]}

tool: {"D57": [0xbf,0xb2,0x6b,0xaa,0x59,0xb2,0x40,0x3f]}

tool: {"D175": [0xd6,0xa6,0x84,0xcc,0x10,0xed,0xed,0xbe]}

tool: {"D243": [0x73,0x33,0x84,0xef,0x4f,0x14,0x86,0x3e]}

tool: D201: 1

tool: {"D150": [0xb6,0xcd,0x91,0xdc,0x8a,0xbd,0x66,0x3f]}

tool: {"D138": [0x63,0xc6,0xe2,0xf0,0x2d,0xa3,0xf8,0xbe]}

tool: {"D147": [0x42,0xd1,0x39,0xf4,0x45,0xc8,0xb2,0x3e]}

tool: {"D241": [0x40,0x56,0x29,0xd6,0xcf,0x2b,0x07,0x3e]}

tool: {"D60": [0x0f,0x4d,0x4a,0x59,0xcf,0xce,0x7e,0xbf]}

tool: {"D197": [0xbc,0xe6,0xbd,0x4a,0x61,0xfc,0xfc,0xbe]}

tool: {"D6": [0x9b,0x60,0x15,0x69,0x6b,0xf3,0x80,0x3e]}

tool: {"D135": [0xda,0x54,0xdf,0x5d,0x67,0x5e,0x10,0x3e]}

tool: {"D212": [0x25,0x50,0x24,0x19,0xed,0xe9,0xb3,0xbd]}

tool: {"D231": [0xe4,0x53,0x23,0x49,0xa0,0x51,0x01,0xbf]}

tool: {"D93": [0x2d,0xaf,0xa5,0xc9,0x09,0x83,0x99,0x3e]}

tool: {"D250": [0x57,0x27,0x46,0x6b,0x35,0x7a,0x40,0xbe]}

tool: {"D76": [0x61,0xf7,0x2f,0x26,0x08,0x7a,0xc9,0xbd]}

tool: {"D234": [0x8b,0x87,0x54,0x54,0x4b,0x95,0x87,0x3d]}

tool: {"D191": [0xf6,0x68,0xb1,0x23,0xf5,0xba,0xd6,0x3e]}

tool: D126: 1000

assistant: ```c
double gsw_sigma0(double sa, double ct) {
  double v01 = 9.998420897506056e2, v02 = 2.839940833161907e0, v03 = -3.147759265588511e-2, v04 = 1.181805545074306e-3, v05 = -6.698001071123802e0, v06 = -2.986498947203215e-2, v07 = 2.327859407479162e-4, v08 = -3.988822378968490e-2, v09 = 5.095422573880500e-4, v10 = -1.426984671633621e-5, v11 = 1.645039373682922e-7, v21 = 1.0e0, v22 = 2.775927747785646e-3, v23 = -2.349607444135925e-5, v24 = 1.119513357486743e-6, v25 = 6.743689325042773e-10, v26 = -7.521448093615448e-3, v27 = -2.764306979894411e-5, v28 = 1.262937315098546e-7, v29 = 9.527875081696435e-10, v30 = -1.811147201949891e-11, v31 = -3.303308871386421e-5, v32 = 3.801564588876298e-7, v33 = -7.672876869259043e-9, v34 = -4.634182341116144e-11, v35 = 2.681097235569143e-12, v36 = 5.419326551148740e-6;
  double v_hat_denominator, v_hat_numerator, sqrtsa;
  sqrtsa = sqrt(sa);
  v_hat_denominator = v01 + ct * (v02 + ct * (v03 + v04 * ct)) + sa * (v05 + ct * (v06 + v07 * ct) + sqrtsa * (v08 + ct * (v09 + ct * (v10 + v11 * ct))));
  v_hat_numerator = v21 + ct * (v22 + ct * (v23 + ct * (v24 + v25 * ct))) + sa * (v26 + ct * (v27 + ct * (v28 + ct * (v29 + v30 * ct))) + v36 * sa + sqrtsa * (v31 + ct * (v32 + ct * (v33 + ct * (v34 + v35 * ct)))));
  return (v_hat_denominator / v_hat_numerator - 1000e0);
}
```