void imdct_step3_iter0_loop(int n, float *e, int i_off, int k_off, float *A) {
  float *ee0 = e + i_off;
  float *ee2 = ee0 + k_off;
  int i;
  ;
  for (i = (n >> 2); i > 0; --i) {
    float k00_20, k01_21;
    k00_20 = ee0[0] - ee2[0];
    k01_21 = ee0[-1] - ee2[-1];
    ee0[0] += ee2[0];
    ee0[-1] += ee2[-1];
    ee2[0] = k00_20 * A[0] - k01_21 * A[1];
    ee2[-1] = k01_21 * A[0] + k00_20 * A[1];
    A += 8;
    k00_20 = ee0[-2] - ee2[-2];
    k01_21 = ee0[-3] - ee2[-3];
    ee0[-2] += ee2[-2];
    ee0[-3] += ee2[-3];
    ee2[-2] = k00_20 * A[0] - k01_21 * A[1];
    ee2[-3] = k01_21 * A[0] + k00_20 * A[1];
    A += 8;
    k00_20 = ee0[-4] - ee2[-4];
    k01_21 = ee0[-5] - ee2[-5];
    ee0[-4] += ee2[-4];
    ee0[-5] += ee2[-5];
    ee2[-4] = k00_20 * A[0] - k01_21 * A[1];
    ee2[-5] = k01_21 * A[0] + k00_20 * A[1];
    A += 8;
    k00_20 = ee0[-6] - ee2[-6];
    k01_21 = ee0[-7] - ee2[-7];
    ee0[-6] += ee2[-6];
    ee0[-7] += ee2[-7];
    ee2[-6] = k00_20 * A[0] - k01_21 * A[1];
    ee2[-7] = k01_21 * A[0] + k00_20 * A[1];
    A += 8;
    ee0 -= 8;
    ee2 -= 8;
  }
}


x86 assembly (clang, -O0):
<imdct_step3_iter0_loop>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movslq -0x18(%rbp),%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x4(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x0,-0x34(%rbp)
jle    14a2 <imdct_step3_iter0_loop+0x3a2>
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x30(%rbp),%rax
subss  (%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x28(%rbp),%rax
movss  -0x4(%rax),%xmm0
mov    -0x30(%rbp),%rax
subss  -0x4(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  (%rax),%xmm0
movss  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movss  -0x4(%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  -0x4(%rax),%xmm0
movss  %xmm0,-0x4(%rax)
movss  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm2
movss  -0x3c(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulss  0x4(%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x3c(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm2
movss  -0x38(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulss  0x4(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,-0x4(%rax)
mov    -0x20(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
movss  -0x8(%rax),%xmm0
mov    -0x30(%rbp),%rax
subss  -0x8(%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x28(%rbp),%rax
movss  -0xc(%rax),%xmm0
mov    -0x30(%rbp),%rax
subss  -0xc(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x30(%rbp),%rax
movss  -0x8(%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  -0x8(%rax),%xmm0
movss  %xmm0,-0x8(%rax)
mov    -0x30(%rbp),%rax
movss  -0xc(%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  -0xc(%rax),%xmm0
movss  %xmm0,-0xc(%rax)
movss  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm2
movss  -0x3c(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulss  0x4(%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,-0x8(%rax)
movss  -0x3c(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm2
movss  -0x38(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulss  0x4(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,-0xc(%rax)
mov    -0x20(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
movss  -0x10(%rax),%xmm0
mov    -0x30(%rbp),%rax
subss  -0x10(%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x28(%rbp),%rax
movss  -0x14(%rax),%xmm0
mov    -0x30(%rbp),%rax
subss  -0x14(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x30(%rbp),%rax
movss  -0x10(%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  -0x10(%rax),%xmm0
movss  %xmm0,-0x10(%rax)
mov    -0x30(%rbp),%rax
movss  -0x14(%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  -0x14(%rax),%xmm0
movss  %xmm0,-0x14(%rax)
movss  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm2
movss  -0x3c(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulss  0x4(%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,-0x10(%rax)
movss  -0x3c(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm2
movss  -0x38(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulss  0x4(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,-0x14(%rax)
mov    -0x20(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
movss  -0x18(%rax),%xmm0
mov    -0x30(%rbp),%rax
subss  -0x18(%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x28(%rbp),%rax
movss  -0x1c(%rax),%xmm0
mov    -0x30(%rbp),%rax
subss  -0x1c(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x30(%rbp),%rax
movss  -0x18(%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  -0x18(%rax),%xmm0
movss  %xmm0,-0x18(%rax)
mov    -0x30(%rbp),%rax
movss  -0x1c(%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  -0x1c(%rax),%xmm0
movss  %xmm0,-0x1c(%rax)
movss  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm2
movss  -0x3c(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulss  0x4(%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,-0x18(%rax)
movss  -0x3c(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm2
movss  -0x38(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulss  0x4(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,-0x1c(%rax)
mov    -0x20(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffe0,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%rax
add    $0xffffffffffffffe0,%rax
mov    %rax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x34(%rbp)
jmp    1144 <imdct_step3_iter0_loop+0x44>
pop    %rbp
ret

x86 assembly (clang, -O2):
<imdct_step3_iter0_loop>:
cmp    $0x4,%edi
jl     12ce <imdct_step3_iter0_loop+0x1ce>
movslq %edx,%rax
lea    (%rsi,%rax,4),%rax
shr    $0x2,%edi
movslq %ecx,%rcx
add    $0x1,%edi
nopl   0x0(%rax)
movss  -0x4(%rax),%xmm0
movss  (%rax),%xmm1
movss  (%rax,%rcx,4),%xmm2
movaps %xmm1,%xmm3
subss  %xmm2,%xmm3
movaps %xmm0,%xmm4
subss  -0x4(%rax,%rcx,4),%xmm4
addss  %xmm2,%xmm1
movss  %xmm1,(%rax)
addss  -0x4(%rax,%rcx,4),%xmm0
movss  %xmm0,-0x4(%rax)
movss  0x4(%r8),%xmm0
mulss  %xmm4,%xmm0
movss  (%r8),%xmm1
mulss  %xmm3,%xmm1
subss  %xmm0,%xmm1
movss  %xmm1,(%rax,%rcx,4)
mulss  0x4(%r8),%xmm3
mulss  (%r8),%xmm4
addss  %xmm3,%xmm4
movss  %xmm4,-0x4(%rax,%rcx,4)
movss  -0xc(%rax),%xmm0
movss  -0x8(%rax),%xmm1
movss  -0x8(%rax,%rcx,4),%xmm2
movaps %xmm1,%xmm3
subss  %xmm2,%xmm3
movaps %xmm0,%xmm4
subss  -0xc(%rax,%rcx,4),%xmm4
addss  %xmm2,%xmm1
movss  %xmm1,-0x8(%rax)
addss  -0xc(%rax,%rcx,4),%xmm0
movss  %xmm0,-0xc(%rax)
movss  0x24(%r8),%xmm0
mulss  %xmm4,%xmm0
movss  0x20(%r8),%xmm1
mulss  %xmm3,%xmm1
subss  %xmm0,%xmm1
movss  %xmm1,-0x8(%rax,%rcx,4)
mulss  0x24(%r8),%xmm3
mulss  0x20(%r8),%xmm4
addss  %xmm3,%xmm4
movss  %xmm4,-0xc(%rax,%rcx,4)
movss  -0x14(%rax),%xmm0
movss  -0x10(%rax),%xmm1
movss  -0x10(%rax,%rcx,4),%xmm2
movaps %xmm1,%xmm3
subss  %xmm2,%xmm3
movaps %xmm0,%xmm4
subss  -0x14(%rax,%rcx,4),%xmm4
addss  %xmm2,%xmm1
movss  %xmm1,-0x10(%rax)
addss  -0x14(%rax,%rcx,4),%xmm0
movss  %xmm0,-0x14(%rax)
movss  0x44(%r8),%xmm0
mulss  %xmm4,%xmm0
movss  0x40(%r8),%xmm1
mulss  %xmm3,%xmm1
subss  %xmm0,%xmm1
movss  %xmm1,-0x10(%rax,%rcx,4)
mulss  0x44(%r8),%xmm3
mulss  0x40(%r8),%xmm4
addss  %xmm3,%xmm4
movss  %xmm4,-0x14(%rax,%rcx,4)
movss  -0x1c(%rax),%xmm0
movss  -0x18(%rax),%xmm1
movss  -0x18(%rax,%rcx,4),%xmm2
movaps %xmm1,%xmm3
subss  %xmm2,%xmm3
movaps %xmm0,%xmm4
subss  -0x1c(%rax,%rcx,4),%xmm4
addss  %xmm2,%xmm1
movss  %xmm1,-0x18(%rax)
addss  -0x1c(%rax,%rcx,4),%xmm0
movss  %xmm0,-0x1c(%rax)
movss  0x64(%r8),%xmm0
mulss  %xmm4,%xmm0
movss  0x60(%r8),%xmm1
mulss  %xmm3,%xmm1
subss  %xmm0,%xmm1
movss  %xmm1,-0x18(%rax,%rcx,4)
mulss  0x64(%r8),%xmm3
mulss  0x60(%r8),%xmm4
addss  %xmm3,%xmm4
movss  %xmm4,-0x1c(%rax,%rcx,4)
add    $0xffffffffffffffe0,%rax
add    $0xffffffff,%edi
sub    $0xffffffffffffff80,%r8
cmp    $0x1,%edi
ja     1120 <imdct_step3_iter0_loop+0x20>
ret

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

LLVM IR (-O2):
define void @imdct_step3_iter0_loop(i32 %0, float* nocapture %1, i32 %2, i32 %3, float* nocapture %4) {
%6 = sext i32 %2 to i64
%7 = getelementptr inbounds float, float* %1, i64 %6
%8 = icmp sgt i32 %0, 3
br i1 %8, label %9, label %116
9: ; preds = %5
%10 = lshr i32 %0, 2
%11 = sext i32 %3 to i64
%12 = getelementptr inbounds float, float* %7, i64 %11
br label %13
13: ; preds = %9, %13
%14 = phi float* [ %111, %13 ], [ %4, %9 ]
%15 = phi float* [ %112, %13 ], [ %7, %9 ]
%16 = phi i32 [ %114, %13 ], [ %10, %9 ]
%17 = phi float* [ %113, %13 ], [ %12, %9 ]
%18 = load float, float* %15
%19 = load float, float* %17
%20 = fsub float %18, %19
%21 = getelementptr inbounds float, float* %15, i64 -1
%22 = load float, float* %21
%23 = getelementptr inbounds float, float* %17, i64 -1
%24 = load float, float* %23
%25 = fsub float %22, %24
%26 = fadd float %18, %19
store float %26, float* %15
%27 = load float, float* %23
%28 = fadd float %22, %27
store float %28, float* %21
%29 = load float, float* %14
%30 = getelementptr inbounds float, float* %14, i64 1
%31 = load float, float* %30
%32 = fneg float %25
%33 = fmul float %31, %32
%34 = tail call float @llvm.fmuladd.f32(float %20, float %29, float %33)
store float %34, float* %17
%35 = load float, float* %14
%36 = load float, float* %30
%37 = fmul float %20, %36
%38 = tail call float @llvm.fmuladd.f32(float %25, float %35, float %37)
store float %38, float* %23
%39 = getelementptr inbounds float, float* %14, i64 8
%40 = getelementptr inbounds float, float* %15, i64 -2
%41 = load float, float* %40
%42 = getelementptr inbounds float, float* %17, i64 -2
%43 = load float, float* %42
%44 = fsub float %41, %43
%45 = getelementptr inbounds float, float* %15, i64 -3
%46 = load float, float* %45
%47 = getelementptr inbounds float, float* %17, i64 -3
%48 = load float, float* %47
%49 = fsub float %46, %48
%50 = fadd float %41, %43
store float %50, float* %40
%51 = load float, float* %47
%52 = fadd float %46, %51
store float %52, float* %45
%53 = load float, float* %39
%54 = getelementptr inbounds float, float* %14, i64 9
%55 = load float, float* %54
%56 = fneg float %49
%57 = fmul float %55, %56
%58 = tail call float @llvm.fmuladd.f32(float %44, float %53, float %57)
store float %58, float* %42
%59 = load float, float* %39
%60 = load float, float* %54
%61 = fmul float %44, %60
%62 = tail call float @llvm.fmuladd.f32(float %49, float %59, float %61)
store float %62, float* %47
%63 = getelementptr inbounds float, float* %14, i64 16
%64 = getelementptr inbounds float, float* %15, i64 -4
%65 = load float, float* %64
%66 = getelementptr inbounds float, float* %17, i64 -4
%67 = load float, float* %66
%68 = fsub float %65, %67
%69 = getelementptr inbounds float, float* %15, i64 -5
%70 = load float, float* %69
%71 = getelementptr inbounds float, float* %17, i64 -5
%72 = load float, float* %71
%73 = fsub float %70, %72
%74 = fadd float %65, %67
store float %74, float* %64
%75 = load float, float* %71
%76 = fadd float %70, %75
store float %76, float* %69
%77 = load float, float* %63
%78 = getelementptr inbounds float, float* %14, i64 17
%79 = load float, float* %78
%80 = fneg float %73
%81 = fmul float %79, %80
%82 = tail call float @llvm.fmuladd.f32(float %68, float %77, float %81)
store float %82, float* %66
%83 = load float, float* %63
%84 = load float, float* %78
%85 = fmul float %68, %84
%86 = tail call float @llvm.fmuladd.f32(float %73, float %83, float %85)
store float %86, float* %71
%87 = getelementptr inbounds float, float* %14, i64 24
%88 = getelementptr inbounds float, float* %15, i64 -6
%89 = load float, float* %88
%90 = getelementptr inbounds float, float* %17, i64 -6
%91 = load float, float* %90
%92 = fsub float %89, %91
%93 = getelementptr inbounds float, float* %15, i64 -7
%94 = load float, float* %93
%95 = getelementptr inbounds float, float* %17, i64 -7
%96 = load float, float* %95
%97 = fsub float %94, %96
%98 = fadd float %89, %91
store float %98, float* %88
%99 = load float, float* %95
%100 = fadd float %94, %99
store float %100, float* %93
%101 = load float, float* %87
%102 = getelementptr inbounds float, float* %14, i64 25
%103 = load float, float* %102
%104 = fneg float %97
%105 = fmul float %103, %104
%106 = tail call float @llvm.fmuladd.f32(float %92, float %101, float %105)
store float %106, float* %90
%107 = load float, float* %87
%108 = load float, float* %102
%109 = fmul float %92, %108
%110 = tail call float @llvm.fmuladd.f32(float %97, float %107, float %109)
store float %110, float* %95
%111 = getelementptr inbounds float, float* %14, i64 32
%112 = getelementptr inbounds float, float* %15, i64 -8
%113 = getelementptr inbounds float, float* %17, i64 -8
%114 = add nsw i32 %16, -1
%115 = icmp ugt i32 %16, 1
br i1 %115, label %13, label %116
116: ; preds = %13, %5
ret void
}