void passf3(int ido, int l1, const float cc[], float ch[], const float wa1[],
            const float wa2[], int isign) {
  static const float taur = -0.5;
  static const float taui = 0.866025403784439;
  int i, k, ac, ah;
  float ci2, ci3, di2, di3, cr2, cr3, dr2, dr3, ti2, tr2;
  if (ido == 2) {
    for (k = 1; k <= l1; k++) {
      ac = (3 * k - 2) * ido;
      tr2 = cc[ac] + cc[ac + ido];
      cr2 = cc[ac - ido] + taur * tr2;
      ah = (k - 1) * ido;
      ch[ah] = cc[ac - ido] + tr2;
      ti2 = cc[ac + 1] + cc[ac + ido + 1];
      ci2 = cc[ac - ido + 1] + taur * ti2;
      ch[ah + 1] = cc[ac - ido + 1] + ti2;
      cr3 = isign * taui * (cc[ac] - cc[ac + ido]);
      ci3 = isign * taui * (cc[ac + 1] - cc[ac + ido + 1]);
      ch[ah + l1 * ido] = cr2 - ci3;
      ch[ah + 2 * l1 * ido] = cr2 + ci3;
      ch[ah + l1 * ido + 1] = ci2 + cr3;
      ch[ah + 2 * l1 * ido + 1] = ci2 - cr3;
    }
  } else {
    for (k = 1; k <= l1; k++) {
      for (i = 0; i < ido - 1; i += 2) {
        ac = i + (3 * k - 2) * ido;
        tr2 = cc[ac] + cc[ac + ido];
        cr2 = cc[ac - ido] + taur * tr2;
        ah = i + (k - 1) * ido;
        ch[ah] = cc[ac - ido] + tr2;
        ti2 = cc[ac + 1] + cc[ac + ido + 1];
        ci2 = cc[ac - ido + 1] + taur * ti2;
        ch[ah + 1] = cc[ac - ido + 1] + ti2;
        cr3 = isign * taui * (cc[ac] - cc[ac + ido]);
        ci3 = isign * taui * (cc[ac + 1] - cc[ac + ido + 1]);
        dr2 = cr2 - ci3;
        dr3 = cr2 + ci3;
        di2 = ci2 + cr3;
        di3 = ci2 - cr3;
        ch[ah + l1 * ido + 1] = wa1[i] * di2 + isign * wa1[i + 1] * dr2;
        ch[ah + l1 * ido] = wa1[i] * dr2 - isign * wa1[i + 1] * di2;
        ch[ah + 2 * l1 * ido + 1] = wa2[i] * di3 + isign * wa2[i + 1] * dr3;
        ch[ah + 2 * l1 * ido] = wa2[i] * dr3 - isign * wa2[i + 1] * di3;
      }
    }
  }
}


x86 assembly (clang, -O0):
<passf3>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
cmpl   $0x2,-0x4(%rbp)
jne    1371 <passf3+0x271>
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     136c <passf3+0x26c>
imul   $0x3,-0x30(%rbp),%eax
sub    $0x2,%eax
imul   -0x4(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x60(%rbp),%xmm0
movss  0xe79(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x30(%rbp),%eax
sub    $0x1,%eax
imul   -0x4(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x5c(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x5c(%rbp),%xmm0
movss  0xded(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x5c(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
cvtsi2ssl 0x10(%rbp),%xmm0
movss  0xda3(%rip),%xmm1
mulss  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x50(%rbp)
cvtsi2ssl 0x10(%rbp),%xmm0
movss  0xd6a(%rip),%xmm1
mulss  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x4c(%rbp),%xmm0
subss  -0x40(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x4c(%rbp),%xmm0
addss  -0x40(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x3c(%rbp),%xmm0
addss  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x3c(%rbp),%xmm0
subss  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    112e <passf3+0x2e>
jmp    16f6 <passf3+0x5f6>
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     16f1 <passf3+0x5f1>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    16de <passf3+0x5de>
mov    -0x2c(%rbp),%eax
imul   $0x3,-0x30(%rbp),%ecx
sub    $0x2,%ecx
imul   -0x4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x60(%rbp),%xmm0
movss  0xc12(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
imul   -0x4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x5c(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x5c(%rbp),%xmm0
movss  0xb81(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x5c(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
cvtsi2ssl 0x10(%rbp),%xmm0
movss  0xb37(%rip),%xmm1
mulss  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x50(%rbp)
cvtsi2ssl 0x10(%rbp),%xmm0
movss  0xafe(%rip),%xmm1
mulss  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x4c(%rbp),%xmm0
subss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x4c(%rbp),%xmm0
addss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
addss  -0x50(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x3c(%rbp),%xmm0
subss  -0x50(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x44(%rbp),%xmm2
cvtsi2ssl 0x10(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulss  (%rax,%rcx,4),%xmm1
mulss  -0x54(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x54(%rbp),%xmm2
cvtsi2ssl 0x10(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulss  (%rax,%rcx,4),%xmm1
mulss  -0x44(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x48(%rbp),%xmm2
cvtsi2ssl 0x10(%rbp),%xmm1
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulss  (%rax,%rcx,4),%xmm1
mulss  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x58(%rbp),%xmm2
cvtsi2ssl 0x10(%rbp),%xmm1
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulss  (%rax,%rcx,4),%xmm1
mulss  -0x48(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    138b <passf3+0x28b>
jmp    16e3 <passf3+0x5e3>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1378 <passf3+0x278>
jmp    16f6 <passf3+0x5f6>
pop    %rbp
ret

x86 assembly (clang, -O2):
<passf3>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    0x38(%rsp),%eax
cmp    $0x2,%edi
jne    1266 <passf3+0x166>
test   %esi,%esi
jle    1428 <passf3+0x328>
cvtsi2ss %eax,%xmm0
mulss  0xed5(%rip),%xmm0
lea    (%rsi,%rsi,1),%r9d
mov    %esi,%eax
shl    $0x2,%esi
add    %rax,%rax
lea    (%rax,%rax,2),%r8
add    $0x6,%r8
xor    %ebx,%ebx
movabs $0x100000000,%r15
mov    $0x6,%eax
movss  0xeac(%rip),%xmm1
movabs $0x200000000,%r10
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x4(%rax),%ebp
movslq %ebp,%r11
movss  (%rdx,%r11,4),%xmm3
lea    -0x2(%rax),%ebp
movslq %ebp,%r14
addss  (%rdx,%r14,4),%xmm3
lea    -0x6(%rax),%ebp
movslq %ebp,%rbp
movss  (%rdx,%rbp,4),%xmm4
movaps %xmm3,%xmm2
mulss  %xmm1,%xmm2
addss  %xmm4,%xmm3
movslq %ebx,%rbx
movss  %xmm3,(%rcx,%rbx,4)
lea    -0x3(%rax),%ebp
movslq %ebp,%r12
lea    -0x1(%rax),%edi
movss  (%rdx,%r12,4),%xmm5
movslq %edi,%rdi
addss  (%rdx,%rdi,4),%xmm5
addss  %xmm4,%xmm2
lea    -0x5(%rax),%ebp
movslq %ebp,%rbp
movss  (%rdx,%rbp,4),%xmm4
movaps %xmm5,%xmm3
mulss  %xmm1,%xmm3
addss  %xmm4,%xmm5
mov    %r15,%rbp
sar    $0x1e,%rbp
movss  %xmm5,(%rcx,%rbp,1)
movss  (%rdx,%r11,4),%xmm5
subss  (%rdx,%r14,4),%xmm5
movss  (%rdx,%r12,4),%xmm6
mulss  %xmm0,%xmm5
subss  (%rdx,%rdi,4),%xmm6
mulss  %xmm0,%xmm6
addss  %xmm4,%xmm3
movaps %xmm2,%xmm4
subss  %xmm6,%xmm4
lea    (%r9,%rbx,1),%edi
movslq %edi,%rdi
movss  %xmm4,(%rcx,%rdi,4)
addss  %xmm2,%xmm6
lea    (%rsi,%rbx,1),%edi
movslq %edi,%rdi
movaps %xmm3,%xmm2
movss  %xmm6,(%rcx,%rdi,4)
addss  %xmm5,%xmm2
lea    0x1(%r9,%rbx,1),%edi
movslq %edi,%rdi
movss  %xmm2,(%rcx,%rdi,4)
subss  %xmm5,%xmm3
lea    (%rsi,%rbx,1),%edi
add    $0x1,%edi
movslq %edi,%rdi
movss  %xmm3,(%rcx,%rdi,4)
add    $0x2,%ebx
add    %r10,%r15
add    $0x6,%rax
cmp    %rax,%r8
jne    1170 <passf3+0x70>
jmp    1428 <passf3+0x328>
test   %esi,%esi
jle    1428 <passf3+0x328>
cvtsi2ss %eax,%xmm0
lea    -0x1(%rdi),%r10d
movss  0xd82(%rip),%xmm1
mulss  %xmm0,%xmm1
mov    %esi,%ebp
imul   %edi,%ebp
movslq %edi,%rbx
movslq %ebp,%rax
add    %ebp,%ebp
movslq %ebp,%rbp
movslq %r10d,%r10
add    $0x1,%esi
lea    (%rcx,%rbp,4),%r14
add    $0x4,%r14
lea    0x0(,%rbx,4),%r11
lea    (%rcx,%rax,4),%r12
add    $0x4,%r12
add    $0x4,%rcx
lea    (%rdx,%rbx,4),%rax
add    $0x4,%rax
lea    (%r11,%r11,2),%r15
lea    (%rdx,%rbx,8),%rbx
add    $0x4,%rbx
add    $0x4,%rdx
mov    $0x1,%r13d
movss  0xd29(%rip),%xmm8
jmp    12ff <passf3+0x1ff>
nopl   (%rax)
add    $0x1,%r13
add    %r11,%r14
add    %r11,%r12
add    %r11,%rcx
add    %r15,%rax
add    %r15,%rdx
add    %r15,%rbx
cmp    %rsi,%r13
je     1428 <passf3+0x328>
cmp    $0x2,%edi
jl     12e0 <passf3+0x1e0>
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
movss  -0x4(%rax,%rbp,4),%xmm3
addss  -0x4(%rbx,%rbp,4),%xmm3
movss  -0x4(%rdx,%rbp,4),%xmm4
movaps %xmm3,%xmm5
mulss  %xmm8,%xmm5
addss  %xmm4,%xmm3
movss  %xmm3,-0x4(%rcx,%rbp,4)
movss  (%rax,%rbp,4),%xmm6
addss  (%rbx,%rbp,4),%xmm6
addss  %xmm4,%xmm5
movss  (%rdx,%rbp,4),%xmm4
movaps %xmm6,%xmm3
mulss  %xmm8,%xmm3
addss  %xmm4,%xmm3
addss  %xmm4,%xmm6
movss  %xmm6,(%rcx,%rbp,4)
movss  -0x4(%rax,%rbp,4),%xmm6
movss  (%rax,%rbp,4),%xmm4
subss  -0x4(%rbx,%rbp,4),%xmm6
subss  (%rbx,%rbp,4),%xmm4
mulss  %xmm1,%xmm6
mulss  %xmm1,%xmm4
movaps %xmm5,%xmm7
subss  %xmm4,%xmm7
addss  %xmm5,%xmm4
movaps %xmm3,%xmm5
addss  %xmm6,%xmm5
subss  %xmm6,%xmm3
movss  0x4(%r8,%rbp,4),%xmm6
mulss  %xmm0,%xmm6
mulss  %xmm7,%xmm6
movss  (%r8,%rbp,4),%xmm2
mulss  %xmm5,%xmm2
addss  %xmm6,%xmm2
movss  %xmm2,(%r12,%rbp,4)
movss  0x4(%r8,%rbp,4),%xmm2
mulss  %xmm0,%xmm2
mulss  %xmm5,%xmm2
mulss  (%r8,%rbp,4),%xmm7
subss  %xmm2,%xmm7
movss  %xmm7,-0x4(%r12,%rbp,4)
movss  0x4(%r9,%rbp,4),%xmm2
mulss  %xmm0,%xmm2
mulss  %xmm4,%xmm2
movss  (%r9,%rbp,4),%xmm5
mulss  %xmm3,%xmm5
addss  %xmm2,%xmm5
movss  %xmm5,(%r14,%rbp,4)
movss  0x4(%r9,%rbp,4),%xmm2
mulss  %xmm0,%xmm2
mulss  %xmm3,%xmm2
mulss  (%r9,%rbp,4),%xmm4
subss  %xmm2,%xmm4
movss  %xmm4,-0x4(%r14,%rbp,4)
add    $0x2,%rbp
cmp    %r10,%rbp
jl     1310 <passf3+0x210>
jmp    12e0 <passf3+0x1e0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@passf3.taur = internal constant float -5.000000e-01
@passf3.taui = internal constant float 0x3FEBB67AE0000000
define void @passf3(i32 %0, i32 %1, float* %2, float* %3, float* %4, float* %5, i32 %6) {
%8 = alloca i32
%9 = alloca i32
%10 = alloca float*
%11 = alloca float*
%12 = alloca float*
%13 = alloca float*
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca float
%20 = alloca float
%21 = alloca float
%22 = alloca float
%23 = alloca float
%24 = alloca float
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
store i32 %0, i32* %8
store i32 %1, i32* %9
store float* %2, float** %10
store float* %3, float** %11
store float* %4, float** %12
store float* %5, float** %13
store i32 %6, i32* %14
%29 = load i32, i32* %8
%30 = icmp eq i32 %29, 2
br i1 %30, label %31, label %209
31: ; preds = %7
store i32 1, i32* %16
br label %32
32: ; preds = %205, %31
%33 = load i32, i32* %16
%34 = load i32, i32* %9
%35 = icmp sle i32 %33, %34
br i1 %35, label %36, label %208
36: ; preds = %32
%37 = load i32, i32* %16
%38 = mul nsw i32 3, %37
%39 = sub nsw i32 %38, 2
%40 = load i32, i32* %8
%41 = mul nsw i32 %39, %40
store i32 %41, i32* %17
%42 = load float*, float** %10
%43 = load i32, i32* %17
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds float, float* %42, i64 %44
%46 = load float, float* %45
%47 = load float*, float** %10
%48 = load i32, i32* %17
%49 = load i32, i32* %8
%50 = add nsw i32 %48, %49
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds float, float* %47, i64 %51
%53 = load float, float* %52
%54 = fadd float %46, %53
store float %54, float* %28
%55 = load float*, float** %10
%56 = load i32, i32* %17
%57 = load i32, i32* %8
%58 = sub nsw i32 %56, %57
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds float, float* %55, i64 %59
%61 = load float, float* %60
%62 = load float, float* %28
%63 = call float @llvm.fmuladd.f32(float -5.000000e-01, float %62, float %61)
store float %63, float* %23
%64 = load i32, i32* %16
%65 = sub nsw i32 %64, 1
%66 = load i32, i32* %8
%67 = mul nsw i32 %65, %66
store i32 %67, i32* %18
%68 = load float*, float** %10
%69 = load i32, i32* %17
%70 = load i32, i32* %8
%71 = sub nsw i32 %69, %70
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds float, float* %68, i64 %72
%74 = load float, float* %73
%75 = load float, float* %28
%76 = fadd float %74, %75
%77 = load float*, float** %11
%78 = load i32, i32* %18
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds float, float* %77, i64 %79
store float %76, float* %80
%81 = load float*, float** %10
%82 = load i32, i32* %17
%83 = add nsw i32 %82, 1
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds float, float* %81, i64 %84
%86 = load float, float* %85
%87 = load float*, float** %10
%88 = load i32, i32* %17
%89 = load i32, i32* %8
%90 = add nsw i32 %88, %89
%91 = add nsw i32 %90, 1
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds float, float* %87, i64 %92
%94 = load float, float* %93
%95 = fadd float %86, %94
store float %95, float* %27
%96 = load float*, float** %10
%97 = load i32, i32* %17
%98 = load i32, i32* %8
%99 = sub nsw i32 %97, %98
%100 = add nsw i32 %99, 1
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds float, float* %96, i64 %101
%103 = load float, float* %102
%104 = load float, float* %27
%105 = call float @llvm.fmuladd.f32(float -5.000000e-01, float %104, float %103)
store float %105, float* %19
%106 = load float*, float** %10
%107 = load i32, i32* %17
%108 = load i32, i32* %8
%109 = sub nsw i32 %107, %108
%110 = add nsw i32 %109, 1
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds float, float* %106, i64 %111
%113 = load float, float* %112
%114 = load float, float* %27
%115 = fadd float %113, %114
%116 = load float*, float** %11
%117 = load i32, i32* %18
%118 = add nsw i32 %117, 1
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds float, float* %116, i64 %119
store float %115, float* %120
%121 = load i32, i32* %14
%122 = sitofp i32 %121 to float
%123 = fmul float %122, 0x3FEBB67AE0000000
%124 = load float*, float** %10
%125 = load i32, i32* %17
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds float, float* %124, i64 %126
%128 = load float, float* %127
%129 = load float*, float** %10
%130 = load i32, i32* %17
%131 = load i32, i32* %8
%132 = add nsw i32 %130, %131
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds float, float* %129, i64 %133
%135 = load float, float* %134
%136 = fsub float %128, %135
%137 = fmul float %123, %136
store float %137, float* %24
%138 = load i32, i32* %14
%139 = sitofp i32 %138 to float
%140 = fmul float %139, 0x3FEBB67AE0000000
%141 = load float*, float** %10
%142 = load i32, i32* %17
%143 = add nsw i32 %142, 1
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds float, float* %141, i64 %144
%146 = load float, float* %145
%147 = load float*, float** %10
%148 = load i32, i32* %17
%149 = load i32, i32* %8
%150 = add nsw i32 %148, %149
%151 = add nsw i32 %150, 1
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds float, float* %147, i64 %152
%154 = load float, float* %153
%155 = fsub float %146, %154
%156 = fmul float %140, %155
store float %156, float* %20
%157 = load float, float* %23
%158 = load float, float* %20
%159 = fsub float %157, %158
%160 = load float*, float** %11
%161 = load i32, i32* %18
%162 = load i32, i32* %9
%163 = load i32, i32* %8
%164 = mul nsw i32 %162, %163
%165 = add nsw i32 %161, %164
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds float, float* %160, i64 %166
store float %159, float* %167
%168 = load float, float* %23
%169 = load float, float* %20
%170 = fadd float %168, %169
%171 = load float*, float** %11
%172 = load i32, i32* %18
%173 = load i32, i32* %9
%174 = mul nsw i32 2, %173
%175 = load i32, i32* %8
%176 = mul nsw i32 %174, %175
%177 = add nsw i32 %172, %176
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds float, float* %171, i64 %178
store float %170, float* %179
%180 = load float, float* %19
%181 = load float, float* %24
%182 = fadd float %180, %181
%183 = load float*, float** %11
%184 = load i32, i32* %18
%185 = load i32, i32* %9
%186 = load i32, i32* %8
%187 = mul nsw i32 %185, %186
%188 = add nsw i32 %184, %187
%189 = add nsw i32 %188, 1
%190 = sext i32 %189 to i64
%191 = getelementptr inbounds float, float* %183, i64 %190
store float %182, float* %191
%192 = load float, float* %19
%193 = load float, float* %24
%194 = fsub float %192, %193
%195 = load float*, float** %11
%196 = load i32, i32* %18
%197 = load i32, i32* %9
%198 = mul nsw i32 2, %197
%199 = load i32, i32* %8
%200 = mul nsw i32 %198, %199
%201 = add nsw i32 %196, %200
%202 = add nsw i32 %201, 1
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds float, float* %195, i64 %203
store float %194, float* %204
br label %205
205: ; preds = %36
%206 = load i32, i32* %16
%207 = add nsw i32 %206, 1
store i32 %207, i32* %16
br label %32
208: ; preds = %32
br label %475
209: ; preds = %7
store i32 1, i32* %16
br label %210
210: ; preds = %471, %209
%211 = load i32, i32* %16
%212 = load i32, i32* %9
%213 = icmp sle i32 %211, %212
br i1 %213, label %214, label %474
214: ; preds = %210
store i32 0, i32* %15
br label %215
215: ; preds = %467, %214
%216 = load i32, i32* %15
%217 = load i32, i32* %8
%218 = sub nsw i32 %217, 1
%219 = icmp slt i32 %216, %218
br i1 %219, label %220, label %470
220: ; preds = %215
%221 = load i32, i32* %15
%222 = load i32, i32* %16
%223 = mul nsw i32 3, %222
%224 = sub nsw i32 %223, 2
%225 = load i32, i32* %8
%226 = mul nsw i32 %224, %225
%227 = add nsw i32 %221, %226
store i32 %227, i32* %17
%228 = load float*, float** %10
%229 = load i32, i32* %17
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds float, float* %228, i64 %230
%232 = load float, float* %231
%233 = load float*, float** %10
%234 = load i32, i32* %17
%235 = load i32, i32* %8
%236 = add nsw i32 %234, %235
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds float, float* %233, i64 %237
%239 = load float, float* %238
%240 = fadd float %232, %239
store float %240, float* %28
%241 = load float*, float** %10
%242 = load i32, i32* %17
%243 = load i32, i32* %8
%244 = sub nsw i32 %242, %243
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds float, float* %241, i64 %245
%247 = load float, float* %246
%248 = load float, float* %28
%249 = call float @llvm.fmuladd.f32(float -5.000000e-01, float %248, float %247)
store float %249, float* %23
%250 = load i32, i32* %15
%251 = load i32, i32* %16
%252 = sub nsw i32 %251, 1
%253 = load i32, i32* %8
%254 = mul nsw i32 %252, %253
%255 = add nsw i32 %250, %254
store i32 %255, i32* %18
%256 = load float*, float** %10
%257 = load i32, i32* %17
%258 = load i32, i32* %8
%259 = sub nsw i32 %257, %258
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds float, float* %256, i64 %260
%262 = load float, float* %261
%263 = load float, float* %28
%264 = fadd float %262, %263
%265 = load float*, float** %11
%266 = load i32, i32* %18
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds float, float* %265, i64 %267
store float %264, float* %268
%269 = load float*, float** %10
%270 = load i32, i32* %17
%271 = add nsw i32 %270, 1
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds float, float* %269, i64 %272
%274 = load float, float* %273
%275 = load float*, float** %10
%276 = load i32, i32* %17
%277 = load i32, i32* %8
%278 = add nsw i32 %276, %277
%279 = add nsw i32 %278, 1
%280 = sext i32 %279 to i64
%281 = getelementptr inbounds float, float* %275, i64 %280
%282 = load float, float* %281
%283 = fadd float %274, %282
store float %283, float* %27
%284 = load float*, float** %10
%285 = load i32, i32* %17
%286 = load i32, i32* %8
%287 = sub nsw i32 %285, %286
%288 = add nsw i32 %287, 1
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds float, float* %284, i64 %289
%291 = load float, float* %290
%292 = load float, float* %27
%293 = call float @llvm.fmuladd.f32(float -5.000000e-01, float %292, float %291)
store float %293, float* %19
%294 = load float*, float** %10
%295 = load i32, i32* %17
%296 = load i32, i32* %8
%297 = sub nsw i32 %295, %296
%298 = add nsw i32 %297, 1
%299 = sext i32 %298 to i64
%300 = getelementptr inbounds float, float* %294, i64 %299
%301 = load float, float* %300
%302 = load float, float* %27
%303 = fadd float %301, %302
%304 = load float*, float** %11
%305 = load i32, i32* %18
%306 = add nsw i32 %305, 1
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds float, float* %304, i64 %307
store float %303, float* %308
%309 = load i32, i32* %14
%310 = sitofp i32 %309 to float
%311 = fmul float %310, 0x3FEBB67AE0000000
%312 = load float*, float** %10
%313 = load i32, i32* %17
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds float, float* %312, i64 %314
%316 = load float, float* %315
%317 = load float*, float** %10
%318 = load i32, i32* %17
%319 = load i32, i32* %8
%320 = add nsw i32 %318, %319
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds float, float* %317, i64 %321
%323 = load float, float* %322
%324 = fsub float %316, %323
%325 = fmul float %311, %324
store float %325, float* %24
%326 = load i32, i32* %14
%327 = sitofp i32 %326 to float
%328 = fmul float %327, 0x3FEBB67AE0000000
%329 = load float*, float** %10
%330 = load i32, i32* %17
%331 = add nsw i32 %330, 1
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds float, float* %329, i64 %332
%334 = load float, float* %333
%335 = load float*, float** %10
%336 = load i32, i32* %17
%337 = load i32, i32* %8
%338 = add nsw i32 %336, %337
%339 = add nsw i32 %338, 1
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds float, float* %335, i64 %340
%342 = load float, float* %341
%343 = fsub float %334, %342
%344 = fmul float %328, %343
store float %344, float* %20
%345 = load float, float* %23
%346 = load float, float* %20
%347 = fsub float %345, %346
store float %347, float* %25
%348 = load float, float* %23
%349 = load float, float* %20
%350 = fadd float %348, %349
store float %350, float* %26
%351 = load float, float* %19
%352 = load float, float* %24
%353 = fadd float %351, %352
store float %353, float* %21
%354 = load float, float* %19
%355 = load float, float* %24
%356 = fsub float %354, %355
store float %356, float* %22
%357 = load float*, float** %12
%358 = load i32, i32* %15
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds float, float* %357, i64 %359
%361 = load float, float* %360
%362 = load float, float* %21
%363 = load i32, i32* %14
%364 = sitofp i32 %363 to float
%365 = load float*, float** %12
%366 = load i32, i32* %15
%367 = add nsw i32 %366, 1
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds float, float* %365, i64 %368
%370 = load float, float* %369
%371 = fmul float %364, %370
%372 = load float, float* %25
%373 = fmul float %371, %372
%374 = call float @llvm.fmuladd.f32(float %361, float %362, float %373)
%375 = load float*, float** %11
%376 = load i32, i32* %18
%377 = load i32, i32* %9
%378 = load i32, i32* %8
%379 = mul nsw i32 %377, %378
%380 = add nsw i32 %376, %379
%381 = add nsw i32 %380, 1
%382 = sext i32 %381 to i64
%383 = getelementptr inbounds float, float* %375, i64 %382
store float %374, float* %383
%384 = load float*, float** %12
%385 = load i32, i32* %15
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds float, float* %384, i64 %386
%388 = load float, float* %387
%389 = load float, float* %25
%390 = load i32, i32* %14
%391 = sitofp i32 %390 to float
%392 = load float*, float** %12
%393 = load i32, i32* %15
%394 = add nsw i32 %393, 1
%395 = sext i32 %394 to i64
%396 = getelementptr inbounds float, float* %392, i64 %395
%397 = load float, float* %396
%398 = fmul float %391, %397
%399 = load float, float* %21
%400 = fmul float %398, %399
%401 = fneg float %400
%402 = call float @llvm.fmuladd.f32(float %388, float %389, float %401)
%403 = load float*, float** %11
%404 = load i32, i32* %18
%405 = load i32, i32* %9
%406 = load i32, i32* %8
%407 = mul nsw i32 %405, %406
%408 = add nsw i32 %404, %407
%409 = sext i32 %408 to i64
%410 = getelementptr inbounds float, float* %403, i64 %409
store float %402, float* %410
%411 = load float*, float** %13
%412 = load i32, i32* %15
%413 = sext i32 %412 to i64
%414 = getelementptr inbounds float, float* %411, i64 %413
%415 = load float, float* %414
%416 = load float, float* %22
%417 = load i32, i32* %14
%418 = sitofp i32 %417 to float
%419 = load float*, float** %13
%420 = load i32, i32* %15
%421 = add nsw i32 %420, 1
%422 = sext i32 %421 to i64
%423 = getelementptr inbounds float, float* %419, i64 %422
%424 = load float, float* %423
%425 = fmul float %418, %424
%426 = load float, float* %26
%427 = fmul float %425, %426
%428 = call float @llvm.fmuladd.f32(float %415, float %416, float %427)
%429 = load float*, float** %11
%430 = load i32, i32* %18
%431 = load i32, i32* %9
%432 = mul nsw i32 2, %431
%433 = load i32, i32* %8
%434 = mul nsw i32 %432, %433
%435 = add nsw i32 %430, %434
%436 = add nsw i32 %435, 1
%437 = sext i32 %436 to i64
%438 = getelementptr inbounds float, float* %429, i64 %437
store float %428, float* %438
%439 = load float*, float** %13
%440 = load i32, i32* %15
%441 = sext i32 %440 to i64
%442 = getelementptr inbounds float, float* %439, i64 %441
%443 = load float, float* %442
%444 = load float, float* %26
%445 = load i32, i32* %14
%446 = sitofp i32 %445 to float
%447 = load float*, float** %13
%448 = load i32, i32* %15
%449 = add nsw i32 %448, 1
%450 = sext i32 %449 to i64
%451 = getelementptr inbounds float, float* %447, i64 %450
%452 = load float, float* %451
%453 = fmul float %446, %452
%454 = load float, float* %22
%455 = fmul float %453, %454
%456 = fneg float %455
%457 = call float @llvm.fmuladd.f32(float %443, float %444, float %456)
%458 = load float*, float** %11
%459 = load i32, i32* %18
%460 = load i32, i32* %9
%461 = mul nsw i32 2, %460
%462 = load i32, i32* %8
%463 = mul nsw i32 %461, %462
%464 = add nsw i32 %459, %463
%465 = sext i32 %464 to i64
%466 = getelementptr inbounds float, float* %458, i64 %465
store float %457, float* %466
br label %467
467: ; preds = %220
%468 = load i32, i32* %15
%469 = add nsw i32 %468, 2
store i32 %469, i32* %15
br label %215
470: ; preds = %215
br label %471
471: ; preds = %470
%472 = load i32, i32* %16
%473 = add nsw i32 %472, 1
store i32 %473, i32* %16
br label %210
474: ; preds = %210
br label %475
475: ; preds = %474, %208
ret void
}

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