#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);
int /*<<< orphan*/ scanf(char *, char *);
int strlen(char *);
int main() {
  char egn[12];
  int sumation[12];
  int index = 0;
  int breaker = 1;
  scanf("%s", egn);
  if (strlen(egn) != 10)
    breaker = 0;
  for (; index < 10; index++) {
    if (egn[index] < '0' || egn[index] > '9')
      breaker = 0;
  }
  if (egn[0] < '0' || egn[0] > '9')
    breaker = 0;
  if (egn[1] < '0' || egn[1] > '9')
    breaker = 0;
  if (egn[2] < '0' || egn[2] > '5')
    breaker = 0;
  else {
    if (egn[2] == '1' && egn[3] > '2')
      breaker = 0;
    if (egn[2] == '2' && egn[3] == '0')
      breaker = 0;
    if (egn[2] == '3' && egn[3] > '2')
      breaker = 0;
    if (egn[2] == '4' && egn[3] == '0')
      breaker = 0;
    if (egn[2] == '5' && egn[3] > '2')
      breaker = 0;
  }
  if (egn[4] < '0' || egn[4] > '3')
    breaker = 0;
  if (egn[4] == '3' && egn[5] > '1')
    breaker = 0;
  if (egn[5] < '0' || egn[5] > '9')
    breaker = 0;
  for (index = 0; index < 10; index++) {
    sumation[index] = egn[index] - '0';
  }
  sumation[10] = (sumation[0] * 2 + sumation[1] * 4 + sumation[2] * 8 +
                  sumation[3] * 5 + sumation[4] * 10 + sumation[5] * 9 +
                  sumation[6] * 7 + sumation[7] * 3 + sumation[8] * 6) %
                 11;
  if (sumation[10] == 10)
    sumation[10] = 0;
  if (sumation[10] != sumation[9])
    breaker = 0;
  printf("%d", breaker);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x44(%rbp)
movl   $0x1,-0x48(%rbp)
lea    -0x10(%rbp),%rsi
lea    0xea8(%rip),%rdi
call   1050 <scanf@plt>
lea    -0x10(%rbp),%rdi
call   1030 <strlen@plt>
cmp    $0xa,%eax
je     1176 <main+0x46>
movl   $0x0,-0x48(%rbp)
jmp    117b <main+0x4b>
cmpl   $0xa,-0x44(%rbp)
jge    11c3 <main+0x93>
movslq -0x44(%rbp),%rax
movsbl -0x10(%rbp,%rax,1),%eax
cmp    $0x30,%eax
jl     11a9 <main+0x79>
movslq -0x44(%rbp),%rax
movsbl -0x10(%rbp,%rax,1),%eax
cmp    $0x39,%eax
jle    11b0 <main+0x80>
movl   $0x0,-0x48(%rbp)
jmp    11b5 <main+0x85>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    117b <main+0x4b>
movsbl -0x10(%rbp),%eax
cmp    $0x30,%eax
jl     11dd <main+0xad>
movsbl -0x10(%rbp),%eax
cmp    $0x39,%eax
jle    11e4 <main+0xb4>
movl   $0x0,-0x48(%rbp)
movsbl -0xf(%rbp),%eax
cmp    $0x30,%eax
jl     11fe <main+0xce>
movsbl -0xf(%rbp),%eax
cmp    $0x39,%eax
jle    1205 <main+0xd5>
movl   $0x0,-0x48(%rbp)
movsbl -0xe(%rbp),%eax
cmp    $0x30,%eax
jl     121f <main+0xef>
movsbl -0xe(%rbp),%eax
cmp    $0x35,%eax
jle    122b <main+0xfb>
movl   $0x0,-0x48(%rbp)
jmp    12d5 <main+0x1a5>
movsbl -0xe(%rbp),%eax
cmp    $0x31,%eax
jne    124c <main+0x11c>
movsbl -0xd(%rbp),%eax
cmp    $0x32,%eax
jle    124c <main+0x11c>
movl   $0x0,-0x48(%rbp)
movsbl -0xe(%rbp),%eax
cmp    $0x32,%eax
jne    126d <main+0x13d>
movsbl -0xd(%rbp),%eax
cmp    $0x30,%eax
jne    126d <main+0x13d>
movl   $0x0,-0x48(%rbp)
movsbl -0xe(%rbp),%eax
cmp    $0x33,%eax
jne    128e <main+0x15e>
movsbl -0xd(%rbp),%eax
cmp    $0x32,%eax
jle    128e <main+0x15e>
movl   $0x0,-0x48(%rbp)
movsbl -0xe(%rbp),%eax
cmp    $0x34,%eax
jne    12af <main+0x17f>
movsbl -0xd(%rbp),%eax
cmp    $0x30,%eax
jne    12af <main+0x17f>
movl   $0x0,-0x48(%rbp)
movsbl -0xe(%rbp),%eax
cmp    $0x35,%eax
jne    12d0 <main+0x1a0>
movsbl -0xd(%rbp),%eax
cmp    $0x32,%eax
jle    12d0 <main+0x1a0>
movl   $0x0,-0x48(%rbp)
jmp    12d5 <main+0x1a5>
movsbl -0xc(%rbp),%eax
cmp    $0x30,%eax
jl     12ef <main+0x1bf>
movsbl -0xc(%rbp),%eax
cmp    $0x33,%eax
jle    12f6 <main+0x1c6>
movl   $0x0,-0x48(%rbp)
movsbl -0xc(%rbp),%eax
cmp    $0x33,%eax
jne    1317 <main+0x1e7>
movsbl -0xb(%rbp),%eax
cmp    $0x31,%eax
jle    1317 <main+0x1e7>
movl   $0x0,-0x48(%rbp)
movsbl -0xb(%rbp),%eax
cmp    $0x30,%eax
jl     1331 <main+0x201>
movsbl -0xb(%rbp),%eax
cmp    $0x39,%eax
jle    1338 <main+0x208>
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x44(%rbp)
cmpl   $0xa,-0x44(%rbp)
jge    136b <main+0x23b>
movslq -0x44(%rbp),%rax
movsbl -0x10(%rbp,%rax,1),%ecx
sub    $0x30,%ecx
movslq -0x44(%rbp),%rax
mov    %ecx,-0x40(%rbp,%rax,4)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    133f <main+0x20f>
mov    -0x40(%rbp),%eax
shl    $0x1,%eax
mov    -0x3c(%rbp),%ecx
shl    $0x2,%ecx
add    %ecx,%eax
mov    -0x38(%rbp),%ecx
shl    $0x3,%ecx
add    %ecx,%eax
imul   $0x5,-0x34(%rbp),%ecx
add    %ecx,%eax
imul   $0xa,-0x30(%rbp),%ecx
add    %ecx,%eax
imul   $0x9,-0x2c(%rbp),%ecx
add    %ecx,%eax
imul   $0x7,-0x28(%rbp),%ecx
add    %ecx,%eax
imul   $0x3,-0x24(%rbp),%ecx
add    %ecx,%eax
imul   $0x6,-0x20(%rbp),%ecx
add    %ecx,%eax
mov    $0xb,%ecx
cltd
idiv   %ecx
mov    %edx,-0x18(%rbp)
cmpl   $0xa,-0x18(%rbp)
jne    13c1 <main+0x291>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x1c(%rbp),%eax
je     13d4 <main+0x2a4>
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%esi
lea    0xc25(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
lea    0xebb(%rip),%rdi
lea    0x8(%rsp),%rbx
mov    %rbx,%rsi
call   1050 <scanf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
movsbl 0x8(%rsp),%r8d
movsbl 0x9(%rsp),%r12d
movsbl 0xa(%rsp),%r11d
movsbl 0xb(%rsp),%r14d
movsbl 0xc(%rsp),%r9d
movsbl 0xd(%rsp),%r15d
lea    -0x3a(%r15),%edx
movsbl 0xe(%rsp),%edi
movsbl 0xf(%rsp),%ecx
mov    %rcx,0x18(%rsp)
movsbl 0x10(%rsp),%ecx
mov    %rcx,0x20(%rsp)
movsbl 0x11(%rsp),%r10d
lea    -0x36(%r11),%esi
xor    %ebx,%ebx
mov    $0x0,%ebp
cmp    $0xfa,%sil
jb     1300 <main+0x1d0>
lea    -0x3a(%r8),%ebp
lea    -0x3a(%r12),%esi
cmp    $0xf6,%dl
setae  0x7(%rsp)
cmp    $0xf6,%sil
setb   %sil
mov    %sil,0x2(%rsp)
cmp    $0xf6,%bpl
setb   %bl
mov    %bl,0x3(%rsp)
lea    -0x30(%r10),%ebp
cmp    $0xa,%bpl
setb   0x5(%rsp)
cmp    $0xa,%eax
sete   0x6(%rsp)
or     %bl,%sil
lea    -0x30(%r14),%ebp
cmp    $0xa,%bpl
setb   0x4(%rsp)
lea    -0x30(%r9),%ebp
cmp    $0xa,%bpl
setb   %r13b
lea    -0x30(%rdi),%ebp
cmp    $0xa,%bpl
setb   0x1(%rsp)
mov    0x18(%rsp),%rax
lea    -0x30(%rax),%ebp
cmp    $0xa,%bpl
setb   (%rsp)
mov    0x20(%rsp),%rcx
lea    -0x30(%rcx),%ebp
cmp    $0xa,%bpl
mov    %r12,0x28(%rsp)
mov    %edx,0x14(%rsp)
setb   %r12b
cmp    $0x31,%r11b
mov    %rdi,0x30(%rsp)
mov    %r10,%rdi
sete   %r10b
cmp    $0x33,%r14b
setge  %dl
and    %dl,%r10b
cmp    $0x32,%r11b
sete   %cl
cmp    $0x30,%r14b
sete   %bpl
and    %bpl,%cl
cmp    $0x33,%r11b
sete   %bl
and    %dl,%bl
cmp    $0x34,%r11b
mov    %r8,%rax
mov    %r9,%r8
mov    %r15,%r9
mov    %r14,%r15
sete   %r14b
and    %bpl,%r14b
cmp    $0x35,%r11b
sete   %bpl
and    %dl,%bpl
or     %r14b,%bpl
mov    %r15,%r14
mov    %r9,%r15
mov    %r8,%r9
mov    %rax,%r8
or     %cl,%bl
or     %bpl,%bl
or     0x2(%rsp),%r10b
or     0x3(%rsp),%r10b
or     %bl,%r10b
and    0x5(%rsp),%r12b
and    (%rsp),%r12b
and    0x1(%rsp),%r12b
and    0x7(%rsp),%r12b
not    %r10b
and    %r10b,%r12b
mov    %rdi,%r10
mov    0x30(%rsp),%rdi
xor    %ebx,%ebx
and    0x4(%rsp),%r13b
not    %sil
and    %sil,%r13b
and    0x6(%rsp),%r13b
and    %r12b,%r13b
mov    0x14(%rsp),%edx
mov    0x28(%rsp),%r12
movzbl %r13b,%ebp
add    $0xffffffd0,%r10d
cmp    $0x32,%r15b
mov    %ebp,%esi
cmovge %ebx,%esi
cmp    $0x33,%r9b
cmovne %ebp,%esi
lea    -0x34(%r9),%eax
cmp    $0xfc,%al
cmovb  %ebx,%esi
cmp    $0xf6,%dl
cmovb  %ebx,%esi
add    %r8d,%r8d
lea    (%r8,%r12,4),%eax
lea    (%rax,%r11,8),%eax
lea    (%r14,%r14,4),%ecx
add    %eax,%ecx
lea    (%r9,%r9,4),%eax
lea    (%rcx,%rax,2),%eax
lea    (%r15,%r15,8),%ecx
add    %eax,%ecx
lea    0x0(,%rdi,8),%eax
sub    %edi,%eax
add    %ecx,%eax
mov    0x18(%rsp),%rcx
lea    (%rcx,%rcx,2),%ecx
add    %eax,%ecx
mov    0x20(%rsp),%rax
lea    (%rax,%rax,2),%eax
lea    (%rcx,%rax,2),%eax
add    $0xfffff5e0,%eax
cltq
imul   $0x2e8ba2e9,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
sar    $0x21,%rcx
add    %edx,%ecx
lea    (%rcx,%rcx,4),%edx
lea    (%rcx,%rdx,2),%ecx
sub    %ecx,%eax
cmp    $0xa,%eax
cmove  %ebx,%eax
cmp    %r10d,%eax
cmovne %ebx,%esi
lea    0xc6c(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
@.str.1 = [3 x i8] c"%d\00"
define i32 @main() {
%1 = alloca [12 x i8]
%2 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 0
%3 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %2)
%4 = call i32 @strlen(i8* %2)
%5 = load i8, i8* %2
%6 = add i8 %5, -58
%7 = icmp ult i8 %6, -10
%8 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 1
%9 = load i8, i8* %8
%10 = add i8 %9, -58
%11 = icmp ult i8 %10, -10
%12 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 2
%13 = load i8, i8* %12
%14 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 3
%15 = load i8, i8* %14
%16 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 4
%17 = load i8, i8* %16
%18 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 5
%19 = load i8, i8* %18
%20 = add i8 %19, -58
%21 = icmp ult i8 %20, -10
%22 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 6
%23 = load i8, i8* %22
%24 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 7
%25 = load i8, i8* %24
%26 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 8
%27 = load i8, i8* %26
%28 = getelementptr inbounds [12 x i8], [12 x i8]* %1, i64 0, i64 9
%29 = load i8, i8* %28
%30 = add i8 %13, -54
%31 = icmp ult i8 %30, -6
br i1 %31, label %78, label %32
32: ; preds = %0
%33 = add i8 %29, -48
%34 = icmp ult i8 %33, 10
%35 = icmp eq i32 %4, 10
%36 = select i1 %11, i1 true, i1 %7
%37 = xor i1 %36, true
%38 = add i8 %15, -48
%39 = icmp ult i8 %38, 10
%40 = add i8 %17, -48
%41 = icmp ult i8 %40, 10
%42 = xor i1 %21, true
%43 = add i8 %23, -48
%44 = icmp ult i8 %43, 10
%45 = add i8 %25, -48
%46 = icmp ult i8 %45, 10
%47 = add i8 %27, -48
%48 = icmp ult i8 %47, 10
%49 = icmp eq i8 %13, 49
%50 = icmp sgt i8 %15, 50
%51 = select i1 %49, i1 %50, i1 false
%52 = icmp eq i8 %13, 50
%53 = icmp eq i8 %15, 48
%54 = select i1 %52, i1 %53, i1 false
%55 = icmp eq i8 %13, 51
%56 = select i1 %55, i1 %50, i1 false
%57 = icmp eq i8 %13, 52
%58 = select i1 %57, i1 %53, i1 false
%59 = icmp eq i8 %13, 53
%60 = select i1 %59, i1 %50, i1 false
%61 = select i1 %60, i1 true, i1 %58
%62 = select i1 %61, i1 true, i1 %56
%63 = select i1 %62, i1 true, i1 %54
%64 = select i1 %63, i1 true, i1 %51
%65 = select i1 %64, i1 true, i1 %11
%66 = select i1 %65, i1 true, i1 %7
%67 = xor i1 %66, true
%68 = select i1 %67, i1 %34, i1 false
%69 = select i1 %68, i1 %48, i1 false
%70 = select i1 %69, i1 %46, i1 false
%71 = select i1 %70, i1 %44, i1 false
%72 = select i1 %71, i1 %42, i1 false
%73 = select i1 %72, i1 %41, i1 false
%74 = select i1 %73, i1 %39, i1 false
%75 = select i1 %74, i1 %37, i1 false
%76 = select i1 %75, i1 %35, i1 false
%77 = zext i1 %76 to i32
br label %78
78: ; preds = %32, %0
%79 = phi i32 [ 0, %0 ], [ %77, %32 ]
%80 = sext i8 %5 to i32
%81 = sext i8 %9 to i32
%82 = sext i8 %13 to i32
%83 = sext i8 %15 to i32
%84 = sext i8 %17 to i32
%85 = sext i8 %19 to i32
%86 = sext i8 %23 to i32
%87 = sext i8 %25 to i32
%88 = sext i8 %27 to i32
%89 = sext i8 %29 to i32
%90 = add nsw i32 %89, -48
%91 = icmp eq i8 %17, 51
%92 = icmp sgt i8 %19, 49
%93 = select i1 %91, i1 %92, i1 false
%94 = add i8 %17, -52
%95 = icmp ult i8 %94, -4
%96 = or i1 %95, %93
%97 = select i1 %21, i1 true, i1 %96
%98 = select i1 %97, i32 0, i32 %79
%99 = shl nsw i32 %80, 1
%100 = shl nsw i32 %81, 2
%101 = add nsw i32 %100, %99
%102 = shl nsw i32 %82, 3
%103 = add nsw i32 %101, %102
%104 = mul nsw i32 %83, 5
%105 = add nsw i32 %103, %104
%106 = mul nsw i32 %84, 10
%107 = add nsw i32 %105, %106
%108 = mul nsw i32 %85, 9
%109 = add nsw i32 %107, %108
%110 = mul nsw i32 %86, 7
%111 = add i32 %109, %110
%112 = mul nsw i32 %87, 3
%113 = add i32 %111, %112
%114 = mul nsw i32 %88, 6
%115 = add i32 %113, %114
%116 = add i32 %115, -2592
%117 = srem i32 %116, 11
%118 = icmp eq i32 %117, 10
%119 = select i1 %118, i32 0, i32 %117
%120 = icmp eq i32 %119, %90
%121 = select i1 %120, i32 %98, i32 0
%122 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 %121)
ret i32 0
}