#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ memset(unsigned char *, int /*<<< orphan*/, int);
int str2mac(unsigned char *mac_addr, char *str) {
  int i;
  char high, low;
  char *ptr = str;
  memset(mac_addr, 0, 6);
  for (i = 0; i < 6; i++) {
    high = *ptr;
    low = *(ptr + 1);
    if (high >= 48 && high <= 57)
      high -= 48;
    else if (high >= 97 && high <= 102)
      high -= 87;
    else if (high >= 65 && high <= 70)
      high -= 55;
    else
      return 0;
    if (low >= 48 && low <= 57)
      low -= 48;
    else if (low >= 97 && low <= 102)
      low -= 87;
    else if (low >= 65 && low <= 70)
      low -= 55;
    else
      return 0;
    mac_addr[i] |= high;
    mac_addr[i] = mac_addr[i] << 4;
    mac_addr[i] |= low;
    ptr = ptr + 3;
  }
  return 1;
}


x86 assembly (clang, -O0):
<str2mac>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
mov    $0x6,%edx
call   1030 <memset@plt>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x6,-0x1c(%rbp)
jge    12de <str2mac+0x1ce>
mov    -0x28(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x1d(%rbp)
mov    -0x28(%rbp),%rax
mov    0x1(%rax),%al
mov    %al,-0x1e(%rbp)
movsbl -0x1d(%rbp),%eax
cmp    $0x30,%eax
jl     1185 <str2mac+0x75>
movsbl -0x1d(%rbp),%eax
cmp    $0x39,%eax
jg     1185 <str2mac+0x75>
movsbl -0x1d(%rbp),%eax
sub    $0x30,%eax
mov    %al,-0x1d(%rbp)
jmp    11ed <str2mac+0xdd>
movsbl -0x1d(%rbp),%eax
cmp    $0x61,%eax
jl     11ae <str2mac+0x9e>
movsbl -0x1d(%rbp),%eax
cmp    $0x66,%eax
jg     11ae <str2mac+0x9e>
movsbl -0x1d(%rbp),%eax
sub    $0x57,%eax
mov    %al,-0x1d(%rbp)
jmp    11e8 <str2mac+0xd8>
movsbl -0x1d(%rbp),%eax
cmp    $0x41,%eax
jl     11d7 <str2mac+0xc7>
movsbl -0x1d(%rbp),%eax
cmp    $0x46,%eax
jg     11d7 <str2mac+0xc7>
movsbl -0x1d(%rbp),%eax
sub    $0x37,%eax
mov    %al,-0x1d(%rbp)
jmp    11e3 <str2mac+0xd3>
movl   $0x0,-0x4(%rbp)
jmp    12e5 <str2mac+0x1d5>
jmp    11e8 <str2mac+0xd8>
jmp    11ed <str2mac+0xdd>
movsbl -0x1e(%rbp),%eax
cmp    $0x30,%eax
jl     1216 <str2mac+0x106>
movsbl -0x1e(%rbp),%eax
cmp    $0x39,%eax
jg     1216 <str2mac+0x106>
movsbl -0x1e(%rbp),%eax
sub    $0x30,%eax
mov    %al,-0x1e(%rbp)
jmp    127e <str2mac+0x16e>
movsbl -0x1e(%rbp),%eax
cmp    $0x61,%eax
jl     123f <str2mac+0x12f>
movsbl -0x1e(%rbp),%eax
cmp    $0x66,%eax
jg     123f <str2mac+0x12f>
movsbl -0x1e(%rbp),%eax
sub    $0x57,%eax
mov    %al,-0x1e(%rbp)
jmp    1279 <str2mac+0x169>
movsbl -0x1e(%rbp),%eax
cmp    $0x41,%eax
jl     1268 <str2mac+0x158>
movsbl -0x1e(%rbp),%eax
cmp    $0x46,%eax
jg     1268 <str2mac+0x158>
movsbl -0x1e(%rbp),%eax
sub    $0x37,%eax
mov    %al,-0x1e(%rbp)
jmp    1274 <str2mac+0x164>
movl   $0x0,-0x4(%rbp)
jmp    12e5 <str2mac+0x1d5>
jmp    1279 <str2mac+0x169>
jmp    127e <str2mac+0x16e>
movsbl -0x1d(%rbp),%esi
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%edx
or     %esi,%edx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
shl    $0x4,%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
movsbl -0x1e(%rbp),%esi
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%edx
or     %esi,%edx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x28(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    113f <str2mac+0x2f>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<str2mac>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%rbx
mov    %rdi,%r14
xor    %esi,%esi
mov    $0x6,%edx
call   1030 <memset@plt>
mov    (%rbx),%sil
mov    0x1(%rbx),%cl
lea    -0x30(%rsi),%edx
cmp    $0xa,%dl
jb     1155 <str2mac+0x45>
lea    -0x61(%rsi),%eax
cmp    $0x5,%al
ja     1141 <str2mac+0x31>
add    $0xa9,%sil
jmp    1153 <str2mac+0x43>
lea    -0x41(%rsi),%edx
xor    %eax,%eax
cmp    $0x5,%dl
ja     1374 <str2mac+0x264>
add    $0xc9,%sil
mov    %esi,%edx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jb     117c <str2mac+0x6c>
lea    -0x61(%rcx),%eax
cmp    $0x5,%al
ja     1168 <str2mac+0x58>
add    $0xa9,%cl
jmp    117a <str2mac+0x6a>
lea    -0x41(%rcx),%esi
xor    %eax,%eax
cmp    $0x5,%sil
ja     1374 <str2mac+0x264>
add    $0xc9,%cl
mov    %ecx,%eax
or     (%r14),%dl
shl    $0x4,%dl
or     %al,%dl
mov    %dl,(%r14)
mov    0x3(%rbx),%sil
mov    0x4(%rbx),%cl
lea    -0x30(%rsi),%edx
cmp    $0xa,%dl
jb     11b7 <str2mac+0xa7>
lea    -0x61(%rsi),%eax
cmp    $0x6,%al
jae    11a3 <str2mac+0x93>
add    $0xa9,%sil
jmp    11b5 <str2mac+0xa5>
lea    -0x41(%rsi),%edx
xor    %eax,%eax
cmp    $0x5,%dl
ja     1374 <str2mac+0x264>
add    $0xc9,%sil
mov    %esi,%edx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jb     11de <str2mac+0xce>
lea    -0x61(%rcx),%eax
cmp    $0x6,%al
jae    11ca <str2mac+0xba>
add    $0xa9,%cl
jmp    11dc <str2mac+0xcc>
lea    -0x41(%rcx),%esi
xor    %eax,%eax
cmp    $0x5,%sil
ja     1374 <str2mac+0x264>
add    $0xc9,%cl
mov    %ecx,%eax
or     0x1(%r14),%dl
shl    $0x4,%dl
or     %al,%dl
mov    %dl,0x1(%r14)
mov    0x6(%rbx),%sil
mov    0x7(%rbx),%cl
lea    -0x30(%rsi),%edx
cmp    $0xa,%dl
jb     121b <str2mac+0x10b>
lea    -0x61(%rsi),%eax
cmp    $0x6,%al
jae    1207 <str2mac+0xf7>
add    $0xa9,%sil
jmp    1219 <str2mac+0x109>
lea    -0x41(%rsi),%edx
xor    %eax,%eax
cmp    $0x5,%dl
ja     1374 <str2mac+0x264>
add    $0xc9,%sil
mov    %esi,%edx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jb     1242 <str2mac+0x132>
lea    -0x61(%rcx),%eax
cmp    $0x6,%al
jae    122e <str2mac+0x11e>
add    $0xa9,%cl
jmp    1240 <str2mac+0x130>
lea    -0x41(%rcx),%esi
xor    %eax,%eax
cmp    $0x5,%sil
ja     1374 <str2mac+0x264>
add    $0xc9,%cl
mov    %ecx,%eax
or     0x2(%r14),%dl
shl    $0x4,%dl
or     %al,%dl
mov    %dl,0x2(%r14)
mov    0x9(%rbx),%sil
mov    0xa(%rbx),%cl
lea    -0x30(%rsi),%edx
cmp    $0xa,%dl
jb     127f <str2mac+0x16f>
lea    -0x61(%rsi),%eax
cmp    $0x6,%al
jae    126b <str2mac+0x15b>
add    $0xa9,%sil
jmp    127d <str2mac+0x16d>
lea    -0x41(%rsi),%edx
xor    %eax,%eax
cmp    $0x5,%dl
ja     1374 <str2mac+0x264>
add    $0xc9,%sil
mov    %esi,%edx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jb     12a6 <str2mac+0x196>
lea    -0x61(%rcx),%eax
cmp    $0x6,%al
jae    1292 <str2mac+0x182>
add    $0xa9,%cl
jmp    12a4 <str2mac+0x194>
lea    -0x41(%rcx),%esi
xor    %eax,%eax
cmp    $0x5,%sil
ja     1374 <str2mac+0x264>
add    $0xc9,%cl
mov    %ecx,%eax
or     0x3(%r14),%dl
shl    $0x4,%dl
or     %al,%dl
mov    %dl,0x3(%r14)
mov    0xc(%rbx),%sil
mov    0xd(%rbx),%cl
lea    -0x30(%rsi),%edx
cmp    $0xa,%dl
jb     12e3 <str2mac+0x1d3>
lea    -0x61(%rsi),%eax
cmp    $0x6,%al
jae    12cf <str2mac+0x1bf>
add    $0xa9,%sil
jmp    12e1 <str2mac+0x1d1>
lea    -0x41(%rsi),%edx
xor    %eax,%eax
cmp    $0x5,%dl
ja     1374 <str2mac+0x264>
add    $0xc9,%sil
mov    %esi,%edx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jb     1306 <str2mac+0x1f6>
lea    -0x61(%rcx),%eax
cmp    $0x6,%al
jae    12f6 <str2mac+0x1e6>
add    $0xa9,%cl
jmp    1304 <str2mac+0x1f4>
lea    -0x41(%rcx),%esi
xor    %eax,%eax
cmp    $0x5,%sil
ja     1374 <str2mac+0x264>
add    $0xc9,%cl
mov    %ecx,%eax
or     0x4(%r14),%dl
shl    $0x4,%dl
or     %al,%dl
mov    %dl,0x4(%r14)
mov    0xf(%rbx),%sil
mov    0x10(%rbx),%cl
lea    -0x30(%rsi),%edx
cmp    $0xa,%dl
jb     133f <str2mac+0x22f>
lea    -0x61(%rsi),%eax
cmp    $0x6,%al
jae    132f <str2mac+0x21f>
add    $0xa9,%sil
jmp    133d <str2mac+0x22d>
lea    -0x41(%rsi),%edx
xor    %eax,%eax
cmp    $0x5,%dl
ja     1374 <str2mac+0x264>
add    $0xc9,%sil
mov    %esi,%edx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jb     1362 <str2mac+0x252>
lea    -0x61(%rcx),%eax
cmp    $0x6,%al
jae    1352 <str2mac+0x242>
add    $0xa9,%cl
jmp    1360 <str2mac+0x250>
lea    -0x41(%rcx),%esi
xor    %eax,%eax
cmp    $0x5,%sil
ja     1374 <str2mac+0x264>
add    $0xc9,%cl
mov    %ecx,%eax
or     0x5(%r14),%dl
shl    $0x4,%dl
or     %al,%dl
mov    %dl,0x5(%r14)
mov    $0x1,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define i32 @str2mac(i8* %0, i8* %1) {
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i8
%8 = alloca i8
%9 = alloca i8*
store i8* %0, i8** %4
store i8* %1, i8** %5
%10 = load i8*, i8** %5
store i8* %10, i8** %9
%11 = load i8*, i8** %4
%12 = call i32 @memset(i8* %11, i32 0, i32 6)
store i32 0, i32* %6
br label %13
13: ; preds = %140, %2
%14 = load i32, i32* %6
%15 = icmp slt i32 %14, 6
br i1 %15, label %16, label %143
16: ; preds = %13
%17 = load i8*, i8** %9
%18 = load i8, i8* %17
store i8 %18, i8* %7
%19 = load i8*, i8** %9
%20 = getelementptr inbounds i8, i8* %19, i64 1
%21 = load i8, i8* %20
store i8 %21, i8* %8
%22 = load i8, i8* %7
%23 = sext i8 %22 to i32
%24 = icmp sge i32 %23, 48
br i1 %24, label %25, label %34
25: ; preds = %16
%26 = load i8, i8* %7
%27 = sext i8 %26 to i32
%28 = icmp sle i32 %27, 57
br i1 %28, label %29, label %34
29: ; preds = %25
%30 = load i8, i8* %7
%31 = sext i8 %30 to i32
%32 = sub nsw i32 %31, 48
%33 = trunc i32 %32 to i8
store i8 %33, i8* %7
br label %63
34: ; preds = %25, %16
%35 = load i8, i8* %7
%36 = sext i8 %35 to i32
%37 = icmp sge i32 %36, 97
br i1 %37, label %38, label %47
38: ; preds = %34
%39 = load i8, i8* %7
%40 = sext i8 %39 to i32
%41 = icmp sle i32 %40, 102
br i1 %41, label %42, label %47
42: ; preds = %38
%43 = load i8, i8* %7
%44 = sext i8 %43 to i32
%45 = sub nsw i32 %44, 87
%46 = trunc i32 %45 to i8
store i8 %46, i8* %7
br label %62
47: ; preds = %38, %34
%48 = load i8, i8* %7
%49 = sext i8 %48 to i32
%50 = icmp sge i32 %49, 65
br i1 %50, label %51, label %60
51: ; preds = %47
%52 = load i8, i8* %7
%53 = sext i8 %52 to i32
%54 = icmp sle i32 %53, 70
br i1 %54, label %55, label %60
55: ; preds = %51
%56 = load i8, i8* %7
%57 = sext i8 %56 to i32
%58 = sub nsw i32 %57, 55
%59 = trunc i32 %58 to i8
store i8 %59, i8* %7
br label %61
60: ; preds = %51, %47
store i32 0, i32* %3
br label %144
61: ; preds = %55
br label %62
62: ; preds = %61, %42
br label %63
63: ; preds = %62, %29
%64 = load i8, i8* %8
%65 = sext i8 %64 to i32
%66 = icmp sge i32 %65, 48
br i1 %66, label %67, label %76
67: ; preds = %63
%68 = load i8, i8* %8
%69 = sext i8 %68 to i32
%70 = icmp sle i32 %69, 57
br i1 %70, label %71, label %76
71: ; preds = %67
%72 = load i8, i8* %8
%73 = sext i8 %72 to i32
%74 = sub nsw i32 %73, 48
%75 = trunc i32 %74 to i8
store i8 %75, i8* %8
br label %105
76: ; preds = %67, %63
%77 = load i8, i8* %8
%78 = sext i8 %77 to i32
%79 = icmp sge i32 %78, 97
br i1 %79, label %80, label %89
80: ; preds = %76
%81 = load i8, i8* %8
%82 = sext i8 %81 to i32
%83 = icmp sle i32 %82, 102
br i1 %83, label %84, label %89
84: ; preds = %80
%85 = load i8, i8* %8
%86 = sext i8 %85 to i32
%87 = sub nsw i32 %86, 87
%88 = trunc i32 %87 to i8
store i8 %88, i8* %8
br label %104
89: ; preds = %80, %76
%90 = load i8, i8* %8
%91 = sext i8 %90 to i32
%92 = icmp sge i32 %91, 65
br i1 %92, label %93, label %102
93: ; preds = %89
%94 = load i8, i8* %8
%95 = sext i8 %94 to i32
%96 = icmp sle i32 %95, 70
br i1 %96, label %97, label %102
97: ; preds = %93
%98 = load i8, i8* %8
%99 = sext i8 %98 to i32
%100 = sub nsw i32 %99, 55
%101 = trunc i32 %100 to i8
store i8 %101, i8* %8
br label %103
102: ; preds = %93, %89
store i32 0, i32* %3
br label %144
103: ; preds = %97
br label %104
104: ; preds = %103, %84
br label %105
105: ; preds = %104, %71
%106 = load i8, i8* %7
%107 = sext i8 %106 to i32
%108 = load i8*, i8** %4
%109 = load i32, i32* %6
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds i8, i8* %108, i64 %110
%112 = load i8, i8* %111
%113 = zext i8 %112 to i32
%114 = or i32 %113, %107
%115 = trunc i32 %114 to i8
store i8 %115, i8* %111
%116 = load i8*, i8** %4
%117 = load i32, i32* %6
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds i8, i8* %116, i64 %118
%120 = load i8, i8* %119
%121 = zext i8 %120 to i32
%122 = shl i32 %121, 4
%123 = trunc i32 %122 to i8
%124 = load i8*, i8** %4
%125 = load i32, i32* %6
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds i8, i8* %124, i64 %126
store i8 %123, i8* %127
%128 = load i8, i8* %8
%129 = sext i8 %128 to i32
%130 = load i8*, i8** %4
%131 = load i32, i32* %6
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds i8, i8* %130, i64 %132
%134 = load i8, i8* %133
%135 = zext i8 %134 to i32
%136 = or i32 %135, %129
%137 = trunc i32 %136 to i8
store i8 %137, i8* %133
%138 = load i8*, i8** %9
%139 = getelementptr inbounds i8, i8* %138, i64 3
store i8* %139, i8** %9
br label %140
140: ; preds = %105
%141 = load i32, i32* %6
%142 = add nsw i32 %141, 1
store i32 %142, i32* %6
br label %13
143: ; preds = %13
store i32 1, i32* %3
br label %144
144: ; preds = %143, %102, %60
%145 = load i32, i32* %3
ret i32 %145
}

LLVM IR (-O2):
define i32 @str2mac(i8* %0, i8* nocapture %1) {
%3 = tail call i32 @memset(i8* %0, i32 0, i32 6)
%4 = load i8, i8* %1
%5 = getelementptr inbounds i8, i8* %1, i64 1
%6 = load i8, i8* %5
%7 = add i8 %4, -48
%8 = icmp ult i8 %7, 10
br i1 %8, label %19, label %9
9: ; preds = %2
%10 = add i8 %4, -97
%11 = icmp ult i8 %10, 6
br i1 %11, label %12, label %14
12: ; preds = %9
%13 = add nsw i8 %4, -87
br label %19
14: ; preds = %9
%15 = add i8 %4, -65
%16 = icmp ult i8 %15, 6
br i1 %16, label %17, label %224
17: ; preds = %14
%18 = add nsw i8 %4, -55
br label %19
19: ; preds = %2, %12, %17
%20 = phi i8 [ %13, %12 ], [ %18, %17 ], [ %7, %2 ]
%21 = add i8 %6, -48
%22 = icmp ult i8 %21, 10
br i1 %22, label %33, label %23
23: ; preds = %19
%24 = add i8 %6, -97
%25 = icmp ult i8 %24, 6
br i1 %25, label %26, label %28
26: ; preds = %23
%27 = add nsw i8 %6, -87
br label %33
28: ; preds = %23
%29 = add i8 %6, -65
%30 = icmp ult i8 %29, 6
br i1 %30, label %31, label %224
31: ; preds = %28
%32 = add nsw i8 %6, -55
br label %33
33: ; preds = %19, %26, %31
%34 = phi i8 [ %27, %26 ], [ %32, %31 ], [ %21, %19 ]
%35 = load i8, i8* %0
%36 = or i8 %35, %20
%37 = shl i8 %36, 4
%38 = or i8 %37, %34
store i8 %38, i8* %0
%39 = getelementptr inbounds i8, i8* %1, i64 3
%40 = load i8, i8* %39
%41 = getelementptr inbounds i8, i8* %1, i64 4
%42 = load i8, i8* %41
%43 = add i8 %40, -48
%44 = icmp ult i8 %43, 10
br i1 %44, label %55, label %45
45: ; preds = %33
%46 = add i8 %40, -97
%47 = icmp ult i8 %46, 6
br i1 %47, label %53, label %48
48: ; preds = %45
%49 = add i8 %40, -65
%50 = icmp ult i8 %49, 6
br i1 %50, label %51, label %224
51: ; preds = %48
%52 = add nsw i8 %40, -55
br label %55
53: ; preds = %45
%54 = add nsw i8 %40, -87
br label %55
55: ; preds = %53, %51, %33
%56 = phi i8 [ %54, %53 ], [ %52, %51 ], [ %43, %33 ]
%57 = add i8 %42, -48
%58 = icmp ult i8 %57, 10
br i1 %58, label %69, label %59
59: ; preds = %55
%60 = add i8 %42, -97
%61 = icmp ult i8 %60, 6
br i1 %61, label %67, label %62
62: ; preds = %59
%63 = add i8 %42, -65
%64 = icmp ult i8 %63, 6
br i1 %64, label %65, label %224
65: ; preds = %62
%66 = add nsw i8 %42, -55
br label %69
67: ; preds = %59
%68 = add nsw i8 %42, -87
br label %69
69: ; preds = %67, %65, %55
%70 = phi i8 [ %68, %67 ], [ %66, %65 ], [ %57, %55 ]
%71 = getelementptr inbounds i8, i8* %0, i64 1
%72 = load i8, i8* %71
%73 = or i8 %72, %56
%74 = shl i8 %73, 4
%75 = or i8 %74, %70
store i8 %75, i8* %71
%76 = getelementptr inbounds i8, i8* %1, i64 6
%77 = load i8, i8* %76
%78 = getelementptr inbounds i8, i8* %1, i64 7
%79 = load i8, i8* %78
%80 = add i8 %77, -48
%81 = icmp ult i8 %80, 10
br i1 %81, label %92, label %82
82: ; preds = %69
%83 = add i8 %77, -97
%84 = icmp ult i8 %83, 6
br i1 %84, label %90, label %85
85: ; preds = %82
%86 = add i8 %77, -65
%87 = icmp ult i8 %86, 6
br i1 %87, label %88, label %224
88: ; preds = %85
%89 = add nsw i8 %77, -55
br label %92
90: ; preds = %82
%91 = add nsw i8 %77, -87
br label %92
92: ; preds = %90, %88, %69
%93 = phi i8 [ %91, %90 ], [ %89, %88 ], [ %80, %69 ]
%94 = add i8 %79, -48
%95 = icmp ult i8 %94, 10
br i1 %95, label %106, label %96
96: ; preds = %92
%97 = add i8 %79, -97
%98 = icmp ult i8 %97, 6
br i1 %98, label %104, label %99
99: ; preds = %96
%100 = add i8 %79, -65
%101 = icmp ult i8 %100, 6
br i1 %101, label %102, label %224
102: ; preds = %99
%103 = add nsw i8 %79, -55
br label %106
104: ; preds = %96
%105 = add nsw i8 %79, -87
br label %106
106: ; preds = %104, %102, %92
%107 = phi i8 [ %105, %104 ], [ %103, %102 ], [ %94, %92 ]
%108 = getelementptr inbounds i8, i8* %0, i64 2
%109 = load i8, i8* %108
%110 = or i8 %109, %93
%111 = shl i8 %110, 4
%112 = or i8 %111, %107
store i8 %112, i8* %108
%113 = getelementptr inbounds i8, i8* %1, i64 9
%114 = load i8, i8* %113
%115 = getelementptr inbounds i8, i8* %1, i64 10
%116 = load i8, i8* %115
%117 = add i8 %114, -48
%118 = icmp ult i8 %117, 10
br i1 %118, label %129, label %119
119: ; preds = %106
%120 = add i8 %114, -97
%121 = icmp ult i8 %120, 6
br i1 %121, label %127, label %122
122: ; preds = %119
%123 = add i8 %114, -65
%124 = icmp ult i8 %123, 6
br i1 %124, label %125, label %224
125: ; preds = %122
%126 = add nsw i8 %114, -55
br label %129
127: ; preds = %119
%128 = add nsw i8 %114, -87
br label %129
129: ; preds = %127, %125, %106
%130 = phi i8 [ %128, %127 ], [ %126, %125 ], [ %117, %106 ]
%131 = add i8 %116, -48
%132 = icmp ult i8 %131, 10
br i1 %132, label %143, label %133
133: ; preds = %129
%134 = add i8 %116, -97
%135 = icmp ult i8 %134, 6
br i1 %135, label %141, label %136
136: ; preds = %133
%137 = add i8 %116, -65
%138 = icmp ult i8 %137, 6
br i1 %138, label %139, label %224
139: ; preds = %136
%140 = add nsw i8 %116, -55
br label %143
141: ; preds = %133
%142 = add nsw i8 %116, -87
br label %143
143: ; preds = %141, %139, %129
%144 = phi i8 [ %142, %141 ], [ %140, %139 ], [ %131, %129 ]
%145 = getelementptr inbounds i8, i8* %0, i64 3
%146 = load i8, i8* %145
%147 = or i8 %146, %130
%148 = shl i8 %147, 4
%149 = or i8 %148, %144
store i8 %149, i8* %145
%150 = getelementptr inbounds i8, i8* %1, i64 12
%151 = load i8, i8* %150
%152 = getelementptr inbounds i8, i8* %1, i64 13
%153 = load i8, i8* %152
%154 = add i8 %151, -48
%155 = icmp ult i8 %154, 10
br i1 %155, label %166, label %156
156: ; preds = %143
%157 = add i8 %151, -97
%158 = icmp ult i8 %157, 6
br i1 %158, label %164, label %159
159: ; preds = %156
%160 = add i8 %151, -65
%161 = icmp ult i8 %160, 6
br i1 %161, label %162, label %224
162: ; preds = %159
%163 = add nsw i8 %151, -55
br label %166
164: ; preds = %156
%165 = add nsw i8 %151, -87
br label %166
166: ; preds = %164, %162, %143
%167 = phi i8 [ %165, %164 ], [ %163, %162 ], [ %154, %143 ]
%168 = add i8 %153, -48
%169 = icmp ult i8 %168, 10
br i1 %169, label %180, label %170
170: ; preds = %166
%171 = add i8 %153, -97
%172 = icmp ult i8 %171, 6
br i1 %172, label %178, label %173
173: ; preds = %170
%174 = add i8 %153, -65
%175 = icmp ult i8 %174, 6
br i1 %175, label %176, label %224
176: ; preds = %173
%177 = add nsw i8 %153, -55
br label %180
178: ; preds = %170
%179 = add nsw i8 %153, -87
br label %180
180: ; preds = %178, %176, %166
%181 = phi i8 [ %179, %178 ], [ %177, %176 ], [ %168, %166 ]
%182 = getelementptr inbounds i8, i8* %0, i64 4
%183 = load i8, i8* %182
%184 = or i8 %183, %167
%185 = shl i8 %184, 4
%186 = or i8 %185, %181
store i8 %186, i8* %182
%187 = getelementptr inbounds i8, i8* %1, i64 15
%188 = load i8, i8* %187
%189 = getelementptr inbounds i8, i8* %1, i64 16
%190 = load i8, i8* %189
%191 = add i8 %188, -48
%192 = icmp ult i8 %191, 10
br i1 %192, label %203, label %193
193: ; preds = %180
%194 = add i8 %188, -97
%195 = icmp ult i8 %194, 6
br i1 %195, label %201, label %196
196: ; preds = %193
%197 = add i8 %188, -65
%198 = icmp ult i8 %197, 6
br i1 %198, label %199, label %224
199: ; preds = %196
%200 = add nsw i8 %188, -55
br label %203
201: ; preds = %193
%202 = add nsw i8 %188, -87
br label %203
203: ; preds = %201, %199, %180
%204 = phi i8 [ %202, %201 ], [ %200, %199 ], [ %191, %180 ]
%205 = add i8 %190, -48
%206 = icmp ult i8 %205, 10
br i1 %206, label %217, label %207
207: ; preds = %203
%208 = add i8 %190, -97
%209 = icmp ult i8 %208, 6
br i1 %209, label %215, label %210
210: ; preds = %207
%211 = add i8 %190, -65
%212 = icmp ult i8 %211, 6
br i1 %212, label %213, label %224
213: ; preds = %210
%214 = add nsw i8 %190, -55
br label %217
215: ; preds = %207
%216 = add nsw i8 %190, -87
br label %217
217: ; preds = %215, %213, %203
%218 = phi i8 [ %216, %215 ], [ %214, %213 ], [ %205, %203 ]
%219 = getelementptr inbounds i8, i8* %0, i64 5
%220 = load i8, i8* %219
%221 = or i8 %220, %204
%222 = shl i8 %221, 4
%223 = or i8 %222, %218
store i8 %223, i8* %219
br label %224
224: ; preds = %217, %210, %196, %173, %159, %136, %122, %99, %85, %62, %48, %28, %14
%225 = phi i32 [ 0, %14 ], [ 0, %28 ], [ 0, %48 ], [ 0, %62 ], [ 0, %85 ], [ 0, %99 ], [ 0, %122 ], [ 0, %136 ], [ 0, %159 ], [ 0, %173 ], [ 0, %196 ], [ 0, %210 ], [ 1, %217 ]
ret i32 %225
}