#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ fabs(double);
double sqrt(int /*<<< orphan*/);
double specific_volume_anomaly(double salinity, double temperature,
                               double pressure, double *sigma) {
  double sig, sr, r1, r2, r3, r4, a, b, c, d, e, a1, b1, aw, bw;
  double ko, kw, k35, v350p, sva, gam, pk, dr35p, dk, dvan;
  double r3500 = 1028.1063;
  double dr350 = 28.106331;
  r4 = 4.8314e-4;
  pressure = pressure / 10.;
  sr = sqrt(fabs(salinity));
  r1 = ((((6.536332e-9 * temperature - 1.120083e-6) * temperature +
          1.001685e-4) *
             temperature -
         9.095290e-3) *
            temperature +
        6.793952e-2) *
           temperature -
       28.263737;
  r2 = (((5.3875e-9 * temperature - 8.2467e-7) * temperature + 7.6438e-5) *
            temperature -
        4.0899e-3) *
           temperature +
       8.24493e-1;
  r3 = (-1.6546e-6 * temperature + 1.0227e-4) * temperature - 5.72466e-3;
  sig = (r4 * salinity + r3 * sr + r2) * salinity + r1;
  v350p = 1.0 / r3500;
  sva = -sig * v350p / (r3500 + sig);
  *sigma = sig + dr350;
  if (pressure == 0.0)
    return sva * 1.0e+8;
  e = (9.1697e-10 * temperature + 2.0816e-8) * temperature - 9.9348e-7;
  bw = (5.2787e-8 * temperature - 6.12293e-6) * temperature + 3.47718e-5;
  b = bw + e * salinity;
  d = 1.91075e-4;
  c = (-1.6078e-6 * temperature - 1.0981e-5) * temperature + 2.2838e-3;
  aw = ((-5.77905e-7 * temperature + 1.16092e-4) * temperature + 1.43713e-3) *
           temperature -
       0.1194975;
  a = (d * sr + c) * salinity + aw;
  b1 = (-5.3009e-4 * temperature + 1.6483e-2) * temperature + 7.944e-2;
  a1 = ((-6.1670e-5 * temperature + 1.09987e-2) * temperature - 0.603459) *
           temperature +
       54.6746;
  kw = (((-5.155288e-5 * temperature + 1.360477e-2) * temperature - 2.327105) *
            temperature +
        148.4206) *
           temperature -
       1930.06;
  ko = (b1 * sr + a1) * salinity + kw;
  dk = (b * pressure + a) * pressure + ko;
  k35 = (5.03217e-5 * pressure + 3.359406) * pressure + 21582.27;
  gam = pressure / k35;
  pk = 1.0 - gam;
  sva = sva * pk + (v350p + sva) * pressure * dk / (k35 * (k35 + dk));
  v350p = v350p * pk;
  dr35p = gam / v350p;
  dvan = sva / (v350p * (v350p + sva));
  *sigma = dr350 + dr35p - dvan;
  return sva * 1.0e+8;
}


x86 assembly (clang, -O0):
<specific_volume_anomaly>:
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
mov    %rdi,-0x28(%rbp)
movsd  0xf4a(%rip),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0xf32(%rip),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0xf1a(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xf00(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1030 <fabs@plt>
mov    %eax,%edi
call   1040 <sqrt@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xec4(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xec0(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe9b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe7e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe61(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe44(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xe1e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe1a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdf5(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdd8(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdbb(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xd95(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd91(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd6c(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xd1b(%rip),%xmm0
divsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm1
ff
addsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
addsd  -0x100(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1379 <specific_volume_anomaly+0x259>
jp     1379 <specific_volume_anomaly+0x259>
movsd  0xd31(%rip),%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x8(%rbp)
jmp    1781 <specific_volume_anomaly+0x661>
movsd  -0x18(%rbp),%xmm0
movsd  0xdf2(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdee(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdc9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xda3(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd9f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd7a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xd3f(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xd1d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd19(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcf4(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xcce(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcca(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xca5(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc88(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xc2e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc2a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc05(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0xbdc(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbd8(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbb3(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb96(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0xb6d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb69(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb44(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb27(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb0a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xa73(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa6f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa4a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0x981(%rip),%xmm0
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
addsd  -0xc8(%rbp),%xmm1
ff
mulsd  -0x20(%rbp),%xmm1
mulsd  -0xe8(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm3
ff
movsd  -0xb8(%rbp),%xmm4
ff
addsd  -0xe8(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
divsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm2
ff
addsd  -0xc8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x924(%rip),%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<specific_volume_anomaly>:
push   %rbx
sub    $0x20,%rsp
mov    %rdi,%rbx
movsd  %xmm1,0x8(%rsp)
movsd  %xmm0,(%rsp)
divsd  0xec5(%rip),%xmm2
movapd %xmm2,0x10(%rsp)
call   1030 <fabs@plt>
mov    %eax,%edi
call   1040 <sqrt@plt>
movsd  0x8(%rsp),%xmm1
movsd  (%rsp),%xmm10
movapd 0x10(%rsp),%xmm8
movsd  0xea0(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe9c(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe98(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe94(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe90(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe8c(%rip),%xmm2
movsd  0xe8c(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe88(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe84(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe80(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe7c(%rip),%xmm4
movsd  0xe7c(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  0xe78(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  0xe74(%rip),%xmm5
movapd %xmm0,%xmm9
mulsd  %xmm0,%xmm5
movsd  0xe6b(%rip),%xmm3
mulsd  %xmm10,%xmm3
addsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm10,%xmm3
addsd  %xmm2,%xmm3
movsd  0xe55(%rip),%xmm0
mulsd  %xmm3,%xmm0
movsd  0xe51(%rip),%xmm2
addsd  %xmm3,%xmm2
divsd  %xmm2,%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm8
jne    1259 <specific_volume_anomaly+0x139>
jp     1259 <specific_volume_anomaly+0x139>
addsd  0xe3c(%rip),%xmm3
jmp    1460 <specific_volume_anomaly+0x340>
movsd  0xe37(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe33(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xe2f(%rip),%xmm2
movsd  0xe2f(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xe2b(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  0xe27(%rip),%xmm3
mulsd  %xmm10,%xmm2
movsd  0xe22(%rip),%xmm6
mulsd  %xmm1,%xmm6
addsd  0xe1e(%rip),%xmm6
addsd  %xmm3,%xmm2
mulsd  %xmm1,%xmm6
addsd  0xe16(%rip),%xmm6
movsd  0xe16(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  0xe12(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  0xe0e(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  0xe0a(%rip),%xmm5
movsd  0xe0a(%rip),%xmm3
mulsd  %xmm9,%xmm3
movsd  0xe05(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  0xe01(%rip),%xmm4
movsd  0xe09(%rip),%xmm7
mulsd  %xmm1,%xmm7
addsd  0xe05(%rip),%xmm7
addsd  %xmm6,%xmm3
mulsd  %xmm1,%xmm7
addsd  0xdfd(%rip),%xmm7
movsd  0xe05(%rip),%xmm6
mulsd  %xmm1,%xmm6
addsd  0xe01(%rip),%xmm6
mulsd  %xmm1,%xmm4
mulsd  %xmm1,%xmm6
addsd  0xdf9(%rip),%xmm6
mulsd  %xmm1,%xmm7
mulsd  %xmm1,%xmm6
addsd  0xdf1(%rip),%xmm6
mulsd  %xmm1,%xmm6
mulsd  %xmm10,%xmm3
addsd  0xda0(%rip),%xmm4
addsd  0xdb8(%rip),%xmm7
addsd  0xdd8(%rip),%xmm6
addsd  %xmm5,%xmm3
mulsd  %xmm9,%xmm4
addsd  %xmm7,%xmm4
mulsd  %xmm10,%xmm4
addsd  %xmm6,%xmm4
movapd %xmm8,%xmm1
unpcklpd %xmm2,%xmm1
movapd 0xdd1(%rip),%xmm2
unpcklpd %xmm8,%xmm2
mulpd  %xmm1,%xmm2
movapd 0xdd0(%rip),%xmm1
unpcklpd %xmm3,%xmm1
addpd  %xmm2,%xmm1
movapd %xmm8,%xmm2
unpcklpd %xmm8,%xmm2
mulpd  %xmm1,%xmm2
movapd 0xdc2(%rip),%xmm3
unpcklpd %xmm4,%xmm3
addpd  %xmm2,%xmm3
movapd %xmm8,%xmm1
divsd  %xmm3,%xmm1
movsd  0xd71(%rip),%xmm2
subsd  %xmm1,%xmm2
movsd  0xd6d(%rip),%xmm4
movapd %xmm0,%xmm5
addsd  %xmm4,%xmm5
mulsd  %xmm8,%xmm5
movapd %xmm3,%xmm6
unpckhpd %xmm3,%xmm6
mulsd  %xmm6,%xmm5
addsd  %xmm3,%xmm6
mulsd  %xmm3,%xmm6
divsd  %xmm6,%xmm5
mulsd  %xmm2,%xmm0
addsd  %xmm5,%xmm0
mulsd  %xmm4,%xmm2
movapd %xmm2,%xmm3
addsd  %xmm0,%xmm3
mulsd  %xmm2,%xmm3
unpcklpd %xmm0,%xmm1
unpcklpd %xmm3,%xmm2
divpd  %xmm2,%xmm1
movsd  0xc3c(%rip),%xmm3
addsd  %xmm1,%xmm3
unpckhpd %xmm1,%xmm1
subsd  %xmm1,%xmm3
movsd  %xmm3,(%rbx)
mulsd  0xd0c(%rip),%xmm0
add    $0x20,%rsp
pop    %rbx
ret

LLVM IR (-O0):
define double @specific_volume_anomaly(double %0, double %1, double %2, double* %3) {
%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
store double %0, double* %6
store double %1, double* %7
store double %2, double* %8
store double* %3, double** %9
store double 0x4090106CD9E83E42, double* %35
store double 0x403C1B3882278D0D, double* %36
store double 4.831400e-04, double* %15
%37 = load double, double* %8
%38 = fdiv double %37, 1.000000e+01
store double %38, double* %8
%39 = load double, double* %6
%40 = call i32 @fabs(double %39)
%41 = call double @sqrt(i32 %40)
store double %41, double* %11
%42 = load double, double* %7
%43 = call double @llvm.fmuladd.f64(double 0x3E3C12C5E5C0CC50, double %42, double 0xBEB2CAB84856C8D1)
%44 = load double, double* %7
%45 = call double @llvm.fmuladd.f64(double %43, double %44, double 0x3F1A4231B9F290BD)
%46 = load double, double* %7
%47 = call double @llvm.fmuladd.f64(double %45, double %46, double -9.095290e-03)
%48 = load double, double* %7
%49 = call double @llvm.fmuladd.f64(double %47, double %48, double 0x3FB1647C00818526)
%50 = load double, double* %7
%51 = call double @llvm.fmuladd.f64(double %49, double %50, double 0xC03C4384449DBEC2)
store double %51, double* %12
%52 = load double, double* %7
%53 = call double @llvm.fmuladd.f64(double 5.387500e-09, double %52, double -8.246700e-07)
%54 = load double, double* %7
%55 = call double @llvm.fmuladd.f64(double %53, double %54, double 7.643800e-05)
%56 = load double, double* %7
%57 = call double @llvm.fmuladd.f64(double %55, double %56, double -4.089900e-03)
%58 = load double, double* %7
%59 = call double @llvm.fmuladd.f64(double %57, double %58, double 8.244930e-01)
store double %59, double* %13
%60 = load double, double* %7
%61 = call double @llvm.fmuladd.f64(double -1.654600e-06, double %60, double 1.022700e-04)
%62 = load double, double* %7
%63 = call double @llvm.fmuladd.f64(double %61, double %62, double -5.724660e-03)
store double %63, double* %14
%64 = load double, double* %15
%65 = load double, double* %6
%66 = load double, double* %14
%67 = load double, double* %11
%68 = fmul double %66, %67
%69 = call double @llvm.fmuladd.f64(double %64, double %65, double %68)
%70 = load double, double* %13
%71 = fadd double %69, %70
%72 = load double, double* %6
%73 = load double, double* %12
%74 = call double @llvm.fmuladd.f64(double %71, double %72, double %73)
store double %74, double* %10
%75 = load double, double* %35
%76 = fdiv double 1.000000e+00, %75
store double %76, double* %28
%77 = load double, double* %10
%78 = fneg double %77
%79 = load double, double* %28
%80 = fmul double %78, %79
%81 = load double, double* %35
%82 = load double, double* %10
%83 = fadd double %81, %82
%84 = fdiv double %80, %83
store double %84, double* %29
%85 = load double, double* %10
%86 = load double, double* %36
%87 = fadd double %85, %86
%88 = load double*, double** %9
store double %87, double* %88
%89 = load double, double* %8
%90 = fcmp oeq double %89, 0.000000e+00
br i1 %90, label %91, label %94
91: ; preds = %4
%92 = load double, double* %29
%93 = fmul double %92, 1.000000e+08
store double %93, double* %5
br label %202
94: ; preds = %4
%95 = load double, double* %7
%96 = call double @llvm.fmuladd.f64(double 0x3E0F81C0E00A27D4, double %95, double 2.081600e-08)
%97 = load double, double* %7
%98 = call double @llvm.fmuladd.f64(double %96, double %97, double 0xBEB0AAF6CFDCCCF7)
store double %98, double* %20
%99 = load double, double* %7
%100 = call double @llvm.fmuladd.f64(double 5.278700e-08, double %99, double 0xBED9AE722EC9A99B)
%101 = load double, double* %7
%102 = call double @llvm.fmuladd.f64(double %100, double %101, double 3.477180e-05)
store double %102, double* %24
%103 = load double, double* %24
%104 = load double, double* %20
%105 = load double, double* %6
%106 = call double @llvm.fmuladd.f64(double %104, double %105, double %103)
store double %106, double* %17
store double 1.910750e-04, double* %19
%107 = load double, double* %7
%108 = call double @llvm.fmuladd.f64(double -1.607800e-06, double %107, double -1.098100e-05)
%109 = load double, double* %7
%110 = call double @llvm.fmuladd.f64(double %108, double %109, double 2.283800e-03)
store double %110, double* %18
%111 = load double, double* %7
%112 = call double @llvm.fmuladd.f64(double -5.779050e-07, double %111, double 1.160920e-04)
%113 = load double, double* %7
%114 = call double @llvm.fmuladd.f64(double %112, double %113, double 1.437130e-03)
%115 = load double, double* %7
%116 = call double @llvm.fmuladd.f64(double %114, double %115, double 0xBFBE97635E74299E)
store double %116, double* %23
%117 = load double, double* %19
%118 = load double, double* %11
%119 = load double, double* %18
%120 = call double @llvm.fmuladd.f64(double %117, double %118, double %119)
%121 = load double, double* %6
%122 = load double, double* %23
%123 = call double @llvm.fmuladd.f64(double %120, double %121, double %122)
store double %123, double* %16
%124 = load double, double* %7
%125 = call double @llvm.fmuladd.f64(double -5.300900e-04, double %124, double 1.648300e-02)
%126 = load double, double* %7
%127 = call double @llvm.fmuladd.f64(double %125, double %126, double 0x3FB4562E09FE8683)
store double %127, double* %22
%128 = load double, double* %7
%129 = call double @llvm.fmuladd.f64(double -6.167000e-05, double %128, double 1.099870e-02)
%130 = load double, double* %7
%131 = call double @llvm.fmuladd.f64(double %129, double %130, double -6.034590e-01)
%132 = load double, double* %7
%133 = call double @llvm.fmuladd.f64(double %131, double %132, double 5.467460e+01)
store double %133, double* %21
%134 = load double, double* %7
%135 = call double @llvm.fmuladd.f64(double 0xBF0B074F780AF01D, double %134, double 0x3F8BDCD151C1BEA7)
%136 = load double, double* %7
%137 = call double @llvm.fmuladd.f64(double %135, double %136, double 0xC0029DE939EADD59)
%138 = load double, double* %7
%139 = call double @llvm.fmuladd.f64(double %137, double %138, double 0x40628D758E219653)
%140 = load double, double* %7
%141 = call double @llvm.fmuladd.f64(double %139, double %140, double -1.930060e+03)
store double %141, double* %26
%142 = load double, double* %22
%143 = load double, double* %11
%144 = load double, double* %21
%145 = call double @llvm.fmuladd.f64(double %142, double %143, double %144)
%146 = load double, double* %6
%147 = load double, double* %26
%148 = call double @llvm.fmuladd.f64(double %145, double %146, double %147)
store double %148, double* %25
%149 = load double, double* %17
%150 = load double, double* %8
%151 = load double, double* %16
%152 = call double @llvm.fmuladd.f64(double %149, double %150, double %151)
%153 = load double, double* %8
%154 = load double, double* %25
%155 = call double @llvm.fmuladd.f64(double %152, double %153, double %154)
store double %155, double* %33
%156 = load double, double* %8
%157 = call double @llvm.fmuladd.f64(double 5.032170e-05, double %156, double 0x400AE01040BFE3B0)
%158 = load double, double* %8
%159 = call double @llvm.fmuladd.f64(double %157, double %158, double 0x40D5139147AE147B)
store double %159, double* %27
%160 = load double, double* %8
%161 = load double, double* %27
%162 = fdiv double %160, %161
store double %162, double* %30
%163 = load double, double* %30
%164 = fsub double 1.000000e+00, %163
store double %164, double* %31
%165 = load double, double* %29
%166 = load double, double* %31
%167 = load double, double* %28
%168 = load double, double* %29
%169 = fadd double %167, %168
%170 = load double, double* %8
%171 = fmul double %169, %170
%172 = load double, double* %33
%173 = fmul double %171, %172
%174 = load double, double* %27
%175 = load double, double* %27
%176 = load double, double* %33
%177 = fadd double %175, %176
%178 = fmul double %174, %177
%179 = fdiv double %173, %178
%180 = call double @llvm.fmuladd.f64(double %165, double %166, double %179)
store double %180, double* %29
%181 = load double, double* %28
%182 = load double, double* %31
%183 = fmul double %181, %182
store double %183, double* %28
%184 = load double, double* %30
%185 = load double, double* %28
%186 = fdiv double %184, %185
store double %186, double* %32
%187 = load double, double* %29
%188 = load double, double* %28
%189 = load double, double* %28
%190 = load double, double* %29
%191 = fadd double %189, %190
%192 = fmul double %188, %191
%193 = fdiv double %187, %192
store double %193, double* %34
%194 = load double, double* %36
%195 = load double, double* %32
%196 = fadd double %194, %195
%197 = load double, double* %34
%198 = fsub double %196, %197
%199 = load double*, double** %9
store double %198, double* %199
%200 = load double, double* %29
%201 = fmul double %200, 1.000000e+08
store double %201, double* %5
br label %202
202: ; preds = %94, %91
%203 = load double, double* %5
ret double %203
}

LLVM IR (-O2):
define double @specific_volume_anomaly(double %0, double %1, double %2, double* nocapture writeonly %3) {
%5 = fdiv double %2, 1.000000e+01
%6 = tail call i32 @fabs(double %0)
%7 = tail call double @sqrt(i32 %6)
%8 = tail call double @llvm.fmuladd.f64(double %1, double 0x3E3C12C5E5C0CC50, double 0xBEB2CAB84856C8D1)
%9 = tail call double @llvm.fmuladd.f64(double %8, double %1, double 0x3F1A4231B9F290BD)
%10 = tail call double @llvm.fmuladd.f64(double %9, double %1, double -9.095290e-03)
%11 = tail call double @llvm.fmuladd.f64(double %10, double %1, double 0x3FB1647C00818526)
%12 = tail call double @llvm.fmuladd.f64(double %11, double %1, double 0xC03C4384449DBEC2)
%13 = tail call double @llvm.fmuladd.f64(double %1, double 5.387500e-09, double -8.246700e-07)
%14 = tail call double @llvm.fmuladd.f64(double %13, double %1, double 7.643800e-05)
%15 = tail call double @llvm.fmuladd.f64(double %14, double %1, double -4.089900e-03)
%16 = tail call double @llvm.fmuladd.f64(double %15, double %1, double 8.244930e-01)
%17 = tail call double @llvm.fmuladd.f64(double %1, double -1.654600e-06, double 1.022700e-04)
%18 = tail call double @llvm.fmuladd.f64(double %17, double %1, double -5.724660e-03)
%19 = fmul double %18, %7
%20 = tail call double @llvm.fmuladd.f64(double %0, double 4.831400e-04, double %19)
%21 = fadd double %16, %20
%22 = tail call double @llvm.fmuladd.f64(double %21, double %0, double %12)
%23 = fmul double %22, 0xBF4FDF47E2E4FEEB
%24 = fadd double %22, 0x4090106CD9E83E42
%25 = fdiv double %23, %24
%26 = fadd double %22, 0x403C1B3882278D0D
%27 = fcmp oeq double %5, 0.000000e+00
br i1 %27, label %83, label %28
28: ; preds = %4
%29 = tail call double @llvm.fmuladd.f64(double %1, double 0x3E0F81C0E00A27D4, double 2.081600e-08)
%30 = tail call double @llvm.fmuladd.f64(double %29, double %1, double 0xBEB0AAF6CFDCCCF7)
%31 = tail call double @llvm.fmuladd.f64(double %1, double 5.278700e-08, double 0xBED9AE722EC9A99B)
%32 = tail call double @llvm.fmuladd.f64(double %31, double %1, double 3.477180e-05)
%33 = tail call double @llvm.fmuladd.f64(double %30, double %0, double %32)
%34 = tail call double @llvm.fmuladd.f64(double %1, double -1.607800e-06, double -1.098100e-05)
%35 = tail call double @llvm.fmuladd.f64(double %34, double %1, double 2.283800e-03)
%36 = tail call double @llvm.fmuladd.f64(double %1, double -5.779050e-07, double 1.160920e-04)
%37 = tail call double @llvm.fmuladd.f64(double %36, double %1, double 1.437130e-03)
%38 = tail call double @llvm.fmuladd.f64(double %37, double %1, double 0xBFBE97635E74299E)
%39 = tail call double @llvm.fmuladd.f64(double %7, double 1.910750e-04, double %35)
%40 = tail call double @llvm.fmuladd.f64(double %39, double %0, double %38)
%41 = tail call double @llvm.fmuladd.f64(double %1, double -5.300900e-04, double 1.648300e-02)
%42 = tail call double @llvm.fmuladd.f64(double %41, double %1, double 0x3FB4562E09FE8683)
%43 = tail call double @llvm.fmuladd.f64(double %1, double -6.167000e-05, double 1.099870e-02)
%44 = tail call double @llvm.fmuladd.f64(double %43, double %1, double -6.034590e-01)
%45 = tail call double @llvm.fmuladd.f64(double %44, double %1, double 5.467460e+01)
%46 = tail call double @llvm.fmuladd.f64(double %1, double 0xBF0B074F780AF01D, double 0x3F8BDCD151C1BEA7)
%47 = tail call double @llvm.fmuladd.f64(double %46, double %1, double 0xC0029DE939EADD59)
%48 = tail call double @llvm.fmuladd.f64(double %47, double %1, double 0x40628D758E219653)
%49 = tail call double @llvm.fmuladd.f64(double %48, double %1, double -1.930060e+03)
%50 = tail call double @llvm.fmuladd.f64(double %42, double %7, double %45)
%51 = tail call double @llvm.fmuladd.f64(double %50, double %0, double %49)
%52 = insertelement <2 x double> poison, double %5, i64 0
%53 = insertelement <2 x double> %52, double %33, i64 1
%54 = insertelement <2 x double> <double 5.032170e-05, double poison>, double %5, i64 1
%55 = insertelement <2 x double> <double 0x400AE01040BFE3B0, double poison>, double %40, i64 1
%56 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %53, <2 x double> %54, <2 x double> %55)
%57 = shufflevector <2 x double> %52, <2 x double> poison, <2 x i32> zeroinitializer
%58 = insertelement <2 x double> <double 0x40D5139147AE147B, double poison>, double %51, i64 1
%59 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %56, <2 x double> %57, <2 x double> %58)
%60 = extractelement <2 x double> %59, i64 0
%61 = fdiv double %5, %60
%62 = fsub double 1.000000e+00, %61
%63 = fadd double %25, 0x3F4FDF47E2E4FEEB
%64 = fmul double %5, %63
%65 = extractelement <2 x double> %59, i64 1
%66 = fmul double %65, %64
%67 = fadd double %60, %65
%68 = fmul double %60, %67
%69 = fdiv double %66, %68
%70 = tail call double @llvm.fmuladd.f64(double %25, double %62, double %69)
%71 = fmul double %62, 0x3F4FDF47E2E4FEEB
%72 = fadd double %71, %70
%73 = fmul double %71, %72
%74 = insertelement <2 x double> poison, double %61, i64 0
%75 = insertelement <2 x double> %74, double %70, i64 1
%76 = insertelement <2 x double> poison, double %71, i64 0
%77 = insertelement <2 x double> %76, double %73, i64 1
%78 = fdiv <2 x double> %75, %77
%79 = extractelement <2 x double> %78, i64 0
%80 = fadd double %79, 0x403C1B3882278D0D
%81 = extractelement <2 x double> %78, i64 1
%82 = fsub double %80, %81
br label %83
83: ; preds = %4, %28
%84 = phi double [ %82, %28 ], [ %26, %4 ]
%85 = phi double [ %70, %28 ], [ %25, %4 ]
store double %84, double* %3
%86 = fmul double %85, 1.000000e+08
ret double %86
}