void redcode_ycbcr2rgb_quarterscale(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 += 2) {
    float *o = out + (width / 2) * (height / 2 - y / 2 - 1);
    for (x = 0; x < width; x += 2) {
      int i = y * width + 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_quarterscale>:
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    1330 <redcode_ycbcr2rgb_quarterscale+0x230>
mov    -0x18(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x10(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,-0x64(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    -0x64(%rbp),%edx
mov    %eax,%esi
mov    -0x60(%rbp),%rax
sub    %esi,%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    131d <redcode_ycbcr2rgb_quarterscale+0x21d>
mov    -0x20(%rbp),%eax
imul   -0xc(%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,-0x6c(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x6c(%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,-0x68(%rbp)
mov    -0x24(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x68(%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  0xd79(%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  0xcf5(%rip),%xmm0
movss  %xmm0,(%rax)
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x1c(%rbp)
jmp    1189 <redcode_ycbcr2rgb_quarterscale+0x89>
jmp    1322 <redcode_ycbcr2rgb_quarterscale+0x222>
mov    -0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x20(%rbp)
jmp    1129 <redcode_ycbcr2rgb_quarterscale+0x29>
pop    %rbp
ret

x86 assembly (clang, -O2):
<redcode_ycbcr2rgb_quarterscale>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %esi,-0x6c(%rsp)
mov    %rdi,-0x28(%rsp)
test   %edx,%edx
jle    148b <redcode_ycbcr2rgb_quarterscale+0x38b>
mov    -0x6c(%rsp),%esi
mov    %esi,%eax
shr    $0x1f,%eax
add    %esi,%eax
sar    %eax
mov    %edx,%edi
mov    %rdi,-0x10(%rsp)
shr    %edx
movslq %esi,%r8
lea    -0x1(%r8),%r10
mov    %r10,-0x30(%rsp)
shr    %r10
add    $0x1,%r10
mov    %r10d,%edi
and    $0x3,%edi
test   %rdi,%rdi
mov    $0x4,%esi
cmovne %rdi,%rsi
movslq %eax,%rdi
sub    %rsi,%r10
lea    (%r10,%r10,1),%rax
mov    %rax,-0x48(%rsp)
lea    0x0(,%r10,4),%rax
mov    %rax,-0x50(%rsp)
lea    -0x1(%rdx),%rax
imul   %rdi,%rax
lea    (%rcx,%rax,4),%rax
mov    %rax,-0x68(%rsp)
mov    %rdi,-0x38(%rsp)
lea    0x0(,%rdi,4),%rax
neg    %rax
mov    %rax,-0x18(%rsp)
lea    (%r8,%r8,1),%rax
mov    %rax,-0x20(%rsp)
xor    %r11d,%r11d
mov    $0xfff,%r14d
movss  0xea1(%rip),%xmm9
movss  0xe9d(%rip),%xmm5
movss  0xe98(%rip),%xmm12
xorps  %xmm13,%xmm13
movaps 0xe30(%rip),%xmm10
movdqa 0xe37(%rip),%xmm14
movaps 0xe3f(%rip),%xmm15
movaps 0xe48(%rip),%xmm4
movaps 0xe51(%rip),%xmm7
xorps  %xmm8,%xmm8
movss  0xe54(%rip),%xmm11
xor    %r15d,%r15d
mov    %rdx,-0x58(%rsp)
mov    %rcx,-0x60(%rsp)
jmp    122e <redcode_ycbcr2rgb_quarterscale+0x12e>
nopl   0x0(%rax,%rax,1)
add    $0x2,%r15
mov    -0x18(%rsp),%rax
add    %rax,-0x68(%rsp)
add    -0x20(%rsp),%r11
cmp    -0x10(%rsp),%r15
jae    148b <redcode_ycbcr2rgb_quarterscale+0x38b>
cmpl   $0x0,-0x6c(%rsp)
jle    1210 <redcode_ycbcr2rgb_quarterscale+0x110>
mov    %r15,%rax
shr    %rax
not    %rax
add    %rdx,%rax
imul   -0x38(%rsp),%rax
lea    (%rcx,%rax,4),%r9
mov    -0x28(%rsp),%rax
mov    (%rax),%rdi
mov    0x8(%rax),%rbp
mov    0x10(%rax),%rsi
mov    0x18(%rax),%rax
cmpq   $0x8,-0x30(%rsp)
mov    %rax,-0x8(%rsp)
jae    1280 <redcode_ycbcr2rgb_quarterscale+0x180>
xor    %r12d,%r12d
jmp    13cb <redcode_ycbcr2rgb_quarterscale+0x2cb>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    -0x50(%rsp),%rcx
lea    (%r9,%rcx,4),%r9
lea    (%rax,%r11,4),%r13
mov    %rsi,-0x40(%rsp)
lea    (%rsi,%r11,4),%rsi
lea    0x0(%rbp,%r11,4),%r12
mov    %rdi,%rax
lea    (%rdi,%r11,4),%rcx
mov    -0x68(%rsp),%rbx
xor    %edi,%edi
nopl   0x0(%rax)
movups (%rcx,%rdi,8),%xmm1
movups 0x10(%rcx,%rdi,8),%xmm2
shufps $0x88,%xmm2,%xmm1
andps  %xmm10,%xmm1
cvtdq2ps %xmm1,%xmm0
movups (%r12,%rdi,8),%xmm1
movups 0x10(%r12,%rdi,8),%xmm2
shufps $0x88,%xmm2,%xmm1
andps  %xmm10,%xmm1
paddd  %xmm14,%xmm1
cvtdq2ps %xmm1,%xmm1
movups (%rsi,%rdi,8),%xmm2
movups 0x10(%rsi,%rdi,8),%xmm3
shufps $0x88,%xmm3,%xmm2
andps  %xmm10,%xmm2
paddd  %xmm14,%xmm2
cvtdq2ps %xmm2,%xmm5
movups 0x0(%r13,%rdi,8),%xmm3
movups 0x10(%r13,%rdi,8),%xmm6
shufps $0x88,%xmm6,%xmm3
andps  %xmm10,%xmm3
cvtdq2ps %xmm3,%xmm3
addps  %xmm0,%xmm3
mulps  %xmm15,%xmm1
mulps  %xmm15,%xmm5
mulps  %xmm4,%xmm3
mulps  %xmm7,%xmm3
addps  %xmm3,%xmm5
addps  %xmm3,%xmm1
addps  %xmm8,%xmm3
movaps %xmm5,%xmm8
movaps %xmm3,%xmm6
movaps %xmm5,%xmm2
movaps %xmm5,%xmm0
unpckhps %xmm3,%xmm0
unpcklps %xmm3,%xmm5
shufps $0x55,%xmm3,%xmm3
shufps $0x55,%xmm8,%xmm8
unpcklps %xmm3,%xmm8
movaps %xmm1,%xmm3
shufps $0x55,%xmm1,%xmm3
unpcklps %xmm11,%xmm3
movlhps %xmm3,%xmm8
shufps $0xff,%xmm6,%xmm6
shufps $0xff,%xmm2,%xmm2
unpcklps %xmm6,%xmm2
movaps %xmm1,%xmm3
shufps $0xff,%xmm1,%xmm3
unpcklps %xmm11,%xmm3
movlhps %xmm3,%xmm2
movaps %xmm1,%xmm3
unpckhpd %xmm1,%xmm3
unpcklps %xmm11,%xmm3
movlhps %xmm3,%xmm0
unpcklps %xmm11,%xmm1
movlhps %xmm1,%xmm5
movups %xmm5,(%rbx)
movups %xmm0,0x20(%rbx)
movups %xmm2,0x30(%rbx)
movups %xmm8,0x10(%rbx)
xorps  %xmm8,%xmm8
add    $0x4,%rdi
add    $0x40,%rbx
cmp    %rdi,%r10
jne    12b0 <redcode_ycbcr2rgb_quarterscale+0x1b0>
mov    -0x48(%rsp),%r12
mov    -0x60(%rsp),%rcx
mov    -0x58(%rsp),%rdx
movss  0xc95(%rip),%xmm5
mov    %rax,%rdi
mov    -0x40(%rsp),%rsi
lea    (%r12,%r11,1),%rax
lea    (%rdi,%rax,4),%r13
lea    0x0(,%rax,4),%rdi
add    %rbp,%rdi
lea    (%rsi,%rax,4),%rbx
mov    -0x8(%rsp),%rsi
lea    (%rsi,%rax,4),%rsi
xor    %ebp,%ebp
nopl   (%rax)
mov    0x0(%r13,%rbp,4),%eax
and    %r14d,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
mov    (%rdi,%rbp,4),%eax
and    %r14d,%eax
add    $0xfffff800,%eax
xorps  %xmm1,%xmm1
cvtsi2ss %eax,%xmm1
mov    (%rbx,%rbp,4),%eax
and    %r14d,%eax
add    $0xfffff800,%eax
xorps  %xmm2,%xmm2
cvtsi2ss %eax,%xmm2
mov    (%rsi,%rbp,4),%eax
and    %r14d,%eax
xorps  %xmm3,%xmm3
cvtsi2ss %eax,%xmm3
addss  %xmm0,%xmm3
mulss  %xmm9,%xmm1
mulss  %xmm9,%xmm2
mulss  %xmm5,%xmm3
mulss  %xmm12,%xmm3
addss  %xmm3,%xmm2
movss  %xmm2,(%r9,%rbp,8)
addss  %xmm3,%xmm1
addss  %xmm13,%xmm3
movss  %xmm3,0x4(%r9,%rbp,8)
movss  %xmm1,0x8(%r9,%rbp,8)
movl   $0x3f800000,0xc(%r9,%rbp,8)
80 3f
lea    (%r12,%rbp,1),%rax
add    $0x2,%rax
add    $0x2,%rbp
cmp    %r8,%rax
jl     13f0 <redcode_ycbcr2rgb_quarterscale+0x2f0>
jmp    1210 <redcode_ycbcr2rgb_quarterscale+0x110>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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