char *guild_decode_emblem(char *dst, const char *src, int len) {
  int i;
  const char *p = src;
  for (i = 0; i < len; i++, p += 2) {
    int c1 = p[0], c2 = p[1], x1 = 0, x2 = 0;
    if (c1 >= '0' && c1 <= '9')
      x1 = c1 - '0';
    if (c1 >= 'a' && c1 <= 'f')
      x1 = c1 - 'a' + 10;
    if (c1 >= 'A' && c1 <= 'F')
      x1 = c1 - 'A' + 10;
    if (c2 >= '0' && c2 <= '9')
      x2 = c2 - '0';
    if (c2 >= 'a' && c2 <= 'f')
      x2 = c2 - 'a' + 10;
    if (c2 >= 'A' && c2 <= 'F')
      x2 = c2 - 'A' + 10;
    dst[i] = (x1 << 4) | x2;
  }
  return dst;
}


x86 assembly (clang, -O0):
<guild_decode_emblem>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1237 <guild_decode_emblem+0x137>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%rax
movsbl 0x1(%rax),%eax
mov    %eax,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     116a <guild_decode_emblem+0x6a>
cmpl   $0x39,-0x24(%rbp)
jg     116a <guild_decode_emblem+0x6a>
mov    -0x24(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x61,-0x24(%rbp)
jl     118a <guild_decode_emblem+0x8a>
cmpl   $0x66,-0x24(%rbp)
jg     118a <guild_decode_emblem+0x8a>
mov    -0x24(%rbp),%eax
sub    $0x61,%eax
add    $0xa,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x41,-0x24(%rbp)
jl     11aa <guild_decode_emblem+0xaa>
cmpl   $0x46,-0x24(%rbp)
jg     11aa <guild_decode_emblem+0xaa>
mov    -0x24(%rbp),%eax
sub    $0x41,%eax
add    $0xa,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x30,-0x28(%rbp)
jl     11c7 <guild_decode_emblem+0xc7>
cmpl   $0x39,-0x28(%rbp)
jg     11c7 <guild_decode_emblem+0xc7>
mov    -0x28(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x61,-0x28(%rbp)
jl     11e7 <guild_decode_emblem+0xe7>
cmpl   $0x66,-0x28(%rbp)
jg     11e7 <guild_decode_emblem+0xe7>
mov    -0x28(%rbp),%eax
sub    $0x61,%eax
add    $0xa,%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x41,-0x28(%rbp)
jl     1207 <guild_decode_emblem+0x107>
cmpl   $0x46,-0x28(%rbp)
jg     1207 <guild_decode_emblem+0x107>
mov    -0x28(%rbp),%eax
sub    $0x41,%eax
add    $0xa,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
shl    $0x4,%eax
or     -0x30(%rbp),%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x20(%rbp)
jmp    111e <guild_decode_emblem+0x1e>
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<guild_decode_emblem>:
push   %r14
push   %rbx
mov    %rdi,%rax
test   %edx,%edx
jle    11bd <guild_decode_emblem+0xbd>
mov    %edx,%r10d
xor    %r9d,%r9d
cmp    $0x8,%edx
jb     1133 <guild_decode_emblem+0x33>
lea    (%rsi,%r10,2),%rcx
cmp    %rax,%rcx
jbe    11c1 <guild_decode_emblem+0xc1>
lea    (%rax,%r10,1),%rcx
cmp    %rsi,%rcx
jbe    11c1 <guild_decode_emblem+0xc1>
xor    %r8d,%r8d
mov    %rsi,%r11
lea    (%rax,%r8,1),%r14
sub    %r8,%r10
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl (%r11,%rdi,2),%ecx
lea    -0x30(%rcx),%edx
cmp    $0xa,%dl
movzbl %dl,%edx
cmovae %r9d,%edx
lea    0x9(%rcx),%esi
and    $0xdf,%cl
add    $0xbf,%cl
cmp    $0x6,%cl
movzbl %sil,%ecx
cmovae %edx,%ecx
movzbl 0x1(%r11,%rdi,2),%edx
lea    -0x30(%rdx),%esi
cmp    $0xa,%sil
movzbl %sil,%esi
cmovae %r9d,%esi
lea    -0x61(%rdx),%r8d
lea    -0x57(%rdx),%ebx
cmp    $0x6,%r8b
movzbl %bl,%ebx
cmovae %esi,%ebx
lea    -0x41(%rdx),%esi
add    $0xc9,%dl
cmp    $0x6,%sil
movzbl %dl,%edx
cmovae %ebx,%edx
shl    $0x4,%cl
or     %dl,%cl
mov    %cl,(%r14,%rdi,1)
add    $0x1,%rdi
cmp    %rdi,%r10
jne    1150 <guild_decode_emblem+0x50>
pop    %rbx
pop    %r14
ret
cmp    $0x10,%edx
jae    11ce <guild_decode_emblem+0xce>
xor    %r8d,%r8d
jmp    1341 <guild_decode_emblem+0x241>
mov    %r10d,%r8d
and    $0xfffffff0,%r8d
xor    %edx,%edx
movdqa 0xe20(%rip),%xmm13
movdqa 0xe27(%rip),%xmm14
movdqa 0xe2f(%rip),%xmm2
movdqa 0xe36(%rip),%xmm8
movdqa 0xe3e(%rip),%xmm4
movdqa 0xe46(%rip),%xmm5
movdqa 0xe4d(%rip),%xmm9
movdqa 0xe54(%rip),%xmm10
movdqa 0xe5b(%rip),%xmm11
movdqa 0xe62(%rip),%xmm12
xchg   %ax,%ax
movdqu (%rsi,%rdx,2),%xmm0
movdqu 0x10(%rsi,%rdx,2),%xmm3
movdqa %xmm3,%xmm6
pand   %xmm13,%xmm6
movdqa %xmm0,%xmm7
pand   %xmm13,%xmm7
packuswb %xmm6,%xmm7
psrlw  $0x8,%xmm3
psrlw  $0x8,%xmm0
packuswb %xmm3,%xmm0
movdqa %xmm7,%xmm3
paddb  %xmm14,%xmm3
movdqa %xmm3,%xmm6
pminub %xmm2,%xmm6
pcmpeqb %xmm3,%xmm6
pand   %xmm3,%xmm6
movdqa %xmm7,%xmm1
paddb  %xmm2,%xmm1
pand   %xmm8,%xmm7
paddb  %xmm4,%xmm7
movdqa %xmm7,%xmm3
pminub %xmm5,%xmm3
pcmpeqb %xmm7,%xmm3
pand   %xmm3,%xmm1
pandn  %xmm6,%xmm3
por    %xmm1,%xmm3
movdqa %xmm0,%xmm1
paddb  %xmm14,%xmm1
movdqa %xmm1,%xmm6
pminub %xmm2,%xmm6
pcmpeqb %xmm1,%xmm6
pand   %xmm1,%xmm6
movdqa %xmm0,%xmm1
paddb  %xmm9,%xmm1
movdqa %xmm1,%xmm7
pminub %xmm5,%xmm7
pcmpeqb %xmm1,%xmm7
movdqa %xmm0,%xmm1
paddb  %xmm10,%xmm1
pand   %xmm7,%xmm1
pandn  %xmm6,%xmm7
por    %xmm1,%xmm7
movdqa %xmm0,%xmm1
paddb  %xmm4,%xmm1
movdqa %xmm1,%xmm6
pminub %xmm5,%xmm6
pcmpeqb %xmm1,%xmm6
paddb  %xmm11,%xmm0
pand   %xmm6,%xmm0
pandn  %xmm7,%xmm6
por    %xmm0,%xmm6
psllw  $0x4,%xmm3
pand   %xmm12,%xmm3
por    %xmm6,%xmm3
movdqu %xmm3,(%rax,%rdx,1)
add    $0x10,%rdx
cmp    %rdx,%r8
jne    1230 <guild_decode_emblem+0x130>
cmp    %r10,%r8
je     11bd <guild_decode_emblem+0xbd>
test   $0x8,%r10b
jne    1341 <guild_decode_emblem+0x241>
lea    (%rsi,%r8,2),%r11
jmp    1139 <guild_decode_emblem+0x39>
mov    %r8,%rdi
mov    %r10d,%r8d
and    $0xfffffff8,%r8d
lea    (%rsi,%r8,2),%r11
movdqa 0xca8(%rip),%xmm8
movdqa 0xd3f(%rip),%xmm15
movdqa 0xd47(%rip),%xmm2
movdqa 0xd4e(%rip),%xmm9
movdqa 0xd55(%rip),%xmm10
movdqa 0xd5d(%rip),%xmm5
movdqa 0xd65(%rip),%xmm6
movdqa 0xd6c(%rip),%xmm11
movdqa 0xd73(%rip),%xmm12
movdqa 0xd7a(%rip),%xmm13
movdqa 0xce1(%rip),%xmm14
nop
movdqu (%rsi,%rdi,2),%xmm3
movdqa %xmm3,%xmm7
pand   %xmm8,%xmm7
packuswb %xmm7,%xmm7
psrlw  $0x8,%xmm3
packuswb %xmm3,%xmm3
movdqa %xmm7,%xmm0
paddb  %xmm15,%xmm0
movdqa %xmm0,%xmm4
pmaxub %xmm2,%xmm4
pcmpeqb %xmm0,%xmm4
pandn  %xmm0,%xmm4
movdqa %xmm7,%xmm1
paddb  %xmm9,%xmm1
pand   %xmm10,%xmm7
paddb  %xmm5,%xmm7
movdqa %xmm7,%xmm0
pmaxub %xmm6,%xmm0
pcmpeqb %xmm7,%xmm0
pand   %xmm0,%xmm4
pandn  %xmm1,%xmm0
por    %xmm4,%xmm0
movdqa %xmm3,%xmm1
paddb  %xmm15,%xmm1
movdqa %xmm1,%xmm4
pmaxub %xmm2,%xmm4
pcmpeqb %xmm1,%xmm4
pandn  %xmm1,%xmm4
movdqa %xmm3,%xmm1
paddb  %xmm11,%xmm1
movdqa %xmm1,%xmm7
pmaxub %xmm6,%xmm7
pcmpeqb %xmm1,%xmm7
movdqa %xmm3,%xmm1
paddb  %xmm12,%xmm1
pand   %xmm7,%xmm4
pandn  %xmm1,%xmm7
por    %xmm4,%xmm7
movdqa %xmm3,%xmm1
paddb  %xmm5,%xmm1
movdqa %xmm1,%xmm4
pmaxub %xmm6,%xmm4
pcmpeqb %xmm1,%xmm4
paddb  %xmm13,%xmm3
pand   %xmm4,%xmm7
pandn  %xmm3,%xmm4
por    %xmm7,%xmm4
psllw  $0x4,%xmm0
pand   %xmm14,%xmm0
por    %xmm4,%xmm0
movq   %xmm0,(%rax,%rdi,1)
add    $0x8,%rdi
cmp    %rdi,%r8
jne    13b0 <guild_decode_emblem+0x2b0>
cmp    %r10,%r8
jne    1139 <guild_decode_emblem+0x39>
jmp    11bd <guild_decode_emblem+0xbd>

LLVM IR (-O0):
define i8* @guild_decode_emblem(i8* %0, i8* %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
store i8* %0, i8** %4
store i8* %1, i8** %5
store i32 %2, i32* %6
%13 = load i8*, i8** %5
store i8* %13, i8** %8
store i32 0, i32* %7
br label %14
14: ; preds = %94, %3
%15 = load i32, i32* %7
%16 = load i32, i32* %6
%17 = icmp slt i32 %15, %16
br i1 %17, label %18, label %99
18: ; preds = %14
%19 = load i8*, i8** %8
%20 = getelementptr inbounds i8, i8* %19, i64 0
%21 = load i8, i8* %20
%22 = sext i8 %21 to i32
store i32 %22, i32* %9
%23 = load i8*, i8** %8
%24 = getelementptr inbounds i8, i8* %23, i64 1
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
store i32 %26, i32* %10
store i32 0, i32* %11
store i32 0, i32* %12
%27 = load i32, i32* %9
%28 = icmp sge i32 %27, 48
br i1 %28, label %29, label %35
29: ; preds = %18
%30 = load i32, i32* %9
%31 = icmp sle i32 %30, 57
br i1 %31, label %32, label %35
32: ; preds = %29
%33 = load i32, i32* %9
%34 = sub nsw i32 %33, 48
store i32 %34, i32* %11
br label %35
35: ; preds = %32, %29, %18
%36 = load i32, i32* %9
%37 = icmp sge i32 %36, 97
br i1 %37, label %38, label %45
38: ; preds = %35
%39 = load i32, i32* %9
%40 = icmp sle i32 %39, 102
br i1 %40, label %41, label %45
41: ; preds = %38
%42 = load i32, i32* %9
%43 = sub nsw i32 %42, 97
%44 = add nsw i32 %43, 10
store i32 %44, i32* %11
br label %45
45: ; preds = %41, %38, %35
%46 = load i32, i32* %9
%47 = icmp sge i32 %46, 65
br i1 %47, label %48, label %55
48: ; preds = %45
%49 = load i32, i32* %9
%50 = icmp sle i32 %49, 70
br i1 %50, label %51, label %55
51: ; preds = %48
%52 = load i32, i32* %9
%53 = sub nsw i32 %52, 65
%54 = add nsw i32 %53, 10
store i32 %54, i32* %11
br label %55
55: ; preds = %51, %48, %45
%56 = load i32, i32* %10
%57 = icmp sge i32 %56, 48
br i1 %57, label %58, label %64
58: ; preds = %55
%59 = load i32, i32* %10
%60 = icmp sle i32 %59, 57
br i1 %60, label %61, label %64
61: ; preds = %58
%62 = load i32, i32* %10
%63 = sub nsw i32 %62, 48
store i32 %63, i32* %12
br label %64
64: ; preds = %61, %58, %55
%65 = load i32, i32* %10
%66 = icmp sge i32 %65, 97
br i1 %66, label %67, label %74
67: ; preds = %64
%68 = load i32, i32* %10
%69 = icmp sle i32 %68, 102
br i1 %69, label %70, label %74
70: ; preds = %67
%71 = load i32, i32* %10
%72 = sub nsw i32 %71, 97
%73 = add nsw i32 %72, 10
store i32 %73, i32* %12
br label %74
74: ; preds = %70, %67, %64
%75 = load i32, i32* %10
%76 = icmp sge i32 %75, 65
br i1 %76, label %77, label %84
77: ; preds = %74
%78 = load i32, i32* %10
%79 = icmp sle i32 %78, 70
br i1 %79, label %80, label %84
80: ; preds = %77
%81 = load i32, i32* %10
%82 = sub nsw i32 %81, 65
%83 = add nsw i32 %82, 10
store i32 %83, i32* %12
br label %84
84: ; preds = %80, %77, %74
%85 = load i32, i32* %11
%86 = shl i32 %85, 4
%87 = load i32, i32* %12
%88 = or i32 %86, %87
%89 = trunc i32 %88 to i8
%90 = load i8*, i8** %4
%91 = load i32, i32* %7
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds i8, i8* %90, i64 %92
store i8 %89, i8* %93
br label %94
94: ; preds = %84
%95 = load i32, i32* %7
%96 = add nsw i32 %95, 1
store i32 %96, i32* %7
%97 = load i8*, i8** %8
%98 = getelementptr inbounds i8, i8* %97, i64 2
store i8* %98, i8** %8
br label %14
99: ; preds = %14
%100 = load i8*, i8** %4
ret i8* %100
}

LLVM IR (-O2):
define i8* @guild_decode_emblem(i8* returned writeonly %0, i8* nocapture %1, i32 %2) {
%4 = icmp sgt i32 %2, 0
br i1 %4, label %5, label %133
5: ; preds = %3
%6 = zext i32 %2 to i64
%7 = icmp ult i32 %2, 8
br i1 %7, label %99, label %8
8: ; preds = %5
%9 = getelementptr i8, i8* %0, i64 %6
%10 = shl nuw nsw i64 %6, 1
%11 = getelementptr i8, i8* %1, i64 %10
%12 = icmp ugt i8* %11, %0
%13 = icmp ugt i8* %9, %1
%14 = and i1 %12, %13
br i1 %14, label %99, label %15
15: ; preds = %8
%16 = icmp ult i32 %2, 16
br i1 %16, label %59, label %17
17: ; preds = %15
%18 = and i64 %6, 4294967280
br label %19
19: ; preds = %19, %17
%20 = phi i64 [ 0, %17 ], [ %50, %19 ]
%21 = shl i64 %20, 1
%22 = getelementptr i8, i8* %1, i64 %21
%23 = bitcast i8* %22 to <32 x i8>*
%24 = load <32 x i8>, <32 x i8>* %23
%25 = shufflevector <32 x i8> %24, <32 x i8> poison, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30>
%26 = shufflevector <32 x i8> %24, <32 x i8> poison, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
%27 = add <16 x i8> %25, <i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48>
%28 = icmp ult <16 x i8> %27, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%29 = select <16 x i1> %28, <16 x i8> %27, <16 x i8> zeroinitializer
%30 = add <16 x i8> %25, <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>
%31 = and <16 x i8> %25, <i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33>
%32 = add <16 x i8> %31, <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>
%33 = icmp ult <16 x i8> %32, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
%34 = select <16 x i1> %33, <16 x i8> %30, <16 x i8> %29
%35 = add <16 x i8> %26, <i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48>
%36 = icmp ult <16 x i8> %35, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%37 = select <16 x i1> %36, <16 x i8> %35, <16 x i8> zeroinitializer
%38 = add <16 x i8> %26, <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>
%39 = icmp ult <16 x i8> %38, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
%40 = add <16 x i8> %26, <i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87>
%41 = select <16 x i1> %39, <16 x i8> %40, <16 x i8> %37
%42 = add <16 x i8> %26, <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>
%43 = icmp ult <16 x i8> %42, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
%44 = add <16 x i8> %26, <i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55>
%45 = select <16 x i1> %43, <16 x i8> %44, <16 x i8> %41
%46 = shl <16 x i8> %34, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
%47 = or <16 x i8> %46, %45
%48 = getelementptr inbounds i8, i8* %0, i64 %20
%49 = bitcast i8* %48 to <16 x i8>*
store <16 x i8> %47, <16 x i8>* %49
%50 = add nuw i64 %20, 16
%51 = icmp eq i64 %50, %18
br i1 %51, label %52, label %19
52: ; preds = %19
%53 = icmp eq i64 %18, %6
br i1 %53, label %133, label %54
54: ; preds = %52
%55 = shl nuw nsw i64 %18, 1
%56 = getelementptr i8, i8* %1, i64 %55
%57 = and i64 %6, 8
%58 = icmp eq i64 %57, 0
br i1 %58, label %99, label %59
59: ; preds = %15, %54
%60 = phi i64 [ %18, %54 ], [ 0, %15 ]
%61 = and i64 %6, 4294967288
%62 = shl nuw nsw i64 %61, 1
%63 = getelementptr i8, i8* %1, i64 %62
br label %64
64: ; preds = %64, %59
%65 = phi i64 [ %60, %59 ], [ %95, %64 ]
%66 = shl i64 %65, 1
%67 = getelementptr i8, i8* %1, i64 %66
%68 = bitcast i8* %67 to <16 x i8>*
%69 = load <16 x i8>, <16 x i8>* %68
%70 = shufflevector <16 x i8> %69, <16 x i8> poison, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
%71 = shufflevector <16 x i8> %69, <16 x i8> poison, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
%72 = add <8 x i8> %70, <i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48>
%73 = icmp ult <8 x i8> %72, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%74 = select <8 x i1> %73, <8 x i8> %72, <8 x i8> zeroinitializer
%75 = add <8 x i8> %70, <i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9, i8 9>
%76 = and <8 x i8> %70, <i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33, i8 -33>
%77 = add <8 x i8> %76, <i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65>
%78 = icmp ult <8 x i8> %77, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
%79 = select <8 x i1> %78, <8 x i8> %75, <8 x i8> %74
%80 = add <8 x i8> %71, <i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48, i8 -48>
%81 = icmp ult <8 x i8> %80, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%82 = select <8 x i1> %81, <8 x i8> %80, <8 x i8> zeroinitializer
%83 = add <8 x i8> %71, <i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97>
%84 = icmp ult <8 x i8> %83, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
%85 = add <8 x i8> %71, <i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87, i8 -87>
%86 = select <8 x i1> %84, <8 x i8> %85, <8 x i8> %82
%87 = add <8 x i8> %71, <i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65>
%88 = icmp ult <8 x i8> %87, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
%89 = add <8 x i8> %71, <i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55, i8 -55>
%90 = select <8 x i1> %88, <8 x i8> %89, <8 x i8> %86
%91 = shl <8 x i8> %79, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
%92 = or <8 x i8> %91, %90
%93 = getelementptr inbounds i8, i8* %0, i64 %65
%94 = bitcast i8* %93 to <8 x i8>*
store <8 x i8> %92, <8 x i8>* %94
%95 = add nuw i64 %65, 8
%96 = icmp eq i64 %95, %61
br i1 %96, label %97, label %64
97: ; preds = %64
%98 = icmp eq i64 %61, %6
br i1 %98, label %133, label %99
99: ; preds = %8, %5, %54, %97
%100 = phi i64 [ 0, %5 ], [ 0, %8 ], [ %18, %54 ], [ %61, %97 ]
%101 = phi i8* [ %1, %5 ], [ %1, %8 ], [ %56, %54 ], [ %63, %97 ]
br label %102
102: ; preds = %99, %102
%103 = phi i64 [ %130, %102 ], [ %100, %99 ]
%104 = phi i8* [ %131, %102 ], [ %101, %99 ]
%105 = load i8, i8* %104
%106 = getelementptr inbounds i8, i8* %104, i64 1
%107 = load i8, i8* %106
%108 = add i8 %105, -48
%109 = icmp ult i8 %108, 10
%110 = select i1 %109, i8 %108, i8 0
%111 = add i8 %105, 9
%112 = and i8 %105, -33
%113 = add i8 %112, -65
%114 = icmp ult i8 %113, 6
%115 = select i1 %114, i8 %111, i8 %110
%116 = add i8 %107, -48
%117 = icmp ult i8 %116, 10
%118 = select i1 %117, i8 %116, i8 0
%119 = add i8 %107, -97
%120 = icmp ult i8 %119, 6
%121 = add i8 %107, -87
%122 = select i1 %120, i8 %121, i8 %118
%123 = add i8 %107, -65
%124 = icmp ult i8 %123, 6
%125 = add i8 %107, -55
%126 = select i1 %124, i8 %125, i8 %122
%127 = shl i8 %115, 4
%128 = or i8 %127, %126
%129 = getelementptr inbounds i8, i8* %0, i64 %103
store i8 %128, i8* %129
%130 = add nuw nsw i64 %103, 1
%131 = getelementptr inbounds i8, i8* %104, i64 2
%132 = icmp eq i64 %130, %6
br i1 %132, label %133, label %102
133: ; preds = %102, %52, %97, %3
ret i8* %0
}