double gsw_dynamic_enthalpy(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 db2pa, sqrtsa, a0, a1, a2, a3, b0, b1, b2, b1sq;
  double sqrt_disc, ca, cb, cn, cm, part;
  db2pa = 1e4;
  sqrtsa = sqrt(sa);
  a0 = 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)))));
  a1 = v37 + ct * (v38 + ct * (v39 + v40 * ct)) + sa * (v41 + v42 * ct);
  a2 = v43 + ct * (v44 + v45 * ct + v46 * sa);
  a3 = v47 + v48 * ct;
  b0 = v01 + ct * (v02 + ct * (v03 + v04 * ct)) +
       sa * (v05 + ct * (v06 + v07 * ct) +
             sqrtsa * (v08 + ct * (v09 + ct * (v10 + v11 * ct))));
  b1 = 0.5e0 * (v12 + ct * (v13 + v14 * ct) + sa * (v15 + v16 * ct));
  b2 = v17 + ct * (v18 + v19 * ct) + v20 * sa;
  b1sq = b1 * b1;
  sqrt_disc = sqrt(b1sq - b0 * b2);
  cn = a0 + (2 * a3 * b0 * b1 / b2 - a2 * b0) / b2;
  cm = a1 + (4 * a3 * b1sq / b2 - a3 * b0 - 2 * a2 * b1) / b2;
  ca = b1 - sqrt_disc;
  cb = b1 + sqrt_disc;
  part = (cn * b2 - cm * b1) / (b2 * (cb - ca));
  return (db2pa *
          (p * (a2 - 2.0 * a3 * b1 / b2 + 0.5 * a3 * p) / b2 +
           (cm / (2.0 * b2)) * log(1.0 + p * (2.0 * b1 + b2 * p) / b0) +
           part * log(1.0 + (b2 * p * (cb - ca)) / (ca * (cb + b2 * p)))));
}


x86 assembly (clang, -O0):
<gsw_dynamic_enthalpy>:
push   %rbp
mov    %rsp,%rbp
sub    $0x240,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  0x1056(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0x1041(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0x102c(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0x1017(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x1002(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xfed(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xfd8(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xfc3(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xfae(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xf99(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xf84(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xf6f(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xf5a(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xf45(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xf2d(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xf15(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xefd(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xee5(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xecd(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xeb5(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xda5(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xe8d(%rip),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xe75(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0xe5d(%rip),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xe45(%rip),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xe2d(%rip),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xe15(%rip),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0xdfd(%rip),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0xde5(%rip),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0xdcd(%rip),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0xdb5(%rip),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  0xd9d(%rip),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  0xd85(%rip),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  0xd6d(%rip),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0xd55(%rip),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  0xd3d(%rip),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  0xd25(%rip),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  0xd0d(%rip),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  0xcf5(%rip),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  0xcdd(%rip),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0xcc5(%rip),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  0xcad(%rip),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  0xc95(%rip),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  0xc7d(%rip),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  0xc65(%rip),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  0xc4d(%rip),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  0xc35(%rip),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0xc1d(%rip),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  0xc05(%rip),%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0xc8(%rbp),%xmm3
ff
movsd  -0x10(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm5
ff
movsd  -0x10(%rbp),%xmm4
movsd  -0xd8(%rbp),%xmm7
ff
movsd  -0xe0(%rbp),%xmm6
ff
movsd  -0x10(%rbp),%xmm8
mulsd  %xmm8,%xmm6
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  -0xe8(%rbp),%xmm3
ff
movsd  -0x10(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm5
ff
movsd  -0x10(%rbp),%xmm4
movsd  -0xf8(%rbp),%xmm7
ff
movsd  -0x10(%rbp),%xmm6
movsd  -0x100(%rbp),%xmm9
ff ff
movsd  -0x108(%rbp),%xmm8
ff ff
movsd  -0x10(%rbp),%xmm10
mulsd  %xmm10,%xmm8
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm6
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  -0x138(%rbp),%xmm3
ff
movsd  -0x8(%rbp),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  -0x1a8(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm5
ff
movsd  -0x10(%rbp),%xmm4
movsd  -0x118(%rbp),%xmm7
ff
movsd  -0x10(%rbp),%xmm6
movsd  -0x120(%rbp),%xmm9
ff ff
movsd  -0x10(%rbp),%xmm8
movsd  -0x128(%rbp),%xmm11
ff ff
movsd  -0x130(%rbp),%xmm10
ff ff
movsd  -0x10(%rbp),%xmm12
mulsd  %xmm12,%xmm10
addsd  %xmm11,%xmm10
mulsd  %xmm10,%xmm8
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm6
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x148(%rbp),%xmm3
ff
movsd  -0x10(%rbp),%xmm2
movsd  -0x150(%rbp),%xmm5
ff
movsd  -0x158(%rbp),%xmm4
ff
movsd  -0x10(%rbp),%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  -0x160(%rbp),%xmm3
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x10(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x170(%rbp),%xmm1
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0x180(%rbp),%xmm3
ff
movsd  -0x10(%rbp),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  -0x188(%rbp),%xmm2
ff
movsd  -0x8(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x190(%rbp),%xmm1
ff
movsd  -0x198(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm3
movsd  -0x10(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm5
movsd  -0x38(%rbp),%xmm4
movsd  -0x10(%rbp),%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm5
movsd  -0x50(%rbp),%xmm4
movsd  -0x10(%rbp),%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  -0x1a8(%rbp),%xmm2
ff
movsd  -0x58(%rbp),%xmm5
movsd  -0x10(%rbp),%xmm4
movsd  -0x60(%rbp),%xmm7
movsd  -0x10(%rbp),%xmm6
movsd  -0x68(%rbp),%xmm9
movsd  -0x70(%rbp),%xmm8
movsd  -0x10(%rbp),%xmm10
mulsd  %xmm10,%xmm8
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm6
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x78(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm3
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x10(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x90(%rbp),%xmm3
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x10(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x866(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0xa8(%rbp),%xmm3
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x10(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x1d8(%rbp),%xmm0
ff
mulsd  -0x1d8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x1e8(%rbp),%xmm1
ff
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x1e0(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x1b0(%rbp),%xmm0
ff
movsd  0x797(%rip),%xmm2
mulsd  -0x1c8(%rbp),%xmm2
ff
mulsd  -0x1d0(%rbp),%xmm2
ff
mulsd  -0x1d8(%rbp),%xmm2
ff
divsd  -0x1e0(%rbp),%xmm2
ff
movsd  -0x1c0(%rbp),%xmm1
ff
movsd  -0x1d0(%rbp),%xmm3
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  -0x1e0(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x1b8(%rbp),%xmm0
ff
movsd  0x734(%rip),%xmm1
mulsd  -0x1c8(%rbp),%xmm1
ff
mulsd  -0x1e8(%rbp),%xmm1
ff
divsd  -0x1e0(%rbp),%xmm1
ff
movsd  -0x1c8(%rbp),%xmm2
ff
movsd  -0x1d0(%rbp),%xmm3
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0x6d5(%rip),%xmm1
mulsd  -0x1c0(%rbp),%xmm1
ff
movsd  -0x1d8(%rbp),%xmm3
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  -0x1e0(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x1d8(%rbp),%xmm0
ff
subsd  -0x1f0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x1d8(%rbp),%xmm0
ff
addsd  -0x1f0(%rbp),%xmm0
ff
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x208(%rbp),%xmm0
ff
movsd  -0x1e0(%rbp),%xmm2
ff
movsd  -0x210(%rbp),%xmm1
ff
mulsd  -0x1d8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1e0(%rbp),%xmm1
ff
movsd  -0x200(%rbp),%xmm2
ff
subsd  -0x1f8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x1a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  -0x1c0(%rbp),%xmm2
ff
movsd  0x5d6(%rip),%xmm1
mulsd  -0x1c8(%rbp),%xmm1
ff
mulsd  -0x1d8(%rbp),%xmm1
ff
divsd  -0x1e0(%rbp),%xmm1
ff
subsd  %xmm1,%xmm2
movsd  0x5ba(%rip),%xmm1
mulsd  -0x1c8(%rbp),%xmm1
ff
movsd  -0x18(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x1e0(%rbp),%xmm0
ff
movsd  %xmm0,-0x240(%rbp)
ff
movsd  -0x210(%rbp),%xmm0
ff
movsd  0x579(%rip),%xmm1
mulsd  -0x1e0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x1d8(%rbp),%xmm0
ff
movsd  -0x1e0(%rbp),%xmm2
ff
mulsd  -0x18(%rbp),%xmm2
addsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm1
divsd  -0x1d0(%rbp),%xmm1
ff
movsd  0x527(%rip),%xmm0
addsd  %xmm1,%xmm0
call   1030 <log@plt>
movsd  -0x240(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x238(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x218(%rbp),%xmm0
ff
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x1e0(%rbp),%xmm1
ff
mulsd  -0x18(%rbp),%xmm1
movsd  -0x200(%rbp),%xmm0
ff
subsd  -0x1f8(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
movsd  -0x1f8(%rbp),%xmm0
ff
movsd  -0x200(%rbp),%xmm3
ff
movsd  -0x1e0(%rbp),%xmm2
ff
movsd  -0x18(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0x495(%rip),%xmm0
addsd  %xmm1,%xmm0
call   1030 <log@plt>
movsd  -0x230(%rbp),%xmm1
ff
movsd  -0x228(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x220(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
add    $0x240,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gsw_dynamic_enthalpy>:
sub    $0x88,%rsp
movsd  %xmm2,0x68(%rsp)
movapd %xmm0,%xmm10
xorpd  %xmm8,%xmm8
ucomisd %xmm8,%xmm0
jb     1148 <gsw_dynamic_enthalpy+0x28>
xorps  %xmm0,%xmm0
sqrtsd %xmm10,%xmm0
jmp    116e <gsw_dynamic_enthalpy+0x4e>
movapd %xmm10,%xmm0
movapd %xmm10,0x20(%rsp)
movaps %xmm1,(%rsp)
call   1040 <sqrt@plt>
movapd (%rsp),%xmm1
movapd 0x20(%rsp),%xmm10
xorpd  %xmm8,%xmm8
movsd  0xe8a(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe86(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe82(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe7e(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe7a(%rip),%xmm4
movsd  0xe7a(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xe76(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xe72(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xe6e(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xe6a(%rip),%xmm3
movsd  0xe69(%rip),%xmm9
movsd  0xe69(%rip),%xmm6
mulsd  %xmm1,%xmm6
addsd  0xe65(%rip),%xmm6
mulsd  %xmm10,%xmm9
mulsd  %xmm1,%xmm6
addsd  0xe5c(%rip),%xmm6
mulsd  %xmm1,%xmm6
addsd  0xe58(%rip),%xmm6
mulsd  %xmm1,%xmm6
addsd  0xe54(%rip),%xmm6
movsd  0xe54(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe50(%rip),%xmm2
movsd  0xe4f(%rip),%xmm12
mulsd  %xmm1,%xmm12
addsd  0xe49(%rip),%xmm12
movsd  0xe49(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  0xe45(%rip),%xmm5
movsd  0xe44(%rip),%xmm11
mulsd  %xmm10,%xmm11
addsd  %xmm5,%xmm11
mulsd  %xmm1,%xmm11
addsd  0xe34(%rip),%xmm11
movsd  0xe34(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  0xe30(%rip),%xmm5
addsd  %xmm3,%xmm9
mulsd  %xmm1,%xmm5
addsd  0xe27(%rip),%xmm5
mulsd  %xmm0,%xmm6
mulsd  %xmm1,%xmm5
addsd  0xe1f(%rip),%xmm5
movsd  0xe1f(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xe1b(%rip),%xmm3
addsd  %xmm9,%xmm6
mulsd  %xmm1,%xmm3
addsd  0xe12(%rip),%xmm3
movsd  0xe12(%rip),%xmm7
mulsd  %xmm1,%xmm7
addsd  0xe0e(%rip),%xmm7
mulsd  %xmm10,%xmm6
mulsd  %xmm1,%xmm7
addsd  0xe05(%rip),%xmm7
addsd  %xmm4,%xmm6
movsd  %xmm6,0x20(%rsp)
mulsd  %xmm1,%xmm7
addsd  0xdf7(%rip),%xmm7
mulsd  %xmm0,%xmm7
addsd  %xmm3,%xmm7
mulsd  %xmm10,%xmm7
addsd  %xmm5,%xmm7
movsd  0xde6(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xde2(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xdde(%rip),%xmm4
movsd  0xdde(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xdda(%rip),%xmm0
movapd %xmm10,%xmm3
unpcklpd %xmm1,%xmm3
shufpd $0x2,0xdf0(%rip),%xmm0
shufpd $0x2,0xdf7(%rip),%xmm4
mulpd  %xmm3,%xmm0
addpd  %xmm0,%xmm4
shufpd $0x2,0xdf6(%rip),%xmm2
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm2
addpd  0xdf6(%rip),%xmm2
mulpd  %xmm1,%xmm2
addpd  0xdfa(%rip),%xmm2
unpcklpd %xmm10,%xmm10
shufpd $0x2,0xdfb(%rip),%xmm12
mulpd  %xmm10,%xmm12
addpd  %xmm2,%xmm12
movapd 0xdf9(%rip),%xmm3
movapd %xmm4,0x50(%rsp)
mulpd  %xmm4,%xmm3
movapd %xmm3,%xmm4
mulsd  %xmm3,%xmm4
movapd %xmm12,(%rsp)
unpckhpd %xmm12,%xmm12
movapd %xmm7,%xmm1
movapd %xmm12,0x40(%rsp)
mulsd  %xmm12,%xmm1
movapd %xmm4,%xmm0
subsd  %xmm1,%xmm0
ucomisd %xmm8,%xmm0
jb     1409 <gsw_dynamic_enthalpy+0x2e9>
sqrtsd %xmm0,%xmm0
jmp    1440 <gsw_dynamic_enthalpy+0x320>
movsd  %xmm11,0x18(%rsp)
movsd  %xmm7,0x10(%rsp)
movapd %xmm3,0x30(%rsp)
movapd %xmm4,0x70(%rsp)
call   1040 <sqrt@plt>
movapd 0x70(%rsp),%xmm4
movapd 0x30(%rsp),%xmm3
movsd  0x10(%rsp),%xmm7
movsd  0x18(%rsp),%xmm11
movapd %xmm3,%xmm8
unpckhpd %xmm3,%xmm8
movapd %xmm8,%xmm1
mulsd  %xmm7,%xmm1
mulsd  %xmm3,%xmm1
movapd 0x40(%rsp),%xmm6
divsd  %xmm6,%xmm1
movapd %xmm11,%xmm2
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm6,%xmm1
movsd  0x20(%rsp),%xmm5
addsd  %xmm1,%xmm5
movapd 0x50(%rsp),%xmm10
unpckhpd %xmm10,%xmm10
movsd  0xcb0(%rip),%xmm1
mulsd  %xmm10,%xmm1
mulsd  %xmm4,%xmm1
divsd  %xmm6,%xmm1
movapd %xmm10,%xmm2
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm1
movsd  0xc96(%rip),%xmm2
mulsd  %xmm11,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
divsd  %xmm6,%xmm2
movapd %xmm3,%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,%xmm9
movsd  %xmm1,0x18(%rsp)
addsd  %xmm3,%xmm0
movsd  %xmm0,0x30(%rsp)
movapd (%rsp),%xmm4
addsd  %xmm2,%xmm4
movapd %xmm3,%xmm1
mulsd  %xmm4,%xmm1
movapd %xmm4,%xmm12
mulsd  %xmm6,%xmm5
subsd  %xmm1,%xmm5
subsd  %xmm9,%xmm0
movsd  %xmm0,0x10(%rsp)
movapd %xmm6,%xmm1
mulsd  %xmm0,%xmm1
divsd  %xmm1,%xmm5
movsd  %xmm5,0x20(%rsp)
mulsd  %xmm3,%xmm8
divsd  %xmm6,%xmm8
subsd  %xmm8,%xmm11
mulsd  0xc1d(%rip),%xmm10
movsd  0x68(%rsp),%xmm1
mulsd  %xmm1,%xmm10
addsd  %xmm11,%xmm10
mulsd  %xmm1,%xmm10
divsd  %xmm6,%xmm10
movapd %xmm10,0x50(%rsp)
movapd %xmm6,%xmm0
addsd  %xmm6,%xmm0
divsd  %xmm0,%xmm12
movapd %xmm12,(%rsp)
mulsd  %xmm1,%xmm6
movapd %xmm6,0x40(%rsp)
addsd  %xmm3,%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm1,%xmm3
divsd  %xmm7,%xmm3
addsd  0xa97(%rip),%xmm3
movapd %xmm3,%xmm0
call   1030 <log@plt>
mulsd  (%rsp),%xmm0
addsd  0x50(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movapd 0x40(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  %xmm0,%xmm1
addsd  0x30(%rsp),%xmm0
mulsd  0x18(%rsp),%xmm0
divsd  %xmm0,%xmm1
addsd  0xa56(%rip),%xmm1
movapd %xmm1,%xmm0
call   1030 <log@plt>
mulsd  0x20(%rsp),%xmm0
addsd  (%rsp),%xmm0
mulsd  0xb72(%rip),%xmm0
add    $0x88,%rsp
ret

LLVM IR (-O0):
define double @gsw_dynamic_enthalpy(double %0, double %1, double %2) {
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double
%51 = alloca double
%52 = alloca double
%53 = alloca double
%54 = alloca double
%55 = alloca double
%56 = alloca double
%57 = alloca double
%58 = alloca double
%59 = alloca double
%60 = alloca double
%61 = alloca double
%62 = alloca double
%63 = alloca double
%64 = alloca double
%65 = alloca double
%66 = alloca double
%67 = alloca double
%68 = alloca double
%69 = alloca double
%70 = alloca double
store double %0, double* %4
store double %1, double* %5
store double %2, double* %6
store double 0x408F3EBC998D192F, double* %7
store double 0x4006B832E6480B06, double* %8
store double 0xBFA01DD4BE07158E, double* %9
store double 0x3F535CDA0AA5141F, double* %10
store double 0xC01ACAC0CAF432E4, double* %11
store double 0xBF9E94ED844FA0F2, double* %12
store double 0x3F2E830001452CFC, double* %13
store double 0xBFA46C3AB1582DFC, double* %14
store double 0x3F40B259AA6BB2BF, double* %15
store double 0xBEEDED10CC84A6D6, double* %16
store double 0x3E86144FEF843373, double* %17
store double 0xBF96DE61E08152B8, double* %18
store double 0xBF3684CD73B033D1, double* %19
store double 0x3ECF41A20BDDB36E, double* %20
store double 0xBF27AE9496D640EA, double* %21
store double 0x3EA713287F3E0D0D, double* %22
store double 0xBE94B77B40758AB4, double* %23
store double 0xBE55599498FA7240, double* %24
store double 0xBDA757D23461E618, double* %25
store double 0x3DE550DC0324AE3D, double* %26
store double 1.000000e+00, double* %27
store double 0x3F66BD8ADC91CDB6, double* %28
store double 0xBEF8A32DF0E2C663, double* %29
store double 0x3EB2C845F439D142, double* %30
store double 0x3E072BCFD6295640, double* %31
store double 0xBF7ECECF594A4D0F, double* %32
store double 0xBEFCFC614ABDE6BC, double* %33
store double 0x3E80F36B6915609B, double* %34
store double 0x3E105E675DDF54DA, double* %35
store double 0xBDB3E9ED19245025, double* %36
store double 0xBF0151A0492353E4, double* %37
store double 0x3E998309C9A5AF2D, double* %38
store double 0xBE407A356B462757, double* %39
store double 0xBDC97A08262FF761, double* %40
store double 0x3D87954B5454878B, double* %41
store double 0x3ED6BAF523B168F6, double* %42
store double 0xBEFCC0FF745ACC9B, double* %43
store double 0xBE958F74D806A8A4, double* %44
store double 0x3E2B69FE4FF2D058, double* %45
store double 0xBD80FC412ACF34B7, double* %46
store double 0xBE7DAA2C37AA778F, double* %47
store double 0x3E0557A0F47894E8, double* %48
store double 0xBDDEC25813BB665A, double* %49
store double 0xBDB55949A24CF361, double* %50
store double 0xBD14FEFF084CF710, double* %51
store double 0x3D09359B5FDCD33E, double* %52
store double 0xBCD5A05D6377C5EB, double* %53
store double 0x3C9175F16D32352C, double* %54
store double 1.000000e+04, double* %55
%71 = load double, double* %4
%72 = call double @sqrt(double %71)
store double %72, double* %56
%73 = load double, double* %27
%74 = load double, double* %5
%75 = load double, double* %28
%76 = load double, double* %5
%77 = load double, double* %29
%78 = load double, double* %5
%79 = load double, double* %30
%80 = load double, double* %31
%81 = load double, double* %5
%82 = call double @llvm.fmuladd.f64(double %80, double %81, double %79)
%83 = call double @llvm.fmuladd.f64(double %78, double %82, double %77)
%84 = call double @llvm.fmuladd.f64(double %76, double %83, double %75)
%85 = call double @llvm.fmuladd.f64(double %74, double %84, double %73)
%86 = load double, double* %4
%87 = load double, double* %32
%88 = load double, double* %5
%89 = load double, double* %33
%90 = load double, double* %5
%91 = load double, double* %34
%92 = load double, double* %5
%93 = load double, double* %35
%94 = load double, double* %36
%95 = load double, double* %5
%96 = call double @llvm.fmuladd.f64(double %94, double %95, double %93)
%97 = call double @llvm.fmuladd.f64(double %92, double %96, double %91)
%98 = call double @llvm.fmuladd.f64(double %90, double %97, double %89)
%99 = call double @llvm.fmuladd.f64(double %88, double %98, double %87)
%100 = load double, double* %42
%101 = load double, double* %4
%102 = call double @llvm.fmuladd.f64(double %100, double %101, double %99)
%103 = load double, double* %56
%104 = load double, double* %37
%105 = load double, double* %5
%106 = load double, double* %38
%107 = load double, double* %5
%108 = load double, double* %39
%109 = load double, double* %5
%110 = load double, double* %40
%111 = load double, double* %41
%112 = load double, double* %5
%113 = call double @llvm.fmuladd.f64(double %111, double %112, double %110)
%114 = call double @llvm.fmuladd.f64(double %109, double %113, double %108)
%115 = call double @llvm.fmuladd.f64(double %107, double %114, double %106)
%116 = call double @llvm.fmuladd.f64(double %105, double %115, double %104)
%117 = call double @llvm.fmuladd.f64(double %103, double %116, double %102)
%118 = call double @llvm.fmuladd.f64(double %86, double %117, double %85)
store double %118, double* %57
%119 = load double, double* %43
%120 = load double, double* %5
%121 = load double, double* %44
%122 = load double, double* %5
%123 = load double, double* %45
%124 = load double, double* %46
%125 = load double, double* %5
%126 = call double @llvm.fmuladd.f64(double %124, double %125, double %123)
%127 = call double @llvm.fmuladd.f64(double %122, double %126, double %121)
%128 = call double @llvm.fmuladd.f64(double %120, double %127, double %119)
%129 = load double, double* %4
%130 = load double, double* %47
%131 = load double, double* %48
%132 = load double, double* %5
%133 = call double @llvm.fmuladd.f64(double %131, double %132, double %130)
%134 = call double @llvm.fmuladd.f64(double %129, double %133, double %128)
store double %134, double* %58
%135 = load double, double* %49
%136 = load double, double* %5
%137 = load double, double* %50
%138 = load double, double* %51
%139 = load double, double* %5
%140 = call double @llvm.fmuladd.f64(double %138, double %139, double %137)
%141 = load double, double* %52
%142 = load double, double* %4
%143 = call double @llvm.fmuladd.f64(double %141, double %142, double %140)
%144 = call double @llvm.fmuladd.f64(double %136, double %143, double %135)
store double %144, double* %59
%145 = load double, double* %53
%146 = load double, double* %54
%147 = load double, double* %5
%148 = call double @llvm.fmuladd.f64(double %146, double %147, double %145)
store double %148, double* %60
%149 = load double, double* %7
%150 = load double, double* %5
%151 = load double, double* %8
%152 = load double, double* %5
%153 = load double, double* %9
%154 = load double, double* %10
%155 = load double, double* %5
%156 = call double @llvm.fmuladd.f64(double %154, double %155, double %153)
%157 = call double @llvm.fmuladd.f64(double %152, double %156, double %151)
%158 = call double @llvm.fmuladd.f64(double %150, double %157, double %149)
%159 = load double, double* %4
%160 = load double, double* %11
%161 = load double, double* %5
%162 = load double, double* %12
%163 = load double, double* %13
%164 = load double, double* %5
%165 = call double @llvm.fmuladd.f64(double %163, double %164, double %162)
%166 = call double @llvm.fmuladd.f64(double %161, double %165, double %160)
%167 = load double, double* %56
%168 = load double, double* %14
%169 = load double, double* %5
%170 = load double, double* %15
%171 = load double, double* %5
%172 = load double, double* %16
%173 = load double, double* %17
%174 = load double, double* %5
%175 = call double @llvm.fmuladd.f64(double %173, double %174, double %172)
%176 = call double @llvm.fmuladd.f64(double %171, double %175, double %170)
%177 = call double @llvm.fmuladd.f64(double %169, double %176, double %168)
%178 = call double @llvm.fmuladd.f64(double %167, double %177, double %166)
%179 = call double @llvm.fmuladd.f64(double %159, double %178, double %158)
store double %179, double* %61
%180 = load double, double* %18
%181 = load double, double* %5
%182 = load double, double* %19
%183 = load double, double* %20
%184 = load double, double* %5
%185 = call double @llvm.fmuladd.f64(double %183, double %184, double %182)
%186 = call double @llvm.fmuladd.f64(double %181, double %185, double %180)
%187 = load double, double* %4
%188 = load double, double* %21
%189 = load double, double* %22
%190 = load double, double* %5
%191 = call double @llvm.fmuladd.f64(double %189, double %190, double %188)
%192 = call double @llvm.fmuladd.f64(double %187, double %191, double %186)
%193 = fmul double 5.000000e-01, %192
store double %193, double* %62
%194 = load double, double* %23
%195 = load double, double* %5
%196 = load double, double* %24
%197 = load double, double* %25
%198 = load double, double* %5
%199 = call double @llvm.fmuladd.f64(double %197, double %198, double %196)
%200 = call double @llvm.fmuladd.f64(double %195, double %199, double %194)
%201 = load double, double* %26
%202 = load double, double* %4
%203 = call double @llvm.fmuladd.f64(double %201, double %202, double %200)
store double %203, double* %63
%204 = load double, double* %62
%205 = load double, double* %62
%206 = fmul double %204, %205
store double %206, double* %64
%207 = load double, double* %64
%208 = load double, double* %61
%209 = load double, double* %63
%210 = fneg double %208
%211 = call double @llvm.fmuladd.f64(double %210, double %209, double %207)
%212 = call double @sqrt(double %211)
store double %212, double* %65
%213 = load double, double* %57
%214 = load double, double* %60
%215 = fmul double 2.000000e+00, %214
%216 = load double, double* %61
%217 = fmul double %215, %216
%218 = load double, double* %62
%219 = fmul double %217, %218
%220 = load double, double* %63
%221 = fdiv double %219, %220
%222 = load double, double* %59
%223 = load double, double* %61
%224 = fneg double %222
%225 = call double @llvm.fmuladd.f64(double %224, double %223, double %221)
%226 = load double, double* %63
%227 = fdiv double %225, %226
%228 = fadd double %213, %227
store double %228, double* %68
%229 = load double, double* %58
%230 = load double, double* %60
%231 = fmul double 4.000000e+00, %230
%232 = load double, double* %64
%233 = fmul double %231, %232
%234 = load double, double* %63
%235 = fdiv double %233, %234
%236 = load double, double* %60
%237 = load double, double* %61
%238 = fneg double %236
%239 = call double @llvm.fmuladd.f64(double %238, double %237, double %235)
%240 = load double, double* %59
%241 = fmul double 2.000000e+00, %240
%242 = load double, double* %62
%243 = fneg double %241
%244 = call double @llvm.fmuladd.f64(double %243, double %242, double %239)
%245 = load double, double* %63
%246 = fdiv double %244, %245
%247 = fadd double %229, %246
store double %247, double* %69
%248 = load double, double* %62
%249 = load double, double* %65
%250 = fsub double %248, %249
store double %250, double* %66
%251 = load double, double* %62
%252 = load double, double* %65
%253 = fadd double %251, %252
store double %253, double* %67
%254 = load double, double* %68
%255 = load double, double* %63
%256 = load double, double* %69
%257 = load double, double* %62
%258 = fmul double %256, %257
%259 = fneg double %258
%260 = call double @llvm.fmuladd.f64(double %254, double %255, double %259)
%261 = load double, double* %63
%262 = load double, double* %67
%263 = load double, double* %66
%264 = fsub double %262, %263
%265 = fmul double %261, %264
%266 = fdiv double %260, %265
store double %266, double* %70
%267 = load double, double* %55
%268 = load double, double* %6
%269 = load double, double* %59
%270 = load double, double* %60
%271 = fmul double 2.000000e+00, %270
%272 = load double, double* %62
%273 = fmul double %271, %272
%274 = load double, double* %63
%275 = fdiv double %273, %274
%276 = fsub double %269, %275
%277 = load double, double* %60
%278 = fmul double 5.000000e-01, %277
%279 = load double, double* %6
%280 = call double @llvm.fmuladd.f64(double %278, double %279, double %276)
%281 = fmul double %268, %280
%282 = load double, double* %63
%283 = fdiv double %281, %282
%284 = load double, double* %69
%285 = load double, double* %63
%286 = fmul double 2.000000e+00, %285
%287 = fdiv double %284, %286
%288 = load double, double* %6
%289 = load double, double* %62
%290 = load double, double* %63
%291 = load double, double* %6
%292 = fmul double %290, %291
%293 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %289, double %292)
%294 = fmul double %288, %293
%295 = load double, double* %61
%296 = fdiv double %294, %295
%297 = fadd double 1.000000e+00, %296
%298 = call double @log(double %297)
%299 = call double @llvm.fmuladd.f64(double %287, double %298, double %283)
%300 = load double, double* %70
%301 = load double, double* %63
%302 = load double, double* %6
%303 = fmul double %301, %302
%304 = load double, double* %67
%305 = load double, double* %66
%306 = fsub double %304, %305
%307 = fmul double %303, %306
%308 = load double, double* %66
%309 = load double, double* %67
%310 = load double, double* %63
%311 = load double, double* %6
%312 = call double @llvm.fmuladd.f64(double %310, double %311, double %309)
%313 = fmul double %308, %312
%314 = fdiv double %307, %313
%315 = fadd double 1.000000e+00, %314
%316 = call double @log(double %315)
%317 = call double @llvm.fmuladd.f64(double %300, double %316, double %299)
%318 = fmul double %267, %317
ret double %318
}

LLVM IR (-O2):
define double @gsw_dynamic_enthalpy(double %0, double %1, double %2) {
%4 = tail call double @sqrt(double %0)
%5 = tail call double @llvm.fmuladd.f64(double %1, double 0x3E072BCFD6295640, double 0x3EB2C845F439D142)
%6 = tail call double @llvm.fmuladd.f64(double %1, double %5, double 0xBEF8A32DF0E2C663)
%7 = tail call double @llvm.fmuladd.f64(double %1, double %6, double 0x3F66BD8ADC91CDB6)
%8 = tail call double @llvm.fmuladd.f64(double %1, double %7, double 1.000000e+00)
%9 = tail call double @llvm.fmuladd.f64(double %1, double 0xBDB3E9ED19245025, double 0x3E105E675DDF54DA)
%10 = tail call double @llvm.fmuladd.f64(double %1, double %9, double 0x3E80F36B6915609B)
%11 = tail call double @llvm.fmuladd.f64(double %1, double %10, double 0xBEFCFC614ABDE6BC)
%12 = tail call double @llvm.fmuladd.f64(double %1, double %11, double 0xBF7ECECF594A4D0F)
%13 = tail call double @llvm.fmuladd.f64(double %0, double 0x3ED6BAF523B168F6, double %12)
%14 = tail call double @llvm.fmuladd.f64(double %1, double 0x3D87954B5454878B, double 0xBDC97A08262FF761)
%15 = tail call double @llvm.fmuladd.f64(double %1, double %14, double 0xBE407A356B462757)
%16 = tail call double @llvm.fmuladd.f64(double %1, double %15, double 0x3E998309C9A5AF2D)
%17 = tail call double @llvm.fmuladd.f64(double %1, double %16, double 0xBF0151A0492353E4)
%18 = tail call double @llvm.fmuladd.f64(double %4, double %17, double %13)
%19 = tail call double @llvm.fmuladd.f64(double %0, double %18, double %8)
%20 = tail call double @llvm.fmuladd.f64(double %1, double 0xBD80FC412ACF34B7, double 0x3E2B69FE4FF2D058)
%21 = tail call double @llvm.fmuladd.f64(double %1, double 0x3E0557A0F47894E8, double 0xBE7DAA2C37AA778F)
%22 = tail call double @llvm.fmuladd.f64(double %1, double 0xBD14FEFF084CF710, double 0xBDB55949A24CF361)
%23 = tail call double @llvm.fmuladd.f64(double %0, double 0x3D09359B5FDCD33E, double %22)
%24 = tail call double @llvm.fmuladd.f64(double %1, double %23, double 0xBDDEC25813BB665A)
%25 = tail call double @llvm.fmuladd.f64(double %1, double 0x3F535CDA0AA5141F, double 0xBFA01DD4BE07158E)
%26 = tail call double @llvm.fmuladd.f64(double %1, double %25, double 0x4006B832E6480B06)
%27 = tail call double @llvm.fmuladd.f64(double %1, double %26, double 0x408F3EBC998D192F)
%28 = tail call double @llvm.fmuladd.f64(double %1, double 0x3F2E830001452CFC, double 0xBF9E94ED844FA0F2)
%29 = tail call double @llvm.fmuladd.f64(double %1, double %28, double 0xC01ACAC0CAF432E4)
%30 = tail call double @llvm.fmuladd.f64(double %1, double 0x3E86144FEF843373, double 0xBEEDED10CC84A6D6)
%31 = tail call double @llvm.fmuladd.f64(double %1, double %30, double 0x3F40B259AA6BB2BF)
%32 = tail call double @llvm.fmuladd.f64(double %1, double %31, double 0xBFA46C3AB1582DFC)
%33 = tail call double @llvm.fmuladd.f64(double %4, double %32, double %29)
%34 = tail call double @llvm.fmuladd.f64(double %0, double %33, double %27)
%35 = tail call double @llvm.fmuladd.f64(double %1, double 0x3ECF41A20BDDB36E, double 0xBF3684CD73B033D1)
%36 = tail call double @llvm.fmuladd.f64(double %1, double %35, double 0xBF96DE61E08152B8)
%37 = tail call double @llvm.fmuladd.f64(double %1, double 0x3EA713287F3E0D0D, double 0xBF27AE9496D640EA)
%38 = insertelement <2 x double> poison, double %0, i64 0
%39 = insertelement <2 x double> %38, double %1, i64 1
%40 = insertelement <2 x double> <double poison, double 0x3C9175F16D32352C>, double %37, i64 0
%41 = insertelement <2 x double> <double poison, double 0xBCD5A05D6377C5EB>, double %36, i64 0
%42 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %39, <2 x double> %40, <2 x double> %41)
%43 = insertelement <2 x double> poison, double %1, i64 0
%44 = shufflevector <2 x double> %43, <2 x double> poison, <2 x i32> zeroinitializer
%45 = insertelement <2 x double> <double poison, double 0xBDA757D23461E618>, double %20, i64 0
%46 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %44, <2 x double> %45, <2 x double> <double 0xBE958F74D806A8A4, double 0xBE55599498FA7240>)
%47 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %44, <2 x double> %46, <2 x double> <double 0xBEFCC0FF745ACC9B, double 0xBE94B77B40758AB4>)
%48 = shufflevector <2 x double> %38, <2 x double> poison, <2 x i32> zeroinitializer
%49 = insertelement <2 x double> <double poison, double 0x3DE550DC0324AE3D>, double %21, i64 0
%50 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %48, <2 x double> %49, <2 x double> %47)
%51 = fmul <2 x double> %42, <double 5.000000e-01, double 2.000000e+00>
%52 = extractelement <2 x double> %51, i64 0
%53 = fmul <2 x double> %51, %51
%54 = extractelement <2 x double> %53, i64 0
%55 = fneg double %34
%56 = extractelement <2 x double> %50, i64 1
%57 = tail call double @llvm.fmuladd.f64(double %55, double %56, double %54)
%58 = tail call double @sqrt(double %57)
%59 = extractelement <2 x double> %51, i64 1
%60 = fmul double %59, %34
%61 = fmul double %52, %60
%62 = fdiv double %61, %56
%63 = fneg double %24
%64 = tail call double @llvm.fmuladd.f64(double %63, double %34, double %62)
%65 = fdiv double %64, %56
%66 = fadd double %19, %65
%67 = extractelement <2 x double> %42, i64 1
%68 = fmul double %67, 4.000000e+00
%69 = fmul double %68, %54
%70 = fdiv double %69, %56
%71 = fneg double %67
%72 = tail call double @llvm.fmuladd.f64(double %71, double %34, double %70)
%73 = fmul double %24, -2.000000e+00
%74 = tail call double @llvm.fmuladd.f64(double %73, double %52, double %72)
%75 = fdiv double %74, %56
%76 = fsub double %52, %58
%77 = fadd double %52, %58
%78 = extractelement <2 x double> %50, i64 0
%79 = fadd double %78, %75
%80 = fneg double %79
%81 = fmul double %52, %80
%82 = tail call double @llvm.fmuladd.f64(double %66, double %56, double %81)
%83 = fsub double %77, %76
%84 = fmul double %56, %83
%85 = fdiv double %82, %84
%86 = fmul double %59, %52
%87 = fdiv double %86, %56
%88 = fsub double %24, %87
%89 = fmul double %67, 5.000000e-01
%90 = tail call double @llvm.fmuladd.f64(double %89, double %2, double %88)
%91 = fmul double %90, %2
%92 = fdiv double %91, %56
%93 = extractelement <2 x double> %50, i64 1
%94 = fmul double %93, 2.000000e+00
%95 = fdiv double %79, %94
%96 = fmul double %56, %2
%97 = tail call double @llvm.fmuladd.f64(double %52, double 2.000000e+00, double %96)
%98 = fmul double %97, %2
%99 = fdiv double %98, %34
%100 = fadd double %99, 1.000000e+00
%101 = tail call double @log(double %100)
%102 = tail call double @llvm.fmuladd.f64(double %95, double %101, double %92)
%103 = fmul double %96, %83
%104 = tail call double @llvm.fmuladd.f64(double %56, double %2, double %77)
%105 = fmul double %76, %104
%106 = fdiv double %103, %105
%107 = fadd double %106, 1.000000e+00
%108 = tail call double @log(double %107)
%109 = tail call double @llvm.fmuladd.f64(double %85, double %108, double %102)
%110 = fmul double %109, 1.000000e+04
ret double %110
}