void vp8cx_last_vertical_band_2_3_scale_c(unsigned char *dest,
                                          unsigned int dest_pitch,
                                          unsigned int dest_width) {
  unsigned int i;
  unsigned int a, b;
  unsigned char *des = dest;
  for (i = 0; i < dest_width; ++i) {
    a = des[0];
    b = des[dest_pitch];
    des[dest_pitch] = (unsigned char)((a * 85 + 171 * b + 128) >> 8);
    des[dest_pitch * 2] = (unsigned char)(b);
    des++;
  }
}


x86 assembly (clang, -O0):
<vp8cx_last_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    1190 <vp8cx_last_vertical_band_2_3_scale_c+0x90>
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)
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)
mov    -0x1c(%rbp),%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_last_vertical_band_2_3_scale_c+0x1d>
pop    %rbp
ret

x86 assembly (clang, -O2):
<vp8cx_last_vertical_band_2_3_scale_c>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %edx,%edx
je     12fd <vp8cx_last_vertical_band_2_3_scale_c+0x1fd>
mov    %edx,%r12d
mov    %esi,%r14d
mov    %esi,%ebx
add    %r14d,%r14d
lea    -0x1(%r12),%r8d
xor    %r9d,%r9d
cmp    $0x7,%r8d
jb     1258 <vp8cx_last_vertical_band_2_3_scale_c+0x158>
lea    (%rdi,%rbx,1),%rax
mov    %rbx,%r13
lea    (%rbx,%r8,1),%rcx
add    %rdi,%rcx
add    $0x1,%rcx
lea    (%rdi,%r14,1),%rsi
lea    (%r14,%r8,1),%rbp
add    %rdi,%rbp
add    $0x1,%rbp
lea    (%r8,%rdi,1),%rbx
add    $0x1,%rbx
cmp    %rbp,%rax
setb   %r11b
cmp    %rcx,%rsi
setb   %r15b
cmp    %rbx,%rax
setb   %al
cmp    %rdi,%rcx
seta   %r10b
cmp    %rbx,%rsi
setb   %cl
cmp    %rdi,%rbp
seta   %sil
test   %r15b,%r11b
jne    15b1 <vp8cx_last_vertical_band_2_3_scale_c+0x4b1>
and    %r10b,%al
mov    %r13,%rbx
jne    1258 <vp8cx_last_vertical_band_2_3_scale_c+0x158>
and    %sil,%cl
jne    1258 <vp8cx_last_vertical_band_2_3_scale_c+0x158>
movabs $0x1fffffff0,%r9
cmp    $0xf,%r8d
jae    1308 <vp8cx_last_vertical_band_2_3_scale_c+0x208>
xor    %ecx,%ecx
add    $0x1,%r8
add    $0x8,%r9
and    %r8,%r9
lea    (%rdi,%r9,1),%rdx
add    %rcx,%rdi
sub    %r9,%rcx
pxor   %xmm0,%xmm0
movdqa 0xe2b(%rip),%xmm1
movdqa 0xe33(%rip),%xmm2
movdqa 0xe3b(%rip),%xmm3
cs nopw 0x0(%rax,%rax,1)
nop
movq   (%rdi),%xmm4
punpcklbw %xmm0,%xmm4
mov    (%rdi,%rbx,1),%rax
movq   %rax,%xmm5
punpcklbw %xmm0,%xmm5
movdqa %xmm4,%xmm6
punpcklwd %xmm5,%xmm6
pmaddwd %xmm1,%xmm6
punpckhwd %xmm5,%xmm4
pmaddwd %xmm1,%xmm4
paddd  %xmm2,%xmm4
paddd  %xmm2,%xmm6
psrld  $0x8,%xmm6
psrld  $0x8,%xmm4
pand   %xmm3,%xmm4
pand   %xmm3,%xmm6
packuswb %xmm4,%xmm6
packuswb %xmm6,%xmm6
movq   %xmm6,(%rdi,%rbx,1)
mov    %rax,(%rdi,%r14,1)
add    $0x8,%rdi
add    $0x8,%rcx
jne    11f0 <vp8cx_last_vertical_band_2_3_scale_c+0xf0>
cmp    %r9,%r8
jne    125b <vp8cx_last_vertical_band_2_3_scale_c+0x15b>
jmp    12fd <vp8cx_last_vertical_band_2_3_scale_c+0x1fd>
mov    %rdi,%rdx
mov    %r12d,%ecx
sub    %r9d,%ecx
mov    %r9d,%eax
not    %eax
test   $0x1,%cl
je     1292 <vp8cx_last_vertical_band_2_3_scale_c+0x192>
movzbl (%rdx),%ecx
movzbl (%rdx,%rbx,1),%esi
imul   $0x55,%ecx,%ecx
imul   $0xab,%esi,%edi
add    %edi,%ecx
add    $0x80,%ecx
mov    %ch,(%rdx,%rbx,1)
mov    %sil,(%rdx,%r14,1)
add    $0x1,%rdx
add    $0x1,%r9d
add    %r12d,%eax
je     12fd <vp8cx_last_vertical_band_2_3_scale_c+0x1fd>
lea    (%rbx,%rdx,1),%rax
add    $0x1,%rax
lea    (%r14,%rdx,1),%rcx
add    $0x1,%rcx
sub    %r9d,%r12d
xor    %esi,%esi
nopl   0x0(%rax)
movzbl (%rdx,%rsi,1),%edi
movzbl -0x1(%rax,%rsi,1),%ebp
imul   $0x55,%edi,%edi
imul   $0xab,%ebp,%ebx
add    %edi,%ebx
add    $0x80,%ebx
mov    %bh,-0x1(%rax,%rsi,1)
mov    %bpl,-0x1(%rcx,%rsi,1)
movzbl 0x1(%rdx,%rsi,1),%edi
movzbl (%rax,%rsi,1),%ebp
imul   $0x55,%edi,%edi
imul   $0xab,%ebp,%ebx
add    %edi,%ebx
add    $0x80,%ebx
mov    %bh,(%rax,%rsi,1)
mov    %bpl,(%rcx,%rsi,1)
add    $0x2,%rsi
cmp    %esi,%r12d
jne    12b0 <vp8cx_last_vertical_band_2_3_scale_c+0x1b0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x1(%r8),%r10
mov    %r10,%rcx
and    %r9,%rcx
lea    -0x10(%rcx),%rax
mov    %rax,%r11
shr    $0x4,%r11
add    $0x1,%r11
test   %rax,%rax
je     15bc <vp8cx_last_vertical_band_2_3_scale_c+0x4bc>
mov    %r11,%rax
and    $0xfffffffffffffffe,%rax
lea    (%r14,%rdi,1),%rbp
add    $0x10,%rbp
lea    (%rbx,%rdi,1),%rsi
add    $0x10,%rsi
xor    %ebx,%ebx
pxor   %xmm8,%xmm8
movdqa 0xcaf(%rip),%xmm9
movdqa 0xcb7(%rip),%xmm2
movdqa 0xcbf(%rip),%xmm3
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movdqu (%rdi,%rbx,1),%xmm0
movdqa %xmm0,%xmm4
punpckhbw %xmm8,%xmm4
punpcklbw %xmm8,%xmm0
movdqu -0x10(%rsi,%rbx,1),%xmm1
movdqa %xmm1,%xmm5
punpckhbw %xmm8,%xmm5
movdqa %xmm1,%xmm7
punpcklbw %xmm8,%xmm7
movdqa %xmm0,%xmm6
punpcklwd %xmm7,%xmm6
pmaddwd %xmm9,%xmm6
punpckhwd %xmm7,%xmm0
pmaddwd %xmm9,%xmm0
movdqa %xmm4,%xmm7
punpcklwd %xmm5,%xmm7
pmaddwd %xmm9,%xmm7
punpckhwd %xmm5,%xmm4
pmaddwd %xmm9,%xmm4
paddd  %xmm2,%xmm4
paddd  %xmm2,%xmm7
paddd  %xmm2,%xmm0
paddd  %xmm2,%xmm6
psrld  $0x8,%xmm6
psrld  $0x8,%xmm0
psrld  $0x8,%xmm7
psrld  $0x8,%xmm4
pand   %xmm3,%xmm4
pand   %xmm3,%xmm7
packuswb %xmm4,%xmm7
pand   %xmm3,%xmm0
pand   %xmm3,%xmm6
packuswb %xmm0,%xmm6
packuswb %xmm7,%xmm6
movdqu %xmm6,-0x10(%rsi,%rbx,1)
movdqu %xmm1,-0x10(%rbp,%rbx,1)
movdqu 0x10(%rdi,%rbx,1),%xmm4
movdqa %xmm4,%xmm7
punpckhbw %xmm8,%xmm7
punpcklbw %xmm8,%xmm4
movdqu (%rsi,%rbx,1),%xmm5
movdqa %xmm5,%xmm1
punpckhbw %xmm8,%xmm1
movdqa %xmm5,%xmm0
punpcklbw %xmm8,%xmm0
movdqa %xmm4,%xmm6
punpcklwd %xmm0,%xmm6
pmaddwd %xmm9,%xmm6
punpckhwd %xmm0,%xmm4
pmaddwd %xmm9,%xmm4
movdqa %xmm7,%xmm0
punpcklwd %xmm1,%xmm0
pmaddwd %xmm9,%xmm0
punpckhwd %xmm1,%xmm7
pmaddwd %xmm9,%xmm7
paddd  %xmm2,%xmm7
paddd  %xmm2,%xmm0
paddd  %xmm2,%xmm4
paddd  %xmm2,%xmm6
psrld  $0x8,%xmm6
psrld  $0x8,%xmm4
psrld  $0x8,%xmm0
psrld  $0x8,%xmm7
pand   %xmm3,%xmm7
pand   %xmm3,%xmm0
packuswb %xmm7,%xmm0
pand   %xmm3,%xmm4
pand   %xmm3,%xmm6
packuswb %xmm4,%xmm6
packuswb %xmm0,%xmm6
movdqu %xmm6,(%rsi,%rbx,1)
movdqu %xmm5,0x0(%rbp,%rbx,1)
add    $0x20,%rbx
add    $0xfffffffffffffffe,%rax
jne    1370 <vp8cx_last_vertical_band_2_3_scale_c+0x270>
test   $0x1,%r11b
je     158d <vp8cx_last_vertical_band_2_3_scale_c+0x48d>
lea    (%rdi,%rbx,1),%rax
movdqu (%rdi,%rbx,1),%xmm0
pxor   %xmm2,%xmm2
movdqa %xmm0,%xmm3
punpckhbw %xmm2,%xmm3
punpcklbw %xmm2,%xmm0
mov    %r13,%rdx
movdqu 0x0(%r13,%rax,1),%xmm1
movdqa %xmm1,%xmm5
punpckhbw %xmm2,%xmm5
movdqa %xmm1,%xmm4
punpcklbw %xmm2,%xmm4
movdqa %xmm0,%xmm2
punpcklwd %xmm4,%xmm2
movdqa 0xaf0(%rip),%xmm6
pmaddwd %xmm6,%xmm2
punpckhwd %xmm4,%xmm0
pmaddwd %xmm6,%xmm0
movdqa %xmm3,%xmm4
punpcklwd %xmm5,%xmm4
pmaddwd %xmm6,%xmm4
punpckhwd %xmm5,%xmm3
pmaddwd %xmm6,%xmm3
movdqa 0xad8(%rip),%xmm5
paddd  %xmm5,%xmm3
paddd  %xmm5,%xmm4
paddd  %xmm5,%xmm0
paddd  %xmm5,%xmm2
psrld  $0x8,%xmm2
psrld  $0x8,%xmm0
psrld  $0x8,%xmm4
psrld  $0x8,%xmm3
movdqa 0xabc(%rip),%xmm5
pand   %xmm5,%xmm3
pand   %xmm5,%xmm4
packuswb %xmm3,%xmm4
pand   %xmm5,%xmm0
pand   %xmm5,%xmm2
packuswb %xmm0,%xmm2
packuswb %xmm4,%xmm2
movdqu %xmm2,0x0(%r13,%rax,1)
movdqu %xmm1,(%r14,%rax,1)
cmp    %rcx,%r10
je     12fd <vp8cx_last_vertical_band_2_3_scale_c+0x1fd>
mov    %r13,%rbx
test   $0x8,%r10b
jne    11b4 <vp8cx_last_vertical_band_2_3_scale_c+0xb4>
add    %rcx,%rdi
mov    %rdi,%rdx
mov    %ecx,%r9d
jmp    125b <vp8cx_last_vertical_band_2_3_scale_c+0x15b>
mov    %rdi,%rdx
mov    %r13,%rbx
jmp    125b <vp8cx_last_vertical_band_2_3_scale_c+0x15b>
xor    %ebx,%ebx
test   $0x1,%r11b
jne    14cd <vp8cx_last_vertical_band_2_3_scale_c+0x3cd>
jmp    158d <vp8cx_last_vertical_band_2_3_scale_c+0x48d>

LLVM IR (-O0):
define void @vp8cx_last_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 i8*
store i8* %0, i8** %4
store i32 %1, i32* %5
store i32 %2, i32* %6
%11 = load i8*, i8** %4
store i8* %11, i8** %10
store i32 0, i32* %7
br label %12
12: ; preds = %48, %3
%13 = load i32, i32* %7
%14 = load i32, i32* %6
%15 = icmp ult i32 %13, %14
br i1 %15, label %16, label %51
16: ; preds = %12
%17 = load i8*, i8** %10
%18 = getelementptr inbounds i8, i8* %17, i64 0
%19 = load i8, i8* %18
%20 = zext i8 %19 to i32
store i32 %20, i32* %8
%21 = load i8*, i8** %10
%22 = load i32, i32* %5
%23 = zext i32 %22 to i64
%24 = getelementptr inbounds i8, i8* %21, i64 %23
%25 = load i8, i8* %24
%26 = zext i8 %25 to i32
store i32 %26, i32* %9
%27 = load i32, i32* %8
%28 = mul i32 %27, 85
%29 = load i32, i32* %9
%30 = mul i32 171, %29
%31 = add i32 %28, %30
%32 = add i32 %31, 128
%33 = lshr i32 %32, 8
%34 = trunc i32 %33 to i8
%35 = load i8*, i8** %10
%36 = load i32, i32* %5
%37 = zext i32 %36 to i64
%38 = getelementptr inbounds i8, i8* %35, i64 %37
store i8 %34, i8* %38
%39 = load i32, i32* %9
%40 = trunc i32 %39 to i8
%41 = load i8*, i8** %10
%42 = load i32, i32* %5
%43 = mul i32 %42, 2
%44 = zext i32 %43 to i64
%45 = getelementptr inbounds i8, i8* %41, i64 %44
store i8 %40, i8* %45
%46 = load i8*, i8** %10
%47 = getelementptr inbounds i8, i8* %46, i32 1
store i8* %47, i8** %10
br label %48
48: ; preds = %16
%49 = load i32, i32* %7
%50 = add i32 %49, 1
store i32 %50, i32* %7
br label %12
51: ; preds = %12
ret void
}

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