#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 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)
movss  -0x14(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x3,%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x38(%rbp)
jge    1159 <interpSP6_b32+0x49>
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
add    $0x7,%eax
cmp    -0xc(%rbp),%eax
jle    1171 <interpSP6_b32+0x61>
mov    -0xc(%rbp),%eax
sub    $0x6,%eax
mov    %eax,-0x38(%rbp)
movss  -0x18(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x3,%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x0,-0x3c(%rbp)
jge    1192 <interpSP6_b32+0x82>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x7,%eax
cmp    -0x10(%rbp),%eax
jle    11aa <interpSP6_b32+0x9a>
mov    -0x10(%rbp),%eax
sub    $0x6,%eax
mov    %eax,-0x3c(%rbp)
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x3c(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xe2c(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xe30(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe2c(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xdfc(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdf4(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xdd4(%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  0xdcc(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xda8(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xdac(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xda8(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xd78(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd70(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xd50(%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  0xd28(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xd2c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd28(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcfc(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcc0(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xc9c(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xca0(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc9c(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc70(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc34(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xc10(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xbec(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xbf0(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbec(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xbbc(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbb4(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xb94(%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  0xb6c(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xb28(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xb2c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb28(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xaf8(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xaf0(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xad0(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x14(%rbp),%xmm0
cvtsi2ssl -0x38(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa92(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xa96(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa92(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xa62(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa5a(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xa3a(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa35(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa11(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xa15(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa11(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x9e1(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x9d9(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x9b9(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x994(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x998(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x994(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x968(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x92c(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0x90b(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x90f(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x90b(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8df(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8a3(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x882(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x85e(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x862(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x85e(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x82e(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x826(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x806(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x7e1(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x79d(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x7a1(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x79d(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x76d(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x765(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x745(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x4,-0x30(%rbp)
jge    1a4c <interpSP6_b32+0x93c>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x6,-0x2c(%rbp)
jge    197b <interpSP6_b32+0x86b>
movslq -0x2c(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
movl   $0x0,-0x34(%rbp)
cmpl   $0x6,-0x34(%rbp)
jge    1968 <interpSP6_b32+0x858>
movslq -0x2c(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm1
movslq -0x34(%rbp),%rax
movss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x3c(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x2c(%rbp),%ecx
add    -0x38(%rbp),%ecx
shl    $0x2,%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movslq -0x2c(%rbp),%rax
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1902 <interpSP6_b32+0x7f2>
jmp    196d <interpSP6_b32+0x85d>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    18e4 <interpSP6_b32+0x7d4>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x6,-0x2c(%rbp)
jge    19c8 <interpSP6_b32+0x8b8>
movss  -0x40(%rbp),%xmm1
movslq -0x2c(%rbp),%rax
movss  -0x80(%rbp,%rax,4),%xmm0
movslq -0x2c(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    198a <interpSP6_b32+0x87a>
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x67f(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1a04 <interpSP6_b32+0x8f4>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x64b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1a2c <interpSP6_b32+0x91c>
movss  0x641(%rip),%xmm0
movss  %xmm0,-0x40(%rbp)
cvttss2si -0x40(%rbp),%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    18d3 <interpSP6_b32+0x7c3>
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) {
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca i8*
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca float
%21 = alloca [6 x float]
%22 = alloca [6 x float]
%23 = alloca [6 x float]
%24 = alloca float
store i8* %0, i8** %8
store i32 %1, i32* %9
store i32 %2, i32* %10
store float %3, float* %11
store float %4, float* %12
store float %5, float* %13
store i8* %6, i8** %14
%25 = load float, float* %11
%26 = call i64 @ceilf(float %25)
%27 = trunc i64 %26 to i32
%28 = sub nsw i32 %27, 3
store i32 %28, i32* %18
%29 = load i32, i32* %18
%30 = icmp slt i32 %29, 0
br i1 %30, label %31, label %32
31: ; preds = %7
store i32 0, i32* %18
br label %32
32: ; preds = %31, %7
%33 = load i32, i32* %18
%34 = add nsw i32 %33, 7
%35 = load i32, i32* %9
%36 = icmp sgt i32 %34, %35
br i1 %36, label %37, label %40
37: ; preds = %32
%38 = load i32, i32* %9
%39 = sub nsw i32 %38, 6
store i32 %39, i32* %18
br label %40
40: ; preds = %37, %32
%41 = load float, float* %12
%42 = call i64 @ceilf(float %41)
%43 = trunc i64 %42 to i32
%44 = sub nsw i32 %43, 3
store i32 %44, i32* %19
%45 = load i32, i32* %19
%46 = icmp slt i32 %45, 0
br i1 %46, label %47, label %48
47: ; preds = %40
store i32 0, i32* %19
br label %48
48: ; preds = %47, %40
%49 = load i32, i32* %19
%50 = add nsw i32 %49, 7
%51 = load i32, i32* %10
%52 = icmp sgt i32 %50, %51
br i1 %52, label %53, label %56
53: ; preds = %48
%54 = load i32, i32* %10
%55 = sub nsw i32 %54, 6
store i32 %55, i32* %19
br label %56
56: ; preds = %53, %48
%57 = load float, float* %12
%58 = load i32, i32* %19
%59 = sitofp i32 %58 to float
%60 = fsub float %57, %59
store float %60, float* %24
%61 = load float, float* %24
%62 = fpext float %61 to double
%63 = fsub double %62, 2.000000e+00
%64 = call double @llvm.fmuladd.f64(double 9.090900e-02, double %63, double -2.153110e-01)
%65 = load float, float* %24
%66 = fpext float %65 to double
%67 = fsub double %66, 2.000000e+00
%68 = call double @llvm.fmuladd.f64(double %64, double %67, double 1.244020e-01)
%69 = load float, float* %24
%70 = fpext float %69 to double
%71 = fsub double %70, 2.000000e+00
%72 = fmul double %68, %71
%73 = fptrunc double %72 to float
%74 = getelementptr inbounds [6 x float], [6 x float]* %23, i64 0, i64 0
store float %73, float* %74
%75 = load float, float* %24
%76 = fpext float %75 to double
%77 = fsub double %76, 1.000000e+00
%78 = fptrunc double %77 to float
store float %78, float* %24
%79 = load float, float* %24
%80 = fpext float %79 to double
%81 = fsub double %80, 1.000000e+00
%82 = call double @llvm.fmuladd.f64(double -5.454550e-01, double %81, double 0x3FF4AB7BAECD0785)
%83 = load float, float* %24
%84 = fpext float %83 to double
%85 = fsub double %84, 1.000000e+00
%86 = call double @llvm.fmuladd.f64(double %82, double %85, double -7.464110e-01)
%87 = load float, float* %24
%88 = fpext float %87 to double
%89 = fsub double %88, 1.000000e+00
%90 = fmul double %86, %89
%91 = fptrunc double %90 to float
%92 = getelementptr inbounds [6 x float], [6 x float]* %23, i64 0, i64 1
store float %91, float* %92
%93 = load float, float* %24
%94 = fpext float %93 to double
%95 = fsub double %94, 1.000000e+00
%96 = fptrunc double %95 to float
store float %96, float* %24
%97 = load float, float* %24
%98 = fpext float %97 to double
%99 = call double @llvm.fmuladd.f64(double 0x3FF2E8B9FDBD2FA1, double %98, double 0xC00156F75D9A0F0A)
%100 = load float, float* %24
%101 = fpext float %100 to double
%102 = call double @llvm.fmuladd.f64(double %99, double %101, double 1.435400e-02)
%103 = load float, float* %24
%104 = fpext float %103 to double
%105 = call double @llvm.fmuladd.f64(double %102, double %104, double 1.000000e+00)
%106 = fptrunc double %105 to float
%107 = getelementptr inbounds [6 x float], [6 x float]* %23, i64 0, i64 2
store float %106, float* %107
%108 = load float, float* %24
%109 = fpext float %108 to double
%110 = fsub double 1.000000e+00, %109
%111 = fptrunc double %110 to float
store float %111, float* %24
%112 = load float, float* %24
%113 = fpext float %112 to double
%114 = call double @llvm.fmuladd.f64(double 0x3FF2E8B9FDBD2FA1, double %113, double 0xC00156F75D9A0F0A)
%115 = load float, float* %24
%116 = fpext float %115 to double
%117 = call double @llvm.fmuladd.f64(double %114, double %116, double 1.435400e-02)
%118 = load float, float* %24
%119 = fpext float %118 to double
%120 = call double @llvm.fmuladd.f64(double %117, double %119, double 1.000000e+00)
%121 = fptrunc double %120 to float
%122 = getelementptr inbounds [6 x float], [6 x float]* %23, i64 0, i64 3
store float %121, float* %122
%123 = load float, float* %24
%124 = fpext float %123 to double
%125 = fadd double %124, 1.000000e+00
%126 = fptrunc double %125 to float
store float %126, float* %24
%127 = load float, float* %24
%128 = fpext float %127 to double
%129 = fsub double %128, 1.000000e+00
%130 = call double @llvm.fmuladd.f64(double -5.454550e-01, double %129, double 0x3FF4AB7BAECD0785)
%131 = load float, float* %24
%132 = fpext float %131 to double
%133 = fsub double %132, 1.000000e+00
%134 = call double @llvm.fmuladd.f64(double %130, double %133, double -7.464110e-01)
%135 = load float, float* %24
%136 = fpext float %135 to double
%137 = fsub double %136, 1.000000e+00
%138 = fmul double %134, %137
%139 = fptrunc double %138 to float
%140 = getelementptr inbounds [6 x float], [6 x float]* %23, i64 0, i64 4
store float %139, float* %140
%141 = load float, float* %24
%142 = fpext float %141 to double
%143 = fadd double %142, 1.000000e+00
%144 = fptrunc double %143 to float
store float %144, float* %24
%145 = load float, float* %24
%146 = fpext float %145 to double
%147 = fsub double %146, 2.000000e+00
%148 = call double @llvm.fmuladd.f64(double 9.090900e-02, double %147, double -2.153110e-01)
%149 = load float, float* %24
%150 = fpext float %149 to double
%151 = fsub double %150, 2.000000e+00
%152 = call double @llvm.fmuladd.f64(double %148, double %151, double 1.244020e-01)
%153 = load float, float* %24
%154 = fpext float %153 to double
%155 = fsub double %154, 2.000000e+00
%156 = fmul double %152, %155
%157 = fptrunc double %156 to float
%158 = getelementptr inbounds [6 x float], [6 x float]* %23, i64 0, i64 5
store float %157, float* %158
%159 = load float, float* %11
%160 = load i32, i32* %18
%161 = sitofp i32 %160 to float
%162 = fsub float %159, %161
store float %162, float* %24
%163 = load float, float* %24
%164 = fpext float %163 to double
%165 = fsub double %164, 2.000000e+00
%166 = call double @llvm.fmuladd.f64(double 9.090900e-02, double %165, double -2.153110e-01)
%167 = load float, float* %24
%168 = fpext float %167 to double
%169 = fsub double %168, 2.000000e+00
%170 = call double @llvm.fmuladd.f64(double %166, double %169, double 1.244020e-01)
%171 = load float, float* %24
%172 = fpext float %171 to double
%173 = fsub double %172, 2.000000e+00
%174 = fmul double %170, %173
%175 = fptrunc double %174 to float
%176 = getelementptr inbounds [6 x float], [6 x float]* %22, i64 0, i64 0
store float %175, float* %176
%177 = load float, float* %24
%178 = fpext float %177 to double
%179 = fsub double %178, 1.000000e+00
%180 = fptrunc double %179 to float
store float %180, float* %24
%181 = load float, float* %24
%182 = fpext float %181 to double
%183 = fsub double %182, 1.000000e+00
%184 = call double @llvm.fmuladd.f64(double -5.454550e-01, double %183, double 0x3FF4AB7BAECD0785)
%185 = load float, float* %24
%186 = fpext float %185 to double
%187 = fsub double %186, 1.000000e+00
%188 = call double @llvm.fmuladd.f64(double %184, double %187, double -7.464110e-01)
%189 = load float, float* %24
%190 = fpext float %189 to double
%191 = fsub double %190, 1.000000e+00
%192 = fmul double %188, %191
%193 = fptrunc double %192 to float
%194 = getelementptr inbounds [6 x float], [6 x float]* %22, i64 0, i64 1
store float %193, float* %194
%195 = load float, float* %24
%196 = fpext float %195 to double
%197 = fsub double %196, 1.000000e+00
%198 = fptrunc double %197 to float
store float %198, float* %24
%199 = load float, float* %24
%200 = fpext float %199 to double
%201 = call double @llvm.fmuladd.f64(double 0x3FF2E8B9FDBD2FA1, double %200, double 0xC00156F75D9A0F0A)
%202 = load float, float* %24
%203 = fpext float %202 to double
%204 = call double @llvm.fmuladd.f64(double %201, double %203, double 1.435400e-02)
%205 = load float, float* %24
%206 = fpext float %205 to double
%207 = call double @llvm.fmuladd.f64(double %204, double %206, double 1.000000e+00)
%208 = fptrunc double %207 to float
%209 = getelementptr inbounds [6 x float], [6 x float]* %22, i64 0, i64 2
store float %208, float* %209
%210 = load float, float* %24
%211 = fpext float %210 to double
%212 = fsub double 1.000000e+00, %211
%213 = fptrunc double %212 to float
store float %213, float* %24
%214 = load float, float* %24
%215 = fpext float %214 to double
%216 = call double @llvm.fmuladd.f64(double 0x3FF2E8B9FDBD2FA1, double %215, double 0xC00156F75D9A0F0A)
%217 = load float, float* %24
%218 = fpext float %217 to double
%219 = call double @llvm.fmuladd.f64(double %216, double %218, double 1.435400e-02)
%220 = load float, float* %24
%221 = fpext float %220 to double
%222 = call double @llvm.fmuladd.f64(double %219, double %221, double 1.000000e+00)
%223 = fptrunc double %222 to float
%224 = getelementptr inbounds [6 x float], [6 x float]* %22, i64 0, i64 3
store float %223, float* %224
%225 = load float, float* %24
%226 = fpext float %225 to double
%227 = fadd double %226, 1.000000e+00
%228 = fptrunc double %227 to float
store float %228, float* %24
%229 = load float, float* %24
%230 = fpext float %229 to double
%231 = fsub double %230, 1.000000e+00
%232 = call double @llvm.fmuladd.f64(double -5.454550e-01, double %231, double 0x3FF4AB7BAECD0785)
%233 = load float, float* %24
%234 = fpext float %233 to double
%235 = fsub double %234, 1.000000e+00
%236 = call double @llvm.fmuladd.f64(double %232, double %235, double -7.464110e-01)
%237 = load float, float* %24
%238 = fpext float %237 to double
%239 = fsub double %238, 1.000000e+00
%240 = fmul double %236, %239
%241 = fptrunc double %240 to float
%242 = getelementptr inbounds [6 x float], [6 x float]* %22, i64 0, i64 4
store float %241, float* %242
%243 = load float, float* %24
%244 = fpext float %243 to double
%245 = fadd double %244, 1.000000e+00
%246 = fptrunc double %245 to float
store float %246, float* %24
%247 = load float, float* %24
%248 = fpext float %247 to double
%249 = fsub double %248, 2.000000e+00
%250 = call double @llvm.fmuladd.f64(double 9.090900e-02, double %249, double -2.153110e-01)
%251 = load float, float* %24
%252 = fpext float %251 to double
%253 = fsub double %252, 2.000000e+00
%254 = call double @llvm.fmuladd.f64(double %250, double %253, double 1.244020e-01)
%255 = load float, float* %24
%256 = fpext float %255 to double
%257 = fsub double %256, 2.000000e+00
%258 = fmul double %254, %257
%259 = fptrunc double %258 to float
%260 = getelementptr inbounds [6 x float], [6 x float]* %22, i64 0, i64 5
store float %259, float* %260
store i32 0, i32* %16
br label %261
261: ; preds = %352, %56
%262 = load i32, i32* %16
%263 = icmp slt i32 %262, 4
br i1 %263, label %264, label %355
264: ; preds = %261
store i32 0, i32* %15
br label %265
265: ; preds = %310, %264
%266 = load i32, i32* %15
%267 = icmp slt i32 %266, 6
br i1 %267, label %268, label %313
268: ; preds = %265
%269 = load i32, i32* %15
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 %270
store float 0.000000e+00, float* %271
store i32 0, i32* %17
br label %272
272: ; preds = %306, %268
%273 = load i32, i32* %17
%274 = icmp slt i32 %273, 6
br i1 %274, label %275, label %309
275: ; preds = %272
%276 = load i32, i32* %15
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 %277
%279 = load float, float* %278
%280 = load i32, i32* %17
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds [6 x float], [6 x float]* %23, i64 0, i64 %281
%283 = load float, float* %282
%284 = load i8*, i8** %8
%285 = load i32, i32* %17
%286 = load i32, i32* %19
%287 = add nsw i32 %285, %286
%288 = load i32, i32* %9
%289 = mul nsw i32 %287, %288
%290 = load i32, i32* %15
%291 = add nsw i32 %289, %290
%292 = load i32, i32* %18
%293 = add nsw i32 %291, %292
%294 = mul nsw i32 4, %293
%295 = load i32, i32* %16
%296 = add nsw i32 %294, %295
%297 = sext i32 %296 to i64
%298 = getelementptr inbounds i8, i8* %284, i64 %297
%299 = load i8, i8* %298
%300 = zext i8 %299 to i32
%301 = sitofp i32 %300 to float
%302 = call float @llvm.fmuladd.f32(float %283, float %301, float %279)
%303 = load i32, i32* %15
%304 = sext i32 %303 to i64
%305 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 %304
store float %302, float* %305
br label %306
306: ; preds = %275
%307 = load i32, i32* %17
%308 = add nsw i32 %307, 1
store i32 %308, i32* %17
br label %272
309: ; preds = %272
br label %310
310: ; preds = %309
%311 = load i32, i32* %15
%312 = add nsw i32 %311, 1
store i32 %312, i32* %15
br label %265
313: ; preds = %265
store float 0.000000e+00, float* %20
store i32 0, i32* %15
br label %314
314: ; preds = %328, %313
%315 = load i32, i32* %15
%316 = icmp slt i32 %315, 6
br i1 %316, label %317, label %331
317: ; preds = %314
%318 = load float, float* %20
%319 = load i32, i32* %15
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds [6 x float], [6 x float]* %22, i64 0, i64 %320
%322 = load float, float* %321
%323 = load i32, i32* %15
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 %324
%326 = load float, float* %325
%327 = call float @llvm.fmuladd.f32(float %322, float %326, float %318)
store float %327, float* %20
br label %328
328: ; preds = %317
%329 = load i32, i32* %15
%330 = add nsw i32 %329, 1
store i32 %330, i32* %15
br label %314
331: ; preds = %314
%332 = load float, float* %20
%333 = fpext float %332 to double
%334 = fmul double 9.470000e-01, %333
%335 = fptrunc double %334 to float
store float %335, float* %20
%336 = load float, float* %20
%337 = fpext float %336 to double
%338 = fcmp olt double %337, 0.000000e+00
br i1 %338, label %339, label %340
339: ; preds = %331
store float 0.000000e+00, float* %20
br label %340
340: ; preds = %339, %331
%341 = load float, float* %20
%342 = fpext float %341 to double
%343 = fcmp ogt double %342, 2.560000e+02
br i1 %343, label %344, label %345
344: ; preds = %340
store float 2.550000e+02, float* %20
br label %345
345: ; preds = %344, %340
%346 = load float, float* %20
%347 = fptoui float %346 to i8
%348 = load i8*, i8** %14
%349 = load i32, i32* %16
%350 = sext i32 %349 to i64
%351 = getelementptr inbounds i8, i8* %348, i64 %350
store i8 %347, i8* %351
br label %352
352: ; preds = %345
%353 = load i32, i32* %16
%354 = add nsw i32 %353, 1
store i32 %354, i32* %16
br label %261
355: ; preds = %261
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) {
%8 = alloca [6 x float]
%9 = bitcast [6 x float]* %8 to i8*
%10 = tail call i64 @ceilf(float %3)
%11 = trunc i64 %10 to i32
%12 = icmp sgt i32 %11, 3
%13 = select i1 %12, i32 %11, i32 3
%14 = add nsw i32 %13, -3
%15 = add nuw nsw i32 %13, 4
%16 = icmp sgt i32 %15, %1
%17 = add nsw i32 %1, -6
%18 = select i1 %16, i32 %17, i32 %14
%19 = tail call i64 @ceilf(float %4)
%20 = trunc i64 %19 to i32
%21 = icmp sgt i32 %20, 3
%22 = select i1 %21, i32 %20, i32 3
%23 = add nsw i32 %22, -3
%24 = add nuw nsw i32 %22, 4
%25 = icmp sgt i32 %24, %2
%26 = add nsw i32 %2, -6
%27 = select i1 %25, i32 %26, i32 %23
%28 = sitofp i32 %27 to float
%29 = fsub float %4, %28
%30 = fpext float %29 to double
%31 = fadd double %30, -2.000000e+00
%32 = tail call double @llvm.fmuladd.f64(double %31, double 9.090900e-02, double -2.153110e-01)
%33 = tail call double @llvm.fmuladd.f64(double %32, double %31, double 1.244020e-01)
%34 = fmul double %31, %33
%35 = fptrunc double %34 to float
%36 = fadd float %29, -1.000000e+00
%37 = fpext float %36 to double
%38 = fadd double %37, -1.000000e+00
%39 = tail call double @llvm.fmuladd.f64(double %38, double -5.454550e-01, double 0x3FF4AB7BAECD0785)
%40 = tail call double @llvm.fmuladd.f64(double %39, double %38, double -7.464110e-01)
%41 = fmul double %38, %40
%42 = fptrunc double %41 to float
%43 = fptrunc double %38 to float
%44 = fpext float %43 to double
%45 = tail call double @llvm.fmuladd.f64(double %44, double 0x3FF2E8B9FDBD2FA1, double 0xC00156F75D9A0F0A)
%46 = tail call double @llvm.fmuladd.f64(double %45, double %44, double 1.435400e-02)
%47 = tail call double @llvm.fmuladd.f64(double %46, double %44, double 1.000000e+00)
%48 = fptrunc double %47 to float
%49 = fsub float 1.000000e+00, %43
%50 = fpext float %49 to double
%51 = tail call double @llvm.fmuladd.f64(double %50, double 0x3FF2E8B9FDBD2FA1, double 0xC00156F75D9A0F0A)
%52 = tail call double @llvm.fmuladd.f64(double %51, double %50, double 1.435400e-02)
%53 = tail call double @llvm.fmuladd.f64(double %52, double %50, double 1.000000e+00)
%54 = fptrunc double %53 to float
%55 = fadd float %49, 1.000000e+00
%56 = fpext float %55 to double
%57 = fadd double %56, -1.000000e+00
%58 = tail call double @llvm.fmuladd.f64(double %57, double -5.454550e-01, double 0x3FF4AB7BAECD0785)
%59 = tail call double @llvm.fmuladd.f64(double %58, double %57, double -7.464110e-01)
%60 = fmul double %57, %59
%61 = fptrunc double %60 to float
%62 = fadd float %55, 1.000000e+00
%63 = fpext float %62 to double
%64 = fadd double %63, -2.000000e+00
%65 = tail call double @llvm.fmuladd.f64(double %64, double 9.090900e-02, double -2.153110e-01)
%66 = tail call double @llvm.fmuladd.f64(double %65, double %64, double 1.244020e-01)
%67 = fmul double %64, %66
%68 = fptrunc double %67 to float
%69 = sitofp i32 %18 to float
%70 = fsub float %3, %69
%71 = fpext float %70 to double
%72 = fadd double %71, -2.000000e+00
%73 = tail call double @llvm.fmuladd.f64(double %72, double 9.090900e-02, double -2.153110e-01)
%74 = tail call double @llvm.fmuladd.f64(double %73, double %72, double 1.244020e-01)
%75 = fmul double %72, %74
%76 = fptrunc double %75 to float
%77 = fadd float %70, -1.000000e+00
%78 = fpext float %77 to double
%79 = fadd double %78, -1.000000e+00
%80 = tail call double @llvm.fmuladd.f64(double %79, double -5.454550e-01, double 0x3FF4AB7BAECD0785)
%81 = tail call double @llvm.fmuladd.f64(double %80, double %79, double -7.464110e-01)
%82 = fmul double %79, %81
%83 = fptrunc double %82 to float
%84 = fptrunc double %79 to float
%85 = fpext float %84 to double
%86 = tail call double @llvm.fmuladd.f64(double %85, double 0x3FF2E8B9FDBD2FA1, double 0xC00156F75D9A0F0A)
%87 = tail call double @llvm.fmuladd.f64(double %86, double %85, double 1.435400e-02)
%88 = tail call double @llvm.fmuladd.f64(double %87, double %85, double 1.000000e+00)
%89 = fptrunc double %88 to float
%90 = fsub float 1.000000e+00, %84
%91 = fpext float %90 to double
%92 = tail call double @llvm.fmuladd.f64(double %91, double 0x3FF2E8B9FDBD2FA1, double 0xC00156F75D9A0F0A)
%93 = tail call double @llvm.fmuladd.f64(double %92, double %91, double 1.435400e-02)
%94 = tail call double @llvm.fmuladd.f64(double %93, double %91, double 1.000000e+00)
%95 = fptrunc double %94 to float
%96 = fadd float %90, 1.000000e+00
%97 = fpext float %96 to double
%98 = fadd double %97, -1.000000e+00
%99 = tail call double @llvm.fmuladd.f64(double %98, double -5.454550e-01, double 0x3FF4AB7BAECD0785)
%100 = tail call double @llvm.fmuladd.f64(double %99, double %98, double -7.464110e-01)
%101 = fmul double %98, %100
%102 = fptrunc double %101 to float
%103 = fadd float %96, 1.000000e+00
%104 = fpext float %103 to double
%105 = fadd double %104, -2.000000e+00
%106 = tail call double @llvm.fmuladd.f64(double %105, double 9.090900e-02, double -2.153110e-01)
%107 = tail call double @llvm.fmuladd.f64(double %106, double %105, double 1.244020e-01)
%108 = fmul double %105, %107
%109 = fptrunc double %108 to float
%110 = getelementptr inbounds [6 x float], [6 x float]* %8, i64 0, i64 0
%111 = mul i32 %27, %1
%112 = add i32 %27, 1
%113 = mul i32 %112, %1
%114 = add i32 %27, 2
%115 = mul i32 %114, %1
%116 = add i32 %27, 3
%117 = mul i32 %116, %1
%118 = add i32 %27, 4
%119 = mul i32 %118, %1
%120 = add i32 %27, 5
%121 = mul i32 %120, %1
%122 = getelementptr inbounds [6 x float], [6 x float]* %8, i64 0, i64 1
%123 = getelementptr inbounds [6 x float], [6 x float]* %8, i64 0, i64 2
%124 = getelementptr inbounds [6 x float], [6 x float]* %8, i64 0, i64 3
%125 = getelementptr inbounds [6 x float], [6 x float]* %8, i64 0, i64 4
%126 = getelementptr inbounds [6 x float], [6 x float]* %8, i64 0, i64 5
br label %127
127: ; preds = %7, %185
%128 = phi i64 [ 0, %7 ], [ %207, %185 ]
%129 = trunc i64 %128 to i32
br label %130
130: ; preds = %127, %130
%131 = phi i64 [ 0, %127 ], [ %183, %130 ]
%132 = getelementptr inbounds [6 x float], [6 x float]* %8, i64 0, i64 %131
%133 = trunc i64 %131 to i32
%134 = add i32 %18, %133
%135 = add i32 %134, %111
%136 = shl nsw i32 %135, 2
%137 = add nsw i32 %136, %129
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds i8, i8* %0, i64 %138
%140 = load i8, i8* %139
%141 = uitofp i8 %140 to float
%142 = tail call float @llvm.fmuladd.f32(float %35, float %141, float 0.000000e+00)
%143 = add i32 %134, %113
%144 = shl nsw i32 %143, 2
%145 = add nsw i32 %144, %129
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds i8, i8* %0, i64 %146
%148 = load i8, i8* %147
%149 = uitofp i8 %148 to float
%150 = tail call float @llvm.fmuladd.f32(float %42, float %149, float %142)
%151 = add i32 %134, %115
%152 = shl nsw i32 %151, 2
%153 = add nsw i32 %152, %129
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds i8, i8* %0, i64 %154
%156 = load i8, i8* %155
%157 = uitofp i8 %156 to float
%158 = tail call float @llvm.fmuladd.f32(float %48, float %157, float %150)
%159 = add i32 %134, %117
%160 = shl nsw i32 %159, 2
%161 = add nsw i32 %160, %129
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds i8, i8* %0, i64 %162
%164 = load i8, i8* %163
%165 = uitofp i8 %164 to float
%166 = tail call float @llvm.fmuladd.f32(float %54, float %165, float %158)
%167 = add i32 %134, %119
%168 = shl nsw i32 %167, 2
%169 = add nsw i32 %168, %129
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds i8, i8* %0, i64 %170
%172 = load i8, i8* %171
%173 = uitofp i8 %172 to float
%174 = tail call float @llvm.fmuladd.f32(float %61, float %173, float %166)
%175 = add i32 %134, %121
%176 = shl nsw i32 %175, 2
%177 = add nsw i32 %176, %129
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds i8, i8* %0, i64 %178
%180 = load i8, i8* %179
%181 = uitofp i8 %180 to float
%182 = tail call float @llvm.fmuladd.f32(float %68, float %181, float %174)
store float %182, float* %132
%183 = add nuw nsw i64 %131, 1
%184 = icmp eq i64 %183, 6
br i1 %184, label %185, label %130
185: ; preds = %130
%186 = load float, float* %110
%187 = tail call float @llvm.fmuladd.f32(float %76, float %186, float 0.000000e+00)
%188 = load float, float* %122
%189 = tail call float @llvm.fmuladd.f32(float %83, float %188, float %187)
%190 = load float, float* %123
%191 = tail call float @llvm.fmuladd.f32(float %89, float %190, float %189)
%192 = load float, float* %124
%193 = tail call float @llvm.fmuladd.f32(float %95, float %192, float %191)
%194 = load float, float* %125
%195 = tail call float @llvm.fmuladd.f32(float %102, float %194, float %193)
%196 = load float, float* %126
%197 = tail call float @llvm.fmuladd.f32(float %109, float %196, float %195)
%198 = fpext float %197 to double
%199 = fmul double %198, 9.470000e-01
%200 = fptrunc double %199 to float
%201 = fcmp olt float %200, 0.000000e+00
%202 = select i1 %201, float 0.000000e+00, float %200
%203 = fcmp ogt float %202, 2.560000e+02
%204 = select i1 %203, float 2.550000e+02, float %202
%205 = fptoui float %204 to i8
%206 = getelementptr inbounds i8, i8* %6, i64 %128
store i8 %205, i8* %206
%207 = add nuw nsw i64 %128, 1
%208 = icmp eq i64 %207, 4
br i1 %208, label %209, label %127
209: ; preds = %185
ret i32 0
}