#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 strlen(char *);
int Hex_to_bin(char *hex, int bin_size, int *bin_count, unsigned char *bin_data,
               int flag) {
  int i, l, acc;
  l = strlen(hex);
  if (l % 2 || l == 0)
    return (-1);
  *bin_count = 0;
  for (i = 0; i < l; i += 2) {
    if (hex[i] >= '0' && hex[i] <= '9')
      acc = (hex[i] - '0') << 4;
    else if (hex[i] >= 'A' && hex[i] <= 'F')
      acc = (hex[i] - 'A' + 10) << 4;
    else if (hex[i] >= 'a' && hex[i] <= 'f')
      acc = (hex[i] - 'a' + 10) << 4;
    else
      return (-1);
    if (hex[i + 1] >= '0' && hex[i + 1] <= '9')
      acc |= (hex[i + 1] - '0');
    else if (hex[i + 1] >= 'A' && hex[i + 1] <= 'F')
      acc |= (hex[i + 1] - 'A' + 10);
    else if (hex[i + 1] >= 'a' && hex[i + 1] <= 'f')
      acc |= (hex[i + 1] - 'a' + 10);
    else
      return (-1);
    if (*bin_count >= bin_size)
      return (0);
    bin_data[*bin_count] = acc;
    (*bin_count)++;
  }
  return (1);
}


x86 assembly (clang, -O0):
<Hex_to_bin>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8d,-0x2c(%rbp)
mov    -0x10(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1155 <Hex_to_bin+0x45>
cmpl   $0x0,-0x34(%rbp)
jne    1161 <Hex_to_bin+0x51>
movl   $0xffffffff,-0x4(%rbp)
jmp    13c9 <Hex_to_bin+0x2b9>
mov    -0x20(%rbp),%rax
movl   $0x0,(%rax)
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    13c2 <Hex_to_bin+0x2b2>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     11c2 <Hex_to_bin+0xb2>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     11c2 <Hex_to_bin+0xb2>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
shl    $0x4,%eax
mov    %eax,-0x38(%rbp)
jmp    1266 <Hex_to_bin+0x156>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     1209 <Hex_to_bin+0xf9>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
jg     1209 <Hex_to_bin+0xf9>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x41,%eax
add    $0xa,%eax
shl    $0x4,%eax
mov    %eax,-0x38(%rbp)
jmp    1261 <Hex_to_bin+0x151>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     1250 <Hex_to_bin+0x140>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
jg     1250 <Hex_to_bin+0x140>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x61,%eax
add    $0xa,%eax
shl    $0x4,%eax
mov    %eax,-0x38(%rbp)
jmp    125c <Hex_to_bin+0x14c>
movl   $0xffffffff,-0x4(%rbp)
jmp    13c9 <Hex_to_bin+0x2b9>
jmp    1261 <Hex_to_bin+0x151>
jmp    1266 <Hex_to_bin+0x156>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     12b9 <Hex_to_bin+0x1a9>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     12b9 <Hex_to_bin+0x1a9>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
or     -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    137b <Hex_to_bin+0x26b>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     130f <Hex_to_bin+0x1ff>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
jg     130f <Hex_to_bin+0x1ff>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x41,%eax
add    $0xa,%eax
or     -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    1376 <Hex_to_bin+0x266>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     1365 <Hex_to_bin+0x255>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
jg     1365 <Hex_to_bin+0x255>
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x61,%eax
add    $0xa,%eax
or     -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    1371 <Hex_to_bin+0x261>
movl   $0xffffffff,-0x4(%rbp)
jmp    13c9 <Hex_to_bin+0x2b9>
jmp    1376 <Hex_to_bin+0x266>
jmp    137b <Hex_to_bin+0x26b>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cmp    -0x14(%rbp),%eax
jl     1396 <Hex_to_bin+0x286>
movl   $0x0,-0x4(%rbp)
jmp    13c9 <Hex_to_bin+0x2b9>
mov    -0x38(%rbp),%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq (%rcx),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x30(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x30(%rbp)
jmp    1172 <Hex_to_bin+0x62>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Hex_to_bin>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %rcx,%r14
mov    %rdx,%r12
mov    %esi,%r15d
mov    %rdi,%rbp
call   1030 <strlen@plt>
mov    %eax,%r8d
mov    $0xffffffff,%eax
test   %r8d,%r8d
je     11fd <Hex_to_bin+0xed>
mov    %r8d,%ecx
and    $0x1,%ecx
jne    11fd <Hex_to_bin+0xed>
movl   $0x0,(%r12)
test   %r8d,%r8d
jle    11f4 <Hex_to_bin+0xe4>
xor    %edx,%edx
xor    %esi,%esi
nopl   0x0(%rax,%rax,1)
movzbl 0x0(%rbp,%rsi,1),%edi
lea    -0x30(%rdi),%ecx
cmp    $0x9,%cl
ja     1180 <Hex_to_bin+0x70>
shl    $0x4,%dil
jmp    1198 <Hex_to_bin+0x88>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    -0x41(%rdi),%ecx
cmp    $0x5,%cl
jbe    1190 <Hex_to_bin+0x80>
lea    -0x61(%rdi),%ecx
cmp    $0x5,%cl
ja     11fd <Hex_to_bin+0xed>
shl    $0x4,%dil
add    $0x90,%dil
movzbl 0x1(%rbp,%rsi,1),%ecx
lea    -0x30(%rcx),%ebx
cmp    $0xa,%bl
jb     11cd <Hex_to_bin+0xbd>
lea    -0x41(%rcx),%ebx
cmp    $0x5,%bl
ja     11c0 <Hex_to_bin+0xb0>
add    $0xc9,%cl
jmp    11cb <Hex_to_bin+0xbb>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x61(%rcx),%ebx
cmp    $0x5,%bl
ja     11fd <Hex_to_bin+0xed>
add    $0xa9,%cl
mov    %ecx,%ebx
cmp    %r15d,%edx
jge    11fb <Hex_to_bin+0xeb>
or     %dil,%bl
movslq %edx,%rcx
mov    %bl,(%r14,%rcx,1)
mov    (%r12),%edx
add    $0x1,%edx
mov    %edx,(%r12)
add    $0x2,%rsi
cmp    %esi,%r8d
jg     1160 <Hex_to_bin+0x50>
mov    $0x1,%eax
jmp    11fd <Hex_to_bin+0xed>
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @Hex_to_bin(i8* %0, i32 %1, i32* nocapture %2, i8* nocapture writeonly %3, i32 %4) {
%6 = tail call i32 @strlen(i8* %0)
%7 = and i32 %6, 1
%8 = icmp ne i32 %7, 0
%9 = icmp eq i32 %6, 0
%10 = or i1 %9, %8
br i1 %10, label %63, label %11
11: ; preds = %5
store i32 0, i32* %2
%12 = icmp sgt i32 %6, 0
br i1 %12, label %13, label %63
13: ; preds = %11, %54
%14 = phi i32 [ %59, %54 ], [ 0, %11 ]
%15 = phi i64 [ %60, %54 ], [ 0, %11 ]
%16 = getelementptr inbounds i8, i8* %0, i64 %15
%17 = load i8, i8* %16
%18 = add i8 %17, -48
%19 = icmp ult i8 %18, 10
br i1 %19, label %20, label %22
20: ; preds = %13
%21 = shl i8 %17, 4
br label %34
22: ; preds = %13
%23 = add i8 %17, -65
%24 = icmp ult i8 %23, 6
br i1 %24, label %25, label %28
25: ; preds = %22
%26 = shl i8 %17, 4
%27 = add nuw nsw i8 %26, -112
br label %34
28: ; preds = %22
%29 = add i8 %17, -97
%30 = icmp ult i8 %29, 6
br i1 %30, label %31, label %63
31: ; preds = %28
%32 = shl i8 %17, 4
%33 = add nuw nsw i8 %32, -112
br label %34
34: ; preds = %25, %31, %20
%35 = phi i8 [ %21, %20 ], [ %27, %25 ], [ %33, %31 ]
%36 = or i64 %15, 1
%37 = getelementptr inbounds i8, i8* %0, i64 %36
%38 = load i8, i8* %37
%39 = add i8 %38, -48
%40 = icmp ult i8 %39, 10
br i1 %40, label %51, label %41
41: ; preds = %34
%42 = add i8 %38, -65
%43 = icmp ult i8 %42, 6
br i1 %43, label %44, label %46
44: ; preds = %41
%45 = add nsw i8 %38, -55
br label %51
46: ; preds = %41
%47 = add i8 %38, -97
%48 = icmp ult i8 %47, 6
br i1 %48, label %49, label %63
49: ; preds = %46
%50 = add nsw i8 %38, -87
br label %51
51: ; preds = %34, %44, %49
%52 = phi i8 [ %45, %44 ], [ %50, %49 ], [ %39, %34 ]
%53 = icmp slt i32 %14, %1
br i1 %53, label %54, label %63
54: ; preds = %51
%55 = or i8 %52, %35
%56 = sext i32 %14 to i64
%57 = getelementptr inbounds i8, i8* %3, i64 %56
store i8 %55, i8* %57
%58 = load i32, i32* %2
%59 = add nsw i32 %58, 1
store i32 %59, i32* %2
%60 = add nuw i64 %15, 2
%61 = trunc i64 %60 to i32
%62 = icmp sgt i32 %6, %61
br i1 %62, label %13, label %63
63: ; preds = %28, %46, %51, %54, %11, %5
%64 = phi i32 [ -1, %5 ], [ 1, %11 ], [ -1, %28 ], [ -1, %46 ], [ 0, %51 ], [ 1, %54 ]
ret i32 %64
}