void vp8cx_vertical_band_2_3_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];
    c = des[dest_pitch * 3];
    des[dest_pitch] = (unsigned char)((a * 85 + 171 * b + 128) >> 8);
    des[dest_pitch * 2] = (unsigned char)((b * 171 + 85 * c + 128) >> 8);
    des++;
  }
}


x86 assembly (clang, -O0):
<vp8cx_vertical_band_2_3_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    11b3 <vp8cx_vertical_band_2_3_scale_c+0xb3>
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    -0x28(%rbp),%rax
imul   $0x3,-0xc(%rbp),%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x20(%rbp)
imul   $0x55,-0x18(%rbp),%eax
imul   $0xab,-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)
imul   $0xab,-0x1c(%rbp),%eax
imul   $0x55,-0x20(%rbp),%ecx
add    %ecx,%eax
add    $0x80,%eax
shr    $0x8,%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x1,%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_vertical_band_2_3_scale_c+0x1d>
pop    %rbp
ret

x86 assembly (clang, -O2):
<vp8cx_vertical_band_2_3_scale_c>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %edx,%edx
je     1528 <vp8cx_vertical_band_2_3_scale_c+0x428>
mov    %edx,%r14d
mov    %esi,%edx
lea    (%rsi,%rsi,2),%r10d
add    %esi,%esi
lea    -0x1(%r14),%eax
xor    %ebp,%ebp
cmp    $0x7,%eax
jae    1130 <vp8cx_vertical_band_2_3_scale_c+0x30>
mov    %rdi,%r8
jmp    14d8 <vp8cx_vertical_band_2_3_scale_c+0x3d8>
lea    (%rdi,%rdx,1),%rbp
lea    (%rdx,%rax,1),%rcx
lea    (%rdi,%rcx,1),%rbx
add    $0x1,%rbx
lea    (%rdi,%rsi,1),%r13
lea    (%rsi,%rax,1),%rcx
lea    0x1(%rdi,%rcx,1),%r15
lea    0x1(%rax,%rdi,1),%r11
lea    (%rdi,%r10,1),%r12
mov    %rax,-0x8(%rsp)
lea    (%rax,%r10,1),%rcx
add    %rdi,%rcx
add    $0x1,%rcx
cmp    %r15,%rbp
setb   -0x9(%rsp)
cmp    %rbx,%r13
setb   %al
cmp    %r11,%rbp
setb   %r9b
cmp    %rdi,%rbx
seta   -0xa(%rsp)
cmp    %rcx,%rbp
setb   %r8b
cmp    %rbx,%r12
setb   %bl
cmp    %r11,%r13
setb   %r11b
cmp    %rdi,%r15
seta   -0xb(%rsp)
cmp    %rcx,%r13
setb   %bpl
cmp    %r15,%r12
setb   %r13b
test   %al,-0x9(%rsp)
jne    11e7 <vp8cx_vertical_band_2_3_scale_c+0xe7>
and    -0xa(%rsp),%r9b
jne    11e7 <vp8cx_vertical_band_2_3_scale_c+0xe7>
and    %bl,%r8b
jne    11e7 <vp8cx_vertical_band_2_3_scale_c+0xe7>
and    -0xb(%rsp),%r11b
jne    11e7 <vp8cx_vertical_band_2_3_scale_c+0xe7>
and    %r13b,%bpl
jne    11e7 <vp8cx_vertical_band_2_3_scale_c+0xe7>
movabs $0x1fffffff0,%rbp
mov    -0x8(%rsp),%rax
cmp    $0xf,%eax
jae    11f1 <vp8cx_vertical_band_2_3_scale_c+0xf1>
xor    %r11d,%r11d
jmp    13ca <vp8cx_vertical_band_2_3_scale_c+0x2ca>
mov    %rdi,%r8
xor    %ebp,%ebp
jmp    14d8 <vp8cx_vertical_band_2_3_scale_c+0x3d8>
lea    0x1(%rax),%r8
mov    %r8,%r11
and    %rbp,%r11
pxor   %xmm12,%xmm12
movdqa 0xdf7(%rip),%xmm10
movdqa 0xdfe(%rip),%xmm8
movdqa 0xe05(%rip),%xmm9
movdqa 0xe0c(%rip),%xmm11
mov    %r11,%rbx
mov    %rdi,%rcx
nopw   0x0(%rax,%rax,1)
movdqu (%rcx),%xmm5
movdqa %xmm5,%xmm6
punpckhbw %xmm12,%xmm6
movdqa %xmm6,%xmm4
punpckhwd %xmm12,%xmm4
punpcklwd %xmm12,%xmm6
punpcklbw %xmm12,%xmm5
movdqa %xmm5,%xmm3
punpckhwd %xmm12,%xmm3
punpcklwd %xmm12,%xmm5
movdqu (%rcx,%rdx,1),%xmm7
movdqa %xmm7,%xmm0
punpcklbw %xmm12,%xmm0
punpckhbw %xmm12,%xmm7
movdqa %xmm7,%xmm1
punpcklwd %xmm12,%xmm1
punpckhwd %xmm12,%xmm7
pmaddwd %xmm10,%xmm6
pmaddwd %xmm10,%xmm4
pmaddwd %xmm8,%xmm7
pmaddwd %xmm8,%xmm1
paddd  %xmm9,%xmm1
paddd  %xmm9,%xmm7
paddd  %xmm7,%xmm4
paddd  %xmm1,%xmm6
psrld  $0x8,%xmm6
psrld  $0x8,%xmm4
pand   %xmm11,%xmm4
pand   %xmm11,%xmm6
packuswb %xmm4,%xmm6
movdqa %xmm0,%xmm2
punpcklwd %xmm12,%xmm2
punpckhwd %xmm12,%xmm0
pmaddwd %xmm10,%xmm5
pmaddwd %xmm10,%xmm3
pmaddwd %xmm8,%xmm0
pmaddwd %xmm8,%xmm2
paddd  %xmm9,%xmm2
paddd  %xmm9,%xmm0
paddd  %xmm0,%xmm3
paddd  %xmm2,%xmm5
psrld  $0x8,%xmm5
psrld  $0x8,%xmm3
pand   %xmm11,%xmm3
pand   %xmm11,%xmm5
packuswb %xmm3,%xmm5
movdqu (%rcx,%r10,1),%xmm3
packuswb %xmm6,%xmm5
movdqa %xmm3,%xmm4
punpckhbw %xmm12,%xmm4
movdqu %xmm5,(%rcx,%rdx,1)
movdqa %xmm4,%xmm5
punpckhwd %xmm12,%xmm5
pmaddwd %xmm10,%xmm5
paddd  %xmm7,%xmm5
punpcklwd %xmm12,%xmm4
punpcklbw %xmm12,%xmm3
pmaddwd %xmm10,%xmm4
paddd  %xmm1,%xmm4
movdqa %xmm3,%xmm1
punpckhwd %xmm12,%xmm1
pmaddwd %xmm10,%xmm1
paddd  %xmm0,%xmm1
punpcklwd %xmm12,%xmm3
pmaddwd %xmm10,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x8,%xmm4
psrld  $0x8,%xmm5
pand   %xmm11,%xmm5
pand   %xmm11,%xmm4
packuswb %xmm5,%xmm4
psrld  $0x8,%xmm3
psrld  $0x8,%xmm1
pand   %xmm11,%xmm1
pand   %xmm11,%xmm3
packuswb %xmm1,%xmm3
packuswb %xmm4,%xmm3
movdqu %xmm3,(%rcx,%rsi,1)
add    $0x10,%rcx
add    $0xfffffffffffffff0,%rbx
jne    1230 <vp8cx_vertical_band_2_3_scale_c+0x130>
cmp    %r11,%r8
je     1528 <vp8cx_vertical_band_2_3_scale_c+0x428>
test   $0x8,%r8b
jne    13ca <vp8cx_vertical_band_2_3_scale_c+0x2ca>
add    %r11,%rdi
mov    %rdi,%r8
mov    %r11d,%ebp
jmp    14d8 <vp8cx_vertical_band_2_3_scale_c+0x3d8>
add    $0x1,%rax
add    $0x8,%rbp
and    %rax,%rbp
lea    (%rdi,%rbp,1),%r8
add    %r11,%rdi
sub    %rbp,%r11
pxor   %xmm0,%xmm0
movdqa 0xc14(%rip),%xmm10
movdqa 0xc1b(%rip),%xmm8
movdqa 0xc22(%rip),%xmm9
movdqa 0xc2a(%rip),%xmm4
cs nopw 0x0(%rax,%rax,1)
movq   (%rdi),%xmm7
punpcklbw %xmm0,%xmm7
movdqa %xmm7,%xmm1
punpckhwd %xmm0,%xmm1
punpcklwd %xmm0,%xmm7
movq   (%rdi,%rdx,1),%xmm2
punpcklbw %xmm0,%xmm2
movdqa %xmm2,%xmm3
punpcklwd %xmm0,%xmm3
punpckhwd %xmm0,%xmm2
movq   (%rdi,%r10,1),%xmm5
punpcklbw %xmm0,%xmm5
movdqa %xmm5,%xmm6
punpckhwd %xmm0,%xmm6
punpcklwd %xmm0,%xmm5
pmaddwd %xmm10,%xmm7
pmaddwd %xmm10,%xmm1
pmaddwd %xmm8,%xmm2
pmaddwd %xmm8,%xmm3
paddd  %xmm9,%xmm3
paddd  %xmm9,%xmm2
paddd  %xmm2,%xmm1
paddd  %xmm3,%xmm7
psrld  $0x8,%xmm7
psrld  $0x8,%xmm1
pand   %xmm4,%xmm1
pand   %xmm4,%xmm7
packuswb %xmm1,%xmm7
packuswb %xmm7,%xmm7
movq   %xmm7,(%rdi,%rdx,1)
pmaddwd %xmm10,%xmm5
pmaddwd %xmm10,%xmm6
paddd  %xmm2,%xmm6
paddd  %xmm3,%xmm5
psrld  $0x8,%xmm5
psrld  $0x8,%xmm6
pand   %xmm4,%xmm6
pand   %xmm4,%xmm5
packuswb %xmm6,%xmm5
packuswb %xmm5,%xmm5
movq   %xmm5,(%rdi,%rsi,1)
add    $0x8,%rdi
add    $0x8,%r11
jne    1410 <vp8cx_vertical_band_2_3_scale_c+0x310>
cmp    %rbp,%rax
je     1528 <vp8cx_vertical_band_2_3_scale_c+0x428>
add    %r8,%rdx
add    %r8,%r10
add    %r8,%rsi
sub    %ebp,%r14d
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
movzbl (%r8,%rdi,1),%ebp
movzbl (%rdx,%rdi,1),%ebx
movzbl (%r10,%rdi,1),%ecx
imul   $0x55,%ebp,%ebp
imul   $0xab,%ebx,%ebx
lea    (%rbx,%rbp,1),%eax
add    $0x80,%eax
mov    %ah,(%rdx,%rdi,1)
imul   $0x55,%ecx,%eax
add    %ebx,%eax
add    $0x80,%eax
mov    %ah,(%rsi,%rdi,1)
add    $0x1,%rdi
cmp    %edi,%r14d
jne    14f0 <vp8cx_vertical_band_2_3_scale_c+0x3f0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @vp8cx_vertical_band_2_3_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 = %62, %3
%14 = load i32, i32* %7
%15 = load i32, i32* %6
%16 = icmp ult i32 %14, %15
br i1 %16, label %17, label %65
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 i8*, i8** %11
%29 = load i32, i32* %5
%30 = mul i32 %29, 3
%31 = zext i32 %30 to i64
%32 = getelementptr inbounds i8, i8* %28, i64 %31
%33 = load i8, i8* %32
%34 = zext i8 %33 to i32
store i32 %34, i32* %10
%35 = load i32, i32* %8
%36 = mul i32 %35, 85
%37 = load i32, i32* %9
%38 = mul i32 171, %37
%39 = add i32 %36, %38
%40 = add i32 %39, 128
%41 = lshr i32 %40, 8
%42 = trunc i32 %41 to i8
%43 = load i8*, i8** %11
%44 = load i32, i32* %5
%45 = zext i32 %44 to i64
%46 = getelementptr inbounds i8, i8* %43, i64 %45
store i8 %42, i8* %46
%47 = load i32, i32* %9
%48 = mul i32 %47, 171
%49 = load i32, i32* %10
%50 = mul i32 85, %49
%51 = add i32 %48, %50
%52 = add i32 %51, 128
%53 = lshr i32 %52, 8
%54 = trunc i32 %53 to i8
%55 = load i8*, i8** %11
%56 = load i32, i32* %5
%57 = mul i32 %56, 2
%58 = zext i32 %57 to i64
%59 = getelementptr inbounds i8, i8* %55, i64 %58
store i8 %54, i8* %59
%60 = load i8*, i8** %11
%61 = getelementptr inbounds i8, i8* %60, i32 1
store i8* %61, i8** %11
br label %62
62: ; preds = %17
%63 = load i32, i32* %7
%64 = add i32 %63, 1
store i32 %64, i32* %7
br label %13
65: ; preds = %13
ret void
}

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