#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,
                  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    $0xa0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movss  %xmm0,-0x14(%rbp)
movss  %xmm1,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
movss  -0x14(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x3,%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x0,-0x30(%rbp)
jge    1154 <interpSP6_b32+0x44>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
add    $0x7,%eax
cmp    -0xc(%rbp),%eax
jle    116c <interpSP6_b32+0x5c>
mov    -0xc(%rbp),%eax
sub    $0x6,%eax
mov    %eax,-0x30(%rbp)
movss  -0x18(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x3,%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x0,-0x34(%rbp)
jge    118d <interpSP6_b32+0x7d>
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
add    $0x7,%eax
cmp    -0x10(%rbp),%eax
jle    11a5 <interpSP6_b32+0x95>
mov    -0x10(%rbp),%eax
sub    $0x6,%eax
mov    %eax,-0x34(%rbp)
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x34(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xe31(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xe35(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe31(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xe01(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdf9(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xdd9(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xdd1(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xdad(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xdb1(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdad(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xd7d(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd75(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xd55(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xd2d(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xd31(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd2d(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd01(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcc5(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xca1(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xca5(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xca1(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc75(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc39(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xc15(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xbf1(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xbf5(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbf1(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xbc1(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbb9(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xb99(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xb74(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xb30(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xb34(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb30(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xb00(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xaf8(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xad8(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x14(%rbp),%xmm0
cvtsi2ssl -0x30(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa9d(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xaa1(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa9d(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xa6d(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa65(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xa45(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa40(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xa1c(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xa20(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa1c(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x9ec(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x9e4(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x9c4(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x99f(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x9a3(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x99f(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x973(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x937(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0x916(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x91a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x916(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8ea(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8ae(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x88d(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x869(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x86d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x869(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x839(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x831(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x811(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x7ec(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x7a8(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x7ac(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x7a8(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x778(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x770(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x94(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0x750(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x4,-0x28(%rbp)
jge    1a41 <interpSP6_b32+0x931>
movl   $0x0,-0x24(%rbp)
cmpl   $0x6,-0x24(%rbp)
jge    1970 <interpSP6_b32+0x860>
movslq -0x24(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp,%rax,4)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x6,-0x2c(%rbp)
jge    195d <interpSP6_b32+0x84d>
movslq -0x24(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm1
movslq -0x2c(%rbp),%rax
movss  -0x90(%rbp,%rax,4),%xmm0
ff ff
mov    -0x8(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x34(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x24(%rbp),%ecx
add    -0x30(%rbp),%ecx
shl    $0x2,%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movslq -0x24(%rbp),%rax
movss  %xmm0,-0x50(%rbp,%rax,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    18f7 <interpSP6_b32+0x7e7>
jmp    1962 <interpSP6_b32+0x852>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    18d9 <interpSP6_b32+0x7c9>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x6,-0x24(%rbp)
jge    19bd <interpSP6_b32+0x8ad>
movss  -0x38(%rbp),%xmm1
movslq -0x24(%rbp),%rax
movss  -0x70(%rbp,%rax,4),%xmm0
movslq -0x24(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    197f <interpSP6_b32+0x86f>
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x68a(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    19f9 <interpSP6_b32+0x8e9>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x656(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1a21 <interpSP6_b32+0x911>
movss  0x64c(%rip),%xmm0
movss  %xmm0,-0x38(%rbp)
cvttss2si -0x38(%rbp),%eax
mov    %al,%dl
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    18c8 <interpSP6_b32+0x7b8>
xor    %eax,%eax
add    $0xa0,%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, i8* %5) {
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i32
%10 = alloca float
%11 = alloca float
%12 = alloca i8*
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca float
%19 = alloca [6 x float]
%20 = alloca [6 x float]
%21 = alloca [6 x float]
%22 = alloca float
store i8* %0, i8** %7
store i32 %1, i32* %8
store i32 %2, i32* %9
store float %3, float* %10
store float %4, float* %11
store i8* %5, i8** %12
%23 = load float, float* %10
%24 = call i64 @ceilf(float %23)
%25 = trunc i64 %24 to i32
%26 = sub nsw i32 %25, 3
store i32 %26, i32* %16
%27 = load i32, i32* %16
%28 = icmp slt i32 %27, 0
br i1 %28, label %29, label %30
29: ; preds = %6
store i32 0, i32* %16
br label %30
30: ; preds = %29, %6
%31 = load i32, i32* %16
%32 = add nsw i32 %31, 7
%33 = load i32, i32* %8
%34 = icmp sgt i32 %32, %33
br i1 %34, label %35, label %38
35: ; preds = %30
%36 = load i32, i32* %8
%37 = sub nsw i32 %36, 6
store i32 %37, i32* %16
br label %38
38: ; preds = %35, %30
%39 = load float, float* %11
%40 = call i64 @ceilf(float %39)
%41 = trunc i64 %40 to i32
%42 = sub nsw i32 %41, 3
store i32 %42, i32* %17
%43 = load i32, i32* %17
%44 = icmp slt i32 %43, 0
br i1 %44, label %45, label %46
45: ; preds = %38
store i32 0, i32* %17
br label %46
46: ; preds = %45, %38
%47 = load i32, i32* %17
%48 = add nsw i32 %47, 7
%49 = load i32, i32* %9
%50 = icmp sgt i32 %48, %49
br i1 %50, label %51, label %54
51: ; preds = %46
%52 = load i32, i32* %9
%53 = sub nsw i32 %52, 6
store i32 %53, i32* %17
br label %54
54: ; preds = %51, %46
%55 = load float, float* %11
%56 = load i32, i32* %17
%57 = sitofp i32 %56 to float
%58 = fsub float %55, %57
store float %58, float* %22
%59 = load float, float* %22
%60 = fpext float %59 to double
%61 = fsub double %60, 2.000000e+00
%62 = call double @llvm.fmuladd.f64(double 9.090900e-02, double %61, double -2.153110e-01)
%63 = load float, float* %22
%64 = fpext float %63 to double
%65 = fsub double %64, 2.000000e+00
%66 = call double @llvm.fmuladd.f64(double %62, double %65, double 1.244020e-01)
%67 = load float, float* %22
%68 = fpext float %67 to double
%69 = fsub double %68, 2.000000e+00
%70 = fmul double %66, %69
%71 = fptrunc double %70 to float
%72 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 0
store float %71, float* %72
%73 = load float, float* %22
%74 = fpext float %73 to double
%75 = fsub double %74, 1.000000e+00
%76 = fptrunc double %75 to float
store float %76, float* %22
%77 = load float, float* %22
%78 = fpext float %77 to double
%79 = fsub double %78, 1.000000e+00
%80 = call double @llvm.fmuladd.f64(double -5.454550e-01, double %79, double 0x3FF4AB7BAECD0785)
%81 = load float, float* %22
%82 = fpext float %81 to double
%83 = fsub double %82, 1.000000e+00
%84 = call double @llvm.fmuladd.f64(double %80, double %83, double -7.464110e-01)
%85 = load float, float* %22
%86 = fpext float %85 to double
%87 = fsub double %86, 1.000000e+00
%88 = fmul double %84, %87
%89 = fptrunc double %88 to float
%90 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 1
store float %89, float* %90
%91 = load float, float* %22
%92 = fpext float %91 to double
%93 = fsub double %92, 1.000000e+00
%94 = fptrunc double %93 to float
store float %94, float* %22
%95 = load float, float* %22
%96 = fpext float %95 to double
%97 = call double @llvm.fmuladd.f64(double 0x3FF2E8B9FDBD2FA1, double %96, double 0xC00156F75D9A0F0A)
%98 = load float, float* %22
%99 = fpext float %98 to double
%100 = call double @llvm.fmuladd.f64(double %97, double %99, double 1.435400e-02)
%101 = load float, float* %22
%102 = fpext float %101 to double
%103 = call double @llvm.fmuladd.f64(double %100, double %102, double 1.000000e+00)
%104 = fptrunc double %103 to float
%105 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 2
store float %104, float* %105
%106 = load float, float* %22
%107 = fpext float %106 to double
%108 = fsub double 1.000000e+00, %107
%109 = fptrunc double %108 to float
store float %109, float* %22
%110 = load float, float* %22
%111 = fpext float %110 to double
%112 = call double @llvm.fmuladd.f64(double 0x3FF2E8B9FDBD2FA1, double %111, double 0xC00156F75D9A0F0A)
%113 = load float, float* %22
%114 = fpext float %113 to double
%115 = call double @llvm.fmuladd.f64(double %112, double %114, double 1.435400e-02)
%116 = load float, float* %22
%117 = fpext float %116 to double
%118 = call double @llvm.fmuladd.f64(double %115, double %117, double 1.000000e+00)
%119 = fptrunc double %118 to float
%120 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 3
store float %119, float* %120
%121 = load float, float* %22
%122 = fpext float %121 to double
%123 = fadd double %122, 1.000000e+00
%124 = fptrunc double %123 to float
store float %124, float* %22
%125 = load float, float* %22
%126 = fpext float %125 to double
%127 = fsub double %126, 1.000000e+00
%128 = call double @llvm.fmuladd.f64(double -5.454550e-01, double %127, double 0x3FF4AB7BAECD0785)
%129 = load float, float* %22
%130 = fpext float %129 to double
%131 = fsub double %130, 1.000000e+00
%132 = call double @llvm.fmuladd.f64(double %128, double %131, double -7.464110e-01)
%133 = load float, float* %22
%134 = fpext float %133 to double
%135 = fsub double %134, 1.000000e+00
%136 = fmul double %132, %135
%137 = fptrunc double %136 to float
%138 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 4
store float %137, float* %138
%139 = load float, float* %22
%140 = fpext float %139 to double
%141 = fadd double %140, 1.000000e+00
%142 = fptrunc double %141 to float
store float %142, float* %22
%143 = load float, float* %22
%144 = fpext float %143 to double
%145 = fsub double %144, 2.000000e+00
%146 = call double @llvm.fmuladd.f64(double 9.090900e-02, double %145, double -2.153110e-01)
%147 = load float, float* %22
%148 = fpext float %147 to double
%149 = fsub double %148, 2.000000e+00
%150 = call double @llvm.fmuladd.f64(double %146, double %149, double 1.244020e-01)
%151 = load float, float* %22
%152 = fpext float %151 to double
%153 = fsub double %152, 2.000000e+00
%154 = fmul double %150, %153
%155 = fptrunc double %154 to float
%156 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 5
store float %155, float* %156
%157 = load float, float* %10
%158 = load i32, i32* %16
%159 = sitofp i32 %158 to float
%160 = fsub float %157, %159
store float %160, float* %22
%161 = load float, float* %22
%162 = fpext float %161 to double
%163 = fsub double %162, 2.000000e+00
%164 = call double @llvm.fmuladd.f64(double 9.090900e-02, double %163, double -2.153110e-01)
%165 = load float, float* %22
%166 = fpext float %165 to double
%167 = fsub double %166, 2.000000e+00
%168 = call double @llvm.fmuladd.f64(double %164, double %167, double 1.244020e-01)
%169 = load float, float* %22
%170 = fpext float %169 to double
%171 = fsub double %170, 2.000000e+00
%172 = fmul double %168, %171
%173 = fptrunc double %172 to float
%174 = getelementptr inbounds [6 x float], [6 x float]* %20, i64 0, i64 0
store float %173, float* %174
%175 = load float, float* %22
%176 = fpext float %175 to double
%177 = fsub double %176, 1.000000e+00
%178 = fptrunc double %177 to float
store float %178, float* %22
%179 = load float, float* %22
%180 = fpext float %179 to double
%181 = fsub double %180, 1.000000e+00
%182 = call double @llvm.fmuladd.f64(double -5.454550e-01, double %181, double 0x3FF4AB7BAECD0785)
%183 = load float, float* %22
%184 = fpext float %183 to double
%185 = fsub double %184, 1.000000e+00
%186 = call double @llvm.fmuladd.f64(double %182, double %185, double -7.464110e-01)
%187 = load float, float* %22
%188 = fpext float %187 to double
%189 = fsub double %188, 1.000000e+00
%190 = fmul double %186, %189
%191 = fptrunc double %190 to float
%192 = getelementptr inbounds [6 x float], [6 x float]* %20, i64 0, i64 1
store float %191, float* %192
%193 = load float, float* %22
%194 = fpext float %193 to double
%195 = fsub double %194, 1.000000e+00
%196 = fptrunc double %195 to float
store float %196, float* %22
%197 = load float, float* %22
%198 = fpext float %197 to double
%199 = call double @llvm.fmuladd.f64(double 0x3FF2E8B9FDBD2FA1, double %198, double 0xC00156F75D9A0F0A)
%200 = load float, float* %22
%201 = fpext float %200 to double
%202 = call double @llvm.fmuladd.f64(double %199, double %201, double 1.435400e-02)
%203 = load float, float* %22
%204 = fpext float %203 to double
%205 = call double @llvm.fmuladd.f64(double %202, double %204, double 1.000000e+00)
%206 = fptrunc double %205 to float
%207 = getelementptr inbounds [6 x float], [6 x float]* %20, i64 0, i64 2
store float %206, float* %207
%208 = load float, float* %22
%209 = fpext float %208 to double
%210 = fsub double 1.000000e+00, %209
%211 = fptrunc double %210 to float
store float %211, float* %22
%212 = load float, float* %22
%213 = fpext float %212 to double
%214 = call double @llvm.fmuladd.f64(double 0x3FF2E8B9FDBD2FA1, double %213, double 0xC00156F75D9A0F0A)
%215 = load float, float* %22
%216 = fpext float %215 to double
%217 = call double @llvm.fmuladd.f64(double %214, double %216, double 1.435400e-02)
%218 = load float, float* %22
%219 = fpext float %218 to double
%220 = call double @llvm.fmuladd.f64(double %217, double %219, double 1.000000e+00)
%221 = fptrunc double %220 to float
%222 = getelementptr inbounds [6 x float], [6 x float]* %20, i64 0, i64 3
store float %221, float* %222
%223 = load float, float* %22
%224 = fpext float %223 to double
%225 = fadd double %224, 1.000000e+00
%226 = fptrunc double %225 to float
store float %226, float* %22
%227 = load float, float* %22
%228 = fpext float %227 to double
%229 = fsub double %228, 1.000000e+00
%230 = call double @llvm.fmuladd.f64(double -5.454550e-01, double %229, double 0x3FF4AB7BAECD0785)
%231 = load float, float* %22
%232 = fpext float %231 to double
%233 = fsub double %232, 1.000000e+00
%234 = call double @llvm.fmuladd.f64(double %230, double %233, double -7.464110e-01)
%235 = load float, float* %22
%236 = fpext float %235 to double
%237 = fsub double %236, 1.000000e+00
%238 = fmul double %234, %237
%239 = fptrunc double %238 to float
%240 = getelementptr inbounds [6 x float], [6 x float]* %20, i64 0, i64 4
store float %239, float* %240
%241 = load float, float* %22
%242 = fpext float %241 to double
%243 = fadd double %242, 1.000000e+00
%244 = fptrunc double %243 to float
store float %244, float* %22
%245 = load float, float* %22
%246 = fpext float %245 to double
%247 = fsub double %246, 2.000000e+00
%248 = call double @llvm.fmuladd.f64(double 9.090900e-02, double %247, double -2.153110e-01)
%249 = load float, float* %22
%250 = fpext float %249 to double
%251 = fsub double %250, 2.000000e+00
%252 = call double @llvm.fmuladd.f64(double %248, double %251, double 1.244020e-01)
%253 = load float, float* %22
%254 = fpext float %253 to double
%255 = fsub double %254, 2.000000e+00
%256 = fmul double %252, %255
%257 = fptrunc double %256 to float
%258 = getelementptr inbounds [6 x float], [6 x float]* %20, i64 0, i64 5
store float %257, float* %258
store i32 0, i32* %14
br label %259
259: ; preds = %350, %54
%260 = load i32, i32* %14
%261 = icmp slt i32 %260, 4
br i1 %261, label %262, label %353
262: ; preds = %259
store i32 0, i32* %13
br label %263
263: ; preds = %308, %262
%264 = load i32, i32* %13
%265 = icmp slt i32 %264, 6
br i1 %265, label %266, label %311
266: ; preds = %263
%267 = load i32, i32* %13
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds [6 x float], [6 x float]* %19, i64 0, i64 %268
store float 0.000000e+00, float* %269
store i32 0, i32* %15
br label %270
270: ; preds = %304, %266
%271 = load i32, i32* %15
%272 = icmp slt i32 %271, 6
br i1 %272, label %273, label %307
273: ; preds = %270
%274 = load i32, i32* %13
%275 = sext i32 %274 to i64
%276 = getelementptr inbounds [6 x float], [6 x float]* %19, i64 0, i64 %275
%277 = load float, float* %276
%278 = load i32, i32* %15
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds [6 x float], [6 x float]* %21, i64 0, i64 %279
%281 = load float, float* %280
%282 = load i8*, i8** %7
%283 = load i32, i32* %15
%284 = load i32, i32* %17
%285 = add nsw i32 %283, %284
%286 = load i32, i32* %8
%287 = mul nsw i32 %285, %286
%288 = load i32, i32* %13
%289 = add nsw i32 %287, %288
%290 = load i32, i32* %16
%291 = add nsw i32 %289, %290
%292 = mul nsw i32 4, %291
%293 = load i32, i32* %14
%294 = add nsw i32 %292, %293
%295 = sext i32 %294 to i64
%296 = getelementptr inbounds i8, i8* %282, i64 %295
%297 = load i8, i8* %296
%298 = zext i8 %297 to i32
%299 = sitofp i32 %298 to float
%300 = call float @llvm.fmuladd.f32(float %281, float %299, float %277)
%301 = load i32, i32* %13
%302 = sext i32 %301 to i64
%303 = getelementptr inbounds [6 x float], [6 x float]* %19, i64 0, i64 %302
store float %300, float* %303
br label %304
304: ; preds = %273
%305 = load i32, i32* %15
%306 = add nsw i32 %305, 1
store i32 %306, i32* %15
br label %270
307: ; preds = %270
br label %308
308: ; preds = %307
%309 = load i32, i32* %13
%310 = add nsw i32 %309, 1
store i32 %310, i32* %13
br label %263
311: ; preds = %263
store float 0.000000e+00, float* %18
store i32 0, i32* %13
br label %312
312: ; preds = %326, %311
%313 = load i32, i32* %13
%314 = icmp slt i32 %313, 6
br i1 %314, label %315, label %329
315: ; preds = %312
%316 = load float, float* %18
%317 = load i32, i32* %13
%318 = sext i32 %317 to i64
%319 = getelementptr inbounds [6 x float], [6 x float]* %20, i64 0, i64 %318
%320 = load float, float* %319
%321 = load i32, i32* %13
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds [6 x float], [6 x float]* %19, i64 0, i64 %322
%324 = load float, float* %323
%325 = call float @llvm.fmuladd.f32(float %320, float %324, float %316)
store float %325, float* %18
br label %326
326: ; preds = %315
%327 = load i32, i32* %13
%328 = add nsw i32 %327, 1
store i32 %328, i32* %13
br label %312
329: ; preds = %312
%330 = load float, float* %18
%331 = fpext float %330 to double
%332 = fmul double 9.470000e-01, %331
%333 = fptrunc double %332 to float
store float %333, float* %18
%334 = load float, float* %18
%335 = fpext float %334 to double
%336 = fcmp olt double %335, 0.000000e+00
br i1 %336, label %337, label %338
337: ; preds = %329
store float 0.000000e+00, float* %18
br label %338
338: ; preds = %337, %329
%339 = load float, float* %18
%340 = fpext float %339 to double
%341 = fcmp ogt double %340, 2.560000e+02
br i1 %341, label %342, label %343
342: ; preds = %338
store float 2.550000e+02, float* %18
br label %343
343: ; preds = %342, %338
%344 = load float, float* %18
%345 = fptoui float %344 to i8
%346 = load i8*, i8** %12
%347 = load i32, i32* %14
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds i8, i8* %346, i64 %348
store i8 %345, i8* %349
br label %350
350: ; preds = %343
%351 = load i32, i32* %14
%352 = add nsw i32 %351, 1
store i32 %352, i32* %14
br label %259
353: ; preds = %259
ret i32 0
}

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