user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<gsw_rho>:
  endbr64
  sub    $0x28,%rsp
  movapd %xmm0,%xmm4
  movsd  %xmm0,0x8(%rsp)
  movsd  %xmm1,0x10(%rsp)
  movsd  %xmm2,0x18(%rsp)
  pxor   %xmm0,%xmm0
  ucomisd %xmm4,%xmm0
  ja     L6
  sqrtsd %xmm4,%xmm4
  movapd %xmm4,%xmm3
L3:
  movsd  0x10(%rsp),%xmm6
  movapd %xmm6,%xmm0
  mulsd  D289(%rip),%xmm0
  subsd  D425(%rip),%xmm0
  mulsd  %xmm6,%xmm0
  addsd  D333(%rip),%xmm0
  mulsd  %xmm6,%xmm0
  subsd  D149(%rip),%xmm0
  mulsd  %xmm3,%xmm0
  movapd %xmm6,%xmm1
  mulsd  D98(%rip),%xmm1
  subsd  D264(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  D243(%rip),%xmm1
  addsd  %xmm1,%xmm0
  movsd  0x8(%rsp),%xmm7
  mulsd  %xmm7,%xmm0
  movapd %xmm6,%xmm1
  mulsd  D433(%rip),%xmm1
  subsd  D326(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  D369(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  D218(%rip),%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm6,%xmm1
  mulsd  D148(%rip),%xmm1
  subsd  D309(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  D240(%rip),%xmm1
  movapd %xmm6,%xmm2
  mulsd  D156(%rip),%xmm2
  subsd  D103(%rip),%xmm2
  mulsd  %xmm7,%xmm2
  addsd  %xmm2,%xmm1
  movapd %xmm6,%xmm2
  mulsd  D188(%rip),%xmm2
  subsd  D107(%rip),%xmm2
  mulsd  %xmm6,%xmm2
  subsd  D296(%rip),%xmm2
  movapd %xmm7,%xmm4
  mulsd  D439(%rip),%xmm4
  addsd  %xmm4,%xmm2
  movsd  0x18(%rsp),%xmm8
  mulsd  %xmm8,%xmm2
  addsd  %xmm2,%xmm1
  mulsd  %xmm8,%xmm1
  addsd  %xmm1,%xmm0
  movapd %xmm6,%xmm2
  mulsd  D200(%rip),%xmm2
  addsd  D52(%rip),%xmm2
  mulsd  %xmm6,%xmm2
  addsd  D37(%rip),%xmm2
  mulsd  %xmm6,%xmm2
  subsd  D463(%rip),%xmm2
  mulsd  %xmm6,%xmm2
  subsd  D327(%rip),%xmm2
  movapd %xmm7,%xmm1
  mulsd  D231(%rip),%xmm1
  addsd  %xmm1,%xmm2
  movapd %xmm6,%xmm1
  mulsd  D39(%rip),%xmm1
  subsd  D305(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  D373(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  D168(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  D274(%rip),%xmm1
  mulsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm2
  mulsd  %xmm7,%xmm2
  movapd %xmm6,%xmm1
  mulsd  D180(%rip),%xmm1
  addsd  D30(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  D237(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  D170(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  D84(%rip),%xmm1
  addsd  %xmm1,%xmm2
  movapd %xmm6,%xmm1
  mulsd  D316(%rip),%xmm1
  subsd  D291(%rip),%xmm1
  movapd %xmm7,%xmm3
  mulsd  D213(%rip),%xmm3
  addsd  %xmm3,%xmm1
  mulsd  %xmm6,%xmm1
  subsd  D418(%rip),%xmm1
  movapd %xmm6,%xmm3
  mulsd  D151(%rip),%xmm3
  subsd  D414(%rip),%xmm3
  mulsd  %xmm8,%xmm3
  addsd  %xmm1,%xmm3
  mulsd  %xmm8,%xmm3
  movapd %xmm6,%xmm1
  mulsd  D49(%rip),%xmm1
  addsd  D161(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  subsd  D201(%rip),%xmm1
  mulsd  %xmm6,%xmm1
  movapd %xmm1,%xmm4
  subsd  D461(%rip),%xmm4
  mulsd  D228(%rip),%xmm6
  movapd %xmm6,%xmm1
  subsd  D234(%rip),%xmm1
  mulsd  %xmm7,%xmm1
  addsd  %xmm4,%xmm1
  addsd  %xmm3,%xmm1
  mulsd  %xmm8,%xmm1
  addsd  %xmm1,%xmm2
  divsd  %xmm2,%xmm0
  add    $0x28,%rsp
  ret
L6:
  movsd  0x8(%rsp),%xmm0
  call   <sqrt@plt>
  movapd %xmm0,%xmm3
  jmp    L3
```

tool_calls: name: disassemble_data
arguments: data_label: D289
data_type: byte[8]
name: disassemble_data
arguments: data_label: D425
data_type: byte[8]
name: disassemble_data
arguments: data_label: D333
data_type: byte[8]
name: disassemble_data
arguments: data_label: D149
data_type: byte[8]
name: disassemble_data
arguments: data_label: D98
data_type: byte[8]
name: disassemble_data
arguments: data_label: D264
data_type: byte[8]
name: disassemble_data
arguments: data_label: D243
data_type: f64
name: disassemble_data
arguments: data_label: D433
data_type: byte[8]
name: disassemble_data
arguments: data_label: D326
data_type: byte[8]
name: disassemble_data
arguments: data_label: D369
data_type: f64
name: disassemble_data
arguments: data_label: D218
data_type: byte[8]
name: disassemble_data
arguments: data_label: D148
data_type: byte[8]
name: disassemble_data
arguments: data_label: D309
data_type: byte[8]
name: disassemble_data
arguments: data_label: D240
data_type: byte[8]
name: disassemble_data
arguments: data_label: D156
data_type: byte[8]
name: disassemble_data
arguments: data_label: D103
data_type: byte[8]
name: disassemble_data
arguments: data_label: D188
data_type: byte[8]
name: disassemble_data
arguments: data_label: D107
data_type: byte[8]
name: disassemble_data
arguments: data_label: D296
data_type: byte[8]
name: disassemble_data
arguments: data_label: D439
data_type: byte[8]
name: disassemble_data
arguments: data_label: D200
data_type: byte[8]
name: disassemble_data
arguments: data_label: D52
data_type: byte[8]
name: disassemble_data
arguments: data_label: D37
data_type: byte[8]
name: disassemble_data
arguments: data_label: D463
data_type: byte[8]
name: disassemble_data
arguments: data_label: D327
data_type: byte[8]
name: disassemble_data
arguments: data_label: D231
data_type: byte[8]
name: disassemble_data
arguments: data_label: D39
data_type: byte[8]
name: disassemble_data
arguments: data_label: D305
data_type: byte[8]
name: disassemble_data
arguments: data_label: D373
data_type: byte[8]
name: disassemble_data
arguments: data_label: D168
data_type: byte[8]
name: disassemble_data
arguments: data_label: D274
data_type: byte[8]
name: disassemble_data
arguments: data_label: D180
data_type: byte[8]
name: disassemble_data
arguments: data_label: D30
data_type: byte[8]
name: disassemble_data
arguments: data_label: D237
data_type: byte[8]
name: disassemble_data
arguments: data_label: D170
data_type: byte[8]
name: disassemble_data
arguments: data_label: D84
data_type: f64
name: disassemble_data
arguments: data_label: D316
data_type: byte[8]
name: disassemble_data
arguments: data_label: D291
data_type: byte[8]
name: disassemble_data
arguments: data_label: D213
data_type: byte[8]
name: disassemble_data
arguments: data_label: D418
data_type: byte[8]
name: disassemble_data
arguments: data_label: D151
data_type: byte[8]
name: disassemble_data
arguments: data_label: D414
data_type: byte[8]
name: disassemble_data
arguments: data_label: D49
data_type: byte[8]
name: disassemble_data
arguments: data_label: D161
data_type: byte[8]
name: disassemble_data
arguments: data_label: D201
data_type: byte[8]
name: disassemble_data
arguments: data_label: D461
data_type: byte[8]
name: disassemble_data
arguments: data_label: D228
data_type: byte[8]
name: disassemble_data
arguments: data_label: D234
data_type: byte[8]

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

tool: {"D425": [0xd6,0xa6,0x84,0xcc,0x10,0xed,0xed,0x3e]}

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

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

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

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

tool: D243: 6.698001071123802

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

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

tool: D369: 2.839940833161907

tool: {"D218": [0x2f,0x19,0x8d,0x99,0xbc,0x3e,0x8f,0x40]}

tool: {"D148": [0x6e,0xb3,0xdd,0x0b,0xa2,0x41,0xcf,0x3e]}

tool: {"D309": [0xd1,0x33,0xb0,0x73,0xcd,0x84,0x36,0x3f]}

tool: {"D240": [0xb8,0x52,0x81,0xe0,0x61,0xde,0x96,0x3f]}

tool: {"D156": [0x0d,0x0d,0x3e,0x7f,0x28,0x13,0xa7,0x3e]}

tool: {"D103": [0xea,0x40,0xd6,0x96,0x94,0xae,0x27,0x3f]}

tool: {"D188": [0x18,0xe6,0x61,0x34,0xd2,0x57,0xa7,0xbd]}

tool: {"D107": [0x40,0x72,0xfa,0x98,0x94,0x59,0x55,0x3e]}

tool: {"D296": [0xb4,0x8a,0x75,0x40,0x7b,0xb7,0x94,0x3e]}

tool: {"D439": [0x3d,0xae,0x24,0x03,0xdc,0x50,0xe5,0x3d]}

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

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

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

tool: {"D463": [0xbc,0xe6,0xbd,0x4a,0x61,0xfc,0xfc,0x3e]}

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

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

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

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

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

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

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

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

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

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

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

tool: D84: 1

tool: {"D316": [0x10,0xf7,0x4c,0x08,0xff,0xfe,0x14,0xbd]}

tool: {"D291": [0x61,0xf3,0x4c,0xa2,0x49,0x59,0xb5,0x3d]}

tool: {"D213": [0x3e,0xd3,0xdc,0x5f,0x9b,0x35,0x09,0x3d]}

tool: {"D418": [0x5a,0x66,0xbb,0x13,0x58,0xc2,0xde,0x3d]}

tool: {"D151": [0x2c,0x35,0x32,0x6d,0xf1,0x75,0x91,0x3c]}

tool: {"D414": [0xeb,0xc5,0x77,0x63,0x5d,0xa0,0xd5,0x3c]}

tool: {"D49": [0xb7,0x34,0xcf,0x2a,0x41,0xfc,0x80,0xbd]}

tool: {"D161": [0x58,0xd0,0xf2,0x4f,0xfe,0x69,0x2b,0x3e]}

tool: {"D201": [0xa4,0xa8,0x06,0xd8,0x74,0x8f,0x95,0x3e]}

tool: {"D461": [0x9b,0xcc,0x5a,0x74,0xff,0xc0,0xfc,0x3e]}

tool: {"D228": [0xe8,0x94,0x78,0xf4,0xa0,0x57,0x05,0x3e]}

tool: {"D234": [0x8f,0x77,0xaa,0x37,0x2c,0xaa,0x7d,0x3e]}

assistant: ```c
double gsw_rho(double sa, double ct, double p) {
  double v01 = 9.998420897506056e+2, 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, v12 = -2.233269627352527e-2, v13 = -3.436090079851880e-4, v14 = 3.726050720345733e-6, v15 = -1.806789763745328e-4, v16 = 6.876837219536232e-7, v17 = -3.087032500374211e-7, v18 = -1.988366587925593e-8, v19 = -1.061519070296458e-11, v20 = 1.550932729220080e-10, 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, v37 = -2.742185394906099e-5, v38 = -3.212746477974189e-7, v39 = 3.191413910561627e-9, v40 = -1.931012931541776e-12, v41 = -1.105097577149576e-7, v42 = 6.211426728363857e-10, v43 = -1.119011592875110e-10, v44 = -1.941660213148725e-11, v45 = -1.864826425365600e-14, v46 = 1.119522344879478e-14, v47 = -1.200507748551599e-15, v48 = 6.057902487546866e-17;
  double sqrtsa, v_hat_denominator, v_hat_numerator;
  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)))) + p * (v12 + ct * (v13 + v14 * ct) + sa * (v15 + v16 * ct) + p * (v17 + ct * (v18 + v19 * ct) + v20 * sa));
  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))))) + p * (v37 + ct * (v38 + ct * (v39 + v40 * ct)) + sa * (v41 + v42 * ct) + p * (v43 + ct * (v44 + v45 * ct + v46 * sa) + p * (v47 + v48 * ct)));
  return (v_hat_denominator / v_hat_numerator);
}
```