#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int strLen(char *);
void Shift(char str[]) {
  int i, len = strLen(str);
  for (i = 0; i < len; i++)
    str[i] = (2 * (str[i] - 'a') + 1) % 26 + 'a';
}


x86 assembly (clang, -O0):
<Shift>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
call   1030 <strLen@plt>
mov    %eax,-0x10(%rbp)
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1174 <Shift+0x64>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x61,%eax
shl    $0x1,%eax
add    $0x1,%eax
mov    $0x1a,%ecx
cltd
idiv   %ecx
add    $0x61,%edx
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    112f <Shift+0x1f>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Shift>:
push   %rbx
mov    %rdi,%rbx
call   1030 <strLen@plt>
test   %eax,%eax
jle    197c <Shift+0x86c>
mov    %eax,%ecx
cmp    $0x8,%eax
jae    112f <Shift+0x1f>
xor    %eax,%eax
jmp    1940 <Shift+0x830>
cmp    $0x10,%eax
jae    1290 <Shift+0x180>
xor    %eax,%eax
mov    %rax,%rdx
mov    %ecx,%eax
and    $0xfffffff8,%eax
movdqa 0xeb6(%rip),%xmm0
movdqa 0xebe(%rip),%xmm1
movdqa 0xec6(%rip),%xmm2
movdqa 0xece(%rip),%xmm3
movdqa 0xee5(%rip),%xmm8
nopl   0x0(%rax,%rax,1)
movq   (%rbx,%rdx,1),%xmm5
punpcklbw %xmm5,%xmm5
punpckhwd %xmm5,%xmm6
psrad  $0x18,%xmm6
punpcklwd %xmm5,%xmm5
psrad  $0x18,%xmm5
paddd  %xmm5,%xmm5
paddd  %xmm6,%xmm6
paddd  %xmm0,%xmm6
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
pshufd $0xf5,%xmm5,%xmm4
pmuludq %xmm1,%xmm4
pshufd $0xed,%xmm4,%xmm4
punpckldq %xmm4,%xmm7
pxor   %xmm4,%xmm4
pcmpgtd %xmm5,%xmm4
pand   %xmm1,%xmm4
psubd  %xmm4,%xmm7
movdqa %xmm7,%xmm4
psrld  $0x1f,%xmm4
psrld  $0x3,%xmm7
paddd  %xmm4,%xmm7
pshufd $0xf5,%xmm7,%xmm4
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
pmuludq %xmm2,%xmm4
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm7
psubd  %xmm7,%xmm5
movdqa %xmm6,%xmm4
pmuludq %xmm1,%xmm4
pshufd $0xed,%xmm4,%xmm4
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm4
pxor   %xmm7,%xmm7
pcmpgtd %xmm6,%xmm7
pand   %xmm1,%xmm7
psubd  %xmm7,%xmm4
movdqa %xmm4,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm4
paddd  %xmm7,%xmm4
pshufd $0xf5,%xmm4,%xmm7
pmuludq %xmm2,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm4
psubd  %xmm4,%xmm6
pand   %xmm3,%xmm6
pand   %xmm3,%xmm5
packuswb %xmm6,%xmm5
packuswb %xmm5,%xmm5
paddb  %xmm8,%xmm5
movq   %xmm5,(%rbx,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%rax
jne    1170 <Shift+0x60>
cmp    %rcx,%rax
jne    1940 <Shift+0x830>
jmp    197c <Shift+0x86c>
mov    %ecx,%eax
and    $0xfffffff0,%eax
lea    -0x10(%rax),%rdx
mov    %rdx,%rsi
shr    $0x4,%rsi
add    $0x1,%rsi
test   %rdx,%rdx
je     197e <Shift+0x86e>
mov    %rsi,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %edx,%edx
movdqa 0xd41(%rip),%xmm9
movdqa 0xd49(%rip),%xmm1
movdqa 0xd51(%rip),%xmm2
movdqa 0xd58(%rip),%xmm10
movdqa 0xd5f(%rip),%xmm8
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movdqu (%rbx,%rdx,1),%xmm0
movdqu 0x10(%rbx,%rdx,1),%xmm11
punpckhbw %xmm0,%xmm6
punpckhwd %xmm6,%xmm4
psrad  $0x18,%xmm4
punpcklwd %xmm6,%xmm6
psrad  $0x18,%xmm6
punpcklbw %xmm0,%xmm7
punpckhwd %xmm7,%xmm0
psrad  $0x18,%xmm0
punpcklwd %xmm7,%xmm3
psrad  $0x18,%xmm3
paddd  %xmm3,%xmm3
paddd  %xmm0,%xmm0
paddd  %xmm6,%xmm6
paddd  %xmm4,%xmm4
paddd  %xmm9,%xmm4
paddd  %xmm9,%xmm6
paddd  %xmm9,%xmm0
paddd  %xmm9,%xmm3
movdqa %xmm3,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
pshufd $0xf5,%xmm3,%xmm5
pmuludq %xmm1,%xmm5
pshufd $0xed,%xmm5,%xmm5
punpckldq %xmm5,%xmm7
pxor   %xmm5,%xmm5
pcmpgtd %xmm3,%xmm5
pand   %xmm1,%xmm5
psubd  %xmm5,%xmm7
movdqa %xmm7,%xmm5
psrld  $0x1f,%xmm5
psrld  $0x3,%xmm7
paddd  %xmm5,%xmm7
pshufd $0xf5,%xmm7,%xmm5
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
pmuludq %xmm2,%xmm5
pshufd $0xe8,%xmm5,%xmm5
punpckldq %xmm5,%xmm7
psubd  %xmm7,%xmm3
movdqa %xmm0,%xmm5
pmuludq %xmm1,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm0,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm5
pxor   %xmm7,%xmm7
pcmpgtd %xmm0,%xmm7
pand   %xmm1,%xmm7
psubd  %xmm7,%xmm5
movdqa %xmm5,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm5
paddd  %xmm7,%xmm5
pshufd $0xf5,%xmm5,%xmm7
pmuludq %xmm2,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm5
psubd  %xmm5,%xmm0
movdqa %xmm6,%xmm5
pmuludq %xmm1,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm5
pxor   %xmm7,%xmm7
pcmpgtd %xmm6,%xmm7
pand   %xmm1,%xmm7
psubd  %xmm7,%xmm5
movdqa %xmm5,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm5
paddd  %xmm7,%xmm5
pshufd $0xf5,%xmm5,%xmm7
pmuludq %xmm2,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm5
psubd  %xmm5,%xmm6
movdqa %xmm4,%xmm5
pmuludq %xmm1,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm4,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm5
pxor   %xmm7,%xmm7
pcmpgtd %xmm4,%xmm7
pand   %xmm1,%xmm7
psubd  %xmm7,%xmm5
movdqa %xmm5,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm5
paddd  %xmm7,%xmm5
pshufd $0xf5,%xmm5,%xmm7
pmuludq %xmm2,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm5
psubd  %xmm5,%xmm4
pand   %xmm10,%xmm4
pand   %xmm10,%xmm6
packuswb %xmm4,%xmm6
pand   %xmm10,%xmm0
pand   %xmm10,%xmm3
packuswb %xmm0,%xmm3
packuswb %xmm6,%xmm3
paddb  %xmm8,%xmm3
movdqu %xmm3,(%rbx,%rdx,1)
punpckhbw %xmm11,%xmm0
punpckhwd %xmm0,%xmm4
psrad  $0x18,%xmm4
punpcklwd %xmm0,%xmm6
psrad  $0x18,%xmm6
punpcklbw %xmm11,%xmm3
punpckhwd %xmm3,%xmm0
psrad  $0x18,%xmm0
punpcklwd %xmm3,%xmm5
psrad  $0x18,%xmm5
paddd  %xmm5,%xmm5
paddd  %xmm0,%xmm0
paddd  %xmm6,%xmm6
paddd  %xmm4,%xmm4
paddd  %xmm9,%xmm4
paddd  %xmm9,%xmm6
paddd  %xmm9,%xmm0
paddd  %xmm9,%xmm5
movdqa %xmm5,%xmm3
pmuludq %xmm1,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm5,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
pxor   %xmm7,%xmm7
pcmpgtd %xmm5,%xmm7
pand   %xmm1,%xmm7
psubd  %xmm7,%xmm3
movdqa %xmm3,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm3
paddd  %xmm7,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm2,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psubd  %xmm3,%xmm5
movdqa %xmm0,%xmm3
pmuludq %xmm1,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm0,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
pxor   %xmm7,%xmm7
pcmpgtd %xmm0,%xmm7
pand   %xmm1,%xmm7
psubd  %xmm7,%xmm3
movdqa %xmm3,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm3
paddd  %xmm7,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm2,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psubd  %xmm3,%xmm0
movdqa %xmm6,%xmm3
pmuludq %xmm1,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
pxor   %xmm7,%xmm7
pcmpgtd %xmm6,%xmm7
pand   %xmm1,%xmm7
psubd  %xmm7,%xmm3
movdqa %xmm3,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm3
paddd  %xmm7,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm2,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psubd  %xmm3,%xmm6
movdqa %xmm4,%xmm3
pmuludq %xmm1,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm4,%xmm7
pmuludq %xmm1,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
pxor   %xmm7,%xmm7
pcmpgtd %xmm4,%xmm7
pand   %xmm1,%xmm7
psubd  %xmm7,%xmm3
movdqa %xmm3,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm3
paddd  %xmm7,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm2,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm2,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psubd  %xmm3,%xmm4
pand   %xmm10,%xmm4
pand   %xmm10,%xmm6
packuswb %xmm4,%xmm6
pand   %xmm10,%xmm0
pand   %xmm10,%xmm5
packuswb %xmm0,%xmm5
packuswb %xmm6,%xmm5
paddb  %xmm8,%xmm5
movdqu %xmm5,0x10(%rbx,%rdx,1)
add    $0x20,%rdx
add    $0xfffffffffffffffe,%rdi
jne    12f0 <Shift+0x1e0>
test   $0x1,%sil
je     192e <Shift+0x81e>
movdqu (%rbx,%rdx,1),%xmm1
punpckhbw %xmm1,%xmm0
punpckhwd %xmm0,%xmm2
psrad  $0x18,%xmm2
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpcklbw %xmm1,%xmm1
punpckhwd %xmm1,%xmm3
psrad  $0x18,%xmm3
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm1,%xmm1
paddd  %xmm3,%xmm3
paddd  %xmm0,%xmm0
paddd  %xmm2,%xmm2
movdqa 0x8ac(%rip),%xmm4
paddd  %xmm4,%xmm2
paddd  %xmm4,%xmm0
paddd  %xmm4,%xmm3
paddd  %xmm4,%xmm1
movdqa 0x8a4(%rip),%xmm4
movdqa %xmm1,%xmm5
pmuludq %xmm4,%xmm5
pshufd $0xed,%xmm5,%xmm7
pshufd $0xf5,%xmm1,%xmm5
pmuludq %xmm4,%xmm5
pshufd $0xed,%xmm5,%xmm5
punpckldq %xmm5,%xmm7
pxor   %xmm5,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm4,%xmm6
psubd  %xmm6,%xmm7
movdqa %xmm7,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x3,%xmm7
paddd  %xmm6,%xmm7
movdqa 0x866(%rip),%xmm8
pshufd $0xf5,%xmm7,%xmm6
pmuludq %xmm8,%xmm7
pshufd $0xe8,%xmm7,%xmm7
pmuludq %xmm8,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm7
psubd  %xmm7,%xmm1
movdqa %xmm3,%xmm6
pmuludq %xmm4,%xmm6
pshufd $0xed,%xmm6,%xmm6
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm4,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm6
pxor   %xmm7,%xmm7
pcmpgtd %xmm3,%xmm7
pand   %xmm4,%xmm7
psubd  %xmm7,%xmm6
movdqa %xmm6,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm6
paddd  %xmm7,%xmm6
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm8,%xmm6
pshufd $0xe8,%xmm6,%xmm6
pmuludq %xmm8,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm6
psubd  %xmm6,%xmm3
movdqa %xmm0,%xmm6
pmuludq %xmm4,%xmm6
pshufd $0xed,%xmm6,%xmm6
pshufd $0xf5,%xmm0,%xmm7
pmuludq %xmm4,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm6
pxor   %xmm7,%xmm7
pcmpgtd %xmm0,%xmm7
pand   %xmm4,%xmm7
psubd  %xmm7,%xmm6
movdqa %xmm6,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x3,%xmm6
paddd  %xmm7,%xmm6
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm8,%xmm6
pshufd $0xe8,%xmm6,%xmm6
pmuludq %xmm8,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm6
psubd  %xmm6,%xmm0
movdqa %xmm2,%xmm6
pmuludq %xmm4,%xmm6
pshufd $0xed,%xmm6,%xmm6
pshufd $0xf5,%xmm2,%xmm7
pmuludq %xmm4,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm6
pcmpgtd %xmm2,%xmm5
pand   %xmm4,%xmm5
psubd  %xmm5,%xmm6
movdqa %xmm6,%xmm4
psrld  $0x1f,%xmm4
psrld  $0x3,%xmm6
paddd  %xmm4,%xmm6
pshufd $0xf5,%xmm6,%xmm4
pmuludq %xmm8,%xmm6
pshufd $0xe8,%xmm6,%xmm5
pmuludq %xmm8,%xmm4
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm5
psubd  %xmm5,%xmm2
movdqa 0x72b(%rip),%xmm4
pand   %xmm4,%xmm2
pand   %xmm4,%xmm0
packuswb %xmm2,%xmm0
pand   %xmm4,%xmm3
pand   %xmm4,%xmm1
packuswb %xmm3,%xmm1
packuswb %xmm0,%xmm1
paddb  0x717(%rip),%xmm1
movdqu %xmm1,(%rbx,%rdx,1)
cmp    %rcx,%rax
je     197c <Shift+0x86c>
test   $0x8,%cl
jne    113a <Shift+0x2a>
nopl   0x0(%rax)
movsbl (%rbx,%rax,1),%edx
add    %edx,%edx
add    $0xffffff3f,%edx
movslq %edx,%rdx
imul   $0x4ec4ec4f,%rdx,%rsi
mov    %rsi,%rdi
shr    $0x3f,%rdi
sar    $0x23,%rsi
add    %edi,%esi
lea    (%rsi,%rsi,4),%edi
lea    (%rdi,%rdi,4),%edi
add    %esi,%edi
sub    %edi,%edx
add    $0x61,%dl
mov    %dl,(%rbx,%rax,1)
add    $0x1,%rax
cmp    %rax,%rcx
jne    1940 <Shift+0x830>
pop    %rbx
ret
xor    %edx,%edx
test   $0x1,%sil
jne    170b <Shift+0x5fb>
jmp    192e <Shift+0x81e>

LLVM IR (-O0):
define void @Shift(i8* %0) {
%2 = alloca i8*
%3 = alloca i32
%4 = alloca i32
store i8* %0, i8** %2
%5 = load i8*, i8** %2
%6 = call i32 @strLen(i8* %5)
store i32 %6, i32* %4
store i32 0, i32* %3
br label %7
7: ; preds = %28, %1
%8 = load i32, i32* %3
%9 = load i32, i32* %4
%10 = icmp slt i32 %8, %9
br i1 %10, label %11, label %31
11: ; preds = %7
%12 = load i8*, i8** %2
%13 = load i32, i32* %3
%14 = sext i32 %13 to i64
%15 = getelementptr inbounds i8, i8* %12, i64 %14
%16 = load i8, i8* %15
%17 = sext i8 %16 to i32
%18 = sub nsw i32 %17, 97
%19 = mul nsw i32 2, %18
%20 = add nsw i32 %19, 1
%21 = srem i32 %20, 26
%22 = add nsw i32 %21, 97
%23 = trunc i32 %22 to i8
%24 = load i8*, i8** %2
%25 = load i32, i32* %3
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds i8, i8* %24, i64 %26
store i8 %23, i8* %27
br label %28
28: ; preds = %11
%29 = load i32, i32* %3
%30 = add nsw i32 %29, 1
store i32 %30, i32* %3
br label %7
31: ; preds = %7
ret void
}

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