#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*/ assert(int);
unsigned int parseAlphaHex(char *, int);
void printAlphaHex(char *buf, unsigned value, int digits) {
  int i;
  for (i = 0; i < digits; ++i) {
    unsigned digValue = (value >> (unsigned)((digits - i - 1) * 4)) & 0xf;
    buf[i] = 'A' + digValue;
  }
  assert(parseAlphaHex(buf, digits) == value);
}


x86 assembly (clang, -O0):
<printAlphaHex>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    117d <printAlphaHex+0x5d>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    -0x14(%rbp),%ecx
sub    $0x1,%ecx
shl    $0x2,%ecx
shr    %cl,%eax
and    $0xf,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
add    $0x41,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1139 <printAlphaHex+0x19>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <parseAlphaHex@plt>
cmp    -0xc(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<printAlphaHex>:
push   %rbx
sub    $0x70,%rsp
mov    %esi,%ebx
test   %edx,%edx
jle    1767 <printAlphaHex+0x647>
mov    %edx,%r9d
cmp    $0x10,%edx
jae    113e <printAlphaHex+0x1e>
xor    %esi,%esi
jmp    173a <printAlphaHex+0x61a>
mov    %r9d,%esi
and    $0xfffffff0,%esi
movd   %edx,%xmm0
pshufd $0x0,%xmm0,%xmm11
movd   %ebx,%xmm0
pshufd $0x0,%xmm0,%xmm10
lea    -0x10(%rsi),%rax
mov    %rax,%r8
shr    $0x4,%r8
add    $0x1,%r8
test   %rax,%rax
je     1780 <printAlphaHex+0x660>
mov    %r8,%rax
and    $0xfffffffffffffffe,%rax
movdqa 0xec0(%rip),%xmm14
movdqa 0xec7(%rip),%xmm12
movdqa 0xece(%rip),%xmm8
movdqa 0xed5(%rip),%xmm9
xor    %ecx,%ecx
nopl   (%rax)
movdqa %xmm9,0x30(%rsp)
movdqa %xmm8,0x40(%rsp)
movdqa %xmm12,0x50(%rsp)
movdqa %xmm14,0x60(%rsp)
movdqa %xmm9,%xmm6
pcmpeqd %xmm0,%xmm0
pxor   %xmm0,%xmm6
movdqa %xmm8,%xmm7
pxor   %xmm0,%xmm7
movdqa %xmm12,%xmm15
pxor   %xmm0,%xmm15
movdqa %xmm14,%xmm1
pxor   %xmm0,%xmm1
paddd  %xmm11,%xmm1
paddd  %xmm11,%xmm15
paddd  %xmm11,%xmm7
paddd  %xmm11,%xmm6
pslld  $0x2,%xmm6
pslld  $0x2,%xmm7
pslld  $0x2,%xmm1
pshuflw $0xfe,%xmm1,%xmm0
movdqa %xmm10,%xmm2
psrld  %xmm0,%xmm2
pslld  $0x2,%xmm15
pshuflw $0x54,%xmm1,%xmm13
movdqa %xmm10,%xmm0
psrld  %xmm13,%xmm0
pshufd $0xee,%xmm1,%xmm1
pshuflw $0xfe,%xmm1,%xmm3
movdqa %xmm10,%xmm5
psrld  %xmm3,%xmm5
punpcklqdq %xmm2,%xmm0
pshuflw $0x54,%xmm1,%xmm1
movdqa %xmm10,%xmm2
psrld  %xmm1,%xmm2
punpckhqdq %xmm5,%xmm2
pshuflw $0xfe,%xmm15,%xmm1
movdqa %xmm10,%xmm3
psrld  %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm0
pshuflw $0x54,%xmm15,%xmm2
movdqa %xmm10,%xmm1
psrld  %xmm2,%xmm1
pshufd $0xee,%xmm15,%xmm2
pshuflw $0xfe,%xmm2,%xmm5
movdqa %xmm10,%xmm4
psrld  %xmm5,%xmm4
punpcklqdq %xmm3,%xmm1
pshuflw $0x54,%xmm2,%xmm2
movdqa %xmm10,%xmm3
psrld  %xmm2,%xmm3
punpckhqdq %xmm4,%xmm3
pshuflw $0xfe,%xmm7,%xmm2
movdqa %xmm10,%xmm4
psrld  %xmm2,%xmm4
shufps $0xcc,%xmm3,%xmm1
pshuflw $0x54,%xmm7,%xmm3
movdqa %xmm10,%xmm2
psrld  %xmm3,%xmm2
pshufd $0xee,%xmm7,%xmm3
pshuflw $0xfe,%xmm3,%xmm5
movdqa %xmm10,%xmm7
psrld  %xmm5,%xmm7
punpcklqdq %xmm4,%xmm2
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm10,%xmm4
psrld  %xmm3,%xmm4
punpckhqdq %xmm7,%xmm4
pshuflw $0xfe,%xmm6,%xmm3
movdqa %xmm10,%xmm5
psrld  %xmm3,%xmm5
shufps $0xcc,%xmm4,%xmm2
pshuflw $0x54,%xmm6,%xmm3
movdqa %xmm10,%xmm7
psrld  %xmm3,%xmm7
pshufd $0xee,%xmm6,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm10,%xmm6
psrld  %xmm4,%xmm6
punpcklqdq %xmm5,%xmm7
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm10,%xmm4
psrld  %xmm3,%xmm4
punpckhqdq %xmm6,%xmm4
shufps $0xcc,%xmm4,%xmm7
movaps 0xd51(%rip),%xmm13
andps  %xmm13,%xmm7
andps  %xmm13,%xmm2
packuswb %xmm2,%xmm7
andps  %xmm13,%xmm1
andps  %xmm13,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm7
movdqa 0xd3c(%rip),%xmm15
pand   %xmm15,%xmm7
movdqa 0xd3f(%rip),%xmm0
paddb  %xmm0,%xmm7
movdqu %xmm7,(%rdi,%rcx,1)
movdqa %xmm11,%xmm1
movdqa %xmm14,0x20(%rsp)
psubd  %xmm14,%xmm1
pslld  $0x2,%xmm1
movdqa %xmm11,%xmm2
movdqa %xmm12,0x10(%rsp)
psubd  %xmm12,%xmm2
pslld  $0x2,%xmm2
movdqa %xmm11,%xmm7
movdqa %xmm8,(%rsp)
psubd  %xmm8,%xmm7
pslld  $0x2,%xmm7
movdqa %xmm11,%xmm6
movdqa %xmm9,%xmm15
psubd  %xmm9,%xmm6
pslld  $0x2,%xmm6
movdqa 0xca9(%rip),%xmm0
paddd  %xmm0,%xmm6
paddd  %xmm0,%xmm7
paddd  %xmm0,%xmm2
paddd  %xmm0,%xmm1
pshuflw $0xfe,%xmm1,%xmm0
movdqa %xmm10,%xmm3
psrld  %xmm0,%xmm3
pshuflw $0x54,%xmm1,%xmm4
movdqa %xmm10,%xmm0
psrld  %xmm4,%xmm0
punpcklqdq %xmm3,%xmm0
pshufd $0xee,%xmm1,%xmm1
pshuflw $0xfe,%xmm1,%xmm3
movdqa %xmm10,%xmm4
psrld  %xmm3,%xmm4
pshuflw $0x54,%xmm1,%xmm1
movdqa %xmm10,%xmm3
psrld  %xmm1,%xmm3
punpckhqdq %xmm4,%xmm3
shufps $0xcc,%xmm3,%xmm0
pshuflw $0xfe,%xmm2,%xmm1
movdqa %xmm10,%xmm3
psrld  %xmm1,%xmm3
pshuflw $0x54,%xmm2,%xmm4
movdqa %xmm10,%xmm1
psrld  %xmm4,%xmm1
punpcklqdq %xmm3,%xmm1
pshufd $0xee,%xmm2,%xmm2
pshuflw $0xfe,%xmm2,%xmm3
movdqa %xmm10,%xmm4
psrld  %xmm3,%xmm4
pshuflw $0x54,%xmm2,%xmm2
movdqa %xmm10,%xmm3
psrld  %xmm2,%xmm3
punpckhqdq %xmm4,%xmm3
shufps $0xcc,%xmm3,%xmm1
pshuflw $0xfe,%xmm7,%xmm2
movdqa %xmm10,%xmm3
psrld  %xmm2,%xmm3
pshuflw $0x54,%xmm7,%xmm4
movdqa %xmm10,%xmm2
psrld  %xmm4,%xmm2
punpcklqdq %xmm3,%xmm2
pshufd $0xee,%xmm7,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm10,%xmm5
psrld  %xmm4,%xmm5
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm10,%xmm4
psrld  %xmm3,%xmm4
punpckhqdq %xmm5,%xmm4
shufps $0xcc,%xmm4,%xmm2
pshuflw $0xfe,%xmm6,%xmm3
movdqa %xmm10,%xmm4
psrld  %xmm3,%xmm4
pshuflw $0x54,%xmm6,%xmm3
movdqa %xmm10,%xmm7
psrld  %xmm3,%xmm7
punpcklqdq %xmm4,%xmm7
pshufd $0xee,%xmm6,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm10,%xmm5
psrld  %xmm4,%xmm5
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm10,%xmm4
psrld  %xmm3,%xmm4
punpckhqdq %xmm5,%xmm4
shufps $0xcc,%xmm4,%xmm7
andps  %xmm13,%xmm7
andps  %xmm13,%xmm2
packuswb %xmm2,%xmm7
andps  %xmm13,%xmm1
andps  %xmm13,%xmm0
packuswb %xmm0,%xmm1
movdqa 0x60(%rsp),%xmm14
packuswb %xmm1,%xmm7
movdqa 0x30(%rsp),%xmm9
movdqa 0x40(%rsp),%xmm8
movdqa 0x50(%rsp),%xmm12
pand   0xb55(%rip),%xmm7
paddb  0xb5d(%rip),%xmm7
movdqu %xmm7,0x10(%rdi,%rcx,1)
add    $0x20,%rcx
movdqa 0xb5b(%rip),%xmm0
paddd  %xmm0,%xmm9
paddd  %xmm0,%xmm8
paddd  %xmm0,%xmm12
paddd  %xmm0,%xmm14
add    $0xfffffffffffffffe,%rax
jne    11a0 <printAlphaHex+0x80>
movdqa 0xb45(%rip),%xmm1
movdqa %xmm1,%xmm2
psubd  %xmm15,%xmm2
movdqa %xmm1,%xmm3
psubd  (%rsp),%xmm3
movdqa %xmm1,%xmm5
psubd  0x10(%rsp),%xmm5
psubd  0x20(%rsp),%xmm1
test   $0x1,%r8b
je     1735 <printAlphaHex+0x615>
paddd  %xmm11,%xmm1
paddd  %xmm11,%xmm5
paddd  %xmm11,%xmm3
paddd  %xmm11,%xmm2
pslld  $0x2,%xmm2
pslld  $0x2,%xmm3
pslld  $0x2,%xmm1
pshuflw $0xfe,%xmm1,%xmm0
movdqa %xmm10,%xmm4
psrld  %xmm0,%xmm4
pslld  $0x2,%xmm5
pshuflw $0x54,%xmm1,%xmm6
movdqa %xmm10,%xmm0
psrld  %xmm6,%xmm0
pshufd $0xee,%xmm1,%xmm1
pshuflw $0xfe,%xmm1,%xmm6
movdqa %xmm10,%xmm7
psrld  %xmm6,%xmm7
punpcklqdq %xmm4,%xmm0
pshuflw $0x54,%xmm1,%xmm1
movdqa %xmm10,%xmm4
psrld  %xmm1,%xmm4
punpckhqdq %xmm7,%xmm4
pshuflw $0xfe,%xmm5,%xmm1
movdqa %xmm10,%xmm6
psrld  %xmm1,%xmm6
shufps $0xcc,%xmm4,%xmm0
pshuflw $0x54,%xmm5,%xmm4
movdqa %xmm10,%xmm1
psrld  %xmm4,%xmm1
pshufd $0xee,%xmm5,%xmm4
pshuflw $0xfe,%xmm4,%xmm5
movdqa %xmm10,%xmm7
psrld  %xmm5,%xmm7
punpcklqdq %xmm6,%xmm1
pshuflw $0x54,%xmm4,%xmm4
movdqa %xmm10,%xmm5
psrld  %xmm4,%xmm5
punpckhqdq %xmm7,%xmm5
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm10,%xmm6
psrld  %xmm4,%xmm6
shufps $0xcc,%xmm5,%xmm1
pshuflw $0x54,%xmm3,%xmm4
movdqa %xmm10,%xmm5
psrld  %xmm4,%xmm5
pshufd $0xee,%xmm3,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm10,%xmm7
psrld  %xmm4,%xmm7
punpcklqdq %xmm6,%xmm5
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm10,%xmm4
psrld  %xmm3,%xmm4
punpckhqdq %xmm7,%xmm4
pshuflw $0xfe,%xmm2,%xmm3
movdqa %xmm10,%xmm6
psrld  %xmm3,%xmm6
shufps $0xcc,%xmm4,%xmm5
pshuflw $0x54,%xmm2,%xmm4
movdqa %xmm10,%xmm3
psrld  %xmm4,%xmm3
pshufd $0xee,%xmm2,%xmm2
pshuflw $0xfe,%xmm2,%xmm4
movdqa %xmm10,%xmm7
psrld  %xmm4,%xmm7
punpcklqdq %xmm6,%xmm3
pshuflw $0x54,%xmm2,%xmm2
psrld  %xmm2,%xmm10
punpckhqdq %xmm7,%xmm10
shufps $0xcc,%xmm10,%xmm3
movaps 0x988(%rip),%xmm2
andps  %xmm2,%xmm3
andps  %xmm2,%xmm5
packuswb %xmm5,%xmm3
andps  %xmm2,%xmm1
andps  %xmm2,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
pand   0x978(%rip),%xmm3
paddb  0x980(%rip),%xmm3
movdqu %xmm3,(%rdi,%rcx,1)
cmp    %r9,%rsi
je     1767 <printAlphaHex+0x647>
mov    %edx,%eax
sub    %esi,%eax
lea    -0x4(,%rax,4),%ecx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ebx,%eax
shr    %cl,%eax
and    $0xf,%al
add    $0x41,%al
mov    %al,(%rdi,%rsi,1)
add    $0x1,%rsi
add    $0xfffffffc,%ecx
cmp    %rsi,%r9
jne    1750 <printAlphaHex+0x630>
mov    %edx,%esi
call   1030 <parseAlphaHex@plt>
xor    %edi,%edi
cmp    %ebx,%eax
sete   %dil
add    $0x70,%rsp
pop    %rbx
jmp    1040 <assert@plt>
movdqa 0x878(%rip),%xmm1
movdqa 0x880(%rip),%xmm5
movdqa 0x888(%rip),%xmm3
movdqa 0x890(%rip),%xmm2
xor    %ecx,%ecx
test   $0x1,%r8b
jne    15b7 <printAlphaHex+0x497>
jmp    1735 <printAlphaHex+0x615>

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

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