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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
scalar_t__ ceilf(float);
int interpSP6_b32(unsigned char *sl, int w, int h, float x, float y, float o,
                  unsigned char *v, int is_atop) {
  int i, b, j, m, n;
  float pp, p[6], wx[6], wy[6], xx;
  m = (int)ceilf(x) - 3;
  if (m < 0)
    m = 0;
  if ((m + 7) > w)
    m = w - 6;
  n = (int)ceilf(y) - 3;
  if (n < 0)
    n = 0;
  if ((n + 7) > h)
    n = h - 6;
  xx = y - n;
  wy[0] =
      ((0.090909 * (xx - 2.0) - 0.215311) * (xx - 2.0) + 0.124402) * (xx - 2.0);
  xx = xx - 1.0;
  wy[1] = ((-0.545455 * (xx - 1.0) + 1.291866) * (xx - 1.0) - 0.746411) *
          (xx - 1.0);
  xx = xx - 1.0;
  wy[2] = ((1.181818 * xx - 2.167464) * xx + 0.014354) * xx + 1.0;
  xx = 1.0 - xx;
  wy[3] = ((1.181818 * xx - 2.167464) * xx + 0.014354) * xx + 1.0;
  xx = xx + 1.0;
  wy[4] = ((-0.545455 * (xx - 1.0) + 1.291866) * (xx - 1.0) - 0.746411) *
          (xx - 1.0);
  xx = xx + 1.0;
  wy[5] =
      ((0.090909 * (xx - 2.0) - 0.215311) * (xx - 2.0) + 0.124402) * (xx - 2.0);
  xx = x - m;
  wx[0] =
      ((0.090909 * (xx - 2.0) - 0.215311) * (xx - 2.0) + 0.124402) * (xx - 2.0);
  xx = xx - 1.0;
  wx[1] = ((-0.545455 * (xx - 1.0) + 1.291866) * (xx - 1.0) - 0.746411) *
          (xx - 1.0);
  xx = xx - 1.0;
  wx[2] = ((1.181818 * xx - 2.167464) * xx + 0.014354) * xx + 1.0;
  xx = 1.0 - xx;
  wx[3] = ((1.181818 * xx - 2.167464) * xx + 0.014354) * xx + 1.0;
  xx = xx + 1.0;
  wx[4] = ((-0.545455 * (xx - 1.0) + 1.291866) * (xx - 1.0) - 0.746411) *
          (xx - 1.0);
  xx = xx + 1.0;
  wx[5] =
      ((0.090909 * (xx - 2.0) - 0.215311) * (xx - 2.0) + 0.124402) * (xx - 2.0);
  for (b = 0; b < 4; b++) {
    for (i = 0; i < 6; i++) {
      p[i] = 0.0;
      for (j = 0; j < 6; j++) {
        p[i] = p[i] + wy[j] * sl[4 * ((j + n) * w + i + m) + b];
      }
    }
    pp = 0.0;
    for (i = 0; i < 6; i++)
      pp = pp + wx[i] * p[i];
    pp = 0.947 * pp;
    if (pp < 0.0)
      pp = 0.0;
    if (pp > 256.0)
      pp = 255.0;
    v[b] = pp;
  }
  return 0;
}


x86 assembly (clang, -O0):
<interpSP6_b32>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movss  %xmm0,-0x14(%rbp)
movss  %xmm1,-0x18(%rbp)
movss  %xmm2,-0x1c(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8d,-0x2c(%rbp)
movss  -0x14(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x3,%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x0,-0x3c(%rbp)
jge    115d <interpSP6_b32+0x4d>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x7,%eax
cmp    -0xc(%rbp),%eax
jle    1175 <interpSP6_b32+0x65>
mov    -0xc(%rbp),%eax
sub    $0x6,%eax
mov    %eax,-0x3c(%rbp)
movss  -0x18(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x3,%eax
mov    %eax,-0x40(%rbp)
cmpl   $0x0,-0x40(%rbp)
jge    1196 <interpSP6_b32+0x86>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
add    $0x7,%eax
cmp    -0x10(%rbp),%eax
jle    11ae <interpSP6_b32+0x9e>
mov    -0x10(%rbp),%eax
sub    $0x6,%eax
mov    %eax,-0x40(%rbp)
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x40(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xe28(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xe2c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe28(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xdf8(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdf0(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xdd0(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xdc8(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xda4(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xda8(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xda4(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xd74(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd6c(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xd4c(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xd24(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xd28(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd24(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcf8(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcbc(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xc98(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xc9c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc98(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc6c(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc30(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xc0c(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xbe8(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xbec(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbe8(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xbb8(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbb0(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xb90(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xb68(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xb24(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xb28(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb24(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xaf4(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xaec(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xacc(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x14(%rbp),%xmm0
cvtsi2ssl -0x3c(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa8e(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xa92(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa8e(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xa5e(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa56(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xa36(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa31(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa0d(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xa11(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa0d(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x9dd(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x9d5(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x9b5(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x990(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x994(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x990(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x964(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x928(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0x907(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x90b(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x907(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8db(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x89f(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x87e(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x85a(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x85e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x85a(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x82a(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x822(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x802(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x7dd(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x799(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x79d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x799(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x769(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x761(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x741(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
movl   $0x0,-0x34(%rbp)
cmpl   $0x4,-0x34(%rbp)
jge    1a50 <interpSP6_b32+0x940>
movl   $0x0,-0x30(%rbp)
cmpl   $0x6,-0x30(%rbp)
jge    197f <interpSP6_b32+0x86f>
movslq -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
movl   $0x0,-0x38(%rbp)
cmpl   $0x6,-0x38(%rbp)
jge    196c <interpSP6_b32+0x85c>
movslq -0x30(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm1
movslq -0x38(%rbp),%rax
movss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    -0x40(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x30(%rbp),%ecx
add    -0x3c(%rbp),%ecx
shl    $0x2,%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movslq -0x30(%rbp),%rax
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1906 <interpSP6_b32+0x7f6>
jmp    1971 <interpSP6_b32+0x861>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    18e8 <interpSP6_b32+0x7d8>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x6,-0x30(%rbp)
jge    19cc <interpSP6_b32+0x8bc>
movss  -0x44(%rbp),%xmm1
movslq -0x30(%rbp),%rax
movss  -0x80(%rbp,%rax,4),%xmm0
movslq -0x30(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    198e <interpSP6_b32+0x87e>
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x67b(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1a08 <interpSP6_b32+0x8f8>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x647(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1a30 <interpSP6_b32+0x920>
movss  0x63d(%rip),%xmm0
movss  %xmm0,-0x44(%rbp)
cvttss2si -0x44(%rbp),%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    18d7 <interpSP6_b32+0x7c7>
xor    %eax,%eax
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<interpSP6_b32>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rcx,%r14
movss  %xmm1,0x8(%rsp)
movss  %xmm0,0xc(%rsp)
mov    %edx,%r12d
mov    %esi,%r15d
mov    %rdi,%rbx
call   1030 <ceilf@plt>
cmp    $0x4,%eax
mov    $0x3,%ebp
cmovl  %ebp,%eax
lea    -0x3(%rax),%ecx
add    $0x4,%eax
lea    -0x6(%r15),%r13d
cmp    %r15d,%eax
cmovle %ecx,%r13d
movss  0x8(%rsp),%xmm0
call   1030 <ceilf@plt>
cmp    $0x4,%eax
cmovge %eax,%ebp
lea    -0x3(%rbp),%ecx
add    $0x4,%ebp
lea    -0x6(%r12),%eax
cmp    %r12d,%ebp
cmovle %ecx,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  0x8(%rsp),%xmm2
subss  %xmm0,%xmm2
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
movaps %xmm2,%xmm0
addsd  0xe64(%rip),%xmm1
movsd  0xe63(%rip),%xmm12
movapd %xmm1,%xmm9
mulsd  %xmm12,%xmm9
addsd  0xe58(%rip),%xmm9
mulsd  %xmm1,%xmm9
movsd  0xe52(%rip),%xmm13
addsd  %xmm13,%xmm9
mulsd  %xmm1,%xmm9
addss  0xe90(%rip),%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
movsd  0xe38(%rip),%xmm8
addsd  %xmm8,%xmm2
movsd  0xe32(%rip),%xmm15
movapd %xmm2,%xmm1
mulsd  %xmm15,%xmm1
movsd  0xe29(%rip),%xmm3
addsd  %xmm3,%xmm1
movapd %xmm3,%xmm10
mulsd  %xmm2,%xmm1
movsd  0xe1c(%rip),%xmm3
addsd  %xmm3,%xmm1
movapd %xmm3,%xmm14
mulsd  %xmm2,%xmm1
xorps  %xmm3,%xmm3
cvtsd2ss %xmm2,%xmm3
cvtss2sd %xmm3,%xmm4
movsd  0xe03(%rip),%xmm11
movaps %xmm4,%xmm2
mulsd  %xmm11,%xmm2
movsd  0xdfb(%rip),%xmm5
addsd  %xmm5,%xmm2
movapd %xmm5,%xmm6
mulsd  %xmm4,%xmm2
movsd  0xdef(%rip),%xmm0
addsd  %xmm0,%xmm2
mulsd  %xmm4,%xmm2
movss  0xdfb(%rip),%xmm4
movaps %xmm4,%xmm5
movaps %xmm4,%xmm7
subss  %xmm3,%xmm5
xorps  %xmm4,%xmm4
cvtss2sd %xmm5,%xmm4
movaps %xmm4,%xmm3
mulsd  %xmm11,%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm0,%xmm3
mulsd  %xmm4,%xmm3
addss  %xmm7,%xmm5
xorps  %xmm6,%xmm6
cvtss2sd %xmm5,%xmm6
addsd  %xmm8,%xmm6
movapd %xmm6,%xmm4
mulsd  %xmm15,%xmm4
addsd  %xmm10,%xmm4
mulsd  %xmm6,%xmm4
addsd  %xmm14,%xmm4
mulsd  %xmm6,%xmm4
addss  %xmm7,%xmm5
xorps  %xmm6,%xmm6
cvtss2sd %xmm5,%xmm6
movsd  0xd27(%rip),%xmm10
addsd  %xmm10,%xmm6
movapd %xmm6,%xmm5
mulsd  %xmm12,%xmm5
movsd  0xd21(%rip),%xmm7
addsd  %xmm7,%xmm5
mulsd  %xmm6,%xmm5
addsd  %xmm13,%xmm5
mulsd  %xmm6,%xmm5
xorps  %xmm6,%xmm6
cvtsi2ss %r13d,%xmm6
movss  0xc(%rsp),%xmm0
subss  %xmm6,%xmm0
xorps  %xmm6,%xmm6
cvtss2sd %xmm0,%xmm6
addsd  %xmm10,%xmm6
movapd %xmm6,%xmm8
mulsd  %xmm12,%xmm8
addsd  %xmm7,%xmm8
mulsd  %xmm6,%xmm8
addsd  %xmm13,%xmm8
mulsd  %xmm6,%xmm8
addss  0xd24(%rip),%xmm0
xorps  %xmm6,%xmm6
cvtss2sd %xmm0,%xmm6
movsd  0xccd(%rip),%xmm0
addsd  %xmm0,%xmm6
movapd %xmm6,%xmm7
mulsd  %xmm15,%xmm7
addsd  0xcc8(%rip),%xmm7
mulsd  %xmm6,%xmm7
addsd  0xcc4(%rip),%xmm7
mulsd  %xmm6,%xmm7
xorps  %xmm0,%xmm0
cvtsd2ss %xmm6,%xmm0
cvtss2sd %xmm0,%xmm13
movaps %xmm13,%xmm6
mulsd  %xmm11,%xmm6
addsd  0xcb3(%rip),%xmm6
mulsd  %xmm13,%xmm6
movsd  0xcad(%rip),%xmm14
addsd  %xmm14,%xmm6
mulsd  %xmm13,%xmm6
movss  0xcb6(%rip),%xmm10
movaps %xmm10,%xmm13
subss  %xmm0,%xmm13
xorps  %xmm0,%xmm0
cvtss2sd %xmm13,%xmm0
mulsd  %xmm0,%xmm11
addsd  0xc73(%rip),%xmm11
mulsd  %xmm0,%xmm11
addsd  %xmm14,%xmm11
mulsd  %xmm0,%xmm11
movsd  0xc6c(%rip),%xmm0
addsd  %xmm0,%xmm2
addsd  %xmm0,%xmm3
addsd  %xmm0,%xmm6
addsd  %xmm0,%xmm11
addss  %xmm10,%xmm13
movaps %xmm10,%xmm14
xorps  %xmm0,%xmm0
cvtss2sd %xmm13,%xmm0
addsd  0xc0a(%rip),%xmm0
mulsd  %xmm0,%xmm15
addsd  0xc0c(%rip),%xmm15
mulsd  %xmm0,%xmm15
addsd  0xc06(%rip),%xmm15
mulsd  %xmm0,%xmm15
cvtsd2ss %xmm9,%xmm9
cvtsd2ss %xmm1,%xmm1
cvtsd2ss %xmm2,%xmm2
cvtsd2ss %xmm3,%xmm3
cvtsd2ss %xmm4,%xmm4
cvtsd2ss %xmm5,%xmm5
xorps  %xmm0,%xmm0
cvtsd2ss %xmm8,%xmm0
movss  %xmm0,0x8(%rsp)
xorps  %xmm0,%xmm0
cvtsd2ss %xmm7,%xmm0
movss  %xmm0,0xc(%rsp)
xorps  %xmm10,%xmm10
cvtsd2ss %xmm6,%xmm10
cvtsd2ss %xmm11,%xmm11
addss  %xmm14,%xmm13
cvtsd2ss %xmm15,%xmm15
xorps  %xmm6,%xmm6
cvtss2sd %xmm13,%xmm6
addsd  0xb6d(%rip),%xmm6
mulsd  %xmm6,%xmm12
addsd  0xb6f(%rip),%xmm12
mulsd  %xmm6,%xmm12
addsd  0xb69(%rip),%xmm12
mulsd  %xmm6,%xmm12
xorps  %xmm13,%xmm13
cvtsd2ss %xmm12,%xmm13
mov    %eax,%r8d
imul   %r15d,%r8d
lea    0x1(%rax),%ecx
lea    0x2(%rax),%edi
lea    0x3(%rax),%esi
lea    0x4(%rax),%edx
add    $0x5,%eax
imul   %r15d,%eax
lea    0x0(,%r13,4),%ebp
lea    0x0(%rbp,%rax,4),%r10d
imul   %r15d,%edx
lea    0x0(%rbp,%rdx,4),%edx
imul   %r15d,%esi
lea    0x0(%rbp,%rsi,4),%esi
imul   %r15d,%edi
lea    0x0(%rbp,%rdi,4),%edi
imul   %r15d,%ecx
lea    0x0(%rbp,%rcx,4),%ecx
add    %r13d,%r8d
shl    $0x2,%r8d
xor    %r9d,%r9d
xorps  %xmm8,%xmm8
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    (%r8,%rax,1),%ebp
movslq %ebp,%rbp
movzbl (%rbx,%rbp,1),%ebp
xorps  %xmm12,%xmm12
cvtsi2ss %ebp,%xmm12
mulss  %xmm9,%xmm12
addss  %xmm8,%xmm12
lea    (%rcx,%rax,1),%ebp
movslq %ebp,%rbp
movzbl (%rbx,%rbp,1),%ebp
xorps  %xmm14,%xmm14
cvtsi2ss %ebp,%xmm14
mulss  %xmm1,%xmm14
addss  %xmm12,%xmm14
lea    (%rdi,%rax,1),%ebp
movslq %ebp,%rbp
movzbl (%rbx,%rbp,1),%ebp
xorps  %xmm7,%xmm7
cvtsi2ss %ebp,%xmm7
mulss  %xmm2,%xmm7
addss  %xmm14,%xmm7
lea    (%rsi,%rax,1),%ebp
movslq %ebp,%rbp
movzbl (%rbx,%rbp,1),%ebp
xorps  %xmm6,%xmm6
cvtsi2ss %ebp,%xmm6
mulss  %xmm3,%xmm6
addss  %xmm7,%xmm6
lea    (%rdx,%rax,1),%ebp
movslq %ebp,%rbp
movzbl (%rbx,%rbp,1),%ebp
xorps  %xmm7,%xmm7
cvtsi2ss %ebp,%xmm7
mulss  %xmm4,%xmm7
addss  %xmm6,%xmm7
lea    (%r10,%rax,1),%ebp
movslq %ebp,%rbp
movzbl (%rbx,%rbp,1),%ebp
xorps  %xmm6,%xmm6
cvtsi2ss %ebp,%xmm6
mulss  %xmm5,%xmm6
addss  %xmm7,%xmm6
movss  %xmm6,0x10(%rsp,%rax,1)
add    $0x4,%rax
cmp    $0x18,%rax
jne    1530 <interpSP6_b32+0x420>
movss  0x10(%rsp),%xmm6
mulss  0x8(%rsp),%xmm6
addss  %xmm8,%xmm6
movss  0x14(%rsp),%xmm7
mulss  0xc(%rsp),%xmm7
addss  %xmm6,%xmm7
movss  0x18(%rsp),%xmm6
mulss  %xmm10,%xmm6
addss  %xmm7,%xmm6
movss  0x1c(%rsp),%xmm7
mulss  %xmm11,%xmm7
addss  %xmm6,%xmm7
movss  0x20(%rsp),%xmm6
mulss  %xmm15,%xmm6
addss  %xmm7,%xmm6
movss  0x24(%rsp),%xmm7
mulss  %xmm13,%xmm7
addss  %xmm6,%xmm7
xorps  %xmm6,%xmm6
cvtss2sd %xmm7,%xmm6
mulsd  0xa0f(%rip),%xmm6
cvtsd2ss %xmm6,%xmm6
xorps  %xmm7,%xmm7
maxss  %xmm6,%xmm7
movss  0xa0c(%rip),%xmm6
cmpltss %xmm7,%xmm6
movaps %xmm6,%xmm0
andnps %xmm7,%xmm0
movss  0x9fd(%rip),%xmm7
andps  %xmm7,%xmm6
orps   %xmm0,%xmm6
cvttss2si %xmm6,%eax
mov    %al,(%r14,%r9,1)
add    $0x1,%r9
add    $0x1,%r10
add    $0x1,%rdx
add    $0x1,%rsi
add    $0x1,%rdi
add    $0x1,%rcx
add    $0x1,%r8
cmp    $0x4,%r9
jne    1520 <interpSP6_b32+0x410>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @interpSP6_b32(i8* nocapture %0, i32 %1, i32 %2, float %3, float %4, float %5, i8* nocapture writeonly %6, i32 %7) {
%9 = alloca [6 x float]
%10 = bitcast [6 x float]* %9 to i8*
%11 = tail call i64 @ceilf(float %3)
%12 = trunc i64 %11 to i32
%13 = icmp sgt i32 %12, 3
%14 = select i1 %13, i32 %12, i32 3
%15 = add nsw i32 %14, -3
%16 = add nuw nsw i32 %14, 4
%17 = icmp sgt i32 %16, %1
%18 = add nsw i32 %1, -6
%19 = select i1 %17, i32 %18, i32 %15
%20 = tail call i64 @ceilf(float %4)
%21 = trunc i64 %20 to i32
%22 = icmp sgt i32 %21, 3
%23 = select i1 %22, i32 %21, i32 3
%24 = add nsw i32 %23, -3
%25 = add nuw nsw i32 %23, 4
%26 = icmp sgt i32 %25, %2
%27 = add nsw i32 %2, -6
%28 = select i1 %26, i32 %27, i32 %24
%29 = sitofp i32 %28 to float
%30 = fsub float %4, %29
%31 = fpext float %30 to double
%32 = fadd double %31, -2.000000e+00
%33 = tail call double @llvm.fmuladd.f64(double %32, double 9.090900e-02, double -2.153110e-01)
%34 = tail call double @llvm.fmuladd.f64(double %33, double %32, double 1.244020e-01)
%35 = fmul double %32, %34
%36 = fptrunc double %35 to float
%37 = fadd float %30, -1.000000e+00
%38 = fpext float %37 to double
%39 = fadd double %38, -1.000000e+00
%40 = tail call double @llvm.fmuladd.f64(double %39, double -5.454550e-01, double 0x3FF4AB7BAECD0785)
%41 = tail call double @llvm.fmuladd.f64(double %40, double %39, double -7.464110e-01)
%42 = fmul double %39, %41
%43 = fptrunc double %42 to float
%44 = fptrunc double %39 to float
%45 = fpext float %44 to double
%46 = tail call double @llvm.fmuladd.f64(double %45, double 0x3FF2E8B9FDBD2FA1, double 0xC00156F75D9A0F0A)
%47 = tail call double @llvm.fmuladd.f64(double %46, double %45, double 1.435400e-02)
%48 = tail call double @llvm.fmuladd.f64(double %47, double %45, double 1.000000e+00)
%49 = fptrunc double %48 to float
%50 = fsub float 1.000000e+00, %44
%51 = fpext float %50 to double
%52 = tail call double @llvm.fmuladd.f64(double %51, double 0x3FF2E8B9FDBD2FA1, double 0xC00156F75D9A0F0A)
%53 = tail call double @llvm.fmuladd.f64(double %52, double %51, double 1.435400e-02)
%54 = tail call double @llvm.fmuladd.f64(double %53, double %51, double 1.000000e+00)
%55 = fptrunc double %54 to float
%56 = fadd float %50, 1.000000e+00
%57 = fpext float %56 to double
%58 = fadd double %57, -1.000000e+00
%59 = tail call double @llvm.fmuladd.f64(double %58, double -5.454550e-01, double 0x3FF4AB7BAECD0785)
%60 = tail call double @llvm.fmuladd.f64(double %59, double %58, double -7.464110e-01)
%61 = fmul double %58, %60
%62 = fptrunc double %61 to float
%63 = fadd float %56, 1.000000e+00
%64 = fpext float %63 to double
%65 = fadd double %64, -2.000000e+00
%66 = tail call double @llvm.fmuladd.f64(double %65, double 9.090900e-02, double -2.153110e-01)
%67 = tail call double @llvm.fmuladd.f64(double %66, double %65, double 1.244020e-01)
%68 = fmul double %65, %67
%69 = fptrunc double %68 to float
%70 = sitofp i32 %19 to float
%71 = fsub float %3, %70
%72 = fpext float %71 to double
%73 = fadd double %72, -2.000000e+00
%74 = tail call double @llvm.fmuladd.f64(double %73, double 9.090900e-02, double -2.153110e-01)
%75 = tail call double @llvm.fmuladd.f64(double %74, double %73, double 1.244020e-01)
%76 = fmul double %73, %75
%77 = fptrunc double %76 to float
%78 = fadd float %71, -1.000000e+00
%79 = fpext float %78 to double
%80 = fadd double %79, -1.000000e+00
%81 = tail call double @llvm.fmuladd.f64(double %80, double -5.454550e-01, double 0x3FF4AB7BAECD0785)
%82 = tail call double @llvm.fmuladd.f64(double %81, double %80, double -7.464110e-01)
%83 = fmul double %80, %82
%84 = fptrunc double %83 to float
%85 = fptrunc double %80 to float
%86 = fpext float %85 to double
%87 = tail call double @llvm.fmuladd.f64(double %86, double 0x3FF2E8B9FDBD2FA1, double 0xC00156F75D9A0F0A)
%88 = tail call double @llvm.fmuladd.f64(double %87, double %86, double 1.435400e-02)
%89 = tail call double @llvm.fmuladd.f64(double %88, double %86, double 1.000000e+00)
%90 = fptrunc double %89 to float
%91 = fsub float 1.000000e+00, %85
%92 = fpext float %91 to double
%93 = tail call double @llvm.fmuladd.f64(double %92, double 0x3FF2E8B9FDBD2FA1, double 0xC00156F75D9A0F0A)
%94 = tail call double @llvm.fmuladd.f64(double %93, double %92, double 1.435400e-02)
%95 = tail call double @llvm.fmuladd.f64(double %94, double %92, double 1.000000e+00)
%96 = fptrunc double %95 to float
%97 = fadd float %91, 1.000000e+00
%98 = fpext float %97 to double
%99 = fadd double %98, -1.000000e+00
%100 = tail call double @llvm.fmuladd.f64(double %99, double -5.454550e-01, double 0x3FF4AB7BAECD0785)
%101 = tail call double @llvm.fmuladd.f64(double %100, double %99, double -7.464110e-01)
%102 = fmul double %99, %101
%103 = fptrunc double %102 to float
%104 = fadd float %97, 1.000000e+00
%105 = fpext float %104 to double
%106 = fadd double %105, -2.000000e+00
%107 = tail call double @llvm.fmuladd.f64(double %106, double 9.090900e-02, double -2.153110e-01)
%108 = tail call double @llvm.fmuladd.f64(double %107, double %106, double 1.244020e-01)
%109 = fmul double %106, %108
%110 = fptrunc double %109 to float
%111 = getelementptr inbounds [6 x float], [6 x float]* %9, i64 0, i64 0
%112 = mul i32 %28, %1
%113 = add i32 %28, 1
%114 = mul i32 %113, %1
%115 = add i32 %28, 2
%116 = mul i32 %115, %1
%117 = add i32 %28, 3
%118 = mul i32 %117, %1
%119 = add i32 %28, 4
%120 = mul i32 %119, %1
%121 = add i32 %28, 5
%122 = mul i32 %121, %1
%123 = getelementptr inbounds [6 x float], [6 x float]* %9, i64 0, i64 1
%124 = getelementptr inbounds [6 x float], [6 x float]* %9, i64 0, i64 2
%125 = getelementptr inbounds [6 x float], [6 x float]* %9, i64 0, i64 3
%126 = getelementptr inbounds [6 x float], [6 x float]* %9, i64 0, i64 4
%127 = getelementptr inbounds [6 x float], [6 x float]* %9, i64 0, i64 5
br label %128
128: ; preds = %8, %186
%129 = phi i64 [ 0, %8 ], [ %208, %186 ]
%130 = trunc i64 %129 to i32
br label %131
131: ; preds = %128, %131
%132 = phi i64 [ 0, %128 ], [ %184, %131 ]
%133 = getelementptr inbounds [6 x float], [6 x float]* %9, i64 0, i64 %132
%134 = trunc i64 %132 to i32
%135 = add i32 %19, %134
%136 = add i32 %135, %112
%137 = shl nsw i32 %136, 2
%138 = add nsw i32 %137, %130
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds i8, i8* %0, i64 %139
%141 = load i8, i8* %140
%142 = uitofp i8 %141 to float
%143 = tail call float @llvm.fmuladd.f32(float %36, float %142, float 0.000000e+00)
%144 = add i32 %135, %114
%145 = shl nsw i32 %144, 2
%146 = add nsw i32 %145, %130
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds i8, i8* %0, i64 %147
%149 = load i8, i8* %148
%150 = uitofp i8 %149 to float
%151 = tail call float @llvm.fmuladd.f32(float %43, float %150, float %143)
%152 = add i32 %135, %116
%153 = shl nsw i32 %152, 2
%154 = add nsw i32 %153, %130
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds i8, i8* %0, i64 %155
%157 = load i8, i8* %156
%158 = uitofp i8 %157 to float
%159 = tail call float @llvm.fmuladd.f32(float %49, float %158, float %151)
%160 = add i32 %135, %118
%161 = shl nsw i32 %160, 2
%162 = add nsw i32 %161, %130
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds i8, i8* %0, i64 %163
%165 = load i8, i8* %164
%166 = uitofp i8 %165 to float
%167 = tail call float @llvm.fmuladd.f32(float %55, float %166, float %159)
%168 = add i32 %135, %120
%169 = shl nsw i32 %168, 2
%170 = add nsw i32 %169, %130
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds i8, i8* %0, i64 %171
%173 = load i8, i8* %172
%174 = uitofp i8 %173 to float
%175 = tail call float @llvm.fmuladd.f32(float %62, float %174, float %167)
%176 = add i32 %135, %122
%177 = shl nsw i32 %176, 2
%178 = add nsw i32 %177, %130
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds i8, i8* %0, i64 %179
%181 = load i8, i8* %180
%182 = uitofp i8 %181 to float
%183 = tail call float @llvm.fmuladd.f32(float %69, float %182, float %175)
store float %183, float* %133
%184 = add nuw nsw i64 %132, 1
%185 = icmp eq i64 %184, 6
br i1 %185, label %186, label %131
186: ; preds = %131
%187 = load float, float* %111
%188 = tail call float @llvm.fmuladd.f32(float %77, float %187, float 0.000000e+00)
%189 = load float, float* %123
%190 = tail call float @llvm.fmuladd.f32(float %84, float %189, float %188)
%191 = load float, float* %124
%192 = tail call float @llvm.fmuladd.f32(float %90, float %191, float %190)
%193 = load float, float* %125
%194 = tail call float @llvm.fmuladd.f32(float %96, float %193, float %192)
%195 = load float, float* %126
%196 = tail call float @llvm.fmuladd.f32(float %103, float %195, float %194)
%197 = load float, float* %127
%198 = tail call float @llvm.fmuladd.f32(float %110, float %197, float %196)
%199 = fpext float %198 to double
%200 = fmul double %199, 9.470000e-01
%201 = fptrunc double %200 to float
%202 = fcmp olt float %201, 0.000000e+00
%203 = select i1 %202, float 0.000000e+00, float %201
%204 = fcmp ogt float %203, 2.560000e+02
%205 = select i1 %204, float 2.550000e+02, float %203
%206 = fptoui float %205 to i8
%207 = getelementptr inbounds i8, i8* %6, i64 %129
store i8 %206, i8* %207
%208 = add nuw nsw i64 %129, 1
%209 = icmp eq i64 %208, 4
br i1 %209, label %210, label %128
210: ; preds = %186
ret i32 0
}