#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 /*<<< orphan*/ MemSet(char *, int /*<<< orphan*/, int);
int atoi(char *);
scalar_t__ malloc(int);
char *Unstream(char *stream, int *sz) {
  char *r;
  char t;
  int size, i, j;
  t = stream[10];
  stream[10] = 0;
  size = atoi(stream);
  stream[10] = t;
  r = (char *)malloc(size);
  if (!r)
    return 0;
  MemSet(r, 0, size);
  j = 10;
  for (i = 0; i < size; i++) {
    r[i] += 16 * (stream[j++] - 'a');
    r[i] += (stream[j++] - 'a');
  }
  if (sz != 0)
    *sz = size;
  return r;
}


x86 assembly (clang, -O0):
<Unstream>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    0xa(%rax),%al
mov    %al,-0x21(%rbp)
mov    -0x10(%rbp),%rax
movb   $0x0,0xa(%rax)
mov    -0x10(%rbp),%rdi
call   1050 <atoi@plt>
mov    %eax,-0x28(%rbp)
mov    -0x21(%rbp),%cl
mov    -0x10(%rbp),%rax
mov    %cl,0xa(%rax)
mov    -0x28(%rbp),%edi
call   1030 <malloc@plt>
mov    %rax,-0x20(%rbp)
cmpq   $0x0,-0x20(%rbp)
jne    118c <Unstream+0x5c>
movq   $0x0,-0x8(%rbp)
jmp    1235 <Unstream+0x105>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%edx
xor    %esi,%esi
call   1040 <MemSet@plt>
movl   $0xa,-0x30(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    1219 <Unstream+0xe9>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x30(%rbp)
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%esi
sub    $0x61,%esi
shl    $0x4,%esi
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
add    %esi,%edx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x30(%rbp)
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%esi
sub    $0x61,%esi
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
add    %esi,%edx
mov    %dl,(%rax,%rcx,1)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11a8 <Unstream+0x78>
cmpq   $0x0,-0x18(%rbp)
je     122d <Unstream+0xfd>
mov    -0x28(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Unstream>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %rdi,%r13
mov    0xa(%rdi),%r15b
movb   $0x0,0xa(%rdi)
call   1050 <atoi@plt>
mov    %eax,%r12d
mov    %r15b,0xa(%r13)
mov    %eax,%edi
call   1030 <malloc@plt>
test   %rax,%rax
je     118f <Unstream+0x5f>
mov    %rax,%r15
mov    %rax,%rdi
xor    %esi,%esi
mov    %r12d,%edx
call   1040 <MemSet@plt>
test   %r12d,%r12d
jle    1544 <Unstream+0x414>
mov    %r12d,%r8d
mov    $0xa,%edx
cmp    $0x8,%r12d
jae    1197 <Unstream+0x67>
xor    %ecx,%ecx
jmp    1510 <Unstream+0x3e0>
xor    %r15d,%r15d
jmp    154c <Unstream+0x41c>
lea    0xa(,%r8,2),%rcx
add    %r13,%rcx
cmp    %r15,%rcx
jbe    11bd <Unstream+0x8d>
mov    %r15,%rcx
add    %r8,%rcx
lea    0xa(%r13),%rsi
cmp    %rcx,%rsi
jae    11bd <Unstream+0x8d>
xor    %ecx,%ecx
jmp    1510 <Unstream+0x3e0>
cmp    $0x10,%r12d
jae    12f6 <Unstream+0x1c6>
xor    %ecx,%ecx
mov    %rcx,%rsi
mov    %r8d,%ecx
and    $0xfffffff8,%ecx
lea    (%rcx,%rcx,1),%rdx
add    $0xa,%rdx
movdqa 0xe1e(%rip),%xmm0
movdqa 0xe36(%rip),%xmm1
movdqa 0xe3e(%rip),%xmm2
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl 0xa(%r13,%rsi,2),%edi
movzbl 0xe(%r13,%rsi,2),%ebp
movzbl 0x12(%r13,%rsi,2),%r9d
movzbl 0x10(%r13,%rsi,2),%eax
shl    $0x8,%eax
or     %ebp,%eax
movzbl 0xc(%r13,%rsi,2),%ebp
shl    $0x8,%ebp
or     %edi,%ebp
movd   %ebp,%xmm4
pinsrw $0x1,%eax,%xmm4
movzbl 0x14(%r13,%rsi,2),%eax
shl    $0x8,%eax
or     %r9d,%eax
pinsrw $0x2,%eax,%xmm4
movzbl 0x16(%r13,%rsi,2),%eax
movzbl 0x18(%r13,%rsi,2),%edi
shl    $0x8,%edi
or     %eax,%edi
pinsrw $0x3,%edi,%xmm4
psllw  $0x4,%xmm4
pand   %xmm0,%xmm4
movq   (%r15,%rsi,1),%xmm3
paddb  %xmm4,%xmm3
paddb  %xmm1,%xmm3
movq   %xmm3,(%r15,%rsi,1)
movzbl 0xb(%r13,%rsi,2),%eax
movzbl 0xf(%r13,%rsi,2),%edi
movzbl 0x13(%r13,%rsi,2),%r9d
movzbl 0x11(%r13,%rsi,2),%ebp
shl    $0x8,%ebp
or     %edi,%ebp
movzbl 0xd(%r13,%rsi,2),%edi
shl    $0x8,%edi
or     %eax,%edi
movd   %edi,%xmm4
pinsrw $0x1,%ebp,%xmm4
movzbl 0x17(%r13,%rsi,2),%eax
movzbl 0x15(%r13,%rsi,2),%edi
shl    $0x8,%edi
or     %r9d,%edi
pinsrw $0x2,%edi,%xmm4
movzbl 0x19(%r13,%rsi,2),%edi
shl    $0x8,%edi
or     %eax,%edi
pinsrw $0x3,%edi,%xmm4
paddb  %xmm3,%xmm4
paddb  %xmm2,%xmm4
movq   %xmm4,(%r15,%rsi,1)
add    $0x8,%rsi
cmp    %rsi,%rcx
jne    1200 <Unstream+0xd0>
cmp    %r8,%rcx
jne    1510 <Unstream+0x3e0>
jmp    1544 <Unstream+0x414>
mov    %r8d,%ecx
and    $0xfffffff0,%ecx
lea    0x29(%r13),%rdx
xor    %esi,%esi
movdqa 0xcf6(%rip),%xmm0
movdqa 0xcfe(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl -0x1(%rdx,%rsi,2),%edi
movd   %edi,%xmm2
movzbl -0x3(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
punpcklbw %xmm2,%xmm3
movzbl -0x5(%rdx,%rsi,2),%edi
movd   %edi,%xmm2
movzbl -0x7(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
punpcklbw %xmm2,%xmm4
punpcklwd %xmm3,%xmm4
movzbl -0x9(%rdx,%rsi,2),%edi
movd   %edi,%xmm2
movzbl -0xb(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
punpcklbw %xmm2,%xmm3
movzbl -0xd(%rdx,%rsi,2),%edi
movd   %edi,%xmm5
movzbl -0xf(%rdx,%rsi,2),%edi
movd   %edi,%xmm2
punpcklbw %xmm5,%xmm2
punpcklwd %xmm3,%xmm2
punpckldq %xmm4,%xmm2
movzbl -0x11(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
movzbl -0x13(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
punpcklbw %xmm3,%xmm4
movzbl -0x15(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
movzbl -0x17(%rdx,%rsi,2),%edi
movd   %edi,%xmm5
punpcklbw %xmm3,%xmm5
punpcklwd %xmm4,%xmm5
movzbl -0x19(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
movzbl -0x1b(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
punpcklbw %xmm3,%xmm4
movzbl -0x1d(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
movzbl -0x1f(%rdx,%rsi,2),%edi
movd   %edi,%xmm6
punpcklbw %xmm3,%xmm6
punpcklwd %xmm4,%xmm6
punpckldq %xmm5,%xmm6
punpcklqdq %xmm2,%xmm6
psllw  $0x4,%xmm6
pand   %xmm0,%xmm6
movdqu (%r15,%rsi,1),%xmm2
paddb  %xmm0,%xmm2
paddb  %xmm6,%xmm2
movdqu %xmm2,(%r15,%rsi,1)
movzbl (%rdx,%rsi,2),%edi
movd   %edi,%xmm3
movzbl -0x2(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
punpcklbw %xmm3,%xmm4
movzbl -0x4(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
movzbl -0x6(%rdx,%rsi,2),%edi
movd   %edi,%xmm5
punpcklbw %xmm3,%xmm5
punpcklwd %xmm4,%xmm5
movzbl -0x8(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
movzbl -0xa(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
punpcklbw %xmm3,%xmm4
movzbl -0xc(%rdx,%rsi,2),%edi
movd   %edi,%xmm6
movzbl -0xe(%rdx,%rsi,2),%edi
movd   %edi,%xmm3
punpcklbw %xmm6,%xmm3
punpcklwd %xmm4,%xmm3
punpckldq %xmm5,%xmm3
movzbl -0x10(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
movzbl -0x12(%rdx,%rsi,2),%edi
movd   %edi,%xmm5
punpcklbw %xmm4,%xmm5
movzbl -0x14(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
movzbl -0x16(%rdx,%rsi,2),%edi
movd   %edi,%xmm6
punpcklbw %xmm4,%xmm6
punpcklwd %xmm5,%xmm6
movzbl -0x18(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
movzbl -0x1a(%rdx,%rsi,2),%edi
movd   %edi,%xmm5
punpcklbw %xmm4,%xmm5
movzbl -0x1c(%rdx,%rsi,2),%edi
movd   %edi,%xmm4
movzbl -0x1e(%rdx,%rsi,2),%edi
movd   %edi,%xmm7
punpcklbw %xmm4,%xmm7
punpcklwd %xmm5,%xmm7
punpckldq %xmm6,%xmm7
punpcklqdq %xmm3,%xmm7
paddb  %xmm2,%xmm7
paddb  %xmm1,%xmm7
movdqu %xmm7,(%r15,%rsi,1)
add    $0x10,%rsi
cmp    %rsi,%rcx
jne    1320 <Unstream+0x1f0>
cmp    %r8,%rcx
je     1544 <Unstream+0x414>
test   $0x8,%r8b
jne    11c9 <Unstream+0x99>
lea    (%rcx,%rcx,1),%rdx
or     $0xa,%rdx
cs nopw 0x0(%rax,%rax,1)
mov    %rdx,%rax
or     $0x1,%rax
movzbl 0x0(%r13,%rdx,1),%ebx
shl    $0x4,%bl
add    (%r15,%rcx,1),%bl
add    $0xf0,%bl
mov    %bl,(%r15,%rcx,1)
add    $0x2,%rdx
add    0x0(%r13,%rax,1),%bl
add    $0x9f,%bl
mov    %bl,(%r15,%rcx,1)
add    $0x1,%rcx
cmp    %rcx,%r8
jne    1510 <Unstream+0x3e0>
test   %r14,%r14
je     154c <Unstream+0x41c>
mov    %r12d,(%r14)
mov    %r15,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i8* @Unstream(i8* nocapture %0, i32* writeonly %1) {
%3 = getelementptr inbounds i8, i8* %0, i64 10
%4 = load i8, i8* %3
store i8 0, i8* %3
%5 = tail call i32 @atoi(i8* %0)
store i8 %4, i8* %3
%6 = tail call i64 @malloc(i32 %5)
%7 = inttoptr i64 %6 to i8*
%8 = icmp eq i64 %6, 0
br i1 %8, label %288, label %9
9: ; preds = %2
%10 = tail call i32 @MemSet(i8* %7, i32 0, i32 %5)
%11 = icmp sgt i32 %5, 0
br i1 %11, label %12, label %285
12: ; preds = %9
%13 = zext i32 %5 to i64
%14 = icmp ult i32 %5, 8
br i1 %14, label %264, label %15
15: ; preds = %12
%16 = getelementptr i8, i8* %7, i64 %13
%17 = getelementptr i8, i8* %0, i64 10
%18 = shl nuw nsw i64 %13, 1
%19 = add nuw nsw i64 %18, 10
%20 = getelementptr i8, i8* %0, i64 %19
%21 = icmp ugt i8* %20, %7
%22 = icmp ult i8* %17, %16
%23 = and i1 %21, %22
br i1 %23, label %264, label %24
24: ; preds = %15
%25 = icmp ult i32 %5, 16
br i1 %25, label %178, label %26
26: ; preds = %24
%27 = and i64 %13, 4294967280
br label %28
28: ; preds = %28, %26
%29 = phi i64 [ 0, %26 ], [ %169, %28 ]
%30 = shl i64 %29, 1
%31 = or i64 %30, 10
%32 = or i64 %30, 12
%33 = or i64 %30, 14
%34 = or i64 %30, 16
%35 = or i64 %30, 18
%36 = or i64 %30, 20
%37 = or i64 %30, 22
%38 = or i64 %30, 24
%39 = or i64 %30, 26
%40 = or i64 %30, 28
%41 = or i64 %30, 30
%42 = add i64 %30, 32
%43 = add i64 %30, 34
%44 = add i64 %30, 36
%45 = add i64 %30, 38
%46 = add i64 %30, 40
%47 = or i64 %30, 11
%48 = or i64 %30, 13
%49 = or i64 %30, 15
%50 = or i64 %30, 17
%51 = or i64 %30, 19
%52 = or i64 %30, 21
%53 = or i64 %30, 23
%54 = or i64 %30, 25
%55 = or i64 %30, 27
%56 = or i64 %30, 29
%57 = or i64 %30, 31
%58 = or i64 %42, 1
%59 = or i64 %43, 1
%60 = or i64 %44, 1
%61 = or i64 %45, 1
%62 = or i64 %46, 1
%63 = getelementptr inbounds i8, i8* %0, i64 %31
%64 = getelementptr inbounds i8, i8* %0, i64 %32
%65 = getelementptr inbounds i8, i8* %0, i64 %33
%66 = getelementptr inbounds i8, i8* %0, i64 %34
%67 = getelementptr inbounds i8, i8* %0, i64 %35
%68 = getelementptr inbounds i8, i8* %0, i64 %36
%69 = getelementptr inbounds i8, i8* %0, i64 %37
%70 = getelementptr inbounds i8, i8* %0, i64 %38
%71 = getelementptr inbounds i8, i8* %0, i64 %39
%72 = getelementptr inbounds i8, i8* %0, i64 %40
%73 = getelementptr inbounds i8, i8* %0, i64 %41
%74 = getelementptr inbounds i8, i8* %0, i64 %42
%75 = getelementptr inbounds i8, i8* %0, i64 %43
%76 = getelementptr inbounds i8, i8* %0, i64 %44
%77 = getelementptr inbounds i8, i8* %0, i64 %45
%78 = getelementptr inbounds i8, i8* %0, i64 %46
%79 = load i8, i8* %63
%80 = load i8, i8* %64
%81 = load i8, i8* %65
%82 = load i8, i8* %66
%83 = load i8, i8* %67
%84 = load i8, i8* %68
%85 = load i8, i8* %69
%86 = load i8, i8* %70
%87 = load i8, i8* %71
%88 = load i8, i8* %72
%89 = load i8, i8* %73
%90 = load i8, i8* %74
%91 = load i8, i8* %75
%92 = load i8, i8* %76
%93 = load i8, i8* %77
%94 = load i8, i8* %78
%95 = insertelement <16 x i8> poison, i8 %79, i64 0
%96 = insertelement <16 x i8> %95, i8 %80, i64 1
%97 = insertelement <16 x i8> %96, i8 %81, i64 2
%98 = insertelement <16 x i8> %97, i8 %82, i64 3
%99 = insertelement <16 x i8> %98, i8 %83, i64 4
%100 = insertelement <16 x i8> %99, i8 %84, i64 5
%101 = insertelement <16 x i8> %100, i8 %85, i64 6
%102 = insertelement <16 x i8> %101, i8 %86, i64 7
%103 = insertelement <16 x i8> %102, i8 %87, i64 8
%104 = insertelement <16 x i8> %103, i8 %88, i64 9
%105 = insertelement <16 x i8> %104, i8 %89, i64 10
%106 = insertelement <16 x i8> %105, i8 %90, i64 11
%107 = insertelement <16 x i8> %106, i8 %91, i64 12
%108 = insertelement <16 x i8> %107, i8 %92, i64 13
%109 = insertelement <16 x i8> %108, i8 %93, i64 14
%110 = insertelement <16 x i8> %109, i8 %94, i64 15
%111 = shl <16 x i8> %110, <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>
%112 = add <16 x i8> %111, <i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16>
%113 = getelementptr inbounds i8, i8* %7, i64 %29
%114 = bitcast i8* %113 to <16 x i8>*
%115 = load <16 x i8>, <16 x i8>* %114
%116 = add <16 x i8> %112, %115
%117 = bitcast i8* %113 to <16 x i8>*
store <16 x i8> %116, <16 x i8>* %117
%118 = getelementptr inbounds i8, i8* %0, i64 %47
%119 = getelementptr inbounds i8, i8* %0, i64 %48
%120 = getelementptr inbounds i8, i8* %0, i64 %49
%121 = getelementptr inbounds i8, i8* %0, i64 %50
%122 = getelementptr inbounds i8, i8* %0, i64 %51
%123 = getelementptr inbounds i8, i8* %0, i64 %52
%124 = getelementptr inbounds i8, i8* %0, i64 %53
%125 = getelementptr inbounds i8, i8* %0, i64 %54
%126 = getelementptr inbounds i8, i8* %0, i64 %55
%127 = getelementptr inbounds i8, i8* %0, i64 %56
%128 = getelementptr inbounds i8, i8* %0, i64 %57
%129 = getelementptr inbounds i8, i8* %0, i64 %58
%130 = getelementptr inbounds i8, i8* %0, i64 %59
%131 = getelementptr inbounds i8, i8* %0, i64 %60
%132 = getelementptr inbounds i8, i8* %0, i64 %61
%133 = getelementptr inbounds i8, i8* %0, i64 %62
%134 = load i8, i8* %118
%135 = load i8, i8* %119
%136 = load i8, i8* %120
%137 = load i8, i8* %121
%138 = load i8, i8* %122
%139 = load i8, i8* %123
%140 = load i8, i8* %124
%141 = load i8, i8* %125
%142 = load i8, i8* %126
%143 = load i8, i8* %127
%144 = load i8, i8* %128
%145 = load i8, i8* %129
%146 = load i8, i8* %130
%147 = load i8, i8* %131
%148 = load i8, i8* %132
%149 = load i8, i8* %133
%150 = insertelement <16 x i8> poison, i8 %134, i64 0
%151 = insertelement <16 x i8> %150, i8 %135, i64 1
%152 = insertelement <16 x i8> %151, i8 %136, i64 2
%153 = insertelement <16 x i8> %152, i8 %137, i64 3
%154 = insertelement <16 x i8> %153, i8 %138, i64 4
%155 = insertelement <16 x i8> %154, i8 %139, i64 5
%156 = insertelement <16 x i8> %155, i8 %140, i64 6
%157 = insertelement <16 x i8> %156, i8 %141, i64 7
%158 = insertelement <16 x i8> %157, i8 %142, i64 8
%159 = insertelement <16 x i8> %158, i8 %143, i64 9
%160 = insertelement <16 x i8> %159, i8 %144, i64 10
%161 = insertelement <16 x i8> %160, i8 %145, i64 11
%162 = insertelement <16 x i8> %161, i8 %146, i64 12
%163 = insertelement <16 x i8> %162, i8 %147, i64 13
%164 = insertelement <16 x i8> %163, i8 %148, i64 14
%165 = insertelement <16 x i8> %164, i8 %149, i64 15
%166 = add <16 x i8> %165, <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>
%167 = add <16 x i8> %166, %116
%168 = bitcast i8* %113 to <16 x i8>*
store <16 x i8> %167, <16 x i8>* %168
%169 = add nuw i64 %29, 16
%170 = icmp eq i64 %169, %27
br i1 %170, label %171, label %28
171: ; preds = %28
%172 = icmp eq i64 %27, %13
br i1 %172, label %285, label %173
173: ; preds = %171
%174 = shl nuw nsw i64 %27, 1
%175 = or i64 %174, 10
%176 = and i64 %13, 8
%177 = icmp eq i64 %176, 0
br i1 %177, label %264, label %178
178: ; preds = %24, %173
%179 = phi i64 [ %27, %173 ], [ 0, %24 ]
%180 = and i64 %13, 4294967288
%181 = shl nuw nsw i64 %180, 1
%182 = or i64 %181, 10
br label %183
183: ; preds = %183, %178
%184 = phi i64 [ %179, %178 ], [ %260, %183 ]
%185 = shl i64 %184, 1
%186 = or i64 %185, 10
%187 = or i64 %185, 12
%188 = or i64 %185, 14
%189 = add i64 %185, 16
%190 = add i64 %185, 18
%191 = add i64 %185, 20
%192 = add i64 %185, 22
%193 = add i64 %185, 24
%194 = or i64 %185, 11
%195 = or i64 %185, 13
%196 = or i64 %185, 15
%197 = or i64 %189, 1
%198 = or i64 %190, 1
%199 = or i64 %191, 1
%200 = or i64 %192, 1
%201 = or i64 %193, 1
%202 = getelementptr inbounds i8, i8* %0, i64 %186
%203 = getelementptr inbounds i8, i8* %0, i64 %187
%204 = getelementptr inbounds i8, i8* %0, i64 %188
%205 = getelementptr inbounds i8, i8* %0, i64 %189
%206 = getelementptr inbounds i8, i8* %0, i64 %190
%207 = getelementptr inbounds i8, i8* %0, i64 %191
%208 = getelementptr inbounds i8, i8* %0, i64 %192
%209 = getelementptr inbounds i8, i8* %0, i64 %193
%210 = load i8, i8* %202
%211 = load i8, i8* %203
%212 = load i8, i8* %204
%213 = load i8, i8* %205
%214 = load i8, i8* %206
%215 = load i8, i8* %207
%216 = load i8, i8* %208
%217 = load i8, i8* %209
%218 = insertelement <8 x i8> poison, i8 %210, i64 0
%219 = insertelement <8 x i8> %218, i8 %211, i64 1
%220 = insertelement <8 x i8> %219, i8 %212, i64 2
%221 = insertelement <8 x i8> %220, i8 %213, i64 3
%222 = insertelement <8 x i8> %221, i8 %214, i64 4
%223 = insertelement <8 x i8> %222, i8 %215, i64 5
%224 = insertelement <8 x i8> %223, i8 %216, i64 6
%225 = insertelement <8 x i8> %224, i8 %217, i64 7
%226 = shl <8 x i8> %225, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
%227 = add <8 x i8> %226, <i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16, i8 -16>
%228 = getelementptr inbounds i8, i8* %7, i64 %184
%229 = bitcast i8* %228 to <8 x i8>*
%230 = load <8 x i8>, <8 x i8>* %229
%231 = add <8 x i8> %227, %230
%232 = bitcast i8* %228 to <8 x i8>*
store <8 x i8> %231, <8 x i8>* %232
%233 = getelementptr inbounds i8, i8* %0, i64 %194
%234 = getelementptr inbounds i8, i8* %0, i64 %195
%235 = getelementptr inbounds i8, i8* %0, i64 %196
%236 = getelementptr inbounds i8, i8* %0, i64 %197
%237 = getelementptr inbounds i8, i8* %0, i64 %198
%238 = getelementptr inbounds i8, i8* %0, i64 %199
%239 = getelementptr inbounds i8, i8* %0, i64 %200
%240 = getelementptr inbounds i8, i8* %0, i64 %201
%241 = load i8, i8* %233
%242 = load i8, i8* %234
%243 = load i8, i8* %235
%244 = load i8, i8* %236
%245 = load i8, i8* %237
%246 = load i8, i8* %238
%247 = load i8, i8* %239
%248 = load i8, i8* %240
%249 = insertelement <8 x i8> poison, i8 %241, i64 0
%250 = insertelement <8 x i8> %249, i8 %242, i64 1
%251 = insertelement <8 x i8> %250, i8 %243, i64 2
%252 = insertelement <8 x i8> %251, i8 %244, i64 3
%253 = insertelement <8 x i8> %252, i8 %245, i64 4
%254 = insertelement <8 x i8> %253, i8 %246, i64 5
%255 = insertelement <8 x i8> %254, i8 %247, i64 6
%256 = insertelement <8 x i8> %255, i8 %248, i64 7
%257 = add <8 x i8> %256, <i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97>
%258 = add <8 x i8> %257, %231
%259 = bitcast i8* %228 to <8 x i8>*
store <8 x i8> %258, <8 x i8>* %259
%260 = add nuw i64 %184, 8
%261 = icmp eq i64 %260, %180
br i1 %261, label %262, label %183
262: ; preds = %183
%263 = icmp eq i64 %180, %13
br i1 %263, label %285, label %264
264: ; preds = %15, %12, %173, %262
%265 = phi i64 [ 0, %12 ], [ 0, %15 ], [ %27, %173 ], [ %180, %262 ]
%266 = phi i64 [ 10, %12 ], [ 10, %15 ], [ %175, %173 ], [ %182, %262 ]
br label %267
267: ; preds = %264, %267
%268 = phi i64 [ %283, %267 ], [ %265, %264 ]
%269 = phi i64 [ %278, %267 ], [ %266, %264 ]
%270 = or i64 %269, 1
%271 = getelementptr inbounds i8, i8* %0, i64 %269
%272 = load i8, i8* %271
%273 = shl i8 %272, 4
%274 = add i8 %273, -16
%275 = getelementptr inbounds i8, i8* %7, i64 %268
%276 = load i8, i8* %275
%277 = add i8 %274, %276
store i8 %277, i8* %275
%278 = add nuw nsw i64 %269, 2
%279 = getelementptr inbounds i8, i8* %0, i64 %270
%280 = load i8, i8* %279
%281 = add i8 %280, -97
%282 = add i8 %281, %277
store i8 %282, i8* %275
%283 = add nuw nsw i64 %268, 1
%284 = icmp eq i64 %283, %13
br i1 %284, label %285, label %267
285: ; preds = %267, %171, %262, %9
%286 = icmp eq i32* %1, null
br i1 %286, label %288, label %287
287: ; preds = %285
store i32 %5, i32* %1
br label %288
288: ; preds = %285, %287, %2
%289 = phi i8* [ null, %2 ], [ %7, %287 ], [ %7, %285 ]
ret i8* %289
}