#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 interpBC2_b32(unsigned char *sl, int w, int h, float x, float y, float o,
                  unsigned char *v, int is_atop) {
  int b, i, k, l, m, n, u;
  float pp, p[4], wx[4], wy[4], xx;
  m = (int)ceilf(x) - 2;
  if (m < 0)
    m = 0;
  if ((m + 5) > w)
    m = w - 4;
  n = (int)ceilf(y) - 2;
  if (n < 0)
    n = 0;
  if ((n + 5) > h)
    n = h - 4;
  xx = y - n;
  wy[0] = (-0.75 * (xx - 5.0) * xx - 6.0) * xx + 3.0;
  xx = xx - 1.0;
  wy[1] = (1.25 * xx - 2.25) * xx * xx + 1.0;
  xx = 1.0 - xx;
  wy[2] = (1.25 * xx - 2.25) * xx * xx + 1.0;
  xx = xx + 1.0;
  wy[3] = (-0.75 * (xx - 5.0) * xx - 6.0) * xx + 3.0;
  xx = x - m;
  wx[0] = (-0.75 * (xx - 5.0) * xx - 6.0) * xx + 3.0;
  xx = xx - 1.0;
  wx[1] = (1.25 * xx - 2.25) * xx * xx + 1.0;
  xx = 1.0 - xx;
  wx[2] = (1.25 * xx - 2.25) * xx * xx + 1.0;
  xx = xx + 1.0;
  wx[3] = (-0.75 * (xx - 5.0) * xx - 6.0) * xx + 3.0;
  k = 4 * (n * w + m);
  u = 4 * w;
  for (b = 0; b < 4; b++) {
    for (i = 0; i < 4; i++) {
      p[i] = 0.0;
      l = k + 4 * i;
      p[i] = wy[0] * sl[l];
      l += u;
      p[i] += wy[1] * sl[l];
      l += u;
      p[i] += wy[2] * sl[l];
      l += u;
      p[i] += wy[3] * sl[l];
    }
    k++;
    pp = wx[0] * p[0];
    pp += wx[1] * p[1];
    pp += wx[2] * p[2];
    pp += wx[3] * p[3];
    if (pp < 0.0)
      pp = 0.0;
    if (pp > 256.0)
      pp = 255.0;
    v[b] = pp;
  }
  return 0;
}


x86 assembly (clang, -O0):
<interpBC2_b32>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%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    $0x2,%eax
mov    %eax,-0x40(%rbp)
cmpl   $0x0,-0x40(%rbp)
jge    115d <interpBC2_b32+0x4d>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
add    $0x5,%eax
cmp    -0xc(%rbp),%eax
jle    1175 <interpBC2_b32+0x65>
mov    -0xc(%rbp),%eax
sub    $0x4,%eax
mov    %eax,-0x40(%rbp)
movss  -0x18(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x2,%eax
mov    %eax,-0x44(%rbp)
cmpl   $0x0,-0x44(%rbp)
jge    1196 <interpBC2_b32+0x86>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
cmp    -0x10(%rbp),%eax
jle    11ae <interpBC2_b32+0x9e>
mov    -0x10(%rbp),%eax
sub    $0x4,%eax
mov    %eax,-0x44(%rbp)
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x44(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xe40(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xe2c(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe08(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xde4(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xde3(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xdc7(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdc3(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd87(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xd66(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xd4a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd46(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd0a(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xce9(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xcbd(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xca9(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc85(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc61(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x14(%rbp),%xmm0
cvtsi2ssl -0x40(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xc42(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xc2e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc0a(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbe6(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xbe5(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xbc9(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbc5(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb89(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xb68(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xb4c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb48(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb0c(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xaeb(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xabf(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xaab(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa87(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa63(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x44(%rbp),%eax
imul   -0xc(%rbp),%eax
add    -0x40(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0x38(%rbp)
mov    -0xc(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0x48(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x4,-0x30(%rbp)
jge    17a5 <interpBC2_b32+0x695>
movl   $0x0,-0x34(%rbp)
cmpl   $0x4,-0x34(%rbp)
jge    16d3 <interpBC2_b32+0x5c3>
movslq -0x34(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x38(%rbp),%eax
mov    -0x34(%rbp),%ecx
shl    $0x2,%ecx
add    %ecx,%eax
mov    %eax,-0x3c(%rbp)
movss  -0x80(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm1
mulss  %xmm1,%xmm0
movslq -0x34(%rbp),%rax
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x48(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
movss  -0x7c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
movslq -0x34(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x48(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
movss  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
movslq -0x34(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x48(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
movss  -0x74(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
movslq -0x34(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    15db <interpBC2_b32+0x4cb>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
movss  -0x70(%rbp),%xmm0
mulss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x6c(%rbp),%xmm0
movss  -0x5c(%rbp),%xmm2
movss  -0x4c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x68(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x4c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x64(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x4c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    175d <interpBC2_b32+0x64d>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8ca(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1785 <interpBC2_b32+0x675>
movss  0x8c0(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
cvttss2si -0x4c(%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    15ca <interpBC2_b32+0x4ba>
xor    %eax,%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<interpBC2_b32>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rcx,%rbx
movss  %xmm1,(%rsp)
movss  %xmm0,0x4(%rsp)
mov    %edx,%r12d
mov    %esi,%r15d
mov    %rdi,%r14
call   1030 <ceilf@plt>
cmp    $0x3,%eax
mov    $0x2,%ebp
cmovl  %ebp,%eax
lea    -0x2(%rax),%ecx
add    $0x3,%eax
lea    -0x4(%r15),%r13d
cmp    %r15d,%eax
cmovle %ecx,%r13d
movss  (%rsp),%xmm0
call   1030 <ceilf@plt>
cmp    $0x3,%eax
cmovge %eax,%ebp
lea    -0x2(%rbp),%ecx
add    $0x3,%ebp
lea    -0x4(%r12),%eax
cmp    %r12d,%ebp
cmovle %ecx,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  (%rsp),%xmm4
subss  %xmm0,%xmm4
xorps  %xmm0,%xmm0
cvtss2sd %xmm4,%xmm0
movsd  0xe6d(%rip),%xmm7
movaps %xmm0,%xmm1
addsd  %xmm7,%xmm1
movsd  0xe65(%rip),%xmm9
mulsd  %xmm9,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xe5b(%rip),%xmm10
addsd  %xmm10,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xe51(%rip),%xmm11
addsd  %xmm11,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
addss  0xe5d(%rip),%xmm4
xorps  %xmm1,%xmm1
cvtss2sd %xmm4,%xmm1
movsd  0xe36(%rip),%xmm6
movaps %xmm1,%xmm2
mulsd  %xmm6,%xmm2
movsd  0xe2e(%rip),%xmm15
addsd  %xmm15,%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
movsd  0xe20(%rip),%xmm12
addsd  %xmm12,%xmm2
xorps  %xmm1,%xmm1
cvtsd2ss %xmm2,%xmm1
movss  0xe17(%rip),%xmm13
movaps %xmm13,%xmm3
subss  %xmm4,%xmm3
xorps  %xmm2,%xmm2
cvtss2sd %xmm3,%xmm2
movaps %xmm2,%xmm4
mulsd  %xmm6,%xmm4
addsd  %xmm15,%xmm4
mulsd  %xmm2,%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm12,%xmm4
xorps  %xmm2,%xmm2
cvtsd2ss %xmm4,%xmm2
addss  %xmm13,%xmm3
cvtss2sd %xmm3,%xmm3
movaps %xmm3,%xmm4
addsd  %xmm7,%xmm4
mulsd  %xmm9,%xmm4
mulsd  %xmm3,%xmm4
addsd  %xmm10,%xmm4
mulsd  %xmm3,%xmm4
addsd  %xmm11,%xmm4
xorps  %xmm3,%xmm3
cvtsd2ss %xmm4,%xmm3
xorps  %xmm4,%xmm4
cvtsi2ss %r13d,%xmm4
movss  0x4(%rsp),%xmm8
subss  %xmm4,%xmm8
cvtss2sd %xmm8,%xmm14
movaps %xmm14,%xmm4
addsd  %xmm7,%xmm4
mulsd  %xmm9,%xmm4
mulsd  %xmm14,%xmm4
addsd  %xmm10,%xmm4
mulsd  %xmm14,%xmm4
addsd  %xmm11,%xmm4
xorps  %xmm14,%xmm14
cvtsd2ss %xmm4,%xmm14
addss  0xd6a(%rip),%xmm8
xorps  %xmm4,%xmm4
cvtss2sd %xmm8,%xmm4
movaps %xmm4,%xmm5
mulsd  %xmm6,%xmm5
addsd  %xmm15,%xmm5
movapd %xmm15,%xmm11
mulsd  %xmm4,%xmm5
mulsd  %xmm4,%xmm5
addsd  %xmm12,%xmm5
xorps  %xmm15,%xmm15
cvtsd2ss %xmm5,%xmm15
movaps %xmm13,%xmm4
subss  %xmm8,%xmm4
xorps  %xmm5,%xmm5
cvtss2sd %xmm4,%xmm5
mulsd  %xmm5,%xmm6
addsd  %xmm11,%xmm6
mulsd  %xmm5,%xmm6
mulsd  %xmm5,%xmm6
addsd  %xmm12,%xmm6
xorps  %xmm11,%xmm11
cvtsd2ss %xmm6,%xmm11
addss  %xmm13,%xmm4
cvtss2sd %xmm4,%xmm4
addsd  %xmm4,%xmm7
mulsd  %xmm9,%xmm7
mulsd  %xmm4,%xmm7
addsd  %xmm10,%xmm7
mulsd  %xmm4,%xmm7
addsd  0xcc5(%rip),%xmm7
cvtsd2ss %xmm7,%xmm10
imul   %r15d,%eax
add    %r13d,%eax
shl    $0x2,%eax
shl    $0x2,%r15d
movslq %r15d,%rdx
movslq %eax,%rsi
lea    (%rdx,%rdx,2),%rax
add    %rsi,%rax
add    %r14,%rax
add    $0xc,%rax
lea    (%rsi,%rdx,2),%rcx
add    %r14,%rcx
add    $0xc,%rcx
add    %rsi,%rdx
add    %r14,%rdx
add    $0xc,%rdx
add    %r14,%rsi
add    $0xc,%rsi
xor    %edi,%edi
movss  0xc9f(%rip),%xmm8
movss  0xc9a(%rip),%xmm9
nopw   0x0(%rax,%rax,1)
movzbl -0xc(%rsi,%rdi,1),%ebp
xorps  %xmm4,%xmm4
cvtsi2ss %ebp,%xmm4
movzbl -0xc(%rdx,%rdi,1),%ebp
xorps  %xmm5,%xmm5
cvtsi2ss %ebp,%xmm5
mulss  %xmm0,%xmm4
mulss  %xmm1,%xmm5
addss  %xmm4,%xmm5
movzbl -0xc(%rcx,%rdi,1),%ebp
xorps  %xmm6,%xmm6
cvtsi2ss %ebp,%xmm6
movzbl -0xc(%rax,%rdi,1),%ebp
xorps  %xmm4,%xmm4
cvtsi2ss %ebp,%xmm4
mulss  %xmm2,%xmm6
addss  %xmm5,%xmm6
mulss  %xmm3,%xmm4
addss  %xmm6,%xmm4
movzbl -0x8(%rsi,%rdi,1),%ebp
xorps  %xmm5,%xmm5
cvtsi2ss %ebp,%xmm5
movzbl -0x8(%rdx,%rdi,1),%ebp
xorps  %xmm6,%xmm6
cvtsi2ss %ebp,%xmm6
mulss  %xmm14,%xmm4
mulss  %xmm0,%xmm5
mulss  %xmm1,%xmm6
addss  %xmm5,%xmm6
movzbl -0x8(%rcx,%rdi,1),%ebp
xorps  %xmm7,%xmm7
cvtsi2ss %ebp,%xmm7
movzbl -0x8(%rax,%rdi,1),%ebp
xorps  %xmm5,%xmm5
cvtsi2ss %ebp,%xmm5
mulss  %xmm2,%xmm7
addss  %xmm6,%xmm7
mulss  %xmm3,%xmm5
addss  %xmm7,%xmm5
movzbl -0x4(%rsi,%rdi,1),%ebp
xorps  %xmm6,%xmm6
cvtsi2ss %ebp,%xmm6
mulss  %xmm15,%xmm5
addss  %xmm4,%xmm5
mulss  %xmm0,%xmm6
movzbl -0x4(%rdx,%rdi,1),%ebp
xorps  %xmm4,%xmm4
cvtsi2ss %ebp,%xmm4
mulss  %xmm1,%xmm4
movzbl -0x4(%rcx,%rdi,1),%ebp
xorps  %xmm7,%xmm7
cvtsi2ss %ebp,%xmm7
addss  %xmm6,%xmm4
mulss  %xmm2,%xmm7
addss  %xmm4,%xmm7
movzbl -0x4(%rax,%rdi,1),%ebp
xorps  %xmm4,%xmm4
cvtsi2ss %ebp,%xmm4
mulss  %xmm3,%xmm4
addss  %xmm7,%xmm4
mulss  %xmm11,%xmm4
addss  %xmm5,%xmm4
movzbl (%rsi,%rdi,1),%ebp
xorps  %xmm5,%xmm5
cvtsi2ss %ebp,%xmm5
mulss  %xmm0,%xmm5
movzbl (%rdx,%rdi,1),%ebp
xorps  %xmm6,%xmm6
cvtsi2ss %ebp,%xmm6
movzbl (%rcx,%rdi,1),%ebp
xorps  %xmm7,%xmm7
cvtsi2ss %ebp,%xmm7
mulss  %xmm1,%xmm6
addss  %xmm5,%xmm6
mulss  %xmm2,%xmm7
addss  %xmm6,%xmm7
movzbl (%rax,%rdi,1),%ebp
xorps  %xmm5,%xmm5
cvtsi2ss %ebp,%xmm5
mulss  %xmm3,%xmm5
addss  %xmm7,%xmm5
mulss  %xmm10,%xmm5
addss  %xmm4,%xmm5
xorps  %xmm4,%xmm4
maxss  %xmm5,%xmm4
movaps %xmm8,%xmm5
cmpltss %xmm4,%xmm5
movaps %xmm5,%xmm6
andnps %xmm4,%xmm6
andps  %xmm9,%xmm5
orps   %xmm6,%xmm5
cvttss2si %xmm5,%ebp
mov    %bpl,(%rbx,%rdi,1)
add    $0x1,%rdi
cmp    $0x4,%rdi
jne    13b0 <interpBC2_b32+0x2a0>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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