#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 */
char *malloc(size_t);
char *rearmar_bitmap(char *bitmap, size_t tam) {
  char *bloque = malloc(tam);
  size_t z = 0;
  for (size_t i = 0; i < tam; i++) {
    bloque[i] = 0;
    for (size_t j = 0; j < 8; j++) {
      bloque[i] = bloque[i] * 2 + bitmap[z++];
    }
  }
  return bloque;
}


x86 assembly (clang, -O0):
<rearmar_bitmap>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
call   1030 <malloc@plt>
mov    %rax,-0x18(%rbp)
movq   $0x0,-0x20(%rbp)
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x10(%rbp),%rax
jae    11c6 <rearmar_bitmap+0xb6>
mov    -0x18(%rbp),%rax
mov    -0x28(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
movq   $0x0,-0x30(%rbp)
cmpq   $0x8,-0x30(%rbp)
jae    11b0 <rearmar_bitmap+0xa0>
mov    -0x18(%rbp),%rax
mov    -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
shl    $0x1,%eax
mov    -0x8(%rbp),%rcx
mov    -0x20(%rbp),%rdx
mov    %rdx,%rsi
add    $0x1,%rsi
mov    %rsi,-0x20(%rbp)
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
mov    -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    115f <rearmar_bitmap+0x4f>
jmp    11b5 <rearmar_bitmap+0xa5>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    113d <rearmar_bitmap+0x2d>
mov    -0x18(%rbp),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rearmar_bitmap>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%rbx
mov    %rdi,%r14
mov    %rsi,%rdi
call   1030 <malloc@plt>
test   %rbx,%rbx
je     185b <rearmar_bitmap+0x74b>
mov    %rax,%r10
cmp    $0x10,%rbx
jae    113f <rearmar_bitmap+0x2f>
xor    %r9d,%r9d
xor    %r8d,%r8d
jmp    180e <rearmar_bitmap+0x6fe>
mov    %rbx,%r9
and    $0xfffffffffffffff0,%r9
lea    0x0(,%r9,8),%r8
lea    0x7f(%r14),%rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl -0x7(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0xf(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
punpcklbw %xmm0,%xmm1
movzbl -0x17(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x1f(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
punpcklwd %xmm1,%xmm2
movzbl -0x27(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x2f(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
punpcklbw %xmm0,%xmm1
movzbl -0x37(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
movzbl -0x3f(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
punpcklbw %xmm3,%xmm0
punpcklwd %xmm1,%xmm0
punpckldq %xmm2,%xmm0
movzbl -0x47(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x4f(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm1,%xmm2
movzbl -0x57(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x5f(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
punpcklwd %xmm2,%xmm3
movzbl -0x67(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x6f(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm1,%xmm2
movzbl -0x77(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
movzbl -0x7f(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
punpcklbw %xmm4,%xmm1
punpcklwd %xmm2,%xmm1
punpckldq %xmm3,%xmm1
punpcklqdq %xmm0,%xmm1
paddb  %xmm1,%xmm1
movzbl -0x6(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0xe(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0x16(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x1e(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
punpcklwd %xmm2,%xmm3
movzbl -0x26(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x2e(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm0,%xmm4
movzbl -0x36(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x3e(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
punpcklwd %xmm4,%xmm2
punpckldq %xmm3,%xmm2
movzbl -0x46(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x4e(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
movzbl -0x56(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x5e(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm0,%xmm4
punpcklwd %xmm3,%xmm4
movzbl -0x66(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x6e(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
movzbl -0x76(%rdi,%rsi,8),%edx
movd   %edx,%xmm5
movzbl -0x7e(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
punpcklbw %xmm5,%xmm0
punpcklwd %xmm3,%xmm0
punpckldq %xmm4,%xmm0
punpcklqdq %xmm2,%xmm0
paddb  %xmm1,%xmm0
paddb  %xmm0,%xmm0
movzbl -0x5(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0xd(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm1,%xmm2
movzbl -0x15(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x1d(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
punpcklwd %xmm2,%xmm3
movzbl -0x25(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x2d(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm1,%xmm4
movzbl -0x35(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x3d(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm1,%xmm2
punpcklwd %xmm4,%xmm2
punpckldq %xmm3,%xmm2
movzbl -0x45(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x4d(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
movzbl -0x55(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x5d(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm1,%xmm4
punpcklwd %xmm3,%xmm4
movzbl -0x65(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x6d(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
movzbl -0x75(%rdi,%rsi,8),%edx
movd   %edx,%xmm5
movzbl -0x7d(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
punpcklbw %xmm5,%xmm1
punpcklwd %xmm3,%xmm1
punpckldq %xmm4,%xmm1
punpcklqdq %xmm2,%xmm1
paddb  %xmm0,%xmm1
paddb  %xmm1,%xmm1
movzbl -0x4(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0xc(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0x14(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x1c(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
punpcklwd %xmm2,%xmm3
movzbl -0x24(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x2c(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm0,%xmm4
movzbl -0x34(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x3c(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
punpcklwd %xmm4,%xmm2
punpckldq %xmm3,%xmm2
movzbl -0x44(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x4c(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
movzbl -0x54(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x5c(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm0,%xmm4
punpcklwd %xmm3,%xmm4
movzbl -0x64(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x6c(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
movzbl -0x74(%rdi,%rsi,8),%edx
movd   %edx,%xmm5
movzbl -0x7c(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
punpcklbw %xmm5,%xmm0
punpcklwd %xmm3,%xmm0
punpckldq %xmm4,%xmm0
punpcklqdq %xmm2,%xmm0
paddb  %xmm1,%xmm0
paddb  %xmm0,%xmm0
movzbl -0x3(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0xb(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm1,%xmm2
movzbl -0x13(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x1b(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
punpcklwd %xmm2,%xmm3
movzbl -0x23(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x2b(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm1,%xmm4
movzbl -0x33(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x3b(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm1,%xmm2
punpcklwd %xmm4,%xmm2
punpckldq %xmm3,%xmm2
movzbl -0x43(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x4b(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
movzbl -0x53(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x5b(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm1,%xmm4
punpcklwd %xmm3,%xmm4
movzbl -0x63(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x6b(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
movzbl -0x73(%rdi,%rsi,8),%edx
movd   %edx,%xmm5
movzbl -0x7b(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
punpcklbw %xmm5,%xmm1
punpcklwd %xmm3,%xmm1
punpckldq %xmm4,%xmm1
punpcklqdq %xmm2,%xmm1
paddb  %xmm0,%xmm1
paddb  %xmm1,%xmm1
movzbl -0x2(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0xa(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0x12(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x1a(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
punpcklwd %xmm2,%xmm3
movzbl -0x22(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x2a(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm0,%xmm4
movzbl -0x32(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x3a(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
punpcklwd %xmm4,%xmm2
punpckldq %xmm3,%xmm2
movzbl -0x42(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x4a(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
movzbl -0x52(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x5a(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm0,%xmm4
punpcklwd %xmm3,%xmm4
movzbl -0x62(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x6a(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
movzbl -0x72(%rdi,%rsi,8),%edx
movd   %edx,%xmm5
movzbl -0x7a(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
punpcklbw %xmm5,%xmm0
punpcklwd %xmm3,%xmm0
punpckldq %xmm4,%xmm0
punpcklqdq %xmm2,%xmm0
paddb  %xmm1,%xmm0
paddb  %xmm0,%xmm0
movzbl -0x1(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x9(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm1,%xmm2
movzbl -0x11(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x19(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
punpcklwd %xmm2,%xmm3
movzbl -0x21(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x29(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm1,%xmm4
movzbl -0x31(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x39(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm1,%xmm2
punpcklwd %xmm4,%xmm2
punpckldq %xmm3,%xmm2
movzbl -0x41(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x49(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
movzbl -0x51(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x59(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm1,%xmm4
punpcklwd %xmm3,%xmm4
movzbl -0x61(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
movzbl -0x69(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm1,%xmm3
movzbl -0x71(%rdi,%rsi,8),%edx
movd   %edx,%xmm5
movzbl -0x79(%rdi,%rsi,8),%edx
movd   %edx,%xmm1
punpcklbw %xmm5,%xmm1
punpcklwd %xmm3,%xmm1
punpckldq %xmm4,%xmm1
punpcklqdq %xmm2,%xmm1
paddb  %xmm0,%xmm1
paddb  %xmm1,%xmm1
movzbl (%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x8(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0x10(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x18(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm0,%xmm3
punpcklwd %xmm2,%xmm3
movzbl -0x20(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
movzbl -0x28(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0x30(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
movzbl -0x38(%rdi,%rsi,8),%edx
movd   %edx,%xmm0
punpcklbw %xmm4,%xmm0
punpcklwd %xmm2,%xmm0
punpckldq %xmm3,%xmm0
movzbl -0x40(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
movzbl -0x48(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm2,%xmm3
movzbl -0x50(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
movzbl -0x58(%rdi,%rsi,8),%edx
movd   %edx,%xmm4
punpcklbw %xmm2,%xmm4
punpcklwd %xmm3,%xmm4
movzbl -0x60(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
movzbl -0x68(%rdi,%rsi,8),%edx
movd   %edx,%xmm3
punpcklbw %xmm2,%xmm3
movzbl -0x70(%rdi,%rsi,8),%edx
movd   %edx,%xmm2
movzbl -0x78(%rdi,%rsi,8),%edx
movd   %edx,%xmm5
punpcklbw %xmm2,%xmm5
punpcklwd %xmm3,%xmm5
punpckldq %xmm4,%xmm5
punpcklqdq %xmm0,%xmm5
paddb  %xmm1,%xmm5
movdqu %xmm5,(%rax,%rsi,1)
add    $0x10,%rsi
cmp    %rsi,%r9
jne    1160 <rearmar_bitmap+0x50>
cmp    %rbx,%r9
je     185b <rearmar_bitmap+0x74b>
sub    %r9,%rbx
add    %r9,%r10
lea    (%r8,%r14,1),%rdx
add    $0x7,%rdx
xor    %esi,%esi
xchg   %ax,%ax
movzbl -0x7(%rdx,%rsi,8),%ecx
add    %cl,%cl
add    -0x6(%rdx,%rsi,8),%cl
add    %cl,%cl
add    -0x5(%rdx,%rsi,8),%cl
add    %cl,%cl
add    -0x4(%rdx,%rsi,8),%cl
add    %cl,%cl
add    -0x3(%rdx,%rsi,8),%cl
add    %cl,%cl
add    -0x2(%rdx,%rsi,8),%cl
add    %cl,%cl
add    -0x1(%rdx,%rsi,8),%cl
add    %cl,%cl
add    (%rdx,%rsi,8),%cl
mov    %cl,(%r10,%rsi,1)
add    $0x1,%rsi
cmp    %rsi,%rbx
jne    1820 <rearmar_bitmap+0x710>
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
define noalias i8* @rearmar_bitmap(i8* nocapture %0, i64 %1) {
%3 = tail call i8* @malloc(i64 %1)
%4 = icmp eq i64 %1, 0
br i1 %4, label %547, label %5
5: ; preds = %2
%6 = icmp ult i64 %1, 16
br i1 %6, label %544, label %7
7: ; preds = %5
%8 = and i64 %1, -16
%9 = shl i64 %8, 3
br label %10
10: ; preds = %10, %7
%11 = phi i64 [ 0, %7 ], [ %540, %10 ]
%12 = shl i64 %11, 3
%13 = or i64 %12, 8
%14 = or i64 %12, 16
%15 = or i64 %12, 24
%16 = or i64 %12, 32
%17 = or i64 %12, 40
%18 = or i64 %12, 48
%19 = or i64 %12, 56
%20 = or i64 %12, 64
%21 = or i64 %12, 72
%22 = or i64 %12, 80
%23 = or i64 %12, 88
%24 = or i64 %12, 96
%25 = or i64 %12, 104
%26 = or i64 %12, 112
%27 = or i64 %12, 120
%28 = getelementptr inbounds i8, i8* %3, i64 %11
%29 = or i64 %12, 1
%30 = or i64 %12, 9
%31 = or i64 %12, 17
%32 = or i64 %12, 25
%33 = or i64 %12, 33
%34 = or i64 %12, 41
%35 = or i64 %12, 49
%36 = or i64 %12, 57
%37 = or i64 %12, 65
%38 = or i64 %12, 73
%39 = or i64 %12, 81
%40 = or i64 %12, 89
%41 = or i64 %12, 97
%42 = or i64 %12, 105
%43 = or i64 %12, 113
%44 = or i64 %12, 121
%45 = getelementptr inbounds i8, i8* %0, i64 %12
%46 = getelementptr inbounds i8, i8* %0, i64 %13
%47 = getelementptr inbounds i8, i8* %0, i64 %14
%48 = getelementptr inbounds i8, i8* %0, i64 %15
%49 = getelementptr inbounds i8, i8* %0, i64 %16
%50 = getelementptr inbounds i8, i8* %0, i64 %17
%51 = getelementptr inbounds i8, i8* %0, i64 %18
%52 = getelementptr inbounds i8, i8* %0, i64 %19
%53 = getelementptr inbounds i8, i8* %0, i64 %20
%54 = getelementptr inbounds i8, i8* %0, i64 %21
%55 = getelementptr inbounds i8, i8* %0, i64 %22
%56 = getelementptr inbounds i8, i8* %0, i64 %23
%57 = getelementptr inbounds i8, i8* %0, i64 %24
%58 = getelementptr inbounds i8, i8* %0, i64 %25
%59 = getelementptr inbounds i8, i8* %0, i64 %26
%60 = getelementptr inbounds i8, i8* %0, i64 %27
%61 = load i8, i8* %45
%62 = load i8, i8* %46
%63 = load i8, i8* %47
%64 = load i8, i8* %48
%65 = load i8, i8* %49
%66 = load i8, i8* %50
%67 = load i8, i8* %51
%68 = load i8, i8* %52
%69 = load i8, i8* %53
%70 = load i8, i8* %54
%71 = load i8, i8* %55
%72 = load i8, i8* %56
%73 = load i8, i8* %57
%74 = load i8, i8* %58
%75 = load i8, i8* %59
%76 = load i8, i8* %60
%77 = insertelement <16 x i8> poison, i8 %61, i64 0
%78 = insertelement <16 x i8> %77, i8 %62, i64 1
%79 = insertelement <16 x i8> %78, i8 %63, i64 2
%80 = insertelement <16 x i8> %79, i8 %64, i64 3
%81 = insertelement <16 x i8> %80, i8 %65, i64 4
%82 = insertelement <16 x i8> %81, i8 %66, i64 5
%83 = insertelement <16 x i8> %82, i8 %67, i64 6
%84 = insertelement <16 x i8> %83, i8 %68, i64 7
%85 = insertelement <16 x i8> %84, i8 %69, i64 8
%86 = insertelement <16 x i8> %85, i8 %70, i64 9
%87 = insertelement <16 x i8> %86, i8 %71, i64 10
%88 = insertelement <16 x i8> %87, i8 %72, i64 11
%89 = insertelement <16 x i8> %88, i8 %73, i64 12
%90 = insertelement <16 x i8> %89, i8 %74, i64 13
%91 = insertelement <16 x i8> %90, i8 %75, i64 14
%92 = insertelement <16 x i8> %91, i8 %76, i64 15
%93 = shl <16 x i8> %92, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%94 = or i64 %12, 2
%95 = or i64 %12, 10
%96 = or i64 %12, 18
%97 = or i64 %12, 26
%98 = or i64 %12, 34
%99 = or i64 %12, 42
%100 = or i64 %12, 50
%101 = or i64 %12, 58
%102 = or i64 %12, 66
%103 = or i64 %12, 74
%104 = or i64 %12, 82
%105 = or i64 %12, 90
%106 = or i64 %12, 98
%107 = or i64 %12, 106
%108 = or i64 %12, 114
%109 = or i64 %12, 122
%110 = getelementptr inbounds i8, i8* %0, i64 %29
%111 = getelementptr inbounds i8, i8* %0, i64 %30
%112 = getelementptr inbounds i8, i8* %0, i64 %31
%113 = getelementptr inbounds i8, i8* %0, i64 %32
%114 = getelementptr inbounds i8, i8* %0, i64 %33
%115 = getelementptr inbounds i8, i8* %0, i64 %34
%116 = getelementptr inbounds i8, i8* %0, i64 %35
%117 = getelementptr inbounds i8, i8* %0, i64 %36
%118 = getelementptr inbounds i8, i8* %0, i64 %37
%119 = getelementptr inbounds i8, i8* %0, i64 %38
%120 = getelementptr inbounds i8, i8* %0, i64 %39
%121 = getelementptr inbounds i8, i8* %0, i64 %40
%122 = getelementptr inbounds i8, i8* %0, i64 %41
%123 = getelementptr inbounds i8, i8* %0, i64 %42
%124 = getelementptr inbounds i8, i8* %0, i64 %43
%125 = getelementptr inbounds i8, i8* %0, i64 %44
%126 = load i8, i8* %110
%127 = load i8, i8* %111
%128 = load i8, i8* %112
%129 = load i8, i8* %113
%130 = load i8, i8* %114
%131 = load i8, i8* %115
%132 = load i8, i8* %116
%133 = load i8, i8* %117
%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 = insertelement <16 x i8> poison, i8 %126, i64 0
%143 = insertelement <16 x i8> %142, i8 %127, i64 1
%144 = insertelement <16 x i8> %143, i8 %128, i64 2
%145 = insertelement <16 x i8> %144, i8 %129, i64 3
%146 = insertelement <16 x i8> %145, i8 %130, i64 4
%147 = insertelement <16 x i8> %146, i8 %131, i64 5
%148 = insertelement <16 x i8> %147, i8 %132, i64 6
%149 = insertelement <16 x i8> %148, i8 %133, i64 7
%150 = insertelement <16 x i8> %149, i8 %134, i64 8
%151 = insertelement <16 x i8> %150, i8 %135, i64 9
%152 = insertelement <16 x i8> %151, i8 %136, i64 10
%153 = insertelement <16 x i8> %152, i8 %137, i64 11
%154 = insertelement <16 x i8> %153, i8 %138, i64 12
%155 = insertelement <16 x i8> %154, i8 %139, i64 13
%156 = insertelement <16 x i8> %155, i8 %140, i64 14
%157 = insertelement <16 x i8> %156, i8 %141, i64 15
%158 = add <16 x i8> %93, %157
%159 = shl <16 x i8> %158, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%160 = or i64 %12, 3
%161 = or i64 %12, 11
%162 = or i64 %12, 19
%163 = or i64 %12, 27
%164 = or i64 %12, 35
%165 = or i64 %12, 43
%166 = or i64 %12, 51
%167 = or i64 %12, 59
%168 = or i64 %12, 67
%169 = or i64 %12, 75
%170 = or i64 %12, 83
%171 = or i64 %12, 91
%172 = or i64 %12, 99
%173 = or i64 %12, 107
%174 = or i64 %12, 115
%175 = or i64 %12, 123
%176 = getelementptr inbounds i8, i8* %0, i64 %94
%177 = getelementptr inbounds i8, i8* %0, i64 %95
%178 = getelementptr inbounds i8, i8* %0, i64 %96
%179 = getelementptr inbounds i8, i8* %0, i64 %97
%180 = getelementptr inbounds i8, i8* %0, i64 %98
%181 = getelementptr inbounds i8, i8* %0, i64 %99
%182 = getelementptr inbounds i8, i8* %0, i64 %100
%183 = getelementptr inbounds i8, i8* %0, i64 %101
%184 = getelementptr inbounds i8, i8* %0, i64 %102
%185 = getelementptr inbounds i8, i8* %0, i64 %103
%186 = getelementptr inbounds i8, i8* %0, i64 %104
%187 = getelementptr inbounds i8, i8* %0, i64 %105
%188 = getelementptr inbounds i8, i8* %0, i64 %106
%189 = getelementptr inbounds i8, i8* %0, i64 %107
%190 = getelementptr inbounds i8, i8* %0, i64 %108
%191 = getelementptr inbounds i8, i8* %0, i64 %109
%192 = load i8, i8* %176
%193 = load i8, i8* %177
%194 = load i8, i8* %178
%195 = load i8, i8* %179
%196 = load i8, i8* %180
%197 = load i8, i8* %181
%198 = load i8, i8* %182
%199 = load i8, i8* %183
%200 = load i8, i8* %184
%201 = load i8, i8* %185
%202 = load i8, i8* %186
%203 = load i8, i8* %187
%204 = load i8, i8* %188
%205 = load i8, i8* %189
%206 = load i8, i8* %190
%207 = load i8, i8* %191
%208 = insertelement <16 x i8> poison, i8 %192, i64 0
%209 = insertelement <16 x i8> %208, i8 %193, i64 1
%210 = insertelement <16 x i8> %209, i8 %194, i64 2
%211 = insertelement <16 x i8> %210, i8 %195, i64 3
%212 = insertelement <16 x i8> %211, i8 %196, i64 4
%213 = insertelement <16 x i8> %212, i8 %197, i64 5
%214 = insertelement <16 x i8> %213, i8 %198, i64 6
%215 = insertelement <16 x i8> %214, i8 %199, i64 7
%216 = insertelement <16 x i8> %215, i8 %200, i64 8
%217 = insertelement <16 x i8> %216, i8 %201, i64 9
%218 = insertelement <16 x i8> %217, i8 %202, i64 10
%219 = insertelement <16 x i8> %218, i8 %203, i64 11
%220 = insertelement <16 x i8> %219, i8 %204, i64 12
%221 = insertelement <16 x i8> %220, i8 %205, i64 13
%222 = insertelement <16 x i8> %221, i8 %206, i64 14
%223 = insertelement <16 x i8> %222, i8 %207, i64 15
%224 = add <16 x i8> %159, %223
%225 = shl <16 x i8> %224, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%226 = or i64 %12, 4
%227 = or i64 %12, 12
%228 = or i64 %12, 20
%229 = or i64 %12, 28
%230 = or i64 %12, 36
%231 = or i64 %12, 44
%232 = or i64 %12, 52
%233 = or i64 %12, 60
%234 = or i64 %12, 68
%235 = or i64 %12, 76
%236 = or i64 %12, 84
%237 = or i64 %12, 92
%238 = or i64 %12, 100
%239 = or i64 %12, 108
%240 = or i64 %12, 116
%241 = or i64 %12, 124
%242 = getelementptr inbounds i8, i8* %0, i64 %160
%243 = getelementptr inbounds i8, i8* %0, i64 %161
%244 = getelementptr inbounds i8, i8* %0, i64 %162
%245 = getelementptr inbounds i8, i8* %0, i64 %163
%246 = getelementptr inbounds i8, i8* %0, i64 %164
%247 = getelementptr inbounds i8, i8* %0, i64 %165
%248 = getelementptr inbounds i8, i8* %0, i64 %166
%249 = getelementptr inbounds i8, i8* %0, i64 %167
%250 = getelementptr inbounds i8, i8* %0, i64 %168
%251 = getelementptr inbounds i8, i8* %0, i64 %169
%252 = getelementptr inbounds i8, i8* %0, i64 %170
%253 = getelementptr inbounds i8, i8* %0, i64 %171
%254 = getelementptr inbounds i8, i8* %0, i64 %172
%255 = getelementptr inbounds i8, i8* %0, i64 %173
%256 = getelementptr inbounds i8, i8* %0, i64 %174
%257 = getelementptr inbounds i8, i8* %0, i64 %175
%258 = load i8, i8* %242
%259 = load i8, i8* %243
%260 = load i8, i8* %244
%261 = load i8, i8* %245
%262 = load i8, i8* %246
%263 = load i8, i8* %247
%264 = load i8, i8* %248
%265 = load i8, i8* %249
%266 = load i8, i8* %250
%267 = load i8, i8* %251
%268 = load i8, i8* %252
%269 = load i8, i8* %253
%270 = load i8, i8* %254
%271 = load i8, i8* %255
%272 = load i8, i8* %256
%273 = load i8, i8* %257
%274 = insertelement <16 x i8> poison, i8 %258, i64 0
%275 = insertelement <16 x i8> %274, i8 %259, i64 1
%276 = insertelement <16 x i8> %275, i8 %260, i64 2
%277 = insertelement <16 x i8> %276, i8 %261, i64 3
%278 = insertelement <16 x i8> %277, i8 %262, i64 4
%279 = insertelement <16 x i8> %278, i8 %263, i64 5
%280 = insertelement <16 x i8> %279, i8 %264, i64 6
%281 = insertelement <16 x i8> %280, i8 %265, i64 7
%282 = insertelement <16 x i8> %281, i8 %266, i64 8
%283 = insertelement <16 x i8> %282, i8 %267, i64 9
%284 = insertelement <16 x i8> %283, i8 %268, i64 10
%285 = insertelement <16 x i8> %284, i8 %269, i64 11
%286 = insertelement <16 x i8> %285, i8 %270, i64 12
%287 = insertelement <16 x i8> %286, i8 %271, i64 13
%288 = insertelement <16 x i8> %287, i8 %272, i64 14
%289 = insertelement <16 x i8> %288, i8 %273, i64 15
%290 = add <16 x i8> %225, %289
%291 = shl <16 x i8> %290, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%292 = or i64 %12, 5
%293 = or i64 %12, 13
%294 = or i64 %12, 21
%295 = or i64 %12, 29
%296 = or i64 %12, 37
%297 = or i64 %12, 45
%298 = or i64 %12, 53
%299 = or i64 %12, 61
%300 = or i64 %12, 69
%301 = or i64 %12, 77
%302 = or i64 %12, 85
%303 = or i64 %12, 93
%304 = or i64 %12, 101
%305 = or i64 %12, 109
%306 = or i64 %12, 117
%307 = or i64 %12, 125
%308 = getelementptr inbounds i8, i8* %0, i64 %226
%309 = getelementptr inbounds i8, i8* %0, i64 %227
%310 = getelementptr inbounds i8, i8* %0, i64 %228
%311 = getelementptr inbounds i8, i8* %0, i64 %229
%312 = getelementptr inbounds i8, i8* %0, i64 %230
%313 = getelementptr inbounds i8, i8* %0, i64 %231
%314 = getelementptr inbounds i8, i8* %0, i64 %232
%315 = getelementptr inbounds i8, i8* %0, i64 %233
%316 = getelementptr inbounds i8, i8* %0, i64 %234
%317 = getelementptr inbounds i8, i8* %0, i64 %235
%318 = getelementptr inbounds i8, i8* %0, i64 %236
%319 = getelementptr inbounds i8, i8* %0, i64 %237
%320 = getelementptr inbounds i8, i8* %0, i64 %238
%321 = getelementptr inbounds i8, i8* %0, i64 %239
%322 = getelementptr inbounds i8, i8* %0, i64 %240
%323 = getelementptr inbounds i8, i8* %0, i64 %241
%324 = load i8, i8* %308
%325 = load i8, i8* %309
%326 = load i8, i8* %310
%327 = load i8, i8* %311
%328 = load i8, i8* %312
%329 = load i8, i8* %313
%330 = load i8, i8* %314
%331 = load i8, i8* %315
%332 = load i8, i8* %316
%333 = load i8, i8* %317
%334 = load i8, i8* %318
%335 = load i8, i8* %319
%336 = load i8, i8* %320
%337 = load i8, i8* %321
%338 = load i8, i8* %322
%339 = load i8, i8* %323
%340 = insertelement <16 x i8> poison, i8 %324, i64 0
%341 = insertelement <16 x i8> %340, i8 %325, i64 1
%342 = insertelement <16 x i8> %341, i8 %326, i64 2
%343 = insertelement <16 x i8> %342, i8 %327, i64 3
%344 = insertelement <16 x i8> %343, i8 %328, i64 4
%345 = insertelement <16 x i8> %344, i8 %329, i64 5
%346 = insertelement <16 x i8> %345, i8 %330, i64 6
%347 = insertelement <16 x i8> %346, i8 %331, i64 7
%348 = insertelement <16 x i8> %347, i8 %332, i64 8
%349 = insertelement <16 x i8> %348, i8 %333, i64 9
%350 = insertelement <16 x i8> %349, i8 %334, i64 10
%351 = insertelement <16 x i8> %350, i8 %335, i64 11
%352 = insertelement <16 x i8> %351, i8 %336, i64 12
%353 = insertelement <16 x i8> %352, i8 %337, i64 13
%354 = insertelement <16 x i8> %353, i8 %338, i64 14
%355 = insertelement <16 x i8> %354, i8 %339, i64 15
%356 = add <16 x i8> %291, %355
%357 = shl <16 x i8> %356, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%358 = or i64 %12, 6
%359 = or i64 %12, 14
%360 = or i64 %12, 22
%361 = or i64 %12, 30
%362 = or i64 %12, 38
%363 = or i64 %12, 46
%364 = or i64 %12, 54
%365 = or i64 %12, 62
%366 = or i64 %12, 70
%367 = or i64 %12, 78
%368 = or i64 %12, 86
%369 = or i64 %12, 94
%370 = or i64 %12, 102
%371 = or i64 %12, 110
%372 = or i64 %12, 118
%373 = or i64 %12, 126
%374 = getelementptr inbounds i8, i8* %0, i64 %292
%375 = getelementptr inbounds i8, i8* %0, i64 %293
%376 = getelementptr inbounds i8, i8* %0, i64 %294
%377 = getelementptr inbounds i8, i8* %0, i64 %295
%378 = getelementptr inbounds i8, i8* %0, i64 %296
%379 = getelementptr inbounds i8, i8* %0, i64 %297
%380 = getelementptr inbounds i8, i8* %0, i64 %298
%381 = getelementptr inbounds i8, i8* %0, i64 %299
%382 = getelementptr inbounds i8, i8* %0, i64 %300
%383 = getelementptr inbounds i8, i8* %0, i64 %301
%384 = getelementptr inbounds i8, i8* %0, i64 %302
%385 = getelementptr inbounds i8, i8* %0, i64 %303
%386 = getelementptr inbounds i8, i8* %0, i64 %304
%387 = getelementptr inbounds i8, i8* %0, i64 %305
%388 = getelementptr inbounds i8, i8* %0, i64 %306
%389 = getelementptr inbounds i8, i8* %0, i64 %307
%390 = load i8, i8* %374
%391 = load i8, i8* %375
%392 = load i8, i8* %376
%393 = load i8, i8* %377
%394 = load i8, i8* %378
%395 = load i8, i8* %379
%396 = load i8, i8* %380
%397 = load i8, i8* %381
%398 = load i8, i8* %382
%399 = load i8, i8* %383
%400 = load i8, i8* %384
%401 = load i8, i8* %385
%402 = load i8, i8* %386
%403 = load i8, i8* %387
%404 = load i8, i8* %388
%405 = load i8, i8* %389
%406 = insertelement <16 x i8> poison, i8 %390, i64 0
%407 = insertelement <16 x i8> %406, i8 %391, i64 1
%408 = insertelement <16 x i8> %407, i8 %392, i64 2
%409 = insertelement <16 x i8> %408, i8 %393, i64 3
%410 = insertelement <16 x i8> %409, i8 %394, i64 4
%411 = insertelement <16 x i8> %410, i8 %395, i64 5
%412 = insertelement <16 x i8> %411, i8 %396, i64 6
%413 = insertelement <16 x i8> %412, i8 %397, i64 7
%414 = insertelement <16 x i8> %413, i8 %398, i64 8
%415 = insertelement <16 x i8> %414, i8 %399, i64 9
%416 = insertelement <16 x i8> %415, i8 %400, i64 10
%417 = insertelement <16 x i8> %416, i8 %401, i64 11
%418 = insertelement <16 x i8> %417, i8 %402, i64 12
%419 = insertelement <16 x i8> %418, i8 %403, i64 13
%420 = insertelement <16 x i8> %419, i8 %404, i64 14
%421 = insertelement <16 x i8> %420, i8 %405, i64 15
%422 = add <16 x i8> %357, %421
%423 = shl <16 x i8> %422, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%424 = or i64 %12, 7
%425 = or i64 %12, 15
%426 = or i64 %12, 23
%427 = or i64 %12, 31
%428 = or i64 %12, 39
%429 = or i64 %12, 47
%430 = or i64 %12, 55
%431 = or i64 %12, 63
%432 = or i64 %12, 71
%433 = or i64 %12, 79
%434 = or i64 %12, 87
%435 = or i64 %12, 95
%436 = or i64 %12, 103
%437 = or i64 %12, 111
%438 = or i64 %12, 119
%439 = or i64 %12, 127
%440 = getelementptr inbounds i8, i8* %0, i64 %358
%441 = getelementptr inbounds i8, i8* %0, i64 %359
%442 = getelementptr inbounds i8, i8* %0, i64 %360
%443 = getelementptr inbounds i8, i8* %0, i64 %361
%444 = getelementptr inbounds i8, i8* %0, i64 %362
%445 = getelementptr inbounds i8, i8* %0, i64 %363
%446 = getelementptr inbounds i8, i8* %0, i64 %364
%447 = getelementptr inbounds i8, i8* %0, i64 %365
%448 = getelementptr inbounds i8, i8* %0, i64 %366
%449 = getelementptr inbounds i8, i8* %0, i64 %367
%450 = getelementptr inbounds i8, i8* %0, i64 %368
%451 = getelementptr inbounds i8, i8* %0, i64 %369
%452 = getelementptr inbounds i8, i8* %0, i64 %370
%453 = getelementptr inbounds i8, i8* %0, i64 %371
%454 = getelementptr inbounds i8, i8* %0, i64 %372
%455 = getelementptr inbounds i8, i8* %0, i64 %373
%456 = load i8, i8* %440
%457 = load i8, i8* %441
%458 = load i8, i8* %442
%459 = load i8, i8* %443
%460 = load i8, i8* %444
%461 = load i8, i8* %445
%462 = load i8, i8* %446
%463 = load i8, i8* %447
%464 = load i8, i8* %448
%465 = load i8, i8* %449
%466 = load i8, i8* %450
%467 = load i8, i8* %451
%468 = load i8, i8* %452
%469 = load i8, i8* %453
%470 = load i8, i8* %454
%471 = load i8, i8* %455
%472 = insertelement <16 x i8> poison, i8 %456, i64 0
%473 = insertelement <16 x i8> %472, i8 %457, i64 1
%474 = insertelement <16 x i8> %473, i8 %458, i64 2
%475 = insertelement <16 x i8> %474, i8 %459, i64 3
%476 = insertelement <16 x i8> %475, i8 %460, i64 4
%477 = insertelement <16 x i8> %476, i8 %461, i64 5
%478 = insertelement <16 x i8> %477, i8 %462, i64 6
%479 = insertelement <16 x i8> %478, i8 %463, i64 7
%480 = insertelement <16 x i8> %479, i8 %464, i64 8
%481 = insertelement <16 x i8> %480, i8 %465, i64 9
%482 = insertelement <16 x i8> %481, i8 %466, i64 10
%483 = insertelement <16 x i8> %482, i8 %467, i64 11
%484 = insertelement <16 x i8> %483, i8 %468, i64 12
%485 = insertelement <16 x i8> %484, i8 %469, i64 13
%486 = insertelement <16 x i8> %485, i8 %470, i64 14
%487 = insertelement <16 x i8> %486, i8 %471, i64 15
%488 = add <16 x i8> %423, %487
%489 = shl <16 x i8> %488, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%490 = getelementptr inbounds i8, i8* %0, i64 %424
%491 = getelementptr inbounds i8, i8* %0, i64 %425
%492 = getelementptr inbounds i8, i8* %0, i64 %426
%493 = getelementptr inbounds i8, i8* %0, i64 %427
%494 = getelementptr inbounds i8, i8* %0, i64 %428
%495 = getelementptr inbounds i8, i8* %0, i64 %429
%496 = getelementptr inbounds i8, i8* %0, i64 %430
%497 = getelementptr inbounds i8, i8* %0, i64 %431
%498 = getelementptr inbounds i8, i8* %0, i64 %432
%499 = getelementptr inbounds i8, i8* %0, i64 %433
%500 = getelementptr inbounds i8, i8* %0, i64 %434
%501 = getelementptr inbounds i8, i8* %0, i64 %435
%502 = getelementptr inbounds i8, i8* %0, i64 %436
%503 = getelementptr inbounds i8, i8* %0, i64 %437
%504 = getelementptr inbounds i8, i8* %0, i64 %438
%505 = getelementptr inbounds i8, i8* %0, i64 %439
%506 = load i8, i8* %490
%507 = load i8, i8* %491
%508 = load i8, i8* %492
%509 = load i8, i8* %493
%510 = load i8, i8* %494
%511 = load i8, i8* %495
%512 = load i8, i8* %496
%513 = load i8, i8* %497
%514 = load i8, i8* %498
%515 = load i8, i8* %499
%516 = load i8, i8* %500
%517 = load i8, i8* %501
%518 = load i8, i8* %502
%519 = load i8, i8* %503
%520 = load i8, i8* %504
%521 = load i8, i8* %505
%522 = insertelement <16 x i8> poison, i8 %506, i64 0
%523 = insertelement <16 x i8> %522, i8 %507, i64 1
%524 = insertelement <16 x i8> %523, i8 %508, i64 2
%525 = insertelement <16 x i8> %524, i8 %509, i64 3
%526 = insertelement <16 x i8> %525, i8 %510, i64 4
%527 = insertelement <16 x i8> %526, i8 %511, i64 5
%528 = insertelement <16 x i8> %527, i8 %512, i64 6
%529 = insertelement <16 x i8> %528, i8 %513, i64 7
%530 = insertelement <16 x i8> %529, i8 %514, i64 8
%531 = insertelement <16 x i8> %530, i8 %515, i64 9
%532 = insertelement <16 x i8> %531, i8 %516, i64 10
%533 = insertelement <16 x i8> %532, i8 %517, i64 11
%534 = insertelement <16 x i8> %533, i8 %518, i64 12
%535 = insertelement <16 x i8> %534, i8 %519, i64 13
%536 = insertelement <16 x i8> %535, i8 %520, i64 14
%537 = insertelement <16 x i8> %536, i8 %521, i64 15
%538 = add <16 x i8> %489, %537
%539 = bitcast i8* %28 to <16 x i8>*
store <16 x i8> %538, <16 x i8>* %539
%540 = add nuw i64 %11, 16
%541 = icmp eq i64 %540, %8
br i1 %541, label %542, label %10
542: ; preds = %10
%543 = icmp eq i64 %8, %1
br i1 %543, label %547, label %544
544: ; preds = %5, %542
%545 = phi i64 [ 0, %5 ], [ %8, %542 ]
%546 = phi i64 [ 0, %5 ], [ %9, %542 ]
br label %548
547: ; preds = %548, %542, %2
ret i8* %3
548: ; preds = %544, %548
%549 = phi i64 [ %590, %548 ], [ %545, %544 ]
%550 = phi i64 [ %589, %548 ], [ %546, %544 ]
%551 = getelementptr inbounds i8, i8* %3, i64 %549
%552 = or i64 %550, 1
%553 = getelementptr inbounds i8, i8* %0, i64 %550
%554 = load i8, i8* %553
%555 = shl i8 %554, 1
%556 = or i64 %550, 2
%557 = getelementptr inbounds i8, i8* %0, i64 %552
%558 = load i8, i8* %557
%559 = add i8 %555, %558
%560 = shl i8 %559, 1
%561 = or i64 %550, 3
%562 = getelementptr inbounds i8, i8* %0, i64 %556
%563 = load i8, i8* %562
%564 = add i8 %560, %563
%565 = shl i8 %564, 1
%566 = or i64 %550, 4
%567 = getelementptr inbounds i8, i8* %0, i64 %561
%568 = load i8, i8* %567
%569 = add i8 %565, %568
%570 = shl i8 %569, 1
%571 = or i64 %550, 5
%572 = getelementptr inbounds i8, i8* %0, i64 %566
%573 = load i8, i8* %572
%574 = add i8 %570, %573
%575 = shl i8 %574, 1
%576 = or i64 %550, 6
%577 = getelementptr inbounds i8, i8* %0, i64 %571
%578 = load i8, i8* %577
%579 = add i8 %575, %578
%580 = shl i8 %579, 1
%581 = or i64 %550, 7
%582 = getelementptr inbounds i8, i8* %0, i64 %576
%583 = load i8, i8* %582
%584 = add i8 %580, %583
%585 = shl i8 %584, 1
%586 = getelementptr inbounds i8, i8* %0, i64 %581
%587 = load i8, i8* %586
%588 = add i8 %585, %587
%589 = add i64 %550, 8
store i8 %588, i8* %551
%590 = add nuw i64 %549, 1
%591 = icmp eq i64 %590, %1
br i1 %591, label %547, label %548
}