#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 /*<<< orphan*/ scanf(char *, char *);
int main() {
  int numbers[20];
  int i, j = 0, count = 0, checkdigit = 0;
  char ISBN[20];
  scanf("%s", ISBN);
  if (ISBN[0] == '9' && ISBN[1] == '7') {
    if (ISBN[2] == '9' || ISBN[2] == '8') {
      for (i = 0; i < 20; i++) {
        if (ISBN[i] >= '0' && ISBN[i] <= '9') {
          numbers[j] = (ISBN[i] - 48);
          count++;
          j++;
        }
      }
      if (count != 13) {
        printf("0\n");
        return 0;
      }
      for (i = 0; i < 12; i++) {
        if (i % 2 == 1)
          checkdigit = checkdigit + numbers[i] * 3;
        else
          checkdigit = checkdigit + numbers[i];
      }
      checkdigit = checkdigit % 10;
      checkdigit = 10 - checkdigit;
      if (numbers[12] != checkdigit) {
        printf("0\n");
        return 0;
      }
      printf("1\n");
      if (ISBN[6] == '9' && ISBN[7] == '3' && ISBN[8] == '3' &&
          ISBN[9] == '3' && ISBN[10] == '4' && ISBN[11] == '6')
        printf("Bluebridge");
      if (ISBN[6] == '5' && ISBN[7] == '5' && ISBN[8] == '5' &&
          ISBN[9] == '8' && ISBN[10] == '3')
        printf("Alyson Books");
      if (ISBN[6] == '4' && ISBN[7] == '2' && ISBN[8] == '1' && ISBN[9] == '0')
        printf("FUNimation Productions, Ltd.");
      if (ISBN[6] == '0' && ISBN[7] == '1')
        printf("Pyramid Books");
    } else {
      printf("0\n");
    }
  } else {
    printf("0\n");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x68(%rbp)
movl   $0x0,-0x6c(%rbp)
movl   $0x0,-0x70(%rbp)
lea    -0x90(%rbp),%rsi
lea    0xeab(%rip),%rdi
call   1040 <scanf@plt>
movsbl -0x90(%rbp),%eax
cmp    $0x39,%eax
jne    142e <main+0x30e>
movsbl -0x8f(%rbp),%eax
cmp    $0x37,%eax
jne    142e <main+0x30e>
movsbl -0x8e(%rbp),%eax
cmp    $0x39,%eax
je     119a <main+0x7a>
movsbl -0x8e(%rbp),%eax
cmp    $0x38,%eax
jne    141d <main+0x2fd>
movl   $0x0,-0x64(%rbp)
cmpl   $0x14,-0x64(%rbp)
jge    1211 <main+0xf1>
movslq -0x64(%rbp),%rax
movsbl -0x90(%rbp,%rax,1),%eax
ff
cmp    $0x30,%eax
jl     11fe <main+0xde>
movslq -0x64(%rbp),%rax
movsbl -0x90(%rbp,%rax,1),%eax
ff
cmp    $0x39,%eax
jg     11fe <main+0xde>
movslq -0x64(%rbp),%rax
movsbl -0x90(%rbp,%rax,1),%ecx
ff
sub    $0x30,%ecx
movslq -0x68(%rbp),%rax
mov    %ecx,-0x60(%rbp,%rax,4)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    1203 <main+0xe3>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    11a1 <main+0x81>
cmpl   $0xd,-0x6c(%rbp)
je     1233 <main+0x113>
lea    0xde1(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1441 <main+0x321>
movl   $0x0,-0x64(%rbp)
cmpl   $0xc,-0x64(%rbp)
jge    128f <main+0x16f>
mov    -0x64(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    126e <main+0x14e>
mov    -0x70(%rbp),%eax
movslq -0x64(%rbp),%rcx
imul   $0x3,-0x60(%rbp,%rcx,4),%ecx
add    %ecx,%eax
mov    %eax,-0x70(%rbp)
jmp    127c <main+0x15c>
mov    -0x70(%rbp),%eax
movslq -0x64(%rbp),%rcx
add    -0x60(%rbp,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
jmp    1281 <main+0x161>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    123a <main+0x11a>
mov    -0x70(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x70(%rbp)
mov    $0xa,%eax
sub    -0x70(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x70(%rbp),%eax
je     12cc <main+0x1ac>
lea    0xd48(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1441 <main+0x321>
lea    0xd33(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x8a(%rbp),%eax
cmp    $0x39,%eax
jne    1344 <main+0x224>
movsbl -0x89(%rbp),%eax
cmp    $0x33,%eax
jne    1344 <main+0x224>
movsbl -0x88(%rbp),%eax
cmp    $0x33,%eax
jne    1344 <main+0x224>
movsbl -0x87(%rbp),%eax
cmp    $0x33,%eax
jne    1344 <main+0x224>
movsbl -0x86(%rbp),%eax
cmp    $0x34,%eax
jne    1344 <main+0x224>
movsbl -0x85(%rbp),%eax
cmp    $0x36,%eax
jne    1344 <main+0x224>
lea    0xcca(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x8a(%rbp),%eax
cmp    $0x35,%eax
jne    13a0 <main+0x280>
movsbl -0x89(%rbp),%eax
cmp    $0x35,%eax
jne    13a0 <main+0x280>
movsbl -0x88(%rbp),%eax
cmp    $0x35,%eax
jne    13a0 <main+0x280>
movsbl -0x87(%rbp),%eax
cmp    $0x38,%eax
jne    13a0 <main+0x280>
movsbl -0x86(%rbp),%eax
cmp    $0x33,%eax
jne    13a0 <main+0x280>
lea    0xc79(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x8a(%rbp),%eax
cmp    $0x34,%eax
jne    13ec <main+0x2cc>
movsbl -0x89(%rbp),%eax
cmp    $0x32,%eax
jne    13ec <main+0x2cc>
movsbl -0x88(%rbp),%eax
cmp    $0x31,%eax
jne    13ec <main+0x2cc>
movsbl -0x87(%rbp),%eax
cmp    $0x30,%eax
jne    13ec <main+0x2cc>
lea    0xc3a(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x8a(%rbp),%eax
cmp    $0x30,%eax
jne    1418 <main+0x2f8>
movsbl -0x89(%rbp),%eax
cmp    $0x31,%eax
jne    1418 <main+0x2f8>
lea    0xc2b(%rip),%rdi
call   1030 <printf@plt>
jmp    1429 <main+0x309>
lea    0xbdf(%rip),%rdi
call   1030 <printf@plt>
jmp    143a <main+0x31a>
lea    0xbce(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x78,%rsp
lea    0xec5(%rip),%rdi
mov    %rsp,%rsi
call   1050 <scanf@plt>
cmpb   $0x39,(%rsp)
jne    1308 <main+0x1d8>
cmpb   $0x37,0x1(%rsp)
jne    1308 <main+0x1d8>
mov    0x2(%rsp),%al
and    $0xfe,%al
cmp    $0x38,%al
jne    1308 <main+0x1d8>
xor    %eax,%eax
mov    $0x39,%sil
mov    $0x1,%ecx
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x30(%rsi),%edi
cmp    $0x9,%dil
ja     119d <main+0x6d>
movzbl %sil,%esi
add    $0xffffffd0,%esi
movslq %edx,%rdx
mov    %esi,0x20(%rsp,%rdx,4)
add    $0x1,%eax
add    $0x1,%edx
cmp    $0x14,%rcx
je     11ad <main+0x7d>
movzbl (%rsp,%rcx,1),%esi
add    $0x1,%rcx
jmp    1180 <main+0x50>
cmp    $0xd,%eax
jne    1308 <main+0x1d8>
mov    0x24(%rsp),%eax
mov    0x2c(%rsp),%ecx
lea    (%rax,%rax,2),%eax
add    0x20(%rsp),%eax
add    0x28(%rsp),%eax
lea    (%rcx,%rcx,2),%ecx
add    %eax,%ecx
add    0x30(%rsp),%ecx
mov    0x34(%rsp),%eax
lea    (%rax,%rax,2),%eax
add    %ecx,%eax
add    0x38(%rsp),%eax
mov    0x3c(%rsp),%ecx
lea    (%rcx,%rcx,2),%ecx
add    %eax,%ecx
add    0x40(%rsp),%ecx
mov    0x44(%rsp),%eax
lea    (%rax,%rax,2),%eax
add    %ecx,%eax
add    0x48(%rsp),%eax
mov    0x4c(%rsp),%ecx
lea    (%rcx,%rcx,2),%ecx
add    %eax,%ecx
movslq %ecx,%rax
imul   $0x66666667,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rcx
add    %edx,%ecx
add    %ecx,%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %eax,%ecx
add    $0xa,%ecx
cmp    %ecx,0x50(%rsp)
jne    1308 <main+0x1d8>
lea    0xe12(%rip),%rdi
call   1030 <puts@plt>
mov    0x6(%rsp),%cl
mov    0x7(%rsp),%al
mov    0x8(%rsp),%dl
mov    0x9(%rsp),%sil
mov    0xa(%rsp),%dil
cmp    $0x39,%cl
jne    1292 <main+0x162>
cmp    $0x33,%al
jne    1292 <main+0x162>
cmp    $0x33,%dl
jne    1292 <main+0x162>
cmp    $0x33,%sil
jne    1292 <main+0x162>
cmp    $0x34,%dil
jne    1292 <main+0x162>
cmpb   $0x36,0xb(%rsp)
jne    1292 <main+0x162>
lea    0xd8c(%rip),%rdi
call   1040 <printf@plt>
mov    0x6(%rsp),%cl
mov    0x7(%rsp),%al
mov    0x8(%rsp),%dl
mov    0x9(%rsp),%sil
mov    0xa(%rsp),%dil
cmp    $0x35,%cl
jne    12c9 <main+0x199>
cmp    $0x35,%al
jne    12c9 <main+0x199>
cmp    $0x35,%dl
jne    12c9 <main+0x199>
cmp    $0x38,%sil
jne    12c9 <main+0x199>
cmp    $0x33,%dil
jne    12c9 <main+0x199>
lea    0xd5b(%rip),%rdi
call   1040 <printf@plt>
mov    0x6(%rsp),%cl
mov    0x7(%rsp),%al
mov    0x8(%rsp),%dl
mov    0x9(%rsp),%sil
cmp    $0x34,%cl
jne    12f1 <main+0x1c1>
cmp    $0x32,%al
jne    12f1 <main+0x1c1>
cmp    $0x31,%dl
jne    12f1 <main+0x1c1>
cmp    $0x30,%sil
jne    12f1 <main+0x1c1>
lea    0xd37(%rip),%rdi
call   1040 <printf@plt>
mov    0x6(%rsp),%cl
mov    0x7(%rsp),%al
cmp    $0x30,%cl
jne    1314 <main+0x1e4>
cmp    $0x31,%al
jne    1314 <main+0x1e4>
lea    0xd37(%rip),%rdi
call   1040 <printf@plt>
jmp    1314 <main+0x1e4>
lea    0xd39(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
add    $0x78,%rsp
ret

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

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
@.str.3 = [11 x i8] c"Bluebridge\00"
@.str.4 = [13 x i8] c"Alyson Books\00"
@.str.5 = [29 x i8] c"FUNimation Productions, Ltd.\00"
@.str.6 = [14 x i8] c"Pyramid Books\00"
@str.8 = [2 x i8] c"1\00"
@str.10 = [2 x i8] c"0\00"
define i32 @main() {
%1 = alloca [20 x i32]
%2 = alloca [20 x i8]
%3 = bitcast [20 x i32]* %1 to i8*
%4 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%5 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %4)
%6 = load i8, i8* %4
%7 = icmp eq i8 %6, 57
%8 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 1
%9 = load i8, i8* %8
%10 = icmp eq i8 %9, 55
%11 = select i1 %7, i1 %10, i1 false
br i1 %11, label %12, label %171
12: ; preds = %0
%13 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 2
%14 = load i8, i8* %13
%15 = and i8 %14, -2
%16 = icmp eq i8 %15, 56
br i1 %16, label %17, label %169
17: ; preds = %12, %36
%18 = phi i8 [ %38, %36 ], [ 57, %12 ]
%19 = phi i64 [ %34, %36 ], [ 0, %12 ]
%20 = phi i32 [ %33, %36 ], [ 0, %12 ]
%21 = phi i32 [ %32, %36 ], [ 0, %12 ]
%22 = add i8 %18, -48
%23 = icmp ult i8 %22, 10
br i1 %23, label %24, label %31
24: ; preds = %17
%25 = zext i8 %18 to i32
%26 = add nsw i32 %25, -48
%27 = sext i32 %21 to i64
%28 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 %27
store i32 %26, i32* %28
%29 = add nsw i32 %20, 1
%30 = add nsw i32 %21, 1
br label %31
31: ; preds = %17, %24
%32 = phi i32 [ %30, %24 ], [ %21, %17 ]
%33 = phi i32 [ %29, %24 ], [ %20, %17 ]
%34 = add nuw nsw i64 %19, 1
%35 = icmp eq i64 %34, 20
br i1 %35, label %39, label %36
36: ; preds = %31
%37 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 %34
%38 = load i8, i8* %37
br label %17
39: ; preds = %31
%40 = icmp eq i32 %33, 13
br i1 %40, label %43, label %41
41: ; preds = %39
%42 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str.10, i64 0, i64 0))
br label %173
43: ; preds = %39
%44 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 0
%45 = load i32, i32* %44
%46 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 1
%47 = load i32, i32* %46
%48 = mul nsw i32 %47, 3
%49 = add nsw i32 %48, %45
%50 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 2
%51 = load i32, i32* %50
%52 = add nsw i32 %51, %49
%53 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 3
%54 = load i32, i32* %53
%55 = mul nsw i32 %54, 3
%56 = add nsw i32 %55, %52
%57 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 4
%58 = load i32, i32* %57
%59 = add nsw i32 %58, %56
%60 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 5
%61 = load i32, i32* %60
%62 = mul nsw i32 %61, 3
%63 = add nsw i32 %62, %59
%64 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 6
%65 = load i32, i32* %64
%66 = add nsw i32 %65, %63
%67 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 7
%68 = load i32, i32* %67
%69 = mul nsw i32 %68, 3
%70 = add nsw i32 %69, %66
%71 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 8
%72 = load i32, i32* %71
%73 = add nsw i32 %72, %70
%74 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 9
%75 = load i32, i32* %74
%76 = mul nsw i32 %75, 3
%77 = add nsw i32 %76, %73
%78 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 10
%79 = load i32, i32* %78
%80 = add nsw i32 %79, %77
%81 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 11
%82 = load i32, i32* %81
%83 = mul nsw i32 %82, 3
%84 = add nsw i32 %83, %80
%85 = srem i32 %84, 10
%86 = sub nsw i32 10, %85
%87 = getelementptr inbounds [20 x i32], [20 x i32]* %1, i64 0, i64 12
%88 = load i32, i32* %87
%89 = icmp eq i32 %88, %86
br i1 %89, label %92, label %90
90: ; preds = %43
%91 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str.10, i64 0, i64 0))
br label %173
92: ; preds = %43
%93 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str.8, i64 0, i64 0))
%94 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 6
%95 = load i8, i8* %94
%96 = icmp eq i8 %95, 57
%97 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 7
%98 = load i8, i8* %97
%99 = icmp eq i8 %98, 51
%100 = select i1 %96, i1 %99, i1 false
%101 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 8
%102 = load i8, i8* %101
%103 = icmp eq i8 %102, 51
%104 = select i1 %100, i1 %103, i1 false
%105 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 9
%106 = load i8, i8* %105
%107 = icmp eq i8 %106, 51
%108 = select i1 %104, i1 %107, i1 false
%109 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 10
%110 = load i8, i8* %109
%111 = icmp eq i8 %110, 52
%112 = select i1 %108, i1 %111, i1 false
%113 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 11
%114 = load i8, i8* %113
%115 = icmp eq i8 %114, 54
%116 = select i1 %112, i1 %115, i1 false
br i1 %116, label %117, label %124
117: ; preds = %92
%118 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.3, i64 0, i64 0))
%119 = load i8, i8* %94
%120 = load i8, i8* %97
%121 = load i8, i8* %101
%122 = load i8, i8* %105
%123 = load i8, i8* %109
br label %124
124: ; preds = %117, %92
%125 = phi i8 [ %123, %117 ], [ %110, %92 ]
%126 = phi i8 [ %122, %117 ], [ %106, %92 ]
%127 = phi i8 [ %121, %117 ], [ %102, %92 ]
%128 = phi i8 [ %120, %117 ], [ %98, %92 ]
%129 = phi i8 [ %119, %117 ], [ %95, %92 ]
%130 = icmp eq i8 %129, 53
%131 = icmp eq i8 %128, 53
%132 = select i1 %130, i1 %131, i1 false
%133 = icmp eq i8 %127, 53
%134 = select i1 %132, i1 %133, i1 false
%135 = icmp eq i8 %126, 56
%136 = select i1 %134, i1 %135, i1 false
%137 = icmp eq i8 %125, 51
%138 = select i1 %136, i1 %137, i1 false
br i1 %138, label %139, label %145
139: ; preds = %124
%140 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0))
%141 = load i8, i8* %94
%142 = load i8, i8* %97
%143 = load i8, i8* %101
%144 = load i8, i8* %105
br label %145
145: ; preds = %139, %124
%146 = phi i8 [ %144, %139 ], [ %126, %124 ]
%147 = phi i8 [ %143, %139 ], [ %127, %124 ]
%148 = phi i8 [ %142, %139 ], [ %128, %124 ]
%149 = phi i8 [ %141, %139 ], [ %129, %124 ]
%150 = icmp eq i8 %149, 52
%151 = icmp eq i8 %148, 50
%152 = select i1 %150, i1 %151, i1 false
%153 = icmp eq i8 %147, 49
%154 = select i1 %152, i1 %153, i1 false
%155 = icmp eq i8 %146, 48
%156 = select i1 %154, i1 %155, i1 false
br i1 %156, label %157, label %161
157: ; preds = %145
%158 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.5, i64 0, i64 0))
%159 = load i8, i8* %94
%160 = load i8, i8* %97
br label %161
161: ; preds = %157, %145
%162 = phi i8 [ %160, %157 ], [ %148, %145 ]
%163 = phi i8 [ %159, %157 ], [ %149, %145 ]
%164 = icmp eq i8 %163, 48
%165 = icmp eq i8 %162, 49
%166 = select i1 %164, i1 %165, i1 false
br i1 %166, label %167, label %173
167: ; preds = %161
%168 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.6, i64 0, i64 0))
br label %173
169: ; preds = %12
%170 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str.10, i64 0, i64 0))
br label %173
171: ; preds = %0
%172 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str.10, i64 0, i64 0))
br label %173
173: ; preds = %171, %161, %167, %169, %90, %41
ret i32 0
}