void R_Schrodinger_Fixed_E(n, l, v, match, E, u, uprime) int n, l;
double v[];
int match;
double E;
double u[], uprime[];
{
  int i, j, Ngrid;
  double log_amesh, log_amesh2, gamma, L2, r2, sum, *r, *f_upp, *upp;
  gamma = ((double)(l + 1));
  L2 = ((double)(l * (l + 1)));
  Ngrid = N_LogGrid();
  log_amesh = log_amesh_LogGrid();
  log_amesh2 = log_amesh * log_amesh;
  r = (double *)r_LogGrid();
  f_upp = (double *)alloc_LogGrid();
  upp = (double *)alloc_LogGrid();
  for (i = 0; i < Ngrid; ++i) {
    r2 = r[i];
    r2 = r2 * r2;
    f_upp[i] = log_amesh2 * (L2 + 2.0 * (v[i] - E) * r2);
  }
  for (i = 0; i < 4; ++i) {
    u[i] = pow(r[i], gamma);
    uprime[i] = log_amesh * gamma * u[i];
  }
  for (i = 0; i < 4; ++i)
    upp[i] = log_amesh * uprime[i] + f_upp[i] * u[i];
  for (i = 3; i < match; ++i) {
    u[i + 1] = Predictor_Out(i, u, uprime);
    uprime[i + 1] = Predictor_Out(i, uprime, upp);
    for (j = 0; j < 6; ++j) {
      upp[i + 1] = log_amesh * uprime[i + 1] + f_upp[i + 1] * u[i + 1];
      uprime[i + 1] = Corrector_Out(i, uprime, upp);
      u[i + 1] = Corrector_Out(i, u, uprime);
    }
  }
  sum = Norm_LogGrid(match, gamma, u);
  sum = 1.0 / sqrt(sum);
  for (i = 0; i <= match; ++i) {
    u[i] = sum * u[i];
    uprime[i] = sum * uprime[i];
  }
  for (i = match + 1; i < Ngrid; ++i) {
    u[i] = 0.0;
    uprime[i] = 0.0;
  }
  dealloc_LogGrid(upp);
  dealloc_LogGrid(f_upp);
  return;
}


x86 assembly (clang, -O0):
<R_Schrodinger_Fixed_E>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
movsd  %xmm0,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%eax
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
imul   %ecx,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    $0x0,%al
call   10c0 <N_LogGrid@plt>
mov    %eax,-0x3c(%rbp)
mov    $0x0,%al
call   1030 <log_amesh_LogGrid@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    $0x0,%al
call   1060 <r_LogGrid@plt>
cltq
mov    %rax,-0x78(%rbp)
mov    $0x0,%al
call   10b0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x80(%rbp)
mov    $0x0,%al
call   10b0 <alloc_LogGrid@plt>
cltq
mov    %rax,-0x88(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    12c4 <R_Schrodinger_Fixed_E+0x124>
mov    -0x78(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm3
subsd  -0x20(%rbp),%xmm3
movsd  0xd74(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x68(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x80(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1243 <R_Schrodinger_Fixed_E+0xa3>
movl   $0x0,-0x34(%rbp)
cmpl   $0x4,-0x34(%rbp)
jge    132b <R_Schrodinger_Fixed_E+0x18b>
mov    -0x78(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x58(%rbp),%xmm1
call   1080 <pow@plt>
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    12cb <R_Schrodinger_Fixed_E+0x12b>
movl   $0x0,-0x34(%rbp)
cmpl   $0x4,-0x34(%rbp)
jge    138e <R_Schrodinger_Fixed_E+0x1ee>
movsd  -0x48(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x80(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x88(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1332 <R_Schrodinger_Fixed_E+0x192>
movl   $0x3,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    14d1 <R_Schrodinger_Fixed_E+0x331>
mov    -0x34(%rbp),%edi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    $0x0,%al
call   1050 <Predictor_Out@plt>
cvtsi2sd %eax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%edi
mov    -0x30(%rbp),%rsi
mov    -0x88(%rbp),%rdx
mov    $0x0,%al
call   1050 <Predictor_Out@plt>
cvtsi2sd %eax,%xmm0
mov    -0x30(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x38(%rbp)
cmpl   $0x6,-0x38(%rbp)
jge    14be <R_Schrodinger_Fixed_E+0x31e>
movsd  -0x48(%rbp),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x80(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x88(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%edi
mov    -0x30(%rbp),%rsi
mov    -0x88(%rbp),%rdx
mov    $0x0,%al
call   1040 <Corrector_Out@plt>
cvtsi2sd %eax,%xmm0
mov    -0x30(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%edi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    $0x0,%al
call   1040 <Corrector_Out@plt>
cvtsi2sd %eax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    13fb <R_Schrodinger_Fixed_E+0x25b>
jmp    14c3 <R_Schrodinger_Fixed_E+0x323>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1395 <R_Schrodinger_Fixed_E+0x1f5>
mov    -0x14(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
mov    $0x1,%al
call   1070 <Norm_LogGrid@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
call   1090 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0xafe(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     156a <R_Schrodinger_Fixed_E+0x3ca>
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1512 <R_Schrodinger_Fixed_E+0x372>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    15ad <R_Schrodinger_Fixed_E+0x40d>
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1573 <R_Schrodinger_Fixed_E+0x3d3>
mov    -0x88(%rbp),%rdi
mov    $0x0,%al
call   10a0 <dealloc_LogGrid@plt>
mov    -0x80(%rbp),%rdi
mov    $0x0,%al
call   10a0 <dealloc_LogGrid@plt>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<R_Schrodinger_Fixed_E>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %r9,%rbx
mov    %r8,%r14
movaps %xmm0,0x20(%rsp)
mov    %rcx,0x8(%rsp)
mov    %rdx,%r13
mov    %rsi,0x18(%rsp)
lea    0x1(%rsi),%eax
mov    %eax,0x34(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x10(%rsp)
xor    %eax,%eax
call   10c0 <N_LogGrid@plt>
mov    %eax,%r12d
xor    %eax,%eax
call   1030 <log_amesh_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%rsp)
xor    %eax,%eax
call   1060 <r_LogGrid@plt>
movslq %eax,%rbp
xor    %eax,%eax
call   10b0 <alloc_LogGrid@plt>
movslq %eax,%r15
xor    %eax,%eax
call   10b0 <alloc_LogGrid@plt>
movapd 0x20(%rsp),%xmm10
movsd  (%rsp),%xmm9
mov    %r12d,%edi
movslq %eax,%r12
test   %edi,%edi
jle    13f9 <R_Schrodinger_Fixed_E+0x259>
mov    0x34(%rsp),%eax
imul   0x18(%rsp),%eax
cvtsi2sd %eax,%xmm8
movapd %xmm9,%xmm1
mulsd  %xmm9,%xmm1
mov    %edi,%eax
cmp    $0x4,%edi
jae    1309 <R_Schrodinger_Fixed_E+0x169>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
test   $0x1,%al
je     128d <R_Schrodinger_Fixed_E+0xed>
movsd  0x0(%rbp,%rcx,8),%xmm0
mulsd  %xmm0,%xmm0
movsd  0x0(%r13,%rcx,8),%xmm2
subsd  %xmm10,%xmm2
addsd  %xmm2,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm8,%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,(%r15,%rcx,8)
or     $0x1,%rcx
add    %rax,%rdx
je     13f9 <R_Schrodinger_Fixed_E+0x259>
cs nopw 0x0(%rax,%rax,1)
movsd  0x0(%rbp,%rcx,8),%xmm0
mulsd  %xmm0,%xmm0
movsd  0x0(%r13,%rcx,8),%xmm2
subsd  %xmm10,%xmm2
addsd  %xmm2,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm8,%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,(%r15,%rcx,8)
movsd  0x8(%rbp,%rcx,8),%xmm0
mulsd  %xmm0,%xmm0
movsd  0x8(%r13,%rcx,8),%xmm2
subsd  %xmm10,%xmm2
addsd  %xmm2,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm8,%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x8(%r15,%rcx,8)
add    $0x2,%rcx
cmp    %rcx,%rax
jne    12a0 <R_Schrodinger_Fixed_E+0x100>
jmp    13f9 <R_Schrodinger_Fixed_E+0x259>
lea    (%r15,%rax,8),%rcx
lea    0x0(,%rax,8),%rdx
add    %rbp,%rdx
lea    0x0(,%rax,8),%rsi
add    %r13,%rsi
cmp    %rdx,%r15
setb   %r9b
cmp    %rcx,%rbp
setb   %r8b
cmp    %rsi,%r15
setb   %dl
cmp    %r13,%rcx
seta   %sil
xor    %ecx,%ecx
test   %r8b,%r9b
jne    1252 <R_Schrodinger_Fixed_E+0xb2>
and    %sil,%dl
jne    1252 <R_Schrodinger_Fixed_E+0xb2>
mov    %eax,%ecx
and    $0xfffffffc,%ecx
movapd %xmm10,%xmm2
unpcklpd %xmm10,%xmm2
movapd %xmm8,%xmm3
unpcklpd %xmm8,%xmm3
movapd %xmm1,%xmm4
unpcklpd %xmm1,%xmm4
lea    0x0(,%rax,8),%rdx
and    $0xffffffffffffffe0,%rdx
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movupd 0x0(%rbp,%rsi,1),%xmm5
movupd 0x10(%rbp,%rsi,1),%xmm6
mulpd  %xmm5,%xmm5
mulpd  %xmm6,%xmm6
movupd 0x0(%r13,%rsi,1),%xmm7
movupd 0x10(%r13,%rsi,1),%xmm0
subpd  %xmm2,%xmm7
subpd  %xmm2,%xmm0
addpd  %xmm7,%xmm7
mulpd  %xmm5,%xmm7
addpd  %xmm0,%xmm0
mulpd  %xmm6,%xmm0
addpd  %xmm3,%xmm7
addpd  %xmm3,%xmm0
mulpd  %xmm4,%xmm7
mulpd  %xmm4,%xmm0
movupd %xmm7,(%r15,%rsi,1)
movupd %xmm0,0x10(%r15,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rdx
jne    1390 <R_Schrodinger_Fixed_E+0x1f0>
cmp    %rax,%rcx
jne    1252 <R_Schrodinger_Fixed_E+0xb2>
mov    %edi,0x18(%rsp)
movsd  0x10(%rsp),%xmm1
movapd %xmm1,%xmm0
mulsd  %xmm9,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x0(%rbp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,(%r14)
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,(%rbx)
movsd  0x8(%rbp),%xmm0
movsd  0x10(%rsp),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x8(%r14)
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x8(%rbx)
movsd  0x10(%rbp),%xmm0
movsd  0x10(%rsp),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x10(%r14)
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x10(%rbx)
movsd  0x18(%rbp),%xmm0
movsd  0x10(%rsp),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,0x18(%r14)
movsd  0x20(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rbx)
movsd  (%r15),%xmm0
mulsd  (%r14),%xmm0
movsd  (%rbx),%xmm1
movsd  (%rsp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%r12)
movsd  0x8(%r15),%xmm0
mulsd  0x8(%r14),%xmm0
movsd  0x8(%rbx),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r12)
movsd  0x10(%r15),%xmm0
mulsd  0x10(%r14),%xmm0
movsd  0x10(%rbx),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%r12)
movsd  0x18(%r15),%xmm0
mulsd  0x18(%r14),%xmm0
movsd  0x18(%rbx),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%r12)
cmpl   $0x3,0x8(%rsp)
jle    1780 <R_Schrodinger_Fixed_E+0x5e0>
mov    0x8(%rsp),%eax
mov    %rax,0x20(%rsp)
mov    $0x3,%ebp
nopl   0x0(%rax)
mov    %ebp,%edi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1050 <Predictor_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
lea    0x1(%rbp),%r13
movsd  %xmm0,0x8(%r14,%rbp,8)
mov    %ebp,%edi
mov    %rbx,%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   1050 <Predictor_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rbx,%rbp,8)
movsd  0x8(%r15,%rbp,8),%xmm1
mulsd  0x8(%r14,%rbp,8),%xmm1
mulsd  (%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%r12,%rbp,8)
mov    %ebp,%edi
mov    %rbx,%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rbx,%rbp,8)
mov    %ebp,%edi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%r14,%rbp,8)
mulsd  0x8(%r15,%rbp,8),%xmm0
movsd  0x8(%rbx,%rbp,8),%xmm1
mulsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r12,%rbp,8)
mov    %ebp,%edi
mov    %rbx,%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rbx,%rbp,8)
mov    %ebp,%edi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%r14,%rbp,8)
mulsd  0x8(%r15,%rbp,8),%xmm0
movsd  0x8(%rbx,%rbp,8),%xmm1
mulsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r12,%rbp,8)
mov    %ebp,%edi
mov    %rbx,%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rbx,%rbp,8)
mov    %ebp,%edi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%r14,%rbp,8)
mulsd  0x8(%r15,%rbp,8),%xmm0
movsd  0x8(%rbx,%rbp,8),%xmm1
mulsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r12,%rbp,8)
mov    %ebp,%edi
mov    %rbx,%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rbx,%rbp,8)
mov    %ebp,%edi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%r14,%rbp,8)
mulsd  0x8(%r15,%rbp,8),%xmm0
movsd  0x8(%rbx,%rbp,8),%xmm1
mulsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r12,%rbp,8)
mov    %ebp,%edi
mov    %rbx,%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rbx,%rbp,8)
mov    %ebp,%edi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%r14,%rbp,8)
mulsd  0x8(%r15,%rbp,8),%xmm0
movsd  0x8(%rbx,%rbp,8),%xmm1
mulsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r12,%rbp,8)
mov    %ebp,%edi
mov    %rbx,%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rbx,%rbp,8)
mov    %ebp,%edi
mov    %r14,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <Corrector_Out@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%r14,%rbp,8)
mov    %r13,%rbp
cmp    %r13,0x20(%rsp)
jne    1530 <R_Schrodinger_Fixed_E+0x390>
mov    0x8(%rsp),%rdi
movsd  0x10(%rsp),%xmm0
mov    %r14,%rsi
mov    $0x1,%al
call   1070 <Norm_LogGrid@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     17ac <R_Schrodinger_Fixed_E+0x60c>
sqrtsd %xmm0,%xmm0
jmp    17b1 <R_Schrodinger_Fixed_E+0x611>
call   1090 <sqrt@plt>
mov    0x18(%rsp),%r10d
mov    0x8(%rsp),%rcx
lea    0x1(%rcx),%eax
test   %ecx,%ecx
js     19a1 <R_Schrodinger_Fixed_E+0x801>
movsd  0x832(%rip),%xmm1
divsd  %xmm0,%xmm1
mov    %eax,%ecx
cmp    $0x4,%eax
jb     17f3 <R_Schrodinger_Fixed_E+0x653>
lea    (%rbx,%rcx,8),%rdx
cmp    %r14,%rdx
jbe    187e <R_Schrodinger_Fixed_E+0x6de>
lea    (%r14,%rcx,8),%rdx
cmp    %rbx,%rdx
jbe    187e <R_Schrodinger_Fixed_E+0x6de>
xor    %edx,%edx
mov    %rdx,%rsi
not    %rsi
test   $0x1,%cl
je     1822 <R_Schrodinger_Fixed_E+0x682>
movsd  (%r14,%rdx,8),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%r14,%rdx,8)
movsd  (%rbx,%rdx,8),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx,%rdx,8)
or     $0x1,%rdx
add    %rcx,%rsi
je     19a1 <R_Schrodinger_Fixed_E+0x801>
nopl   0x0(%rax,%rax,1)
movsd  (%r14,%rdx,8),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%r14,%rdx,8)
movsd  (%rbx,%rdx,8),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx,%rdx,8)
movsd  0x8(%r14,%rdx,8),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%r14,%rdx,8)
movsd  0x8(%rbx,%rdx,8),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rbx,%rdx,8)
add    $0x2,%rdx
cmp    %rdx,%rcx
jne    1830 <R_Schrodinger_Fixed_E+0x690>
jmp    19a1 <R_Schrodinger_Fixed_E+0x801>
mov    %ecx,%edx
and    $0xfffffffc,%edx
movapd %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
lea    -0x4(%rdx),%rsi
mov    %rsi,%rdi
shr    $0x2,%rdi
add    $0x1,%rdi
test   %rsi,%rsi
je     1bb0 <R_Schrodinger_Fixed_E+0xa10>
movabs $0x7ffffffffffffffc,%rbp
ff ff 7f
or     $0x2,%rbp
and    %rdi,%rbp
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
movupd (%r14,%rsi,8),%xmm2
movupd 0x10(%r14,%rsi,8),%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,(%r14,%rsi,8)
movupd %xmm3,0x10(%r14,%rsi,8)
movupd (%rbx,%rsi,8),%xmm2
movupd 0x10(%rbx,%rsi,8),%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,(%rbx,%rsi,8)
movupd %xmm3,0x10(%rbx,%rsi,8)
movupd 0x20(%r14,%rsi,8),%xmm2
movupd 0x30(%r14,%rsi,8),%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,0x20(%r14,%rsi,8)
movupd %xmm3,0x30(%r14,%rsi,8)
movupd 0x20(%rbx,%rsi,8),%xmm2
movupd 0x30(%rbx,%rsi,8),%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,0x20(%rbx,%rsi,8)
movupd %xmm3,0x30(%rbx,%rsi,8)
add    $0x8,%rsi
add    $0xfffffffffffffffe,%rbp
jne    18c0 <R_Schrodinger_Fixed_E+0x720>
test   $0x1,%dil
je     1998 <R_Schrodinger_Fixed_E+0x7f8>
movupd (%r14,%rsi,8),%xmm2
movupd 0x10(%r14,%rsi,8),%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,(%r14,%rsi,8)
movupd %xmm3,0x10(%r14,%rsi,8)
movupd (%rbx,%rsi,8),%xmm2
movupd 0x10(%rbx,%rsi,8),%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,(%rbx,%rsi,8)
movupd %xmm3,0x10(%rbx,%rsi,8)
cmp    %rcx,%rdx
jne    17f5 <R_Schrodinger_Fixed_E+0x655>
cmp    %r10d,%eax
jge    1b8e <R_Schrodinger_Fixed_E+0x9ee>
cltq
mov    %r10d,%r9d
sub    0x8(%rsp),%r9d
add    $0xfffffffe,%r9d
cmp    $0x3,%r9d
jb     1afb <R_Schrodinger_Fixed_E+0x95b>
lea    (%r14,%rax,8),%rdx
lea    (%r9,%rax,1),%rcx
lea    (%rbx,%rcx,8),%rsi
add    $0x8,%rsi
cmp    %rsi,%rdx
jae    19ec <R_Schrodinger_Fixed_E+0x84c>
lea    (%r14,%rcx,8),%rcx
add    $0x8,%rcx
lea    (%rbx,%rax,8),%rdx
cmp    %rcx,%rdx
jb     1afb <R_Schrodinger_Fixed_E+0x95b>
add    $0x1,%r9
mov    %r9,%r8
and    $0xfffffffffffffffc,%r8
lea    -0x4(%r8),%rcx
mov    %rcx,%rdi
shr    $0x2,%rdi
add    $0x1,%rdi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0xc,%rcx
jae    1a18 <R_Schrodinger_Fixed_E+0x878>
xor    %ebp,%ebp
jmp    1aa8 <R_Schrodinger_Fixed_E+0x908>
and    $0xfffffffffffffffc,%rdi
lea    (%rbx,%rax,8),%rdx
add    $0x70,%rdx
lea    (%r14,%rax,8),%rcx
add    $0x70,%rcx
xor    %ebp,%ebp
xorpd  %xmm0,%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movupd %xmm0,-0x70(%rcx,%rbp,8)
movupd %xmm0,-0x60(%rcx,%rbp,8)
movupd %xmm0,-0x70(%rdx,%rbp,8)
movupd %xmm0,-0x60(%rdx,%rbp,8)
movupd %xmm0,-0x50(%rcx,%rbp,8)
movupd %xmm0,-0x40(%rcx,%rbp,8)
movupd %xmm0,-0x50(%rdx,%rbp,8)
movupd %xmm0,-0x40(%rdx,%rbp,8)
movupd %xmm0,-0x30(%rcx,%rbp,8)
movupd %xmm0,-0x20(%rcx,%rbp,8)
movupd %xmm0,-0x30(%rdx,%rbp,8)
movupd %xmm0,-0x20(%rdx,%rbp,8)
movupd %xmm0,-0x10(%rcx,%rbp,8)
movupd %xmm0,(%rcx,%rbp,8)
movupd %xmm0,-0x10(%rdx,%rbp,8)
movupd %xmm0,(%rdx,%rbp,8)
add    $0x10,%rbp
add    $0xfffffffffffffffc,%rdi
jne    1a40 <R_Schrodinger_Fixed_E+0x8a0>
test   %rsi,%rsi
je     1aef <R_Schrodinger_Fixed_E+0x94f>
add    %rax,%rbp
lea    (%rbx,%rbp,8),%rcx
add    $0x10,%rcx
lea    (%r14,%rbp,8),%rdx
add    $0x10,%rdx
shl    $0x5,%rsi
xor    %edi,%edi
xorpd  %xmm0,%xmm0
nopw   0x0(%rax,%rax,1)
movupd %xmm0,-0x10(%rdx,%rdi,1)
movupd %xmm0,(%rdx,%rdi,1)
movupd %xmm0,-0x10(%rcx,%rdi,1)
movupd %xmm0,(%rcx,%rdi,1)
add    $0x20,%rdi
cmp    %rdi,%rsi
jne    1ad0 <R_Schrodinger_Fixed_E+0x930>
cmp    %r8,%r9
je     1b8e <R_Schrodinger_Fixed_E+0x9ee>
add    %r8,%rax
mov    %r10d,%edx
sub    %eax,%edx
mov    %eax,%ecx
not    %ecx
add    %r10d,%ecx
and    $0x3,%edx
je     1b29 <R_Schrodinger_Fixed_E+0x989>
nopl   0x0(%rax)
movq   $0x0,(%r14,%rax,8)
movq   $0x0,(%rbx,%rax,8)
add    $0x1,%rax
add    $0xffffffff,%edx
jne    1b10 <R_Schrodinger_Fixed_E+0x970>
cmp    $0x3,%ecx
jb     1b8e <R_Schrodinger_Fixed_E+0x9ee>
mov    %r10d,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movq   $0x0,(%r14,%rax,8)
movq   $0x0,(%rbx,%rax,8)
movq   $0x0,0x8(%r14,%rax,8)
movq   $0x0,0x8(%rbx,%rax,8)
movq   $0x0,0x10(%r14,%rax,8)
movq   $0x0,0x10(%rbx,%rax,8)
movq   $0x0,0x18(%r14,%rax,8)
movq   $0x0,0x18(%rbx,%rax,8)
add    $0x4,%rax
cmp    %eax,%ecx
jne    1b40 <R_Schrodinger_Fixed_E+0x9a0>
mov    %r12,%rdi
xor    %eax,%eax
call   10a0 <dealloc_LogGrid@plt>
mov    %r15,%rdi
xor    %eax,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    10a0 <dealloc_LogGrid@plt>
xor    %esi,%esi
test   $0x1,%dil
jne    1958 <R_Schrodinger_Fixed_E+0x7b8>
jmp    1998 <R_Schrodinger_Fixed_E+0x7f8>

LLVM IR (-O0):
define void @R_Schrodinger_Fixed_E(i32 %0, i32 %1, double* %2, i32 %3, double %4, double* %5, double* %6) {
%8 = alloca i32
%9 = alloca i32
%10 = alloca double*
%11 = alloca i32
%12 = alloca double
%13 = alloca double*
%14 = alloca double*
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%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*
store i32 %0, i32* %8
store i32 %1, i32* %9
store double* %2, double** %10
store i32 %3, i32* %11
store double %4, double* %12
store double* %5, double** %13
store double* %6, double** %14
%27 = load i32, i32* %9
%28 = add nsw i32 %27, 1
%29 = sitofp i32 %28 to double
store double %29, double* %20
%30 = load i32, i32* %9
%31 = load i32, i32* %9
%32 = add nsw i32 %31, 1
%33 = mul nsw i32 %30, %32
%34 = sitofp i32 %33 to double
store double %34, double* %21
%35 = call i32 (...) @N_LogGrid()
store i32 %35, i32* %17
%36 = call i32 (...) @log_amesh_LogGrid()
%37 = sitofp i32 %36 to double
store double %37, double* %18
%38 = load double, double* %18
%39 = load double, double* %18
%40 = fmul double %38, %39
store double %40, double* %19
%41 = call i32 (...) @r_LogGrid()
%42 = sext i32 %41 to i64
%43 = inttoptr i64 %42 to double*
store double* %43, double** %24
%44 = call i32 (...) @alloc_LogGrid()
%45 = sext i32 %44 to i64
%46 = inttoptr i64 %45 to double*
store double* %46, double** %25
%47 = call i32 (...) @alloc_LogGrid()
%48 = sext i32 %47 to i64
%49 = inttoptr i64 %48 to double*
store double* %49, double** %26
store i32 0, i32* %15
br label %50
50: ; preds = %80, %7
%51 = load i32, i32* %15
%52 = load i32, i32* %17
%53 = icmp slt i32 %51, %52
br i1 %53, label %54, label %83
54: ; preds = %50
%55 = load double*, double** %24
%56 = load i32, i32* %15
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds double, double* %55, i64 %57
%59 = load double, double* %58
store double %59, double* %22
%60 = load double, double* %22
%61 = load double, double* %22
%62 = fmul double %60, %61
store double %62, double* %22
%63 = load double, double* %19
%64 = load double, double* %21
%65 = load double*, double** %10
%66 = load i32, i32* %15
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds double, double* %65, i64 %67
%69 = load double, double* %68
%70 = load double, double* %12
%71 = fsub double %69, %70
%72 = fmul double 2.000000e+00, %71
%73 = load double, double* %22
%74 = call double @llvm.fmuladd.f64(double %72, double %73, double %64)
%75 = fmul double %63, %74
%76 = load double*, double** %25
%77 = load i32, i32* %15
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds double, double* %76, i64 %78
store double %75, double* %79
br label %80
80: ; preds = %54
%81 = load i32, i32* %15
%82 = add nsw i32 %81, 1
store i32 %82, i32* %15
br label %50
83: ; preds = %50
store i32 0, i32* %15
br label %84
84: ; preds = %112, %83
%85 = load i32, i32* %15
%86 = icmp slt i32 %85, 4
br i1 %86, label %87, label %115
87: ; preds = %84
%88 = load double*, double** %24
%89 = load i32, i32* %15
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds double, double* %88, i64 %90
%92 = load double, double* %91
%93 = load double, double* %20
%94 = call double @pow(double %92, double %93)
%95 = load double*, double** %13
%96 = load i32, i32* %15
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds double, double* %95, i64 %97
store double %94, double* %98
%99 = load double, double* %18
%100 = load double, double* %20
%101 = fmul double %99, %100
%102 = load double*, double** %13
%103 = load i32, i32* %15
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds double, double* %102, i64 %104
%106 = load double, double* %105
%107 = fmul double %101, %106
%108 = load double*, double** %14
%109 = load i32, i32* %15
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds double, double* %108, i64 %110
store double %107, double* %111
br label %112
112: ; preds = %87
%113 = load i32, i32* %15
%114 = add nsw i32 %113, 1
store i32 %114, i32* %15
br label %84
115: ; preds = %84
store i32 0, i32* %15
br label %116
116: ; preds = %142, %115
%117 = load i32, i32* %15
%118 = icmp slt i32 %117, 4
br i1 %118, label %119, label %145
119: ; preds = %116
%120 = load double, double* %18
%121 = load double*, double** %14
%122 = load i32, i32* %15
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds double, double* %121, i64 %123
%125 = load double, double* %124
%126 = load double*, double** %25
%127 = load i32, i32* %15
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds double, double* %126, i64 %128
%130 = load double, double* %129
%131 = load double*, double** %13
%132 = load i32, i32* %15
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds double, double* %131, i64 %133
%135 = load double, double* %134
%136 = fmul double %130, %135
%137 = call double @llvm.fmuladd.f64(double %120, double %125, double %136)
%138 = load double*, double** %26
%139 = load i32, i32* %15
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds double, double* %138, i64 %140
store double %137, double* %141
br label %142
142: ; preds = %119
%143 = load i32, i32* %15
%144 = add nsw i32 %143, 1
store i32 %144, i32* %15
br label %116
145: ; preds = %116
store i32 3, i32* %15
br label %146
146: ; preds = %225, %145
%147 = load i32, i32* %15
%148 = load i32, i32* %11
%149 = icmp slt i32 %147, %148
br i1 %149, label %150, label %228
150: ; preds = %146
%151 = load i32, i32* %15
%152 = load double*, double** %13
%153 = load double*, double** %14
%154 = call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Predictor_Out to i32 (i32, double*, double*, ...)*)(i32 %151, double* %152, double* %153)
%155 = sitofp i32 %154 to double
%156 = load double*, double** %13
%157 = load i32, i32* %15
%158 = add nsw i32 %157, 1
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds double, double* %156, i64 %159
store double %155, double* %160
%161 = load i32, i32* %15
%162 = load double*, double** %14
%163 = load double*, double** %26
%164 = call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Predictor_Out to i32 (i32, double*, double*, ...)*)(i32 %161, double* %162, double* %163)
%165 = sitofp i32 %164 to double
%166 = load double*, double** %14
%167 = load i32, i32* %15
%168 = add nsw i32 %167, 1
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds double, double* %166, i64 %169
store double %165, double* %170
store i32 0, i32* %16
br label %171
171: ; preds = %221, %150
%172 = load i32, i32* %16
%173 = icmp slt i32 %172, 6
br i1 %173, label %174, label %224
174: ; preds = %171
%175 = load double, double* %18
%176 = load double*, double** %14
%177 = load i32, i32* %15
%178 = add nsw i32 %177, 1
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds double, double* %176, i64 %179
%181 = load double, double* %180
%182 = load double*, double** %25
%183 = load i32, i32* %15
%184 = add nsw i32 %183, 1
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds double, double* %182, i64 %185
%187 = load double, double* %186
%188 = load double*, double** %13
%189 = load i32, i32* %15
%190 = add nsw i32 %189, 1
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds double, double* %188, i64 %191
%193 = load double, double* %192
%194 = fmul double %187, %193
%195 = call double @llvm.fmuladd.f64(double %175, double %181, double %194)
%196 = load double*, double** %26
%197 = load i32, i32* %15
%198 = add nsw i32 %197, 1
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds double, double* %196, i64 %199
store double %195, double* %200
%201 = load i32, i32* %15
%202 = load double*, double** %14
%203 = load double*, double** %26
%204 = call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %201, double* %202, double* %203)
%205 = sitofp i32 %204 to double
%206 = load double*, double** %14
%207 = load i32, i32* %15
%208 = add nsw i32 %207, 1
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds double, double* %206, i64 %209
store double %205, double* %210
%211 = load i32, i32* %15
%212 = load double*, double** %13
%213 = load double*, double** %14
%214 = call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %211, double* %212, double* %213)
%215 = sitofp i32 %214 to double
%216 = load double*, double** %13
%217 = load i32, i32* %15
%218 = add nsw i32 %217, 1
%219 = sext i32 %218 to i64
%220 = getelementptr inbounds double, double* %216, i64 %219
store double %215, double* %220
br label %221
221: ; preds = %174
%222 = load i32, i32* %16
%223 = add nsw i32 %222, 1
store i32 %223, i32* %16
br label %171
224: ; preds = %171
br label %225
225: ; preds = %224
%226 = load i32, i32* %15
%227 = add nsw i32 %226, 1
store i32 %227, i32* %15
br label %146
228: ; preds = %146
%229 = load i32, i32* %11
%230 = load double, double* %20
%231 = load double*, double** %13
%232 = call i32 (i32, double, double*, ...) bitcast (i32 (...)* @Norm_LogGrid to i32 (i32, double, double*, ...)*)(i32 %229, double %230, double* %231)
%233 = sitofp i32 %232 to double
store double %233, double* %23
%234 = load double, double* %23
%235 = call double @sqrt(double %234)
%236 = fdiv double 1.000000e+00, %235
store double %236, double* %23
store i32 0, i32* %15
br label %237
237: ; preds = %264, %228
%238 = load i32, i32* %15
%239 = load i32, i32* %11
%240 = icmp sle i32 %238, %239
br i1 %240, label %241, label %267
241: ; preds = %237
%242 = load double, double* %23
%243 = load double*, double** %13
%244 = load i32, i32* %15
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds double, double* %243, i64 %245
%247 = load double, double* %246
%248 = fmul double %242, %247
%249 = load double*, double** %13
%250 = load i32, i32* %15
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds double, double* %249, i64 %251
store double %248, double* %252
%253 = load double, double* %23
%254 = load double*, double** %14
%255 = load i32, i32* %15
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds double, double* %254, i64 %256
%258 = load double, double* %257
%259 = fmul double %253, %258
%260 = load double*, double** %14
%261 = load i32, i32* %15
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds double, double* %260, i64 %262
store double %259, double* %263
br label %264
264: ; preds = %241
%265 = load i32, i32* %15
%266 = add nsw i32 %265, 1
store i32 %266, i32* %15
br label %237
267: ; preds = %237
%268 = load i32, i32* %11
%269 = add nsw i32 %268, 1
store i32 %269, i32* %15
br label %270
270: ; preds = %283, %267
%271 = load i32, i32* %15
%272 = load i32, i32* %17
%273 = icmp slt i32 %271, %272
br i1 %273, label %274, label %286
274: ; preds = %270
%275 = load double*, double** %13
%276 = load i32, i32* %15
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds double, double* %275, i64 %277
store double 0.000000e+00, double* %278
%279 = load double*, double** %14
%280 = load i32, i32* %15
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds double, double* %279, i64 %281
store double 0.000000e+00, double* %282
br label %283
283: ; preds = %274
%284 = load i32, i32* %15
%285 = add nsw i32 %284, 1
store i32 %285, i32* %15
br label %270
286: ; preds = %270
%287 = load double*, double** %26
%288 = call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %287)
%289 = load double*, double** %25
%290 = call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %289)
ret void
}

LLVM IR (-O2):
define void @R_Schrodinger_Fixed_E(i32 %0, i32 %1, double* nocapture %2, i32 %3, double %4, double* %5, double* %6) {
%8 = add nsw i32 %1, 1
%9 = sitofp i32 %8 to double
%10 = mul nsw i32 %8, %1
%11 = sitofp i32 %10 to double
%12 = tail call i32 (...) @N_LogGrid()
%13 = tail call i32 (...) @log_amesh_LogGrid()
%14 = sitofp i32 %13 to double
%15 = fmul double %14, %14
%16 = tail call i32 (...) @r_LogGrid()
%17 = sext i32 %16 to i64
%18 = inttoptr i64 %17 to double*
%19 = inttoptr i64 %17 to i8*
%20 = tail call i32 (...) @alloc_LogGrid()
%21 = sext i32 %20 to i64
%22 = inttoptr i64 %21 to double*
%23 = inttoptr i64 %21 to i8*
%24 = tail call i32 (...) @alloc_LogGrid()
%25 = sext i32 %24 to i64
%26 = inttoptr i64 %25 to double*
%27 = icmp sgt i32 %12, 0
br i1 %27, label %28, label %112
28: ; preds = %7
%29 = zext i32 %12 to i64
%30 = icmp ult i32 %12, 4
br i1 %30, label %91, label %31
31: ; preds = %28
%32 = getelementptr double, double* %22, i64 %29
%33 = bitcast double* %32 to i8*
%34 = getelementptr double, double* %18, i64 %29
%35 = bitcast double* %34 to i8*
%36 = getelementptr double, double* %2, i64 %29
%37 = bitcast double* %36 to i8*
%38 = icmp ult i8* %23, %35
%39 = icmp ult i8* %19, %33
%40 = and i1 %38, %39
%41 = icmp ult i8* %23, %37
%42 = icmp ugt double* %32, %2
%43 = and i1 %41, %42
%44 = or i1 %40, %43
br i1 %44, label %91, label %45
45: ; preds = %31
%46 = and i64 %29, 4294967292
%47 = insertelement <2 x double> poison, double %4, i64 0
%48 = shufflevector <2 x double> %47, <2 x double> poison, <2 x i32> zeroinitializer
%49 = insertelement <2 x double> poison, double %4, i64 0
%50 = shufflevector <2 x double> %49, <2 x double> poison, <2 x i32> zeroinitializer
%51 = insertelement <2 x double> poison, double %11, i64 0
%52 = shufflevector <2 x double> %51, <2 x double> poison, <2 x i32> zeroinitializer
%53 = insertelement <2 x double> poison, double %11, i64 0
%54 = shufflevector <2 x double> %53, <2 x double> poison, <2 x i32> zeroinitializer
%55 = insertelement <2 x double> poison, double %15, i64 0
%56 = shufflevector <2 x double> %55, <2 x double> poison, <2 x i32> zeroinitializer
%57 = insertelement <2 x double> poison, double %15, i64 0
%58 = shufflevector <2 x double> %57, <2 x double> poison, <2 x i32> zeroinitializer
br label %59
59: ; preds = %59, %45
%60 = phi i64 [ 0, %45 ], [ %87, %59 ]
%61 = getelementptr inbounds double, double* %18, i64 %60
%62 = bitcast double* %61 to <2 x double>*
%63 = load <2 x double>, <2 x double>* %62
%64 = getelementptr inbounds double, double* %61, i64 2
%65 = bitcast double* %64 to <2 x double>*
%66 = load <2 x double>, <2 x double>* %65
%67 = fmul <2 x double> %63, %63
%68 = fmul <2 x double> %66, %66
%69 = getelementptr inbounds double, double* %2, i64 %60
%70 = bitcast double* %69 to <2 x double>*
%71 = load <2 x double>, <2 x double>* %70
%72 = getelementptr inbounds double, double* %69, i64 2
%73 = bitcast double* %72 to <2 x double>*
%74 = load <2 x double>, <2 x double>* %73
%75 = fsub <2 x double> %71, %48
%76 = fsub <2 x double> %74, %50
%77 = fmul <2 x double> %75, <double 2.000000e+00, double 2.000000e+00>
%78 = fmul <2 x double> %76, <double 2.000000e+00, double 2.000000e+00>
%79 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %77, <2 x double> %67, <2 x double> %52)
%80 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %78, <2 x double> %68, <2 x double> %54)
%81 = fmul <2 x double> %56, %79
%82 = fmul <2 x double> %58, %80
%83 = getelementptr inbounds double, double* %22, i64 %60
%84 = bitcast double* %83 to <2 x double>*
store <2 x double> %81, <2 x double>* %84
%85 = getelementptr inbounds double, double* %83, i64 2
%86 = bitcast double* %85 to <2 x double>*
store <2 x double> %82, <2 x double>* %86
%87 = add nuw i64 %60, 4
%88 = icmp eq i64 %87, %46
br i1 %88, label %89, label %59
89: ; preds = %59
%90 = icmp eq i64 %46, %29
br i1 %90, label %112, label %91
91: ; preds = %31, %28, %89
%92 = phi i64 [ 0, %31 ], [ 0, %28 ], [ %46, %89 ]
%93 = xor i64 %92, -1
%94 = and i64 %29, 1
%95 = icmp eq i64 %94, 0
br i1 %95, label %108, label %96
96: ; preds = %91
%97 = getelementptr inbounds double, double* %18, i64 %92
%98 = load double, double* %97
%99 = fmul double %98, %98
%100 = getelementptr inbounds double, double* %2, i64 %92
%101 = load double, double* %100
%102 = fsub double %101, %4
%103 = fmul double %102, 2.000000e+00
%104 = tail call double @llvm.fmuladd.f64(double %103, double %99, double %11)
%105 = fmul double %15, %104
%106 = getelementptr inbounds double, double* %22, i64 %92
store double %105, double* %106
%107 = or i64 %92, 1
br label %108
108: ; preds = %96, %91
%109 = phi i64 [ %92, %91 ], [ %107, %96 ]
%110 = sub nsw i64 0, %29
%111 = icmp eq i64 %93, %110
br i1 %111, label %112, label %162
112: ; preds = %108, %162, %89, %7
%113 = fmul double %9, %14
%114 = load double, double* %18
%115 = tail call double @pow(double %114, double %9)
store double %115, double* %5
%116 = fmul double %113, %115
store double %116, double* %6
%117 = getelementptr inbounds double, double* %18, i64 1
%118 = load double, double* %117
%119 = tail call double @pow(double %118, double %9)
%120 = getelementptr inbounds double, double* %5, i64 1
store double %119, double* %120
%121 = fmul double %113, %119
%122 = getelementptr inbounds double, double* %6, i64 1
store double %121, double* %122
%123 = getelementptr inbounds double, double* %18, i64 2
%124 = load double, double* %123
%125 = tail call double @pow(double %124, double %9)
%126 = getelementptr inbounds double, double* %5, i64 2
store double %125, double* %126
%127 = fmul double %113, %125
%128 = getelementptr inbounds double, double* %6, i64 2
store double %127, double* %128
%129 = getelementptr inbounds double, double* %18, i64 3
%130 = load double, double* %129
%131 = tail call double @pow(double %130, double %9)
%132 = getelementptr inbounds double, double* %5, i64 3
store double %131, double* %132
%133 = fmul double %113, %131
%134 = getelementptr inbounds double, double* %6, i64 3
store double %133, double* %134
%135 = load double, double* %6
%136 = load double, double* %22
%137 = load double, double* %5
%138 = fmul double %136, %137
%139 = tail call double @llvm.fmuladd.f64(double %14, double %135, double %138)
store double %139, double* %26
%140 = load double, double* %122
%141 = getelementptr inbounds double, double* %22, i64 1
%142 = load double, double* %141
%143 = load double, double* %120
%144 = fmul double %142, %143
%145 = tail call double @llvm.fmuladd.f64(double %14, double %140, double %144)
%146 = getelementptr inbounds double, double* %26, i64 1
store double %145, double* %146
%147 = load double, double* %128
%148 = getelementptr inbounds double, double* %22, i64 2
%149 = load double, double* %148
%150 = load double, double* %126
%151 = fmul double %149, %150
%152 = tail call double @llvm.fmuladd.f64(double %14, double %147, double %151)
%153 = getelementptr inbounds double, double* %26, i64 2
store double %152, double* %153
%154 = load double, double* %134
%155 = getelementptr inbounds double, double* %22, i64 3
%156 = load double, double* %155
%157 = load double, double* %132
%158 = fmul double %156, %157
%159 = tail call double @llvm.fmuladd.f64(double %14, double %154, double %158)
%160 = getelementptr inbounds double, double* %26, i64 3
store double %159, double* %160
%161 = icmp sgt i32 %3, 3
br i1 %161, label %187, label %250
162: ; preds = %108, %162
%163 = phi i64 [ %185, %162 ], [ %109, %108 ]
%164 = getelementptr inbounds double, double* %18, i64 %163
%165 = load double, double* %164
%166 = fmul double %165, %165
%167 = getelementptr inbounds double, double* %2, i64 %163
%168 = load double, double* %167
%169 = fsub double %168, %4
%170 = fmul double %169, 2.000000e+00
%171 = tail call double @llvm.fmuladd.f64(double %170, double %166, double %11)
%172 = fmul double %15, %171
%173 = getelementptr inbounds double, double* %22, i64 %163
store double %172, double* %173
%174 = add nuw nsw i64 %163, 1
%175 = getelementptr inbounds double, double* %18, i64 %174
%176 = load double, double* %175
%177 = fmul double %176, %176
%178 = getelementptr inbounds double, double* %2, i64 %174
%179 = load double, double* %178
%180 = fsub double %179, %4
%181 = fmul double %180, 2.000000e+00
%182 = tail call double @llvm.fmuladd.f64(double %181, double %177, double %11)
%183 = fmul double %15, %182
%184 = getelementptr inbounds double, double* %22, i64 %174
store double %183, double* %184
%185 = add nuw nsw i64 %163, 2
%186 = icmp eq i64 %185, %29
br i1 %186, label %112, label %162
187: ; preds = %112
%188 = zext i32 %3 to i64
br label %189
189: ; preds = %187, %189
%190 = phi i64 [ 3, %187 ], [ %194, %189 ]
%191 = trunc i64 %190 to i32
%192 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Predictor_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %5, double* %6)
%193 = sitofp i32 %192 to double
%194 = add nuw nsw i64 %190, 1
%195 = getelementptr inbounds double, double* %5, i64 %194
store double %193, double* %195
%196 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Predictor_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %6, double* %26)
%197 = sitofp i32 %196 to double
%198 = getelementptr inbounds double, double* %6, i64 %194
store double %197, double* %198
%199 = getelementptr inbounds double, double* %22, i64 %194
%200 = getelementptr inbounds double, double* %26, i64 %194
%201 = load double, double* %199
%202 = load double, double* %195
%203 = fmul double %201, %202
%204 = tail call double @llvm.fmuladd.f64(double %14, double %197, double %203)
store double %204, double* %200
%205 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %6, double* %26)
%206 = sitofp i32 %205 to double
store double %206, double* %198
%207 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %5, double* %6)
%208 = sitofp i32 %207 to double
store double %208, double* %195
%209 = load double, double* %198
%210 = load double, double* %199
%211 = fmul double %210, %208
%212 = tail call double @llvm.fmuladd.f64(double %14, double %209, double %211)
store double %212, double* %200
%213 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %6, double* %26)
%214 = sitofp i32 %213 to double
store double %214, double* %198
%215 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %5, double* %6)
%216 = sitofp i32 %215 to double
store double %216, double* %195
%217 = load double, double* %198
%218 = load double, double* %199
%219 = fmul double %218, %216
%220 = tail call double @llvm.fmuladd.f64(double %14, double %217, double %219)
store double %220, double* %200
%221 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %6, double* %26)
%222 = sitofp i32 %221 to double
store double %222, double* %198
%223 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %5, double* %6)
%224 = sitofp i32 %223 to double
store double %224, double* %195
%225 = load double, double* %198
%226 = load double, double* %199
%227 = fmul double %226, %224
%228 = tail call double @llvm.fmuladd.f64(double %14, double %225, double %227)
store double %228, double* %200
%229 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %6, double* %26)
%230 = sitofp i32 %229 to double
store double %230, double* %198
%231 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %5, double* %6)
%232 = sitofp i32 %231 to double
store double %232, double* %195
%233 = load double, double* %198
%234 = load double, double* %199
%235 = fmul double %234, %232
%236 = tail call double @llvm.fmuladd.f64(double %14, double %233, double %235)
store double %236, double* %200
%237 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %6, double* %26)
%238 = sitofp i32 %237 to double
store double %238, double* %198
%239 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %5, double* %6)
%240 = sitofp i32 %239 to double
store double %240, double* %195
%241 = load double, double* %198
%242 = load double, double* %199
%243 = fmul double %242, %240
%244 = tail call double @llvm.fmuladd.f64(double %14, double %241, double %243)
store double %244, double* %200
%245 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %6, double* %26)
%246 = sitofp i32 %245 to double
store double %246, double* %198
%247 = tail call i32 (i32, double*, double*, ...) bitcast (i32 (...)* @Corrector_Out to i32 (i32, double*, double*, ...)*)(i32 %191, double* %5, double* %6)
%248 = sitofp i32 %247 to double
store double %248, double* %195
%249 = icmp eq i64 %194, %188
br i1 %249, label %250, label %189
250: ; preds = %189, %112
%251 = tail call i32 (i32, double, double*, ...) bitcast (i32 (...)* @Norm_LogGrid to i32 (i32, double, double*, ...)*)(i32 %3, double %9, double* %5)
%252 = sitofp i32 %251 to double
%253 = tail call double @sqrt(double %252)
%254 = fdiv double 1.000000e+00, %253
%255 = icmp slt i32 %3, 0
%256 = add i32 %3, 1
br i1 %255, label %369, label %257
257: ; preds = %250
%258 = zext i32 %256 to i64
%259 = icmp ult i32 %256, 4
br i1 %259, label %352, label %260
260: ; preds = %257
%261 = getelementptr double, double* %5, i64 %258
%262 = getelementptr double, double* %6, i64 %258
%263 = icmp ugt double* %262, %5
%264 = icmp ugt double* %261, %6
%265 = and i1 %263, %264
br i1 %265, label %352, label %266
266: ; preds = %260
%267 = and i64 %258, 4294967292
%268 = insertelement <2 x double> poison, double %254, i64 0
%269 = shufflevector <2 x double> %268, <2 x double> poison, <2 x i32> zeroinitializer
%270 = insertelement <2 x double> poison, double %254, i64 0
%271 = shufflevector <2 x double> %270, <2 x double> poison, <2 x i32> zeroinitializer
%272 = add nsw i64 %267, -4
%273 = lshr exact i64 %272, 2
%274 = add nuw nsw i64 %273, 1
%275 = and i64 %274, 1
%276 = icmp eq i64 %272, 0
br i1 %276, label %326, label %277
277: ; preds = %266
%278 = and i64 %274, 9223372036854775806
br label %279
279: ; preds = %279, %277
%280 = phi i64 [ 0, %277 ], [ %323, %279 ]
%281 = phi i64 [ 0, %277 ], [ %324, %279 ]
%282 = getelementptr inbounds double, double* %5, i64 %280
%283 = bitcast double* %282 to <2 x double>*
%284 = load <2 x double>, <2 x double>* %283
%285 = getelementptr inbounds double, double* %282, i64 2
%286 = bitcast double* %285 to <2 x double>*
%287 = load <2 x double>, <2 x double>* %286
%288 = fmul <2 x double> %269, %284
%289 = fmul <2 x double> %271, %287
%290 = bitcast double* %282 to <2 x double>*
store <2 x double> %288, <2 x double>* %290
%291 = bitcast double* %285 to <2 x double>*
store <2 x double> %289, <2 x double>* %291
%292 = getelementptr inbounds double, double* %6, i64 %280
%293 = bitcast double* %292 to <2 x double>*
%294 = load <2 x double>, <2 x double>* %293
%295 = getelementptr inbounds double, double* %292, i64 2
%296 = bitcast double* %295 to <2 x double>*
%297 = load <2 x double>, <2 x double>* %296
%298 = fmul <2 x double> %269, %294
%299 = fmul <2 x double> %271, %297
%300 = bitcast double* %292 to <2 x double>*
store <2 x double> %298, <2 x double>* %300
%301 = bitcast double* %295 to <2 x double>*
store <2 x double> %299, <2 x double>* %301
%302 = or i64 %280, 4
%303 = getelementptr inbounds double, double* %5, i64 %302
%304 = bitcast double* %303 to <2 x double>*
%305 = load <2 x double>, <2 x double>* %304
%306 = getelementptr inbounds double, double* %303, i64 2
%307 = bitcast double* %306 to <2 x double>*
%308 = load <2 x double>, <2 x double>* %307
%309 = fmul <2 x double> %269, %305
%310 = fmul <2 x double> %271, %308
%311 = bitcast double* %303 to <2 x double>*
store <2 x double> %309, <2 x double>* %311
%312 = bitcast double* %306 to <2 x double>*
store <2 x double> %310, <2 x double>* %312
%313 = getelementptr inbounds double, double* %6, i64 %302
%314 = bitcast double* %313 to <2 x double>*
%315 = load <2 x double>, <2 x double>* %314
%316 = getelementptr inbounds double, double* %313, i64 2
%317 = bitcast double* %316 to <2 x double>*
%318 = load <2 x double>, <2 x double>* %317
%319 = fmul <2 x double> %269, %315
%320 = fmul <2 x double> %271, %318
%321 = bitcast double* %313 to <2 x double>*
store <2 x double> %319, <2 x double>* %321
%322 = bitcast double* %316 to <2 x double>*
store <2 x double> %320, <2 x double>* %322
%323 = add nuw i64 %280, 8
%324 = add i64 %281, 2
%325 = icmp eq i64 %324, %278
br i1 %325, label %326, label %279
326: ; preds = %279, %266
%327 = phi i64 [ 0, %266 ], [ %323, %279 ]
%328 = icmp eq i64 %275, 0
br i1 %328, label %350, label %329
329: ; preds = %326
%330 = getelementptr inbounds double, double* %5, i64 %327
%331 = bitcast double* %330 to <2 x double>*
%332 = load <2 x double>, <2 x double>* %331
%333 = getelementptr inbounds double, double* %330, i64 2
%334 = bitcast double* %333 to <2 x double>*
%335 = load <2 x double>, <2 x double>* %334
%336 = fmul <2 x double> %269, %332
%337 = fmul <2 x double> %271, %335
%338 = bitcast double* %330 to <2 x double>*
store <2 x double> %336, <2 x double>* %338
%339 = bitcast double* %333 to <2 x double>*
store <2 x double> %337, <2 x double>* %339
%340 = getelementptr inbounds double, double* %6, i64 %327
%341 = bitcast double* %340 to <2 x double>*
%342 = load <2 x double>, <2 x double>* %341
%343 = getelementptr inbounds double, double* %340, i64 2
%344 = bitcast double* %343 to <2 x double>*
%345 = load <2 x double>, <2 x double>* %344
%346 = fmul <2 x double> %269, %342
%347 = fmul <2 x double> %271, %345
%348 = bitcast double* %340 to <2 x double>*
store <2 x double> %346, <2 x double>* %348
%349 = bitcast double* %343 to <2 x double>*
store <2 x double> %347, <2 x double>* %349
br label %350
350: ; preds = %326, %329
%351 = icmp eq i64 %267, %258
br i1 %351, label %369, label %352
352: ; preds = %260, %257, %350
%353 = phi i64 [ 0, %260 ], [ 0, %257 ], [ %267, %350 ]
%354 = xor i64 %353, -1
%355 = and i64 %258, 1
%356 = icmp eq i64 %355, 0
br i1 %356, label %365, label %357
357: ; preds = %352
%358 = getelementptr inbounds double, double* %5, i64 %353
%359 = load double, double* %358
%360 = fmul double %254, %359
store double %360, double* %358
%361 = getelementptr inbounds double, double* %6, i64 %353
%362 = load double, double* %361
%363 = fmul double %254, %362
store double %363, double* %361
%364 = or i64 %353, 1
br label %365
365: ; preds = %357, %352
%366 = phi i64 [ %353, %352 ], [ %364, %357 ]
%367 = sub nsw i64 0, %258
%368 = icmp eq i64 %354, %367
br i1 %368, label %369, label %485
369: ; preds = %365, %485, %350, %250
%370 = icmp slt i32 %256, %12
br i1 %370, label %371, label %518
371: ; preds = %369
%372 = sext i32 %256 to i64
%373 = add i32 %12, -2
%374 = sub i32 %373, %3
%375 = zext i32 %374 to i64
%376 = add nuw nsw i64 %375, 1
%377 = icmp ult i32 %374, 3
br i1 %377, label %466, label %378
378: ; preds = %371
%379 = getelementptr double, double* %5, i64 %372
%380 = add i32 %12, -2
%381 = sub i32 %380, %3
%382 = zext i32 %381 to i64
%383 = add nsw i64 %372, %382
%384 = add nsw i64 %383, 1
%385 = getelementptr double, double* %5, i64 %384
%386 = getelementptr double, double* %6, i64 %372
%387 = getelementptr double, double* %6, i64 %384
%388 = icmp ult double* %379, %387
%389 = icmp ult double* %386, %385
%390 = and i1 %388, %389
br i1 %390, label %466, label %391
391: ; preds = %378
%392 = and i64 %376, 8589934588
%393 = add nsw i64 %392, %372
%394 = add nsw i64 %392, -4
%395 = lshr exact i64 %394, 2
%396 = add nuw nsw i64 %395, 1
%397 = and i64 %396, 3
%398 = icmp ult i64 %394, 12
br i1 %398, label %446, label %399
399: ; preds = %391
%400 = and i64 %396, 9223372036854775804
br label %401
401: ; preds = %401, %399
%402 = phi i64 [ 0, %399 ], [ %443, %401 ]
%403 = phi i64 [ 0, %399 ], [ %444, %401 ]
%404 = add i64 %402, %372
%405 = getelementptr inbounds double, double* %5, i64 %404
%406 = bitcast double* %405 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %406
%407 = getelementptr inbounds double, double* %405, i64 2
%408 = bitcast double* %407 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %408
%409 = getelementptr inbounds double, double* %6, i64 %404
%410 = bitcast double* %409 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %410
%411 = getelementptr inbounds double, double* %409, i64 2
%412 = bitcast double* %411 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %412
%413 = or i64 %402, 4
%414 = add i64 %413, %372
%415 = getelementptr inbounds double, double* %5, i64 %414
%416 = bitcast double* %415 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %416
%417 = getelementptr inbounds double, double* %415, i64 2
%418 = bitcast double* %417 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %418
%419 = getelementptr inbounds double, double* %6, i64 %414
%420 = bitcast double* %419 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %420
%421 = getelementptr inbounds double, double* %419, i64 2
%422 = bitcast double* %421 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %422
%423 = or i64 %402, 8
%424 = add i64 %423, %372
%425 = getelementptr inbounds double, double* %5, i64 %424
%426 = bitcast double* %425 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %426
%427 = getelementptr inbounds double, double* %425, i64 2
%428 = bitcast double* %427 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %428
%429 = getelementptr inbounds double, double* %6, i64 %424
%430 = bitcast double* %429 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %430
%431 = getelementptr inbounds double, double* %429, i64 2
%432 = bitcast double* %431 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %432
%433 = or i64 %402, 12
%434 = add i64 %433, %372
%435 = getelementptr inbounds double, double* %5, i64 %434
%436 = bitcast double* %435 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %436
%437 = getelementptr inbounds double, double* %435, i64 2
%438 = bitcast double* %437 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %438
%439 = getelementptr inbounds double, double* %6, i64 %434
%440 = bitcast double* %439 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %440
%441 = getelementptr inbounds double, double* %439, i64 2
%442 = bitcast double* %441 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %442
%443 = add nuw i64 %402, 16
%444 = add nuw i64 %403, 4
%445 = icmp eq i64 %444, %400
br i1 %445, label %446, label %401
446: ; preds = %401, %391
%447 = phi i64 [ 0, %391 ], [ %443, %401 ]
%448 = icmp eq i64 %397, 0
br i1 %448, label %464, label %449
449: ; preds = %446, %449
%450 = phi i64 [ %461, %449 ], [ %447, %446 ]
%451 = phi i64 [ %462, %449 ], [ 0, %446 ]
%452 = add i64 %450, %372
%453 = getelementptr inbounds double, double* %5, i64 %452
%454 = bitcast double* %453 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %454
%455 = getelementptr inbounds double, double* %453, i64 2
%456 = bitcast double* %455 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %456
%457 = getelementptr inbounds double, double* %6, i64 %452
%458 = bitcast double* %457 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %458
%459 = getelementptr inbounds double, double* %457, i64 2
%460 = bitcast double* %459 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %460
%461 = add nuw i64 %450, 4
%462 = add i64 %451, 1
%463 = icmp eq i64 %462, %397
br i1 %463, label %464, label %449
464: ; preds = %449, %446
%465 = icmp eq i64 %376, %392
br i1 %465, label %518, label %466
466: ; preds = %378, %371, %464
%467 = phi i64 [ %372, %378 ], [ %372, %371 ], [ %393, %464 ]
%468 = trunc i64 %467 to i32
%469 = sub i32 %12, %468
%470 = xor i32 %468, -1
%471 = add i32 %12, %470
%472 = and i32 %469, 3
%473 = icmp eq i32 %472, 0
br i1 %473, label %482, label %474
474: ; preds = %466, %474
%475 = phi i64 [ %479, %474 ], [ %467, %466 ]
%476 = phi i32 [ %480, %474 ], [ 0, %466 ]
%477 = getelementptr inbounds double, double* %5, i64 %475
store double 0.000000e+00, double* %477
%478 = getelementptr inbounds double, double* %6, i64 %475
store double 0.000000e+00, double* %478
%479 = add nsw i64 %475, 1
%480 = add i32 %476, 1
%481 = icmp eq i32 %480, %472
br i1 %481, label %482, label %474
482: ; preds = %474, %466
%483 = phi i64 [ %467, %466 ], [ %479, %474 ]
%484 = icmp ult i32 %471, 3
br i1 %484, label %518, label %502
485: ; preds = %365, %485
%486 = phi i64 [ %500, %485 ], [ %366, %365 ]
%487 = getelementptr inbounds double, double* %5, i64 %486
%488 = load double, double* %487
%489 = fmul double %254, %488
store double %489, double* %487
%490 = getelementptr inbounds double, double* %6, i64 %486
%491 = load double, double* %490
%492 = fmul double %254, %491
store double %492, double* %490
%493 = add nuw nsw i64 %486, 1
%494 = getelementptr inbounds double, double* %5, i64 %493
%495 = load double, double* %494
%496 = fmul double %254, %495
store double %496, double* %494
%497 = getelementptr inbounds double, double* %6, i64 %493
%498 = load double, double* %497
%499 = fmul double %254, %498
store double %499, double* %497
%500 = add nuw nsw i64 %486, 2
%501 = icmp eq i64 %500, %258
br i1 %501, label %369, label %485
502: ; preds = %482, %502
%503 = phi i64 [ %515, %502 ], [ %483, %482 ]
%504 = getelementptr inbounds double, double* %5, i64 %503
store double 0.000000e+00, double* %504
%505 = getelementptr inbounds double, double* %6, i64 %503
store double 0.000000e+00, double* %505
%506 = add nsw i64 %503, 1
%507 = getelementptr inbounds double, double* %5, i64 %506
store double 0.000000e+00, double* %507
%508 = getelementptr inbounds double, double* %6, i64 %506
store double 0.000000e+00, double* %508
%509 = add nsw i64 %503, 2
%510 = getelementptr inbounds double, double* %5, i64 %509
store double 0.000000e+00, double* %510
%511 = getelementptr inbounds double, double* %6, i64 %509
store double 0.000000e+00, double* %511
%512 = add nsw i64 %503, 3
%513 = getelementptr inbounds double, double* %5, i64 %512
store double 0.000000e+00, double* %513
%514 = getelementptr inbounds double, double* %6, i64 %512
store double 0.000000e+00, double* %514
%515 = add nsw i64 %503, 4
%516 = trunc i64 %515 to i32
%517 = icmp eq i32 %12, %516
br i1 %517, label %518, label %502
518: ; preds = %482, %502, %464, %369
%519 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %26)
%520 = tail call i32 (double*, ...) bitcast (i32 (...)* @dealloc_LogGrid to i32 (double*, ...)*)(double* %22)
ret void
}