#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 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)
movss  -0x14(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x2,%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x0,-0x3c(%rbp)
jge    1159 <interpBC2_b32+0x49>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x5,%eax
cmp    -0xc(%rbp),%eax
jle    1171 <interpBC2_b32+0x61>
mov    -0xc(%rbp),%eax
sub    $0x4,%eax
mov    %eax,-0x3c(%rbp)
movss  -0x18(%rbp),%xmm0
call   1030 <ceilf@plt>
sub    $0x2,%eax
mov    %eax,-0x40(%rbp)
cmpl   $0x0,-0x40(%rbp)
jge    1192 <interpBC2_b32+0x82>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
add    $0x5,%eax
cmp    -0x10(%rbp),%eax
jle    11aa <interpBC2_b32+0x9a>
mov    -0x10(%rbp),%eax
sub    $0x4,%eax
mov    %eax,-0x40(%rbp)
movss  -0x18(%rbp),%xmm0
cvtsi2ssl -0x40(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xe44(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xe30(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe0c(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xde8(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xde7(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xdcb(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdc7(%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  0xd8b(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xd6a(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xd4e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd4a(%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  0xd0e(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xced(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xcc1(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xcad(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc89(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc65(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x14(%rbp),%xmm0
cvtsi2ssl -0x3c(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xc46(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xc32(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc0e(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbea(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xbe9(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xbcd(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbc9(%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  0xb8d(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xb6c(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xb50(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb4c(%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  0xb10(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xaef(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xac3(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xaaf(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa8b(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x84(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa67(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x40(%rbp),%eax
imul   -0xc(%rbp),%eax
add    -0x3c(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0x34(%rbp)
mov    -0xc(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0x44(%rbp)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x4,-0x2c(%rbp)
jge    17a1 <interpBC2_b32+0x691>
movl   $0x0,-0x30(%rbp)
cmpl   $0x4,-0x30(%rbp)
jge    16cf <interpBC2_b32+0x5bf>
movslq -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x34(%rbp),%eax
mov    -0x30(%rbp),%ecx
shl    $0x2,%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
movss  -0x80(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm1
mulss  %xmm1,%xmm0
movslq -0x30(%rbp),%rax
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x44(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
movss  -0x7c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
movslq -0x30(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x44(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
movss  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
movslq -0x30(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x44(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
movss  -0x74(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm2
movslq -0x30(%rbp),%rax
movss  -0x60(%rbp,%rax,4),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    15d7 <interpBC2_b32+0x4c7>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
movss  -0x70(%rbp),%xmm0
mulss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x6c(%rbp),%xmm0
movss  -0x5c(%rbp),%xmm2
movss  -0x48(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x68(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x48(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x64(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x48(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1759 <interpBC2_b32+0x649>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8ce(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1781 <interpBC2_b32+0x671>
movss  0x8c4(%rip),%xmm0
movss  %xmm0,-0x48(%rbp)
cvttss2si -0x48(%rbp),%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    15c6 <interpBC2_b32+0x4b6>
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) {
%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 i32
%21 = alloca i32
%22 = alloca float
%23 = alloca [4 x float]
%24 = alloca [4 x float]
%25 = alloca [4 x float]
%26 = 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
%27 = load float, float* %11
%28 = call i64 @ceilf(float %27)
%29 = trunc i64 %28 to i32
%30 = sub nsw i32 %29, 2
store i32 %30, i32* %19
%31 = load i32, i32* %19
%32 = icmp slt i32 %31, 0
br i1 %32, label %33, label %34
33: ; preds = %7
store i32 0, i32* %19
br label %34
34: ; preds = %33, %7
%35 = load i32, i32* %19
%36 = add nsw i32 %35, 5
%37 = load i32, i32* %9
%38 = icmp sgt i32 %36, %37
br i1 %38, label %39, label %42
39: ; preds = %34
%40 = load i32, i32* %9
%41 = sub nsw i32 %40, 4
store i32 %41, i32* %19
br label %42
42: ; preds = %39, %34
%43 = load float, float* %12
%44 = call i64 @ceilf(float %43)
%45 = trunc i64 %44 to i32
%46 = sub nsw i32 %45, 2
store i32 %46, i32* %20
%47 = load i32, i32* %20
%48 = icmp slt i32 %47, 0
br i1 %48, label %49, label %50
49: ; preds = %42
store i32 0, i32* %20
br label %50
50: ; preds = %49, %42
%51 = load i32, i32* %20
%52 = add nsw i32 %51, 5
%53 = load i32, i32* %10
%54 = icmp sgt i32 %52, %53
br i1 %54, label %55, label %58
55: ; preds = %50
%56 = load i32, i32* %10
%57 = sub nsw i32 %56, 4
store i32 %57, i32* %20
br label %58
58: ; preds = %55, %50
%59 = load float, float* %12
%60 = load i32, i32* %20
%61 = sitofp i32 %60 to float
%62 = fsub float %59, %61
store float %62, float* %26
%63 = load float, float* %26
%64 = fpext float %63 to double
%65 = fsub double %64, 5.000000e+00
%66 = fmul double -7.500000e-01, %65
%67 = load float, float* %26
%68 = fpext float %67 to double
%69 = call double @llvm.fmuladd.f64(double %66, double %68, double -6.000000e+00)
%70 = load float, float* %26
%71 = fpext float %70 to double
%72 = call double @llvm.fmuladd.f64(double %69, double %71, double 3.000000e+00)
%73 = fptrunc double %72 to float
%74 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 0
store float %73, float* %74
%75 = load float, float* %26
%76 = fpext float %75 to double
%77 = fsub double %76, 1.000000e+00
%78 = fptrunc double %77 to float
store float %78, float* %26
%79 = load float, float* %26
%80 = fpext float %79 to double
%81 = call double @llvm.fmuladd.f64(double 1.250000e+00, double %80, double -2.250000e+00)
%82 = load float, float* %26
%83 = fpext float %82 to double
%84 = fmul double %81, %83
%85 = load float, float* %26
%86 = fpext float %85 to double
%87 = call double @llvm.fmuladd.f64(double %84, double %86, double 1.000000e+00)
%88 = fptrunc double %87 to float
%89 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 1
store float %88, float* %89
%90 = load float, float* %26
%91 = fpext float %90 to double
%92 = fsub double 1.000000e+00, %91
%93 = fptrunc double %92 to float
store float %93, float* %26
%94 = load float, float* %26
%95 = fpext float %94 to double
%96 = call double @llvm.fmuladd.f64(double 1.250000e+00, double %95, double -2.250000e+00)
%97 = load float, float* %26
%98 = fpext float %97 to double
%99 = fmul double %96, %98
%100 = load float, float* %26
%101 = fpext float %100 to double
%102 = call double @llvm.fmuladd.f64(double %99, double %101, double 1.000000e+00)
%103 = fptrunc double %102 to float
%104 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 2
store float %103, float* %104
%105 = load float, float* %26
%106 = fpext float %105 to double
%107 = fadd double %106, 1.000000e+00
%108 = fptrunc double %107 to float
store float %108, float* %26
%109 = load float, float* %26
%110 = fpext float %109 to double
%111 = fsub double %110, 5.000000e+00
%112 = fmul double -7.500000e-01, %111
%113 = load float, float* %26
%114 = fpext float %113 to double
%115 = call double @llvm.fmuladd.f64(double %112, double %114, double -6.000000e+00)
%116 = load float, float* %26
%117 = fpext float %116 to double
%118 = call double @llvm.fmuladd.f64(double %115, double %117, double 3.000000e+00)
%119 = fptrunc double %118 to float
%120 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 3
store float %119, float* %120
%121 = load float, float* %11
%122 = load i32, i32* %19
%123 = sitofp i32 %122 to float
%124 = fsub float %121, %123
store float %124, float* %26
%125 = load float, float* %26
%126 = fpext float %125 to double
%127 = fsub double %126, 5.000000e+00
%128 = fmul double -7.500000e-01, %127
%129 = load float, float* %26
%130 = fpext float %129 to double
%131 = call double @llvm.fmuladd.f64(double %128, double %130, double -6.000000e+00)
%132 = load float, float* %26
%133 = fpext float %132 to double
%134 = call double @llvm.fmuladd.f64(double %131, double %133, double 3.000000e+00)
%135 = fptrunc double %134 to float
%136 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 0
store float %135, float* %136
%137 = load float, float* %26
%138 = fpext float %137 to double
%139 = fsub double %138, 1.000000e+00
%140 = fptrunc double %139 to float
store float %140, float* %26
%141 = load float, float* %26
%142 = fpext float %141 to double
%143 = call double @llvm.fmuladd.f64(double 1.250000e+00, double %142, double -2.250000e+00)
%144 = load float, float* %26
%145 = fpext float %144 to double
%146 = fmul double %143, %145
%147 = load float, float* %26
%148 = fpext float %147 to double
%149 = call double @llvm.fmuladd.f64(double %146, double %148, double 1.000000e+00)
%150 = fptrunc double %149 to float
%151 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 1
store float %150, float* %151
%152 = load float, float* %26
%153 = fpext float %152 to double
%154 = fsub double 1.000000e+00, %153
%155 = fptrunc double %154 to float
store float %155, float* %26
%156 = load float, float* %26
%157 = fpext float %156 to double
%158 = call double @llvm.fmuladd.f64(double 1.250000e+00, double %157, double -2.250000e+00)
%159 = load float, float* %26
%160 = fpext float %159 to double
%161 = fmul double %158, %160
%162 = load float, float* %26
%163 = fpext float %162 to double
%164 = call double @llvm.fmuladd.f64(double %161, double %163, double 1.000000e+00)
%165 = fptrunc double %164 to float
%166 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 2
store float %165, float* %166
%167 = load float, float* %26
%168 = fpext float %167 to double
%169 = fadd double %168, 1.000000e+00
%170 = fptrunc double %169 to float
store float %170, float* %26
%171 = load float, float* %26
%172 = fpext float %171 to double
%173 = fsub double %172, 5.000000e+00
%174 = fmul double -7.500000e-01, %173
%175 = load float, float* %26
%176 = fpext float %175 to double
%177 = call double @llvm.fmuladd.f64(double %174, double %176, double -6.000000e+00)
%178 = load float, float* %26
%179 = fpext float %178 to double
%180 = call double @llvm.fmuladd.f64(double %177, double %179, double 3.000000e+00)
%181 = fptrunc double %180 to float
%182 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 3
store float %181, float* %182
%183 = load i32, i32* %20
%184 = load i32, i32* %9
%185 = mul nsw i32 %183, %184
%186 = load i32, i32* %19
%187 = add nsw i32 %185, %186
%188 = mul nsw i32 4, %187
store i32 %188, i32* %17
%189 = load i32, i32* %9
%190 = mul nsw i32 4, %189
store i32 %190, i32* %21
store i32 0, i32* %15
br label %191
191: ; preds = %315, %58
%192 = load i32, i32* %15
%193 = icmp slt i32 %192, 4
br i1 %193, label %194, label %318
194: ; preds = %191
store i32 0, i32* %16
br label %195
195: ; preds = %270, %194
%196 = load i32, i32* %16
%197 = icmp slt i32 %196, 4
br i1 %197, label %198, label %273
198: ; preds = %195
%199 = load i32, i32* %16
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %200
store float 0.000000e+00, float* %201
%202 = load i32, i32* %17
%203 = load i32, i32* %16
%204 = mul nsw i32 4, %203
%205 = add nsw i32 %202, %204
store i32 %205, i32* %18
%206 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 0
%207 = load float, float* %206
%208 = load i8*, i8** %8
%209 = load i32, i32* %18
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds i8, i8* %208, i64 %210
%212 = load i8, i8* %211
%213 = zext i8 %212 to i32
%214 = sitofp i32 %213 to float
%215 = fmul float %207, %214
%216 = load i32, i32* %16
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %217
store float %215, float* %218
%219 = load i32, i32* %21
%220 = load i32, i32* %18
%221 = add nsw i32 %220, %219
store i32 %221, i32* %18
%222 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 1
%223 = load float, float* %222
%224 = load i8*, i8** %8
%225 = load i32, i32* %18
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds i8, i8* %224, i64 %226
%228 = load i8, i8* %227
%229 = zext i8 %228 to i32
%230 = sitofp i32 %229 to float
%231 = load i32, i32* %16
%232 = sext i32 %231 to i64
%233 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %232
%234 = load float, float* %233
%235 = call float @llvm.fmuladd.f32(float %223, float %230, float %234)
store float %235, float* %233
%236 = load i32, i32* %21
%237 = load i32, i32* %18
%238 = add nsw i32 %237, %236
store i32 %238, i32* %18
%239 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 2
%240 = load float, float* %239
%241 = load i8*, i8** %8
%242 = load i32, i32* %18
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds i8, i8* %241, i64 %243
%245 = load i8, i8* %244
%246 = zext i8 %245 to i32
%247 = sitofp i32 %246 to float
%248 = load i32, i32* %16
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %249
%251 = load float, float* %250
%252 = call float @llvm.fmuladd.f32(float %240, float %247, float %251)
store float %252, float* %250
%253 = load i32, i32* %21
%254 = load i32, i32* %18
%255 = add nsw i32 %254, %253
store i32 %255, i32* %18
%256 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 3
%257 = load float, float* %256
%258 = load i8*, i8** %8
%259 = load i32, i32* %18
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds i8, i8* %258, i64 %260
%262 = load i8, i8* %261
%263 = zext i8 %262 to i32
%264 = sitofp i32 %263 to float
%265 = load i32, i32* %16
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %266
%268 = load float, float* %267
%269 = call float @llvm.fmuladd.f32(float %257, float %264, float %268)
store float %269, float* %267
br label %270
270: ; preds = %198
%271 = load i32, i32* %16
%272 = add nsw i32 %271, 1
store i32 %272, i32* %16
br label %195
273: ; preds = %195
%274 = load i32, i32* %17
%275 = add nsw i32 %274, 1
store i32 %275, i32* %17
%276 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 0
%277 = load float, float* %276
%278 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 0
%279 = load float, float* %278
%280 = fmul float %277, %279
store float %280, float* %22
%281 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 1
%282 = load float, float* %281
%283 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 1
%284 = load float, float* %283
%285 = load float, float* %22
%286 = call float @llvm.fmuladd.f32(float %282, float %284, float %285)
store float %286, float* %22
%287 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 2
%288 = load float, float* %287
%289 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 2
%290 = load float, float* %289
%291 = load float, float* %22
%292 = call float @llvm.fmuladd.f32(float %288, float %290, float %291)
store float %292, float* %22
%293 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 3
%294 = load float, float* %293
%295 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 3
%296 = load float, float* %295
%297 = load float, float* %22
%298 = call float @llvm.fmuladd.f32(float %294, float %296, float %297)
store float %298, float* %22
%299 = load float, float* %22
%300 = fpext float %299 to double
%301 = fcmp olt double %300, 0.000000e+00
br i1 %301, label %302, label %303
302: ; preds = %273
store float 0.000000e+00, float* %22
br label %303
303: ; preds = %302, %273
%304 = load float, float* %22
%305 = fpext float %304 to double
%306 = fcmp ogt double %305, 2.560000e+02
br i1 %306, label %307, label %308
307: ; preds = %303
store float 2.550000e+02, float* %22
br label %308
308: ; preds = %307, %303
%309 = load float, float* %22
%310 = fptoui float %309 to i8
%311 = load i8*, i8** %14
%312 = load i32, i32* %15
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds i8, i8* %311, i64 %313
store i8 %310, i8* %314
br label %315
315: ; preds = %308
%316 = load i32, i32* %15
%317 = add nsw i32 %316, 1
store i32 %317, i32* %15
br label %191
318: ; preds = %191
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) {
%8 = tail call i64 @ceilf(float %3)
%9 = trunc i64 %8 to i32
%10 = icmp sgt i32 %9, 2
%11 = select i1 %10, i32 %9, i32 2
%12 = add nsw i32 %11, -2
%13 = add nuw nsw i32 %11, 3
%14 = icmp sgt i32 %13, %1
%15 = add nsw i32 %1, -4
%16 = select i1 %14, i32 %15, i32 %12
%17 = tail call i64 @ceilf(float %4)
%18 = trunc i64 %17 to i32
%19 = icmp sgt i32 %18, 2
%20 = select i1 %19, i32 %18, i32 2
%21 = add nsw i32 %20, -2
%22 = add nuw nsw i32 %20, 3
%23 = icmp sgt i32 %22, %2
%24 = add nsw i32 %2, -4
%25 = select i1 %23, i32 %24, i32 %21
%26 = sitofp i32 %25 to float
%27 = fsub float %4, %26
%28 = fpext float %27 to double
%29 = fadd double %28, -5.000000e+00
%30 = fmul double %29, -7.500000e-01
%31 = tail call double @llvm.fmuladd.f64(double %30, double %28, double -6.000000e+00)
%32 = tail call double @llvm.fmuladd.f64(double %31, double %28, double 3.000000e+00)
%33 = fptrunc double %32 to float
%34 = fadd float %27, -1.000000e+00
%35 = fpext float %34 to double
%36 = tail call double @llvm.fmuladd.f64(double %35, double 1.250000e+00, double -2.250000e+00)
%37 = fmul double %36, %35
%38 = tail call double @llvm.fmuladd.f64(double %37, double %35, double 1.000000e+00)
%39 = fptrunc double %38 to float
%40 = fsub float 1.000000e+00, %34
%41 = fpext float %40 to double
%42 = tail call double @llvm.fmuladd.f64(double %41, double 1.250000e+00, double -2.250000e+00)
%43 = fmul double %42, %41
%44 = tail call double @llvm.fmuladd.f64(double %43, double %41, double 1.000000e+00)
%45 = fptrunc double %44 to float
%46 = fadd float %40, 1.000000e+00
%47 = fpext float %46 to double
%48 = fadd double %47, -5.000000e+00
%49 = fmul double %48, -7.500000e-01
%50 = tail call double @llvm.fmuladd.f64(double %49, double %47, double -6.000000e+00)
%51 = tail call double @llvm.fmuladd.f64(double %50, double %47, double 3.000000e+00)
%52 = fptrunc double %51 to float
%53 = sitofp i32 %16 to float
%54 = fsub float %3, %53
%55 = fpext float %54 to double
%56 = fadd double %55, -5.000000e+00
%57 = fmul double %56, -7.500000e-01
%58 = tail call double @llvm.fmuladd.f64(double %57, double %55, double -6.000000e+00)
%59 = tail call double @llvm.fmuladd.f64(double %58, double %55, double 3.000000e+00)
%60 = fptrunc double %59 to float
%61 = fadd float %54, -1.000000e+00
%62 = fpext float %61 to double
%63 = tail call double @llvm.fmuladd.f64(double %62, double 1.250000e+00, double -2.250000e+00)
%64 = fmul double %63, %62
%65 = tail call double @llvm.fmuladd.f64(double %64, double %62, double 1.000000e+00)
%66 = fptrunc double %65 to float
%67 = fsub float 1.000000e+00, %61
%68 = fpext float %67 to double
%69 = tail call double @llvm.fmuladd.f64(double %68, double 1.250000e+00, double -2.250000e+00)
%70 = fmul double %69, %68
%71 = tail call double @llvm.fmuladd.f64(double %70, double %68, double 1.000000e+00)
%72 = fptrunc double %71 to float
%73 = fadd float %67, 1.000000e+00
%74 = fpext float %73 to double
%75 = fadd double %74, -5.000000e+00
%76 = fmul double %75, -7.500000e-01
%77 = tail call double @llvm.fmuladd.f64(double %76, double %74, double -6.000000e+00)
%78 = tail call double @llvm.fmuladd.f64(double %77, double %74, double 3.000000e+00)
%79 = fptrunc double %78 to float
%80 = mul nsw i32 %25, %1
%81 = add nsw i32 %80, %16
%82 = shl i32 %81, 2
%83 = shl nsw i32 %1, 2
%84 = sext i32 %83 to i64
%85 = sext i32 %82 to i64
br label %86
86: ; preds = %7, %86
%87 = phi i64 [ %85, %7 ], [ %168, %86 ]
%88 = phi i64 [ 0, %7 ], [ %179, %86 ]
%89 = getelementptr inbounds i8, i8* %0, i64 %87
%90 = load i8, i8* %89
%91 = uitofp i8 %90 to float
%92 = fmul float %33, %91
%93 = add nsw i64 %87, %84
%94 = getelementptr inbounds i8, i8* %0, i64 %93
%95 = load i8, i8* %94
%96 = uitofp i8 %95 to float
%97 = tail call float @llvm.fmuladd.f32(float %39, float %96, float %92)
%98 = add nsw i64 %93, %84
%99 = getelementptr inbounds i8, i8* %0, i64 %98
%100 = load i8, i8* %99
%101 = uitofp i8 %100 to float
%102 = tail call float @llvm.fmuladd.f32(float %45, float %101, float %97)
%103 = add nsw i64 %98, %84
%104 = getelementptr inbounds i8, i8* %0, i64 %103
%105 = load i8, i8* %104
%106 = uitofp i8 %105 to float
%107 = tail call float @llvm.fmuladd.f32(float %52, float %106, float %102)
%108 = add nsw i64 %87, 4
%109 = getelementptr inbounds i8, i8* %0, i64 %108
%110 = load i8, i8* %109
%111 = uitofp i8 %110 to float
%112 = fmul float %33, %111
%113 = add nsw i64 %108, %84
%114 = getelementptr inbounds i8, i8* %0, i64 %113
%115 = load i8, i8* %114
%116 = uitofp i8 %115 to float
%117 = tail call float @llvm.fmuladd.f32(float %39, float %116, float %112)
%118 = add nsw i64 %113, %84
%119 = getelementptr inbounds i8, i8* %0, i64 %118
%120 = load i8, i8* %119
%121 = uitofp i8 %120 to float
%122 = tail call float @llvm.fmuladd.f32(float %45, float %121, float %117)
%123 = add nsw i64 %118, %84
%124 = getelementptr inbounds i8, i8* %0, i64 %123
%125 = load i8, i8* %124
%126 = uitofp i8 %125 to float
%127 = tail call float @llvm.fmuladd.f32(float %52, float %126, float %122)
%128 = add nsw i64 %87, 8
%129 = getelementptr inbounds i8, i8* %0, i64 %128
%130 = load i8, i8* %129
%131 = uitofp i8 %130 to float
%132 = fmul float %33, %131
%133 = add nsw i64 %128, %84
%134 = getelementptr inbounds i8, i8* %0, i64 %133
%135 = load i8, i8* %134
%136 = uitofp i8 %135 to float
%137 = tail call float @llvm.fmuladd.f32(float %39, float %136, float %132)
%138 = add nsw i64 %133, %84
%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 %45, float %141, float %137)
%143 = add nsw i64 %138, %84
%144 = getelementptr inbounds i8, i8* %0, i64 %143
%145 = load i8, i8* %144
%146 = uitofp i8 %145 to float
%147 = tail call float @llvm.fmuladd.f32(float %52, float %146, float %142)
%148 = add nsw i64 %87, 12
%149 = getelementptr inbounds i8, i8* %0, i64 %148
%150 = load i8, i8* %149
%151 = uitofp i8 %150 to float
%152 = fmul float %33, %151
%153 = add nsw i64 %148, %84
%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 %39, float %156, float %152)
%158 = add nsw i64 %153, %84
%159 = getelementptr inbounds i8, i8* %0, i64 %158
%160 = load i8, i8* %159
%161 = uitofp i8 %160 to float
%162 = tail call float @llvm.fmuladd.f32(float %45, float %161, float %157)
%163 = add nsw i64 %158, %84
%164 = getelementptr inbounds i8, i8* %0, i64 %163
%165 = load i8, i8* %164
%166 = uitofp i8 %165 to float
%167 = tail call float @llvm.fmuladd.f32(float %52, float %166, float %162)
%168 = add nsw i64 %87, 1
%169 = fmul float %107, %60
%170 = tail call float @llvm.fmuladd.f32(float %66, float %127, float %169)
%171 = tail call float @llvm.fmuladd.f32(float %72, float %147, float %170)
%172 = tail call float @llvm.fmuladd.f32(float %79, float %167, float %171)
%173 = fcmp olt float %172, 0.000000e+00
%174 = select i1 %173, float 0.000000e+00, float %172
%175 = fcmp ogt float %174, 2.560000e+02
%176 = select i1 %175, float 2.550000e+02, float %174
%177 = fptoui float %176 to i8
%178 = getelementptr inbounds i8, i8* %6, i64 %88
store i8 %177, i8* %178
%179 = add nuw nsw i64 %88, 1
%180 = icmp eq i64 %179, 4
br i1 %180, label %181, label %86
181: ; preds = %86
ret i32 0
}