void redcode_ycbcr2rgb_halfscale(int **planes, int width, int height,
                                 float *out) {
  int x, y;
  int pix_max = 4096;
  int mask = pix_max - 1;
  for (y = 0; y < height; y++) {
    float *o = out + width * (height - y - 1);
    for (x = 0; x < width; x++) {
      int i = y * height + x;
      float y1 = (planes[0][i] & mask);
      float cb = (planes[1][i] & mask) - pix_max / 2;
      float cr = (planes[2][i] & mask) - pix_max / 2;
      float y2 = (planes[3][i] & mask);
      float b_ = cb / (pix_max / 2);
      float r_ = cr / (pix_max / 2);
      float g_ = 0.0;
      float y = (y1 + y2) / 2 / pix_max;
      *o++ = r_ + y;
      *o++ = g_ + y;
      *o++ = b_ + y;
      *o++ = 1.0;
    }
  }
}


x86 assembly (clang, -O0):
<redcode_ycbcr2rgb_halfscale>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
movl   $0x1000,-0x24(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x28(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1304 <redcode_ycbcr2rgb_halfscale+0x204>
mov    -0x18(%rbp),%rax
mov    -0xc(%rbp),%ecx
mov    -0x10(%rbp),%edx
sub    -0x20(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    12f1 <redcode_ycbcr2rgb_halfscale+0x1f1>
mov    -0x20(%rbp),%eax
imul   -0x10(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    -0x28(%rbp),%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    -0x28(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x5c(%rbp),%eax
sub    %ecx,%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    -0x28(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%eax
sub    %ecx,%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
mov    0x18(%rax),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    -0x28(%rbp),%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x3c(%rbp),%xmm0
mov    -0x24(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x40(%rbp),%xmm0
mov    -0x24(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x44(%rbp),%xmm0
movss  0xda5(%rip),%xmm1
divss  %xmm1,%xmm0
cvtsi2ssl -0x24(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x4c(%rbp),%xmm0
addss  -0x54(%rbp),%xmm0
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x30(%rbp)
movss  %xmm0,(%rax)
movss  -0x50(%rbp),%xmm0
addss  -0x54(%rbp),%xmm0
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x30(%rbp)
movss  %xmm0,(%rax)
movss  -0x48(%rbp),%xmm0
addss  -0x54(%rbp),%xmm0
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x30(%rbp)
movss  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x30(%rbp)
movss  0xd21(%rip),%xmm0
movss  %xmm0,(%rax)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    115d <redcode_ycbcr2rgb_halfscale+0x5d>
jmp    12f6 <redcode_ycbcr2rgb_halfscale+0x1f6>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1129 <redcode_ycbcr2rgb_halfscale+0x29>
pop    %rbp
ret

x86 assembly (clang, -O2):
<redcode_ycbcr2rgb_halfscale>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rcx,-0x18(%rsp)
mov    %edx,%eax
mov    %rdi,-0x10(%rsp)
mov    %rax,-0x40(%rsp)
test   %eax,%eax
jle    1421 <redcode_ycbcr2rgb_halfscale+0x321>
mov    %esi,%ecx
mov    -0x40(%rsp),%rdx
mov    %edx,%eax
mov    %rax,-0x8(%rsp)
mov    %esi,%r13d
mov    %r13d,%eax
and    $0xfffffffc,%eax
mov    %rax,-0x30(%rsp)
lea    0x0(,%rax,4),%rax
mov    %rax,-0x38(%rsp)
lea    -0x1(%rdx),%esi
imul   %ecx,%esi
lea    0x0(,%r13,4),%r12
and    $0xfffffffffffffff0,%r12
xor    %r14d,%r14d
mov    $0xfff,%r11d
movss  0xee4(%rip),%xmm10
movss  0xedf(%rip),%xmm8
movss  0xedb(%rip),%xmm6
xorps  %xmm13,%xmm13
movaps 0xe73(%rip),%xmm11
movdqa 0xe7a(%rip),%xmm14
movaps 0xe82(%rip),%xmm15
movaps 0xe8b(%rip),%xmm0
movaps 0xe94(%rip),%xmm4
xorps  %xmm7,%xmm7
movss  0xe98(%rip),%xmm12
xor    %r15d,%r15d
mov    %ecx,-0x44(%rsp)
jmp    11e7 <redcode_ycbcr2rgb_halfscale+0xe7>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r15
sub    %ecx,%esi
mov    -0x8(%rsp),%rax
add    %rax,%r14
cmp    %rax,%r15
je     1421 <redcode_ycbcr2rgb_halfscale+0x321>
test   %ecx,%ecx
jle    11d0 <redcode_ycbcr2rgb_halfscale+0xd0>
mov    %r15d,%eax
not    %eax
mov    -0x40(%rsp),%rdx
add    %edx,%eax
imul   %ecx,%eax
cltq
mov    -0x18(%rsp),%rbp
lea    0x0(,%rax,4),%rbx
add    %rbp,%rbx
mov    -0x10(%rsp),%rdi
mov    (%rdi),%r9
mov    0x8(%rdi),%r10
mov    0x10(%rdi),%rax
mov    0x18(%rdi),%rdi
cmp    $0x4,%ecx
jae    1230 <redcode_ycbcr2rgb_halfscale+0x130>
mov    %rdi,%rbp
xor    %edi,%edi
jmp    137e <redcode_ycbcr2rgb_halfscale+0x27e>
nop
movslq %esi,%rdx
lea    0x0(,%rdx,4),%rdx
add    %rbp,%rdx
mov    -0x38(%rsp),%rcx
lea    (%rbx,%rcx,4),%rbx
mov    %rdi,%rbp
lea    (%rdi,%r14,4),%rcx
mov    %rax,-0x28(%rsp)
lea    (%rax,%r14,4),%r8
mov    %r10,-0x20(%rsp)
lea    (%r10,%r14,4),%rdi
mov    %r9,%rax
lea    (%r9,%r14,4),%r9
xor    %r10d,%r10d
nopw   0x0(%rax,%rax,1)
movups (%r9,%r10,1),%xmm1
andps  %xmm11,%xmm1
cvtdq2ps %xmm1,%xmm6
movups (%rdi,%r10,1),%xmm1
andps  %xmm11,%xmm1
paddd  %xmm14,%xmm1
cvtdq2ps %xmm1,%xmm1
movups (%r8,%r10,1),%xmm2
andps  %xmm11,%xmm2
paddd  %xmm14,%xmm2
cvtdq2ps %xmm2,%xmm5
movups (%rcx,%r10,1),%xmm3
andps  %xmm11,%xmm3
cvtdq2ps %xmm3,%xmm3
addps  %xmm6,%xmm3
mulps  %xmm15,%xmm1
mulps  %xmm15,%xmm5
mulps  %xmm0,%xmm3
mulps  %xmm4,%xmm3
addps  %xmm3,%xmm5
addps  %xmm3,%xmm1
addps  %xmm7,%xmm3
movaps %xmm5,%xmm9
movaps %xmm5,%xmm6
unpckhps %xmm3,%xmm6
movaps %xmm3,%xmm8
movaps %xmm5,%xmm2
unpcklps %xmm3,%xmm5
shufps $0x55,%xmm3,%xmm3
shufps $0x55,%xmm9,%xmm9
unpcklps %xmm3,%xmm9
movaps %xmm1,%xmm3
shufps $0x55,%xmm1,%xmm3
unpcklps %xmm12,%xmm3
movlhps %xmm3,%xmm9
movaps %xmm1,%xmm3
unpckhpd %xmm1,%xmm3
unpcklps %xmm12,%xmm3
movlhps %xmm3,%xmm6
shufps $0xff,%xmm8,%xmm8
shufps $0xff,%xmm2,%xmm2
unpcklps %xmm8,%xmm2
xorps  %xmm7,%xmm7
movaps %xmm1,%xmm3
shufps $0xff,%xmm1,%xmm3
unpcklps %xmm12,%xmm3
movlhps %xmm3,%xmm2
unpcklps %xmm12,%xmm1
movlhps %xmm1,%xmm5
movups %xmm5,(%rdx,%r10,4)
movups %xmm2,0x30(%rdx,%r10,4)
movups %xmm6,0x20(%rdx,%r10,4)
movups %xmm9,0x10(%rdx,%r10,4)
add    $0x10,%r10
cmp    %r10,%r12
jne    1270 <redcode_ycbcr2rgb_halfscale+0x170>
mov    -0x30(%rsp),%rcx
mov    %rcx,%rdi
cmp    %r13,%rcx
mov    -0x44(%rsp),%ecx
movss  0xcf5(%rip),%xmm8
movss  0xcf1(%rip),%xmm6
mov    -0x20(%rsp),%r10
mov    %rax,%r9
mov    -0x28(%rsp),%rax
je     11d0 <redcode_ycbcr2rgb_halfscale+0xd0>
lea    (%r9,%r14,4),%r8
lea    (%r10,%r14,4),%r9
lea    (%rax,%r14,4),%r10
lea    0x0(%rbp,%r14,4),%rbp
nop
mov    (%r8,%rdi,4),%eax
and    %r11d,%eax
xorps  %xmm1,%xmm1
cvtsi2ss %eax,%xmm1
mov    (%r9,%rdi,4),%eax
and    %r11d,%eax
add    $0xfffff800,%eax
xorps  %xmm2,%xmm2
cvtsi2ss %eax,%xmm2
mov    (%r10,%rdi,4),%eax
and    %r11d,%eax
add    $0xfffff800,%eax
xorps  %xmm3,%xmm3
cvtsi2ss %eax,%xmm3
mov    0x0(%rbp,%rdi,4),%eax
and    %r11d,%eax
xorps  %xmm5,%xmm5
cvtsi2ss %eax,%xmm5
addss  %xmm1,%xmm5
mulss  %xmm10,%xmm2
mulss  %xmm10,%xmm3
mulss  %xmm8,%xmm5
mulss  %xmm6,%xmm5
addss  %xmm5,%xmm3
movss  %xmm3,(%rbx)
addss  %xmm5,%xmm2
addss  %xmm13,%xmm5
movss  %xmm5,0x4(%rbx)
movss  %xmm2,0x8(%rbx)
movl   $0x3f800000,0xc(%rbx)
add    $0x1,%rdi
add    $0x10,%rbx
cmp    %rdi,%r13
jne    1390 <redcode_ycbcr2rgb_halfscale+0x290>
jmp    11d0 <redcode_ycbcr2rgb_halfscale+0xd0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @redcode_ycbcr2rgb_halfscale(i32** %0, i32 %1, i32 %2, float* %3) {
%5 = alloca i32**
%6 = alloca i32
%7 = alloca i32
%8 = alloca float*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca float*
%14 = alloca i32
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca float
%21 = alloca float
%22 = alloca float
store i32** %0, i32*** %5
store i32 %1, i32* %6
store i32 %2, i32* %7
store float* %3, float** %8
store i32 4096, i32* %11
%23 = load i32, i32* %11
%24 = sub nsw i32 %23, 1
store i32 %24, i32* %12
store i32 0, i32* %10
br label %25
25: ; preds = %133, %4
%26 = load i32, i32* %10
%27 = load i32, i32* %7
%28 = icmp slt i32 %26, %27
br i1 %28, label %29, label %136
29: ; preds = %25
%30 = load float*, float** %8
%31 = load i32, i32* %6
%32 = load i32, i32* %7
%33 = load i32, i32* %10
%34 = sub nsw i32 %32, %33
%35 = sub nsw i32 %34, 1
%36 = mul nsw i32 %31, %35
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds float, float* %30, i64 %37
store float* %38, float** %13
store i32 0, i32* %9
br label %39
39: ; preds = %129, %29
%40 = load i32, i32* %9
%41 = load i32, i32* %6
%42 = icmp slt i32 %40, %41
br i1 %42, label %43, label %132
43: ; preds = %39
%44 = load i32, i32* %10
%45 = load i32, i32* %7
%46 = mul nsw i32 %44, %45
%47 = load i32, i32* %9
%48 = add nsw i32 %46, %47
store i32 %48, i32* %14
%49 = load i32**, i32*** %5
%50 = getelementptr inbounds i32*, i32** %49, i64 0
%51 = load i32*, i32** %50
%52 = load i32, i32* %14
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds i32, i32* %51, i64 %53
%55 = load i32, i32* %54
%56 = load i32, i32* %12
%57 = and i32 %55, %56
%58 = sitofp i32 %57 to float
store float %58, float* %15
%59 = load i32**, i32*** %5
%60 = getelementptr inbounds i32*, i32** %59, i64 1
%61 = load i32*, i32** %60
%62 = load i32, i32* %14
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds i32, i32* %61, i64 %63
%65 = load i32, i32* %64
%66 = load i32, i32* %12
%67 = and i32 %65, %66
%68 = load i32, i32* %11
%69 = sdiv i32 %68, 2
%70 = sub nsw i32 %67, %69
%71 = sitofp i32 %70 to float
store float %71, float* %16
%72 = load i32**, i32*** %5
%73 = getelementptr inbounds i32*, i32** %72, i64 2
%74 = load i32*, i32** %73
%75 = load i32, i32* %14
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds i32, i32* %74, i64 %76
%78 = load i32, i32* %77
%79 = load i32, i32* %12
%80 = and i32 %78, %79
%81 = load i32, i32* %11
%82 = sdiv i32 %81, 2
%83 = sub nsw i32 %80, %82
%84 = sitofp i32 %83 to float
store float %84, float* %17
%85 = load i32**, i32*** %5
%86 = getelementptr inbounds i32*, i32** %85, i64 3
%87 = load i32*, i32** %86
%88 = load i32, i32* %14
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds i32, i32* %87, i64 %89
%91 = load i32, i32* %90
%92 = load i32, i32* %12
%93 = and i32 %91, %92
%94 = sitofp i32 %93 to float
store float %94, float* %18
%95 = load float, float* %16
%96 = load i32, i32* %11
%97 = sdiv i32 %96, 2
%98 = sitofp i32 %97 to float
%99 = fdiv float %95, %98
store float %99, float* %19
%100 = load float, float* %17
%101 = load i32, i32* %11
%102 = sdiv i32 %101, 2
%103 = sitofp i32 %102 to float
%104 = fdiv float %100, %103
store float %104, float* %20
store float 0.000000e+00, float* %21
%105 = load float, float* %15
%106 = load float, float* %18
%107 = fadd float %105, %106
%108 = fdiv float %107, 2.000000e+00
%109 = load i32, i32* %11
%110 = sitofp i32 %109 to float
%111 = fdiv float %108, %110
store float %111, float* %22
%112 = load float, float* %20
%113 = load float, float* %22
%114 = fadd float %112, %113
%115 = load float*, float** %13
%116 = getelementptr inbounds float, float* %115, i32 1
store float* %116, float** %13
store float %114, float* %115
%117 = load float, float* %21
%118 = load float, float* %22
%119 = fadd float %117, %118
%120 = load float*, float** %13
%121 = getelementptr inbounds float, float* %120, i32 1
store float* %121, float** %13
store float %119, float* %120
%122 = load float, float* %19
%123 = load float, float* %22
%124 = fadd float %122, %123
%125 = load float*, float** %13
%126 = getelementptr inbounds float, float* %125, i32 1
store float* %126, float** %13
store float %124, float* %125
%127 = load float*, float** %13
%128 = getelementptr inbounds float, float* %127, i32 1
store float* %128, float** %13
store float 1.000000e+00, float* %127
br label %129
129: ; preds = %43
%130 = load i32, i32* %9
%131 = add nsw i32 %130, 1
store i32 %131, i32* %9
br label %39
132: ; preds = %39
br label %133
133: ; preds = %132
%134 = load i32, i32* %10
%135 = add nsw i32 %134, 1
store i32 %135, i32* %10
br label %25
136: ; preds = %25
ret void
}

LLVM IR (-O2):
define void @redcode_ycbcr2rgb_halfscale(i32** nocapture %0, i32 %1, i32 %2, float* nocapture writeonly %3) {
%5 = icmp sgt i32 %2, 0
br i1 %5, label %6, label %120
6: ; preds = %4
%7 = icmp sgt i32 %1, 0
%8 = getelementptr inbounds i32*, i32** %0, i64 1
%9 = getelementptr inbounds i32*, i32** %0, i64 2
%10 = getelementptr inbounds i32*, i32** %0, i64 3
%11 = zext i32 %2 to i64
%12 = zext i32 %2 to i64
%13 = zext i32 %1 to i64
%14 = icmp ult i32 %1, 4
%15 = and i64 %13, 4294967292
%16 = shl nuw nsw i64 %15, 2
%17 = icmp eq i64 %15, %13
br label %18
18: ; preds = %6, %117
%19 = phi i64 [ 0, %6 ], [ %118, %117 ]
br i1 %7, label %20, label %117
20: ; preds = %18
%21 = trunc i64 %19 to i32
%22 = xor i32 %21, -1
%23 = add i32 %22, %2
%24 = mul nsw i32 %23, %1
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds float, float* %3, i64 %25
%27 = mul nsw i64 %19, %11
%28 = load i32*, i32** %0
%29 = load i32*, i32** %8
%30 = load i32*, i32** %9
%31 = load i32*, i32** %10
br i1 %14, label %78, label %32
32: ; preds = %20
%33 = getelementptr float, float* %26, i64 %16
%34 = getelementptr float, float* %26, i64 3
%35 = getelementptr inbounds float, float* %34, i64 -3
br label %36
36: ; preds = %36, %32
%37 = phi i64 [ 0, %32 ], [ %75, %36 ]
%38 = shl i64 %37, 2
%39 = add nuw nsw i64 %37, %27
%40 = getelementptr inbounds i32, i32* %28, i64 %39
%41 = bitcast i32* %40 to <4 x i32>*
%42 = load <4 x i32>, <4 x i32>* %41
%43 = and <4 x i32> %42, <i32 4095, i32 4095, i32 4095, i32 4095>
%44 = sitofp <4 x i32> %43 to <4 x float>
%45 = getelementptr inbounds i32, i32* %29, i64 %39
%46 = bitcast i32* %45 to <4 x i32>*
%47 = load <4 x i32>, <4 x i32>* %46
%48 = and <4 x i32> %47, <i32 4095, i32 4095, i32 4095, i32 4095>
%49 = add nsw <4 x i32> %48, <i32 -2048, i32 -2048, i32 -2048, i32 -2048>
%50 = sitofp <4 x i32> %49 to <4 x float>
%51 = getelementptr inbounds i32, i32* %30, i64 %39
%52 = bitcast i32* %51 to <4 x i32>*
%53 = load <4 x i32>, <4 x i32>* %52
%54 = and <4 x i32> %53, <i32 4095, i32 4095, i32 4095, i32 4095>
%55 = add nsw <4 x i32> %54, <i32 -2048, i32 -2048, i32 -2048, i32 -2048>
%56 = sitofp <4 x i32> %55 to <4 x float>
%57 = getelementptr inbounds i32, i32* %31, i64 %39
%58 = bitcast i32* %57 to <4 x i32>*
%59 = load <4 x i32>, <4 x i32>* %58
%60 = and <4 x i32> %59, <i32 4095, i32 4095, i32 4095, i32 4095>
%61 = sitofp <4 x i32> %60 to <4 x float>
%62 = fmul <4 x float> %50, <float 0x3F40000000000000, float 0x3F40000000000000, float 0x3F40000000000000, float 0x3F40000000000000>
%63 = fmul <4 x float> %56, <float 0x3F40000000000000, float 0x3F40000000000000, float 0x3F40000000000000, float 0x3F40000000000000>
%64 = fadd <4 x float> %44, %61
%65 = fmul <4 x float> %64, <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>
%66 = fmul <4 x float> %65, <float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000, float 0x3F30000000000000>
%67 = fadd <4 x float> %63, %66
%68 = fadd <4 x float> %66, zeroinitializer
%69 = fadd <4 x float> %62, %66
%70 = getelementptr inbounds float, float* %35, i64 %38
%71 = bitcast float* %70 to <16 x float>*
%72 = shufflevector <4 x float> %67, <4 x float> %68, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%73 = shufflevector <4 x float> %69, <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%74 = shufflevector <8 x float> %72, <8 x float> %73, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>
store <16 x float> %74, <16 x float>* %71
%75 = add nuw i64 %37, 4
%76 = icmp eq i64 %75, %15
br i1 %76, label %77, label %36
77: ; preds = %36
br i1 %17, label %117, label %78
78: ; preds = %20, %77
%79 = phi i64 [ 0, %20 ], [ %15, %77 ]
%80 = phi float* [ %26, %20 ], [ %33, %77 ]
br label %81
81: ; preds = %78, %81
%82 = phi i64 [ %115, %81 ], [ %79, %78 ]
%83 = phi float* [ %114, %81 ], [ %80, %78 ]
%84 = add nuw nsw i64 %82, %27
%85 = getelementptr inbounds i32, i32* %28, i64 %84
%86 = load i32, i32* %85
%87 = and i32 %86, 4095
%88 = sitofp i32 %87 to float
%89 = getelementptr inbounds i32, i32* %29, i64 %84
%90 = load i32, i32* %89
%91 = and i32 %90, 4095
%92 = add nsw i32 %91, -2048
%93 = sitofp i32 %92 to float
%94 = getelementptr inbounds i32, i32* %30, i64 %84
%95 = load i32, i32* %94
%96 = and i32 %95, 4095
%97 = add nsw i32 %96, -2048
%98 = sitofp i32 %97 to float
%99 = getelementptr inbounds i32, i32* %31, i64 %84
%100 = load i32, i32* %99
%101 = and i32 %100, 4095
%102 = sitofp i32 %101 to float
%103 = fmul float %93, 0x3F40000000000000
%104 = fmul float %98, 0x3F40000000000000
%105 = fadd float %88, %102
%106 = fmul float %105, 5.000000e-01
%107 = fmul float %106, 0x3F30000000000000
%108 = fadd float %104, %107
%109 = getelementptr inbounds float, float* %83, i64 1
store float %108, float* %83
%110 = fadd float %107, 0.000000e+00
%111 = getelementptr inbounds float, float* %83, i64 2
store float %110, float* %109
%112 = fadd float %103, %107
%113 = getelementptr inbounds float, float* %83, i64 3
store float %112, float* %111
%114 = getelementptr inbounds float, float* %83, i64 4
store float 1.000000e+00, float* %113
%115 = add nuw nsw i64 %82, 1
%116 = icmp eq i64 %115, %13
br i1 %116, label %117, label %81
117: ; preds = %81, %77, %18
%118 = add nuw nsw i64 %19, 1
%119 = icmp eq i64 %118, %12
br i1 %119, label %120, label %18
120: ; preds = %117, %4
ret void
}