void hex2bin(const char *in, char *out, int size) {
  int i = 0;
  int j = 0;
  int final_len = size / 2U;
  for (i = 0, j = 0; j < final_len; i += 2, j++) {
    out[j] = (in[i] % 32 + 9) % 25 * 16 + (in[i + 1] % 32 + 9) % 25;
  }
}


x86 assembly (clang, -O0):
<hex2bin>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
shr    $0x1,%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    11b6 <hex2bin+0xb6>
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
add    $0x9,%eax
mov    $0x19,%ecx
cltd
idiv   %ecx
shl    $0x4,%edx
mov    %edx,-0x24(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
mov    $0x20,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
add    $0x9,%eax
mov    $0x19,%ecx
cltd
idiv   %ecx
mov    -0x24(%rbp),%eax
add    %edx,%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1134 <hex2bin+0x34>
pop    %rbp
ret

x86 assembly (clang, -O2):
<hex2bin>:
push   %rbx
cmp    $0x2,%edx
jb     11d6 <hex2bin+0xd6>
mov    %edx,%r9d
shr    %r9d
cmp    $0x10,%edx
jb     112f <hex2bin+0x2f>
lea    (%rdi,%r9,2),%rax
cmp    %rsi,%rax
jbe    11d8 <hex2bin+0xd8>
lea    (%rsi,%r9,1),%rax
cmp    %rdi,%rax
jbe    11d8 <hex2bin+0xd8>
xor    %r8d,%r8d
xor    %r10d,%r10d
add    %r8,%rsi
sub    %r8,%r9
lea    (%r10,%rdi,1),%r8
add    $0x1,%r8
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nop
movzbl -0x1(%r8,%rdx,2),%ecx
movzbl (%r8,%rdx,2),%eax
mov    %ecx,%ebx
sar    $0x7,%bl
shr    $0x3,%bl
add    %cl,%bl
and    $0xe0,%bl
sub    %bl,%cl
add    $0x9,%cl
movsbl %cl,%edi
lea    (%rdi,%rdi,4),%ecx
lea    (%rdi,%rcx,8),%ecx
movzwl %cx,%ecx
mov    %ecx,%ebx
shr    $0xf,%ebx
shr    $0xa,%ecx
add    %bl,%cl
movzbl %cl,%ecx
lea    (%rcx,%rcx,4),%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %cl,%dil
shl    $0x4,%dil
mov    %eax,%ecx
sar    $0x7,%cl
shr    $0x3,%cl
add    %al,%cl
and    $0xe0,%cl
sub    %cl,%al
add    $0x9,%al
movsbl %al,%eax
lea    (%rax,%rax,4),%ecx
lea    (%rax,%rcx,8),%ecx
movzwl %cx,%ebx
shr    $0xa,%ecx
shr    $0xf,%ebx
add    %cl,%bl
movzbl %bl,%ecx
lea    (%rcx,%rcx,4),%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %cl,%al
add    %dil,%al
mov    %al,(%rsi,%rdx,1)
add    $0x1,%rdx
cmp    %rdx,%r9
jne    1150 <hex2bin+0x50>
pop    %rbx
ret
cmp    $0x20,%edx
jae    11e5 <hex2bin+0xe5>
xor    %r8d,%r8d
jmp    1541 <hex2bin+0x441>
mov    %r9d,%r8d
and    $0xfffffff0,%r8d
lea    0x1f(%rdi),%rdx
xor    %ecx,%ecx
movdqa 0xe05(%rip),%xmm9
movdqa 0xe0c(%rip),%xmm10
movdqa 0xe13(%rip),%xmm11
movdqa 0xe1a(%rip),%xmm15
movdqa 0xe21(%rip),%xmm12
movdqa 0xe28(%rip),%xmm13
movdqa 0xe30(%rip),%xmm6
movdqa 0xe38(%rip),%xmm7
movdqa 0xe3f(%rip),%xmm8
movdqa 0xe46(%rip),%xmm14
nopw   0x0(%rax,%rax,1)
movzbl -0x1(%rdx,%rcx,2),%eax
movd   %eax,%xmm1
movzbl -0x3(%rdx,%rcx,2),%eax
movd   %eax,%xmm2
punpcklbw %xmm1,%xmm2
movzbl -0x5(%rdx,%rcx,2),%eax
movd   %eax,%xmm1
movzbl -0x7(%rdx,%rcx,2),%eax
movd   %eax,%xmm4
punpcklbw %xmm1,%xmm4
punpcklwd %xmm2,%xmm4
movzbl -0x9(%rdx,%rcx,2),%eax
movd   %eax,%xmm1
movzbl -0xb(%rdx,%rcx,2),%eax
movd   %eax,%xmm5
punpcklbw %xmm1,%xmm5
movzbl -0xd(%rdx,%rcx,2),%eax
movd   %eax,%xmm1
movzbl -0xf(%rdx,%rcx,2),%eax
movd   %eax,%xmm2
punpcklbw %xmm1,%xmm2
punpcklwd %xmm5,%xmm2
punpckldq %xmm4,%xmm2
movzbl -0x11(%rdx,%rcx,2),%eax
movd   %eax,%xmm1
movzbl -0x13(%rdx,%rcx,2),%eax
movd   %eax,%xmm4
punpcklbw %xmm1,%xmm4
movzbl -0x15(%rdx,%rcx,2),%eax
movd   %eax,%xmm1
movzbl -0x17(%rdx,%rcx,2),%eax
movd   %eax,%xmm5
punpcklbw %xmm1,%xmm5
punpcklwd %xmm4,%xmm5
movzbl -0x19(%rdx,%rcx,2),%eax
movd   %eax,%xmm1
movzbl -0x1b(%rdx,%rcx,2),%eax
movd   %eax,%xmm4
punpcklbw %xmm1,%xmm4
movzbl -0x1d(%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0x1f(%rdx,%rcx,2),%eax
movd   %eax,%xmm1
punpcklbw %xmm0,%xmm1
punpcklwd %xmm4,%xmm1
punpckldq %xmm5,%xmm1
punpcklqdq %xmm2,%xmm1
pxor   %xmm0,%xmm0
pcmpgtb %xmm1,%xmm0
psrlw  $0x3,%xmm0
pand   %xmm9,%xmm0
paddb  %xmm1,%xmm0
pand   %xmm10,%xmm0
psubb  %xmm0,%xmm1
paddb  %xmm11,%xmm1
pxor   %xmm0,%xmm0
punpckhbw %xmm1,%xmm0
pmulhw %xmm15,%xmm0
psrlw  $0x8,%xmm0
pxor   %xmm2,%xmm2
punpcklbw %xmm1,%xmm2
pmulhw %xmm15,%xmm2
psrlw  $0x8,%xmm2
packuswb %xmm0,%xmm2
movdqa %xmm2,%xmm0
psrlw  $0x7,%xmm0
pand   %xmm12,%xmm0
psrlw  $0x2,%xmm2
pand   %xmm13,%xmm2
paddb  %xmm0,%xmm2
movdqa %xmm2,%xmm0
punpckhbw %xmm0,%xmm0
pmullw %xmm6,%xmm0
pand   %xmm7,%xmm0
punpcklbw %xmm2,%xmm2
pmullw %xmm6,%xmm2
pand   %xmm7,%xmm2
packuswb %xmm0,%xmm2
psubb  %xmm2,%xmm1
psllw  $0x4,%xmm1
pand   %xmm8,%xmm1
movzbl (%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0x2(%rdx,%rcx,2),%eax
movd   %eax,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0x4(%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0x6(%rdx,%rcx,2),%eax
movd   %eax,%xmm5
punpcklbw %xmm0,%xmm5
punpcklwd %xmm2,%xmm5
movzbl -0x8(%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0xa(%rdx,%rcx,2),%eax
movd   %eax,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0xc(%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0xe(%rdx,%rcx,2),%eax
movd   %eax,%xmm4
punpcklbw %xmm0,%xmm4
punpcklwd %xmm2,%xmm4
punpckldq %xmm5,%xmm4
movzbl -0x10(%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0x12(%rdx,%rcx,2),%eax
movd   %eax,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0x14(%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0x16(%rdx,%rcx,2),%eax
movd   %eax,%xmm5
punpcklbw %xmm0,%xmm5
punpcklwd %xmm2,%xmm5
movzbl -0x18(%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0x1a(%rdx,%rcx,2),%eax
movd   %eax,%xmm3
punpcklbw %xmm0,%xmm3
movzbl -0x1c(%rdx,%rcx,2),%eax
movd   %eax,%xmm0
movzbl -0x1e(%rdx,%rcx,2),%eax
movd   %eax,%xmm2
punpcklbw %xmm0,%xmm2
punpcklwd %xmm3,%xmm2
punpckldq %xmm5,%xmm2
punpcklqdq %xmm4,%xmm2
pxor   %xmm0,%xmm0
pcmpgtb %xmm2,%xmm0
psrlw  $0x3,%xmm0
pand   %xmm9,%xmm0
paddb  %xmm2,%xmm0
pand   %xmm10,%xmm0
psubb  %xmm0,%xmm2
paddb  %xmm11,%xmm2
pxor   %xmm0,%xmm0
punpckhbw %xmm2,%xmm0
pmulhw %xmm15,%xmm0
psrlw  $0x8,%xmm0
pxor   %xmm4,%xmm4
punpcklbw %xmm2,%xmm4
pmulhw %xmm15,%xmm4
psrlw  $0x8,%xmm4
packuswb %xmm0,%xmm4
movdqa %xmm4,%xmm0
psrlw  $0x7,%xmm0
pand   %xmm12,%xmm0
psrlw  $0x2,%xmm4
pand   %xmm13,%xmm4
pxor   %xmm14,%xmm4
paddb  %xmm0,%xmm4
psubb  %xmm14,%xmm4
movdqa %xmm4,%xmm0
punpckhbw %xmm0,%xmm0
pmullw %xmm6,%xmm0
pand   %xmm7,%xmm0
punpcklbw %xmm4,%xmm4
pmullw %xmm6,%xmm4
pand   %xmm7,%xmm4
packuswb %xmm0,%xmm4
psubb  %xmm4,%xmm2
paddb  %xmm1,%xmm2
movdqu %xmm2,(%rsi,%rcx,1)
add    $0x10,%rcx
cmp    %rcx,%r8
jne    1250 <hex2bin+0x150>
cmp    %r9,%r8
je     11d6 <hex2bin+0xd6>
test   $0x8,%r9b
jne    1541 <hex2bin+0x441>
lea    (%r8,%r8,1),%r10
jmp    1135 <hex2bin+0x35>
mov    %r8,%rdx
mov    %r9d,%r8d
and    $0xfffffff8,%r8d
lea    (%r8,%r8,1),%r10
movdqa 0xaa8(%rip),%xmm8
movdqa 0xb3f(%rip),%xmm10
movdqa 0xb46(%rip),%xmm11
movdqa 0xabe(%rip),%xmm3
movdqa 0xac5(%rip),%xmm12
movdqa 0xacc(%rip),%xmm13
movdqa 0xb04(%rip),%xmm6
movdqa 0xacc(%rip),%xmm7
movdqa 0xad4(%rip),%xmm0
movdqa 0xadb(%rip),%xmm9
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%rdi,%rdx,2),%eax
movzbl 0x4(%rdi,%rdx,2),%ecx
movzbl 0x8(%rdi,%rdx,2),%r11d
movzbl 0x6(%rdi,%rdx,2),%ebx
shl    $0x8,%ebx
or     %ecx,%ebx
movzbl 0x2(%rdi,%rdx,2),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
movd   %ecx,%xmm1
pinsrw $0x1,%ebx,%xmm1
movzbl 0xa(%rdi,%rdx,2),%eax
shl    $0x8,%eax
or     %r11d,%eax
pinsrw $0x2,%eax,%xmm1
movzbl 0xc(%rdi,%rdx,2),%eax
movzbl 0xe(%rdi,%rdx,2),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
pinsrw $0x3,%ecx,%xmm1
pxor   %xmm2,%xmm2
pcmpgtb %xmm1,%xmm2
psrlw  $0x3,%xmm2
pand   %xmm8,%xmm2
paddb  %xmm1,%xmm2
pand   %xmm10,%xmm2
psubb  %xmm2,%xmm1
paddb  %xmm11,%xmm1
pxor   %xmm4,%xmm4
punpckhbw %xmm1,%xmm4
pmulhw %xmm3,%xmm4
psrlw  $0x8,%xmm4
pxor   %xmm2,%xmm2
punpcklbw %xmm1,%xmm2
pmulhw %xmm3,%xmm2
psrlw  $0x8,%xmm2
packuswb %xmm4,%xmm2
movdqa %xmm2,%xmm4
psrlw  $0x7,%xmm4
pand   %xmm12,%xmm4
psrlw  $0x2,%xmm2
pand   %xmm13,%xmm2
pxor   %xmm6,%xmm2
paddb  %xmm4,%xmm2
psubb  %xmm6,%xmm2
movdqa %xmm2,%xmm4
punpckhbw %xmm4,%xmm4
pmullw %xmm7,%xmm4
pand   %xmm0,%xmm4
punpcklbw %xmm2,%xmm2
pmullw %xmm7,%xmm2
pand   %xmm0,%xmm2
packuswb %xmm4,%xmm2
psubb  %xmm2,%xmm1
psllw  $0x4,%xmm1
pand   %xmm9,%xmm1
movzbl 0x1(%rdi,%rdx,2),%eax
movzbl 0x5(%rdi,%rdx,2),%ecx
movzbl 0x9(%rdi,%rdx,2),%r11d
movzbl 0x7(%rdi,%rdx,2),%ebx
shl    $0x8,%ebx
or     %ecx,%ebx
movzbl 0x3(%rdi,%rdx,2),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
movd   %ecx,%xmm2
pinsrw $0x1,%ebx,%xmm2
movzbl 0xd(%rdi,%rdx,2),%eax
movzbl 0xb(%rdi,%rdx,2),%ecx
shl    $0x8,%ecx
or     %r11d,%ecx
pinsrw $0x2,%ecx,%xmm2
movzbl 0xf(%rdi,%rdx,2),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
pinsrw $0x3,%ecx,%xmm2
pxor   %xmm4,%xmm4
pcmpgtb %xmm2,%xmm4
psrlw  $0x3,%xmm4
pand   %xmm8,%xmm4
paddb  %xmm2,%xmm4
pand   %xmm10,%xmm4
psubb  %xmm4,%xmm2
paddb  %xmm11,%xmm2
pxor   %xmm4,%xmm4
punpckhbw %xmm2,%xmm4
pmulhw %xmm3,%xmm4
psrlw  $0x8,%xmm4
pxor   %xmm5,%xmm5
punpcklbw %xmm2,%xmm5
pmulhw %xmm3,%xmm5
psrlw  $0x8,%xmm5
packuswb %xmm4,%xmm5
movdqa %xmm5,%xmm4
psrlw  $0x7,%xmm4
pand   %xmm12,%xmm4
psrlw  $0x2,%xmm5
pand   %xmm13,%xmm5
pxor   %xmm6,%xmm5
paddb  %xmm4,%xmm5
psubb  %xmm6,%xmm5
punpcklbw %xmm5,%xmm5
pmullw %xmm7,%xmm5
pand   %xmm0,%xmm5
packuswb %xmm5,%xmm5
psubb  %xmm5,%xmm2
paddb  %xmm1,%xmm2
movq   %xmm2,(%rsi,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%r8
jne    15b0 <hex2bin+0x4b0>
cmp    %r9,%r8
jne    1135 <hex2bin+0x35>
jmp    11d6 <hex2bin+0xd6>

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

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