#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 */
scalar_t__ malloc(int);
int /*<<< orphan*/ strcpy(unsigned char *, char *);
int strlen(char *);
unsigned char *sc_via_cli_arg(char **argv) {
  unsigned char localize[strlen(argv[1])];
  strcpy(localize, argv[1]);
  int len = strlen(argv[1]);
  int end_len = len / 4;
  int i = 0;
  int j = 0;
  unsigned char *BYTEZ =
      (unsigned char *)malloc((end_len + 1) * sizeof(*BYTEZ));
  for (i = 0, j = 0; j < end_len; i += 4, j++) {
    BYTEZ[j] =
        (localize[i + 2] % 32 + 9) % 25 * 16 + (localize[i + 3] % 32 + 9) % 25;
  }
  BYTEZ[end_len] = '\0';
  return BYTEZ;
}


x86 assembly (clang, -O0):
<sc_via_cli_arg>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <strlen@plt>
mov    %eax,%eax
mov    %rsp,%rcx
mov    %rcx,-0x10(%rbp)
mov    %rax,%rcx
add    $0xf,%rcx
and    $0xfffffffffffffff0,%rcx
mov    %rsp,%rdi
sub    %rcx,%rdi
mov    %rdi,-0x38(%rbp)
mov    %rdi,%rsp
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%rsi
call   1030 <strcpy@plt>
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <strlen@plt>
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
cltq
shl    $0x0,%rax
mov    %eax,%edi
call   1050 <malloc@plt>
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1253 <sc_via_cli_arg+0x123>
mov    -0x38(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
add    $0x9,%eax
mov    $0x19,%ecx
cltd
idiv   %ecx
mov    -0x38(%rbp),%rax
shl    $0x4,%edx
mov    %edx,-0x3c(%rbp)
mov    -0x24(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
add    $0x9,%eax
mov    $0x19,%ecx
cltd
idiv   %ecx
mov    -0x3c(%rbp),%eax
add    %edx,%eax
mov    %al,%dl
mov    -0x30(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x24(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x24(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    11cc <sc_via_cli_arg+0x9c>
mov    -0x30(%rbp),%rax
movslq -0x20(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x30(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    %rcx,%rsp
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sc_via_cli_arg>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %rdi,%rbx
mov    0x8(%rdi),%rdi
call   1040 <strlen@plt>
mov    %eax,%eax
mov    %rsp,%r14
add    $0xf,%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%r14
mov    %r14,%rsp
mov    0x8(%rbx),%rsi
mov    %r14,%rdi
call   1030 <strcpy@plt>
mov    0x8(%rbx),%rdi
call   1040 <strlen@plt>
mov    %eax,%ebx
lea    0x3(%rbx),%r15d
test   %eax,%eax
cmovns %eax,%r15d
sar    $0x2,%r15d
lea    0x1(%r15),%edi
call   1050 <malloc@plt>
cmp    $0x4,%ebx
jl     121f <sc_via_cli_arg+0xef>
mov    %rax,%r9
mov    %r15d,%r8d
cmp    $0x9,%r15d
jb     11ba <sc_via_cli_arg+0x8a>
lea    (%r14,%r8,4),%rsi
cmp    %r9,%rsi
jbe    1231 <sc_via_cli_arg+0x101>
lea    (%r9,%r8,1),%rsi
lea    0x2(%r14),%rdi
cmp    %rsi,%rdi
jae    1231 <sc_via_cli_arg+0x101>
xor    %edi,%edi
xor    %ebx,%ebx
add    %rdi,%r9
sub    %rdi,%r8
lea    (%rbx,%r14,1),%rsi
add    $0x3,%rsi
xor    %edi,%edi
xchg   %ax,%ax
movzbl -0x1(%rsi,%rdi,4),%ebx
movzbl (%rsi,%rdi,4),%edx
and    $0x1f,%bl
add    $0x9,%bl
movzbl %bl,%ebx
lea    (%rbx,%rbx,4),%ecx
lea    (%rbx,%rcx,8),%ecx
shr    $0xa,%ecx
lea    (%rcx,%rcx,4),%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %cl,%bl
shl    $0x4,%bl
and    $0x1f,%dl
add    $0x9,%dl
movzbl %dl,%ecx
lea    (%rcx,%rcx,4),%edx
lea    (%rcx,%rdx,8),%edx
shr    $0xa,%edx
lea    (%rdx,%rdx,4),%edx
lea    (%rdx,%rdx,4),%edx
sub    %dl,%cl
add    %bl,%cl
mov    %cl,(%r9,%rdi,1)
add    $0x1,%rdi
cmp    %rdi,%r8
jne    11d0 <sc_via_cli_arg+0xa0>
movslq %r15d,%rcx
movb   $0x0,(%rax,%rcx,1)
lea    -0x18(%rbp),%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
cmp    $0x11,%r15d
jae    123e <sc_via_cli_arg+0x10e>
xor    %edi,%edi
jmp    1491 <sc_via_cli_arg+0x361>
mov    %r8d,%edi
and    $0xf,%edi
test   %rdi,%rdi
mov    $0x10,%esi
cmovne %rdi,%rsi
mov    %r8,%rdi
sub    %rsi,%rdi
xor    %ebx,%ebx
movdqa 0xd9f(%rip),%xmm12
pxor   %xmm1,%xmm1
movdqa 0xda2(%rip),%xmm9
movdqa 0xda9(%rip),%xmm10
movdqa 0xdb0(%rip),%xmm13
movdqa 0xdb7(%rip),%xmm11
movdqa 0xdbe(%rip),%xmm14
movdqa 0xdc5(%rip),%xmm15
movdqa 0xdcc(%rip),%xmm8
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movdqu 0x2(%r14,%rbx,4),%xmm3
movdqu 0x12(%r14,%rbx,4),%xmm7
movdqu 0x22(%r14,%rbx,4),%xmm6
movdqu 0x32(%r14,%rbx,4),%xmm4
movdqa %xmm4,%xmm2
pand   %xmm12,%xmm2
movdqa %xmm6,%xmm0
pand   %xmm12,%xmm0
packuswb %xmm2,%xmm0
movdqa %xmm7,%xmm5
pand   %xmm12,%xmm5
movdqa %xmm3,%xmm2
pand   %xmm12,%xmm2
packuswb %xmm5,%xmm2
packuswb %xmm0,%xmm2
movdqa %xmm4,%xmm0
punpckhbw %xmm1,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0xd4,%xmm0,%xmm0
punpcklbw %xmm1,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pshuflw $0xd4,%xmm4,%xmm4
punpckldq %xmm0,%xmm4
movdqa %xmm6,%xmm0
punpckhbw %xmm1,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0xed,%xmm0,%xmm0
punpcklbw %xmm1,%xmm6
pshufd $0xe8,%xmm6,%xmm5
pshuflw $0xed,%xmm5,%xmm5
punpckldq %xmm0,%xmm5
packuswb %xmm4,%xmm5
movdqa %xmm7,%xmm0
punpckhbw %xmm1,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0xd4,%xmm0,%xmm0
punpcklbw %xmm1,%xmm7
pshufd $0xe8,%xmm7,%xmm4
pshuflw $0xd4,%xmm4,%xmm4
punpckldq %xmm0,%xmm4
movdqa %xmm3,%xmm0
punpckhbw %xmm1,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0xed,%xmm0,%xmm0
punpcklbw %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshuflw $0xed,%xmm3,%xmm3
punpckldq %xmm0,%xmm3
packuswb %xmm4,%xmm3
shufps $0xcc,%xmm5,%xmm3
pand   %xmm9,%xmm2
paddb  %xmm10,%xmm2
movdqa %xmm2,%xmm0
punpckhbw %xmm1,%xmm0
pmullw %xmm13,%xmm0
psrlw  $0x8,%xmm0
movdqa %xmm2,%xmm4
punpcklbw %xmm1,%xmm4
pmullw %xmm13,%xmm4
psrlw  $0x8,%xmm4
packuswb %xmm0,%xmm4
psrlw  $0x2,%xmm4
pand   %xmm11,%xmm4
movdqa %xmm4,%xmm0
punpckhbw %xmm0,%xmm0
pmullw %xmm14,%xmm0
pand   %xmm15,%xmm0
punpcklbw %xmm4,%xmm4
pmullw %xmm14,%xmm4
pand   %xmm15,%xmm4
packuswb %xmm0,%xmm4
psubb  %xmm4,%xmm2
psllw  $0x4,%xmm2
pand   %xmm8,%xmm2
andps  %xmm9,%xmm3
paddb  %xmm10,%xmm3
movdqa %xmm3,%xmm0
punpckhbw %xmm1,%xmm0
pmullw %xmm13,%xmm0
psrlw  $0x8,%xmm0
movdqa %xmm3,%xmm4
punpcklbw %xmm1,%xmm4
pmullw %xmm13,%xmm4
psrlw  $0x8,%xmm4
packuswb %xmm0,%xmm4
psrlw  $0x2,%xmm4
pand   %xmm11,%xmm4
movdqa %xmm4,%xmm0
punpckhbw %xmm0,%xmm0
pmullw %xmm14,%xmm0
pand   %xmm15,%xmm0
punpcklbw %xmm4,%xmm4
pmullw %xmm14,%xmm4
pand   %xmm15,%xmm4
packuswb %xmm0,%xmm4
psubb  %xmm4,%xmm3
paddb  %xmm2,%xmm3
movdqu %xmm3,(%rax,%rbx,1)
add    $0x10,%rbx
cmp    %rbx,%rdi
jne    12b0 <sc_via_cli_arg+0x180>
cmp    $0x9,%esi
jae    1491 <sc_via_cli_arg+0x361>
lea    0x0(,%rdi,4),%rbx
jmp    11be <sc_via_cli_arg+0x8e>
mov    %r8d,%esi
and    $0x7,%esi
test   %rsi,%rsi
mov    $0x8,%ebx
cmovne %rsi,%rbx
mov    %rdi,%rsi
mov    %r8,%rdi
sub    %rbx,%rdi
lea    0x0(,%rdi,4),%rbx
movdqa 0xb43(%rip),%xmm9
pxor   %xmm1,%xmm1
movdqa 0xbb6(%rip),%xmm10
movdqa 0xbbd(%rip),%xmm11
movdqa 0xb55(%rip),%xmm4
movdqa 0xb5c(%rip),%xmm12
movdqa 0xb64(%rip),%xmm6
movdqa 0xb6c(%rip),%xmm7
movdqa 0xb73(%rip),%xmm8
nopl   (%rax)
movdqu 0x2(%r14,%rsi,4),%xmm2
movdqu 0x12(%r14,%rsi,4),%xmm3
movdqa %xmm3,%xmm5
pand   %xmm9,%xmm5
movdqa %xmm2,%xmm0
pand   %xmm9,%xmm0
packuswb %xmm5,%xmm0
packuswb %xmm0,%xmm0
movdqa %xmm3,%xmm5
punpckhbw %xmm1,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pshuflw $0xd4,%xmm5,%xmm5
punpcklbw %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshuflw $0xd4,%xmm3,%xmm3
punpckldq %xmm5,%xmm3
movdqa %xmm2,%xmm5
punpckhbw %xmm1,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pshuflw $0xed,%xmm5,%xmm5
punpcklbw %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshuflw $0xed,%xmm2,%xmm2
punpckldq %xmm5,%xmm2
packuswb %xmm3,%xmm2
pshufd $0xec,%xmm2,%xmm2
pand   %xmm10,%xmm0
paddb  %xmm11,%xmm0
movdqa %xmm0,%xmm3
punpckhbw %xmm1,%xmm3
pmullw %xmm4,%xmm3
psrlw  $0x8,%xmm3
movdqa %xmm0,%xmm5
punpcklbw %xmm1,%xmm5
pmullw %xmm4,%xmm5
psrlw  $0x8,%xmm5
packuswb %xmm3,%xmm5
psrlw  $0x2,%xmm5
pand   %xmm12,%xmm5
movdqa %xmm5,%xmm3
punpckhbw %xmm3,%xmm3
pmullw %xmm6,%xmm3
pand   %xmm7,%xmm3
punpcklbw %xmm5,%xmm5
pmullw %xmm6,%xmm5
pand   %xmm7,%xmm5
packuswb %xmm3,%xmm5
psubb  %xmm5,%xmm0
psllw  $0x4,%xmm0
pand   %xmm8,%xmm0
pand   %xmm10,%xmm2
paddb  %xmm11,%xmm2
movdqa %xmm2,%xmm3
punpcklbw %xmm1,%xmm3
pmullw %xmm4,%xmm3
psrlw  $0x8,%xmm3
packuswb %xmm3,%xmm3
psrlw  $0x2,%xmm3
pand   %xmm12,%xmm3
punpcklbw %xmm3,%xmm3
pmullw %xmm6,%xmm3
pand   %xmm7,%xmm3
packuswb %xmm3,%xmm3
psubb  %xmm3,%xmm2
paddb  %xmm0,%xmm2
movq   %xmm2,(%rax,%rsi,1)
add    $0x8,%rsi
cmp    %rsi,%rdi
jne    1500 <sc_via_cli_arg+0x3d0>
jmp    11be <sc_via_cli_arg+0x8e>

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

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