#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 */
typedef int /*<<< orphan*/ input;

/* Variables and functions */
int checksum(unsigned short *);
int /*<<< orphan*/ fgets(char *, int, int /*<<< orphan*/);
int group_size_check(int *);
int /*<<< orphan*/ printf(char *);
unsigned short sscanf(char *, char *, int *, int *, int *, int *, int *);
int /*<<< orphan*/ stdin;
unsigned short strlen(char *);
int main() {
  char input[20];
  short unsigned int ISBN[13] = {0}, l, j, i = 0, groups = 0;
  int ISBN_grouped[5];
  fgets(input, sizeof(input), stdin);
  l = strlen(input);
  if (input[l - 1] == '\n') {
    input[l - 1] = '\0';
    l--;
  }
  if (l != 17) {
    printf("0");
    return -1;
  }
  for (j = 0; j < 17; j++) {
    if (input[j] == '-')
      continue;
    else if (input[j] >= '0' && input[j] <= '9') {
      ISBN[i] = (short unsigned int)input[j] - 48;
      i++;
    } else {
      printf("0");
      return -1;
    }
  }
  groups = sscanf(input, "%d-%d-%d-%d-%d", &ISBN_grouped[0], &ISBN_grouped[1],
                  &ISBN_grouped[2], &ISBN_grouped[3], &ISBN_grouped[4]);
  if (groups != 5 || group_size_check(ISBN_grouped) == -1 ||
      (ISBN_grouped[0] != 978 && ISBN_grouped[0] != 979) ||
      checksum(ISBN) == -1) {
    printf("0");
    return -1;
  }
  printf("1");
  switch (ISBN_grouped[2]) {
  case 933346:
    printf("\nBluebridge");
    break;
  case 55583:
    printf("\nAlyson Books");
    break;
  case 4210:
    printf("\nFUNimation Productions, Ltd.");
    break;
  case 01:
    printf("\nPyramid Books");
    break;
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x40(%rbp),%rdi
xor    %esi,%esi
mov    $0x1a,%edx
call   1070 <memset@plt>
movw   $0x0,-0x46(%rbp)
movw   $0x0,-0x48(%rbp)
lea    -0x20(%rbp),%rdi
mov    0x2e42(%rip),%rax
mov    (%rax),%edx
mov    $0x14,%esi
call   1080 <fgets@plt>
lea    -0x20(%rbp),%rdi
call   1030 <strlen@plt>
mov    %ax,-0x42(%rbp)
movzwl -0x42(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0xa,%eax
jne    11f0 <main+0x80>
movzwl -0x42(%rbp),%eax
sub    $0x1,%eax
cltq
movb   $0x0,-0x20(%rbp,%rax,1)
mov    -0x42(%rbp),%ax
add    $0xffff,%ax
mov    %ax,-0x42(%rbp)
movzwl -0x42(%rbp),%eax
cmp    $0x11,%eax
je     1215 <main+0xa5>
lea    0xdfc(%rip),%rdi
call   1050 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1400 <main+0x290>
movw   $0x0,-0x44(%rbp)
movzwl -0x44(%rbp),%eax
cmp    $0x11,%eax
jge    12c2 <main+0x152>
movzwl -0x44(%rbp),%eax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x2d,%eax
jne    123f <main+0xcf>
jmp    12b1 <main+0x141>
movzwl -0x44(%rbp),%eax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x30,%eax
jl     128f <main+0x11f>
movzwl -0x44(%rbp),%eax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x39,%eax
jg     128f <main+0x11f>
movzwl -0x44(%rbp),%eax
movsbl -0x20(%rbp,%rax,1),%eax
movzwl %ax,%eax
sub    $0x30,%eax
mov    %ax,%cx
movzwl -0x46(%rbp),%eax
mov    %cx,-0x40(%rbp,%rax,2)
mov    -0x46(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x46(%rbp)
jmp    12a7 <main+0x137>
lea    0xd6a(%rip),%rdi
call   1050 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1400 <main+0x290>
jmp    12ac <main+0x13c>
jmp    12b1 <main+0x141>
mov    -0x44(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x44(%rbp)
jmp    121b <main+0xab>
lea    -0x20(%rbp),%rdi
lea    -0x60(%rbp),%rdx
lea    -0x60(%rbp),%rcx
add    $0x4,%rcx
lea    -0x60(%rbp),%r8
add    $0x8,%r8
lea    -0x60(%rbp),%r9
add    $0xc,%r9
lea    -0x60(%rbp),%rax
add    $0x10,%rax
lea    0xd11(%rip),%rsi
mov    %rax,(%rsp)
call   1090 <sscanf@plt>
mov    %ax,-0x48(%rbp)
movzwl -0x48(%rbp),%eax
cmp    $0x5,%eax
jne    1349 <main+0x1d9>
lea    -0x60(%rbp),%rdi
call   1040 <group_size_check@plt>
cmp    $0xffffffff,%eax
je     1349 <main+0x1d9>
cmpl   $0x3d2,-0x60(%rbp)
je     1337 <main+0x1c7>
cmpl   $0x3d3,-0x60(%rbp)
jne    1349 <main+0x1d9>
lea    -0x40(%rbp),%rdi
call   1060 <checksum@plt>
cmp    $0xffffffff,%eax
jne    1361 <main+0x1f1>
lea    0xcb0(%rip),%rdi
call   1050 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1400 <main+0x290>
lea    0xca9(%rip),%rdi
call   1050 <printf@plt>
mov    -0x58(%rbp),%eax
mov    %eax,-0x64(%rbp)
sub    $0x1,%eax
je     13ed <main+0x27d>
jmp    1381 <main+0x211>
mov    -0x64(%rbp),%eax
sub    $0x1072,%eax
je     13dc <main+0x26c>
jmp    1394 <main+0x224>
mov    -0x64(%rbp),%eax
sub    $0xd91f,%eax
je     13cb <main+0x25b>
jmp    13a7 <main+0x237>
mov    -0x64(%rbp),%eax
sub    $0xe3de2,%eax
jne    13f9 <main+0x289>
jmp    13ba <main+0x24a>
lea    0xc52(%rip),%rdi
call   1050 <printf@plt>
jmp    13f9 <main+0x289>
lea    0xc4d(%rip),%rdi
call   1050 <printf@plt>
jmp    13f9 <main+0x289>
lea    0xc4a(%rip),%rdi
call   1050 <printf@plt>
jmp    13f9 <main+0x289>
lea    0xc57(%rip),%rdi
call   1050 <printf@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x70,%rsp
xorps  %xmm0,%xmm0
movups %xmm0,0x5a(%rsp)
movaps %xmm0,0x50(%rsp)
mov    0x2e5f(%rip),%rax
mov    (%rax),%edx
lea    0x30(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x14,%esi
call   1080 <fgets@plt>
mov    %rbx,%rdi
call   1040 <strlen@plt>
movzwl %ax,%ecx
cmpb   $0xa,-0x1(%rcx,%rbx,1)
jne    11b7 <main+0x47>
movb   $0x0,0x2f(%rsp,%rcx,1)
add    $0xffffffff,%eax
cmp    $0x11,%ax
jne    12b9 <main+0x149>
xor    %eax,%eax
xor    %ecx,%ecx
jmp    11e5 <main+0x75>
nopw   0x0(%rax,%rax,1)
movzwl %dx,%edx
add    $0xffffffd0,%edx
movzwl %cx,%esi
mov    %dx,0x50(%rsp,%rsi,2)
add    $0x1,%ecx
add    $0x2,%rax
movzbl 0x30(%rsp,%rax,1),%edx
cmp    $0x2d,%dx
je     120e <main+0x9e>
lea    -0x30(%rdx),%esi
cmp    $0x9,%sil
ja     12b9 <main+0x149>
movzwl %dx,%edx
add    $0xffffffd0,%edx
movzwl %cx,%esi
mov    %dx,0x50(%rsp,%rsi,2)
add    $0x1,%ecx
cmp    $0x10,%rax
je     122d <main+0xbd>
movzbl 0x31(%rsp,%rax,1),%edx
cmp    $0x2d,%dx
je     11e1 <main+0x71>
lea    -0x30(%rdx),%esi
cmp    $0x9,%sil
jbe    11d0 <main+0x60>
jmp    12b9 <main+0x149>
lea    0x14(%rsp),%rcx
lea    0x18(%rsp),%r8
lea    0x1c(%rsp),%r9
lea    0x20(%rsp),%rax
mov    %rax,(%rsp)
lea    0xdb4(%rip),%rsi
lea    0x30(%rsp),%rdi
lea    0x10(%rsp),%rdx
call   1090 <sscanf@plt>
cmp    $0x5,%ax
jne    12b9 <main+0x149>
lea    0x10(%rsp),%rdi
call   1050 <group_size_check@plt>
cmp    $0xffffffff,%eax
je     12b9 <main+0x149>
mov    0x10(%rsp),%eax
and    $0xfffffffe,%eax
cmp    $0x3d2,%eax
jne    12b9 <main+0x149>
lea    0x50(%rsp),%rdi
call   1070 <checksum@plt>
cmp    $0xffffffff,%eax
je     12b9 <main+0x149>
mov    $0x31,%edi
call   1030 <putchar@plt>
xor    %ebx,%ebx
mov    0x18(%rsp),%eax
cmp    $0xd91e,%eax
jg     12d0 <main+0x160>
cmp    $0x1,%eax
je     12e7 <main+0x177>
cmp    $0x1072,%eax
jne    12c8 <main+0x158>
lea    0xd72(%rip),%rdi
jmp    12f7 <main+0x187>
mov    $0x30,%edi
call   1030 <putchar@plt>
mov    $0xffffffff,%ebx
mov    %ebx,%eax
add    $0x70,%rsp
pop    %rbx
ret
cmp    $0xd91f,%eax
je     12f0 <main+0x180>
cmp    $0xe3de2,%eax
jne    12c8 <main+0x158>
lea    0xd2a(%rip),%rdi
jmp    12f7 <main+0x187>
lea    0xd59(%rip),%rdi
jmp    12f7 <main+0x187>
lea    0xd24(%rip),%rdi
call   1060 <printf@plt>
jmp    12c8 <main+0x158>

LLVM IR (-O0):
@stdin = global i32 0
@.str = [2 x i8] c"0\00"
@.str.1 = [15 x i8] c"%d-%d-%d-%d-%d\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 [13 x i16]
%4 = alloca i16
%5 = alloca i16
%6 = alloca i16
%7 = alloca i16
%8 = alloca [5 x i32]
store i32 0, i32* %1
%9 = bitcast [13 x i16]* %3 to i8*
store i16 0, i16* %6
store i16 0, i16* %7
%10 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%11 = load i32, i32* @stdin
%12 = call i32 @fgets(i8* %10, i32 20, i32 %11)
%13 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%14 = call zeroext i16 @strlen(i8* %13)
store i16 %14, i16* %4
%15 = load i16, i16* %4
%16 = zext i16 %15 to i32
%17 = sub nsw i32 %16, 1
%18 = sext i32 %17 to i64
%19 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 %18
%20 = load i8, i8* %19
%21 = sext i8 %20 to i32
%22 = icmp eq i32 %21, 10
br i1 %22, label %23, label %31
23: ; preds = %0
%24 = load i16, i16* %4
%25 = zext i16 %24 to i32
%26 = sub nsw i32 %25, 1
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 %27
store i8 0, i8* %28
%29 = load i16, i16* %4
%30 = add i16 %29, -1
store i16 %30, i16* %4
br label %31
31: ; preds = %23, %0
%32 = load i16, i16* %4
%33 = zext i16 %32 to i32
%34 = icmp ne i32 %33, 17
br i1 %34, label %35, label %37
35: ; preds = %31
%36 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32 -1, i32* %1
br label %127
37: ; preds = %31
store i16 0, i16* %5
br label %38
38: ; preds = %82, %37
%39 = load i16, i16* %5
%40 = zext i16 %39 to i32
%41 = icmp slt i32 %40, 17
br i1 %41, label %42, label %85
42: ; preds = %38
%43 = load i16, i16* %5
%44 = zext i16 %43 to i64
%45 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 %44
%46 = load i8, i8* %45
%47 = sext i8 %46 to i32
%48 = icmp eq i32 %47, 45
br i1 %48, label %49, label %50
49: ; preds = %42
br label %82
50: ; preds = %42
%51 = load i16, i16* %5
%52 = zext i16 %51 to i64
%53 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 %52
%54 = load i8, i8* %53
%55 = sext i8 %54 to i32
%56 = icmp sge i32 %55, 48
br i1 %56, label %57, label %78
57: ; preds = %50
%58 = load i16, i16* %5
%59 = zext i16 %58 to i64
%60 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 %59
%61 = load i8, i8* %60
%62 = sext i8 %61 to i32
%63 = icmp sle i32 %62, 57
br i1 %63, label %64, label %78
64: ; preds = %57
%65 = load i16, i16* %5
%66 = zext i16 %65 to i64
%67 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 %66
%68 = load i8, i8* %67
%69 = sext i8 %68 to i16
%70 = zext i16 %69 to i32
%71 = sub nsw i32 %70, 48
%72 = trunc i32 %71 to i16
%73 = load i16, i16* %6
%74 = zext i16 %73 to i64
%75 = getelementptr inbounds [13 x i16], [13 x i16]* %3, i64 0, i64 %74
store i16 %72, i16* %75
%76 = load i16, i16* %6
%77 = add i16 %76, 1
store i16 %77, i16* %6
br label %80
78: ; preds = %57, %50
%79 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32 -1, i32* %1
br label %127
80: ; preds = %64
br label %81
81: ; preds = %80
br label %82
82: ; preds = %81, %49
%83 = load i16, i16* %5
%84 = add i16 %83, 1
store i16 %84, i16* %5
br label %38
85: ; preds = %38
%86 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%87 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 0
%88 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 1
%89 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 2
%90 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 3
%91 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 4
%92 = call zeroext i16 @sscanf(i8* %86, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.1, i64 0, i64 0), i32* %87, i32* %88, i32* %89, i32* %90, i32* %91)
store i16 %92, i16* %7
%93 = load i16, i16* %7
%94 = zext i16 %93 to i32
%95 = icmp ne i32 %94, 5
br i1 %95, label %112, label %96
96: ; preds = %85
%97 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 0
%98 = call i32 @group_size_check(i32* %97)
%99 = icmp eq i32 %98, -1
br i1 %99, label %112, label %100
100: ; preds = %96
%101 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 0
%102 = load i32, i32* %101
%103 = icmp ne i32 %102, 978
br i1 %103, label %104, label %108
104: ; preds = %100
%105 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 0
%106 = load i32, i32* %105
%107 = icmp ne i32 %106, 979
br i1 %107, label %112, label %108
108: ; preds = %104, %100
%109 = getelementptr inbounds [13 x i16], [13 x i16]* %3, i64 0, i64 0
%110 = call i32 @checksum(i16* %109)
%111 = icmp eq i32 %110, -1
br i1 %111, label %112, label %114
112: ; preds = %108, %104, %96, %85
%113 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32 -1, i32* %1
br label %127
114: ; preds = %108
%115 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%116 = getelementptr inbounds [5 x i32], [5 x i32]* %8, i64 0, i64 2
%117 = load i32, i32* %116
switch i32 %117, label %126 [
i32 933346, label %118
i32 55583, label %120
i32 4210, label %122
i32 1, label %124
]
118: ; preds = %114
%119 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
br label %126
120: ; preds = %114
%121 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.4, i64 0, i64 0))
br label %126
122: ; preds = %114
%123 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.5, i64 0, i64 0))
br label %126
124: ; preds = %114
%125 = call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0))
br label %126
126: ; preds = %114, %124, %122, %120, %118
store i32 0, i32* %1
br label %127
127: ; preds = %126, %112, %78, %35
%128 = load i32, i32* %1
ret i32 %128
}

LLVM IR (-O2):
@stdin = global i32 0
@.str.1 = [15 x i8] c"%d-%d-%d-%d-%d\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 = alloca [13 x i16]
%3 = alloca [5 x i32]
%4 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 0
%5 = bitcast [13 x i16]* %2 to i8*
%6 = bitcast [5 x i32]* %3 to i8*
%7 = load i32, i32* @stdin
%8 = call i32 @fgets(i8* %4, i32 20, i32 %7)
%9 = call zeroext i16 @strlen(i8* %4)
%10 = zext i16 %9 to i64
%11 = add nsw i64 %10, -1
%12 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 %11
%13 = load i8, i8* %12
%14 = icmp eq i8 %13, 10
br i1 %14, label %15, label %17
15: ; preds = %0
store i8 0, i8* %12
%16 = add i16 %9, -1
br label %17
17: ; preds = %15, %0
%18 = phi i16 [ %16, %15 ], [ %9, %0 ]
%19 = icmp eq i16 %18, 17
br i1 %19, label %22, label %20
20: ; preds = %17
%21 = call i32 @putchar(i32 48)
br label %91
22: ; preds = %17, %56
%23 = phi i64 [ %58, %56 ], [ 0, %17 ]
%24 = phi i16 [ %57, %56 ], [ 0, %17 ]
%25 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 %23
%26 = load i8, i8* %25
%27 = icmp eq i8 %26, 45
br i1 %27, label %39, label %28
28: ; preds = %22
%29 = add i8 %26, -48
%30 = icmp ult i8 %29, 10
br i1 %30, label %31, label %37
31: ; preds = %28
%32 = zext i8 %26 to i16
%33 = add nsw i16 %32, -48
%34 = zext i16 %24 to i64
%35 = getelementptr inbounds [13 x i16], [13 x i16]* %2, i64 0, i64 %34
store i16 %33, i16* %35
%36 = add i16 %24, 1
br label %39
37: ; preds = %47, %28
%38 = call i32 @putchar(i32 48)
br label %91
39: ; preds = %22, %31
%40 = phi i16 [ %24, %22 ], [ %36, %31 ]
%41 = or i64 %23, 1
%42 = icmp eq i64 %41, 17
br i1 %42, label %59, label %43
43: ; preds = %39
%44 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 %41
%45 = load i8, i8* %44
%46 = icmp eq i8 %45, 45
br i1 %46, label %56, label %47
47: ; preds = %43
%48 = add i8 %45, -48
%49 = icmp ult i8 %48, 10
br i1 %49, label %50, label %37
50: ; preds = %47
%51 = zext i8 %45 to i16
%52 = add nsw i16 %51, -48
%53 = zext i16 %40 to i64
%54 = getelementptr inbounds [13 x i16], [13 x i16]* %2, i64 0, i64 %53
store i16 %52, i16* %54
%55 = add i16 %40, 1
br label %56
56: ; preds = %50, %43
%57 = phi i16 [ %40, %43 ], [ %55, %50 ]
%58 = add nuw nsw i64 %23, 2
br label %22
59: ; preds = %39
%60 = getelementptr inbounds [5 x i32], [5 x i32]* %3, i64 0, i64 0
%61 = getelementptr inbounds [5 x i32], [5 x i32]* %3, i64 0, i64 1
%62 = getelementptr inbounds [5 x i32], [5 x i32]* %3, i64 0, i64 2
%63 = getelementptr inbounds [5 x i32], [5 x i32]* %3, i64 0, i64 3
%64 = getelementptr inbounds [5 x i32], [5 x i32]* %3, i64 0, i64 4
%65 = call zeroext i16 @sscanf(i8* %4, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.1, i64 0, i64 0), i32* %60, i32* %61, i32* %62, i32* %63, i32* %64)
%66 = icmp eq i16 %65, 5
br i1 %66, label %67, label %78
67: ; preds = %59
%68 = call i32 @group_size_check(i32* %60)
%69 = icmp eq i32 %68, -1
br i1 %69, label %78, label %70
70: ; preds = %67
%71 = load i32, i32* %60
%72 = and i32 %71, -2
%73 = icmp eq i32 %72, 978
br i1 %73, label %74, label %78
74: ; preds = %70
%75 = getelementptr inbounds [13 x i16], [13 x i16]* %2, i64 0, i64 0
%76 = call i32 @checksum(i16* %75)
%77 = icmp eq i32 %76, -1
br i1 %77, label %78, label %80
78: ; preds = %70, %74, %67, %59
%79 = call i32 @putchar(i32 48)
br label %91
80: ; preds = %74
%81 = call i32 @putchar(i32 49)
%82 = load i32, i32* %62
switch i32 %82, label %91 [
i32 933346, label %83
i32 55583, label %85
i32 4210, label %87
i32 1, label %89
]
83: ; preds = %80
%84 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
br label %91
85: ; preds = %80
%86 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.4, i64 0, i64 0))
br label %91
87: ; preds = %80
%88 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.5, i64 0, i64 0))
br label %91
89: ; preds = %80
%90 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0))
br label %91
91: ; preds = %83, %85, %87, %89, %80, %78, %37, %20
%92 = phi i32 [ -1, %20 ], [ -1, %37 ], [ -1, %78 ], [ 0, %80 ], [ 0, %89 ], [ 0, %87 ], [ 0, %85 ], [ 0, %83 ]
ret i32 %92
}