float w3ft01(float sti, float stj, float *fld, int ii, int jj, int ncyclk,
             int lin) {
  int fld_dim1, fld_offset;
  static float eras[4], xi2tm, xj2tm;
  static int i, j, k;
  static float xdeli, xdelj;
  static int j1;
  static float fi, fj;
  static int jy[4], icyclk, jcyclk, im1, ip1, ip2;
  float hi;
  fld_dim1 = ii;
  fld_offset = fld_dim1 + 1;
  fld -= fld_offset;
  i = sti;
  j = stj;
  fi = (float)i;
  fj = (float)j;
  xdeli = sti - fi;
  xdelj = stj - fj;
  ip2 = i + 2;
  im1 = i - 1;
  ip1 = i + 1;
  jy[3] = j + 2;
  jy[2] = j + 1;
  jy[1] = j;
  jy[0] = j - 1;
  xi2tm = (float)0.;
  xj2tm = (float)0.;
  if (lin == 1) {
    goto L12;
  }
  xi2tm = xdeli * (xdeli - (float)1.) * (float).25;
  xj2tm = xdelj * (xdelj - (float)1.) * (float).25;
L12:
  if (i < 2 || j < 2) {
    goto L10;
  }
  if (i > ii - 3 || j > jj - 3) {
    goto L10;
  }
  goto L41;
L10:
  icyclk = 0;
  jcyclk = 0;
  if (ncyclk != 0) {
    goto L11;
  } else {
    goto L6;
  }
L11:
  if (ncyclk / 2 != 0) {
    jcyclk = 1;
  }
  if (ncyclk != 2) {
    icyclk = 1;
  }
  if (icyclk != 0) {
    goto L8;
  } else {
    goto L5;
  }
L8:
  if (i < 1) {
    goto L16;
  }
  if (i == ii - 1) {
    goto L17;
  }
  ip2 = i + 2;
  im1 = i - 1;
  goto L18;
L16:
  ip2 = 3;
  im1 = ii - 1;
  goto L18;
L17:
  ip2 = 2;
  im1 = ii - 2;
L18:
  ip1 = i + 1;
L5:
  if (jcyclk != 0) {
    goto L9;
  } else {
    goto L6;
  }
L9:
  if (j == 1) {
    goto L26;
  }
  if (j == jj - 1) {
    goto L27;
  }
  jy[3] = j + 2;
  jy[0] = j - 1;
  goto L28;
L26:
  jy[3] = 3;
  jy[0] = j - 1;
  goto L28;
L27:
  jy[3] = 2;
  jy[0] = jj - 2;
L28:
  jy[2] = j + 1;
  jy[1] = j;
L6:
  if (lin == 1) {
    goto L22;
  }
  if (icyclk != 0) {
    goto L21;
  } else {
    goto L20;
  }
L20:
  if (i < 2 || i >= ii - 1) {
    xi2tm = (float)0.;
  }
L21:
  if (jcyclk != 0) {
    goto L22;
  } else {
    goto L23;
  }
L23:
  if (j < 2 || j >= jj - 1) {
    xj2tm = (float)0.;
  }
L22:
  if (i < 1) {
    i = 1;
  }
  if (ip1 < 1) {
    ip1 = 1;
  }
  if (ip2 < 1) {
    ip1 = 1;
  }
  if (im1 < 1) {
    im1 = 1;
  }
  if (i > ii) {
    i = ii;
  }
  if (ip1 > ii) {
    ip1 = ii;
  }
  if (ip2 > ii) {
    ip2 = ii;
  }
  if (im1 > ii) {
    im1 = ii;
  }
L41:
  for (k = 1; k <= 4; ++k) {
    j1 = jy[k - 1];
    if (j1 < 1) {
      j1 = 1;
    }
    if (j1 > jj) {
      j1 = jj;
    }
    eras[k - 1] = (fld[ip1 + j1 * fld_dim1] - fld[i + j1 * fld_dim1]) * xdeli +
                  fld[i + j1 * fld_dim1] +
                  (fld[im1 + j1 * fld_dim1] - fld[i + j1 * fld_dim1] -
                   fld[ip1 + j1 * fld_dim1] + fld[ip2 + j1 * fld_dim1]) *
                      xi2tm;
  }
  hi = eras[1] + (eras[2] - eras[1]) * xdelj +
       (eras[0] - eras[1] - eras[2] + eras[3]) * xj2tm;
  return hi;
}


x86 assembly (clang, -O0):
<w3ft01>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
cvttss2si -0x4(%rbp),%eax
mov    %eax,0x2ef5(%rip)
cvttss2si -0x8(%rbp),%eax
mov    %eax,0x2eee(%rip)
cvtsi2ssl 0x2ee2(%rip),%xmm0
movss  %xmm0,0x2ef2(%rip)
cvtsi2ssl 0x2ed6(%rip),%xmm0
movss  %xmm0,0x2ee6(%rip)
movss  -0x4(%rbp),%xmm0
subss  0x2ed5(%rip),%xmm0
movss  %xmm0,0x2ec1(%rip)
movss  -0x8(%rbp),%xmm0
subss  0x2ec4(%rip),%xmm0
movss  %xmm0,0x2eb0(%rip)
mov    0x2e9a(%rip),%eax
add    $0x2,%eax
mov    %eax,0x2ed9(%rip)
mov    0x2e8b(%rip),%eax
sub    $0x1,%eax
mov    %eax,0x2ec2(%rip)
mov    0x2e7c(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2eb7(%rip)
mov    0x2e71(%rip),%eax
add    $0x2,%eax
mov    %eax,0x2e98(%rip)
mov    0x2e62(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2e85(%rip)
mov    0x2e53(%rip),%eax
mov    %eax,0x2e75(%rip)
mov    0x2e47(%rip),%eax
sub    $0x1,%eax
mov    %eax,0x2e62(%rip)
xorps  %xmm0,%xmm0
movss  %xmm0,0x2e27(%rip)
xorps  %xmm0,%xmm0
movss  %xmm0,0x2e20(%rip)
cmpl   $0x1,-0x20(%rbp)
jne    1233 <w3ft01+0x133>
jmp    129b <w3ft01+0x19b>
movss  0x2e19(%rip),%xmm0
movss  0x2e11(%rip),%xmm1
movss  0xdb9(%rip),%xmm2
subss  %xmm2,%xmm1
mulss  %xmm1,%xmm0
movss  0xda5(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,0x2dd9(%rip)
movss  0x2de9(%rip),%xmm0
movss  0x2de1(%rip),%xmm1
movss  0xd85(%rip),%xmm2
subss  %xmm2,%xmm1
mulss  %xmm1,%xmm0
movss  0xd71(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,0x2da9(%rip)
cmpl   $0x2,0x2da6(%rip)
jl     12b5 <w3ft01+0x1b5>
cmpl   $0x2,0x2d9d(%rip)
jge    12ba <w3ft01+0x1ba>
jmp    12ec <w3ft01+0x1ec>
mov    0x2d88(%rip),%eax
mov    -0x14(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jg     12e2 <w3ft01+0x1e2>
mov    0x2d78(%rip),%eax
mov    -0x18(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jle    12e7 <w3ft01+0x1e7>
jmp    12ec <w3ft01+0x1ec>
jmp    15ff <w3ft01+0x4ff>
movl   $0x0,0x2d8a(%rip)
movl   $0x0,0x2d84(%rip)
cmpl   $0x0,-0x1c(%rbp)
je     130f <w3ft01+0x20f>
jmp    1314 <w3ft01+0x214>
jmp    149f <w3ft01+0x39f>
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%eax
je     1332 <w3ft01+0x232>
movl   $0x1,0x2d52(%rip)
cmpl   $0x2,-0x1c(%rbp)
je     1346 <w3ft01+0x246>
movl   $0x1,0x2d3a(%rip)
cmpl   $0x0,0x2d33(%rip)
je     1358 <w3ft01+0x258>
jmp    135d <w3ft01+0x25d>
jmp    13eb <w3ft01+0x2eb>
cmpl   $0x1,0x2ce4(%rip)
jge    136f <w3ft01+0x26f>
jmp    13ab <w3ft01+0x2ab>
mov    0x2cd3(%rip),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1388 <w3ft01+0x288>
jmp    13c6 <w3ft01+0x2c6>
mov    0x2cba(%rip),%eax
add    $0x2,%eax
mov    %eax,0x2cf9(%rip)
mov    0x2cab(%rip),%eax
sub    $0x1,%eax
mov    %eax,0x2ce2(%rip)
jmp    13dc <w3ft01+0x2dc>
movl   $0x3,0x2cdb(%rip)
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,0x2cc7(%rip)
jmp    13dc <w3ft01+0x2dc>
movl   $0x2,0x2cc0(%rip)
mov    -0x14(%rbp),%eax
sub    $0x2,%eax
mov    %eax,0x2cac(%rip)
mov    0x2c66(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2ca1(%rip)
cmpl   $0x0,0x2c92(%rip)
je     13fd <w3ft01+0x2fd>
jmp    1402 <w3ft01+0x302>
jmp    149f <w3ft01+0x39f>
cmpl   $0x1,0x2c43(%rip)
jne    1414 <w3ft01+0x314>
jmp    1450 <w3ft01+0x350>
mov    0x2c32(%rip),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    142d <w3ft01+0x32d>
jmp    146e <w3ft01+0x36e>
mov    0x2c19(%rip),%eax
add    $0x2,%eax
mov    %eax,0x2c40(%rip)
mov    0x2c0a(%rip),%eax
sub    $0x1,%eax
mov    %eax,0x2c25(%rip)
jmp    1484 <w3ft01+0x384>
movl   $0x3,0x2c22(%rip)
mov    0x2bec(%rip),%eax
sub    $0x1,%eax
mov    %eax,0x2c07(%rip)
jmp    1484 <w3ft01+0x384>
movl   $0x2,0x2c04(%rip)
mov    -0x18(%rbp),%eax
sub    $0x2,%eax
mov    %eax,0x2bec(%rip)
mov    0x2bc2(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2be5(%rip)
mov    0x2bb3(%rip),%eax
mov    %eax,0x2bd5(%rip)
cmpl   $0x1,-0x20(%rbp)
jne    14ae <w3ft01+0x3ae>
jmp    153e <w3ft01+0x43e>
cmpl   $0x0,0x2bcb(%rip)
je     14c0 <w3ft01+0x3c0>
jmp    14f6 <w3ft01+0x3f6>
jmp    14c5 <w3ft01+0x3c5>
cmpl   $0x2,0x2b7c(%rip)
jl     14e6 <w3ft01+0x3e6>
mov    0x2b70(%rip),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jl     14f1 <w3ft01+0x3f1>
xorps  %xmm0,%xmm0
movss  %xmm0,0x2b4f(%rip)
jmp    14f6 <w3ft01+0x3f6>
cmpl   $0x0,0x2b87(%rip)
je     1508 <w3ft01+0x408>
jmp    153e <w3ft01+0x43e>
jmp    150d <w3ft01+0x40d>
cmpl   $0x2,0x2b38(%rip)
jl     152e <w3ft01+0x42e>
mov    0x2b2c(%rip),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jl     1539 <w3ft01+0x439>
xorps  %xmm0,%xmm0
movss  %xmm0,0x2b0b(%rip)
jmp    153e <w3ft01+0x43e>
cmpl   $0x1,0x2b03(%rip)
jge    1555 <w3ft01+0x455>
movl   $0x1,0x2af3(%rip)
cmpl   $0x1,0x2b30(%rip)
jge    156c <w3ft01+0x46c>
movl   $0x1,0x2b20(%rip)
cmpl   $0x1,0x2b1d(%rip)
jge    1583 <w3ft01+0x483>
movl   $0x1,0x2b09(%rip)
cmpl   $0x1,0x2afe(%rip)
jge    159a <w3ft01+0x49a>
movl   $0x1,0x2aee(%rip)
mov    0x2aa8(%rip),%eax
cmp    -0x14(%rbp),%eax
jle    15b2 <w3ft01+0x4b2>
mov    -0x14(%rbp),%eax
mov    %eax,0x2a96(%rip)
mov    0x2ad4(%rip),%eax
cmp    -0x14(%rbp),%eax
jle    15ca <w3ft01+0x4ca>
mov    -0x14(%rbp),%eax
mov    %eax,0x2ac2(%rip)
mov    0x2ac0(%rip),%eax
cmp    -0x14(%rbp),%eax
jle    15e2 <w3ft01+0x4e2>
mov    -0x14(%rbp),%eax
mov    %eax,0x2aae(%rip)
mov    0x2aa0(%rip),%eax
cmp    -0x14(%rbp),%eax
jle    15fa <w3ft01+0x4fa>
mov    -0x14(%rbp),%eax
mov    %eax,0x2a8e(%rip)
jmp    15ff <w3ft01+0x4ff>
movl   $0x1,0x2a47(%rip)
cmpl   $0x4,0x2a40(%rip)
jg     177f <w3ft01+0x67f>
mov    0x2a34(%rip),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x2a47(%rip),%rax
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2a2a(%rip)
cmpl   $0x1,0x2a23(%rip)
jge    1649 <w3ft01+0x549>
movl   $0x1,0x2a13(%rip)
mov    0x2a0d(%rip),%eax
cmp    -0x18(%rbp),%eax
jle    1661 <w3ft01+0x561>
mov    -0x18(%rbp),%eax
mov    %eax,0x29fb(%rip)
mov    -0x10(%rbp),%rax
mov    0x2a21(%rip),%ecx
mov    0x29eb(%rip),%edx
imul   -0x24(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x10(%rbp),%rax
mov    0x29bf(%rip),%ecx
mov    0x29cd(%rip),%edx
imul   -0x24(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
movss  0x29af(%rip),%xmm2
mov    -0x10(%rbp),%rax
mov    0x2999(%rip),%ecx
mov    0x29a7(%rip),%edx
imul   -0x24(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
mov    0x29b3(%rip),%ecx
mov    0x2981(%rip),%edx
imul   -0x24(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x2955(%rip),%ecx
mov    0x2963(%rip),%edx
imul   -0x24(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x297b(%rip),%ecx
mov    0x2945(%rip),%edx
imul   -0x24(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x2961(%rip),%ecx
mov    0x2927(%rip),%edx
imul   -0x24(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
movss  0x28f5(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    0x28f7(%rip),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0x28ca(%rip),%rax
movss  %xmm0,(%rax,%rcx,4)
mov    0x28df(%rip),%eax
add    $0x1,%eax
mov    %eax,0x28d6(%rip)
jmp    1609 <w3ft01+0x509>
movss  0x28ad(%rip),%xmm0
movss  0x28a9(%rip),%xmm1
subss  0x289d(%rip),%xmm1
movss  0x28b9(%rip),%xmm2
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  0x2881(%rip),%xmm0
subss  0x287d(%rip),%xmm0
subss  0x2879(%rip),%xmm0
addss  0x2875(%rip),%xmm0
movss  0x2875(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<w3ft01>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %esi,%eax
not    %eax
cltq
unpcklps %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
cvtdq2ps %xmm0,%xmm2
subps  %xmm2,%xmm1
pshufd $0x55,%xmm0,%xmm2
movd   %xmm2,%r9d
movd   %xmm0,%r15d
xorps  %xmm11,%xmm11
cmp    $0x1,%r8d
je     114e <w3ft01+0x4e>
movaps 0xec2(%rip),%xmm11
addps  %xmm1,%xmm11
mulps  %xmm1,%xmm11
mulps  0xec2(%rip),%xmm11
lea    (%rdi,%rax,4),%r12
lea    0x2(%r9),%r10d
lea    -0x1(%r9),%r11d
lea    0x1(%r9),%r14d
lea    0x2(%r15),%r13d
lea    -0x1(%r15),%ebp
movss  %xmm11,0x2eb5(%rip)
movdqa 0xea9(%rip),%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x50,%xmm2,%xmm0
movmskpd %xmm0,%ebx
shufps $0x55,%xmm11,%xmm11
test   $0x2,%bl
jne    11a7 <w3ft01+0xa7>
test   $0x1,%bl
jne    11a7 <w3ft01+0xa7>
lea    -0x3(%rsi),%ebx
cmp    %r9d,%ebx
jl     11a7 <w3ft01+0xa7>
lea    -0x3(%rdx),%ebx
cmp    %r15d,%ebx
jge    12c3 <w3ft01+0x1c3>
test   %ecx,%ecx
je     1235 <w3ft01+0x135>
mov    %r13d,%edi
cmp    $0x2,%ecx
je     11f9 <w3ft01+0xf9>
lea    -0x1(%rsi),%r13d
lea    -0x2(%rsi),%eax
cmp    %r9d,%r13d
cmove  %eax,%r11d
mov    $0x2,%eax
mov    %r10d,%ebx
cmove  %eax,%ebx
lea    0x1(%rcx),%eax
test   %r9d,%r9d
cmovle %r13d,%r11d
mov    $0x3,%r10d
cmovg  %ebx,%r10d
cmp    $0x3,%eax
jae    11f9 <w3ft01+0xf9>
xor    %eax,%eax
mov    $0x1,%r13b
cmp    $0x1,%r8d
jne    1215 <w3ft01+0x115>
jmp    1285 <w3ft01+0x185>
cmp    $0x2,%ecx
setne  %r13b
mov    $0x1,%al
cmp    $0x1,%r15d
jne    126b <w3ft01+0x16b>
xor    %ebp,%ebp
mov    $0x3,%edi
cmp    $0x1,%r8d
je     1285 <w3ft01+0x185>
test   %r13b,%r13b
jne    122c <w3ft01+0x12c>
cmp    $0x2,%r9d
jl     1228 <w3ft01+0x128>
lea    -0x1(%rsi),%ecx
cmp    %r9d,%ecx
jg     122c <w3ft01+0x12c>
xorps  %xmm11,%xmm11
test   %al,%al
mov    %edi,%r13d
je     1251 <w3ft01+0x151>
jmp    1288 <w3ft01+0x188>
cmp    $0x1,%r8d
je     1288 <w3ft01+0x188>
lea    -0x1(%rsi),%ecx
cmp    %r9d,%ecx
jg     1247 <w3ft01+0x147>
xorps  %xmm11,%xmm11
cmp    $0x2,%r9d
jge    1251 <w3ft01+0x151>
xorps  %xmm11,%xmm11
cmp    $0x2,%r15d
jl     125f <w3ft01+0x15f>
lea    -0x1(%rdx),%ecx
cmp    %r15d,%ecx
jg     1288 <w3ft01+0x188>
movl   $0x0,0x2dbb(%rip)
jmp    1288 <w3ft01+0x188>
lea    -0x1(%rdx),%ecx
lea    -0x2(%rdx),%ebx
cmp    %r15d,%ecx
mov    $0x2,%ecx
cmove  %ecx,%edi
cmove  %ebx,%ebp
cmp    $0x1,%r8d
jne    1215 <w3ft01+0x115>
mov    %edi,%r13d
test   %r9d,%r9d
mov    $0x1,%ecx
cmovle %ecx,%r9d
cmovle %ecx,%r14d
test   %r10d,%r10d
cmovle %ecx,%r14d
test   %r11d,%r11d
cmovg  %r11d,%ecx
cmp    %esi,%r9d
cmovg  %esi,%r9d
cmp    %esi,%r14d
cmovg  %esi,%r14d
cmp    %esi,%r10d
cmovg  %esi,%r10d
cmp    %esi,%ecx
cmovg  %esi,%ecx
mov    %ecx,%r11d
test   %ebp,%ebp
mov    $0x1,%ecx
cmovle %ecx,%ebp
cmp    %edx,%ebp
cmovg  %edx,%ebp
imul   %esi,%ebp
lea    (%r14,%rbp,1),%ebx
movslq %ebx,%rbx
movss  (%r12,%rbx,4),%xmm8
lea    (%r9,%rbp,1),%ebx
movslq %ebx,%rbx
movss  (%r12,%rbx,4),%xmm14
lea    (%r11,%rbp,1),%ebx
movslq %ebx,%rbx
movss  (%r12,%rbx,4),%xmm0
subss  %xmm14,%xmm0
subss  %xmm8,%xmm0
add    %r10d,%ebp
movslq %ebp,%rbp
addss  (%r12,%rbp,4),%xmm0
xor    %ebp,%ebp
test   %r15d,%r15d
mov    $0x1,%ebx
cmovg  %r15d,%ebx
cmovns %r15d,%ebp
cmp    %edx,%ebx
cmovg  %edx,%ebx
imul   %esi,%ebx
lea    (%rbx,%r14,1),%edi
movslq %edi,%r8
lea    (%rbx,%r9,1),%r15d
lea    (%r11,%rbx,1),%edi
add    %r10d,%ebx
add    $0x1,%ebp
cmp    %edx,%ebp
cmovg  %edx,%ebp
imul   %esi,%ebp
movss  (%r12,%r8,4),%xmm9
lea    (%r14,%rbp,1),%eax
cltq
movss  (%r12,%rax,4),%xmm15
movslq %r15d,%rax
movss  (%r12,%rax,4),%xmm10
lea    0x0(%rbp,%r9,1),%eax
cltq
movss  (%r12,%rax,4),%xmm7
movslq %edi,%rax
movss  (%r12,%rax,4),%xmm12
lea    (%r11,%rbp,1),%eax
cltq
movss  (%r12,%rax,4),%xmm6
movslq %ebx,%rax
movss  (%r12,%rax,4),%xmm13
add    %r10d,%ebp
movslq %ebp,%rax
movss  (%r12,%rax,4),%xmm2
test   %r13d,%r13d
cmovg  %r13d,%ecx
cmp    %edx,%ecx
cmovg  %edx,%ecx
imul   %esi,%ecx
add    %ecx,%r14d
movslq %r14d,%rax
movss  (%r12,%rax,4),%xmm3
add    %ecx,%r9d
movslq %r9d,%rax
movss  (%r12,%rax,4),%xmm4
subss  %xmm14,%xmm8
movaps %xmm1,%xmm5
shufps $0x55,%xmm1,%xmm5
mulss  %xmm5,%xmm8
addss  %xmm14,%xmm8
add    %ecx,%r11d
movslq %r11d,%rax
movss  (%r12,%rax,4),%xmm14
add    %r10d,%ecx
subss  %xmm4,%xmm14
subss  %xmm3,%xmm14
movslq %ecx,%rax
addss  (%r12,%rax,4),%xmm14
mulss  %xmm11,%xmm0
addss  %xmm8,%xmm0
unpcklps %xmm9,%xmm15
unpcklps %xmm10,%xmm7
unpcklps %xmm12,%xmm6
subps  %xmm7,%xmm6
subps  %xmm15,%xmm6
subps  %xmm7,%xmm15
mulps  %xmm5,%xmm15
addps  %xmm7,%xmm15
unpcklps %xmm13,%xmm2
addps  %xmm6,%xmm2
movaps %xmm11,%xmm6
shufps $0x0,%xmm11,%xmm6
mulps  %xmm2,%xmm6
addps  %xmm15,%xmm6
subss  %xmm4,%xmm3
mulss  %xmm5,%xmm3
addss  %xmm4,%xmm3
mulss  %xmm11,%xmm14
addss  %xmm3,%xmm14
movaps %xmm6,%xmm2
shufps $0x55,%xmm6,%xmm2
subss  %xmm2,%xmm0
subss  %xmm6,%xmm0
subss  %xmm2,%xmm6
mulss  %xmm1,%xmm6
addss  %xmm2,%xmm6
addss  %xmm14,%xmm0
mulss  0x2bac(%rip),%xmm0
addss  %xmm6,%xmm0
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@w3ft01.xj2tm = internal unnamed_addr global float 0.000000e+00
define float @w3ft01(float %0, float %1, float* nocapture %2, i32 %3, i32 %4, i32 %5, i32 %6) {
%8 = xor i32 %3, -1
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds float, float* %2, i64 %9
%11 = insertelement <2 x float> poison, float %1, i64 0
%12 = insertelement <2 x float> %11, float %0, i64 1
%13 = fptosi <2 x float> %12 to <2 x i32>
%14 = sitofp <2 x i32> %13 to <2 x float>
%15 = fsub <2 x float> %12, %14
%16 = extractelement <2 x i32> %13, i64 1
%17 = add nsw i32 %16, 2
%18 = add nsw i32 %16, -1
%19 = add nsw i32 %16, 1
%20 = extractelement <2 x i32> %13, i64 0
%21 = add nsw i32 %20, 2
%22 = add nsw i32 %20, -1
%23 = icmp eq i32 %6, 1
%24 = fadd <2 x float> %15, <float -1.000000e+00, float -1.000000e+00>
%25 = fmul <2 x float> %15, %24
%26 = fmul <2 x float> %25, <float 2.500000e-01, float 2.500000e-01>
%27 = select i1 %23, <2 x float> zeroinitializer, <2 x float> %26
%28 = extractelement <2 x float> %27, i64 0
store float %28, float* @w3ft01.xj2tm
%29 = icmp slt <2 x i32> %13, <i32 2, i32 2>
%30 = extractelement <2 x i1> %29, i64 0
%31 = extractelement <2 x i1> %29, i64 1
%32 = select i1 %31, i1 true, i1 %30
%33 = add nsw i32 %3, -3
%34 = icmp slt i32 %33, %16
%35 = select i1 %32, i1 true, i1 %34
%36 = add nsw i32 %4, -3
%37 = icmp slt i32 %36, %20
%38 = select i1 %35, i1 true, i1 %37
%39 = extractelement <2 x float> %27, i64 1
br i1 %38, label %40, label %120
40: ; preds = %7
%41 = icmp eq i32 %5, 0
br i1 %41, label %73, label %42
42: ; preds = %40
%43 = icmp eq i32 %5, 2
br i1 %43, label %55, label %44
44: ; preds = %42
%45 = add i32 %5, 1
%46 = icmp ult i32 %45, 3
%47 = icmp slt i32 %16, 1
%48 = add nsw i32 %3, -1
%49 = icmp eq i32 %48, %16
%50 = add nsw i32 %3, -2
%51 = select i1 %49, i32 %50, i32 %18
%52 = select i1 %49, i32 2, i32 %17
%53 = select i1 %47, i32 %48, i32 %51
%54 = select i1 %47, i32 3, i32 %52
br i1 %46, label %66, label %55
55: ; preds = %42, %44
%56 = phi i32 [ %53, %44 ], [ %18, %42 ]
%57 = phi i32 [ %54, %44 ], [ %17, %42 ]
%58 = xor i1 %43, true
%59 = icmp eq i32 %20, 1
br i1 %59, label %66, label %60
60: ; preds = %55
%61 = add nsw i32 %4, -1
%62 = icmp eq i32 %61, %20
%63 = add nsw i32 %4, -2
%64 = select i1 %62, i32 2, i32 %21
%65 = select i1 %62, i32 %63, i32 %22
br label %66
66: ; preds = %60, %55, %44
%67 = phi i32 [ %21, %44 ], [ 3, %55 ], [ %64, %60 ]
%68 = phi i32 [ %22, %44 ], [ 0, %55 ], [ %65, %60 ]
%69 = phi i32 [ %53, %44 ], [ %56, %55 ], [ %56, %60 ]
%70 = phi i32 [ %54, %44 ], [ %57, %55 ], [ %57, %60 ]
%71 = phi i1 [ false, %44 ], [ true, %55 ], [ true, %60 ]
%72 = phi i1 [ true, %44 ], [ %58, %55 ], [ %58, %60 ]
br i1 %23, label %99, label %74
73: ; preds = %40
br i1 %23, label %99, label %80
74: ; preds = %66
br i1 %72, label %87, label %75
75: ; preds = %74
%76 = icmp sgt i32 %16, 1
%77 = add nsw i32 %3, -1
%78 = icmp sgt i32 %77, %16
%79 = select i1 %76, i1 %78, i1 false
br i1 %79, label %87, label %86
80: ; preds = %73
%81 = icmp sgt i32 %16, 1
%82 = add nsw i32 %3, -1
%83 = icmp sgt i32 %82, %16
%84 = select i1 %81, i1 %83, i1 false
%85 = select i1 %84, float %39, float 0.000000e+00
br label %88
86: ; preds = %75
br i1 %71, label %99, label %88
87: ; preds = %75, %74
br i1 %71, label %99, label %88
88: ; preds = %80, %86, %87
%89 = phi float [ 0.000000e+00, %86 ], [ %39, %87 ], [ %85, %80 ]
%90 = phi i32 [ %70, %86 ], [ %70, %87 ], [ %17, %80 ]
%91 = phi i32 [ %69, %86 ], [ %69, %87 ], [ %18, %80 ]
%92 = phi i32 [ %68, %86 ], [ %68, %87 ], [ %22, %80 ]
%93 = phi i32 [ %67, %86 ], [ %67, %87 ], [ %21, %80 ]
%94 = icmp sgt i32 %20, 1
%95 = add nsw i32 %4, -1
%96 = icmp sgt i32 %95, %20
%97 = select i1 %94, i1 %96, i1 false
br i1 %97, label %99, label %98
98: ; preds = %88
store float 0.000000e+00, float* @w3ft01.xj2tm
br label %99
99: ; preds = %86, %73, %88, %98, %87, %66
%100 = phi i32 [ %90, %88 ], [ %90, %98 ], [ %70, %87 ], [ %70, %66 ], [ %17, %73 ], [ %70, %86 ]
%101 = phi i32 [ %91, %88 ], [ %91, %98 ], [ %69, %87 ], [ %69, %66 ], [ %18, %73 ], [ %69, %86 ]
%102 = phi i32 [ %92, %88 ], [ %92, %98 ], [ %68, %87 ], [ %68, %66 ], [ %22, %73 ], [ %68, %86 ]
%103 = phi i32 [ %93, %88 ], [ %93, %98 ], [ %67, %87 ], [ %67, %66 ], [ %21, %73 ], [ %67, %86 ]
%104 = phi float [ %89, %88 ], [ %89, %98 ], [ %39, %87 ], [ %39, %66 ], [ %39, %73 ], [ 0.000000e+00, %86 ]
%105 = icmp slt i32 %16, 1
%106 = select i1 %105, i32 1, i32 %16
%107 = icmp slt i32 %100, 1
%108 = select i1 %107, i1 true, i1 %105
%109 = select i1 %108, i32 1, i32 %19
%110 = icmp sgt i32 %101, 1
%111 = select i1 %110, i32 %101, i32 1
%112 = icmp sgt i32 %106, %3
%113 = select i1 %112, i32 %3, i32 %106
%114 = icmp sgt i32 %109, %3
%115 = select i1 %114, i32 %3, i32 %109
%116 = icmp sgt i32 %100, %3
%117 = select i1 %116, i32 %3, i32 %100
%118 = icmp sgt i32 %111, %3
%119 = select i1 %118, i32 %3, i32 %111
br label %120
120: ; preds = %99, %7
%121 = phi i32 [ %21, %7 ], [ %103, %99 ]
%122 = phi i32 [ %22, %7 ], [ %102, %99 ]
%123 = phi float [ %39, %7 ], [ %104, %99 ]
%124 = phi i32 [ %17, %7 ], [ %117, %99 ]
%125 = phi i32 [ %18, %7 ], [ %119, %99 ]
%126 = phi i32 [ %16, %7 ], [ %113, %99 ]
%127 = phi i32 [ %19, %7 ], [ %115, %99 ]
%128 = icmp sgt i32 %122, 1
%129 = select i1 %128, i32 %122, i32 1
%130 = icmp sgt i32 %129, %4
%131 = select i1 %130, i32 %4, i32 %129
%132 = mul nsw i32 %131, %3
%133 = add nsw i32 %132, %127
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds float, float* %10, i64 %134
%136 = load float, float* %135
%137 = add nsw i32 %132, %126
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds float, float* %10, i64 %138
%140 = load float, float* %139
%141 = fsub float %136, %140
%142 = extractelement <2 x float> %15, i64 1
%143 = tail call float @llvm.fmuladd.f32(float %141, float %142, float %140)
%144 = add nsw i32 %125, %132
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds float, float* %10, i64 %145
%147 = load float, float* %146
%148 = fsub float %147, %140
%149 = fsub float %148, %136
%150 = add nsw i32 %124, %132
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds float, float* %10, i64 %151
%153 = load float, float* %152
%154 = fadd float %149, %153
%155 = tail call float @llvm.fmuladd.f32(float %154, float %123, float %143)
%156 = icmp sgt i32 %20, 1
%157 = select i1 %156, i32 %20, i32 1
%158 = icmp sgt i32 %157, %4
%159 = select i1 %158, i32 %4, i32 %157
%160 = mul nsw i32 %159, %3
%161 = add nsw i32 %160, %127
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds float, float* %10, i64 %162
%164 = load float, float* %163
%165 = add nsw i32 %160, %126
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds float, float* %10, i64 %166
%168 = load float, float* %167
%169 = add nsw i32 %125, %160
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds float, float* %10, i64 %170
%172 = load float, float* %171
%173 = add nsw i32 %124, %160
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds float, float* %10, i64 %174
%176 = load float, float* %175
%177 = icmp sgt i32 %20, 0
%178 = select i1 %177, i32 %20, i32 0
%179 = add nuw nsw i32 %178, 1
%180 = icmp sgt i32 %179, %4
%181 = select i1 %180, i32 %4, i32 %179
%182 = mul nsw i32 %181, %3
%183 = add nsw i32 %182, %127
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds float, float* %10, i64 %184
%186 = load float, float* %185
%187 = add nsw i32 %182, %126
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds float, float* %10, i64 %188
%190 = load float, float* %189
%191 = insertelement <2 x float> poison, float %186, i64 0
%192 = insertelement <2 x float> %191, float %164, i64 1
%193 = insertelement <2 x float> poison, float %190, i64 0
%194 = insertelement <2 x float> %193, float %168, i64 1
%195 = fsub <2 x float> %192, %194
%196 = shufflevector <2 x float> %15, <2 x float> undef, <2 x i32> <i32 1, i32 1>
%197 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %195, <2 x float> %196, <2 x float> %194)
%198 = add nsw i32 %125, %182
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds float, float* %10, i64 %199
%201 = load float, float* %200
%202 = insertelement <2 x float> poison, float %201, i64 0
%203 = insertelement <2 x float> %202, float %172, i64 1
%204 = fsub <2 x float> %203, %194
%205 = fsub <2 x float> %204, %192
%206 = add nsw i32 %124, %182
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds float, float* %10, i64 %207
%209 = load float, float* %208
%210 = insertelement <2 x float> poison, float %209, i64 0
%211 = insertelement <2 x float> %210, float %176, i64 1
%212 = fadd <2 x float> %205, %211
%213 = insertelement <2 x float> poison, float %123, i64 0
%214 = shufflevector <2 x float> %213, <2 x float> poison, <2 x i32> zeroinitializer
%215 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %212, <2 x float> %214, <2 x float> %197)
%216 = icmp sgt i32 %121, 1
%217 = select i1 %216, i32 %121, i32 1
%218 = icmp sgt i32 %217, %4
%219 = select i1 %218, i32 %4, i32 %217
%220 = mul nsw i32 %219, %3
%221 = add nsw i32 %220, %127
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds float, float* %10, i64 %222
%224 = load float, float* %223
%225 = add nsw i32 %220, %126
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds float, float* %10, i64 %226
%228 = load float, float* %227
%229 = fsub float %224, %228
%230 = tail call float @llvm.fmuladd.f32(float %229, float %142, float %228)
%231 = add nsw i32 %125, %220
%232 = sext i32 %231 to i64
%233 = getelementptr inbounds float, float* %10, i64 %232
%234 = load float, float* %233
%235 = fsub float %234, %228
%236 = fsub float %235, %224
%237 = add nsw i32 %124, %220
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds float, float* %10, i64 %238
%240 = load float, float* %239
%241 = fadd float %236, %240
%242 = tail call float @llvm.fmuladd.f32(float %241, float %123, float %230)
%243 = extractelement <2 x float> %215, i64 0
%244 = extractelement <2 x float> %215, i64 1
%245 = fsub float %243, %244
%246 = extractelement <2 x float> %15, i64 0
%247 = tail call float @llvm.fmuladd.f32(float %245, float %246, float %244)
%248 = fsub float %155, %244
%249 = fsub float %248, %243
%250 = fadd float %242, %249
%251 = load float, float* @w3ft01.xj2tm
%252 = tail call float @llvm.fmuladd.f32(float %250, float %251, float %247)
ret float %252
}