void alpha_compose(unsigned char *dst, int width, int height,
                   unsigned char *src, int perc) {
  int i;
  for (i = 0; i < width * height * 3; ++i)
    dst[i] = dst[i] * (100 - perc) / 100 + src[i] * perc / 100;
}


x86 assembly (clang, -O0):
<alpha_compose>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0xc(%rbp),%ecx
imul   -0x10(%rbp),%ecx
imul   $0x3,%ecx,%ecx
cmp    %ecx,%eax
jge    118e <alpha_compose+0x8e>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    $0x64,%ecx
sub    -0x1c(%rbp),%ecx
imul   %ecx,%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
imul   -0x1c(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x24(%rbp),%eax
add    %ecx,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    111d <alpha_compose+0x1d>
pop    %rbp
ret

x86 assembly (clang, -O2):
<alpha_compose>:
sub    $0x18,%rsp
imul   %edx,%esi
lea    (%rsi,%rsi,2),%edx
test   %edx,%edx
jle    182e <alpha_compose+0x72e>
mov    $0x64,%r10d
sub    %r8d,%r10d
mov    %edx,%r9d
cmp    $0x8,%edx
jae    112b <alpha_compose+0x2b>
xor    %r11d,%r11d
jmp    17e0 <alpha_compose+0x6e0>
lea    (%rcx,%r9,1),%rsi
cmp    %rdi,%rsi
jbe    1145 <alpha_compose+0x45>
lea    (%rdi,%r9,1),%rsi
cmp    %rcx,%rsi
jbe    1145 <alpha_compose+0x45>
xor    %r11d,%r11d
jmp    17e0 <alpha_compose+0x6e0>
movd   %r10d,%xmm0
movd   %r8d,%xmm1
cmp    $0x10,%edx
jae    115c <alpha_compose+0x5c>
xor    %r11d,%r11d
jmp    15b8 <alpha_compose+0x4b8>
mov    %r9d,%r11d
and    $0xfffffff0,%r11d
movdqa %xmm0,-0x70(%rsp)
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm1,-0x80(%rsp)
pshufd $0x0,%xmm1,%xmm1
xor    %edx,%edx
movdqa %xmm0,-0x30(%rsp)
pshufd $0xf5,%xmm0,%xmm0
movdqa %xmm0,-0x50(%rsp)
movdqa %xmm1,-0x40(%rsp)
pshufd $0xf5,%xmm1,%xmm0
movdqa %xmm0,-0x60(%rsp)
movdqa 0xe5a(%rip),%xmm9
cs nopw 0x0(%rax,%rax,1)
movdqu (%rdi,%rdx,1),%xmm0
movdqa %xmm0,%xmm7
pxor   %xmm10,%xmm10
punpckhbw %xmm10,%xmm7
movdqa %xmm7,%xmm14
punpckhwd %xmm10,%xmm14
punpcklwd %xmm10,%xmm7
punpcklbw %xmm10,%xmm0
movdqa %xmm0,%xmm3
punpckhwd %xmm10,%xmm3
punpcklwd %xmm10,%xmm0
movdqa -0x30(%rsp),%xmm1
movdqa %xmm1,%xmm13
pmuludq %xmm0,%xmm13
pshufd $0xe8,%xmm13,%xmm8
pshufd $0xf5,%xmm0,%xmm11
movdqa -0x50(%rsp),%xmm2
pmuludq %xmm2,%xmm11
pshufd $0xe8,%xmm11,%xmm0
punpckldq %xmm0,%xmm8
movdqa %xmm1,%xmm0
pmuludq %xmm3,%xmm0
pshufd $0xe8,%xmm0,%xmm15
pshufd $0xf5,%xmm3,%xmm3
pmuludq %xmm2,%xmm3
pshufd $0xe8,%xmm3,%xmm5
punpckldq %xmm5,%xmm15
movdqa %xmm1,%xmm5
pmuludq %xmm7,%xmm5
pshufd $0xe8,%xmm5,%xmm12
pshufd $0xf5,%xmm7,%xmm7
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm4
punpckldq %xmm4,%xmm12
movdqa %xmm1,%xmm4
pmuludq %xmm14,%xmm4
pshufd $0xe8,%xmm4,%xmm6
pshufd $0xf5,%xmm14,%xmm1
pmuludq %xmm2,%xmm1
pshufd $0xe8,%xmm1,%xmm2
punpckldq %xmm2,%xmm6
pmuludq %xmm9,%xmm4
pshufd $0xed,%xmm4,%xmm2
pmuludq %xmm9,%xmm1
pshufd $0xed,%xmm1,%xmm1
punpckldq %xmm1,%xmm2
pxor   %xmm1,%xmm1
pcmpgtd %xmm6,%xmm1
pand   %xmm9,%xmm1
psubd  %xmm1,%xmm2
movdqa %xmm2,%xmm1
psrld  $0x1f,%xmm1
psrld  $0x5,%xmm2
paddd  %xmm1,%xmm2
pmuludq %xmm9,%xmm5
pshufd $0xed,%xmm5,%xmm5
pmuludq %xmm9,%xmm7
pshufd $0xed,%xmm7,%xmm1
punpckldq %xmm1,%xmm5
pxor   %xmm1,%xmm1
pcmpgtd %xmm12,%xmm1
pand   %xmm9,%xmm1
psubd  %xmm1,%xmm5
movdqa %xmm5,%xmm1
psrld  $0x1f,%xmm1
psrld  $0x5,%xmm5
paddd  %xmm1,%xmm5
pmuludq %xmm9,%xmm0
pshufd $0xed,%xmm0,%xmm0
pmuludq %xmm9,%xmm3
pshufd $0xed,%xmm3,%xmm1
punpckldq %xmm1,%xmm0
pxor   %xmm1,%xmm1
pcmpgtd %xmm15,%xmm1
pand   %xmm9,%xmm1
psubd  %xmm1,%xmm0
movdqa %xmm0,%xmm1
psrld  $0x1f,%xmm1
psrld  $0x5,%xmm0
paddd  %xmm1,%xmm0
pmuludq %xmm9,%xmm13
pshufd $0xed,%xmm13,%xmm1
pmuludq %xmm9,%xmm11
pshufd $0xed,%xmm11,%xmm3
punpckldq %xmm3,%xmm1
pxor   %xmm3,%xmm3
pcmpgtd %xmm8,%xmm3
pand   %xmm9,%xmm3
psubd  %xmm3,%xmm1
movdqa %xmm1,%xmm3
psrld  $0x1f,%xmm3
psrld  $0x5,%xmm1
paddd  %xmm3,%xmm1
movdqu (%rcx,%rdx,1),%xmm4
movdqa %xmm4,%xmm14
punpckhbw %xmm10,%xmm14
movdqa %xmm14,%xmm8
punpckhwd %xmm10,%xmm8
punpcklwd %xmm10,%xmm14
punpcklbw %xmm10,%xmm4
movdqa %xmm4,%xmm11
punpckhwd %xmm10,%xmm11
punpcklwd %xmm10,%xmm4
movdqa -0x40(%rsp),%xmm10
movdqa %xmm10,%xmm7
pmuludq %xmm4,%xmm7
pshufd $0xe8,%xmm7,%xmm12
pshufd $0xf5,%xmm4,%xmm3
movdqa -0x60(%rsp),%xmm4
pmuludq %xmm4,%xmm3
movdqa %xmm3,-0x10(%rsp)
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm12
movdqa %xmm12,(%rsp)
movdqa %xmm10,%xmm13
pmuludq %xmm11,%xmm13
pshufd $0xe8,%xmm13,%xmm6
pshufd $0xf5,%xmm11,%xmm11
pmuludq %xmm4,%xmm11
pshufd $0xe8,%xmm11,%xmm3
punpckldq %xmm3,%xmm6
movdqa %xmm6,-0x20(%rsp)
movdqa %xmm10,%xmm6
pmuludq %xmm14,%xmm6
pshufd $0xe8,%xmm6,%xmm12
pshufd $0xf5,%xmm14,%xmm14
pmuludq %xmm4,%xmm14
pshufd $0xe8,%xmm14,%xmm3
punpckldq %xmm3,%xmm12
movdqa %xmm10,%xmm3
pmuludq %xmm8,%xmm3
pshufd $0xe8,%xmm3,%xmm10
pshufd $0xf5,%xmm8,%xmm15
pmuludq %xmm4,%xmm15
pshufd $0xe8,%xmm15,%xmm4
punpckldq %xmm4,%xmm10
pmuludq %xmm9,%xmm3
pshufd $0xed,%xmm3,%xmm8
pmuludq %xmm9,%xmm15
pshufd $0xed,%xmm15,%xmm3
punpckldq %xmm3,%xmm8
pxor   %xmm3,%xmm3
pcmpgtd %xmm10,%xmm3
pand   %xmm9,%xmm3
psubd  %xmm3,%xmm8
movdqa %xmm8,%xmm3
psrld  $0x1f,%xmm3
psrld  $0x5,%xmm8
paddd  %xmm3,%xmm8
paddd  %xmm2,%xmm8
pmuludq %xmm9,%xmm6
pshufd $0xed,%xmm6,%xmm2
pmuludq %xmm9,%xmm14
pshufd $0xed,%xmm14,%xmm3
punpckldq %xmm3,%xmm2
pxor   %xmm3,%xmm3
pcmpgtd %xmm12,%xmm3
pand   %xmm9,%xmm3
psubd  %xmm3,%xmm2
movdqa %xmm2,%xmm3
psrld  $0x1f,%xmm3
psrld  $0x5,%xmm2
paddd  %xmm3,%xmm2
paddd  %xmm5,%xmm2
pmuludq %xmm9,%xmm13
pshufd $0xed,%xmm13,%xmm5
pmuludq %xmm9,%xmm11
pshufd $0xed,%xmm11,%xmm3
punpckldq %xmm3,%xmm5
pxor   %xmm3,%xmm3
pcmpgtd -0x20(%rsp),%xmm3
pand   %xmm9,%xmm3
psubd  %xmm3,%xmm5
movdqa %xmm5,%xmm3
psrld  $0x1f,%xmm3
psrld  $0x5,%xmm5
paddd  %xmm3,%xmm5
paddd  %xmm0,%xmm5
pmuludq %xmm9,%xmm7
pshufd $0xed,%xmm7,%xmm0
movdqa -0x10(%rsp),%xmm3
pmuludq %xmm9,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm0
pxor   %xmm3,%xmm3
pcmpgtd (%rsp),%xmm3
pand   %xmm9,%xmm3
psubd  %xmm3,%xmm0
movdqa %xmm0,%xmm3
psrld  $0x1f,%xmm3
psrld  $0x5,%xmm0
paddd  %xmm3,%xmm0
paddd  %xmm1,%xmm0
movdqa 0xaa7(%rip),%xmm1
pand   %xmm1,%xmm8
pand   %xmm1,%xmm2
packuswb %xmm8,%xmm2
pand   %xmm1,%xmm5
pand   %xmm1,%xmm0
packuswb %xmm5,%xmm0
packuswb %xmm2,%xmm0
movdqu %xmm0,(%rdi,%rdx,1)
add    $0x10,%rdx
cmp    %rdx,%r11
jne    11b0 <alpha_compose+0xb0>
cmp    %r9,%r11
movdqa -0x70(%rsp),%xmm0
movdqa -0x80(%rsp),%xmm1
je     182e <alpha_compose+0x72e>
test   $0x8,%r9b
je     17e0 <alpha_compose+0x6e0>
mov    %r11,%rdx
mov    %r9d,%r11d
and    $0xfffffff8,%r11d
pshufd $0x0,%xmm0,%xmm10
pshufd $0x0,%xmm1,%xmm12
pxor   %xmm13,%xmm13
pshufd $0xf5,%xmm10,%xmm9
movdqa 0xa1e(%rip),%xmm14
pshufd $0xf5,%xmm12,%xmm11
movdqa 0xa1f(%rip),%xmm8
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movq   (%rdi,%rdx,1),%xmm3
punpcklbw %xmm13,%xmm3
movdqa %xmm3,%xmm5
punpckhwd %xmm13,%xmm5
punpcklwd %xmm13,%xmm3
movdqa %xmm10,%xmm1
pmuludq %xmm3,%xmm1
pshufd $0xe8,%xmm1,%xmm0
pshufd $0xf5,%xmm3,%xmm3
pmuludq %xmm9,%xmm3
pshufd $0xe8,%xmm3,%xmm6
punpckldq %xmm6,%xmm0
movdqa %xmm10,%xmm6
pmuludq %xmm5,%xmm6
pshufd $0xe8,%xmm6,%xmm7
pshufd $0xf5,%xmm5,%xmm5
pmuludq %xmm9,%xmm5
pshufd $0xe8,%xmm5,%xmm2
punpckldq %xmm2,%xmm7
pmuludq %xmm14,%xmm6
pshufd $0xed,%xmm6,%xmm6
pmuludq %xmm14,%xmm5
pshufd $0xed,%xmm5,%xmm2
punpckldq %xmm2,%xmm6
pxor   %xmm2,%xmm2
pcmpgtd %xmm7,%xmm2
pand   %xmm14,%xmm2
psubd  %xmm2,%xmm6
movdqa %xmm6,%xmm2
psrld  $0x1f,%xmm2
psrld  $0x5,%xmm6
paddd  %xmm2,%xmm6
pmuludq %xmm14,%xmm1
pshufd $0xed,%xmm1,%xmm7
pmuludq %xmm14,%xmm3
pshufd $0xed,%xmm3,%xmm1
punpckldq %xmm1,%xmm7
pxor   %xmm1,%xmm1
pcmpgtd %xmm0,%xmm1
pand   %xmm14,%xmm1
psubd  %xmm1,%xmm7
movdqa %xmm7,%xmm0
psrld  $0x1f,%xmm0
psrld  $0x5,%xmm7
paddd  %xmm0,%xmm7
movq   (%rcx,%rdx,1),%xmm0
punpcklbw %xmm13,%xmm0
movdqa %xmm0,%xmm2
punpckhwd %xmm13,%xmm2
punpcklwd %xmm13,%xmm0
movdqa %xmm12,%xmm1
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm15
pshufd $0xf5,%xmm0,%xmm5
pmuludq %xmm11,%xmm5
pshufd $0xe8,%xmm5,%xmm0
punpckldq %xmm0,%xmm15
movdqa %xmm12,%xmm0
pmuludq %xmm2,%xmm0
pshufd $0xe8,%xmm0,%xmm4
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm11,%xmm2
pshufd $0xe8,%xmm2,%xmm3
punpckldq %xmm3,%xmm4
pmuludq %xmm14,%xmm0
pshufd $0xed,%xmm0,%xmm0
pmuludq %xmm14,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm0
pxor   %xmm2,%xmm2
pcmpgtd %xmm4,%xmm2
pand   %xmm14,%xmm2
psubd  %xmm2,%xmm0
movdqa %xmm0,%xmm2
psrld  $0x1f,%xmm2
psrld  $0x5,%xmm0
paddd  %xmm2,%xmm0
paddd  %xmm6,%xmm0
pmuludq %xmm14,%xmm1
pshufd $0xed,%xmm1,%xmm1
pmuludq %xmm14,%xmm5
pshufd $0xed,%xmm5,%xmm2
punpckldq %xmm2,%xmm1
pxor   %xmm2,%xmm2
pcmpgtd %xmm15,%xmm2
pand   %xmm14,%xmm2
psubd  %xmm2,%xmm1
movdqa %xmm1,%xmm2
psrld  $0x1f,%xmm2
psrld  $0x5,%xmm1
paddd  %xmm2,%xmm1
paddd  %xmm7,%xmm1
pand   %xmm8,%xmm0
pand   %xmm8,%xmm1
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm1
movq   %xmm1,(%rdi,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%r11
jne    1600 <alpha_compose+0x500>
cmp    %r9,%r11
je     182e <alpha_compose+0x72e>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl (%rdi,%r11,1),%edx
imul   %r10d,%edx
movslq %edx,%rdx
imul   $0x51eb851f,%rdx,%rdx
mov    %rdx,%rax
shr    $0x3f,%rax
shr    $0x25,%rdx
add    %eax,%edx
movzbl (%rcx,%r11,1),%eax
imul   %r8d,%eax
cltq
imul   $0x51eb851f,%rax,%rax
mov    %rax,%rsi
shr    $0x3f,%rsi
shr    $0x25,%rax
add    %esi,%eax
add    %edx,%eax
mov    %al,(%rdi,%r11,1)
add    $0x1,%r11
cmp    %r11,%r9
jne    17e0 <alpha_compose+0x6e0>
add    $0x18,%rsp
ret

LLVM IR (-O0):
define void @alpha_compose(i8* %0, i32 %1, i32 %2, i8* %3, i32 %4) {
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i32
%11 = alloca i32
store i8* %0, i8** %6
store i32 %1, i32* %7
store i32 %2, i32* %8
store i8* %3, i8** %9
store i32 %4, i32* %10
store i32 0, i32* %11
br label %12
12: ; preds = %45, %5
%13 = load i32, i32* %11
%14 = load i32, i32* %7
%15 = load i32, i32* %8
%16 = mul nsw i32 %14, %15
%17 = mul nsw i32 %16, 3
%18 = icmp slt i32 %13, %17
br i1 %18, label %19, label %48
19: ; preds = %12
%20 = load i8*, i8** %6
%21 = load i32, i32* %11
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds i8, i8* %20, i64 %22
%24 = load i8, i8* %23
%25 = zext i8 %24 to i32
%26 = load i32, i32* %10
%27 = sub nsw i32 100, %26
%28 = mul nsw i32 %25, %27
%29 = sdiv i32 %28, 100
%30 = load i8*, i8** %9
%31 = load i32, i32* %11
%32 = sext i32 %31 to i64
%33 = getelementptr inbounds i8, i8* %30, i64 %32
%34 = load i8, i8* %33
%35 = zext i8 %34 to i32
%36 = load i32, i32* %10
%37 = mul nsw i32 %35, %36
%38 = sdiv i32 %37, 100
%39 = add nsw i32 %29, %38
%40 = trunc i32 %39 to i8
%41 = load i8*, i8** %6
%42 = load i32, i32* %11
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i8, i8* %41, i64 %43
store i8 %40, i8* %44
br label %45
45: ; preds = %19
%46 = load i32, i32* %11
%47 = add nsw i32 %46, 1
store i32 %47, i32* %11
br label %12
48: ; preds = %12
ret void
}

LLVM IR (-O2):
define void @alpha_compose(i8* nocapture %0, i32 %1, i32 %2, i8* nocapture %3, i32 %4) {
%6 = mul i32 %1, 3
%7 = mul i32 %6, %2
%8 = icmp sgt i32 %7, 0
br i1 %8, label %9, label %97
9: ; preds = %5
%10 = sub nsw i32 100, %4
%11 = zext i32 %7 to i64
%12 = icmp ult i32 %7, 8
br i1 %12, label %79, label %13
13: ; preds = %9
%14 = getelementptr i8, i8* %0, i64 %11
%15 = getelementptr i8, i8* %3, i64 %11
%16 = icmp ugt i8* %15, %0
%17 = icmp ugt i8* %14, %3
%18 = and i1 %16, %17
br i1 %18, label %79, label %19
19: ; preds = %13
%20 = icmp ult i32 %7, 16
br i1 %20, label %51, label %21
21: ; preds = %19
%22 = and i64 %11, 4294967280
%23 = insertelement <16 x i32> poison, i32 %10, i64 0
%24 = shufflevector <16 x i32> %23, <16 x i32> poison, <16 x i32> zeroinitializer
%25 = insertelement <16 x i32> poison, i32 %4, i64 0
%26 = shufflevector <16 x i32> %25, <16 x i32> poison, <16 x i32> zeroinitializer
br label %27
27: ; preds = %27, %21
%28 = phi i64 [ 0, %21 ], [ %44, %27 ]
%29 = getelementptr inbounds i8, i8* %0, i64 %28
%30 = bitcast i8* %29 to <16 x i8>*
%31 = load <16 x i8>, <16 x i8>* %30
%32 = zext <16 x i8> %31 to <16 x i32>
%33 = mul nsw <16 x i32> %24, %32
%34 = sdiv <16 x i32> %33, <i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100>
%35 = getelementptr inbounds i8, i8* %3, i64 %28
%36 = bitcast i8* %35 to <16 x i8>*
%37 = load <16 x i8>, <16 x i8>* %36
%38 = zext <16 x i8> %37 to <16 x i32>
%39 = mul nsw <16 x i32> %26, %38
%40 = sdiv <16 x i32> %39, <i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100>
%41 = add nsw <16 x i32> %40, %34
%42 = trunc <16 x i32> %41 to <16 x i8>
%43 = bitcast i8* %29 to <16 x i8>*
store <16 x i8> %42, <16 x i8>* %43
%44 = add nuw i64 %28, 16
%45 = icmp eq i64 %44, %22
br i1 %45, label %46, label %27
46: ; preds = %27
%47 = icmp eq i64 %22, %11
br i1 %47, label %97, label %48
48: ; preds = %46
%49 = and i64 %11, 8
%50 = icmp eq i64 %49, 0
br i1 %50, label %79, label %51
51: ; preds = %19, %48
%52 = phi i64 [ %22, %48 ], [ 0, %19 ]
%53 = and i64 %11, 4294967288
%54 = insertelement <8 x i32> poison, i32 %10, i64 0
%55 = shufflevector <8 x i32> %54, <8 x i32> poison, <8 x i32> zeroinitializer
%56 = insertelement <8 x i32> poison, i32 %4, i64 0
%57 = shufflevector <8 x i32> %56, <8 x i32> poison, <8 x i32> zeroinitializer
br label %58
58: ; preds = %58, %51
%59 = phi i64 [ %52, %51 ], [ %75, %58 ]
%60 = getelementptr inbounds i8, i8* %0, i64 %59
%61 = bitcast i8* %60 to <8 x i8>*
%62 = load <8 x i8>, <8 x i8>* %61
%63 = zext <8 x i8> %62 to <8 x i32>
%64 = mul nsw <8 x i32> %55, %63
%65 = sdiv <8 x i32> %64, <i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100>
%66 = getelementptr inbounds i8, i8* %3, i64 %59
%67 = bitcast i8* %66 to <8 x i8>*
%68 = load <8 x i8>, <8 x i8>* %67
%69 = zext <8 x i8> %68 to <8 x i32>
%70 = mul nsw <8 x i32> %57, %69
%71 = sdiv <8 x i32> %70, <i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100, i32 100>
%72 = add nsw <8 x i32> %71, %65
%73 = trunc <8 x i32> %72 to <8 x i8>
%74 = bitcast i8* %60 to <8 x i8>*
store <8 x i8> %73, <8 x i8>* %74
%75 = add nuw i64 %59, 8
%76 = icmp eq i64 %75, %53
br i1 %76, label %77, label %58
77: ; preds = %58
%78 = icmp eq i64 %53, %11
br i1 %78, label %97, label %79
79: ; preds = %13, %9, %48, %77
%80 = phi i64 [ 0, %9 ], [ 0, %13 ], [ %22, %48 ], [ %53, %77 ]
br label %81
81: ; preds = %79, %81
%82 = phi i64 [ %95, %81 ], [ %80, %79 ]
%83 = getelementptr inbounds i8, i8* %0, i64 %82
%84 = load i8, i8* %83
%85 = zext i8 %84 to i32
%86 = mul nsw i32 %10, %85
%87 = sdiv i32 %86, 100
%88 = getelementptr inbounds i8, i8* %3, i64 %82
%89 = load i8, i8* %88
%90 = zext i8 %89 to i32
%91 = mul nsw i32 %90, %4
%92 = sdiv i32 %91, 100
%93 = add nsw i32 %92, %87
%94 = trunc i32 %93 to i8
store i8 %94, i8* %83
%95 = add nuw nsw i64 %82, 1
%96 = icmp eq i64 %95, %11
br i1 %96, label %97, label %81
97: ; preds = %81, %46, %77, %5
ret void
}