void vp8cx_last_vertical_band_3_4_scale_c(unsigned char *dest,
                                          unsigned int dest_pitch,
                                          unsigned int dest_width) {
  unsigned int i;
  unsigned int a, b, c;
  unsigned char *des = dest;
  for (i = 0; i < dest_width; ++i) {
    a = des[0];
    b = des[dest_pitch];
    des[dest_pitch] = (unsigned char)((a * 64 + b * 192 + 128) >> 8);
    c = des[dest_pitch * 2];
    des[dest_pitch * 2] = (unsigned char)((b + c + 1) >> 1);
    des[dest_pitch * 3] = (unsigned char)(c);
    des++;
  }
}


x86 assembly (clang, -O0):
<vp8cx_last_vertical_band_3_4_scale_c>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jae    11c0 <vp8cx_last_vertical_band_3_4_scale_c+0xc0>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x18(%rbp)
mov    -0x28(%rbp),%rax
mov    -0xc(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
shl    $0x6,%eax
imul   $0xc0,-0x1c(%rbp),%ecx
add    %ecx,%eax
add    $0x80,%eax
shr    $0x8,%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
mov    -0xc(%rbp),%ecx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x20(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x20(%rbp),%eax
add    $0x1,%eax
shr    $0x1,%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x1,%ecx
mov    %ecx,%ecx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
imul   $0x3,-0xc(%rbp),%ecx
mov    %ecx,%ecx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    111d <vp8cx_last_vertical_band_3_4_scale_c+0x1d>
pop    %rbp
ret

x86 assembly (clang, -O2):
<vp8cx_last_vertical_band_3_4_scale_c>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %edx,%edx
je     133a <vp8cx_last_vertical_band_3_4_scale_c+0x23a>
mov    %edx,%r15d
mov    %esi,%edx
lea    (%rsi,%rsi,1),%ecx
lea    (%rsi,%rsi,2),%r10d
lea    -0x1(%r15),%eax
xor    %r12d,%r12d
cmp    $0x7,%eax
jae    1132 <vp8cx_last_vertical_band_3_4_scale_c+0x32>
mov    %rdi,%r8
jmp    12f1 <vp8cx_last_vertical_band_3_4_scale_c+0x1f1>
lea    (%rdi,%rdx,1),%rsi
lea    (%rdx,%rax,1),%rbp
add    %rdi,%rbp
add    $0x1,%rbp
lea    (%rdi,%rcx,1),%r8
lea    (%rcx,%rax,1),%rbx
lea    0x1(%rdi,%rbx,1),%r13
lea    (%rdi,%r10,1),%r14
lea    (%r10,%rax,1),%rbx
add    %rdi,%rbx
add    $0x1,%rbx
mov    %rax,-0x8(%rsp)
lea    (%rax,%rdi,1),%r12
add    $0x1,%r12
cmp    %r13,%rsi
setb   -0x9(%rsp)
cmp    %rbp,%r8
setb   %al
cmp    %rbx,%rsi
setb   %r9b
cmp    %rbp,%r14
setb   -0xa(%rsp)
cmp    %r12,%rsi
setb   %sil
cmp    %rdi,%rbp
seta   -0xb(%rsp)
cmp    %rbx,%r8
setb   %r11b
cmp    %r13,%r14
setb   -0xc(%rsp)
cmp    %r12,%r8
setb   %bpl
cmp    %rdi,%r13
seta   %r8b
cmp    %r12,%r14
setb   %r14b
cmp    %rdi,%rbx
seta   %r13b
test   %al,-0x9(%rsp)
jne    12eb <vp8cx_last_vertical_band_3_4_scale_c+0x1eb>
and    -0xa(%rsp),%r9b
jne    12eb <vp8cx_last_vertical_band_3_4_scale_c+0x1eb>
and    -0xb(%rsp),%sil
jne    12eb <vp8cx_last_vertical_band_3_4_scale_c+0x1eb>
and    -0xc(%rsp),%r11b
jne    12eb <vp8cx_last_vertical_band_3_4_scale_c+0x1eb>
and    %r8b,%bpl
jne    12eb <vp8cx_last_vertical_band_3_4_scale_c+0x1eb>
and    %r13b,%r14b
jne    12eb <vp8cx_last_vertical_band_3_4_scale_c+0x1eb>
movabs $0x1fffffff0,%r12
mov    -0x8(%rsp),%r9
cmp    $0xf,%r9d
jae    1345 <vp8cx_last_vertical_band_3_4_scale_c+0x245>
xor    %r11d,%r11d
add    $0x1,%r9
add    $0x8,%r12
and    %r9,%r12
lea    (%rdi,%r12,1),%r8
add    %r11,%rdi
sub    %r12,%r11
pxor   %xmm0,%xmm0
movdqa 0xdc4(%rip),%xmm8
movdqa 0xdcc(%rip),%xmm2
movdqa 0xdd4(%rip),%xmm3
nopl   0x0(%rax)
movq   (%rdi),%xmm4
punpcklbw %xmm0,%xmm4
movdqa %xmm4,%xmm6
punpcklwd %xmm0,%xmm6
punpckhwd %xmm0,%xmm4
movq   (%rdi,%rdx,1),%xmm5
movdqa %xmm5,%xmm7
punpcklbw %xmm0,%xmm7
movdqa %xmm7,%xmm1
punpcklwd %xmm0,%xmm1
punpckhwd %xmm0,%xmm7
pslld  $0x6,%xmm4
pslld  $0x6,%xmm6
pmaddwd %xmm8,%xmm7
pmaddwd %xmm8,%xmm1
paddd  %xmm2,%xmm4
paddd  %xmm7,%xmm4
paddd  %xmm2,%xmm6
paddd  %xmm1,%xmm6
psrld  $0x8,%xmm6
psrld  $0x8,%xmm4
pand   %xmm3,%xmm4
pand   %xmm3,%xmm6
packuswb %xmm4,%xmm6
packuswb %xmm6,%xmm6
movq   %xmm6,(%rdi,%rdx,1)
mov    (%rdi,%rcx,1),%rbp
movq   %rbp,%xmm1
pavgb  %xmm5,%xmm1
movq   %xmm1,(%rdi,%rcx,1)
mov    %rbp,(%rdi,%r10,1)
add    $0x8,%rdi
add    $0x8,%r11
jne    1250 <vp8cx_last_vertical_band_3_4_scale_c+0x150>
cmp    %r12,%r9
jne    12f1 <vp8cx_last_vertical_band_3_4_scale_c+0x1f1>
jmp    133a <vp8cx_last_vertical_band_3_4_scale_c+0x23a>
mov    %rdi,%r8
xor    %r12d,%r12d
add    %r8,%rdx
add    %r8,%rcx
add    %r8,%r10
sub    %r12d,%r15d
xor    %edi,%edi
nop
movzbl (%r8,%rdi,1),%ebp
movzbl (%rdx,%rdi,1),%ebx
shl    $0x6,%ebp
lea    (%rbx,%rbx,2),%esi
shl    $0x6,%esi
lea    (%rsi,%rbp,1),%eax
add    $0x80,%eax
mov    %ah,(%rdx,%rdi,1)
movzbl (%rcx,%rdi,1),%eax
lea    (%rbx,%rax,1),%esi
add    $0x1,%esi
shr    %esi
mov    %sil,(%rcx,%rdi,1)
mov    %al,(%r10,%rdi,1)
add    $0x1,%rdi
cmp    %edi,%r15d
jne    1300 <vp8cx_last_vertical_band_3_4_scale_c+0x200>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x1(%r9),%r14
mov    %r14,%r11
and    %r12,%r11
pxor   %xmm11,%xmm11
movdqa 0xca3(%rip),%xmm8
movdqa 0xcaa(%rip),%xmm9
movdqa 0xcb1(%rip),%xmm10
mov    %r11,%rbx
mov    %rdi,%rsi
cs nopw 0x0(%rax,%rax,1)
nop
movdqu (%rsi),%xmm6
movdqa %xmm6,%xmm5
punpcklbw %xmm11,%xmm5
movdqa %xmm5,%xmm4
punpcklwd %xmm11,%xmm4
punpckhwd %xmm11,%xmm5
punpckhbw %xmm11,%xmm6
movdqa %xmm6,%xmm1
punpcklwd %xmm11,%xmm1
punpckhwd %xmm11,%xmm6
movdqu (%rsi,%rdx,1),%xmm12
movdqa %xmm12,%xmm2
punpcklbw %xmm11,%xmm2
movdqa %xmm2,%xmm3
punpcklwd %xmm11,%xmm3
punpckhwd %xmm11,%xmm2
movdqa %xmm12,%xmm7
punpckhbw %xmm11,%xmm7
movdqa %xmm7,%xmm0
punpcklwd %xmm11,%xmm0
punpckhwd %xmm11,%xmm7
pslld  $0x6,%xmm6
pslld  $0x6,%xmm1
pslld  $0x6,%xmm5
pslld  $0x6,%xmm4
pmaddwd %xmm8,%xmm7
pmaddwd %xmm8,%xmm0
pmaddwd %xmm8,%xmm2
pmaddwd %xmm8,%xmm3
paddd  %xmm9,%xmm6
paddd  %xmm7,%xmm6
paddd  %xmm9,%xmm1
paddd  %xmm0,%xmm1
paddd  %xmm9,%xmm5
paddd  %xmm2,%xmm5
paddd  %xmm9,%xmm4
paddd  %xmm3,%xmm4
psrld  $0x8,%xmm4
psrld  $0x8,%xmm5
psrld  $0x8,%xmm1
psrld  $0x8,%xmm6
pand   %xmm10,%xmm6
pand   %xmm10,%xmm1
packuswb %xmm6,%xmm1
pand   %xmm10,%xmm5
pand   %xmm10,%xmm4
packuswb %xmm5,%xmm4
packuswb %xmm1,%xmm4
movdqu %xmm4,(%rsi,%rdx,1)
movdqu (%rsi,%rcx,1),%xmm0
pavgb  %xmm0,%xmm12
movdqu %xmm12,(%rsi,%rcx,1)
movdqu %xmm0,(%rsi,%r10,1)
add    $0x10,%rsi
add    $0xfffffffffffffff0,%rbx
jne    1380 <vp8cx_last_vertical_band_3_4_scale_c+0x280>
cmp    %r11,%r14
je     133a <vp8cx_last_vertical_band_3_4_scale_c+0x23a>
test   $0x8,%r14b
jne    121a <vp8cx_last_vertical_band_3_4_scale_c+0x11a>
add    %r11,%rdi
mov    %rdi,%r8
mov    %r11d,%r12d
jmp    12f1 <vp8cx_last_vertical_band_3_4_scale_c+0x1f1>

LLVM IR (-O0):
define void @vp8cx_last_vertical_band_3_4_scale_c(i8* %0, i32 %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i8*
store i8* %0, i8** %4
store i32 %1, i32* %5
store i32 %2, i32* %6
%12 = load i8*, i8** %4
store i8* %12, i8** %11
store i32 0, i32* %7
br label %13
13: ; preds = %67, %3
%14 = load i32, i32* %7
%15 = load i32, i32* %6
%16 = icmp ult i32 %14, %15
br i1 %16, label %17, label %70
17: ; preds = %13
%18 = load i8*, i8** %11
%19 = getelementptr inbounds i8, i8* %18, i64 0
%20 = load i8, i8* %19
%21 = zext i8 %20 to i32
store i32 %21, i32* %8
%22 = load i8*, i8** %11
%23 = load i32, i32* %5
%24 = zext i32 %23 to i64
%25 = getelementptr inbounds i8, i8* %22, i64 %24
%26 = load i8, i8* %25
%27 = zext i8 %26 to i32
store i32 %27, i32* %9
%28 = load i32, i32* %8
%29 = mul i32 %28, 64
%30 = load i32, i32* %9
%31 = mul i32 %30, 192
%32 = add i32 %29, %31
%33 = add i32 %32, 128
%34 = lshr i32 %33, 8
%35 = trunc i32 %34 to i8
%36 = load i8*, i8** %11
%37 = load i32, i32* %5
%38 = zext i32 %37 to i64
%39 = getelementptr inbounds i8, i8* %36, i64 %38
store i8 %35, i8* %39
%40 = load i8*, i8** %11
%41 = load i32, i32* %5
%42 = mul i32 %41, 2
%43 = zext i32 %42 to i64
%44 = getelementptr inbounds i8, i8* %40, i64 %43
%45 = load i8, i8* %44
%46 = zext i8 %45 to i32
store i32 %46, i32* %10
%47 = load i32, i32* %9
%48 = load i32, i32* %10
%49 = add i32 %47, %48
%50 = add i32 %49, 1
%51 = lshr i32 %50, 1
%52 = trunc i32 %51 to i8
%53 = load i8*, i8** %11
%54 = load i32, i32* %5
%55 = mul i32 %54, 2
%56 = zext i32 %55 to i64
%57 = getelementptr inbounds i8, i8* %53, i64 %56
store i8 %52, i8* %57
%58 = load i32, i32* %10
%59 = trunc i32 %58 to i8
%60 = load i8*, i8** %11
%61 = load i32, i32* %5
%62 = mul i32 %61, 3
%63 = zext i32 %62 to i64
%64 = getelementptr inbounds i8, i8* %60, i64 %63
store i8 %59, i8* %64
%65 = load i8*, i8** %11
%66 = getelementptr inbounds i8, i8* %65, i32 1
store i8* %66, i8** %11
br label %67
67: ; preds = %17
%68 = load i32, i32* %7
%69 = add i32 %68, 1
store i32 %69, i32* %7
br label %13
70: ; preds = %13
ret void
}

LLVM IR (-O2):
define void @vp8cx_last_vertical_band_3_4_scale_c(i8* nocapture %0, i32 %1, i32 %2) {
%4 = icmp eq i32 %2, 0
br i1 %4, label %164, label %5
5: ; preds = %3
%6 = zext i32 %1 to i64
%7 = shl i32 %1, 1
%8 = zext i32 %7 to i64
%9 = mul i32 %1, 3
%10 = zext i32 %9 to i64
%11 = add i32 %2, -1
%12 = zext i32 %11 to i64
%13 = add nuw nsw i64 %12, 1
%14 = icmp ult i32 %11, 7
br i1 %14, label %136, label %15
15: ; preds = %5
%16 = getelementptr i8, i8* %0, i64 %6
%17 = add i32 %2, -1
%18 = zext i32 %17 to i64
%19 = add nuw nsw i64 %6, %18
%20 = add nuw nsw i64 %19, 1
%21 = getelementptr i8, i8* %0, i64 %20
%22 = getelementptr i8, i8* %0, i64 %8
%23 = add nuw nsw i64 %8, %18
%24 = add nuw nsw i64 %23, 1
%25 = getelementptr i8, i8* %0, i64 %24
%26 = getelementptr i8, i8* %0, i64 %10
%27 = add nuw nsw i64 %10, %18
%28 = add nuw nsw i64 %27, 1
%29 = getelementptr i8, i8* %0, i64 %28
%30 = add nuw nsw i64 %18, 1
%31 = getelementptr i8, i8* %0, i64 %30
%32 = icmp ult i8* %16, %25
%33 = icmp ult i8* %22, %21
%34 = and i1 %32, %33
%35 = icmp ult i8* %16, %29
%36 = icmp ult i8* %26, %21
%37 = and i1 %35, %36
%38 = or i1 %34, %37
%39 = icmp ult i8* %16, %31
%40 = icmp ugt i8* %21, %0
%41 = and i1 %39, %40
%42 = or i1 %38, %41
%43 = icmp ult i8* %22, %29
%44 = icmp ult i8* %26, %25
%45 = and i1 %43, %44
%46 = or i1 %42, %45
%47 = icmp ult i8* %22, %31
%48 = icmp ugt i8* %25, %0
%49 = and i1 %47, %48
%50 = or i1 %46, %49
%51 = icmp ult i8* %26, %31
%52 = icmp ugt i8* %29, %0
%53 = and i1 %51, %52
%54 = or i1 %50, %53
br i1 %54, label %136, label %55
55: ; preds = %15
%56 = icmp ult i32 %11, 15
br i1 %56, label %96, label %57
57: ; preds = %55
%58 = and i64 %13, 8589934576
br label %59
59: ; preds = %59, %57
%60 = phi i64 [ 0, %57 ], [ %87, %59 ]
%61 = getelementptr i8, i8* %0, i64 %60
%62 = bitcast i8* %61 to <16 x i8>*
%63 = load <16 x i8>, <16 x i8>* %62
%64 = zext <16 x i8> %63 to <16 x i32>
%65 = getelementptr inbounds i8, i8* %61, i64 %6
%66 = bitcast i8* %65 to <16 x i8>*
%67 = load <16 x i8>, <16 x i8>* %66
%68 = zext <16 x i8> %67 to <16 x i32>
%69 = shl nuw nsw <16 x i32> %64, <i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6>
%70 = mul nuw nsw <16 x i32> %68, <i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192>
%71 = add nuw nsw <16 x i32> %69, <i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128>
%72 = add nuw nsw <16 x i32> %71, %70
%73 = lshr <16 x i32> %72, <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
%74 = trunc <16 x i32> %73 to <16 x i8>
%75 = bitcast i8* %65 to <16 x i8>*
store <16 x i8> %74, <16 x i8>* %75
%76 = getelementptr inbounds i8, i8* %61, i64 %8
%77 = bitcast i8* %76 to <16 x i8>*
%78 = load <16 x i8>, <16 x i8>* %77
%79 = zext <16 x i8> %78 to <16 x i32>
%80 = add nuw nsw <16 x i32> %68, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
%81 = add nuw nsw <16 x i32> %80, %79
%82 = lshr <16 x i32> %81, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
%83 = trunc <16 x i32> %82 to <16 x i8>
%84 = bitcast i8* %76 to <16 x i8>*
store <16 x i8> %83, <16 x i8>* %84
%85 = getelementptr inbounds i8, i8* %61, i64 %10
%86 = bitcast i8* %85 to <16 x i8>*
store <16 x i8> %78, <16 x i8>* %86
%87 = add nuw i64 %60, 16
%88 = icmp eq i64 %87, %58
br i1 %88, label %89, label %59
89: ; preds = %59
%90 = icmp eq i64 %13, %58
br i1 %90, label %164, label %91
91: ; preds = %89
%92 = trunc i64 %58 to i32
%93 = getelementptr i8, i8* %0, i64 %58
%94 = and i64 %13, 8
%95 = icmp eq i64 %94, 0
br i1 %95, label %136, label %96
96: ; preds = %55, %91
%97 = phi i64 [ %58, %91 ], [ 0, %55 ]
%98 = add i32 %2, -1
%99 = zext i32 %98 to i64
%100 = add nuw nsw i64 %99, 1
%101 = and i64 %100, 8589934584
%102 = getelementptr i8, i8* %0, i64 %101
%103 = trunc i64 %101 to i32
br label %104
104: ; preds = %104, %96
%105 = phi i64 [ %97, %96 ], [ %132, %104 ]
%106 = getelementptr i8, i8* %0, i64 %105
%107 = bitcast i8* %106 to <8 x i8>*
%108 = load <8 x i8>, <8 x i8>* %107
%109 = zext <8 x i8> %108 to <8 x i32>
%110 = getelementptr inbounds i8, i8* %106, i64 %6
%111 = bitcast i8* %110 to <8 x i8>*
%112 = load <8 x i8>, <8 x i8>* %111
%113 = zext <8 x i8> %112 to <8 x i32>
%114 = shl nuw nsw <8 x i32> %109, <i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6>
%115 = mul nuw nsw <8 x i32> %113, <i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192, i32 192>
%116 = add nuw nsw <8 x i32> %114, <i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128>
%117 = add nuw nsw <8 x i32> %116, %115
%118 = lshr <8 x i32> %117, <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
%119 = trunc <8 x i32> %118 to <8 x i8>
%120 = bitcast i8* %110 to <8 x i8>*
store <8 x i8> %119, <8 x i8>* %120
%121 = getelementptr inbounds i8, i8* %106, i64 %8
%122 = bitcast i8* %121 to <8 x i8>*
%123 = load <8 x i8>, <8 x i8>* %122
%124 = zext <8 x i8> %123 to <8 x i32>
%125 = add nuw nsw <8 x i32> %113, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
%126 = add nuw nsw <8 x i32> %125, %124
%127 = lshr <8 x i32> %126, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
%128 = trunc <8 x i32> %127 to <8 x i8>
%129 = bitcast i8* %121 to <8 x i8>*
store <8 x i8> %128, <8 x i8>* %129
%130 = getelementptr inbounds i8, i8* %106, i64 %10
%131 = bitcast i8* %130 to <8 x i8>*
store <8 x i8> %123, <8 x i8>* %131
%132 = add nuw i64 %105, 8
%133 = icmp eq i64 %132, %101
br i1 %133, label %134, label %104
134: ; preds = %104
%135 = icmp eq i64 %100, %101
br i1 %135, label %164, label %136
136: ; preds = %15, %5, %91, %134
%137 = phi i8* [ %0, %5 ], [ %0, %15 ], [ %93, %91 ], [ %102, %134 ]
%138 = phi i32 [ 0, %5 ], [ 0, %15 ], [ %92, %91 ], [ %103, %134 ]
br label %139
139: ; preds = %136, %139
%140 = phi i8* [ %161, %139 ], [ %137, %136 ]
%141 = phi i32 [ %162, %139 ], [ %138, %136 ]
%142 = load i8, i8* %140
%143 = zext i8 %142 to i32
%144 = getelementptr inbounds i8, i8* %140, i64 %6
%145 = load i8, i8* %144
%146 = zext i8 %145 to i32
%147 = shl nuw nsw i32 %143, 6
%148 = mul nuw nsw i32 %146, 192
%149 = add nuw nsw i32 %147, 128
%150 = add nuw nsw i32 %149, %148
%151 = lshr i32 %150, 8
%152 = trunc i32 %151 to i8
store i8 %152, i8* %144
%153 = getelementptr inbounds i8, i8* %140, i64 %8
%154 = load i8, i8* %153
%155 = zext i8 %154 to i32
%156 = add nuw nsw i32 %146, 1
%157 = add nuw nsw i32 %156, %155
%158 = lshr i32 %157, 1
%159 = trunc i32 %158 to i8
store i8 %159, i8* %153
%160 = getelementptr inbounds i8, i8* %140, i64 %10
store i8 %154, i8* %160
%161 = getelementptr inbounds i8, i8* %140, i64 1
%162 = add nuw i32 %141, 1
%163 = icmp eq i32 %162, %2
br i1 %163, label %164, label %139
164: ; preds = %139, %89, %134, %3
ret void
}