#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[18];
  int temp[14];
  int kushta = 0;
  int i, l, j, a = 0, b = 0, c = 0, d = 0, sum = 0, x = 0;
  scanf("%s", isbn);
  l = strlen(isbn);
  for (i = 0; i < l; i++) {
    if (d == 2) {
      for (x = i - 1; isbn[x] != '-'; x++) {
        kushta = kushta * 10 + (isbn[x] - 48);
      }
      d++;
    }
    if (isbn[i] == '-') {
      d++;
      for (j = i; j < l; j++) {
        isbn[j] = isbn[j + 1];
      }
    }
  }
  l = l - 4;
  if (l != 13)
    a = 1;
  if (isbn[0] != '9')
    b = 1;
  if (isbn[1] != '7')
    b = 1;
  if (isbn[2] != '8' && isbn[2] != '9')
    b = 1;
  for (i = 0; i < l; i++) {
    if (isbn[i] == '0')
      temp[i] = 0;
    if (isbn[i] == '1')
      temp[i] = 1;
    if (isbn[i] == '2')
      temp[i] = 2;
    if (isbn[i] == '3')
      temp[i] = 3;
    if (isbn[i] == '4')
      temp[i] = 4;
    if (isbn[i] == '5')
      temp[i] = 5;
    if (isbn[i] == '6')
      temp[i] = 6;
    if (isbn[i] == '7')
      temp[i] = 7;
    if (isbn[i] == '8')
      temp[i] = 8;
    if (isbn[i] == '9')
      temp[i] = 9;
  }
  for (i = 0; i < l - 1; i += 2)
    sum = sum + temp[i];
  for (i = 1; i < l - 1; i += 2)
    sum = sum + 3 * temp[i];
  if ((10 - sum % 10) != temp[12])
    c = 1;
  if (a == 1 || b == 1 || c == 1)
    printf("0");
  else {
    printf("1");
    if (kushta == 933346)
      printf("\nBluebridge");
    if (kushta == 55583)
      printf("\nAlyson Books");
    if (kushta == 4210)
      printf("\nFUNimation Productions, Ltd.");
    if (kushta == 01)
      printf("\nPyramid Books");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x64(%rbp)
movl   $0x0,-0x74(%rbp)
movl   $0x0,-0x78(%rbp)
movl   $0x0,-0x7c(%rbp)
movl   $0x0,-0x80(%rbp)
movl   $0x0,-0x84(%rbp)
movl   $0x0,-0x88(%rbp)
lea    -0x20(%rbp),%rsi
lea    0xe7c(%rip),%rdi
call   1050 <scanf@plt>
lea    -0x20(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x6c(%rbp)
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    126f <main+0x13f>
cmpl   $0x2,-0x80(%rbp)
jne    1208 <main+0xd8>
mov    -0x68(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x88(%rbp)
movslq -0x88(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x2d,%eax
je     11ff <main+0xcf>
imul   $0xa,-0x64(%rbp),%eax
movslq -0x88(%rbp),%rcx
movsbl -0x20(%rbp,%rcx,1),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x64(%rbp)
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
jmp    11be <main+0x8e>
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x2d,%eax
jne    125c <main+0x12c>
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    1257 <main+0x127>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x70(%rbp),%rax
mov    %cl,-0x20(%rbp,%rax,1)
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    1229 <main+0xf9>
jmp    125c <main+0x12c>
jmp    1261 <main+0x131>
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    119c <main+0x6c>
mov    -0x6c(%rbp),%eax
sub    $0x4,%eax
mov    %eax,-0x6c(%rbp)
cmpl   $0xd,-0x6c(%rbp)
je     1289 <main+0x159>
movl   $0x1,-0x74(%rbp)
movsbl -0x20(%rbp),%eax
cmp    $0x39,%eax
je     129d <main+0x16d>
movl   $0x1,-0x78(%rbp)
movsbl -0x1f(%rbp),%eax
cmp    $0x37,%eax
je     12b1 <main+0x181>
movl   $0x1,-0x78(%rbp)
movsbl -0x1e(%rbp),%eax
cmp    $0x38,%eax
je     12d2 <main+0x1a2>
movsbl -0x1e(%rbp),%eax
cmp    $0x39,%eax
je     12d2 <main+0x1a2>
movl   $0x1,-0x78(%rbp)
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    1424 <main+0x2f4>
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x30,%eax
jne    1303 <main+0x1d3>
movslq -0x68(%rbp),%rax
movl   $0x0,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x31,%eax
jne    1321 <main+0x1f1>
movslq -0x68(%rbp),%rax
movl   $0x1,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x32,%eax
jne    133f <main+0x20f>
movslq -0x68(%rbp),%rax
movl   $0x2,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x33,%eax
jne    135d <main+0x22d>
movslq -0x68(%rbp),%rax
movl   $0x3,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x34,%eax
jne    137b <main+0x24b>
movslq -0x68(%rbp),%rax
movl   $0x4,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x35,%eax
jne    1399 <main+0x269>
movslq -0x68(%rbp),%rax
movl   $0x5,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x36,%eax
jne    13b7 <main+0x287>
movslq -0x68(%rbp),%rax
movl   $0x6,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x37,%eax
jne    13d5 <main+0x2a5>
movslq -0x68(%rbp),%rax
movl   $0x7,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x38,%eax
jne    13f3 <main+0x2c3>
movslq -0x68(%rbp),%rax
movl   $0x8,-0x60(%rbp,%rax,4)
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x39,%eax
jne    1411 <main+0x2e1>
movslq -0x68(%rbp),%rax
movl   $0x9,-0x60(%rbp,%rax,4)
jmp    1416 <main+0x2e6>
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    12d9 <main+0x1a9>
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    -0x6c(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    145e <main+0x32e>
mov    -0x84(%rbp),%eax
movslq -0x68(%rbp),%rcx
add    -0x60(%rbp,%rcx,4),%eax
mov    %eax,-0x84(%rbp)
mov    -0x68(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x68(%rbp)
jmp    142b <main+0x2fb>
movl   $0x1,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    -0x6c(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    149b <main+0x36b>
mov    -0x84(%rbp),%eax
movslq -0x68(%rbp),%rcx
imul   $0x3,-0x60(%rbp,%rcx,4),%ecx
add    %ecx,%eax
mov    %eax,-0x84(%rbp)
mov    -0x68(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x68(%rbp)
jmp    1465 <main+0x335>
mov    -0x84(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    $0xa,%eax
sub    %edx,%eax
cmp    -0x30(%rbp),%eax
je     14c0 <main+0x390>
movl   $0x1,-0x7c(%rbp)
cmpl   $0x1,-0x74(%rbp)
je     14de <main+0x3ae>
cmpl   $0x1,-0x78(%rbp)
je     14de <main+0x3ae>
cmpl   $0x1,-0x7c(%rbp)
jne    14ef <main+0x3bf>
lea    0xb1e(%rip),%rdi
call   1040 <printf@plt>
jmp    1561 <main+0x431>
lea    0xb0f(%rip),%rdi
call   1040 <printf@plt>
cmpl   $0xe3de2,-0x64(%rbp)
jne    1514 <main+0x3e4>
lea    0xaf8(%rip),%rdi
call   1040 <printf@plt>
cmpl   $0xd91f,-0x64(%rbp)
jne    152d <main+0x3fd>
lea    0xaeb(%rip),%rdi
call   1040 <printf@plt>
cmpl   $0x1072,-0x64(%rbp)
jne    1546 <main+0x416>
lea    0xae0(%rip),%rdi
call   1040 <printf@plt>
cmpl   $0x1,-0x64(%rbp)
jne    155c <main+0x42c>
lea    0xae8(%rip),%rdi
call   1040 <printf@plt>
jmp    1561 <main+0x431>
xor    %eax,%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
lea    0xeab(%rip),%rdi
mov    %rsp,%r14
mov    %r14,%rsi
call   1060 <scanf@plt>
mov    %r14,%rdi
call   1040 <strlen@plt>
xor    %r8d,%r8d
mov    $0x0,%r13d
test   %eax,%eax
jle    1319 <main+0x1d9>
mov    %eax,%edx
lea    -0x20(%rdx),%r9
xor    %ebp,%ebp
mov    %rdx,%r15
mov    %r14,%rsi
xor    %r10d,%r10d
xor    %r13d,%r13d
jmp    11a9 <main+0x69>
nop
add    $0x1,%rbp
add    $0x1,%rsi
add    $0xffffffffffffffff,%r9
add    $0xffffffffffffffff,%r15
cmp    %rdx,%rbp
je     1319 <main+0x1d9>
cmp    $0x2,%r10d
je     11e0 <main+0xa0>
cmpb   $0x2d,(%rsp,%rbp,1)
jne    1190 <main+0x50>
mov    %rdx,%r11
sub    %rbp,%r11
add    $0x1,%r10d
mov    %rbp,%rbx
cmp    $0x8,%r11
jb     1300 <main+0x1c0>
cmp    $0x20,%r11
jae    121e <main+0xde>
xor    %ecx,%ecx
jmp    12bb <main+0x17b>
nopl   0x0(%rax)
mov    -0x1(%rbp,%r14,1),%bl
mov    $0x3,%r10d
cmp    $0x2d,%bl
je     11af <main+0x6f>
mov    %rsi,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsbl %bl,%edi
lea    0x0(%r13,%r13,4),%ebx
lea    (%rdi,%rbx,2),%r13d
add    $0xffffffd0,%r13d
movzbl (%rcx),%ebx
add    $0x1,%rcx
cmp    $0x2d,%bl
jne    1200 <main+0xc0>
jmp    11af <main+0x6f>
lea    -0x20(%r11),%rcx
mov    %rcx,%r12
shr    $0x5,%r12
add    $0x1,%r12
cmp    $0x20,%rcx
jae    1237 <main+0xf7>
xor    %ebx,%ebx
jmp    1285 <main+0x145>
mov    %r9,%rcx
shr    $0x5,%rcx
add    $0x1,%rcx
and    $0xfffffffffffffffe,%rcx
xor    %ebx,%ebx
nopl   0x0(%rax,%rax,1)
movdqu 0x1(%rsi,%rbx,1),%xmm0
movdqu 0x11(%rsi,%rbx,1),%xmm1
movups 0x21(%rsi,%rbx,1),%xmm2
movups 0x31(%rsi,%rbx,1),%xmm3
movdqu %xmm0,(%rsi,%rbx,1)
movdqu %xmm1,0x10(%rsi,%rbx,1)
movups %xmm2,0x20(%rsi,%rbx,1)
movups %xmm3,0x30(%rsi,%rbx,1)
add    $0x40,%rbx
add    $0xfffffffffffffffe,%rcx
jne    1250 <main+0x110>
mov    %r11,%rcx
and    $0xffffffffffffffe0,%rcx
test   $0x1,%r12b
je     12ac <main+0x16c>
add    %rbp,%rbx
movdqu 0x1(%rsp,%rbx,1),%xmm0
movdqu 0x11(%rsp,%rbx,1),%xmm1
movdqu %xmm0,(%rsp,%rbx,1)
movdqu %xmm1,0x10(%rsp,%rbx,1)
cmp    %rcx,%r11
je     1190 <main+0x50>
test   $0x18,%r11b
je     12ef <main+0x1af>
mov    %r15,%rdi
and    $0xfffffffffffffff8,%rdi
mov    %r11,%r12
and    $0xfffffffffffffff8,%r12
lea    (%r12,%rbp,1),%rbx
nopl   (%rax)
mov    0x1(%rsi,%rcx,1),%r14
mov    %r14,(%rsi,%rcx,1)
add    $0x8,%rcx
cmp    %rcx,%rdi
jne    12d0 <main+0x190>
cmp    %r12,%r11
mov    %rsp,%r14
jne    1300 <main+0x1c0>
jmp    1190 <main+0x50>
add    %rbp,%rcx
mov    %rcx,%rbx
cs nopw 0x0(%rax,%rax,1)
nop
movzbl 0x1(%rsp,%rbx,1),%ecx
mov    %cl,(%rsp,%rbx,1)
lea    0x1(%rbx),%rcx
mov    %rcx,%rbx
cmp    %rcx,%rdx
jne    1300 <main+0x1c0>
jmp    1190 <main+0x50>
lea    -0x4(%rax),%ebp
mov    (%rsp),%cl
mov    0x1(%rsp),%bl
mov    %ecx,%esi
xor    $0x39,%sil
xor    $0x37,%bl
mov    0x2(%rsp),%dl
and    $0xfe,%dl
xor    $0x38,%dl
or     %bl,%dl
or     %sil,%dl
setne  %r9b
cmp    $0x5,%eax
jl     1503 <main+0x3c3>
mov    %ebp,%esi
add    $0xffffffffffffffff,%rsi
xor    %edi,%edi
add    $0xd0,%cl
cmp    $0x9,%cl
ja     135f <main+0x21f>
movzbl %cl,%ecx
mov    %ecx,0x20(%rsp,%rdi,4)
cmp    %rdi,%rsi
je     136f <main+0x22f>
movzbl 0x1(%rsp,%rdi,1),%ecx
add    $0x1,%rdi
jmp    1350 <main+0x210>
xor    %r8d,%r8d
cmp    $0x6,%eax
jl     1503 <main+0x3c3>
lea    -0x5(%rax),%ecx
mov    %ecx,%ecx
cmp    $0x3,%rcx
mov    $0x2,%esi
cmovae %rcx,%rsi
add    $0xffffffffffffffff,%rsi
cmp    $0x10,%rsi
jae    13a1 <main+0x261>
xor    %edi,%edi
xor    %r8d,%r8d
jmp    1420 <main+0x2e0>
shr    %rsi
add    $0x1,%rsi
mov    %esi,%edx
and    $0x7,%edx
test   %rdx,%rdx
mov    $0x8,%edi
cmovne %rdx,%rdi
sub    %rdi,%rsi
lea    (%rsi,%rsi,1),%rdi
pxor   %xmm0,%xmm0
xor    %ebx,%ebx
pxor   %xmm1,%xmm1
nopw   0x0(%rax,%rax,1)
movaps 0x20(%rsp,%rbx,8),%xmm2
movaps 0x40(%rsp,%rbx,8),%xmm3
shufps $0x88,0x30(%rsp,%rbx,8),%xmm2
shufps $0x88,0x50(%rsp,%rbx,8),%xmm3
paddd  %xmm2,%xmm0
paddd  %xmm3,%xmm1
add    $0x8,%rbx
cmp    %rbx,%rsi
jne    13d0 <main+0x290>
paddd  %xmm0,%xmm1
pshufd $0xee,%xmm1,%xmm0
paddd  %xmm1,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%r8d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    0x20(%rsp,%rdi,4),%r8d
add    $0x2,%rdi
cmp    %rcx,%rdi
jb     1420 <main+0x2e0>
cmp    $0x7,%eax
jl     1503 <main+0x3c3>
cmp    $0x4,%rcx
mov    $0x3,%edi
cmovae %rcx,%rdi
add    $0xfffffffffffffffe,%rdi
mov    $0x1,%eax
cmp    $0x10,%rdi
jb     14f0 <main+0x3b0>
shr    %rdi
add    $0x1,%rdi
mov    %edi,%eax
and    $0x7,%eax
test   %rax,%rax
mov    $0x8,%edx
cmovne %rax,%rdx
sub    %rdx,%rdi
lea    (%rdi,%rdi,1),%rax
add    $0x1,%rax
movd   %r8d,%xmm1
pxor   %xmm0,%xmm0
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm1,%xmm2
movups 0x24(%rsp,%rsi,8),%xmm1
movups 0x34(%rsp,%rsi,8),%xmm3
shufps $0x88,%xmm3,%xmm1
movdqa %xmm0,%xmm3
movups 0x44(%rsp,%rsi,8),%xmm0
movups 0x54(%rsp,%rsi,8),%xmm4
shufps $0x88,%xmm4,%xmm0
paddd  %xmm1,%xmm2
paddd  %xmm1,%xmm1
paddd  %xmm2,%xmm1
paddd  %xmm0,%xmm3
paddd  %xmm0,%xmm0
paddd  %xmm3,%xmm0
add    $0x8,%rsi
cmp    %rsi,%rdi
jne    1490 <main+0x350>
paddd  %xmm1,%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%r8d
mov    0x20(%rsp,%rax,4),%edx
lea    (%rdx,%rdx,2),%edx
add    %edx,%r8d
add    $0x2,%rax
cmp    %rcx,%rax
jb     14f0 <main+0x3b0>
cmp    $0xd,%ebp
setne  %al
or     %r9b,%al
jne    1560 <main+0x420>
movslq %r8d,%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    0x50(%rsp),%ecx
jne    1560 <main+0x420>
mov    $0x31,%edi
call   1030 <putchar@plt>
cmp    $0xd91e,%r13d
jg     156c <main+0x42c>
cmp    $0x1,%r13d
je     1587 <main+0x447>
cmp    $0x1072,%r13d
jne    159c <main+0x45c>
lea    0xabf(%rip),%rdi
jmp    1597 <main+0x457>
mov    $0x30,%edi
call   1030 <putchar@plt>
jmp    159c <main+0x45c>
cmp    $0xd91f,%r13d
je     1590 <main+0x450>
cmp    $0xe3de2,%r13d
jne    159c <main+0x45c>
lea    0xa7e(%rip),%rdi
jmp    1597 <main+0x457>
lea    0xaad(%rip),%rdi
jmp    1597 <main+0x457>
lea    0xa78(%rip),%rdi
call   1050 <printf@plt>
xor    %eax,%eax
add    $0x58,%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 = [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 [18 x i8]
%3 = alloca [14 x i32]
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %4
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %10
store i32 0, i32* %11
store i32 0, i32* %12
store i32 0, i32* %13
%14 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 0
%15 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %14)
%16 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 0
%17 = call i32 @strlen(i8* %16)
store i32 %17, i32* %6
store i32 0, i32* %5
br label %18
18: ; preds = %80, %0
%19 = load i32, i32* %5
%20 = load i32, i32* %6
%21 = icmp slt i32 %19, %20
br i1 %21, label %22, label %83
22: ; preds = %18
%23 = load i32, i32* %11
%24 = icmp eq i32 %23, 2
br i1 %24, label %25, label %51
25: ; preds = %22
%26 = load i32, i32* %5
%27 = sub nsw i32 %26, 1
store i32 %27, i32* %13
br label %28
28: ; preds = %45, %25
%29 = load i32, i32* %13
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %30
%32 = load i8, i8* %31
%33 = sext i8 %32 to i32
%34 = icmp ne i32 %33, 45
br i1 %34, label %35, label %48
35: ; preds = %28
%36 = load i32, i32* %4
%37 = mul nsw i32 %36, 10
%38 = load i32, i32* %13
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %39
%41 = load i8, i8* %40
%42 = sext i8 %41 to i32
%43 = sub nsw i32 %42, 48
%44 = add nsw i32 %37, %43
store i32 %44, i32* %4
br label %45
45: ; preds = %35
%46 = load i32, i32* %13
%47 = add nsw i32 %46, 1
store i32 %47, i32* %13
br label %28
48: ; preds = %28
%49 = load i32, i32* %11
%50 = add nsw i32 %49, 1
store i32 %50, i32* %11
br label %51
51: ; preds = %48, %22
%52 = load i32, i32* %5
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %53
%55 = load i8, i8* %54
%56 = sext i8 %55 to i32
%57 = icmp eq i32 %56, 45
br i1 %57, label %58, label %79
58: ; preds = %51
%59 = load i32, i32* %11
%60 = add nsw i32 %59, 1
store i32 %60, i32* %11
%61 = load i32, i32* %5
store i32 %61, i32* %7
br label %62
62: ; preds = %75, %58
%63 = load i32, i32* %7
%64 = load i32, i32* %6
%65 = icmp slt i32 %63, %64
br i1 %65, label %66, label %78
66: ; preds = %62
%67 = load i32, i32* %7
%68 = add nsw i32 %67, 1
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %69
%71 = load i8, i8* %70
%72 = load i32, i32* %7
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %73
store i8 %71, i8* %74
br label %75
75: ; preds = %66
%76 = load i32, i32* %7
%77 = add nsw i32 %76, 1
store i32 %77, i32* %7
br label %62
78: ; preds = %62
br label %79
79: ; preds = %78, %51
br label %80
80: ; preds = %79
%81 = load i32, i32* %5
%82 = add nsw i32 %81, 1
store i32 %82, i32* %5
br label %18
83: ; preds = %18
%84 = load i32, i32* %6
%85 = sub nsw i32 %84, 4
store i32 %85, i32* %6
%86 = load i32, i32* %6
%87 = icmp ne i32 %86, 13
br i1 %87, label %88, label %89
88: ; preds = %83
store i32 1, i32* %8
br label %89
89: ; preds = %88, %83
%90 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 0
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = icmp ne i32 %92, 57
br i1 %93, label %94, label %95
94: ; preds = %89
store i32 1, i32* %9
br label %95
95: ; preds = %94, %89
%96 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 1
%97 = load i8, i8* %96
%98 = sext i8 %97 to i32
%99 = icmp ne i32 %98, 55
br i1 %99, label %100, label %101
100: ; preds = %95
store i32 1, i32* %9
br label %101
101: ; preds = %100, %95
%102 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 2
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = icmp ne i32 %104, 56
br i1 %105, label %106, label %112
106: ; preds = %101
%107 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 2
%108 = load i8, i8* %107
%109 = sext i8 %108 to i32
%110 = icmp ne i32 %109, 57
br i1 %110, label %111, label %112
111: ; preds = %106
store i32 1, i32* %9
br label %112
112: ; preds = %111, %106, %101
store i32 0, i32* %5
br label %113
113: ; preds = %228, %112
%114 = load i32, i32* %5
%115 = load i32, i32* %6
%116 = icmp slt i32 %114, %115
br i1 %116, label %117, label %231
117: ; preds = %113
%118 = load i32, i32* %5
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %119
%121 = load i8, i8* %120
%122 = sext i8 %121 to i32
%123 = icmp eq i32 %122, 48
br i1 %123, label %124, label %128
124: ; preds = %117
%125 = load i32, i32* %5
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %126
store i32 0, i32* %127
br label %128
128: ; preds = %124, %117
%129 = load i32, i32* %5
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %130
%132 = load i8, i8* %131
%133 = sext i8 %132 to i32
%134 = icmp eq i32 %133, 49
br i1 %134, label %135, label %139
135: ; preds = %128
%136 = load i32, i32* %5
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %137
store i32 1, i32* %138
br label %139
139: ; preds = %135, %128
%140 = load i32, i32* %5
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %141
%143 = load i8, i8* %142
%144 = sext i8 %143 to i32
%145 = icmp eq i32 %144, 50
br i1 %145, label %146, label %150
146: ; preds = %139
%147 = load i32, i32* %5
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %148
store i32 2, i32* %149
br label %150
150: ; preds = %146, %139
%151 = load i32, i32* %5
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %152
%154 = load i8, i8* %153
%155 = sext i8 %154 to i32
%156 = icmp eq i32 %155, 51
br i1 %156, label %157, label %161
157: ; preds = %150
%158 = load i32, i32* %5
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %159
store i32 3, i32* %160
br label %161
161: ; preds = %157, %150
%162 = load i32, i32* %5
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %163
%165 = load i8, i8* %164
%166 = sext i8 %165 to i32
%167 = icmp eq i32 %166, 52
br i1 %167, label %168, label %172
168: ; preds = %161
%169 = load i32, i32* %5
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %170
store i32 4, i32* %171
br label %172
172: ; preds = %168, %161
%173 = load i32, i32* %5
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %174
%176 = load i8, i8* %175
%177 = sext i8 %176 to i32
%178 = icmp eq i32 %177, 53
br i1 %178, label %179, label %183
179: ; preds = %172
%180 = load i32, i32* %5
%181 = sext i32 %180 to i64
%182 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %181
store i32 5, i32* %182
br label %183
183: ; preds = %179, %172
%184 = load i32, i32* %5
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %185
%187 = load i8, i8* %186
%188 = sext i8 %187 to i32
%189 = icmp eq i32 %188, 54
br i1 %189, label %190, label %194
190: ; preds = %183
%191 = load i32, i32* %5
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %192
store i32 6, i32* %193
br label %194
194: ; preds = %190, %183
%195 = load i32, i32* %5
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %196
%198 = load i8, i8* %197
%199 = sext i8 %198 to i32
%200 = icmp eq i32 %199, 55
br i1 %200, label %201, label %205
201: ; preds = %194
%202 = load i32, i32* %5
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %203
store i32 7, i32* %204
br label %205
205: ; preds = %201, %194
%206 = load i32, i32* %5
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %207
%209 = load i8, i8* %208
%210 = sext i8 %209 to i32
%211 = icmp eq i32 %210, 56
br i1 %211, label %212, label %216
212: ; preds = %205
%213 = load i32, i32* %5
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %214
store i32 8, i32* %215
br label %216
216: ; preds = %212, %205
%217 = load i32, i32* %5
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds [18 x i8], [18 x i8]* %2, i64 0, i64 %218
%220 = load i8, i8* %219
%221 = sext i8 %220 to i32
%222 = icmp eq i32 %221, 57
br i1 %222, label %223, label %227
223: ; preds = %216
%224 = load i32, i32* %5
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %225
store i32 9, i32* %226
br label %227
227: ; preds = %223, %216
br label %228
228: ; preds = %227
%229 = load i32, i32* %5
%230 = add nsw i32 %229, 1
store i32 %230, i32* %5
br label %113
231: ; preds = %113
store i32 0, i32* %5
br label %232
232: ; preds = %244, %231
%233 = load i32, i32* %5
%234 = load i32, i32* %6
%235 = sub nsw i32 %234, 1
%236 = icmp slt i32 %233, %235
br i1 %236, label %237, label %247
237: ; preds = %232
%238 = load i32, i32* %12
%239 = load i32, i32* %5
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %240
%242 = load i32, i32* %241
%243 = add nsw i32 %238, %242
store i32 %243, i32* %12
br label %244
244: ; preds = %237
%245 = load i32, i32* %5
%246 = add nsw i32 %245, 2
store i32 %246, i32* %5
br label %232
247: ; preds = %232
store i32 1, i32* %5
br label %248
248: ; preds = %261, %247
%249 = load i32, i32* %5
%250 = load i32, i32* %6
%251 = sub nsw i32 %250, 1
%252 = icmp slt i32 %249, %251
br i1 %252, label %253, label %264
253: ; preds = %248
%254 = load i32, i32* %12
%255 = load i32, i32* %5
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 %256
%258 = load i32, i32* %257
%259 = mul nsw i32 3, %258
%260 = add nsw i32 %254, %259
store i32 %260, i32* %12
br label %261
261: ; preds = %253
%262 = load i32, i32* %5
%263 = add nsw i32 %262, 2
store i32 %263, i32* %5
br label %248
264: ; preds = %248
%265 = load i32, i32* %12
%266 = srem i32 %265, 10
%267 = sub nsw i32 10, %266
%268 = getelementptr inbounds [14 x i32], [14 x i32]* %3, i64 0, i64 12
%269 = load i32, i32* %268
%270 = icmp ne i32 %267, %269
br i1 %270, label %271, label %272
271: ; preds = %264
store i32 1, i32* %10
br label %272
272: ; preds = %271, %264
%273 = load i32, i32* %8
%274 = icmp eq i32 %273, 1
br i1 %274, label %281, label %275
275: ; preds = %272
%276 = load i32, i32* %9
%277 = icmp eq i32 %276, 1
br i1 %277, label %281, label %278
278: ; preds = %275
%279 = load i32, i32* %10
%280 = icmp eq i32 %279, 1
br i1 %280, label %281, label %283
281: ; preds = %278, %275, %272
%282 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %305
283: ; preds = %278
%284 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%285 = load i32, i32* %4
%286 = icmp eq i32 %285, 933346
br i1 %286, label %287, label %289
287: ; preds = %283
%288 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
br label %289
289: ; preds = %287, %283
%290 = load i32, i32* %4
%291 = icmp eq i32 %290, 55583
br i1 %291, label %292, label %294
292: ; preds = %289
%293 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.4, i64 0, i64 0))
br label %294
294: ; preds = %292, %289
%295 = load i32, i32* %4
%296 = icmp eq i32 %295, 4210
br i1 %296, label %297, label %299
297: ; preds = %294
%298 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.5, i64 0, i64 0))
br label %299
299: ; preds = %297, %294
%300 = load i32, i32* %4
%301 = icmp eq i32 %300, 1
br i1 %301, label %302, label %304
302: ; preds = %299
%303 = call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0))
br label %304
304: ; preds = %302, %299
br label %305
305: ; preds = %304, %281
ret i32 0
}

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 [18 x i8]
%2 = alloca [14 x i32]
%3 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 0
%4 = bitcast [14 x i32]* %2 to i8*
%5 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %3)
%6 = call i32 @strlen(i8* %3)
%7 = icmp sgt i32 %6, 0
br i1 %7, label %8, label %140
8: ; preds = %0
%9 = zext i32 %6 to i64
br label %10
10: ; preds = %8, %135
%11 = phi i64 [ 0, %8 ], [ %137, %135 ]
%12 = phi i64 [ -1, %8 ], [ %138, %135 ]
%13 = phi i32 [ 0, %8 ], [ %136, %135 ]
%14 = phi i32 [ 0, %8 ], [ %40, %135 ]
%15 = sub nsw i64 %9, %11
%16 = add i64 %15, -32
%17 = lshr i64 %16, 5
%18 = add nuw nsw i64 %17, 1
%19 = sub nsw i64 %9, %11
%20 = sub nsw i64 %9, %11
%21 = icmp eq i32 %13, 2
br i1 %21, label %22, label %39
22: ; preds = %10
%23 = add nsw i64 %11, -1
%24 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %23
%25 = load i8, i8* %24
%26 = icmp eq i8 %25, 45
br i1 %26, label %39, label %27
27: ; preds = %22, %27
%28 = phi i64 [ %35, %27 ], [ %12, %22 ]
%29 = phi i8 [ %37, %27 ], [ %25, %22 ]
%30 = phi i32 [ %34, %27 ], [ %14, %22 ]
%31 = sext i8 %29 to i32
%32 = mul nsw i32 %30, 10
%33 = add i32 %32, -48
%34 = add i32 %33, %31
%35 = add nsw i64 %28, 1
%36 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %35
%37 = load i8, i8* %36
%38 = icmp eq i8 %37, 45
br i1 %38, label %39, label %27
39: ; preds = %27, %22, %10
%40 = phi i32 [ %14, %10 ], [ %14, %22 ], [ %34, %27 ]
%41 = phi i32 [ %13, %10 ], [ 3, %22 ], [ 3, %27 ]
%42 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %11
%43 = load i8, i8* %42
%44 = icmp eq i8 %43, 45
br i1 %44, label %45, label %135
45: ; preds = %39
%46 = add nsw i32 %41, 1
%47 = icmp ult i64 %20, 8
br i1 %47, label %126, label %48
48: ; preds = %45
%49 = icmp ult i64 %20, 32
br i1 %49, label %109, label %50
50: ; preds = %48
%51 = and i64 %20, -32
%52 = and i64 %18, 1
%53 = icmp ult i64 %16, 32
br i1 %53, label %87, label %54
54: ; preds = %50
%55 = and i64 %18, 1152921504606846974
br label %56
56: ; preds = %56, %54
%57 = phi i64 [ 0, %54 ], [ %84, %56 ]
%58 = phi i64 [ 0, %54 ], [ %85, %56 ]
%59 = add i64 %11, %57
%60 = add nuw nsw i64 %59, 1
%61 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %60
%62 = bitcast i8* %61 to <16 x i8>*
%63 = load <16 x i8>, <16 x i8>* %62
%64 = getelementptr inbounds i8, i8* %61, i64 16
%65 = bitcast i8* %64 to <16 x i8>*
%66 = load <16 x i8>, <16 x i8>* %65
%67 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %59
%68 = bitcast i8* %67 to <16 x i8>*
store <16 x i8> %63, <16 x i8>* %68
%69 = getelementptr inbounds i8, i8* %67, i64 16
%70 = bitcast i8* %69 to <16 x i8>*
store <16 x i8> %66, <16 x i8>* %70
%71 = or i64 %57, 32
%72 = add i64 %11, %71
%73 = add nuw nsw i64 %72, 1
%74 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %73
%75 = bitcast i8* %74 to <16 x i8>*
%76 = load <16 x i8>, <16 x i8>* %75
%77 = getelementptr inbounds i8, i8* %74, i64 16
%78 = bitcast i8* %77 to <16 x i8>*
%79 = load <16 x i8>, <16 x i8>* %78
%80 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %72
%81 = bitcast i8* %80 to <16 x i8>*
store <16 x i8> %76, <16 x i8>* %81
%82 = getelementptr inbounds i8, i8* %80, i64 16
%83 = bitcast i8* %82 to <16 x i8>*
store <16 x i8> %79, <16 x i8>* %83
%84 = add nuw i64 %57, 64
%85 = add i64 %58, 2
%86 = icmp eq i64 %85, %55
br i1 %86, label %87, label %56
87: ; preds = %56, %50
%88 = phi i64 [ 0, %50 ], [ %84, %56 ]
%89 = icmp eq i64 %52, 0
br i1 %89, label %103, label %90
90: ; preds = %87
%91 = add i64 %11, %88
%92 = add nuw nsw i64 %91, 1
%93 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %92
%94 = bitcast i8* %93 to <16 x i8>*
%95 = load <16 x i8>, <16 x i8>* %94
%96 = getelementptr inbounds i8, i8* %93, i64 16
%97 = bitcast i8* %96 to <16 x i8>*
%98 = load <16 x i8>, <16 x i8>* %97
%99 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %91
%100 = bitcast i8* %99 to <16 x i8>*
store <16 x i8> %95, <16 x i8>* %100
%101 = getelementptr inbounds i8, i8* %99, i64 16
%102 = bitcast i8* %101 to <16 x i8>*
store <16 x i8> %98, <16 x i8>* %102
br label %103
103: ; preds = %87, %90
%104 = icmp eq i64 %20, %51
br i1 %104, label %135, label %105
105: ; preds = %103
%106 = add i64 %11, %51
%107 = and i64 %20, 24
%108 = icmp eq i64 %107, 0
br i1 %108, label %126, label %109
109: ; preds = %48, %105
%110 = phi i64 [ %51, %105 ], [ 0, %48 ]
%111 = and i64 %19, -8
%112 = add i64 %11, %111
br label %113
113: ; preds = %113, %109
%114 = phi i64 [ %110, %109 ], [ %122, %113 ]
%115 = add i64 %11, %114
%116 = add nuw nsw i64 %115, 1
%117 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %116
%118 = bitcast i8* %117 to <8 x i8>*
%119 = load <8 x i8>, <8 x i8>* %118
%120 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %115
%121 = bitcast i8* %120 to <8 x i8>*
store <8 x i8> %119, <8 x i8>* %121
%122 = add nuw i64 %114, 8
%123 = icmp eq i64 %122, %111
br i1 %123, label %124, label %113
124: ; preds = %113
%125 = icmp eq i64 %19, %111
br i1 %125, label %135, label %126
126: ; preds = %45, %105, %124
%127 = phi i64 [ %11, %45 ], [ %106, %105 ], [ %112, %124 ]
br label %128
128: ; preds = %126, %128
%129 = phi i64 [ %130, %128 ], [ %127, %126 ]
%130 = add nuw nsw i64 %129, 1
%131 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %130
%132 = load i8, i8* %131
%133 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %129
store i8 %132, i8* %133
%134 = icmp eq i64 %130, %9
br i1 %134, label %135, label %128
135: ; preds = %128, %103, %124, %39
%136 = phi i32 [ %41, %39 ], [ %46, %124 ], [ %46, %103 ], [ %46, %128 ]
%137 = add nuw nsw i64 %11, 1
%138 = add nsw i64 %12, 1
%139 = icmp eq i64 %137, %9
br i1 %139, label %140, label %10
140: ; preds = %135, %0
%141 = phi i32 [ 0, %0 ], [ %40, %135 ]
%142 = add i32 %6, -4
%143 = icmp ne i32 %142, 13
%144 = load i8, i8* %3
%145 = icmp ne i8 %144, 57
%146 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 1
%147 = load i8, i8* %146
%148 = icmp ne i8 %147, 55
%149 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 2
%150 = load i8, i8* %149
%151 = and i8 %150, -2
%152 = icmp ne i8 %151, 56
%153 = select i1 %152, i1 true, i1 %148
%154 = select i1 %153, i1 true, i1 %145
%155 = icmp sgt i32 %6, 4
br i1 %155, label %156, label %273
156: ; preds = %140
%157 = zext i32 %142 to i64
br label %198
158: ; preds = %206
%159 = add nsw i32 %6, -5
%160 = icmp sgt i32 %6, 5
br i1 %160, label %161, label %273
161: ; preds = %158
%162 = zext i32 %159 to i64
%163 = call i64 @llvm.umax.i64(i64 %162, i64 2)
%164 = add nsw i64 %163, -1
%165 = lshr i64 %164, 1
%166 = add nuw nsw i64 %165, 1
%167 = icmp ult i64 %164, 16
br i1 %167, label %195, label %168
168: ; preds = %161
%169 = and i64 %166, 7
%170 = icmp eq i64 %169, 0
%171 = select i1 %170, i64 8, i64 %169
%172 = sub nsw i64 %166, %171
%173 = shl i64 %172, 1
br label %174
174: ; preds = %174, %168
%175 = phi i64 [ 0, %168 ], [ %190, %174 ]
%176 = phi <4 x i32> [ zeroinitializer, %168 ], [ %188, %174 ]
%177 = phi <4 x i32> [ zeroinitializer, %168 ], [ %189, %174 ]
%178 = shl i64 %175, 1
%179 = or i64 %178, 8
%180 = getelementptr inbounds [14 x i32], [14 x i32]* %2, i64 0, i64 %178
%181 = getelementptr inbounds [14 x i32], [14 x i32]* %2, i64 0, i64 %179
%182 = bitcast i32* %180 to <8 x i32>*
%183 = bitcast i32* %181 to <8 x i32>*
%184 = load <8 x i32>, <8 x i32>* %182
%185 = load <8 x i32>, <8 x i32>* %183
%186 = shufflevector <8 x i32> %184, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%187 = shufflevector <8 x i32> %185, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%188 = add <4 x i32> %186, %176
%189 = add <4 x i32> %187, %177
%190 = add nuw i64 %175, 8
%191 = icmp eq i64 %190, %172
br i1 %191, label %192, label %174
192: ; preds = %174
%193 = add <4 x i32> %189, %188
%194 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %193)
br label %195
195: ; preds = %161, %192
%196 = phi i64 [ 0, %161 ], [ %173, %192 ]
%197 = phi i32 [ 0, %161 ], [ %194, %192 ]
br label %256
198: ; preds = %209, %156
%199 = phi i8 [ %144, %156 ], [ %211, %209 ]
%200 = phi i64 [ 0, %156 ], [ %207, %209 ]
%201 = add i8 %199, -48
%202 = icmp ult i8 %201, 10
br i1 %202, label %203, label %206
203: ; preds = %198
%204 = zext i8 %201 to i32
%205 = getelementptr inbounds [14 x i32], [14 x i32]* %2, i64 0, i64 %200
store i32 %204, i32* %205
br label %206
206: ; preds = %198, %203
%207 = add nuw nsw i64 %200, 1
%208 = icmp eq i64 %207, %157
br i1 %208, label %158, label %209
209: ; preds = %206
%210 = getelementptr inbounds [18 x i8], [18 x i8]* %1, i64 0, i64 %207
%211 = load i8, i8* %210
br label %198
212: ; preds = %256
%213 = icmp sgt i32 %6, 6
br i1 %213, label %214, label %273
214: ; preds = %212
%215 = zext i32 %159 to i64
%216 = call i64 @llvm.umax.i64(i64 %162, i64 3)
%217 = add nsw i64 %216, -2
%218 = lshr i64 %217, 1
%219 = add nuw nsw i64 %218, 1
%220 = icmp ult i64 %217, 16
br i1 %220, label %253, label %221
221: ; preds = %214
%222 = and i64 %219, 7
%223 = icmp eq i64 %222, 0
%224 = select i1 %223, i64 8, i64 %222
%225 = sub nsw i64 %219, %224
%226 = shl i64 %225, 1
%227 = or i64 %226, 1
%228 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %261, i64 0
br label %229
229: ; preds = %229, %221
%230 = phi i64 [ 0, %221 ], [ %248, %229 ]
%231 = phi <4 x i32> [ %228, %221 ], [ %246, %229 ]
%232 = phi <4 x i32> [ zeroinitializer, %221 ], [ %247, %229 ]
%233 = shl i64 %230, 1
%234 = or i64 %233, 1
%235 = or i64 %233, 9
%236 = getelementptr inbounds [14 x i32], [14 x i32]* %2, i64 0, i64 %234
%237 = getelementptr inbounds [14 x i32], [14 x i32]* %2, i64 0, i64 %235
%238 = bitcast i32* %236 to <8 x i32>*
%239 = bitcast i32* %237 to <8 x i32>*
%240 = load <8 x i32>, <8 x i32>* %238
%241 = load <8 x i32>, <8 x i32>* %239
%242 = shufflevector <8 x i32> %240, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%243 = shufflevector <8 x i32> %241, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%244 = mul nsw <4 x i32> %242, <i32 3, i32 3, i32 3, i32 3>
%245 = mul nsw <4 x i32> %243, <i32 3, i32 3, i32 3, i32 3>
%246 = add <4 x i32> %244, %231
%247 = add <4 x i32> %245, %232
%248 = add nuw i64 %230, 8
%249 = icmp eq i64 %248, %225
br i1 %249, label %250, label %229
250: ; preds = %229
%251 = add <4 x i32> %247, %246
%252 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %251)
br label %253
253: ; preds = %214, %250
%254 = phi i64 [ 1, %214 ], [ %227, %250 ]
%255 = phi i32 [ %261, %214 ], [ %252, %250 ]
br label %264
256: ; preds = %195, %256
%257 = phi i64 [ %262, %256 ], [ %196, %195 ]
%258 = phi i32 [ %261, %256 ], [ %197, %195 ]
%259 = getelementptr inbounds [14 x i32], [14 x i32]* %2, i64 0, i64 %257
%260 = load i32, i32* %259
%261 = add nsw i32 %260, %258
%262 = add nuw nsw i64 %257, 2
%263 = icmp ult i64 %262, %162
br i1 %263, label %256, label %212
264: ; preds = %253, %264
%265 = phi i64 [ %271, %264 ], [ %254, %253 ]
%266 = phi i32 [ %270, %264 ], [ %255, %253 ]
%267 = getelementptr inbounds [14 x i32], [14 x i32]* %2, i64 0, i64 %265
%268 = load i32, i32* %267
%269 = mul nsw i32 %268, 3
%270 = add nsw i32 %269, %266
%271 = add nuw nsw i64 %265, 2
%272 = icmp ult i64 %271, %215
br i1 %272, label %264, label %273
273: ; preds = %264, %140, %158, %212
%274 = phi i32 [ %261, %212 ], [ 0, %158 ], [ 0, %140 ], [ %270, %264 ]
%275 = srem i32 %274, 10
%276 = sub nsw i32 10, %275
%277 = getelementptr inbounds [14 x i32], [14 x i32]* %2, i64 0, i64 12
%278 = load i32, i32* %277
%279 = icmp ne i32 %276, %278
%280 = or i1 %143, %154
%281 = select i1 %280, i1 true, i1 %279
br i1 %281, label %282, label %284
282: ; preds = %273
%283 = call i32 @putchar(i32 48)
br label %294
284: ; preds = %273
%285 = call i32 @putchar(i32 49)
switch i32 %141, label %294 [
i32 933346, label %286
i32 55583, label %288
i32 4210, label %290
i32 1, label %292
]
286: ; preds = %284
%287 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
br label %294
288: ; preds = %284
%289 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.4, i64 0, i64 0))
br label %294
290: ; preds = %284
%291 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.5, i64 0, i64 0))
br label %294
292: ; preds = %284
%293 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0))
br label %294
294: ; preds = %290, %288, %286, %284, %292, %282
ret i32 0
}