#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_b(unsigned char *sl, int w, int h, float x, float y, float o,
                unsigned char *v, int is_atop) {
  int i, k, l, m, n;
  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 = n * w + m;
  for (i = 0; i < 4; i++) {
    p[i] = 0.0;
    l = k + i;
    p[i] = wy[0] * sl[l];
    l += w;
    p[i] += wy[1] * sl[l];
    l += w;
    p[i] += wy[2] * sl[l];
    l += w;
    p[i] += wy[3] * sl[l];
  }
  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 = pp;
  return 0;
}


x86 assembly (clang, -O0):
<interpBC2_b>:
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,-0x3c(%rbp)
cmpl   $0x0,-0x3c(%rbp)
jge    115d <interpBC2_b+0x4d>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x5,%eax
cmp    -0xc(%rbp),%eax
jle    1175 <interpBC2_b+0x65>
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    1196 <interpBC2_b+0x86>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
add    $0x5,%eax
cmp    -0x10(%rbp),%eax
jle    11ae <interpBC2_b+0x9e>
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  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 -0x3c(%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    -0x40(%rbp),%eax
imul   -0xc(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x34(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x4,-0x30(%rbp)
jge    16b1 <interpBC2_b+0x5a1>
movslq -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp,%rax,4)
mov    -0x34(%rbp),%eax
add    -0x30(%rbp),%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    -0xc(%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    -0xc(%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    -0xc(%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    15be <interpBC2_b+0x4ae>
movss  -0x70(%rbp),%xmm0
mulss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x6c(%rbp),%xmm0
movss  -0x5c(%rbp),%xmm2
movss  -0x44(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x68(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x44(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x64(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x44(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1732 <interpBC2_b+0x622>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8f5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    175a <interpBC2_b+0x64a>
movss  0x8eb(%rip),%xmm0
movss  %xmm0,-0x44(%rbp)
cvttss2si -0x44(%rbp),%eax
mov    %al,%cl
mov    -0x28(%rbp),%rax
mov    %cl,(%rax)
xor    %eax,%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<interpBC2_b>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rcx,%r14
movss  %xmm1,(%rsp)
movss  %xmm0,0x4(%rsp)
mov    %edx,%r12d
mov    %esi,%r15d
mov    %rdi,%rbx
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),%xmm3
subss  %xmm0,%xmm3
xorps  %xmm1,%xmm1
cvtss2sd %xmm3,%xmm1
movsd  0xe6c(%rip),%xmm8
movaps %xmm1,%xmm2
addsd  %xmm8,%xmm2
movsd  0xe64(%rip),%xmm0
mulsd  %xmm0,%xmm2
movapd %xmm0,%xmm14
mulsd  %xmm1,%xmm2
movsd  0xe57(%rip),%xmm0
addsd  %xmm0,%xmm2
movapd %xmm0,%xmm6
mulsd  %xmm1,%xmm2
movsd  0xe4b(%rip),%xmm0
addsd  %xmm0,%xmm2
cvtsd2ss %xmm2,%xmm10
movss  0xe59(%rip),%xmm13
addss  %xmm13,%xmm3
xorps  %xmm1,%xmm1
cvtss2sd %xmm3,%xmm1
movsd  0xe2d(%rip),%xmm4
movaps %xmm1,%xmm2
mulsd  %xmm4,%xmm2
movsd  0xe25(%rip),%xmm11
addsd  %xmm11,%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
movsd  0xe17(%rip),%xmm12
addsd  %xmm12,%xmm2
cvtsd2ss %xmm2,%xmm15
movss  0xe10(%rip),%xmm9
movaps %xmm9,%xmm2
subss  %xmm3,%xmm2
xorps  %xmm3,%xmm3
cvtss2sd %xmm2,%xmm3
movaps %xmm3,%xmm5
mulsd  %xmm4,%xmm5
addsd  %xmm11,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
addsd  %xmm12,%xmm5
cvtsd2ss %xmm5,%xmm7
addss  %xmm9,%xmm2
cvtss2sd %xmm2,%xmm2
movaps %xmm2,%xmm3
addsd  %xmm8,%xmm3
mulsd  %xmm14,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm0,%xmm3
xorps  %xmm5,%xmm5
cvtsd2ss %xmm3,%xmm5
xorps  %xmm2,%xmm2
cvtsi2ss %r13d,%xmm2
imul   %r15d,%eax
add    %r13d,%eax
movslq %eax,%rcx
movslq %r15d,%rax
movzbl (%rbx,%rcx,1),%edx
xorps  %xmm3,%xmm3
cvtsi2ss %edx,%xmm3
lea    (%rcx,%rax,1),%rdx
movzbl (%rbx,%rdx,1),%esi
xorps  %xmm6,%xmm6
cvtsi2ss %esi,%xmm6
movss  0x4(%rsp),%xmm14
subss  %xmm2,%xmm14
mulss  %xmm10,%xmm3
mulss  %xmm15,%xmm6
add    %rax,%rdx
movzbl (%rbx,%rdx,1),%esi
xorps  %xmm2,%xmm2
cvtsi2ss %esi,%xmm2
addss  %xmm3,%xmm6
mulss  %xmm7,%xmm2
addss  %xmm6,%xmm2
add    %rax,%rdx
movzbl (%rbx,%rdx,1),%edx
xorps  %xmm3,%xmm3
cvtsi2ss %edx,%xmm3
movzbl 0x1(%rbx,%rcx,1),%edx
xorps  %xmm6,%xmm6
cvtsi2ss %edx,%xmm6
mulss  %xmm5,%xmm3
addss  %xmm2,%xmm3
mulss  %xmm10,%xmm6
lea    0x1(%rcx,%rax,1),%rdx
movzbl (%rbx,%rdx,1),%esi
cvtsi2ss %esi,%xmm0
mulss  %xmm15,%xmm0
addss  %xmm6,%xmm0
add    %rax,%rdx
movzbl (%rbx,%rdx,1),%esi
add    %rax,%rdx
xorps  %xmm6,%xmm6
cvtsi2ss %esi,%xmm6
movzbl (%rbx,%rdx,1),%edx
xorps  %xmm2,%xmm2
cvtsi2ss %edx,%xmm2
mulss  %xmm7,%xmm6
addss  %xmm0,%xmm6
mulss  %xmm5,%xmm2
movzbl 0x2(%rbx,%rcx,1),%edx
lea    0x2(%rcx,%rax,1),%rsi
cvtsi2ss %edx,%xmm1
movzbl (%rbx,%rsi,1),%edx
xorps  %xmm0,%xmm0
cvtsi2ss %edx,%xmm0
addss  %xmm6,%xmm2
mulss  %xmm10,%xmm1
mulss  %xmm15,%xmm0
add    %rax,%rsi
movzbl (%rbx,%rsi,1),%edx
xorps  %xmm6,%xmm6
cvtsi2ss %edx,%xmm6
addss  %xmm1,%xmm0
mulss  %xmm7,%xmm6
addss  %xmm0,%xmm6
add    %rax,%rsi
movzbl (%rbx,%rsi,1),%edx
xorps  %xmm0,%xmm0
cvtsi2ss %edx,%xmm0
movzbl 0x3(%rbx,%rcx,1),%edx
xorps  %xmm1,%xmm1
cvtsi2ss %edx,%xmm1
mulss  %xmm5,%xmm0
addss  %xmm6,%xmm0
mulss  %xmm10,%xmm1
lea    0x3(%rcx,%rax,1),%rcx
movzbl (%rbx,%rcx,1),%edx
xorps  %xmm6,%xmm6
cvtsi2ss %edx,%xmm6
mulss  %xmm15,%xmm6
addss  %xmm1,%xmm6
add    %rax,%rcx
movzbl (%rbx,%rcx,1),%edx
xorps  %xmm1,%xmm1
cvtsi2ss %edx,%xmm1
mulss  %xmm7,%xmm1
addss  %xmm14,%xmm13
addss  %xmm6,%xmm1
add    %rax,%rcx
movzbl (%rbx,%rcx,1),%eax
cvtsi2ss %eax,%xmm7
mulss  %xmm5,%xmm7
movaps %xmm9,%xmm5
subss  %xmm13,%xmm5
addss  %xmm5,%xmm9
addss  %xmm1,%xmm7
xorps  %xmm1,%xmm1
cvtss2sd %xmm9,%xmm1
movaps %xmm1,%xmm6
addsd  %xmm8,%xmm6
movsd  0xbe9(%rip),%xmm9
mulsd  %xmm9,%xmm6
mulsd  %xmm1,%xmm6
movsd  0xbdf(%rip),%xmm15
addsd  %xmm15,%xmm6
mulsd  %xmm1,%xmm6
movsd  0xbd5(%rip),%xmm10
addsd  %xmm10,%xmm6
xorps  %xmm1,%xmm1
cvtsd2ss %xmm6,%xmm1
cvtss2sd %xmm5,%xmm5
movaps %xmm5,%xmm6
mulsd  %xmm4,%xmm6
addsd  %xmm11,%xmm6
mulsd  %xmm5,%xmm6
mulsd  %xmm5,%xmm6
addsd  %xmm12,%xmm6
xorps  %xmm5,%xmm5
cvtsd2ss %xmm6,%xmm5
mulss  %xmm7,%xmm1
mulss  %xmm0,%xmm5
xorps  %xmm0,%xmm0
cvtss2sd %xmm13,%xmm0
mulsd  %xmm0,%xmm4
addsd  %xmm11,%xmm4
mulsd  %xmm0,%xmm4
mulsd  %xmm0,%xmm4
addsd  %xmm12,%xmm4
xorps  %xmm0,%xmm0
cvtsd2ss %xmm4,%xmm0
mulss  %xmm2,%xmm0
cvtss2sd %xmm14,%xmm2
addsd  %xmm2,%xmm8
mulsd  %xmm9,%xmm8
mulsd  %xmm2,%xmm8
addsd  %xmm15,%xmm8
mulsd  %xmm2,%xmm8
addsd  %xmm10,%xmm8
xorps  %xmm2,%xmm2
cvtsd2ss %xmm8,%xmm2
mulss  %xmm3,%xmm2
addss  %xmm0,%xmm2
addss  %xmm5,%xmm2
addss  %xmm1,%xmm2
xorps  %xmm0,%xmm0
maxss  %xmm2,%xmm0
movss  0xb52(%rip),%xmm1
cmpltss %xmm0,%xmm1
movss  0xb49(%rip),%xmm2
andps  %xmm1,%xmm2
andnps %xmm0,%xmm1
orps   %xmm1,%xmm2
cvttss2si %xmm2,%eax
mov    %al,(%r14)
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_b(i8* %0, i32 %1, i32 %2, float %3, float %4, float %5, i8* %6, i32 %7) {
%9 = alloca i8*
%10 = alloca i32
%11 = alloca i32
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca i8*
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca float
%23 = alloca [4 x float]
%24 = alloca [4 x float]
%25 = alloca [4 x float]
%26 = alloca float
store i8* %0, i8** %9
store i32 %1, i32* %10
store i32 %2, i32* %11
store float %3, float* %12
store float %4, float* %13
store float %5, float* %14
store i8* %6, i8** %15
store i32 %7, i32* %16
%27 = load float, float* %12
%28 = call i64 @ceilf(float %27)
%29 = trunc i64 %28 to i32
%30 = sub nsw i32 %29, 2
store i32 %30, i32* %20
%31 = load i32, i32* %20
%32 = icmp slt i32 %31, 0
br i1 %32, label %33, label %34
33: ; preds = %8
store i32 0, i32* %20
br label %34
34: ; preds = %33, %8
%35 = load i32, i32* %20
%36 = add nsw i32 %35, 5
%37 = load i32, i32* %10
%38 = icmp sgt i32 %36, %37
br i1 %38, label %39, label %42
39: ; preds = %34
%40 = load i32, i32* %10
%41 = sub nsw i32 %40, 4
store i32 %41, i32* %20
br label %42
42: ; preds = %39, %34
%43 = load float, float* %13
%44 = call i64 @ceilf(float %43)
%45 = trunc i64 %44 to i32
%46 = sub nsw i32 %45, 2
store i32 %46, i32* %21
%47 = load i32, i32* %21
%48 = icmp slt i32 %47, 0
br i1 %48, label %49, label %50
49: ; preds = %42
store i32 0, i32* %21
br label %50
50: ; preds = %49, %42
%51 = load i32, i32* %21
%52 = add nsw i32 %51, 5
%53 = load i32, i32* %11
%54 = icmp sgt i32 %52, %53
br i1 %54, label %55, label %58
55: ; preds = %50
%56 = load i32, i32* %11
%57 = sub nsw i32 %56, 4
store i32 %57, i32* %21
br label %58
58: ; preds = %55, %50
%59 = load float, float* %13
%60 = load i32, i32* %21
%61 = sitofp i32 %60 to float
%62 = fsub float %59, %61
store float %62, float* %26
%63 = load float, float* %26
%64 = fpext float %63 to double
%65 = fsub double %64, 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* %12
%122 = load i32, i32* %20
%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* %21
%184 = load i32, i32* %10
%185 = mul nsw i32 %183, %184
%186 = load i32, i32* %20
%187 = add nsw i32 %185, %186
store i32 %187, i32* %18
store i32 0, i32* %17
br label %188
188: ; preds = %262, %58
%189 = load i32, i32* %17
%190 = icmp slt i32 %189, 4
br i1 %190, label %191, label %265
191: ; preds = %188
%192 = load i32, i32* %17
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %193
store float 0.000000e+00, float* %194
%195 = load i32, i32* %18
%196 = load i32, i32* %17
%197 = add nsw i32 %195, %196
store i32 %197, i32* %19
%198 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 0
%199 = load float, float* %198
%200 = load i8*, i8** %9
%201 = load i32, i32* %19
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds i8, i8* %200, i64 %202
%204 = load i8, i8* %203
%205 = zext i8 %204 to i32
%206 = sitofp i32 %205 to float
%207 = fmul float %199, %206
%208 = load i32, i32* %17
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %209
store float %207, float* %210
%211 = load i32, i32* %10
%212 = load i32, i32* %19
%213 = add nsw i32 %212, %211
store i32 %213, i32* %19
%214 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 1
%215 = load float, float* %214
%216 = load i8*, i8** %9
%217 = load i32, i32* %19
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds i8, i8* %216, i64 %218
%220 = load i8, i8* %219
%221 = zext i8 %220 to i32
%222 = sitofp i32 %221 to float
%223 = load i32, i32* %17
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %224
%226 = load float, float* %225
%227 = call float @llvm.fmuladd.f32(float %215, float %222, float %226)
store float %227, float* %225
%228 = load i32, i32* %10
%229 = load i32, i32* %19
%230 = add nsw i32 %229, %228
store i32 %230, i32* %19
%231 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 2
%232 = load float, float* %231
%233 = load i8*, i8** %9
%234 = load i32, i32* %19
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds i8, i8* %233, i64 %235
%237 = load i8, i8* %236
%238 = zext i8 %237 to i32
%239 = sitofp i32 %238 to float
%240 = load i32, i32* %17
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %241
%243 = load float, float* %242
%244 = call float @llvm.fmuladd.f32(float %232, float %239, float %243)
store float %244, float* %242
%245 = load i32, i32* %10
%246 = load i32, i32* %19
%247 = add nsw i32 %246, %245
store i32 %247, i32* %19
%248 = getelementptr inbounds [4 x float], [4 x float]* %25, i64 0, i64 3
%249 = load float, float* %248
%250 = load i8*, i8** %9
%251 = load i32, i32* %19
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds i8, i8* %250, i64 %252
%254 = load i8, i8* %253
%255 = zext i8 %254 to i32
%256 = sitofp i32 %255 to float
%257 = load i32, i32* %17
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 %258
%260 = load float, float* %259
%261 = call float @llvm.fmuladd.f32(float %249, float %256, float %260)
store float %261, float* %259
br label %262
262: ; preds = %191
%263 = load i32, i32* %17
%264 = add nsw i32 %263, 1
store i32 %264, i32* %17
br label %188
265: ; preds = %188
%266 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 0
%267 = load float, float* %266
%268 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 0
%269 = load float, float* %268
%270 = fmul float %267, %269
store float %270, float* %22
%271 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 1
%272 = load float, float* %271
%273 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 1
%274 = load float, float* %273
%275 = load float, float* %22
%276 = call float @llvm.fmuladd.f32(float %272, float %274, float %275)
store float %276, float* %22
%277 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 2
%278 = load float, float* %277
%279 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 2
%280 = load float, float* %279
%281 = load float, float* %22
%282 = call float @llvm.fmuladd.f32(float %278, float %280, float %281)
store float %282, float* %22
%283 = getelementptr inbounds [4 x float], [4 x float]* %24, i64 0, i64 3
%284 = load float, float* %283
%285 = getelementptr inbounds [4 x float], [4 x float]* %23, i64 0, i64 3
%286 = load float, float* %285
%287 = load float, float* %22
%288 = call float @llvm.fmuladd.f32(float %284, float %286, float %287)
store float %288, float* %22
%289 = load float, float* %22
%290 = fpext float %289 to double
%291 = fcmp olt double %290, 0.000000e+00
br i1 %291, label %292, label %293
292: ; preds = %265
store float 0.000000e+00, float* %22
br label %293
293: ; preds = %292, %265
%294 = load float, float* %22
%295 = fpext float %294 to double
%296 = fcmp ogt double %295, 2.560000e+02
br i1 %296, label %297, label %298
297: ; preds = %293
store float 2.550000e+02, float* %22
br label %298
298: ; preds = %297, %293
%299 = load float, float* %22
%300 = fptoui float %299 to i8
%301 = load i8*, i8** %15
store i8 %300, i8* %301
ret i32 0
}

LLVM IR (-O2):
define i32 @interpBC2_b(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 = fadd float %55, -1.000000e+00
%57 = fsub float 1.000000e+00, %56
%58 = fadd float %57, 1.000000e+00
%59 = mul nsw i32 %26, %1
%60 = add nsw i32 %59, %17
%61 = sext i32 %60 to i64
%62 = sext i32 %1 to i64
%63 = getelementptr inbounds i8, i8* %0, i64 %61
%64 = load i8, i8* %63
%65 = uitofp i8 %64 to float
%66 = fmul float %34, %65
%67 = add nsw i64 %61, %62
%68 = getelementptr inbounds i8, i8* %0, i64 %67
%69 = load i8, i8* %68
%70 = uitofp i8 %69 to float
%71 = tail call float @llvm.fmuladd.f32(float %40, float %70, float %66)
%72 = add nsw i64 %67, %62
%73 = getelementptr inbounds i8, i8* %0, i64 %72
%74 = load i8, i8* %73
%75 = uitofp i8 %74 to float
%76 = tail call float @llvm.fmuladd.f32(float %46, float %75, float %71)
%77 = add nsw i64 %72, %62
%78 = getelementptr inbounds i8, i8* %0, i64 %77
%79 = load i8, i8* %78
%80 = uitofp i8 %79 to float
%81 = tail call float @llvm.fmuladd.f32(float %53, float %80, float %76)
%82 = add nsw i64 %61, 1
%83 = getelementptr inbounds i8, i8* %0, i64 %82
%84 = load i8, i8* %83
%85 = uitofp i8 %84 to float
%86 = fmul float %34, %85
%87 = add nsw i64 %82, %62
%88 = getelementptr inbounds i8, i8* %0, i64 %87
%89 = load i8, i8* %88
%90 = uitofp i8 %89 to float
%91 = tail call float @llvm.fmuladd.f32(float %40, float %90, float %86)
%92 = add nsw i64 %87, %62
%93 = getelementptr inbounds i8, i8* %0, i64 %92
%94 = load i8, i8* %93
%95 = uitofp i8 %94 to float
%96 = tail call float @llvm.fmuladd.f32(float %46, float %95, float %91)
%97 = add nsw i64 %92, %62
%98 = getelementptr inbounds i8, i8* %0, i64 %97
%99 = load i8, i8* %98
%100 = uitofp i8 %99 to float
%101 = tail call float @llvm.fmuladd.f32(float %53, float %100, float %96)
%102 = add nsw i64 %61, 2
%103 = getelementptr inbounds i8, i8* %0, i64 %102
%104 = load i8, i8* %103
%105 = uitofp i8 %104 to float
%106 = fmul float %34, %105
%107 = add nsw i64 %102, %62
%108 = getelementptr inbounds i8, i8* %0, i64 %107
%109 = load i8, i8* %108
%110 = uitofp i8 %109 to float
%111 = tail call float @llvm.fmuladd.f32(float %40, float %110, float %106)
%112 = add nsw i64 %107, %62
%113 = getelementptr inbounds i8, i8* %0, i64 %112
%114 = load i8, i8* %113
%115 = uitofp i8 %114 to float
%116 = tail call float @llvm.fmuladd.f32(float %46, float %115, float %111)
%117 = add nsw i64 %112, %62
%118 = getelementptr inbounds i8, i8* %0, i64 %117
%119 = load i8, i8* %118
%120 = uitofp i8 %119 to float
%121 = tail call float @llvm.fmuladd.f32(float %53, float %120, float %116)
%122 = add nsw i64 %61, 3
%123 = getelementptr inbounds i8, i8* %0, i64 %122
%124 = load i8, i8* %123
%125 = uitofp i8 %124 to float
%126 = fmul float %34, %125
%127 = add nsw i64 %122, %62
%128 = getelementptr inbounds i8, i8* %0, i64 %127
%129 = load i8, i8* %128
%130 = uitofp i8 %129 to float
%131 = tail call float @llvm.fmuladd.f32(float %40, float %130, float %126)
%132 = add nsw i64 %127, %62
%133 = getelementptr inbounds i8, i8* %0, i64 %132
%134 = load i8, i8* %133
%135 = uitofp i8 %134 to float
%136 = tail call float @llvm.fmuladd.f32(float %46, float %135, float %131)
%137 = add nsw i64 %132, %62
%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 %53, float %140, float %136)
%142 = fpext float %55 to double
%143 = fpext float %56 to double
%144 = fpext float %57 to double
%145 = fpext float %58 to double
%146 = fadd double %145, -5.000000e+00
%147 = fmul double %146, -7.500000e-01
%148 = tail call double @llvm.fmuladd.f64(double %147, double %145, double -6.000000e+00)
%149 = tail call double @llvm.fmuladd.f64(double %148, double %145, double 3.000000e+00)
%150 = fptrunc double %149 to float
%151 = tail call double @llvm.fmuladd.f64(double %144, double 1.250000e+00, double -2.250000e+00)
%152 = fmul double %151, %144
%153 = tail call double @llvm.fmuladd.f64(double %152, double %144, double 1.000000e+00)
%154 = fptrunc double %153 to float
%155 = tail call double @llvm.fmuladd.f64(double %143, double 1.250000e+00, double -2.250000e+00)
%156 = fmul double %155, %143
%157 = tail call double @llvm.fmuladd.f64(double %156, double %143, double 1.000000e+00)
%158 = fptrunc double %157 to float
%159 = fadd double %142, -5.000000e+00
%160 = fmul double %159, -7.500000e-01
%161 = tail call double @llvm.fmuladd.f64(double %160, double %142, double -6.000000e+00)
%162 = tail call double @llvm.fmuladd.f64(double %161, double %142, double 3.000000e+00)
%163 = fptrunc double %162 to float
%164 = fmul float %81, %163
%165 = tail call float @llvm.fmuladd.f32(float %158, float %101, float %164)
%166 = tail call float @llvm.fmuladd.f32(float %154, float %121, float %165)
%167 = tail call float @llvm.fmuladd.f32(float %150, float %141, float %166)
%168 = fcmp olt float %167, 0.000000e+00
%169 = select i1 %168, float 0.000000e+00, float %167
%170 = fcmp ogt float %169, 2.560000e+02
%171 = select i1 %170, float 2.550000e+02, float %169
%172 = fptoui float %171 to i8
store i8 %172, i8* %6
ret i32 0
}