#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*/ printf(char *);
int strmac2hex(unsigned char hexmac[], char *strmac) {
  unsigned char i, temp8, *ptr8;
  ptr8 = (unsigned char *)strmac;
  for (i = 0; i < 6; i++) {
    temp8 = *ptr8++;
    if (temp8 >= '0' && temp8 <= '9') {
      hexmac[i] = (temp8 - '0') << 4;
    } else if ((temp8 >= 'a' && temp8 <= 'f') ||
               (temp8 >= 'A' && temp8 <= 'F')) {
      hexmac[i] = ((temp8 - 'a') + 10) << 4;
    } else {
      printf("bad dest mac!\n");
      return -1;
    }
    temp8 = *ptr8++;
    if (temp8 >= '0' && temp8 <= '9') {
      hexmac[i] |= (temp8 - '0');
    } else if ((temp8 >= 'a' && temp8 <= 'f') ||
               (temp8 >= 'A' && temp8 <= 'F')) {
      hexmac[i] |= ((temp8 - 'a') + 10);
    } else {
      printf("bad dest mac!\n");
      return -1;
    }
    ptr8++;
  }
  if (hexmac[0] & 1) {
    printf("bad dest mac: unsupported broadcast or multicast address!\n");
    return -1;
  }
  return 0;
}


x86 assembly (clang, -O0):
<strmac2hex>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x28(%rbp)
movb   $0x0,-0x19(%rbp)
movzbl -0x19(%rbp),%eax
cmp    $0x6,%eax
jge    12c8 <strmac2hex+0x1b8>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%al
mov    %al,-0x1a(%rbp)
movzbl -0x1a(%rbp),%eax
cmp    $0x30,%eax
jl     1183 <strmac2hex+0x73>
movzbl -0x1a(%rbp),%eax
cmp    $0x39,%eax
jg     1183 <strmac2hex+0x73>
movzbl -0x1a(%rbp),%eax
sub    $0x30,%eax
shl    $0x4,%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
movzbl -0x19(%rbp),%ecx
mov    %dl,(%rax,%rcx,1)
jmp    11f3 <strmac2hex+0xe3>
movzbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
jl     119d <strmac2hex+0x8d>
movzbl -0x1a(%rbp),%eax
cmp    $0x66,%eax
jle    11b7 <strmac2hex+0xa7>
movzbl -0x1a(%rbp),%eax
cmp    $0x41,%eax
jl     11d6 <strmac2hex+0xc6>
movzbl -0x1a(%rbp),%eax
cmp    $0x46,%eax
jg     11d6 <strmac2hex+0xc6>
movzbl -0x1a(%rbp),%eax
sub    $0x61,%eax
add    $0xa,%eax
shl    $0x4,%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
movzbl -0x19(%rbp),%ecx
mov    %dl,(%rax,%rcx,1)
jmp    11ee <strmac2hex+0xde>
lea    0xe23(%rip),%rdi
call   1030 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    12fa <strmac2hex+0x1ea>
jmp    11f3 <strmac2hex+0xe3>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%al
mov    %al,-0x1a(%rbp)
movzbl -0x1a(%rbp),%eax
cmp    $0x30,%eax
jl     123e <strmac2hex+0x12e>
movzbl -0x1a(%rbp),%eax
cmp    $0x39,%eax
jg     123e <strmac2hex+0x12e>
movzbl -0x1a(%rbp),%esi
sub    $0x30,%esi
mov    -0x10(%rbp),%rax
movzbl -0x19(%rbp),%ecx
movzbl (%rax,%rcx,1),%edx
or     %esi,%edx
mov    %dl,(%rax,%rcx,1)
jmp    12af <strmac2hex+0x19f>
movzbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
jl     1258 <strmac2hex+0x148>
movzbl -0x1a(%rbp),%eax
cmp    $0x66,%eax
jle    1272 <strmac2hex+0x162>
movzbl -0x1a(%rbp),%eax
cmp    $0x41,%eax
jl     1292 <strmac2hex+0x182>
movzbl -0x1a(%rbp),%eax
cmp    $0x46,%eax
jg     1292 <strmac2hex+0x182>
movzbl -0x1a(%rbp),%esi
sub    $0x61,%esi
add    $0xa,%esi
mov    -0x10(%rbp),%rax
movzbl -0x19(%rbp),%ecx
movzbl (%rax,%rcx,1),%edx
or     %esi,%edx
mov    %dl,(%rax,%rcx,1)
jmp    12aa <strmac2hex+0x19a>
lea    0xd67(%rip),%rdi
call   1030 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    12fa <strmac2hex+0x1ea>
jmp    12af <strmac2hex+0x19f>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x19(%rbp),%al
add    $0x1,%al
mov    %al,-0x19(%rbp)
jmp    112c <strmac2hex+0x1c>
mov    -0x10(%rbp),%rax
movzbl (%rax),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     12f3 <strmac2hex+0x1e3>
lea    0xd2d(%rip),%rdi
call   1030 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    12fa <strmac2hex+0x1ea>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<strmac2hex>:
push   %rax
mov    (%rsi),%cl
lea    -0x30(%rcx),%eax
cmp    $0x9,%al
ja     111f <strmac2hex+0xf>
shl    $0x4,%cl
jmp    114f <strmac2hex+0x3f>
lea    0xf14(%rip),%r8
lea    -0x41(%rcx),%edx
cmp    $0x25,%dl
ja     1406 <strmac2hex+0x2f6>
movzbl %dl,%eax
movabs $0x3f0000003f,%rdx
bt     %rax,%rdx
jae    1406 <strmac2hex+0x2f6>
shl    $0x4,%cl
add    $0x90,%cl
mov    %cl,(%rdi)
mov    0x1(%rsi),%dl
lea    -0x30(%rdx),%eax
cmp    $0xa,%al
jb     118a <strmac2hex+0x7a>
lea    0xed8(%rip),%r8
lea    -0x41(%rdx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%r9d
movabs $0x3f0000003f,%rax
bt     %r9,%rax
jae    1406 <strmac2hex+0x2f6>
add    $0xa9,%dl
mov    %edx,%eax
or     %al,%cl
mov    %cl,(%rdi)
mov    0x3(%rsi),%cl
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    119d <strmac2hex+0x8d>
shl    $0x4,%cl
jmp    11cc <strmac2hex+0xbc>
lea    0xe96(%rip),%r8
lea    -0x41(%rcx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%eax
movabs $0x3f0000003f,%rdx
bt     %rax,%rdx
jae    1406 <strmac2hex+0x2f6>
shl    $0x4,%cl
add    $0x90,%cl
mov    %cl,0x1(%rdi)
mov    0x4(%rsi),%dl
lea    -0x30(%rdx),%eax
cmp    $0xa,%al
jb     1208 <strmac2hex+0xf8>
lea    0xe5a(%rip),%r8
lea    -0x41(%rdx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%r9d
movabs $0x3f0000003f,%rax
bt     %r9,%rax
jae    1406 <strmac2hex+0x2f6>
add    $0xa9,%dl
mov    %edx,%eax
or     %al,%cl
mov    %cl,0x1(%rdi)
mov    0x6(%rsi),%cl
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    121c <strmac2hex+0x10c>
shl    $0x4,%cl
jmp    124b <strmac2hex+0x13b>
lea    0xe17(%rip),%r8
lea    -0x41(%rcx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%eax
movabs $0x3f0000003f,%rdx
bt     %rax,%rdx
jae    1406 <strmac2hex+0x2f6>
shl    $0x4,%cl
add    $0x90,%cl
mov    %cl,0x2(%rdi)
mov    0x7(%rsi),%dl
lea    -0x30(%rdx),%eax
cmp    $0xa,%al
jb     1287 <strmac2hex+0x177>
lea    0xddb(%rip),%r8
lea    -0x41(%rdx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%r9d
movabs $0x3f0000003f,%rax
bt     %r9,%rax
jae    1406 <strmac2hex+0x2f6>
add    $0xa9,%dl
mov    %edx,%eax
or     %al,%cl
mov    %cl,0x2(%rdi)
mov    0x9(%rsi),%cl
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    129b <strmac2hex+0x18b>
shl    $0x4,%cl
jmp    12ca <strmac2hex+0x1ba>
lea    0xd98(%rip),%r8
lea    -0x41(%rcx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%eax
movabs $0x3f0000003f,%rdx
bt     %rax,%rdx
jae    1406 <strmac2hex+0x2f6>
shl    $0x4,%cl
add    $0x90,%cl
mov    %cl,0x3(%rdi)
mov    0xa(%rsi),%dl
lea    -0x30(%rdx),%eax
cmp    $0xa,%al
jb     1306 <strmac2hex+0x1f6>
lea    0xd5c(%rip),%r8
lea    -0x41(%rdx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%r9d
movabs $0x3f0000003f,%rax
bt     %r9,%rax
jae    1406 <strmac2hex+0x2f6>
add    $0xa9,%dl
mov    %edx,%eax
or     %al,%cl
mov    %cl,0x3(%rdi)
mov    0xc(%rsi),%cl
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    131a <strmac2hex+0x20a>
shl    $0x4,%cl
jmp    1349 <strmac2hex+0x239>
lea    0xd19(%rip),%r8
lea    -0x41(%rcx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%eax
movabs $0x3f0000003f,%rdx
bt     %rax,%rdx
jae    1406 <strmac2hex+0x2f6>
shl    $0x4,%cl
add    $0x90,%cl
mov    %cl,0x4(%rdi)
mov    0xd(%rsi),%dl
lea    -0x30(%rdx),%eax
cmp    $0xa,%al
jb     1385 <strmac2hex+0x275>
lea    0xcdd(%rip),%r8
lea    -0x41(%rdx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%r9d
movabs $0x3f0000003f,%rax
bt     %r9,%rax
jae    1406 <strmac2hex+0x2f6>
add    $0xa9,%dl
mov    %edx,%eax
or     %al,%cl
mov    %cl,0x4(%rdi)
mov    0xf(%rsi),%cl
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    1399 <strmac2hex+0x289>
shl    $0x4,%cl
jmp    13c0 <strmac2hex+0x2b0>
lea    0xc9a(%rip),%r8
lea    -0x41(%rcx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%eax
movabs $0x3f0000003f,%rdx
bt     %rax,%rdx
jae    1406 <strmac2hex+0x2f6>
shl    $0x4,%cl
add    $0x90,%cl
mov    %cl,0x5(%rdi)
mov    0x10(%rsi),%dl
lea    -0x30(%rdx),%eax
cmp    $0xa,%al
jb     13f3 <strmac2hex+0x2e3>
lea    0xc66(%rip),%r8
lea    -0x41(%rdx),%eax
cmp    $0x25,%al
ja     1406 <strmac2hex+0x2f6>
movzbl %al,%eax
movabs $0x3f0000003f,%rsi
bt     %rax,%rsi
jae    1406 <strmac2hex+0x2f6>
add    $0xa9,%dl
mov    %edx,%eax
or     %al,%cl
mov    %cl,0x5(%rdi)
xor    %eax,%eax
testb  $0x1,(%rdi)
je     1413 <strmac2hex+0x303>
lea    0xbfa(%rip),%r8
mov    %r8,%rdi
call   1030 <puts@plt>
mov    $0xffffffff,%eax
pop    %rcx
ret

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

LLVM IR (-O2):
@str = [58 x i8] c"bad dest mac: unsupported broadcast or multicast address!\00"
@str.3 = [14 x i8] c"bad dest mac!\00"
define i32 @strmac2hex(i8* nocapture %0, i8* nocapture %1) {
%3 = getelementptr inbounds i8, i8* %1, i64 1
%4 = load i8, i8* %1
%5 = add i8 %4, -48
%6 = icmp ult i8 %5, 10
br i1 %6, label %7, label %9
7: ; preds = %2
%8 = shl i8 %4, 4
br label %13
9: ; preds = %2
switch i8 %4, label %147 [
i8 102, label %10
i8 101, label %10
i8 100, label %10
i8 99, label %10
i8 98, label %10
i8 97, label %10
i8 70, label %10
i8 69, label %10
i8 68, label %10
i8 67, label %10
i8 66, label %10
i8 65, label %10
]
10: ; preds = %9, %9, %9, %9, %9, %9, %9, %9, %9, %9, %9, %9
%11 = shl i8 %4, 4
%12 = add i8 %11, -112
br label %13
13: ; preds = %10, %7
%14 = phi i8 [ %12, %10 ], [ %8, %7 ]
store i8 %14, i8* %0
%15 = load i8, i8* %3
%16 = add i8 %15, -48
%17 = icmp ult i8 %16, 10
br i1 %17, label %21, label %18
18: ; preds = %13
switch i8 %15, label %147 [
i8 102, label %19
i8 101, label %19
i8 100, label %19
i8 99, label %19
i8 98, label %19
i8 97, label %19
i8 70, label %19
i8 69, label %19
i8 68, label %19
i8 67, label %19
i8 66, label %19
i8 65, label %19
]
19: ; preds = %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18, %18
%20 = add nsw i8 %15, -87
br label %21
21: ; preds = %13, %19
%22 = phi i8 [ %20, %19 ], [ %16, %13 ]
%23 = or i8 %14, %22
store i8 %23, i8* %0
%24 = getelementptr inbounds i8, i8* %1, i64 3
%25 = getelementptr inbounds i8, i8* %1, i64 4
%26 = load i8, i8* %24
%27 = add i8 %26, -48
%28 = icmp ult i8 %27, 10
br i1 %28, label %33, label %29
29: ; preds = %21
switch i8 %26, label %147 [
i8 102, label %30
i8 101, label %30
i8 100, label %30
i8 99, label %30
i8 98, label %30
i8 97, label %30
i8 70, label %30
i8 69, label %30
i8 68, label %30
i8 67, label %30
i8 66, label %30
i8 65, label %30
]
30: ; preds = %29, %29, %29, %29, %29, %29, %29, %29, %29, %29, %29, %29
%31 = shl i8 %26, 4
%32 = add i8 %31, -112
br label %35
33: ; preds = %21
%34 = shl i8 %26, 4
br label %35
35: ; preds = %33, %30
%36 = phi i8 [ %32, %30 ], [ %34, %33 ]
%37 = getelementptr inbounds i8, i8* %0, i64 1
store i8 %36, i8* %37
%38 = load i8, i8* %25
%39 = add i8 %38, -48
%40 = icmp ult i8 %39, 10
br i1 %40, label %44, label %41
41: ; preds = %35
switch i8 %38, label %147 [
i8 102, label %42
i8 101, label %42
i8 100, label %42
i8 99, label %42
i8 98, label %42
i8 97, label %42
i8 70, label %42
i8 69, label %42
i8 68, label %42
i8 67, label %42
i8 66, label %42
i8 65, label %42
]
42: ; preds = %41, %41, %41, %41, %41, %41, %41, %41, %41, %41, %41, %41
%43 = add nsw i8 %38, -87
br label %44
44: ; preds = %42, %35
%45 = phi i8 [ %43, %42 ], [ %39, %35 ]
%46 = getelementptr inbounds i8, i8* %0, i64 1
%47 = or i8 %36, %45
store i8 %47, i8* %46
%48 = getelementptr inbounds i8, i8* %1, i64 6
%49 = getelementptr inbounds i8, i8* %1, i64 7
%50 = load i8, i8* %48
%51 = add i8 %50, -48
%52 = icmp ult i8 %51, 10
br i1 %52, label %57, label %53
53: ; preds = %44
switch i8 %50, label %147 [
i8 102, label %54
i8 101, label %54
i8 100, label %54
i8 99, label %54
i8 98, label %54
i8 97, label %54
i8 70, label %54
i8 69, label %54
i8 68, label %54
i8 67, label %54
i8 66, label %54
i8 65, label %54
]
54: ; preds = %53, %53, %53, %53, %53, %53, %53, %53, %53, %53, %53, %53
%55 = shl i8 %50, 4
%56 = add i8 %55, -112
br label %59
57: ; preds = %44
%58 = shl i8 %50, 4
br label %59
59: ; preds = %57, %54
%60 = phi i8 [ %56, %54 ], [ %58, %57 ]
%61 = getelementptr inbounds i8, i8* %0, i64 2
store i8 %60, i8* %61
%62 = load i8, i8* %49
%63 = add i8 %62, -48
%64 = icmp ult i8 %63, 10
br i1 %64, label %68, label %65
65: ; preds = %59
switch i8 %62, label %147 [
i8 102, label %66
i8 101, label %66
i8 100, label %66
i8 99, label %66
i8 98, label %66
i8 97, label %66
i8 70, label %66
i8 69, label %66
i8 68, label %66
i8 67, label %66
i8 66, label %66
i8 65, label %66
]
66: ; preds = %65, %65, %65, %65, %65, %65, %65, %65, %65, %65, %65, %65
%67 = add nsw i8 %62, -87
br label %68
68: ; preds = %66, %59
%69 = phi i8 [ %67, %66 ], [ %63, %59 ]
%70 = getelementptr inbounds i8, i8* %0, i64 2
%71 = or i8 %60, %69
store i8 %71, i8* %70
%72 = getelementptr inbounds i8, i8* %1, i64 9
%73 = getelementptr inbounds i8, i8* %1, i64 10
%74 = load i8, i8* %72
%75 = add i8 %74, -48
%76 = icmp ult i8 %75, 10
br i1 %76, label %81, label %77
77: ; preds = %68
switch i8 %74, label %147 [
i8 102, label %78
i8 101, label %78
i8 100, label %78
i8 99, label %78
i8 98, label %78
i8 97, label %78
i8 70, label %78
i8 69, label %78
i8 68, label %78
i8 67, label %78
i8 66, label %78
i8 65, label %78
]
78: ; preds = %77, %77, %77, %77, %77, %77, %77, %77, %77, %77, %77, %77
%79 = shl i8 %74, 4
%80 = add i8 %79, -112
br label %83
81: ; preds = %68
%82 = shl i8 %74, 4
br label %83
83: ; preds = %81, %78
%84 = phi i8 [ %80, %78 ], [ %82, %81 ]
%85 = getelementptr inbounds i8, i8* %0, i64 3
store i8 %84, i8* %85
%86 = load i8, i8* %73
%87 = add i8 %86, -48
%88 = icmp ult i8 %87, 10
br i1 %88, label %92, label %89
89: ; preds = %83
switch i8 %86, label %147 [
i8 102, label %90
i8 101, label %90
i8 100, label %90
i8 99, label %90
i8 98, label %90
i8 97, label %90
i8 70, label %90
i8 69, label %90
i8 68, label %90
i8 67, label %90
i8 66, label %90
i8 65, label %90
]
90: ; preds = %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89, %89
%91 = add nsw i8 %86, -87
br label %92
92: ; preds = %90, %83
%93 = phi i8 [ %91, %90 ], [ %87, %83 ]
%94 = getelementptr inbounds i8, i8* %0, i64 3
%95 = or i8 %84, %93
store i8 %95, i8* %94
%96 = getelementptr inbounds i8, i8* %1, i64 12
%97 = getelementptr inbounds i8, i8* %1, i64 13
%98 = load i8, i8* %96
%99 = add i8 %98, -48
%100 = icmp ult i8 %99, 10
br i1 %100, label %105, label %101
101: ; preds = %92
switch i8 %98, label %147 [
i8 102, label %102
i8 101, label %102
i8 100, label %102
i8 99, label %102
i8 98, label %102
i8 97, label %102
i8 70, label %102
i8 69, label %102
i8 68, label %102
i8 67, label %102
i8 66, label %102
i8 65, label %102
]
102: ; preds = %101, %101, %101, %101, %101, %101, %101, %101, %101, %101, %101, %101
%103 = shl i8 %98, 4
%104 = add i8 %103, -112
br label %107
105: ; preds = %92
%106 = shl i8 %98, 4
br label %107
107: ; preds = %105, %102
%108 = phi i8 [ %104, %102 ], [ %106, %105 ]
%109 = getelementptr inbounds i8, i8* %0, i64 4
store i8 %108, i8* %109
%110 = load i8, i8* %97
%111 = add i8 %110, -48
%112 = icmp ult i8 %111, 10
br i1 %112, label %116, label %113
113: ; preds = %107
switch i8 %110, label %147 [
i8 102, label %114
i8 101, label %114
i8 100, label %114
i8 99, label %114
i8 98, label %114
i8 97, label %114
i8 70, label %114
i8 69, label %114
i8 68, label %114
i8 67, label %114
i8 66, label %114
i8 65, label %114
]
114: ; preds = %113, %113, %113, %113, %113, %113, %113, %113, %113, %113, %113, %113
%115 = add nsw i8 %110, -87
br label %116
116: ; preds = %114, %107
%117 = phi i8 [ %115, %114 ], [ %111, %107 ]
%118 = getelementptr inbounds i8, i8* %0, i64 4
%119 = or i8 %108, %117
store i8 %119, i8* %118
%120 = getelementptr inbounds i8, i8* %1, i64 15
%121 = getelementptr inbounds i8, i8* %1, i64 16
%122 = load i8, i8* %120
%123 = add i8 %122, -48
%124 = icmp ult i8 %123, 10
br i1 %124, label %129, label %125
125: ; preds = %116
switch i8 %122, label %147 [
i8 102, label %126
i8 101, label %126
i8 100, label %126
i8 99, label %126
i8 98, label %126
i8 97, label %126
i8 70, label %126
i8 69, label %126
i8 68, label %126
i8 67, label %126
i8 66, label %126
i8 65, label %126
]
126: ; preds = %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125, %125
%127 = shl i8 %122, 4
%128 = add i8 %127, -112
br label %131
129: ; preds = %116
%130 = shl i8 %122, 4
br label %131
131: ; preds = %129, %126
%132 = phi i8 [ %128, %126 ], [ %130, %129 ]
%133 = getelementptr inbounds i8, i8* %0, i64 5
store i8 %132, i8* %133
%134 = load i8, i8* %121
%135 = add i8 %134, -48
%136 = icmp ult i8 %135, 10
br i1 %136, label %140, label %137
137: ; preds = %131
switch i8 %134, label %147 [
i8 102, label %138
i8 101, label %138
i8 100, label %138
i8 99, label %138
i8 98, label %138
i8 97, label %138
i8 70, label %138
i8 69, label %138
i8 68, label %138
i8 67, label %138
i8 66, label %138
i8 65, label %138
]
138: ; preds = %137, %137, %137, %137, %137, %137, %137, %137, %137, %137, %137, %137
%139 = add nsw i8 %134, -87
br label %140
140: ; preds = %138, %131
%141 = phi i8 [ %139, %138 ], [ %135, %131 ]
%142 = getelementptr inbounds i8, i8* %0, i64 5
%143 = or i8 %132, %141
store i8 %143, i8* %142
%144 = load i8, i8* %0
%145 = and i8 %144, 1
%146 = icmp eq i8 %145, 0
br i1 %146, label %150, label %147
147: ; preds = %18, %9, %29, %41, %53, %65, %77, %89, %101, %113, %125, %137, %140
%148 = phi i8* [ getelementptr inbounds ([58 x i8], [58 x i8]* @str, i64 0, i64 0), %140 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %9 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %18 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %29 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %41 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %53 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %65 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %77 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %89 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %101 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %113 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %125 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @str.3, i64 0, i64 0), %137 ]
%149 = tail call i32 @puts(i8* dereferenceable(1) %148)
br label %150
150: ; preds = %147, %140
%151 = phi i32 [ 0, %140 ], [ -1, %147 ]
ret i32 %151
}