#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 strlen(char *);
int main() {
  char isbn[20];
  int counter;
  int dash_counter;
  scanf("%s", isbn);
  if (strlen(isbn) != 17) {
    printf("0");
    return 0;
  }
  if ((isbn[0] != '9' && isbn[1] != '7' && isbn[2] != '8' && isbn[3] != '-') ||
      (isbn[0] != '9' && isbn[1] != '7' && isbn[2] != '9' && isbn[3] != '-')) {
    printf("0");
    return 0;
  }
  dash_counter = 0;
  for (counter = 0; counter < 17; counter++) {
    if (isbn[counter] == '-') {
      dash_counter++;
    }
  }
  if (dash_counter != 4) {
    printf("0");
    return 0;
  }
  counter = 3;
  for (; counter < 17; counter++) {
    if (isbn[counter] == '-') {
      if (isbn[counter + 1] == '-') {
        printf("0");
        return 0;
      }
    }
  }
  printf("1");
  if (isbn[6] == '9' && isbn[7] == '3' && isbn[8] == '3' && isbn[9] == '3' &&
      isbn[10] == '4' && isbn[11] == '6') {
    if (isbn[12] == '-') {
      printf("\nBluebridge");
    }
  }
  if (isbn[6] == '5' && isbn[7] == '5' && isbn[8] == '5' && isbn[9] == '8' &&
      isbn[10] == '3') {
    if (isbn[11] == '-') {
      printf("\nAlyson Books");
    }
  }
  if (isbn[6] == '4' && isbn[7] == '2' && isbn[8] == '1' && isbn[9] == '0') {
    if (isbn[10] == '-') {
      printf("\nFUNimation Productions, Ltd.");
    }
  }
  if (isbn[6] == '0' && isbn[7] == '1') {
    if (isbn[8] == '-') {
      printf("\nPyramid Books");
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x20(%rbp),%rsi
lea    0xeb6(%rip),%rdi
call   1050 <scanf@plt>
lea    -0x20(%rbp),%rdi
call   1030 <strlen@plt>
cmp    $0x11,%eax
je     1179 <main+0x49>
lea    0xe9b(%rip),%rdi
call   1040 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1432 <main+0x302>
movsbl -0x20(%rbp),%eax
cmp    $0x39,%eax
je     11ad <main+0x7d>
movsbl -0x1f(%rbp),%eax
cmp    $0x37,%eax
je     11ad <main+0x7d>
movsbl -0x1e(%rbp),%eax
cmp    $0x38,%eax
je     11ad <main+0x7d>
movsbl -0x1d(%rbp),%eax
cmp    $0x2d,%eax
jne    11e1 <main+0xb1>
movsbl -0x20(%rbp),%eax
cmp    $0x39,%eax
je     11f9 <main+0xc9>
movsbl -0x1f(%rbp),%eax
cmp    $0x37,%eax
je     11f9 <main+0xc9>
movsbl -0x1e(%rbp),%eax
cmp    $0x39,%eax
je     11f9 <main+0xc9>
movsbl -0x1d(%rbp),%eax
cmp    $0x2d,%eax
je     11f9 <main+0xc9>
lea    0xe1b(%rip),%rdi
call   1040 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1432 <main+0x302>
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x11,-0x24(%rbp)
jge    123f <main+0x10f>
movslq -0x24(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x2d,%eax
jne    122c <main+0xfc>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1231 <main+0x101>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1207 <main+0xd7>
cmpl   $0x4,-0x28(%rbp)
je     1261 <main+0x131>
lea    0xdb3(%rip),%rdi
call   1040 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1432 <main+0x302>
movl   $0x3,-0x24(%rbp)
cmpl   $0x11,-0x24(%rbp)
jge    12ca <main+0x19a>
movslq -0x24(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x2d,%eax
jne    12b7 <main+0x187>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x2d,%eax
jne    12b2 <main+0x182>
lea    0xd62(%rip),%rdi
call   1040 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1432 <main+0x302>
jmp    12b7 <main+0x187>
jmp    12bc <main+0x18c>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1268 <main+0x138>
lea    0xd34(%rip),%rdi
call   1040 <printf@plt>
movsbl -0x1a(%rbp),%eax
cmp    $0x39,%eax
jne    1342 <main+0x212>
movsbl -0x19(%rbp),%eax
cmp    $0x33,%eax
jne    1342 <main+0x212>
movsbl -0x18(%rbp),%eax
cmp    $0x33,%eax
jne    1342 <main+0x212>
movsbl -0x17(%rbp),%eax
cmp    $0x33,%eax
jne    1342 <main+0x212>
movsbl -0x16(%rbp),%eax
cmp    $0x34,%eax
jne    1342 <main+0x212>
movsbl -0x15(%rbp),%eax
cmp    $0x36,%eax
jne    1342 <main+0x212>
movsbl -0x14(%rbp),%eax
cmp    $0x2d,%eax
jne    133d <main+0x20d>
lea    0xccf(%rip),%rdi
call   1040 <printf@plt>
jmp    1342 <main+0x212>
movsbl -0x1a(%rbp),%eax
cmp    $0x35,%eax
jne    13a1 <main+0x271>
movsbl -0x19(%rbp),%eax
cmp    $0x35,%eax
jne    13a1 <main+0x271>
movsbl -0x18(%rbp),%eax
cmp    $0x35,%eax
jne    13a1 <main+0x271>
movsbl -0x17(%rbp),%eax
cmp    $0x38,%eax
jne    13a1 <main+0x271>
movsbl -0x16(%rbp),%eax
cmp    $0x33,%eax
jne    13a1 <main+0x271>
movsbl -0x15(%rbp),%eax
cmp    $0x2d,%eax
jne    139c <main+0x26c>
lea    0xc7c(%rip),%rdi
call   1040 <printf@plt>
jmp    13a1 <main+0x271>
movsbl -0x1a(%rbp),%eax
cmp    $0x34,%eax
jne    13f3 <main+0x2c3>
movsbl -0x19(%rbp),%eax
cmp    $0x32,%eax
jne    13f3 <main+0x2c3>
movsbl -0x18(%rbp),%eax
cmp    $0x31,%eax
jne    13f3 <main+0x2c3>
movsbl -0x17(%rbp),%eax
cmp    $0x30,%eax
jne    13f3 <main+0x2c3>
movsbl -0x16(%rbp),%eax
cmp    $0x2d,%eax
jne    13ee <main+0x2be>
lea    0xc38(%rip),%rdi
call   1040 <printf@plt>
jmp    13f3 <main+0x2c3>
movsbl -0x1a(%rbp),%eax
cmp    $0x30,%eax
jne    142b <main+0x2fb>
movsbl -0x19(%rbp),%eax
cmp    $0x31,%eax
jne    142b <main+0x2fb>
movsbl -0x18(%rbp),%eax
cmp    $0x2d,%eax
jne    1426 <main+0x2f6>
lea    0xc1e(%rip),%rdi
call   1040 <printf@plt>
jmp    142b <main+0x2fb>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
lea    0xeab(%rip),%rdi
lea    0x10(%rsp),%rbx
mov    %rbx,%rsi
call   1060 <scanf@plt>
mov    %rbx,%rdi
call   1040 <strlen@plt>
cmp    $0x11,%eax
jne    139e <main+0x25e>
mov    0x10(%rsp),%bl
mov    0x11(%rsp),%sil
cmp    $0x39,%bl
setne  %dl
cmp    $0x37,%sil
setne  %al
and    %dl,%al
mov    0x12(%rsp),%dl
mov    0x13(%rsp),%r13b
cmp    $0x1,%al
jne    11a7 <main+0x67>
cmp    $0x38,%dl
je     11a7 <main+0x67>
cmp    $0x2d,%r13b
jne    139e <main+0x25e>
cmp    $0x39,%dl
setne  %cl
and    %cl,%al
cmp    $0x1,%al
jne    11bd <main+0x7d>
cmp    $0x2d,%r13b
jne    139e <main+0x25e>
xor    %eax,%eax
cmp    $0x2d,%bl
sete   %al
xor    %ecx,%ecx
cmp    $0x2d,%sil
sete   %cl
add    %eax,%ecx
xor    %eax,%eax
cmp    $0x2d,%dl
sete   %al
add    %ecx,%eax
xor    %esi,%esi
cmp    $0x2d,%r13b
sete   %sil
add    %eax,%esi
mov    0x14(%rsp),%dl
mov    0x15(%rsp),%r14b
xor    %eax,%eax
cmp    $0x2d,%dl
sete   %al
add    %esi,%eax
xor    %esi,%esi
cmp    $0x2d,%r14b
sete   %sil
add    %eax,%esi
mov    0x16(%rsp),%bl
xor    %eax,%eax
cmp    $0x2d,%bl
sete   %al
add    %esi,%eax
mov    0x17(%rsp),%sil
xor    %ebp,%ebp
cmp    $0x2d,%sil
sete   %bpl
add    %eax,%ebp
mov    0x18(%rsp),%dil
xor    %eax,%eax
cmp    $0x2d,%dil
sete   %al
add    %ebp,%eax
mov    0x19(%rsp),%r8b
xor    %ebp,%ebp
cmp    $0x2d,%r8b
sete   %bpl
add    %eax,%ebp
mov    0x1a(%rsp),%r9b
xor    %eax,%eax
cmp    $0x2d,%r9b
sete   %al
add    %ebp,%eax
mov    0x1b(%rsp),%r10b
xor    %ebp,%ebp
cmp    $0x2d,%r10b
sete   %bpl
add    %eax,%ebp
mov    0x1c(%rsp),%r11b
xor    %eax,%eax
cmp    $0x2d,%r11b
sete   %al
add    %ebp,%eax
mov    0x1d(%rsp),%r12b
xor    %ebp,%ebp
cmp    $0x2d,%r12b
sete   %bpl
add    %eax,%ebp
mov    0x1e(%rsp),%cl
xor    %eax,%eax
mov    %cl,0xf(%rsp)
cmp    $0x2d,%cl
sete   %al
add    %ebp,%eax
mov    0x1f(%rsp),%cl
xor    %ebp,%ebp
mov    %cl,0xe(%rsp)
cmp    $0x2d,%cl
sete   %bpl
add    %eax,%ebp
mov    0x20(%rsp),%r15b
xor    %eax,%eax
mov    %r15b,0xd(%rsp)
cmp    $0x2d,%r15b
sete   %al
add    %ebp,%eax
cmp    $0x4,%eax
jne    139e <main+0x25e>
cmp    $0x2d,%r13b
jne    12da <main+0x19a>
cmp    $0x2d,%dl
jne    12ea <main+0x1aa>
jmp    139e <main+0x25e>
cmp    $0x2d,%dl
jne    12ea <main+0x1aa>
cmp    $0x2d,%r14b
jne    12fa <main+0x1ba>
jmp    139e <main+0x25e>
cmp    $0x2d,%r14b
jne    12fa <main+0x1ba>
cmp    $0x2d,%bl
jne    130a <main+0x1ca>
jmp    139e <main+0x25e>
cmp    $0x2d,%bl
jne    130a <main+0x1ca>
cmp    $0x2d,%sil
jne    131b <main+0x1db>
jmp    139e <main+0x25e>
cmp    $0x2d,%sil
jne    131b <main+0x1db>
cmp    $0x2d,%dil
jne    1329 <main+0x1e9>
jmp    139e <main+0x25e>
cmp    $0x2d,%dil
jne    1329 <main+0x1e9>
cmp    $0x2d,%r8b
jne    1337 <main+0x1f7>
jmp    139e <main+0x25e>
cmp    $0x2d,%r8b
jne    1337 <main+0x1f7>
cmp    $0x2d,%r9b
jne    1345 <main+0x205>
jmp    139e <main+0x25e>
cmp    $0x2d,%r9b
jne    1345 <main+0x205>
cmp    $0x2d,%r10b
jne    1353 <main+0x213>
jmp    139e <main+0x25e>
cmp    $0x2d,%r10b
jne    1353 <main+0x213>
cmp    $0x2d,%r11b
jne    1361 <main+0x221>
jmp    139e <main+0x25e>
cmp    $0x2d,%r11b
jne    1361 <main+0x221>
cmp    $0x2d,%r12b
jne    1370 <main+0x230>
jmp    139e <main+0x25e>
cmp    $0x2d,%r12b
jne    1370 <main+0x230>
cmpb   $0x2d,0xf(%rsp)
jne    1380 <main+0x240>
jmp    139e <main+0x25e>
cmpb   $0x2d,0xf(%rsp)
jne    1380 <main+0x240>
cmpb   $0x2d,0xe(%rsp)
jne    1390 <main+0x250>
jmp    139e <main+0x25e>
cmpb   $0x2d,0xe(%rsp)
jne    1390 <main+0x250>
cmpb   $0x2d,0xd(%rsp)
je     139e <main+0x25e>
jmp    13b9 <main+0x279>
cmpb   $0x2d,0xd(%rsp)
jne    13b9 <main+0x279>
cmpb   $0x2d,0x21(%rsp)
jne    13b9 <main+0x279>
mov    $0x30,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x31,%edi
call   1030 <putchar@plt>
mov    0x16(%rsp),%cl
mov    0x17(%rsp),%al
mov    0x18(%rsp),%dl
mov    0x19(%rsp),%dil
mov    0x1a(%rsp),%sil
mov    0x1b(%rsp),%bl
cmp    $0x39,%cl
jne    1429 <main+0x2e9>
cmp    $0x33,%al
jne    1429 <main+0x2e9>
cmp    $0x33,%dl
jne    1429 <main+0x2e9>
cmp    $0x33,%dil
jne    1429 <main+0x2e9>
cmp    $0x34,%sil
jne    1429 <main+0x2e9>
cmp    $0x36,%bl
jne    1429 <main+0x2e9>
cmpb   $0x2d,0x1c(%rsp)
jne    1429 <main+0x2e9>
lea    0xbf9(%rip),%rdi
call   1050 <printf@plt>
mov    0x16(%rsp),%cl
mov    0x17(%rsp),%al
mov    0x18(%rsp),%dl
mov    0x19(%rsp),%dil
mov    0x1a(%rsp),%sil
mov    0x1b(%rsp),%bl
cmp    $0x35,%cl
jne    146a <main+0x32a>
cmp    $0x35,%al
jne    146a <main+0x32a>
cmp    $0x35,%dl
jne    146a <main+0x32a>
cmp    $0x38,%dil
jne    146a <main+0x32a>
cmp    $0x33,%sil
jne    146a <main+0x32a>
cmp    $0x2d,%bl
jne    146a <main+0x32a>
lea    0xbc0(%rip),%rdi
call   1050 <printf@plt>
mov    0x16(%rsp),%cl
mov    0x17(%rsp),%al
mov    0x18(%rsp),%dl
mov    0x19(%rsp),%dil
mov    0x1a(%rsp),%sil
cmp    $0x34,%cl
jne    149c <main+0x35c>
cmp    $0x32,%al
jne    149c <main+0x35c>
cmp    $0x31,%dl
jne    149c <main+0x35c>
cmp    $0x30,%dil
jne    149c <main+0x35c>
cmp    $0x2d,%sil
jne    149c <main+0x35c>
lea    0xb92(%rip),%rdi
call   1050 <printf@plt>
mov    0x16(%rsp),%cl
mov    0x17(%rsp),%al
mov    0x18(%rsp),%dl
cmp    $0x30,%cl
jne    13a8 <main+0x268>
cmp    $0x31,%al
jne    13a8 <main+0x268>
cmp    $0x2d,%dl
jne    13a8 <main+0x268>
lea    0xb7e(%rip),%rdi
call   1050 <printf@plt>
jmp    13a8 <main+0x268>

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

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