void reg_ev_full(double val[], double x0[], double x1[], double x2[],
                 double f[], double fx0[], double fx1[], double fx2[], int ix0,
                 int ix1, int ix2, int ix, int d0, int d1, int d2) {
  int i, iter = -1, loc;
  double dx0gap, dx1gap, dx2gap, temp, multi, a[64], fin[64];
  double *dx0 = malloc(ix * sizeof(double));
  double *dx1 = malloc(ix * sizeof(double));
  double *dx2 = malloc(ix * sizeof(double));
  double *tempx0 = malloc(ix * sizeof(double));
  double *tempx1 = malloc(ix * sizeof(double));
  double *tempx2 = malloc(ix * sizeof(double));
  int *pos = malloc(ix * sizeof(int));
  int *indx = malloc(ix * sizeof(int));
  dx0gap = fx0[1] - fx0[0];
  dx1gap = fx1[1] - fx1[0];
  dx2gap = fx2[1] - fx2[0];
  multi = pow(pow(dx0gap, d0) * pow(dx1gap, d1) * pow(dx2gap, d2), -1);
  for (i = 0; i < ix; i++) {
    temp = (x0[i] - fx0[0]) / dx0gap;
    dx0[i] = modf(temp, &tempx0[i]);
    tempx0[i] = (double)clip((int)tempx0[i], ix0);
    dx0[i] = temp - tempx0[i];
    temp = (x1[i] - fx1[0]) / dx1gap;
    dx1[i] = modf(temp, &tempx1[i]);
    tempx1[i] = (double)clip((int)tempx1[i], ix1);
    dx1[i] = temp - tempx1[i];
    temp = (x2[i] - fx2[0]) / dx2gap;
    dx2[i] = modf(temp, &tempx2[i]);
    tempx2[i] = (double)clip((int)tempx2[i], ix2);
    dx2[i] = temp - tempx2[i];
    pos[i] = (int)tempx0[i] + ix0 * ((int)tempx1[i] + ix1 * ((int)tempx2[i]));
  }
  int_argsort(indx, pos, ix);
  for (i = 0; i < ix; i++) {
    loc = indx[i];
    if (iter != pos[loc]) {
      iter = pos[loc];
      voxel(fin, f, (int)tempx0[i], (int)tempx1[i], (int)tempx2[i], ix0, ix1,
            ix2);
      tricubic_get_coeff_stacked(a, fin);
    }
    val[loc] =
        tricubic_eval_full(a, dx0[loc], dx1[loc], dx2[loc], multi, d0, d1, d2);
  }
  free(dx0);
  free(dx1);
  free(dx2);
  free(pos);
  free(indx);
  free(tempx0);
  free(tempx1);
  free(tempx2);
}


x86 assembly (clang, -O0):
<reg_ev_full>:
push   %rbp
mov    %rsp,%rbp
sub    $0x4d0,%rsp
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0xffffffff,-0x38(%rbp)
movslq 0x38(%rbp),%rdi
shl    $0x3,%rdi
call   1090 <malloc@plt>
mov    %rax,-0x478(%rbp)
movslq 0x38(%rbp),%rdi
shl    $0x3,%rdi
call   1090 <malloc@plt>
mov    %rax,-0x480(%rbp)
movslq 0x38(%rbp),%rdi
shl    $0x3,%rdi
call   1090 <malloc@plt>
mov    %rax,-0x488(%rbp)
movslq 0x38(%rbp),%rdi
shl    $0x3,%rdi
call   1090 <malloc@plt>
mov    %rax,-0x490(%rbp)
movslq 0x38(%rbp),%rdi
shl    $0x3,%rdi
call   1090 <malloc@plt>
mov    %rax,-0x498(%rbp)
movslq 0x38(%rbp),%rdi
shl    $0x3,%rdi
call   1090 <malloc@plt>
mov    %rax,-0x4a0(%rbp)
movslq 0x38(%rbp),%rdi
shl    $0x2,%rdi
call   1090 <malloc@plt>
mov    %rax,-0x4a8(%rbp)
movslq 0x38(%rbp),%rdi
shl    $0x2,%rdi
call   1090 <malloc@plt>
mov    %rax,-0x4b0(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x30(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    0x18(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x48(%rbp),%xmm0
cvtsi2sdl 0x40(%rbp),%xmm1
call   10b0 <pow@plt>
movsd  %xmm0,-0x4c0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
cvtsi2sdl 0x48(%rbp),%xmm1
call   10b0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x4c0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x4b8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
cvtsi2sdl 0x50(%rbp),%xmm1
call   10b0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x4b8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  0xce4(%rip),%xmm1
call   10b0 <pow@plt>
movsd  %xmm0,-0x68(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x38(%rbp),%eax
jge    1570 <reg_ev_full+0x3e0>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
subsd  (%rax),%xmm0
divsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
mov    -0x490(%rbp),%rdi
movslq -0x34(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rdi
call   1070 <modf@plt>
mov    -0x478(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x490(%rbp),%rax
movslq -0x34(%rbp),%rcx
cvttsd2si (%rax,%rcx,8),%edi
mov    0x20(%rbp),%esi
mov    $0x0,%al
call   1040 <clip@plt>
cvtsi2sd %eax,%xmm0
mov    -0x490(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x60(%rbp),%xmm0
mov    -0x490(%rbp),%rax
movslq -0x34(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x478(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
subsd  (%rax),%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
mov    -0x498(%rbp),%rdi
movslq -0x34(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rdi
call   1070 <modf@plt>
mov    -0x480(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x498(%rbp),%rax
movslq -0x34(%rbp),%rcx
cvttsd2si (%rax,%rcx,8),%edi
mov    0x28(%rbp),%esi
mov    $0x0,%al
call   1040 <clip@plt>
cvtsi2sd %eax,%xmm0
mov    -0x498(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x60(%rbp),%xmm0
mov    -0x498(%rbp),%rax
movslq -0x34(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x480(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
subsd  (%rax),%xmm0
divsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
mov    -0x4a0(%rbp),%rdi
movslq -0x34(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rdi
call   1070 <modf@plt>
mov    -0x488(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x4a0(%rbp),%rax
movslq -0x34(%rbp),%rcx
cvttsd2si (%rax,%rcx,8),%edi
mov    0x30(%rbp),%esi
mov    $0x0,%al
call   1040 <clip@plt>
cvtsi2sd %eax,%xmm0
mov    -0x4a0(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x60(%rbp),%xmm0
mov    -0x4a0(%rbp),%rax
movslq -0x34(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x488(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x490(%rbp),%rax
movslq -0x34(%rbp),%rcx
cvttsd2si (%rax,%rcx,8),%edx
mov    0x20(%rbp),%eax
mov    -0x498(%rbp),%rcx
movslq -0x34(%rbp),%rsi
cvttsd2si (%rcx,%rsi,8),%ecx
mov    0x28(%rbp),%esi
mov    -0x4a0(%rbp),%rdi
movslq -0x34(%rbp),%r8
cvttsd2si (%rdi,%r8,8),%edi
imul   %edi,%esi
add    %esi,%ecx
imul   %ecx,%eax
add    %eax,%edx
mov    -0x4a8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    132d <reg_ev_full+0x19d>
mov    -0x4b0(%rbp),%rdi
mov    -0x4a8(%rbp),%rsi
mov    0x38(%rbp),%edx
mov    $0x0,%al
call   10a0 <int_argsort@plt>
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x38(%rbp),%eax
jge    16aa <reg_ev_full+0x51a>
mov    -0x4b0(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x4a8(%rbp),%rcx
movslq -0x3c(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
je     163f <reg_ev_full+0x4af>
mov    -0x4a8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x38(%rbp)
lea    -0x470(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x490(%rbp),%rax
movslq -0x34(%rbp),%rcx
cvttsd2si (%rax,%rcx,8),%edx
mov    -0x498(%rbp),%rax
movslq -0x34(%rbp),%rcx
cvttsd2si (%rax,%rcx,8),%ecx
mov    -0x4a0(%rbp),%rax
movslq -0x34(%rbp),%r8
cvttsd2si (%rax,%r8,8),%r8d
mov    0x20(%rbp),%r9d
mov    0x28(%rbp),%r10d
mov    0x30(%rbp),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
mov    $0x0,%al
call   1050 <voxel@plt>
lea    -0x270(%rbp),%rdi
lea    -0x470(%rbp),%rsi
mov    $0x0,%al
call   1060 <tricubic_get_coeff_stacked@plt>
lea    -0x270(%rbp),%rdi
mov    -0x478(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x480(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x488(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x68(%rbp),%xmm3
mov    0x40(%rbp),%esi
mov    0x48(%rbp),%edx
mov    0x50(%rbp),%ecx
mov    $0x4,%al
call   1080 <tricubic_eval_full@plt>
cvtsi2sd %eax,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    158f <reg_ev_full+0x3ff>
mov    -0x478(%rbp),%rdi
call   1030 <free@plt>
mov    -0x480(%rbp),%rdi
call   1030 <free@plt>
mov    -0x488(%rbp),%rdi
call   1030 <free@plt>
mov    -0x4a8(%rbp),%rdi
call   1030 <free@plt>
mov    -0x4b0(%rbp),%rdi
call   1030 <free@plt>
mov    -0x490(%rbp),%rdi
call   1030 <free@plt>
mov    -0x498(%rbp),%rdi
call   1030 <free@plt>
mov    -0x4a0(%rbp),%rdi
call   1030 <free@plt>
add    $0x4d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<reg_ev_full>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x4b8,%rsp
mov    %r9,%r12
mov    %r8,0x68(%rsp)
mov    %rcx,0xa8(%rsp)
mov    %rdx,0xa0(%rsp)
mov    %rsi,0x98(%rsp)
mov    %rdi,0x80(%rsp)
movslq 0x518(%rsp),%rbp
mov    0x4f8(%rsp),%r13
lea    0x0(,%rbp,8),%rbx
mov    %rbx,%rdi
call   1090 <malloc@plt>
mov    %rax,0x8(%rsp)
mov    %rbx,%rdi
call   1090 <malloc@plt>
mov    %rax,0x40(%rsp)
mov    %rbx,%rdi
call   1090 <malloc@plt>
mov    %rax,0x38(%rsp)
mov    %rbx,%rdi
call   1090 <malloc@plt>
mov    %rax,0x30(%rsp)
mov    %rbx,%rdi
call   1090 <malloc@plt>
mov    %rax,0x20(%rsp)
mov    %rbx,%rdi
call   1090 <malloc@plt>
mov    %rax,0x28(%rsp)
lea    0x0(,%rbp,4),%r15
mov    %r15,%rdi
call   1090 <malloc@plt>
mov    %rax,%r14
mov    %r15,%rdi
mov    0x4f0(%rsp),%r15
mov    %r12,%rbx
call   1090 <malloc@plt>
mov    %rax,%r12
movsd  0x8(%rbx),%xmm0
subsd  (%rbx),%xmm0
movsd  0x8(%r15),%xmm1
subsd  (%r15),%xmm1
movsd  %xmm1,0x58(%rsp)
movsd  0x8(%r13),%xmm1
subsd  0x0(%r13),%xmm1
movsd  %xmm1,0x50(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x520(%rsp),%xmm1
movsd  %xmm0,0x90(%rsp)
call   10b0 <pow@plt>
movsd  %xmm0,(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x528(%rsp),%xmm1
movsd  0x58(%rsp),%xmm0
call   10b0 <pow@plt>
movsd  %xmm0,0x18(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x530(%rsp),%xmm1
movsd  0x50(%rsp),%xmm0
call   10b0 <pow@plt>
test   %rbp,%rbp
mov    %r14,0x10(%rsp)
jle    15d4 <reg_ev_full+0x444>
mov    %r12,0x48(%rsp)
mov    0x500(%rsp),%r12d
movsd  (%rsp),%xmm1
mulsd  0x18(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0xcf7(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x78(%rsp)
mov    %rbp,0x60(%rsp)
mov    %ebp,%eax
mov    %rax,0x70(%rsp)
lea    0x0(,%rax,8),%rax
mov    %rax,0x18(%rsp)
xor    %ebp,%ebp
mov    %rbx,0x88(%rsp)
cs nopw 0x0(%rax,%rax,1)
mov    0x98(%rsp),%rax
movsd  (%rax,%rbp,1),%xmm0
subsd  (%rbx),%xmm0
divsd  0x90(%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    0x30(%rsp),%rbx
lea    (%rbx,%rbp,1),%rdi
call   1070 <modf@plt>
cvttsd2si (%rbx,%rbp,1),%edi
mov    %r12d,%esi
xor    %eax,%eax
call   1040 <clip@plt>
mov    %eax,%r13d
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%rbx,%rbp,1)
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
mov    0x8(%rsp),%rax
movsd  %xmm1,(%rax,%rbp,1)
mov    0xa0(%rsp),%rax
movsd  (%rax,%rbp,1),%xmm0
subsd  (%r15),%xmm0
divsd  0x58(%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    0x20(%rsp),%r12
lea    (%r12,%rbp,1),%rdi
call   1070 <modf@plt>
cvttsd2si (%r12,%rbp,1),%edi
mov    0x508(%rsp),%eax
mov    %rax,%rsi
xor    %eax,%eax
call   1040 <clip@plt>
mov    %eax,%r15d
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%r12,%rbp,1)
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
mov    0x40(%rsp),%rax
movsd  %xmm1,(%rax,%rbp,1)
mov    0xa8(%rsp),%rax
movsd  (%rax,%rbp,1),%xmm0
mov    0x4f8(%rsp),%rax
subsd  (%rax),%xmm0
divsd  0x50(%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    0x28(%rsp),%rbx
lea    (%rbx,%rbp,1),%rdi
call   1070 <modf@plt>
cvttsd2si (%rbx,%rbp,1),%edi
mov    0x510(%rsp),%esi
xor    %eax,%eax
call   1040 <clip@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%rbx,%rbp,1)
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
mov    0x38(%rsp),%rcx
movsd  %xmm1,(%rcx,%rbp,1)
mov    0x508(%rsp),%ecx
imul   %ecx,%eax
add    %r15d,%eax
mov    0x4f0(%rsp),%r15
mov    0x500(%rsp),%r12d
mov    0x88(%rsp),%rbx
imul   %r12d,%eax
add    %r13d,%eax
mov    %eax,(%r14)
add    $0x4,%r14
add    $0x8,%rbp
cmp    %rbp,0x18(%rsp)
jne    1340 <reg_ev_full+0x1b0>
mov    0x48(%rsp),%rbx
mov    %rbx,%rdi
mov    0x10(%rsp),%rsi
mov    0x60(%rsp),%rbp
mov    %ebp,%edx
xor    %eax,%eax
call   10a0 <int_argsort@plt>
test   %ebp,%ebp
mov    0x68(%rsp),%r12
mov    0x8(%rsp),%r15
jle    15eb <reg_ev_full+0x45b>
mov    $0xffffffff,%r14d
xor    %ebp,%ebp
jmp    1554 <reg_ev_full+0x3c4>
mov    0x8(%rsp),%r15
movsd  (%r15,%r13,8),%xmm0
mov    0x40(%rsp),%rax
movsd  (%rax,%r13,8),%xmm1
mov    0x38(%rsp),%rax
movsd  (%rax,%r13,8),%xmm2
lea    0xb0(%rsp),%rdi
movsd  0x78(%rsp),%xmm3
mov    0x520(%rsp),%esi
mov    0x528(%rsp),%edx
mov    0x530(%rsp),%ecx
mov    $0x4,%al
call   1080 <tricubic_eval_full@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0x80(%rsp),%rax
movsd  %xmm0,(%rax,%r13,8)
add    $0x1,%rbp
cmp    %rbp,0x70(%rsp)
mov    0x48(%rsp),%rbx
je     15eb <reg_ev_full+0x45b>
movslq (%rbx,%rbp,4),%r13
mov    0x10(%rsp),%rax
mov    (%rax,%r13,4),%r15d
cmp    %r15d,%r14d
je     14e0 <reg_ev_full+0x350>
mov    0x30(%rsp),%rax
cvttsd2si (%rax,%rbp,8),%edx
mov    0x20(%rsp),%rax
cvttsd2si (%rax,%rbp,8),%ecx
mov    0x28(%rsp),%rax
cvttsd2si (%rax,%rbp,8),%r8d
lea    0x2b0(%rsp),%r14
mov    %r14,%rdi
mov    %r12,%rsi
mov    0x500(%rsp),%r9d
xor    %eax,%eax
mov    0x510(%rsp),%ebx
push   %rbx
mov    0x510(%rsp),%ebx
push   %rbx
call   1050 <voxel@plt>
add    $0x10,%rsp
lea    0xb0(%rsp),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1060 <tricubic_get_coeff_stacked@plt>
mov    %r15d,%r14d
jmp    14e0 <reg_ev_full+0x350>
mov    %r12,%rdi
mov    %r14,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   10a0 <int_argsort@plt>
mov    0x8(%rsp),%r15
mov    %r12,%rbx
mov    %r15,%rdi
call   1030 <free@plt>
mov    0x40(%rsp),%rdi
call   1030 <free@plt>
mov    0x38(%rsp),%rdi
call   1030 <free@plt>
mov    0x10(%rsp),%rdi
call   1030 <free@plt>
mov    %rbx,%rdi
call   1030 <free@plt>
mov    0x30(%rsp),%rdi
call   1030 <free@plt>
mov    0x20(%rsp),%rdi
call   1030 <free@plt>
mov    0x28(%rsp),%rdi
call   1030 <free@plt>
add    $0x4b8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @reg_ev_full(double* %0, double* %1, double* %2, double* %3, double* %4, double* %5, double* %6, double* %7, i32 %8, i32 %9, i32 %10, i32 %11, i32 %12, i32 %13, i32 %14) {
%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 i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca [64 x double]
%40 = alloca [64 x double]
%41 = alloca double*
%42 = alloca double*
%43 = alloca double*
%44 = alloca double*
%45 = alloca double*
%46 = alloca double*
%47 = alloca i32*
%48 = alloca i32*
store double* %0, double** %16
store double* %1, double** %17
store double* %2, double** %18
store double* %3, double** %19
store double* %4, double** %20
store double* %5, double** %21
store double* %6, double** %22
store double* %7, double** %23
store i32 %8, i32* %24
store i32 %9, i32* %25
store i32 %10, i32* %26
store i32 %11, i32* %27
store i32 %12, i32* %28
store i32 %13, i32* %29
store i32 %14, i32* %30
store i32 -1, i32* %32
%49 = load i32, i32* %27
%50 = sext i32 %49 to i64
%51 = mul i64 %50, 8
%52 = call i8* @malloc(i64 %51)
%53 = bitcast i8* %52 to double*
store double* %53, double** %41
%54 = load i32, i32* %27
%55 = sext i32 %54 to i64
%56 = mul i64 %55, 8
%57 = call i8* @malloc(i64 %56)
%58 = bitcast i8* %57 to double*
store double* %58, double** %42
%59 = load i32, i32* %27
%60 = sext i32 %59 to i64
%61 = mul i64 %60, 8
%62 = call i8* @malloc(i64 %61)
%63 = bitcast i8* %62 to double*
store double* %63, double** %43
%64 = load i32, i32* %27
%65 = sext i32 %64 to i64
%66 = mul i64 %65, 8
%67 = call i8* @malloc(i64 %66)
%68 = bitcast i8* %67 to double*
store double* %68, double** %44
%69 = load i32, i32* %27
%70 = sext i32 %69 to i64
%71 = mul i64 %70, 8
%72 = call i8* @malloc(i64 %71)
%73 = bitcast i8* %72 to double*
store double* %73, double** %45
%74 = load i32, i32* %27
%75 = sext i32 %74 to i64
%76 = mul i64 %75, 8
%77 = call i8* @malloc(i64 %76)
%78 = bitcast i8* %77 to double*
store double* %78, double** %46
%79 = load i32, i32* %27
%80 = sext i32 %79 to i64
%81 = mul i64 %80, 4
%82 = call i8* @malloc(i64 %81)
%83 = bitcast i8* %82 to i32*
store i32* %83, i32** %47
%84 = load i32, i32* %27
%85 = sext i32 %84 to i64
%86 = mul i64 %85, 4
%87 = call i8* @malloc(i64 %86)
%88 = bitcast i8* %87 to i32*
store i32* %88, i32** %48
%89 = load double*, double** %21
%90 = getelementptr inbounds double, double* %89, i64 1
%91 = load double, double* %90
%92 = load double*, double** %21
%93 = getelementptr inbounds double, double* %92, i64 0
%94 = load double, double* %93
%95 = fsub double %91, %94
store double %95, double* %34
%96 = load double*, double** %22
%97 = getelementptr inbounds double, double* %96, i64 1
%98 = load double, double* %97
%99 = load double*, double** %22
%100 = getelementptr inbounds double, double* %99, i64 0
%101 = load double, double* %100
%102 = fsub double %98, %101
store double %102, double* %35
%103 = load double*, double** %23
%104 = getelementptr inbounds double, double* %103, i64 1
%105 = load double, double* %104
%106 = load double*, double** %23
%107 = getelementptr inbounds double, double* %106, i64 0
%108 = load double, double* %107
%109 = fsub double %105, %108
store double %109, double* %36
%110 = load double, double* %34
%111 = load i32, i32* %28
%112 = sitofp i32 %111 to double
%113 = call double @pow(double %110, double %112)
%114 = load double, double* %35
%115 = load i32, i32* %29
%116 = sitofp i32 %115 to double
%117 = call double @pow(double %114, double %116)
%118 = fmul double %113, %117
%119 = load double, double* %36
%120 = load i32, i32* %30
%121 = sitofp i32 %120 to double
%122 = call double @pow(double %119, double %121)
%123 = fmul double %118, %122
%124 = call double @pow(double %123, double -1.000000e+00)
store double %124, double* %38
store i32 0, i32* %31
br label %125
125: ; preds = %293, %15
%126 = load i32, i32* %31
%127 = load i32, i32* %27
%128 = icmp slt i32 %126, %127
br i1 %128, label %129, label %296
129: ; preds = %125
%130 = load double*, double** %17
%131 = load i32, i32* %31
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds double, double* %130, i64 %132
%134 = load double, double* %133
%135 = load double*, double** %21
%136 = getelementptr inbounds double, double* %135, i64 0
%137 = load double, double* %136
%138 = fsub double %134, %137
%139 = load double, double* %34
%140 = fdiv double %138, %139
store double %140, double* %37
%141 = load double, double* %37
%142 = load double*, double** %44
%143 = load i32, i32* %31
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds double, double* %142, i64 %144
%146 = call double @modf(double %141, double* %145)
%147 = load double*, double** %41
%148 = load i32, i32* %31
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds double, double* %147, i64 %149
store double %146, double* %150
%151 = load double*, double** %44
%152 = load i32, i32* %31
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds double, double* %151, i64 %153
%155 = load double, double* %154
%156 = fptosi double %155 to i32
%157 = load i32, i32* %24
%158 = call i32 (i32, i32, ...) bitcast (i32 (...)* @clip to i32 (i32, i32, ...)*)(i32 %156, i32 %157)
%159 = sitofp i32 %158 to double
%160 = load double*, double** %44
%161 = load i32, i32* %31
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds double, double* %160, i64 %162
store double %159, double* %163
%164 = load double, double* %37
%165 = load double*, double** %44
%166 = load i32, i32* %31
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds double, double* %165, i64 %167
%169 = load double, double* %168
%170 = fsub double %164, %169
%171 = load double*, double** %41
%172 = load i32, i32* %31
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds double, double* %171, i64 %173
store double %170, double* %174
%175 = load double*, double** %18
%176 = load i32, i32* %31
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds double, double* %175, i64 %177
%179 = load double, double* %178
%180 = load double*, double** %22
%181 = getelementptr inbounds double, double* %180, i64 0
%182 = load double, double* %181
%183 = fsub double %179, %182
%184 = load double, double* %35
%185 = fdiv double %183, %184
store double %185, double* %37
%186 = load double, double* %37
%187 = load double*, double** %45
%188 = load i32, i32* %31
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds double, double* %187, i64 %189
%191 = call double @modf(double %186, double* %190)
%192 = load double*, double** %42
%193 = load i32, i32* %31
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds double, double* %192, i64 %194
store double %191, double* %195
%196 = load double*, double** %45
%197 = load i32, i32* %31
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds double, double* %196, i64 %198
%200 = load double, double* %199
%201 = fptosi double %200 to i32
%202 = load i32, i32* %25
%203 = call i32 (i32, i32, ...) bitcast (i32 (...)* @clip to i32 (i32, i32, ...)*)(i32 %201, i32 %202)
%204 = sitofp i32 %203 to double
%205 = load double*, double** %45
%206 = load i32, i32* %31
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds double, double* %205, i64 %207
store double %204, double* %208
%209 = load double, double* %37
%210 = load double*, double** %45
%211 = load i32, i32* %31
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds double, double* %210, i64 %212
%214 = load double, double* %213
%215 = fsub double %209, %214
%216 = load double*, double** %42
%217 = load i32, i32* %31
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds double, double* %216, i64 %218
store double %215, double* %219
%220 = load double*, double** %19
%221 = load i32, i32* %31
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds double, double* %220, i64 %222
%224 = load double, double* %223
%225 = load double*, double** %23
%226 = getelementptr inbounds double, double* %225, i64 0
%227 = load double, double* %226
%228 = fsub double %224, %227
%229 = load double, double* %36
%230 = fdiv double %228, %229
store double %230, double* %37
%231 = load double, double* %37
%232 = load double*, double** %46
%233 = load i32, i32* %31
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds double, double* %232, i64 %234
%236 = call double @modf(double %231, double* %235)
%237 = load double*, double** %43
%238 = load i32, i32* %31
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds double, double* %237, i64 %239
store double %236, double* %240
%241 = load double*, double** %46
%242 = load i32, i32* %31
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds double, double* %241, i64 %243
%245 = load double, double* %244
%246 = fptosi double %245 to i32
%247 = load i32, i32* %26
%248 = call i32 (i32, i32, ...) bitcast (i32 (...)* @clip to i32 (i32, i32, ...)*)(i32 %246, i32 %247)
%249 = sitofp i32 %248 to double
%250 = load double*, double** %46
%251 = load i32, i32* %31
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds double, double* %250, i64 %252
store double %249, double* %253
%254 = load double, double* %37
%255 = load double*, double** %46
%256 = load i32, i32* %31
%257 = sext i32 %256 to i64
%258 = getelementptr inbounds double, double* %255, i64 %257
%259 = load double, double* %258
%260 = fsub double %254, %259
%261 = load double*, double** %43
%262 = load i32, i32* %31
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds double, double* %261, i64 %263
store double %260, double* %264
%265 = load double*, double** %44
%266 = load i32, i32* %31
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds double, double* %265, i64 %267
%269 = load double, double* %268
%270 = fptosi double %269 to i32
%271 = load i32, i32* %24
%272 = load double*, double** %45
%273 = load i32, i32* %31
%274 = sext i32 %273 to i64
%275 = getelementptr inbounds double, double* %272, i64 %274
%276 = load double, double* %275
%277 = fptosi double %276 to i32
%278 = load i32, i32* %25
%279 = load double*, double** %46
%280 = load i32, i32* %31
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds double, double* %279, i64 %281
%283 = load double, double* %282
%284 = fptosi double %283 to i32
%285 = mul nsw i32 %278, %284
%286 = add nsw i32 %277, %285
%287 = mul nsw i32 %271, %286
%288 = add nsw i32 %270, %287
%289 = load i32*, i32** %47
%290 = load i32, i32* %31
%291 = sext i32 %290 to i64
%292 = getelementptr inbounds i32, i32* %289, i64 %291
store i32 %288, i32* %292
br label %293
293: ; preds = %129
%294 = load i32, i32* %31
%295 = add nsw i32 %294, 1
store i32 %295, i32* %31
br label %125
296: ; preds = %125
%297 = load i32*, i32** %48
%298 = load i32*, i32** %47
%299 = load i32, i32* %27
%300 = call i32 (i32*, i32*, i32, ...) bitcast (i32 (...)* @int_argsort to i32 (i32*, i32*, i32, ...)*)(i32* %297, i32* %298, i32 %299)
store i32 0, i32* %31
br label %301
301: ; preds = %378, %296
%302 = load i32, i32* %31
%303 = load i32, i32* %27
%304 = icmp slt i32 %302, %303
br i1 %304, label %305, label %381
305: ; preds = %301
%306 = load i32*, i32** %48
%307 = load i32, i32* %31
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds i32, i32* %306, i64 %308
%310 = load i32, i32* %309
store i32 %310, i32* %33
%311 = load i32, i32* %32
%312 = load i32*, i32** %47
%313 = load i32, i32* %33
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds i32, i32* %312, i64 %314
%316 = load i32, i32* %315
%317 = icmp ne i32 %311, %316
br i1 %317, label %318, label %351
318: ; preds = %305
%319 = load i32*, i32** %47
%320 = load i32, i32* %33
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds i32, i32* %319, i64 %321
%323 = load i32, i32* %322
store i32 %323, i32* %32
%324 = getelementptr inbounds [64 x double], [64 x double]* %40, i64 0, i64 0
%325 = load double*, double** %20
%326 = load double*, double** %44
%327 = load i32, i32* %31
%328 = sext i32 %327 to i64
%329 = getelementptr inbounds double, double* %326, i64 %328
%330 = load double, double* %329
%331 = fptosi double %330 to i32
%332 = load double*, double** %45
%333 = load i32, i32* %31
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds double, double* %332, i64 %334
%336 = load double, double* %335
%337 = fptosi double %336 to i32
%338 = load double*, double** %46
%339 = load i32, i32* %31
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds double, double* %338, i64 %340
%342 = load double, double* %341
%343 = fptosi double %342 to i32
%344 = load i32, i32* %24
%345 = load i32, i32* %25
%346 = load i32, i32* %26
%347 = call i32 (double*, double*, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @voxel to i32 (double*, double*, i32, i32, i32, i32, i32, i32, ...)*)(double* %324, double* %325, i32 %331, i32 %337, i32 %343, i32 %344, i32 %345, i32 %346)
%348 = getelementptr inbounds [64 x double], [64 x double]* %39, i64 0, i64 0
%349 = getelementptr inbounds [64 x double], [64 x double]* %40, i64 0, i64 0
%350 = call i32 (double*, double*, ...) bitcast (i32 (...)* @tricubic_get_coeff_stacked to i32 (double*, double*, ...)*)(double* %348, double* %349)
br label %351
351: ; preds = %318, %305
%352 = getelementptr inbounds [64 x double], [64 x double]* %39, i64 0, i64 0
%353 = load double*, double** %41
%354 = load i32, i32* %33
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds double, double* %353, i64 %355
%357 = load double, double* %356
%358 = load double*, double** %42
%359 = load i32, i32* %33
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds double, double* %358, i64 %360
%362 = load double, double* %361
%363 = load double*, double** %43
%364 = load i32, i32* %33
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds double, double* %363, i64 %365
%367 = load double, double* %366
%368 = load double, double* %38
%369 = load i32, i32* %28
%370 = load i32, i32* %29
%371 = load i32, i32* %30
%372 = call i32 (double*, double, double, double, double, i32, i32, i32, ...) bitcast (i32 (...)* @tricubic_eval_full to i32 (double*, double, double, double, double, i32, i32, i32, ...)*)(double* %352, double %357, double %362, double %367, double %368, i32 %369, i32 %370, i32 %371)
%373 = sitofp i32 %372 to double
%374 = load double*, double** %16
%375 = load i32, i32* %33
%376 = sext i32 %375 to i64
%377 = getelementptr inbounds double, double* %374, i64 %376
store double %373, double* %377
br label %378
378: ; preds = %351
%379 = load i32, i32* %31
%380 = add nsw i32 %379, 1
store i32 %380, i32* %31
br label %301
381: ; preds = %301
%382 = load double*, double** %41
%383 = bitcast double* %382 to i8*
%384 = load double*, double** %42
%385 = bitcast double* %384 to i8*
%386 = load double*, double** %43
%387 = bitcast double* %386 to i8*
%388 = load i32*, i32** %47
%389 = bitcast i32* %388 to i8*
%390 = load i32*, i32** %48
%391 = bitcast i32* %390 to i8*
%392 = load double*, double** %44
%393 = bitcast double* %392 to i8*
%394 = load double*, double** %45
%395 = bitcast double* %394 to i8*
%396 = load double*, double** %46
%397 = bitcast double* %396 to i8*
ret void
}

LLVM IR (-O2):
define void @reg_ev_full(double* nocapture writeonly %0, double* nocapture %1, double* nocapture %2, double* nocapture %3, double* %4, double* nocapture %5, double* nocapture %6, double* nocapture %7, i32 %8, i32 %9, i32 %10, i32 %11, i32 %12, i32 %13, i32 %14) {
%16 = alloca [64 x double]
%17 = alloca [64 x double]
%18 = bitcast [64 x double]* %16 to i8*
%19 = bitcast [64 x double]* %17 to i8*
%20 = sext i32 %11 to i64
%21 = shl nsw i64 %20, 3
%22 = tail call i8* @malloc(i64 %21)
%23 = bitcast i8* %22 to double*
%24 = tail call i8* @malloc(i64 %21)
%25 = bitcast i8* %24 to double*
%26 = tail call i8* @malloc(i64 %21)
%27 = bitcast i8* %26 to double*
%28 = tail call i8* @malloc(i64 %21)
%29 = bitcast i8* %28 to double*
%30 = tail call i8* @malloc(i64 %21)
%31 = bitcast i8* %30 to double*
%32 = tail call i8* @malloc(i64 %21)
%33 = bitcast i8* %32 to double*
%34 = shl nsw i64 %20, 2
%35 = tail call i8* @malloc(i64 %34)
%36 = bitcast i8* %35 to i32*
%37 = tail call i8* @malloc(i64 %34)
%38 = bitcast i8* %37 to i32*
%39 = getelementptr inbounds double, double* %5, i64 1
%40 = load double, double* %39
%41 = load double, double* %5
%42 = fsub double %40, %41
%43 = getelementptr inbounds double, double* %6, i64 1
%44 = load double, double* %43
%45 = load double, double* %6
%46 = fsub double %44, %45
%47 = getelementptr inbounds double, double* %7, i64 1
%48 = load double, double* %47
%49 = load double, double* %7
%50 = fsub double %48, %49
%51 = sitofp i32 %12 to double
%52 = tail call double @pow(double %42, double %51)
%53 = sitofp i32 %13 to double
%54 = tail call double @pow(double %46, double %53)
%55 = fmul double %52, %54
%56 = sitofp i32 %14 to double
%57 = tail call double @pow(double %50, double %56)
%58 = fmul double %55, %57
%59 = fdiv double 1.000000e+00, %58
%60 = icmp sgt i32 %11, 0
br i1 %60, label %63, label %61
61: ; preds = %15
%62 = tail call i32 (i32*, i32*, i32, ...) bitcast (i32 (...)* @int_argsort to i32 (i32*, i32*, i32, ...)*)(i32* %38, i32* %36, i32 %11)
br label %153
63: ; preds = %15
%64 = zext i32 %11 to i64
br label %65
65: ; preds = %63, %65
%66 = phi i64 [ 0, %63 ], [ %111, %65 ]
%67 = getelementptr inbounds double, double* %1, i64 %66
%68 = load double, double* %67
%69 = load double, double* %5
%70 = fsub double %68, %69
%71 = fdiv double %70, %42
%72 = getelementptr inbounds double, double* %29, i64 %66
%73 = tail call double @modf(double %71, double* %72)
%74 = getelementptr inbounds double, double* %23, i64 %66
%75 = load double, double* %72
%76 = fptosi double %75 to i32
%77 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @clip to i32 (i32, i32, ...)*)(i32 %76, i32 %8)
%78 = sitofp i32 %77 to double
store double %78, double* %72
%79 = fsub double %71, %78
store double %79, double* %74
%80 = getelementptr inbounds double, double* %2, i64 %66
%81 = load double, double* %80
%82 = load double, double* %6
%83 = fsub double %81, %82
%84 = fdiv double %83, %46
%85 = getelementptr inbounds double, double* %31, i64 %66
%86 = tail call double @modf(double %84, double* %85)
%87 = getelementptr inbounds double, double* %25, i64 %66
%88 = load double, double* %85
%89 = fptosi double %88 to i32
%90 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @clip to i32 (i32, i32, ...)*)(i32 %89, i32 %9)
%91 = sitofp i32 %90 to double
store double %91, double* %85
%92 = fsub double %84, %91
store double %92, double* %87
%93 = getelementptr inbounds double, double* %3, i64 %66
%94 = load double, double* %93
%95 = load double, double* %7
%96 = fsub double %94, %95
%97 = fdiv double %96, %50
%98 = getelementptr inbounds double, double* %33, i64 %66
%99 = tail call double @modf(double %97, double* %98)
%100 = getelementptr inbounds double, double* %27, i64 %66
%101 = load double, double* %98
%102 = fptosi double %101 to i32
%103 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @clip to i32 (i32, i32, ...)*)(i32 %102, i32 %10)
%104 = sitofp i32 %103 to double
store double %104, double* %98
%105 = fsub double %97, %104
store double %105, double* %100
%106 = mul nsw i32 %103, %9
%107 = add nsw i32 %106, %90
%108 = mul nsw i32 %107, %8
%109 = add nsw i32 %108, %77
%110 = getelementptr inbounds i32, i32* %36, i64 %66
store i32 %109, i32* %110
%111 = add nuw nsw i64 %66, 1
%112 = icmp eq i64 %111, %64
br i1 %112, label %113, label %65
113: ; preds = %65
%114 = tail call i32 (i32*, i32*, i32, ...) bitcast (i32 (...)* @int_argsort to i32 (i32*, i32*, i32, ...)*)(i32* %38, i32* %36, i32 %11)
br i1 %60, label %115, label %153
115: ; preds = %113
%116 = getelementptr inbounds [64 x double], [64 x double]* %17, i64 0, i64 0
%117 = getelementptr inbounds [64 x double], [64 x double]* %16, i64 0, i64 0
%118 = zext i32 %11 to i64
br label %119
119: ; preds = %115, %140
%120 = phi i64 [ 0, %115 ], [ %151, %140 ]
%121 = phi i32 [ -1, %115 ], [ %141, %140 ]
%122 = getelementptr inbounds i32, i32* %38, i64 %120
%123 = load i32, i32* %122
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds i32, i32* %36, i64 %124
%126 = load i32, i32* %125
%127 = icmp eq i32 %121, %126
br i1 %127, label %140, label %128
128: ; preds = %119
%129 = getelementptr inbounds double, double* %29, i64 %120
%130 = load double, double* %129
%131 = fptosi double %130 to i32
%132 = getelementptr inbounds double, double* %31, i64 %120
%133 = load double, double* %132
%134 = fptosi double %133 to i32
%135 = getelementptr inbounds double, double* %33, i64 %120
%136 = load double, double* %135
%137 = fptosi double %136 to i32
%138 = call i32 (double*, double*, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @voxel to i32 (double*, double*, i32, i32, i32, i32, i32, i32, ...)*)(double* %116, double* %4, i32 %131, i32 %134, i32 %137, i32 %8, i32 %9, i32 %10)
%139 = call i32 (double*, double*, ...) bitcast (i32 (...)* @tricubic_get_coeff_stacked to i32 (double*, double*, ...)*)(double* %117, double* %116)
br label %140
140: ; preds = %128, %119
%141 = phi i32 [ %126, %128 ], [ %121, %119 ]
%142 = getelementptr inbounds double, double* %23, i64 %124
%143 = load double, double* %142
%144 = getelementptr inbounds double, double* %25, i64 %124
%145 = load double, double* %144
%146 = getelementptr inbounds double, double* %27, i64 %124
%147 = load double, double* %146
%148 = call i32 (double*, double, double, double, double, i32, i32, i32, ...) bitcast (i32 (...)* @tricubic_eval_full to i32 (double*, double, double, double, double, i32, i32, i32, ...)*)(double* %117, double %143, double %145, double %147, double %59, i32 %12, i32 %13, i32 %14)
%149 = sitofp i32 %148 to double
%150 = getelementptr inbounds double, double* %0, i64 %124
store double %149, double* %150
%151 = add nuw nsw i64 %120, 1
%152 = icmp eq i64 %151, %118
br i1 %152, label %153, label %119
153: ; preds = %140, %61, %113
ret void
}