#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*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, int);
int /*<<< orphan*/ isdigit(unsigned int);
int /*<<< orphan*/ stderr;
int strlen(char *);
void check_unsigned(char *tocheck, int which) {
  int i, n;
  char ok = 1;
  n = strlen(tocheck);
  for (i = 0; i < n; i++)
    if (!isdigit((unsigned int)tocheck[i]))
      ok = 0;
  if (!ok) {
    fprintf(stderr,
            "Wrong type of parameter for flag -%c. Has to be an "
            "unsigned integer\n",
            which);
    exit(1);
  }
}


x86 assembly (clang, -O0):
<check_unsigned>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movb   $0x1,-0x15(%rbp)
mov    -0x8(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,-0x14(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    11a3 <check_unsigned+0x63>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
jne    1190 <check_unsigned+0x50>
movb   $0x0,-0x15(%rbp)
jmp    1195 <check_unsigned+0x55>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1166 <check_unsigned+0x26>
cmpb   $0x0,-0x15(%rbp)
jne    11cf <check_unsigned+0x8f>
mov    0x2e2c(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xe40(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1060 <exit@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<check_unsigned>:
push   %rbp
push   %r14
push   %rbx
mov    %esi,%r14d
mov    %rdi,%rbx
call   1030 <strlen@plt>
test   %eax,%eax
jle    15ef <check_unsigned+0x4bf>
mov    %eax,%ecx
xor    %edx,%edx
cmp    $0x8,%eax
jae    115a <check_unsigned+0x2a>
mov    $0x1,%sil
xor    %eax,%eax
jmp    15d0 <check_unsigned+0x4a0>
cmp    $0x10,%eax
jae    1214 <check_unsigned+0xe4>
mov    $0x1,%sil
xor    %eax,%eax
mov    %rax,%rdi
mov    %ecx,%eax
and    $0xfffffff8,%eax
movzbl %sil,%esi
movd   %esi,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
movdqa 0xe87(%rip),%xmm1
movdqa 0xe8f(%rip),%xmm2
movdqa 0xe97(%rip),%xmm3
nopl   0x0(%rax)
movq   (%rbx,%rdi,1),%xmm4
punpcklbw %xmm4,%xmm4
punpckhwd %xmm4,%xmm5
psrad  $0x18,%xmm5
punpcklwd %xmm4,%xmm4
psrad  $0x18,%xmm4
paddd  %xmm1,%xmm4
paddd  %xmm1,%xmm5
pxor   %xmm2,%xmm5
movdqa %xmm3,%xmm6
pcmpgtd %xmm5,%xmm6
pxor   %xmm2,%xmm4
movdqa %xmm3,%xmm5
pcmpgtd %xmm4,%xmm5
packssdw %xmm6,%xmm5
packsswb %xmm5,%xmm5
pand   %xmm5,%xmm0
add    $0x8,%rdi
cmp    %rdi,%rax
jne    11a0 <check_unsigned+0x70>
movq   %xmm0,%rsi
movabs $0x101010101010101,%rdi
01 01 01
cmp    %rdi,%rsi
sete   %sil
cmp    %rcx,%rax
jne    15d0 <check_unsigned+0x4a0>
jmp    15ea <check_unsigned+0x4ba>
mov    %ecx,%eax
and    $0xfffffff0,%eax
lea    -0x10(%rax),%rdi
mov    %rdi,%rsi
shr    $0x4,%rsi
add    $0x1,%rsi
mov    %esi,%ebp
and    $0x3,%ebp
cmp    $0x30,%rdi
jae    1242 <check_unsigned+0x112>
movdqa 0xdc5(%rip),%xmm0
xor    %edi,%edi
jmp    14dd <check_unsigned+0x3ad>
and    $0xfffffffffffffffc,%rsi
movdqa 0xdb2(%rip),%xmm0
xor    %edi,%edi
movdqa 0xdb7(%rip),%xmm11
movdqa 0xdbe(%rip),%xmm12
movdqa 0xdc5(%rip),%xmm13
movdqa 0xdcc(%rip),%xmm8
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movdqu (%rbx,%rdi,1),%xmm3
movdqu 0x10(%rbx,%rdi,1),%xmm7
movdqu 0x20(%rbx,%rdi,1),%xmm10
movdqu 0x30(%rbx,%rdi,1),%xmm9
punpckhbw %xmm3,%xmm5
punpckhwd %xmm5,%xmm6
psrad  $0x18,%xmm6
punpcklwd %xmm5,%xmm5
psrad  $0x18,%xmm5
punpcklbw %xmm3,%xmm3
punpckhwd %xmm3,%xmm1
psrad  $0x18,%xmm1
punpcklwd %xmm3,%xmm2
psrad  $0x18,%xmm2
paddd  %xmm11,%xmm2
paddd  %xmm11,%xmm1
paddd  %xmm11,%xmm5
paddd  %xmm11,%xmm6
pxor   %xmm12,%xmm6
movdqa %xmm13,%xmm3
pcmpgtd %xmm6,%xmm3
pxor   %xmm12,%xmm5
movdqa %xmm13,%xmm6
pcmpgtd %xmm5,%xmm6
packssdw %xmm3,%xmm6
pxor   %xmm12,%xmm1
movdqa %xmm13,%xmm5
pcmpgtd %xmm1,%xmm5
pxor   %xmm12,%xmm2
movdqa %xmm13,%xmm3
pcmpgtd %xmm2,%xmm3
packssdw %xmm5,%xmm3
packsswb %xmm6,%xmm3
punpckhbw %xmm7,%xmm1
punpckhwd %xmm1,%xmm2
psrad  $0x18,%xmm2
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
punpcklbw %xmm7,%xmm5
punpckhwd %xmm5,%xmm6
psrad  $0x18,%xmm6
punpcklwd %xmm5,%xmm5
psrad  $0x18,%xmm5
paddd  %xmm11,%xmm5
paddd  %xmm11,%xmm6
paddd  %xmm11,%xmm1
paddd  %xmm11,%xmm2
pxor   %xmm12,%xmm2
movdqa %xmm13,%xmm7
pcmpgtd %xmm2,%xmm7
pxor   %xmm12,%xmm1
movdqa %xmm13,%xmm2
pcmpgtd %xmm1,%xmm2
packssdw %xmm7,%xmm2
pxor   %xmm12,%xmm6
movdqa %xmm13,%xmm1
pcmpgtd %xmm6,%xmm1
pxor   %xmm12,%xmm5
movdqa %xmm13,%xmm7
pcmpgtd %xmm5,%xmm7
packssdw %xmm1,%xmm7
packsswb %xmm2,%xmm7
pand   %xmm3,%xmm7
punpckhbw %xmm10,%xmm1
punpckhwd %xmm1,%xmm2
psrad  $0x18,%xmm2
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
punpcklbw %xmm10,%xmm3
punpckhwd %xmm3,%xmm5
psrad  $0x18,%xmm5
punpcklwd %xmm3,%xmm6
psrad  $0x18,%xmm6
paddd  %xmm11,%xmm6
paddd  %xmm11,%xmm5
paddd  %xmm11,%xmm1
paddd  %xmm11,%xmm2
pxor   %xmm12,%xmm2
movdqa %xmm13,%xmm3
pcmpgtd %xmm2,%xmm3
pxor   %xmm12,%xmm1
movdqa %xmm13,%xmm2
pcmpgtd %xmm1,%xmm2
packssdw %xmm3,%xmm2
pxor   %xmm12,%xmm5
movdqa %xmm13,%xmm1
pcmpgtd %xmm5,%xmm1
pxor   %xmm12,%xmm6
movdqa %xmm13,%xmm3
pcmpgtd %xmm6,%xmm3
packssdw %xmm1,%xmm3
packsswb %xmm2,%xmm3
punpckhbw %xmm9,%xmm1
punpckhwd %xmm1,%xmm2
psrad  $0x18,%xmm2
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
punpcklbw %xmm9,%xmm5
punpckhwd %xmm5,%xmm6
psrad  $0x18,%xmm6
punpcklwd %xmm5,%xmm5
psrad  $0x18,%xmm5
paddd  %xmm11,%xmm5
paddd  %xmm11,%xmm6
paddd  %xmm11,%xmm1
paddd  %xmm11,%xmm2
pxor   %xmm12,%xmm2
movdqa %xmm13,%xmm4
pcmpgtd %xmm2,%xmm4
pxor   %xmm12,%xmm1
movdqa %xmm13,%xmm2
pcmpgtd %xmm1,%xmm2
packssdw %xmm4,%xmm2
pxor   %xmm12,%xmm6
movdqa %xmm13,%xmm1
pcmpgtd %xmm6,%xmm1
pxor   %xmm12,%xmm5
movdqa %xmm13,%xmm4
pcmpgtd %xmm5,%xmm4
packssdw %xmm1,%xmm4
packsswb %xmm2,%xmm4
pand   %xmm3,%xmm4
pand   %xmm7,%xmm4
psllw  $0x7,%xmm4
pand   %xmm8,%xmm4
pxor   %xmm1,%xmm1
pcmpgtb %xmm4,%xmm1
pand   %xmm1,%xmm0
add    $0x40,%rdi
add    $0xfffffffffffffffc,%rsi
jne    1280 <check_unsigned+0x150>
test   %rbp,%rbp
je     15a2 <check_unsigned+0x472>
add    %rbx,%rdi
shl    $0x4,%rbp
xor    %esi,%esi
movdqa 0xb18(%rip),%xmm8
movdqa 0xb20(%rip),%xmm2
movdqa 0xb28(%rip),%xmm1
nopl   0x0(%rax,%rax,1)
movdqu (%rdi,%rsi,1),%xmm4
punpckhbw %xmm4,%xmm5
punpckhwd %xmm5,%xmm6
psrad  $0x18,%xmm6
punpcklwd %xmm5,%xmm5
psrad  $0x18,%xmm5
punpcklbw %xmm4,%xmm4
punpckhwd %xmm4,%xmm7
psrad  $0x18,%xmm7
punpcklwd %xmm4,%xmm4
psrad  $0x18,%xmm4
paddd  %xmm8,%xmm4
paddd  %xmm8,%xmm7
paddd  %xmm8,%xmm5
paddd  %xmm8,%xmm6
pxor   %xmm2,%xmm6
movdqa %xmm1,%xmm3
pcmpgtd %xmm6,%xmm3
pxor   %xmm2,%xmm5
movdqa %xmm1,%xmm6
pcmpgtd %xmm5,%xmm6
packssdw %xmm3,%xmm6
pxor   %xmm2,%xmm7
movdqa %xmm1,%xmm3
pcmpgtd %xmm7,%xmm3
pxor   %xmm2,%xmm4
movdqa %xmm1,%xmm5
pcmpgtd %xmm4,%xmm5
packssdw %xmm3,%xmm5
packsswb %xmm6,%xmm5
pand   %xmm5,%xmm0
add    $0x10,%rsi
cmp    %rsi,%rbp
jne    1510 <check_unsigned+0x3e0>
pcmpeqb 0xa56(%rip),%xmm0
pmovmskb %xmm0,%esi
cmp    $0xffff,%esi
sete   %sil
cmp    %rcx,%rax
je     15ea <check_unsigned+0x4ba>
test   $0x8,%cl
jne    1168 <check_unsigned+0x38>
cs nopw 0x0(%rax,%rax,1)
movsbl (%rbx,%rax,1),%edi
add    $0xffffffd0,%edi
cmp    $0xa,%edi
movzbl %sil,%esi
cmovae %edx,%esi
add    $0x1,%rax
cmp    %rax,%rcx
jne    15d0 <check_unsigned+0x4a0>
test   %sil,%sil
je     15f4 <check_unsigned+0x4c4>
pop    %rbx
pop    %r14
pop    %rbp
ret
mov    0x29e5(%rip),%rax
mov    (%rax),%edi
lea    0xa4c(%rip),%rsi
mov    %r14d,%edx
call   1040 <fprintf@plt>
mov    $0x1,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [69 x i8] c"Wrong type of parameter for flag -%c. Has to be an unsigned integer\0A\00"
define void @check_unsigned(i8* %0, i32 %1) {
%3 = alloca i8*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i8
store i8* %0, i8** %3
store i32 %1, i32* %4
store i8 1, i8* %7
%8 = load i8*, i8** %3
%9 = call i32 @strlen(i8* %8)
store i32 %9, i32* %6
store i32 0, i32* %5
br label %10
10: ; preds = %25, %2
%11 = load i32, i32* %5
%12 = load i32, i32* %6
%13 = icmp slt i32 %11, %12
br i1 %13, label %14, label %28
14: ; preds = %10
%15 = load i8*, i8** %3
%16 = load i32, i32* %5
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds i8, i8* %15, i64 %17
%19 = load i8, i8* %18
%20 = sext i8 %19 to i32
%21 = call i32 @isdigit(i32 %20)
%22 = icmp ne i32 %21, 0
br i1 %22, label %24, label %23
23: ; preds = %14
store i8 0, i8* %7
br label %24
24: ; preds = %23, %14
br label %25
25: ; preds = %24
%26 = load i32, i32* %5
%27 = add nsw i32 %26, 1
store i32 %27, i32* %5
br label %10
28: ; preds = %10
%29 = load i8, i8* %7
%30 = icmp ne i8 %29, 0
br i1 %30, label %36, label %31
31: ; preds = %28
%32 = load i32, i32* @stderr
%33 = load i32, i32* %4
%34 = call i32 @fprintf(i32 %32, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str, i64 0, i64 0), i32 %33)
%35 = call i32 @exit(i32 1)
unreachable
36: ; preds = %28
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [69 x i8] c"Wrong type of parameter for flag -%c. Has to be an unsigned integer\0A\00"
define void @check_unsigned(i8* %0, i32 %1) {
%3 = tail call i32 @strlen(i8* %0)
%4 = icmp sgt i32 %3, 0
br i1 %4, label %5, label %130
5: ; preds = %2
%6 = zext i32 %3 to i64
%7 = icmp ult i32 %3, 8
br i1 %7, label %109, label %8
8: ; preds = %5
%9 = icmp ult i32 %3, 16
br i1 %9, label %86, label %10
10: ; preds = %8
%11 = and i64 %6, 4294967280
%12 = add nsw i64 %11, -16
%13 = lshr exact i64 %12, 4
%14 = add nuw nsw i64 %13, 1
%15 = and i64 %14, 3
%16 = icmp ult i64 %12, 48
br i1 %16, label %57, label %17
17: ; preds = %10
%18 = and i64 %14, 2305843009213693948
br label %19
19: ; preds = %19, %17
%20 = phi i64 [ 0, %17 ], [ %54, %19 ]
%21 = phi <16 x i8> [ <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>, %17 ], [ %53, %19 ]
%22 = phi i64 [ 0, %17 ], [ %55, %19 ]
%23 = getelementptr inbounds i8, i8* %0, i64 %20
%24 = bitcast i8* %23 to <16 x i8>*
%25 = load <16 x i8>, <16 x i8>* %24
%26 = sext <16 x i8> %25 to <16 x i32>
%27 = add nsw <16 x i32> %26, <i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48>
%28 = icmp ult <16 x i32> %27, <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>
%29 = or i64 %20, 16
%30 = getelementptr inbounds i8, i8* %0, i64 %29
%31 = bitcast i8* %30 to <16 x i8>*
%32 = load <16 x i8>, <16 x i8>* %31
%33 = sext <16 x i8> %32 to <16 x i32>
%34 = add nsw <16 x i32> %33, <i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48>
%35 = icmp ult <16 x i32> %34, <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>
%36 = or i64 %20, 32
%37 = getelementptr inbounds i8, i8* %0, i64 %36
%38 = bitcast i8* %37 to <16 x i8>*
%39 = load <16 x i8>, <16 x i8>* %38
%40 = sext <16 x i8> %39 to <16 x i32>
%41 = add nsw <16 x i32> %40, <i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48>
%42 = icmp ult <16 x i32> %41, <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>
%43 = or i64 %20, 48
%44 = getelementptr inbounds i8, i8* %0, i64 %43
%45 = bitcast i8* %44 to <16 x i8>*
%46 = load <16 x i8>, <16 x i8>* %45
%47 = sext <16 x i8> %46 to <16 x i32>
%48 = add nsw <16 x i32> %47, <i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48>
%49 = icmp ult <16 x i32> %48, <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>
%50 = select <16 x i1> %49, <16 x i1> %42, <16 x i1> zeroinitializer
%51 = select <16 x i1> %50, <16 x i1> %35, <16 x i1> zeroinitializer
%52 = select <16 x i1> %51, <16 x i1> %28, <16 x i1> zeroinitializer
%53 = select <16 x i1> %52, <16 x i8> %21, <16 x i8> zeroinitializer
%54 = add nuw i64 %20, 64
%55 = add i64 %22, 4
%56 = icmp eq i64 %55, %18
br i1 %56, label %57, label %19
57: ; preds = %19, %10
%58 = phi <16 x i8> [ undef, %10 ], [ %53, %19 ]
%59 = phi i64 [ 0, %10 ], [ %54, %19 ]
%60 = phi <16 x i8> [ <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>, %10 ], [ %53, %19 ]
%61 = icmp eq i64 %15, 0
br i1 %61, label %76, label %62
62: ; preds = %57, %62
%63 = phi i64 [ %73, %62 ], [ %59, %57 ]
%64 = phi <16 x i8> [ %72, %62 ], [ %60, %57 ]
%65 = phi i64 [ %74, %62 ], [ 0, %57 ]
%66 = getelementptr inbounds i8, i8* %0, i64 %63
%67 = bitcast i8* %66 to <16 x i8>*
%68 = load <16 x i8>, <16 x i8>* %67
%69 = sext <16 x i8> %68 to <16 x i32>
%70 = add nsw <16 x i32> %69, <i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48>
%71 = icmp ult <16 x i32> %70, <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>
%72 = select <16 x i1> %71, <16 x i8> %64, <16 x i8> zeroinitializer
%73 = add nuw i64 %63, 16
%74 = add i64 %65, 1
%75 = icmp eq i64 %74, %15
br i1 %75, label %76, label %62
76: ; preds = %62, %57
%77 = phi <16 x i8> [ %58, %57 ], [ %72, %62 ]
%78 = icmp ne <16 x i8> %77, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%79 = bitcast <16 x i1> %78 to i16
%80 = icmp eq i16 %79, 0
%81 = zext i1 %80 to i8
%82 = icmp eq i64 %11, %6
br i1 %82, label %123, label %83
83: ; preds = %76
%84 = and i64 %6, 8
%85 = icmp eq i64 %84, 0
br i1 %85, label %109, label %86
86: ; preds = %8, %83
%87 = phi i8 [ 1, %8 ], [ %81, %83 ]
%88 = phi i64 [ 0, %8 ], [ %11, %83 ]
%89 = and i64 %6, 4294967288
%90 = insertelement <8 x i8> poison, i8 %87, i64 0
%91 = shufflevector <8 x i8> %90, <8 x i8> poison, <8 x i32> zeroinitializer
br label %92
92: ; preds = %92, %86
%93 = phi i64 [ %88, %86 ], [ %102, %92 ]
%94 = phi <8 x i8> [ %91, %86 ], [ %101, %92 ]
%95 = getelementptr inbounds i8, i8* %0, i64 %93
%96 = bitcast i8* %95 to <8 x i8>*
%97 = load <8 x i8>, <8 x i8>* %96
%98 = sext <8 x i8> %97 to <8 x i32>
%99 = add nsw <8 x i32> %98, <i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48, i32 -48>
%100 = icmp ult <8 x i32> %99, <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>
%101 = select <8 x i1> %100, <8 x i8> %94, <8 x i8> zeroinitializer
%102 = add nuw i64 %93, 8
%103 = icmp eq i64 %102, %89
br i1 %103, label %104, label %92
104: ; preds = %92
%105 = bitcast <8 x i8> %101 to i64
%106 = icmp eq i64 %105, 72340172838076673
%107 = zext i1 %106 to i8
%108 = icmp eq i64 %89, %6
br i1 %108, label %123, label %109
109: ; preds = %5, %83, %104
%110 = phi i64 [ 0, %5 ], [ %11, %83 ], [ %89, %104 ]
%111 = phi i8 [ 1, %5 ], [ %81, %83 ], [ %107, %104 ]
br label %112
112: ; preds = %109, %112
%113 = phi i64 [ %121, %112 ], [ %110, %109 ]
%114 = phi i8 [ %120, %112 ], [ %111, %109 ]
%115 = getelementptr inbounds i8, i8* %0, i64 %113
%116 = load i8, i8* %115
%117 = sext i8 %116 to i32
%118 = add nsw i32 %117, -48
%119 = icmp ult i32 %118, 10
%120 = select i1 %119, i8 %114, i8 0
%121 = add nuw nsw i64 %113, 1
%122 = icmp eq i64 %121, %6
br i1 %122, label %123, label %112
123: ; preds = %112, %104, %76
%124 = phi i8 [ %81, %76 ], [ %107, %104 ], [ %120, %112 ]
%125 = icmp eq i8 %124, 0
br i1 %125, label %126, label %130
126: ; preds = %123
%127 = load i32, i32* @stderr
%128 = tail call i32 @fprintf(i32 %127, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str, i64 0, i64 0), i32 %1)
%129 = tail call i32 @exit(i32 1)
unreachable
130: ; preds = %2, %123
ret void
}