void R_Vosko(rho, Vc, Ec, Pc) double rho[], Vc[], *Ec, *Pc;
{
  int i;
  double onesixth, onethird, fourthird, twothird;
  double two_to_onethird;
  double pi, rs_scale;
  double rs, n;
  double x, xxp, dxxp;
  double ec_p;
  double uc_p;
  int Ngrid;
  double *ec_functional;
  double *tmp;
  onesixth = 1.0 / 6.0;
  onethird = 1.0 / 3.0;
  fourthird = 4.0 / 3.0;
  twothird = 2.0 / 3.0;
  two_to_onethird = pow(2.0, onethird);
  pi = 4.0 * atan(1.0);
  rs_scale = pow((0.75 / pi), (1.0 / 3.0));
  Ngrid = N_LogGrid();
  ec_functional = alloc_LogGrid();
  tmp = alloc_LogGrid();
  for (i = 0; i < Ngrid; ++i) {
    n = rho[i] / (4.0 * pi) + 1.0e-80;
    rs = rs_scale / pow(n, onethird);
    x = sqrt(rs);
    xxp = rs + 3.727440e+00 * x + 1.293520e+01;
    dxxp = 2.0 * x + 3.727440e+00;
    ec_p = 3.109070e-02 * log(rs / xxp) +
           9.690228e-04 * log((x + 1.049800e-01) * (x + 1.049800e-01) / xxp) +
           3.878329e-02 * atan(3.075995e+00 / (x + 1.863720e+00));
    uc_p = ec_p -
           onesixth * x *
               (6.218140e-02 / x + 1.938045e-03 / (x + 1.049800e-01) +
                -3.205972e-02 * dxxp / xxp +
                -1.192972e-01 /
                    ((x + 1.863720e+00) * (x + 1.863720e+00) + 9.461748e+00));
    ec_functional[i] = ec_p;
    Vc[i] = uc_p;
  }
  for (i = 0; i < Ngrid; ++i)
    tmp[i] = (rho[i]) * ec_functional[i];
  *Ec = Integrate_LogGrid(tmp);
  for (i = 0; i < Ngrid; ++i)
    tmp[i] = (rho[i]) * Vc[i];
  *Pc = Integrate_LogGrid(tmp);
  dealloc_LogGrid(ec_functional);
  dealloc_LogGrid(tmp);
}


x86 assembly (clang, -O0):
<R_Vosko>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
movsd  0xe95(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe50(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe73(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe5e(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm1
movsd  0xe44(%rip),%xmm0
call   1060 <pow@plt>
movsd  %xmm0,-0x50(%rbp)
movsd  0xe2a(%rip),%xmm0
call   1030 <atan@plt>
movaps %xmm0,%xmm1
movsd  0xe12(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xdf9(%rip),%xmm0
divsd  -0x58(%rbp),%xmm0
movsd  0xde4(%rip),%xmm1
call   1060 <pow@plt>
movsd  %xmm0,-0x60(%rbp)
mov    $0x0,%al
call   10a0 <N_LogGrid@plt>
mov    %eax,-0x9c(%rbp)
mov    $0x0,%al
call   1090 <alloc_LogGrid@plt>
cltq
mov    %rax,-0xa8(%rbp)
mov    $0x0,%al
call   1090 <alloc_LogGrid@plt>
cltq
mov    %rax,-0xb0(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x9c(%rbp),%eax
jge    14bc <R_Vosko+0x33c>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xd92(%rip),%xmm1
mulsd  -0x58(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xe19(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x68(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
movsd  0xdaf(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xda7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x78(%rbp),%xmm0
addsd  %xmm0,%xmm0
movsd  0xd85(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
divsd  -0x80(%rbp),%xmm0
call   1050 <log@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xd2a(%rip),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  0xd1d(%rip),%xmm1
addsd  -0x78(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x80(%rbp),%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm2
movsd  -0xc0(%rbp),%xmm0
ff
movsd  0xd1f(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0xd0b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xcbb(%rip),%xmm1
addsd  -0x78(%rbp),%xmm1
movsd  0xcde(%rip),%xmm0
divsd  %xmm1,%xmm0
call   1030 <atan@plt>
movsd  -0xb8(%rbp),%xmm1
ff
movsd  0xcbd(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x30(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  0xc8b(%rip),%xmm2
divsd  -0x78(%rbp),%xmm2
movsd  0xc76(%rip),%xmm4
addsd  -0x78(%rbp),%xmm4
movsd  0xc61(%rip),%xmm3
divsd  %xmm4,%xmm3
addsd  %xmm3,%xmm2
movsd  0xc49(%rip),%xmm3
mulsd  -0x88(%rbp),%xmm3
ff
divsd  -0x80(%rbp),%xmm3
addsd  %xmm3,%xmm2
movsd  0xc28(%rip),%xmm4
addsd  -0x78(%rbp),%xmm4
movsd  0xc1b(%rip),%xmm3
addsd  -0x78(%rbp),%xmm3
mulsd  %xmm3,%xmm4
movsd  0xc02(%rip),%xmm3
addsd  %xmm3,%xmm4
movsd  0xbee(%rip),%xmm3
divsd  %xmm4,%xmm3
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mov    -0xa8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    125a <R_Vosko+0xda>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x9c(%rbp),%eax
jge    150d <R_Vosko+0x38d>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0xa8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0xb0(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    14c3 <R_Vosko+0x343>
mov    -0xb0(%rbp),%rdi
mov    $0x0,%al
call   1040 <Integrate_LogGrid@plt>
cvtsi2sd %eax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x9c(%rbp),%eax
jge    1575 <R_Vosko+0x3f5>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0xb0(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    152e <R_Vosko+0x3ae>
mov    -0xb0(%rbp),%rdi
mov    $0x0,%al
call   1040 <Integrate_LogGrid@plt>
cvtsi2sd %eax,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0xa8(%rbp),%rdi
mov    $0x0,%al
call   1080 <dealloc_LogGrid@plt>
mov    -0xb0(%rbp),%rdi
mov    $0x0,%al
call   1080 <dealloc_LogGrid@plt>
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<R_Vosko>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %rcx,%r14
mov    %rdx,0x18(%rsp)
mov    %rsi,%r12
mov    %rdi,%rbx
movsd  0xe5c(%rip),%xmm0
call   1030 <atan@plt>
xor    %eax,%eax
call   10a0 <N_LogGrid@plt>
mov    %eax,%ebp
xor    %eax,%eax
call   1090 <alloc_LogGrid@plt>
movslq %eax,%r15
xor    %eax,%eax
call   1090 <alloc_LogGrid@plt>
movslq %eax,%r13
test   %ebp,%ebp
jle    13b7 <R_Vosko+0x237>
mov    %r14,0x28(%rsp)
mov    %ebp,0xc(%rsp)
mov    %ebp,%ebp
xor    %r14d,%r14d
jmp    1355 <R_Vosko+0x1d5>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movapd %xmm4,%xmm0
movsd  %xmm4,(%rsp)
call   1070 <sqrt@plt>
movsd  (%rsp),%xmm4
movapd %xmm0,%xmm2
movapd %xmm0,%xmm1
movsd  %xmm0,(%rsp)
movsd  0xe10(%rip),%xmm0
mulsd  %xmm0,%xmm2
addsd  %xmm4,%xmm2
addsd  0xe08(%rip),%xmm2
movsd  %xmm2,0x20(%rsp)
movapd %xmm1,%xmm3
addsd  %xmm1,%xmm3
addsd  %xmm0,%xmm3
movsd  %xmm3,0x40(%rsp)
divsd  %xmm2,%xmm4
movapd %xmm4,%xmm0
call   1050 <log@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
addsd  0xdd8(%rip),%xmm0
movsd  %xmm0,0x38(%rsp)
mulsd  %xmm0,%xmm0
divsd  0x20(%rsp),%xmm0
call   1050 <log@plt>
mulsd  0xdc3(%rip),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0xdbd(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  (%rsp),%xmm1
addsd  0xdae(%rip),%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  0xda8(%rip),%xmm0
divsd  %xmm1,%xmm0
call   1030 <atan@plt>
mulsd  0xd9f(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  0xd99(%rip),%xmm1
movsd  (%rsp),%xmm3
divsd  %xmm3,%xmm1
movsd  0xd90(%rip),%xmm2
divsd  0x38(%rsp),%xmm2
addsd  %xmm1,%xmm2
movsd  0x40(%rsp),%xmm1
mulsd  0xd80(%rip),%xmm1
divsd  0x20(%rsp),%xmm1
addsd  %xmm2,%xmm1
movapd %xmm1,%xmm2
movsd  0x30(%rsp),%xmm1
mulsd  %xmm1,%xmm1
addsd  0xd68(%rip),%xmm1
movapd %xmm1,%xmm4
movsd  0xd64(%rip),%xmm1
divsd  %xmm4,%xmm1
addsd  %xmm2,%xmm1
movapd %xmm3,%xmm2
mulsd  0xd58(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm0,(%r15,%r14,8)
movsd  %xmm2,(%r12,%r14,8)
add    $0x1,%r14
cmp    %r14,%rbp
je     139e <R_Vosko+0x21e>
movsd  (%rbx,%r14,8),%xmm0
divsd  0xca5(%rip),%xmm0
addsd  0xca5(%rip),%xmm0
movsd  0xca5(%rip),%xmm1
call   1060 <pow@plt>
movsd  0xca0(%rip),%xmm4
divsd  %xmm0,%xmm4
ucomisd 0xd0c(%rip),%xmm4
jb     11f0 <R_Vosko+0x70>
xorps  %xmm0,%xmm0
sqrtsd %xmm4,%xmm0
jmp    1203 <R_Vosko+0x83>
mov    0xc(%rsp),%eax
test   %eax,%eax
mov    0x28(%rsp),%r14
jle    13b7 <R_Vosko+0x237>
cmp    $0x4,%eax
jae    1409 <R_Vosko+0x289>
xor    %eax,%eax
jmp    1514 <R_Vosko+0x394>
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0x18(%rsp),%rax
movsd  %xmm0,(%rax)
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%r14)
mov    %r15,%rdi
xor    %eax,%eax
call   1080 <dealloc_LogGrid@plt>
mov    %r13,%rdi
xor    %eax,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1080 <dealloc_LogGrid@plt>
lea    0x0(,%rbp,8),%rax
add    %r13,%rax
lea    (%rbx,%rbp,8),%rcx
lea    (%r15,%rbp,8),%rdx
cmp    %rcx,%r13
setb   %sil
cmp    %rbx,%rax
seta   %dil
cmp    %rdx,%r13
setb   %cl
cmp    %rax,%r15
setb   %dl
xor    %eax,%eax
test   %dil,%sil
jne    1514 <R_Vosko+0x394>
and    %dl,%cl
jne    1514 <R_Vosko+0x394>
mov    %ebp,%eax
and    $0xfffffffc,%eax
lea    -0x4(%rax),%rcx
mov    %rcx,%rdx
shr    $0x2,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     17a9 <R_Vosko+0x629>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
nop
movupd (%rbx,%rcx,8),%xmm0
movupd 0x10(%rbx,%rcx,8),%xmm1
movupd (%r15,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%r15,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x0(%r13,%rcx,8)
movupd %xmm0,0x10(%r13,%rcx,8)
movupd 0x20(%rbx,%rcx,8),%xmm0
movupd 0x30(%rbx,%rcx,8),%xmm1
movupd 0x20(%r15,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x30(%r15,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x20(%r13,%rcx,8)
movupd %xmm0,0x30(%r13,%rcx,8)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1470 <R_Vosko+0x2f0>
test   $0x1,%dl
je     150b <R_Vosko+0x38b>
movupd (%rbx,%rcx,8),%xmm0
movupd 0x10(%rbx,%rcx,8),%xmm1
movupd (%r15,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%r15,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x0(%r13,%rcx,8)
movupd %xmm0,0x10(%r13,%rcx,8)
cmp    %rbp,%rax
je     15b7 <R_Vosko+0x437>
mov    %rax,%rcx
not    %rcx
add    %rbp,%rcx
mov    %rbp,%rdx
and    $0x3,%rdx
je     154c <R_Vosko+0x3cc>
cs nopw 0x0(%rax,%rax,1)
movsd  (%rbx,%rax,8),%xmm0
mulsd  (%r15,%rax,8),%xmm0
movsd  %xmm0,0x0(%r13,%rax,8)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    1530 <R_Vosko+0x3b0>
cmp    $0x3,%rcx
jb     15b7 <R_Vosko+0x437>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rbx,%rax,8),%xmm0
mulsd  (%r15,%rax,8),%xmm0
movsd  %xmm0,0x0(%r13,%rax,8)
movsd  0x8(%rbx,%rax,8),%xmm0
mulsd  0x8(%r15,%rax,8),%xmm0
movsd  %xmm0,0x8(%r13,%rax,8)
movsd  0x10(%rbx,%rax,8),%xmm0
mulsd  0x10(%r15,%rax,8),%xmm0
movsd  %xmm0,0x10(%r13,%rax,8)
movsd  0x18(%rbx,%rax,8),%xmm0
mulsd  0x18(%r15,%rax,8),%xmm0
movsd  %xmm0,0x18(%r13,%rax,8)
add    $0x4,%rax
cmp    %rax,%rbp
jne    1560 <R_Vosko+0x3e0>
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <Integrate_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0x18(%rsp),%rax
movsd  %xmm0,(%rax)
mov    0xc(%rsp),%eax
test   %eax,%eax
jle    13d1 <R_Vosko+0x251>
cmp    $0x4,%eax
jae    168c <R_Vosko+0x50c>
xor    %eax,%eax
mov    %rax,%rcx
not    %rcx
add    %rbp,%rcx
mov    %rbp,%rdx
and    $0x3,%rdx
je     161c <R_Vosko+0x49c>
nopw   0x0(%rax,%rax,1)
movsd  (%rbx,%rax,8),%xmm0
mulsd  (%r12,%rax,8),%xmm0
movsd  %xmm0,0x0(%r13,%rax,8)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    1600 <R_Vosko+0x480>
cmp    $0x3,%rcx
jb     13d1 <R_Vosko+0x251>
cs nopw 0x0(%rax,%rax,1)
movsd  (%rbx,%rax,8),%xmm0
mulsd  (%r12,%rax,8),%xmm0
movsd  %xmm0,0x0(%r13,%rax,8)
movsd  0x8(%rbx,%rax,8),%xmm0
mulsd  0x8(%r12,%rax,8),%xmm0
movsd  %xmm0,0x8(%r13,%rax,8)
movsd  0x10(%rbx,%rax,8),%xmm0
mulsd  0x10(%r12,%rax,8),%xmm0
movsd  %xmm0,0x10(%r13,%rax,8)
movsd  0x18(%rbx,%rax,8),%xmm0
mulsd  0x18(%r12,%rax,8),%xmm0
movsd  %xmm0,0x18(%r13,%rax,8)
add    $0x4,%rax
cmp    %rax,%rbp
jne    1630 <R_Vosko+0x4b0>
jmp    13d1 <R_Vosko+0x251>
lea    0x0(,%rbp,8),%rax
add    %r13,%rax
lea    (%rbx,%rbp,8),%rcx
cmp    %rcx,%r13
setb   %dil
cmp    %rbx,%rax
seta   %dl
lea    (%r12,%rbp,8),%rcx
cmp    %rcx,%r13
setb   %cl
cmp    %r12,%rax
seta   %sil
xor    %eax,%eax
test   %dl,%dil
jne    15e8 <R_Vosko+0x468>
and    %sil,%cl
jne    15e8 <R_Vosko+0x468>
mov    %ebp,%eax
and    $0xfffffffc,%eax
lea    -0x4(%rax),%rcx
mov    %rcx,%rdx
shr    $0x2,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     17b9 <R_Vosko+0x639>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movupd (%rbx,%rcx,8),%xmm0
movupd 0x10(%rbx,%rcx,8),%xmm1
movupd (%r12,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%r12,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x0(%r13,%rcx,8)
movupd %xmm0,0x10(%r13,%rcx,8)
movupd 0x20(%rbx,%rcx,8),%xmm0
movupd 0x30(%rbx,%rcx,8),%xmm1
movupd 0x20(%r12,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x30(%r12,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x20(%r13,%rcx,8)
movupd %xmm0,0x30(%r13,%rcx,8)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1700 <R_Vosko+0x580>
test   $0x1,%dl
je     179b <R_Vosko+0x61b>
movupd (%rbx,%rcx,8),%xmm0
movupd 0x10(%rbx,%rcx,8),%xmm1
movupd (%r12,%rcx,8),%xmm2
mulpd  %xmm0,%xmm2
movupd 0x10(%r12,%rcx,8),%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm2,0x0(%r13,%rcx,8)
movupd %xmm0,0x10(%r13,%rcx,8)
cmp    %rbp,%rax
je     13d1 <R_Vosko+0x251>
jmp    15e8 <R_Vosko+0x468>
xor    %ecx,%ecx
test   $0x1,%dl
jne    14dd <R_Vosko+0x35d>
jmp    150b <R_Vosko+0x38b>
xor    %ecx,%ecx
test   $0x1,%dl
jne    176d <R_Vosko+0x5ed>
jmp    179b <R_Vosko+0x61b>

LLVM IR (-O0):
define void @R_Vosko(double* %0, double* %1, double* %2, double* %3) {
%5 = alloca double*
%6 = alloca double*
%7 = alloca double*
%8 = alloca double*
%9 = alloca i32
%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 i32
%25 = alloca double*
%26 = alloca double*
store double* %0, double** %5
store double* %1, double** %6
store double* %2, double** %7
store double* %3, double** %8
store double 0x3FC5555555555555, double* %10
store double 0x3FD5555555555555, double* %11
store double 0x3FF5555555555555, double* %12
store double 0x3FE5555555555555, double* %13
%27 = load double, double* %11
%28 = call double @pow(double 2.000000e+00, double %27)
store double %28, double* %14
%29 = call double @atan(double 1.000000e+00)
%30 = fmul double 4.000000e+00, %29
store double %30, double* %15
%31 = load double, double* %15
%32 = fdiv double 7.500000e-01, %31
%33 = call double @pow(double %32, double 0x3FD5555555555555)
store double %33, double* %16
%34 = call i32 (...) @N_LogGrid()
store i32 %34, i32* %24
%35 = call i32 (...) @alloc_LogGrid()
%36 = sext i32 %35 to i64
%37 = inttoptr i64 %36 to double*
store double* %37, double** %25
%38 = call i32 (...) @alloc_LogGrid()
%39 = sext i32 %38 to i64
%40 = inttoptr i64 %39 to double*
store double* %40, double** %26
store i32 0, i32* %9
br label %41
41: ; preds = %121, %4
%42 = load i32, i32* %9
%43 = load i32, i32* %24
%44 = icmp slt i32 %42, %43
br i1 %44, label %45, label %124
45: ; preds = %41
%46 = load double*, double** %5
%47 = load i32, i32* %9
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds double, double* %46, i64 %48
%50 = load double, double* %49
%51 = load double, double* %15
%52 = fmul double 4.000000e+00, %51
%53 = fdiv double %50, %52
%54 = fadd double %53, 0x2F52F8AC174D6123
store double %54, double* %18
%55 = load double, double* %16
%56 = load double, double* %18
%57 = load double, double* %11
%58 = call double @pow(double %56, double %57)
%59 = fdiv double %55, %58
store double %59, double* %17
%60 = load double, double* %17
%61 = call double @sqrt(double %60)
store double %61, double* %19
%62 = load double, double* %17
%63 = load double, double* %19
%64 = call double @llvm.fmuladd.f64(double 3.727440e+00, double %63, double %62)
%65 = fadd double %64, 1.293520e+01
store double %65, double* %20
%66 = load double, double* %19
%67 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %66, double 3.727440e+00)
store double %67, double* %21
%68 = load double, double* %17
%69 = load double, double* %20
%70 = fdiv double %68, %69
%71 = call double @log(double %70)
%72 = load double, double* %19
%73 = fadd double %72, 1.049800e-01
%74 = load double, double* %19
%75 = fadd double %74, 1.049800e-01
%76 = fmul double %73, %75
%77 = load double, double* %20
%78 = fdiv double %76, %77
%79 = call double @log(double %78)
%80 = fmul double 0x3F4FC0C09E170C1E, %79
%81 = call double @llvm.fmuladd.f64(double 3.109070e-02, double %71, double %80)
%82 = load double, double* %19
%83 = fadd double %82, 1.863720e+00
%84 = fdiv double 0x40089BA3443D46B2, %83
%85 = call double @atan(double %84)
%86 = call double @llvm.fmuladd.f64(double 0x3FA3DB67445CD13C, double %85, double %81)
store double %86, double* %22
%87 = load double, double* %22
%88 = load double, double* %10
%89 = load double, double* %19
%90 = fmul double %88, %89
%91 = load double, double* %19
%92 = fdiv double 6.218140e-02, %91
%93 = load double, double* %19
%94 = fadd double %93, 1.049800e-01
%95 = fdiv double 0x3F5FC0BFF929CD03, %94
%96 = fadd double %92, %95
%97 = load double, double* %21
%98 = fmul double 0xBFA06A21B1D67C4E, %97
%99 = load double, double* %20
%100 = fdiv double %98, %99
%101 = fadd double %96, %100
%102 = load double, double* %19
%103 = fadd double %102, 1.863720e+00
%104 = load double, double* %19
%105 = fadd double %104, 1.863720e+00
%106 = call double @llvm.fmuladd.f64(double %103, double %105, double 0x4022EC6A3BDDFCA0)
%107 = fdiv double 0xBFBE8A42E4811E79, %106
%108 = fadd double %101, %107
%109 = fneg double %90
%110 = call double @llvm.fmuladd.f64(double %109, double %108, double %87)
store double %110, double* %23
%111 = load double, double* %22
%112 = load double*, double** %25
%113 = load i32, i32* %9
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds double, double* %112, i64 %114
store double %111, double* %115
%116 = load double, double* %23
%117 = load double*, double** %6
%118 = load i32, i32* %9
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds double, double* %117, i64 %119
store double %116, double* %120
br label %121
121: ; preds = %45
%122 = load i32, i32* %9
%123 = add nsw i32 %122, 1
store i32 %123, i32* %9
br label %41
124: ; preds = %41
store i32 0, i32* %9
br label %125
125: ; preds = %145, %124
%126 = load i32, i32* %9
%127 = load i32, i32* %24
%128 = icmp slt i32 %126, %127
br i1 %128, label %129, label %148
129: ; preds = %125
%130 = load double*, double** %5
%131 = load i32, i32* %9
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds double, double* %130, i64 %132
%134 = load double, double* %133
%135 = load double*, double** %25
%136 = load i32, i32* %9
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds double, double* %135, i64 %137
%139 = load double, double* %138
%140 = fmul double %134, %139
%141 = load double*, double** %26
%142 = load i32, i32* %9
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds double, double* %141, i64 %143
store double %140, double* %144
br label %145
145: ; preds = %129
%146 = load i32, i32* %9
%147 = add nsw i32 %146, 1
store i32 %147, i32* %9
br label %125
148: ; preds = %125
%149 = load double*, double** %26
%150 = call i32 (double*, ...) bitcast (i32 (...)* @Integrate_LogGrid to i32 (double*, ...)*)(double* %149)
%151 = sitofp i32 %150 to double
%152 = load double*, double** %7
store double %151, double* %152
store i32 0, i32* %9
br label %153
153: ; preds = %173, %148
%154 = load i32, i32* %9
%155 = load i32, i32* %24
%156 = icmp slt i32 %154, %155
br i1 %156, label %157, label %176
157: ; preds = %153
%158 = load double*, double** %5
%159 = load i32, i32* %9
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds double, double* %158, i64 %160
%162 = load double, double* %161
%163 = load double*, double** %6
%164 = load i32, i32* %9
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds double, double* %163, i64 %165
%167 = load double, double* %166
%168 = fmul double %162, %167
%169 = load double*, double** %26
%170 = load i32, i32* %9
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds double, double* %169, i64 %171
store double %168, double* %172
br label %173
173: ; preds = %157
%174 = load i32, i32* %9
%175 = add nsw i32 %174, 1
store i32 %175, i32* %9
br label %153
176: ; preds = %153
%177 = load double*, double** %26
%178 = call i32 (double*, ...) bitcast (i32 (...)* @Integrate_LogGrid to i32 (double*, ...)*)(double* %177)
%179 = sitofp i32 %178 to double
%180 = load double*, double** %8
store double %179, double* %180
%181 = load double*, double** %25
%182 = call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %181)
%183 = load double*, double** %26
%184 = call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %183)
ret void
}

LLVM IR (-O2):
define void @R_Vosko(double* nocapture %0, double* nocapture %1, double* nocapture writeonly %2, double* nocapture writeonly %3) {
%5 = tail call double @atan(double 1.000000e+00)
%6 = tail call i32 (...) @N_LogGrid()
%7 = tail call i32 (...) @alloc_LogGrid()
%8 = sext i32 %7 to i64
%9 = inttoptr i64 %8 to double*
%10 = inttoptr i64 %8 to i8*
%11 = tail call i32 (...) @alloc_LogGrid()
%12 = sext i32 %11 to i64
%13 = inttoptr i64 %12 to double*
%14 = inttoptr i64 %12 to i8*
%15 = icmp sgt i32 %6, 0
br i1 %15, label %16, label %203
16: ; preds = %4
%17 = zext i32 %6 to i64
br label %133
18: ; preds = %133
br i1 %15, label %19, label %203
19: ; preds = %18
%20 = zext i32 %6 to i64
%21 = icmp ult i32 %6, 4
br i1 %21, label %112, label %22
22: ; preds = %19
%23 = getelementptr double, double* %13, i64 %17
%24 = bitcast double* %23 to i8*
%25 = getelementptr double, double* %0, i64 %17
%26 = bitcast double* %25 to i8*
%27 = getelementptr double, double* %9, i64 %17
%28 = bitcast double* %27 to i8*
%29 = icmp ult i8* %14, %26
%30 = icmp ugt double* %23, %0
%31 = and i1 %29, %30
%32 = icmp ult i8* %14, %28
%33 = icmp ult i8* %10, %24
%34 = and i1 %32, %33
%35 = or i1 %31, %34
br i1 %35, label %112, label %36
36: ; preds = %22
%37 = and i64 %17, 4294967292
%38 = add nsw i64 %37, -4
%39 = lshr exact i64 %38, 2
%40 = add nuw nsw i64 %39, 1
%41 = and i64 %40, 1
%42 = icmp eq i64 %38, 0
br i1 %42, label %88, label %43
43: ; preds = %36
%44 = and i64 %40, 9223372036854775806
br label %45
45: ; preds = %45, %43
%46 = phi i64 [ 0, %43 ], [ %85, %45 ]
%47 = phi i64 [ 0, %43 ], [ %86, %45 ]
%48 = getelementptr inbounds double, double* %0, i64 %46
%49 = bitcast double* %48 to <2 x double>*
%50 = load <2 x double>, <2 x double>* %49
%51 = getelementptr inbounds double, double* %48, i64 2
%52 = bitcast double* %51 to <2 x double>*
%53 = load <2 x double>, <2 x double>* %52
%54 = getelementptr inbounds double, double* %9, i64 %46
%55 = bitcast double* %54 to <2 x double>*
%56 = load <2 x double>, <2 x double>* %55
%57 = getelementptr inbounds double, double* %54, i64 2
%58 = bitcast double* %57 to <2 x double>*
%59 = load <2 x double>, <2 x double>* %58
%60 = fmul <2 x double> %50, %56
%61 = fmul <2 x double> %53, %59
%62 = getelementptr inbounds double, double* %13, i64 %46
%63 = bitcast double* %62 to <2 x double>*
store <2 x double> %60, <2 x double>* %63
%64 = getelementptr inbounds double, double* %62, i64 2
%65 = bitcast double* %64 to <2 x double>*
store <2 x double> %61, <2 x double>* %65
%66 = or i64 %46, 4
%67 = getelementptr inbounds double, double* %0, i64 %66
%68 = bitcast double* %67 to <2 x double>*
%69 = load <2 x double>, <2 x double>* %68
%70 = getelementptr inbounds double, double* %67, i64 2
%71 = bitcast double* %70 to <2 x double>*
%72 = load <2 x double>, <2 x double>* %71
%73 = getelementptr inbounds double, double* %9, i64 %66
%74 = bitcast double* %73 to <2 x double>*
%75 = load <2 x double>, <2 x double>* %74
%76 = getelementptr inbounds double, double* %73, i64 2
%77 = bitcast double* %76 to <2 x double>*
%78 = load <2 x double>, <2 x double>* %77
%79 = fmul <2 x double> %69, %75
%80 = fmul <2 x double> %72, %78
%81 = getelementptr inbounds double, double* %13, i64 %66
%82 = bitcast double* %81 to <2 x double>*
store <2 x double> %79, <2 x double>* %82
%83 = getelementptr inbounds double, double* %81, i64 2
%84 = bitcast double* %83 to <2 x double>*
store <2 x double> %80, <2 x double>* %84
%85 = add nuw i64 %46, 8
%86 = add i64 %47, 2
%87 = icmp eq i64 %86, %44
br i1 %87, label %88, label %45
88: ; preds = %45, %36
%89 = phi i64 [ 0, %36 ], [ %85, %45 ]
%90 = icmp eq i64 %41, 0
br i1 %90, label %110, label %91
91: ; preds = %88
%92 = getelementptr inbounds double, double* %0, i64 %89
%93 = bitcast double* %92 to <2 x double>*
%94 = load <2 x double>, <2 x double>* %93
%95 = getelementptr inbounds double, double* %92, i64 2
%96 = bitcast double* %95 to <2 x double>*
%97 = load <2 x double>, <2 x double>* %96
%98 = getelementptr inbounds double, double* %9, i64 %89
%99 = bitcast double* %98 to <2 x double>*
%100 = load <2 x double>, <2 x double>* %99
%101 = getelementptr inbounds double, double* %98, i64 2
%102 = bitcast double* %101 to <2 x double>*
%103 = load <2 x double>, <2 x double>* %102
%104 = fmul <2 x double> %94, %100
%105 = fmul <2 x double> %97, %103
%106 = getelementptr inbounds double, double* %13, i64 %89
%107 = bitcast double* %106 to <2 x double>*
store <2 x double> %104, <2 x double>* %107
%108 = getelementptr inbounds double, double* %106, i64 2
%109 = bitcast double* %108 to <2 x double>*
store <2 x double> %105, <2 x double>* %109
br label %110
110: ; preds = %88, %91
%111 = icmp eq i64 %37, %17
br i1 %111, label %206, label %112
112: ; preds = %22, %19, %110
%113 = phi i64 [ 0, %22 ], [ 0, %19 ], [ %37, %110 ]
%114 = xor i64 %113, -1
%115 = add nsw i64 %114, %17
%116 = and i64 %17, 3
%117 = icmp eq i64 %116, 0
br i1 %117, label %130, label %118
118: ; preds = %112, %118
%119 = phi i64 [ %127, %118 ], [ %113, %112 ]
%120 = phi i64 [ %128, %118 ], [ 0, %112 ]
%121 = getelementptr inbounds double, double* %0, i64 %119
%122 = load double, double* %121
%123 = getelementptr inbounds double, double* %9, i64 %119
%124 = load double, double* %123
%125 = fmul double %122, %124
%126 = getelementptr inbounds double, double* %13, i64 %119
store double %125, double* %126
%127 = add nuw nsw i64 %119, 1
%128 = add i64 %120, 1
%129 = icmp eq i64 %128, %116
br i1 %129, label %130, label %118
130: ; preds = %118, %112
%131 = phi i64 [ %113, %112 ], [ %127, %118 ]
%132 = icmp ult i64 %115, 3
br i1 %132, label %206, label %172
133: ; preds = %16, %133
%134 = phi i64 [ 0, %16 ], [ %170, %133 ]
%135 = getelementptr inbounds double, double* %0, i64 %134
%136 = load double, double* %135
%137 = fdiv double %136, 0x402921FB54442D18
%138 = fadd double %137, 0x2F52F8AC174D6123
%139 = tail call double @pow(double %138, double 0x3FD5555555555555)
%140 = fdiv double 0x3FE3D9E945CF0E15, %139
%141 = tail call double @sqrt(double %140)
%142 = tail call double @llvm.fmuladd.f64(double %141, double 3.727440e+00, double %140)
%143 = fadd double %142, 1.293520e+01
%144 = tail call double @llvm.fmuladd.f64(double %141, double 2.000000e+00, double 3.727440e+00)
%145 = fdiv double %140, %143
%146 = tail call double @log(double %145)
%147 = fadd double %141, 1.049800e-01
%148 = fmul double %147, %147
%149 = fdiv double %148, %143
%150 = tail call double @log(double %149)
%151 = fmul double %150, 0x3F4FC0C09E170C1E
%152 = tail call double @llvm.fmuladd.f64(double %146, double 3.109070e-02, double %151)
%153 = fadd double %141, 1.863720e+00
%154 = fdiv double 0x40089BA3443D46B2, %153
%155 = tail call double @atan(double %154)
%156 = tail call double @llvm.fmuladd.f64(double %155, double 0x3FA3DB67445CD13C, double %152)
%157 = fdiv double 6.218140e-02, %141
%158 = fdiv double 0x3F5FC0BFF929CD03, %147
%159 = fadd double %157, %158
%160 = fmul double %144, 0x3FA06A21B1D67C4E
%161 = fdiv double %160, %143
%162 = fsub double %159, %161
%163 = tail call double @llvm.fmuladd.f64(double %153, double %153, double 0x4022EC6A3BDDFCA0)
%164 = fdiv double 0x3FBE8A42E4811E79, %163
%165 = fsub double %162, %164
%166 = fmul double %141, 0xBFC5555555555555
%167 = tail call double @llvm.fmuladd.f64(double %166, double %165, double %156)
%168 = getelementptr inbounds double, double* %9, i64 %134
store double %156, double* %168
%169 = getelementptr inbounds double, double* %1, i64 %134
store double %167, double* %169
%170 = add nuw nsw i64 %134, 1
%171 = icmp eq i64 %170, %17
br i1 %171, label %18, label %133
172: ; preds = %130, %172
%173 = phi i64 [ %201, %172 ], [ %131, %130 ]
%174 = getelementptr inbounds double, double* %0, i64 %173
%175 = load double, double* %174
%176 = getelementptr inbounds double, double* %9, i64 %173
%177 = load double, double* %176
%178 = fmul double %175, %177
%179 = getelementptr inbounds double, double* %13, i64 %173
store double %178, double* %179
%180 = add nuw nsw i64 %173, 1
%181 = getelementptr inbounds double, double* %0, i64 %180
%182 = load double, double* %181
%183 = getelementptr inbounds double, double* %9, i64 %180
%184 = load double, double* %183
%185 = fmul double %182, %184
%186 = getelementptr inbounds double, double* %13, i64 %180
store double %185, double* %186
%187 = add nuw nsw i64 %173, 2
%188 = getelementptr inbounds double, double* %0, i64 %187
%189 = load double, double* %188
%190 = getelementptr inbounds double, double* %9, i64 %187
%191 = load double, double* %190
%192 = fmul double %189, %191
%193 = getelementptr inbounds double, double* %13, i64 %187
store double %192, double* %193
%194 = add nuw nsw i64 %173, 3
%195 = getelementptr inbounds double, double* %0, i64 %194
%196 = load double, double* %195
%197 = getelementptr inbounds double, double* %9, i64 %194
%198 = load double, double* %197
%199 = fmul double %196, %198
%200 = getelementptr inbounds double, double* %13, i64 %194
store double %199, double* %200
%201 = add nuw nsw i64 %173, 4
%202 = icmp eq i64 %201, %20
br i1 %202, label %206, label %172
203: ; preds = %18, %4
%204 = tail call i32 (double*, ...) bitcast (i32 (...)* @Integrate_LogGrid to i32 (double*, ...)*)(double* %13)
%205 = sitofp i32 %204 to double
store double %205, double* %2
br label %353
206: ; preds = %130, %172, %110
%207 = tail call i32 (double*, ...) bitcast (i32 (...)* @Integrate_LogGrid to i32 (double*, ...)*)(double* %13)
%208 = sitofp i32 %207 to double
store double %208, double* %2
br i1 %15, label %209, label %353
209: ; preds = %206
%210 = zext i32 %6 to i64
%211 = icmp ult i32 %6, 4
br i1 %211, label %301, label %212
212: ; preds = %209
%213 = getelementptr double, double* %13, i64 %17
%214 = getelementptr double, double* %0, i64 %17
%215 = bitcast double* %214 to i8*
%216 = getelementptr double, double* %1, i64 %17
%217 = bitcast double* %216 to i8*
%218 = icmp ult i8* %14, %215
%219 = icmp ugt double* %213, %0
%220 = and i1 %218, %219
%221 = icmp ult i8* %14, %217
%222 = icmp ugt double* %213, %1
%223 = and i1 %221, %222
%224 = or i1 %220, %223
br i1 %224, label %301, label %225
225: ; preds = %212
%226 = and i64 %17, 4294967292
%227 = add nsw i64 %226, -4
%228 = lshr exact i64 %227, 2
%229 = add nuw nsw i64 %228, 1
%230 = and i64 %229, 1
%231 = icmp eq i64 %227, 0
br i1 %231, label %277, label %232
232: ; preds = %225
%233 = and i64 %229, 9223372036854775806
br label %234
234: ; preds = %234, %232
%235 = phi i64 [ 0, %232 ], [ %274, %234 ]
%236 = phi i64 [ 0, %232 ], [ %275, %234 ]
%237 = getelementptr inbounds double, double* %0, i64 %235
%238 = bitcast double* %237 to <2 x double>*
%239 = load <2 x double>, <2 x double>* %238
%240 = getelementptr inbounds double, double* %237, i64 2
%241 = bitcast double* %240 to <2 x double>*
%242 = load <2 x double>, <2 x double>* %241
%243 = getelementptr inbounds double, double* %1, i64 %235
%244 = bitcast double* %243 to <2 x double>*
%245 = load <2 x double>, <2 x double>* %244
%246 = getelementptr inbounds double, double* %243, i64 2
%247 = bitcast double* %246 to <2 x double>*
%248 = load <2 x double>, <2 x double>* %247
%249 = fmul <2 x double> %239, %245
%250 = fmul <2 x double> %242, %248
%251 = getelementptr inbounds double, double* %13, i64 %235
%252 = bitcast double* %251 to <2 x double>*
store <2 x double> %249, <2 x double>* %252
%253 = getelementptr inbounds double, double* %251, i64 2
%254 = bitcast double* %253 to <2 x double>*
store <2 x double> %250, <2 x double>* %254
%255 = or i64 %235, 4
%256 = getelementptr inbounds double, double* %0, i64 %255
%257 = bitcast double* %256 to <2 x double>*
%258 = load <2 x double>, <2 x double>* %257
%259 = getelementptr inbounds double, double* %256, i64 2
%260 = bitcast double* %259 to <2 x double>*
%261 = load <2 x double>, <2 x double>* %260
%262 = getelementptr inbounds double, double* %1, i64 %255
%263 = bitcast double* %262 to <2 x double>*
%264 = load <2 x double>, <2 x double>* %263
%265 = getelementptr inbounds double, double* %262, i64 2
%266 = bitcast double* %265 to <2 x double>*
%267 = load <2 x double>, <2 x double>* %266
%268 = fmul <2 x double> %258, %264
%269 = fmul <2 x double> %261, %267
%270 = getelementptr inbounds double, double* %13, i64 %255
%271 = bitcast double* %270 to <2 x double>*
store <2 x double> %268, <2 x double>* %271
%272 = getelementptr inbounds double, double* %270, i64 2
%273 = bitcast double* %272 to <2 x double>*
store <2 x double> %269, <2 x double>* %273
%274 = add nuw i64 %235, 8
%275 = add i64 %236, 2
%276 = icmp eq i64 %275, %233
br i1 %276, label %277, label %234
277: ; preds = %234, %225
%278 = phi i64 [ 0, %225 ], [ %274, %234 ]
%279 = icmp eq i64 %230, 0
br i1 %279, label %299, label %280
280: ; preds = %277
%281 = getelementptr inbounds double, double* %0, i64 %278
%282 = bitcast double* %281 to <2 x double>*
%283 = load <2 x double>, <2 x double>* %282
%284 = getelementptr inbounds double, double* %281, i64 2
%285 = bitcast double* %284 to <2 x double>*
%286 = load <2 x double>, <2 x double>* %285
%287 = getelementptr inbounds double, double* %1, i64 %278
%288 = bitcast double* %287 to <2 x double>*
%289 = load <2 x double>, <2 x double>* %288
%290 = getelementptr inbounds double, double* %287, i64 2
%291 = bitcast double* %290 to <2 x double>*
%292 = load <2 x double>, <2 x double>* %291
%293 = fmul <2 x double> %283, %289
%294 = fmul <2 x double> %286, %292
%295 = getelementptr inbounds double, double* %13, i64 %278
%296 = bitcast double* %295 to <2 x double>*
store <2 x double> %293, <2 x double>* %296
%297 = getelementptr inbounds double, double* %295, i64 2
%298 = bitcast double* %297 to <2 x double>*
store <2 x double> %294, <2 x double>* %298
br label %299
299: ; preds = %277, %280
%300 = icmp eq i64 %226, %17
br i1 %300, label %353, label %301
301: ; preds = %212, %209, %299
%302 = phi i64 [ 0, %212 ], [ 0, %209 ], [ %226, %299 ]
%303 = xor i64 %302, -1
%304 = add nsw i64 %303, %17
%305 = and i64 %17, 3
%306 = icmp eq i64 %305, 0
br i1 %306, label %319, label %307
307: ; preds = %301, %307
%308 = phi i64 [ %316, %307 ], [ %302, %301 ]
%309 = phi i64 [ %317, %307 ], [ 0, %301 ]
%310 = getelementptr inbounds double, double* %0, i64 %308
%311 = load double, double* %310
%312 = getelementptr inbounds double, double* %1, i64 %308
%313 = load double, double* %312
%314 = fmul double %311, %313
%315 = getelementptr inbounds double, double* %13, i64 %308
store double %314, double* %315
%316 = add nuw nsw i64 %308, 1
%317 = add i64 %309, 1
%318 = icmp eq i64 %317, %305
br i1 %318, label %319, label %307
319: ; preds = %307, %301
%320 = phi i64 [ %302, %301 ], [ %316, %307 ]
%321 = icmp ult i64 %304, 3
br i1 %321, label %353, label %322
322: ; preds = %319, %322
%323 = phi i64 [ %351, %322 ], [ %320, %319 ]
%324 = getelementptr inbounds double, double* %0, i64 %323
%325 = load double, double* %324
%326 = getelementptr inbounds double, double* %1, i64 %323
%327 = load double, double* %326
%328 = fmul double %325, %327
%329 = getelementptr inbounds double, double* %13, i64 %323
store double %328, double* %329
%330 = add nuw nsw i64 %323, 1
%331 = getelementptr inbounds double, double* %0, i64 %330
%332 = load double, double* %331
%333 = getelementptr inbounds double, double* %1, i64 %330
%334 = load double, double* %333
%335 = fmul double %332, %334
%336 = getelementptr inbounds double, double* %13, i64 %330
store double %335, double* %336
%337 = add nuw nsw i64 %323, 2
%338 = getelementptr inbounds double, double* %0, i64 %337
%339 = load double, double* %338
%340 = getelementptr inbounds double, double* %1, i64 %337
%341 = load double, double* %340
%342 = fmul double %339, %341
%343 = getelementptr inbounds double, double* %13, i64 %337
store double %342, double* %343
%344 = add nuw nsw i64 %323, 3
%345 = getelementptr inbounds double, double* %0, i64 %344
%346 = load double, double* %345
%347 = getelementptr inbounds double, double* %1, i64 %344
%348 = load double, double* %347
%349 = fmul double %346, %348
%350 = getelementptr inbounds double, double* %13, i64 %344
store double %349, double* %350
%351 = add nuw nsw i64 %323, 4
%352 = icmp eq i64 %351, %210
br i1 %352, label %353, label %322
353: ; preds = %319, %322, %299, %203, %206
%354 = tail call i32 (double*, ...) bitcast (i32 (...)* @Integrate_LogGrid to i32 (double*, ...)*)(double* %13)
%355 = sitofp i32 %354 to double
store double %355, double* %3
%356 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %9)
%357 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %13)
ret void
}