#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 uInt;
typedef unsigned char length;
typedef unsigned char crc;

/* Variables and functions */
unsigned int EOF;
unsigned char *Z_NULL;
unsigned long crc32(unsigned long, unsigned char *, int);
unsigned int getchar();
int /*<<< orphan*/ putchar(unsigned int);
main() {
  unsigned int i;
  unsigned char buf[500000];
  unsigned long crc;
  unsigned int c;
  for (i = 8; i; i--) {
    c = c = getchar();
    if (c == EOF)
      break;
    ;
    putchar(c);
  }
  if (c != EOF)
    for (;;) {
      unsigned long length;
      c = c = getchar();
      if (c == EOF)
        break;
      ;
      buf[0] = c;
      c = c = getchar();
      if (c == EOF)
        break;
      ;
      buf[1] = c;
      c = c = getchar();
      if (c == EOF)
        break;
      ;
      buf[2] = c;
      c = c = getchar();
      if (c == EOF)
        break;
      ;
      buf[3] = c;
      length = ((((unsigned long)buf[0] << 8 + buf[1] << 16) + buf[2] << 8) +
                buf[3]);
      c = c = getchar();
      if (c == EOF)
        break;
      ;
      buf[4] = c;
      c = c = getchar();
      if (c == EOF)
        break;
      ;
      buf[5] = c;
      c = c = getchar();
      if (c == EOF)
        break;
      ;
      buf[6] = c;
      c = c = getchar();
      if (c == EOF)
        break;
      ;
      buf[7] = c;
      if (buf[4] == 105 && buf[5] == 84 && buf[6] == 88 && buf[7] == 116) {
        if (length >= 500000 - 12)
          break;
        crc = crc32(0, Z_NULL, 0);
        for (i = 8; i < length + 12; i++) {
          c = c = getchar();
          if (c == EOF)
            break;
          ;
          buf[i] = c;
        }
        crc = crc32(crc, buf + 4, (uInt)length + 4);
        for (;;) {
          if (((crc >> 24) & 0xff) == buf[length + 8] &&
              ((crc >> 16) & 0xff) == buf[length + 9] &&
              ((crc >> 8) & 0xff) == buf[length + 10] &&
              ((crc)&0xff) == buf[length + 11])
            break;
          length++;
          if (length >= 500000 - 12)
            break;
          c = c = getchar();
          if (c == EOF)
            break;
          ;
          buf[length + 11] = c;
          crc = crc32(crc, buf + 7 + length, 1);
        }
        buf[0] = (length << 24) & 0xff;
        buf[1] = (length << 16) & 0xff;
        buf[2] = (length << 8) & 0xff;
        buf[3] = (length)&0xff;
        for (i = 0; i < length + 12; i++)
          putchar(buf[i]);
      } else {
        for (i = 0; i < 8; i++)
          putchar(buf[i]);
        for (i = 8; i < length + 12; i++) {
          c = c = getchar();
          if (c == EOF)
            break;
          ;
          putchar(c);
        }
        if (c == EOF) {
          break;
        }
        if (buf[4] == 73 && buf[5] == 69 && buf[6] == 78 && buf[7] == 68)
          break;
      }
      if (c == EOF)
        break;
      if (buf[4] == 73 && buf[5] == 69 && buf[6] == 78 && buf[7] == 68)
        break;
    }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x7a150,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x8,-0x8(%rbp)
cmpl   $0x0,-0x8(%rbp)
je     1199 <main+0x69>
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2e75(%rip),%rcx
cmp    (%rcx),%eax
jne    1180 <main+0x50>
jmp    1199 <main+0x69>
mov    -0x7a13c(%rbp),%edi
call   1030 <putchar@plt>
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x8(%rbp)
jmp    1149 <main+0x19>
mov    -0x7a13c(%rbp),%eax
mov    0x2e42(%rip),%rcx
cmp    (%rcx),%eax
je     17f3 <main+0x6c3>
jmp    11b3 <main+0x83>
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2e15(%rip),%rcx
cmp    (%rcx),%eax
jne    11e0 <main+0xb0>
jmp    17ee <main+0x6be>
mov    -0x7a13c(%rbp),%eax
mov    %al,-0x7a130(%rbp)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2ddc(%rip),%rcx
cmp    (%rcx),%eax
jne    1219 <main+0xe9>
jmp    17ee <main+0x6be>
mov    -0x7a13c(%rbp),%eax
mov    %al,-0x7a12f(%rbp)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2da3(%rip),%rcx
cmp    (%rcx),%eax
jne    1252 <main+0x122>
jmp    17ee <main+0x6be>
mov    -0x7a13c(%rbp),%eax
mov    %al,-0x7a12e(%rbp)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2d6a(%rip),%rcx
cmp    (%rcx),%eax
jne    128b <main+0x15b>
jmp    17ee <main+0x6be>
mov    -0x7a13c(%rbp),%eax
mov    %al,-0x7a12d(%rbp)
movzbl -0x7a130(%rbp),%eax
movzbl -0x7a12f(%rbp),%ecx
add    $0x8,%ecx
mov    %ecx,%ecx
shl    %cl,%rax
shl    $0x10,%rax
movzbl -0x7a12e(%rbp),%ecx
add    %rcx,%rax
shl    $0x8,%rax
movzbl -0x7a12d(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x7a148(%rbp)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2cf8(%rip),%rcx
cmp    (%rcx),%eax
jne    12fd <main+0x1cd>
jmp    17ee <main+0x6be>
mov    -0x7a13c(%rbp),%eax
mov    %al,-0x7a12c(%rbp)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2cbf(%rip),%rcx
cmp    (%rcx),%eax
jne    1336 <main+0x206>
jmp    17ee <main+0x6be>
mov    -0x7a13c(%rbp),%eax
mov    %al,-0x7a12b(%rbp)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2c86(%rip),%rcx
cmp    (%rcx),%eax
jne    136f <main+0x23f>
jmp    17ee <main+0x6be>
mov    -0x7a13c(%rbp),%eax
mov    %al,-0x7a12a(%rbp)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2c4d(%rip),%rcx
cmp    (%rcx),%eax
jne    13a8 <main+0x278>
jmp    17ee <main+0x6be>
mov    -0x7a13c(%rbp),%eax
mov    %al,-0x7a129(%rbp)
movzbl -0x7a12c(%rbp),%eax
cmp    $0x69,%eax
jne    1693 <main+0x563>
movzbl -0x7a12b(%rbp),%eax
cmp    $0x54,%eax
jne    1693 <main+0x563>
movzbl -0x7a12a(%rbp),%eax
cmp    $0x58,%eax
jne    1693 <main+0x563>
movzbl -0x7a129(%rbp),%eax
cmp    $0x74,%eax
jne    1693 <main+0x563>
cmpq   $0x7a114,-0x7a148(%rbp)
jb     140a <main+0x2da>
jmp    17ee <main+0x6be>
mov    0x2bc7(%rip),%rax
mov    (%rax),%rsi
xor    %eax,%eax
mov    %eax,%edi
xor    %edx,%edx
call   1040 <crc32@plt>
mov    %rax,-0x7a138(%rbp)
movl   $0x8,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    -0x7a148(%rbp),%rcx
add    $0xc,%rcx
cmp    %rcx,%rax
jae    1491 <main+0x361>
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2b84(%rip),%rcx
cmp    (%rcx),%eax
jne    1471 <main+0x341>
jmp    1491 <main+0x361>
mov    -0x7a13c(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%eax
mov    %cl,-0x7a130(%rbp,%rax,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    142d <main+0x2fd>
mov    -0x7a138(%rbp),%rdi
lea    -0x7a130(%rbp),%rsi
add    $0x4,%rsi
mov    -0x7a148(%rbp),%rax
mov    %eax,%edx
add    $0x4,%edx
call   1040 <crc32@plt>
mov    %rax,-0x7a138(%rbp)
mov    -0x7a138(%rbp),%rax
shr    $0x18,%rax
and    $0xff,%rax
mov    -0x7a148(%rbp),%rcx
movzbl -0x7a128(%rbp,%rcx,1),%ecx
ff
cmp    %rcx,%rax
jne    1560 <main+0x430>
mov    -0x7a138(%rbp),%rax
shr    $0x10,%rax
and    $0xff,%rax
mov    -0x7a148(%rbp),%rcx
movzbl -0x7a127(%rbp,%rcx,1),%ecx
ff
cmp    %rcx,%rax
jne    1560 <main+0x430>
mov    -0x7a138(%rbp),%rax
shr    $0x8,%rax
and    $0xff,%rax
mov    -0x7a148(%rbp),%rcx
movzbl -0x7a126(%rbp,%rcx,1),%ecx
ff
cmp    %rcx,%rax
jne    1560 <main+0x430>
mov    -0x7a138(%rbp),%rax
and    $0xff,%rax
mov    -0x7a148(%rbp),%rcx
movzbl -0x7a125(%rbp,%rcx,1),%ecx
ff
cmp    %rcx,%rax
jne    1560 <main+0x430>
jmp    15fa <main+0x4ca>
mov    -0x7a148(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7a148(%rbp)
cmpq   $0x7a114,-0x7a148(%rbp)
jb     1588 <main+0x458>
jmp    15fa <main+0x4ca>
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x2a40(%rip),%rcx
cmp    (%rcx),%eax
jne    15b5 <main+0x485>
jmp    15fa <main+0x4ca>
mov    -0x7a13c(%rbp),%eax
mov    %al,%cl
mov    -0x7a148(%rbp),%rax
mov    %cl,-0x7a125(%rbp,%rax,1)
mov    -0x7a138(%rbp),%rdi
lea    -0x7a130(%rbp),%rsi
add    $0x7,%rsi
add    -0x7a148(%rbp),%rsi
mov    $0x1,%edx
call   1040 <crc32@plt>
mov    %rax,-0x7a138(%rbp)
jmp    14bb <main+0x38b>
mov    -0x7a148(%rbp),%rax
shl    $0x18,%rax
and    $0xff,%rax
mov    %al,-0x7a130(%rbp)
mov    -0x7a148(%rbp),%rax
shl    $0x10,%rax
and    $0xff,%rax
mov    %al,-0x7a12f(%rbp)
mov    -0x7a148(%rbp),%rax
shl    $0x8,%rax
and    $0xff,%rax
mov    %al,-0x7a12e(%rbp)
mov    -0x7a148(%rbp),%rax
and    $0xff,%rax
mov    %al,-0x7a12d(%rbp)
movl   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    -0x7a148(%rbp),%rcx
add    $0xc,%rcx
cmp    %rcx,%rax
jae    168e <main+0x55e>
mov    -0x8(%rbp),%eax
movzbl -0x7a130(%rbp,%rax,1),%edi
ff
call   1030 <putchar@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1659 <main+0x529>
jmp    178a <main+0x65a>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jae    16c2 <main+0x592>
mov    -0x8(%rbp),%eax
movzbl -0x7a130(%rbp,%rax,1),%edi
ff
call   1030 <putchar@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    169a <main+0x56a>
movl   $0x8,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    -0x7a148(%rbp),%rcx
add    $0xc,%rcx
cmp    %rcx,%rax
jae    1726 <main+0x5f6>
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x7a13c(%rbp)
mov    %eax,-0x7a13c(%rbp)
mov    -0x7a13c(%rbp),%eax
mov    0x28e8(%rip),%rcx
cmp    (%rcx),%eax
jne    170d <main+0x5dd>
jmp    1726 <main+0x5f6>
mov    -0x7a13c(%rbp),%edi
call   1030 <putchar@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    16c9 <main+0x599>
mov    -0x7a13c(%rbp),%eax
mov    0x28b5(%rip),%rcx
cmp    (%rcx),%eax
jne    1740 <main+0x610>
jmp    17ee <main+0x6be>
movzbl -0x7a12c(%rbp),%eax
cmp    $0x49,%eax
jne    1785 <main+0x655>
movzbl -0x7a12b(%rbp),%eax
cmp    $0x45,%eax
jne    1785 <main+0x655>
movzbl -0x7a12a(%rbp),%eax
cmp    $0x4e,%eax
jne    1785 <main+0x655>
movzbl -0x7a129(%rbp),%eax
cmp    $0x44,%eax
jne    1785 <main+0x655>
jmp    17ee <main+0x6be>
jmp    178a <main+0x65a>
mov    -0x7a13c(%rbp),%eax
mov    0x2851(%rip),%rcx
cmp    (%rcx),%eax
jne    17a4 <main+0x674>
jmp    17ee <main+0x6be>
movzbl -0x7a12c(%rbp),%eax
cmp    $0x49,%eax
jne    17e9 <main+0x6b9>
movzbl -0x7a12b(%rbp),%eax
cmp    $0x45,%eax
jne    17e9 <main+0x6b9>
movzbl -0x7a12a(%rbp),%eax
cmp    $0x4e,%eax
jne    17e9 <main+0x6b9>
movzbl -0x7a129(%rbp),%eax
cmp    $0x44,%eax
jne    17e9 <main+0x6b9>
jmp    17ee <main+0x6be>
jmp    11b3 <main+0x83>
jmp    17f3 <main+0x6c3>
mov    -0x4(%rbp),%eax
add    $0x7a150,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x7a128,%rsp
xor    %eax,%eax
call   1050 <getchar@plt>
mov    0x2e99(%rip),%rbx
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%ebp
mov    %eax,%edi
call   1030 <putchar@plt>
cmp    (%rbx),%ebp
jne    11f6 <main+0xc6>
xor    %eax,%eax
add    $0x7a128,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x2ddb(%rip),%r12
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %al,(%rsp)
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %al,0x1(%rsp)
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %al,0x2(%rsp)
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%r15d
mov    %r15b,0x3(%rsp)
movzbl (%rsp),%ebp
mov    0x1(%rsp),%cl
add    $0x8,%cl
shl    %cl,%rbp
movzbl 0x2(%rsp),%r14d
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %al,0x4(%rsp)
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %al,0x5(%rsp)
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %al,0x6(%rsp)
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
shl    $0x18,%rbp
shl    $0x8,%r14
movzbl %r15b,%r13d
or     %r14,%r13
or     %rbp,%r13
mov    %al,0x7(%rsp)
cmp    $0x74,%al
jne    13aa <main+0x27a>
cmpb   $0x69,0x4(%rsp)
jne    13aa <main+0x27a>
cmpb   $0x54,0x5(%rsp)
jne    13aa <main+0x27a>
cmpb   $0x58,0x6(%rsp)
jne    13aa <main+0x27a>
cmp    $0x7a113,%r13
ja     11e2 <main+0xb2>
mov    (%r12),%rsi
xor    %edi,%edi
xor    %edx,%edx
call   1040 <crc32@plt>
mov    %rax,%r15
lea    0xc(%r13),%rbp
mov    $0x8,%r12d
xor    %eax,%eax
call   1050 <getchar@plt>
mov    %eax,%r14d
cmp    (%rbx),%eax
je     1315 <main+0x1e5>
mov    %r14b,(%rsp,%r12,1)
add    $0x1,%r12d
cmp    %r12,%rbp
ja     12fa <main+0x1ca>
lea    0x4(%r13),%edx
mov    %r15,%rdi
lea    0x4(%rsp),%rsi
call   1040 <crc32@plt>
mov    %rax,%r15
lea    0x8(%rsp),%rbp
mov    0x2ca3(%rip),%r12
mov    %r15,%rax
shr    $0x18,%rax
cmp    %al,0x8(%rsp,%r13,1)
jne    136a <main+0x23a>
mov    %r15,%rax
shr    $0x10,%rax
cmp    %al,0x9(%rsp,%r13,1)
jne    136a <main+0x23a>
mov    %r15,%rax
shr    $0x8,%rax
cmp    %al,0xa(%rsp,%r13,1)
jne    136a <main+0x23a>
cmp    %r15b,0xb(%rsp,%r13,1)
je     1457 <main+0x327>
cmp    $0x7a113,%r13
jae    1444 <main+0x314>
xor    %eax,%eax
call   1050 <getchar@plt>
mov    %eax,%r14d
cmp    (%rbx),%eax
je     1453 <main+0x323>
mov    %r14b,0xc(%rsp,%r13,1)
mov    %rbp,%rsi
add    %r13,%rsi
mov    %r15,%rdi
mov    $0x1,%edx
call   1040 <crc32@plt>
mov    %rax,%r15
add    $0x1,%r13
jmp    1335 <main+0x205>
movzbl (%rsp),%edi
call   1030 <putchar@plt>
movzbl 0x1(%rsp),%edi
call   1030 <putchar@plt>
movzbl 0x2(%rsp),%edi
call   1030 <putchar@plt>
movzbl 0x3(%rsp),%edi
call   1030 <putchar@plt>
movzbl 0x4(%rsp),%edi
call   1030 <putchar@plt>
movzbl 0x5(%rsp),%edi
call   1030 <putchar@plt>
movzbl 0x6(%rsp),%edi
call   1030 <putchar@plt>
movzbl 0x7(%rsp),%edi
call   1030 <putchar@plt>
add    $0xc,%r13
mov    $0x9,%ebp
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    (%rbx),%eax
je     11e2 <main+0xb2>
mov    %eax,%r14d
mov    %eax,%edi
call   1030 <putchar@plt>
mov    %ebp,%eax
add    $0x1,%ebp
cmp    %rax,%r13
ja     1402 <main+0x2d2>
cmp    (%rbx),%r14d
je     11e2 <main+0xb2>
movd   0x4(%rsp),%xmm0
movd   %xmm0,%eax
cmp    $0x444e4549,%eax
jne    1497 <main+0x367>
jmp    11e2 <main+0xb2>
movl   $0x14000000,(%rsp)
mov    $0x7a120,%r13d
jmp    146d <main+0x33d>
add    $0x1,%r13
movw   $0x0,(%rsp)
movb   $0x0,0x2(%rsp)
mov    %r13b,0x3(%rsp)
add    $0xc,%r13
je     1497 <main+0x367>
xor    %edi,%edi
call   1030 <putchar@plt>
cmp    $0x2,%r13
jb     1497 <main+0x367>
mov    $0x1,%eax
mov    $0x2,%ebp
movzbl (%rsp,%rax,1),%edi
call   1030 <putchar@plt>
mov    %ebp,%eax
add    $0x1,%ebp
cmp    %rax,%r13
ja     1484 <main+0x354>
cmp    (%rbx),%r14d
je     11e2 <main+0xb2>
movd   0x4(%rsp),%xmm0
movd   %xmm0,%eax
cmp    $0x444e4549,%eax
jne    11fd <main+0xcd>
jmp    11e2 <main+0xb2>

LLVM IR (-O0):
@EOF = global i32 0
@Z_NULL = global i8* null
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca [500000 x i8]
%4 = alloca i64
%5 = alloca i32
%6 = alloca i64
store i32 0, i32* %1
store i32 8, i32* %2
br label %7
7: ; preds = %19, %0
%8 = load i32, i32* %2
%9 = icmp ne i32 %8, 0
br i1 %9, label %10, label %22
10: ; preds = %7
%11 = call i32 (...) @getchar()
store i32 %11, i32* %5
store i32 %11, i32* %5
%12 = load i32, i32* %5
%13 = load i32, i32* @EOF
%14 = icmp eq i32 %12, %13
br i1 %14, label %15, label %16
15: ; preds = %10
br label %22
16: ; preds = %10
%17 = load i32, i32* %5
%18 = call i32 @putchar(i32 %17)
br label %19
19: ; preds = %16
%20 = load i32, i32* %2
%21 = add i32 %20, -1
store i32 %21, i32* %2
br label %7
22: ; preds = %15, %7
%23 = load i32, i32* %5
%24 = load i32, i32* @EOF
%25 = icmp ne i32 %23, %24
br i1 %25, label %26, label %363
26: ; preds = %22
br label %27
27: ; preds = %361, %26
%28 = call i32 (...) @getchar()
store i32 %28, i32* %5
store i32 %28, i32* %5
%29 = load i32, i32* %5
%30 = load i32, i32* @EOF
%31 = icmp eq i32 %29, %30
br i1 %31, label %32, label %33
32: ; preds = %27
br label %362
33: ; preds = %27
%34 = load i32, i32* %5
%35 = trunc i32 %34 to i8
%36 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 0
store i8 %35, i8* %36
%37 = call i32 (...) @getchar()
store i32 %37, i32* %5
store i32 %37, i32* %5
%38 = load i32, i32* %5
%39 = load i32, i32* @EOF
%40 = icmp eq i32 %38, %39
br i1 %40, label %41, label %42
41: ; preds = %33
br label %362
42: ; preds = %33
%43 = load i32, i32* %5
%44 = trunc i32 %43 to i8
%45 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 1
store i8 %44, i8* %45
%46 = call i32 (...) @getchar()
store i32 %46, i32* %5
store i32 %46, i32* %5
%47 = load i32, i32* %5
%48 = load i32, i32* @EOF
%49 = icmp eq i32 %47, %48
br i1 %49, label %50, label %51
50: ; preds = %42
br label %362
51: ; preds = %42
%52 = load i32, i32* %5
%53 = trunc i32 %52 to i8
%54 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 2
store i8 %53, i8* %54
%55 = call i32 (...) @getchar()
store i32 %55, i32* %5
store i32 %55, i32* %5
%56 = load i32, i32* %5
%57 = load i32, i32* @EOF
%58 = icmp eq i32 %56, %57
br i1 %58, label %59, label %60
59: ; preds = %51
br label %362
60: ; preds = %51
%61 = load i32, i32* %5
%62 = trunc i32 %61 to i8
%63 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 3
store i8 %62, i8* %63
%64 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 0
%65 = load i8, i8* %64
%66 = zext i8 %65 to i64
%67 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 1
%68 = load i8, i8* %67
%69 = zext i8 %68 to i32
%70 = add nsw i32 8, %69
%71 = zext i32 %70 to i64
%72 = shl i64 %66, %71
%73 = shl i64 %72, 16
%74 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 2
%75 = load i8, i8* %74
%76 = zext i8 %75 to i64
%77 = add i64 %73, %76
%78 = shl i64 %77, 8
%79 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 3
%80 = load i8, i8* %79
%81 = zext i8 %80 to i64
%82 = add i64 %78, %81
store i64 %82, i64* %6
%83 = call i32 (...) @getchar()
store i32 %83, i32* %5
store i32 %83, i32* %5
%84 = load i32, i32* %5
%85 = load i32, i32* @EOF
%86 = icmp eq i32 %84, %85
br i1 %86, label %87, label %88
87: ; preds = %60
br label %362
88: ; preds = %60
%89 = load i32, i32* %5
%90 = trunc i32 %89 to i8
%91 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 4
store i8 %90, i8* %91
%92 = call i32 (...) @getchar()
store i32 %92, i32* %5
store i32 %92, i32* %5
%93 = load i32, i32* %5
%94 = load i32, i32* @EOF
%95 = icmp eq i32 %93, %94
br i1 %95, label %96, label %97
96: ; preds = %88
br label %362
97: ; preds = %88
%98 = load i32, i32* %5
%99 = trunc i32 %98 to i8
%100 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 5
store i8 %99, i8* %100
%101 = call i32 (...) @getchar()
store i32 %101, i32* %5
store i32 %101, i32* %5
%102 = load i32, i32* %5
%103 = load i32, i32* @EOF
%104 = icmp eq i32 %102, %103
br i1 %104, label %105, label %106
105: ; preds = %97
br label %362
106: ; preds = %97
%107 = load i32, i32* %5
%108 = trunc i32 %107 to i8
%109 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 6
store i8 %108, i8* %109
%110 = call i32 (...) @getchar()
store i32 %110, i32* %5
store i32 %110, i32* %5
%111 = load i32, i32* %5
%112 = load i32, i32* @EOF
%113 = icmp eq i32 %111, %112
br i1 %113, label %114, label %115
114: ; preds = %106
br label %362
115: ; preds = %106
%116 = load i32, i32* %5
%117 = trunc i32 %116 to i8
%118 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 7
store i8 %117, i8* %118
%119 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 4
%120 = load i8, i8* %119
%121 = zext i8 %120 to i32
%122 = icmp eq i32 %121, 105
br i1 %122, label %123, label %275
123: ; preds = %115
%124 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 5
%125 = load i8, i8* %124
%126 = zext i8 %125 to i32
%127 = icmp eq i32 %126, 84
br i1 %127, label %128, label %275
128: ; preds = %123
%129 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 6
%130 = load i8, i8* %129
%131 = zext i8 %130 to i32
%132 = icmp eq i32 %131, 88
br i1 %132, label %133, label %275
133: ; preds = %128
%134 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 7
%135 = load i8, i8* %134
%136 = zext i8 %135 to i32
%137 = icmp eq i32 %136, 116
br i1 %137, label %138, label %275
138: ; preds = %133
%139 = load i64, i64* %6
%140 = icmp uge i64 %139, 499988
br i1 %140, label %141, label %142
141: ; preds = %138
br label %362
142: ; preds = %138
%143 = load i8*, i8** @Z_NULL
%144 = call i64 @crc32(i64 0, i8* %143, i32 0)
store i64 %144, i64* %4
store i32 8, i32* %2
br label %145
145: ; preds = %163, %142
%146 = load i32, i32* %2
%147 = zext i32 %146 to i64
%148 = load i64, i64* %6
%149 = add i64 %148, 12
%150 = icmp ult i64 %147, %149
br i1 %150, label %151, label %166
151: ; preds = %145
%152 = call i32 (...) @getchar()
store i32 %152, i32* %5
store i32 %152, i32* %5
%153 = load i32, i32* %5
%154 = load i32, i32* @EOF
%155 = icmp eq i32 %153, %154
br i1 %155, label %156, label %157
156: ; preds = %151
br label %166
157: ; preds = %151
%158 = load i32, i32* %5
%159 = trunc i32 %158 to i8
%160 = load i32, i32* %2
%161 = zext i32 %160 to i64
%162 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 %161
store i8 %159, i8* %162
br label %163
163: ; preds = %157
%164 = load i32, i32* %2
%165 = add i32 %164, 1
store i32 %165, i32* %2
br label %145
166: ; preds = %156, %145
%167 = load i64, i64* %4
%168 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 0
%169 = getelementptr inbounds i8, i8* %168, i64 4
%170 = load i64, i64* %6
%171 = trunc i64 %170 to i32
%172 = add nsw i32 %171, 4
%173 = call i64 @crc32(i64 %167, i8* %169, i32 %172)
store i64 %173, i64* %4
br label %174
174: ; preds = %226, %166
%175 = load i64, i64* %4
%176 = lshr i64 %175, 24
%177 = and i64 %176, 255
%178 = load i64, i64* %6
%179 = add i64 %178, 8
%180 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 %179
%181 = load i8, i8* %180
%182 = zext i8 %181 to i64
%183 = icmp eq i64 %177, %182
br i1 %183, label %184, label %214
184: ; preds = %174
%185 = load i64, i64* %4
%186 = lshr i64 %185, 16
%187 = and i64 %186, 255
%188 = load i64, i64* %6
%189 = add i64 %188, 9
%190 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 %189
%191 = load i8, i8* %190
%192 = zext i8 %191 to i64
%193 = icmp eq i64 %187, %192
br i1 %193, label %194, label %214
194: ; preds = %184
%195 = load i64, i64* %4
%196 = lshr i64 %195, 8
%197 = and i64 %196, 255
%198 = load i64, i64* %6
%199 = add i64 %198, 10
%200 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 %199
%201 = load i8, i8* %200
%202 = zext i8 %201 to i64
%203 = icmp eq i64 %197, %202
br i1 %203, label %204, label %214
204: ; preds = %194
%205 = load i64, i64* %4
%206 = and i64 %205, 255
%207 = load i64, i64* %6
%208 = add i64 %207, 11
%209 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 %208
%210 = load i8, i8* %209
%211 = zext i8 %210 to i64
%212 = icmp eq i64 %206, %211
br i1 %212, label %213, label %214
213: ; preds = %204
br label %238
214: ; preds = %204, %194, %184, %174
%215 = load i64, i64* %6
%216 = add i64 %215, 1
store i64 %216, i64* %6
%217 = load i64, i64* %6
%218 = icmp uge i64 %217, 499988
br i1 %218, label %219, label %220
219: ; preds = %214
br label %238
220: ; preds = %214
%221 = call i32 (...) @getchar()
store i32 %221, i32* %5
store i32 %221, i32* %5
%222 = load i32, i32* %5
%223 = load i32, i32* @EOF
%224 = icmp eq i32 %222, %223
br i1 %224, label %225, label %226
225: ; preds = %220
br label %238
226: ; preds = %220
%227 = load i32, i32* %5
%228 = trunc i32 %227 to i8
%229 = load i64, i64* %6
%230 = add i64 %229, 11
%231 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 %230
store i8 %228, i8* %231
%232 = load i64, i64* %4
%233 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 0
%234 = getelementptr inbounds i8, i8* %233, i64 7
%235 = load i64, i64* %6
%236 = getelementptr inbounds i8, i8* %234, i64 %235
%237 = call i64 @crc32(i64 %232, i8* %236, i32 1)
store i64 %237, i64* %4
br label %174
238: ; preds = %225, %219, %213
%239 = load i64, i64* %6
%240 = shl i64 %239, 24
%241 = and i64 %240, 255
%242 = trunc i64 %241 to i8
%243 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 0
store i8 %242, i8* %243
%244 = load i64, i64* %6
%245 = shl i64 %244, 16
%246 = and i64 %245, 255
%247 = trunc i64 %246 to i8
%248 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 1
store i8 %247, i8* %248
%249 = load i64, i64* %6
%250 = shl i64 %249, 8
%251 = and i64 %250, 255
%252 = trunc i64 %251 to i8
%253 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 2
store i8 %252, i8* %253
%254 = load i64, i64* %6
%255 = and i64 %254, 255
%256 = trunc i64 %255 to i8
%257 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 3
store i8 %256, i8* %257
store i32 0, i32* %2
br label %258
258: ; preds = %271, %238
%259 = load i32, i32* %2
%260 = zext i32 %259 to i64
%261 = load i64, i64* %6
%262 = add i64 %261, 12
%263 = icmp ult i64 %260, %262
br i1 %263, label %264, label %274
264: ; preds = %258
%265 = load i32, i32* %2
%266 = zext i32 %265 to i64
%267 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 %266
%268 = load i8, i8* %267
%269 = zext i8 %268 to i32
%270 = call i32 @putchar(i32 %269)
br label %271
271: ; preds = %264
%272 = load i32, i32* %2
%273 = add i32 %272, 1
store i32 %273, i32* %2
br label %258
274: ; preds = %258
br label %335
275: ; preds = %133, %128, %123, %115
store i32 0, i32* %2
br label %276
276: ; preds = %286, %275
%277 = load i32, i32* %2
%278 = icmp ult i32 %277, 8
br i1 %278, label %279, label %289
279: ; preds = %276
%280 = load i32, i32* %2
%281 = zext i32 %280 to i64
%282 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 %281
%283 = load i8, i8* %282
%284 = zext i8 %283 to i32
%285 = call i32 @putchar(i32 %284)
br label %286
286: ; preds = %279
%287 = load i32, i32* %2
%288 = add i32 %287, 1
store i32 %288, i32* %2
br label %276
289: ; preds = %276
store i32 8, i32* %2
br label %290
290: ; preds = %305, %289
%291 = load i32, i32* %2
%292 = zext i32 %291 to i64
%293 = load i64, i64* %6
%294 = add i64 %293, 12
%295 = icmp ult i64 %292, %294
br i1 %295, label %296, label %308
296: ; preds = %290
%297 = call i32 (...) @getchar()
store i32 %297, i32* %5
store i32 %297, i32* %5
%298 = load i32, i32* %5
%299 = load i32, i32* @EOF
%300 = icmp eq i32 %298, %299
br i1 %300, label %301, label %302
301: ; preds = %296
br label %308
302: ; preds = %296
%303 = load i32, i32* %5
%304 = call i32 @putchar(i32 %303)
br label %305
305: ; preds = %302
%306 = load i32, i32* %2
%307 = add i32 %306, 1
store i32 %307, i32* %2
br label %290
308: ; preds = %301, %290
%309 = load i32, i32* %5
%310 = load i32, i32* @EOF
%311 = icmp eq i32 %309, %310
br i1 %311, label %312, label %313
312: ; preds = %308
br label %362
313: ; preds = %308
%314 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 4
%315 = load i8, i8* %314
%316 = zext i8 %315 to i32
%317 = icmp eq i32 %316, 73
br i1 %317, label %318, label %334
318: ; preds = %313
%319 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 5
%320 = load i8, i8* %319
%321 = zext i8 %320 to i32
%322 = icmp eq i32 %321, 69
br i1 %322, label %323, label %334
323: ; preds = %318
%324 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 6
%325 = load i8, i8* %324
%326 = zext i8 %325 to i32
%327 = icmp eq i32 %326, 78
br i1 %327, label %328, label %334
328: ; preds = %323
%329 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 7
%330 = load i8, i8* %329
%331 = zext i8 %330 to i32
%332 = icmp eq i32 %331, 68
br i1 %332, label %333, label %334
333: ; preds = %328
br label %362
334: ; preds = %328, %323, %318, %313
br label %335
335: ; preds = %334, %274
%336 = load i32, i32* %5
%337 = load i32, i32* @EOF
%338 = icmp eq i32 %336, %337
br i1 %338, label %339, label %340
339: ; preds = %335
br label %362
340: ; preds = %335
%341 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 4
%342 = load i8, i8* %341
%343 = zext i8 %342 to i32
%344 = icmp eq i32 %343, 73
br i1 %344, label %345, label %361
345: ; preds = %340
%346 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 5
%347 = load i8, i8* %346
%348 = zext i8 %347 to i32
%349 = icmp eq i32 %348, 69
br i1 %349, label %350, label %361
350: ; preds = %345
%351 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 6
%352 = load i8, i8* %351
%353 = zext i8 %352 to i32
%354 = icmp eq i32 %353, 78
br i1 %354, label %355, label %361
355: ; preds = %350
%356 = getelementptr inbounds [500000 x i8], [500000 x i8]* %3, i64 0, i64 7
%357 = load i8, i8* %356
%358 = zext i8 %357 to i32
%359 = icmp eq i32 %358, 68
br i1 %359, label %360, label %361
360: ; preds = %355
br label %362
361: ; preds = %355, %350, %345, %340
br label %27
362: ; preds = %360, %339, %333, %312, %141, %114, %105, %96, %87, %59, %50, %41, %32
br label %363
363: ; preds = %362, %22
%364 = load i32, i32* %1
ret i32 %364
}

LLVM IR (-O2):
@EOF = global i32 0
@Z_NULL = global i8* null
define i32 @main() {
%1 = alloca [500000 x i8]
%2 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 0
%3 = tail call i32 (...) @getchar()
%4 = load i32, i32* @EOF
%5 = icmp eq i32 %3, %4
br i1 %5, label %260, label %6
6: ; preds = %0
%7 = tail call i32 @putchar(i32 %3)
%8 = tail call i32 (...) @getchar()
%9 = load i32, i32* @EOF
%10 = icmp eq i32 %8, %9
br i1 %10, label %260, label %11
11: ; preds = %6
%12 = tail call i32 @putchar(i32 %8)
%13 = tail call i32 (...) @getchar()
%14 = load i32, i32* @EOF
%15 = icmp eq i32 %13, %14
br i1 %15, label %260, label %16
16: ; preds = %11
%17 = tail call i32 @putchar(i32 %13)
%18 = tail call i32 (...) @getchar()
%19 = load i32, i32* @EOF
%20 = icmp eq i32 %18, %19
br i1 %20, label %260, label %21
21: ; preds = %16
%22 = tail call i32 @putchar(i32 %18)
%23 = tail call i32 (...) @getchar()
%24 = load i32, i32* @EOF
%25 = icmp eq i32 %23, %24
br i1 %25, label %260, label %26
26: ; preds = %21
%27 = tail call i32 @putchar(i32 %23)
%28 = tail call i32 (...) @getchar()
%29 = load i32, i32* @EOF
%30 = icmp eq i32 %28, %29
br i1 %30, label %260, label %31
31: ; preds = %26
%32 = tail call i32 @putchar(i32 %28)
%33 = tail call i32 (...) @getchar()
%34 = load i32, i32* @EOF
%35 = icmp eq i32 %33, %34
br i1 %35, label %260, label %36
36: ; preds = %31
%37 = tail call i32 @putchar(i32 %33)
%38 = tail call i32 (...) @getchar()
%39 = load i32, i32* @EOF
%40 = icmp eq i32 %38, %39
br i1 %40, label %260, label %41
41: ; preds = %36
%42 = tail call i32 @putchar(i32 %38)
%43 = load i32, i32* @EOF
%44 = icmp eq i32 %38, %43
br i1 %44, label %260, label %45
45: ; preds = %41
%46 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 1
%47 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 2
%48 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 3
%49 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 4
%50 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 5
%51 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 6
%52 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 7
%53 = bitcast i8* %49 to <4 x i8>*
%54 = bitcast i8* %49 to <4 x i8>*
br label %55
55: ; preds = %251, %45
%56 = call i32 (...) @getchar()
%57 = load i32, i32* @EOF
%58 = icmp eq i32 %56, %57
br i1 %58, label %260, label %59
59: ; preds = %55
%60 = trunc i32 %56 to i8
store i8 %60, i8* %2
%61 = call i32 (...) @getchar()
%62 = load i32, i32* @EOF
%63 = icmp eq i32 %61, %62
br i1 %63, label %260, label %64
64: ; preds = %59
%65 = trunc i32 %61 to i8
store i8 %65, i8* %46
%66 = call i32 (...) @getchar()
%67 = load i32, i32* @EOF
%68 = icmp eq i32 %66, %67
br i1 %68, label %260, label %69
69: ; preds = %64
%70 = trunc i32 %66 to i8
store i8 %70, i8* %47
%71 = call i32 (...) @getchar()
%72 = load i32, i32* @EOF
%73 = icmp eq i32 %71, %72
br i1 %73, label %260, label %74
74: ; preds = %69
%75 = trunc i32 %71 to i8
store i8 %75, i8* %48
%76 = load i8, i8* %2
%77 = zext i8 %76 to i64
%78 = load i8, i8* %46
%79 = zext i8 %78 to i64
%80 = add nuw nsw i64 %79, 8
%81 = shl i64 %77, %80
%82 = load i8, i8* %47
%83 = zext i8 %82 to i64
%84 = shl i64 %81, 24
%85 = shl nuw nsw i64 %83, 8
%86 = and i32 %71, 255
%87 = zext i32 %86 to i64
%88 = or i64 %85, %87
%89 = or i64 %88, %84
%90 = call i32 (...) @getchar()
%91 = load i32, i32* @EOF
%92 = icmp eq i32 %90, %91
br i1 %92, label %260, label %93
93: ; preds = %74
%94 = trunc i32 %90 to i8
store i8 %94, i8* %49
%95 = call i32 (...) @getchar()
%96 = load i32, i32* @EOF
%97 = icmp eq i32 %95, %96
br i1 %97, label %260, label %98
98: ; preds = %93
%99 = trunc i32 %95 to i8
store i8 %99, i8* %50
%100 = call i32 (...) @getchar()
%101 = load i32, i32* @EOF
%102 = icmp eq i32 %100, %101
br i1 %102, label %260, label %103
103: ; preds = %98
%104 = trunc i32 %100 to i8
store i8 %104, i8* %51
%105 = call i32 (...) @getchar()
%106 = load i32, i32* @EOF
%107 = icmp eq i32 %105, %106
br i1 %107, label %260, label %108
108: ; preds = %103
%109 = trunc i32 %105 to i8
store i8 %109, i8* %52
%110 = load i8, i8* %49
%111 = icmp eq i8 %110, 105
%112 = load i8, i8* %50
%113 = icmp eq i8 %112, 84
%114 = select i1 %111, i1 %113, i1 false
%115 = load i8, i8* %51
%116 = icmp eq i8 %115, 88
%117 = select i1 %114, i1 %116, i1 false
%118 = and i32 %105, 255
%119 = icmp eq i32 %118, 116
%120 = and i1 %119, %117
br i1 %120, label %147, label %121
121: ; preds = %108
%122 = load i8, i8* %2
%123 = zext i8 %122 to i32
%124 = call i32 @putchar(i32 %123)
%125 = load i8, i8* %46
%126 = zext i8 %125 to i32
%127 = call i32 @putchar(i32 %126)
%128 = load i8, i8* %47
%129 = zext i8 %128 to i32
%130 = call i32 @putchar(i32 %129)
%131 = load i8, i8* %48
%132 = zext i8 %131 to i32
%133 = call i32 @putchar(i32 %132)
%134 = load i8, i8* %49
%135 = zext i8 %134 to i32
%136 = call i32 @putchar(i32 %135)
%137 = load i8, i8* %50
%138 = zext i8 %137 to i32
%139 = call i32 @putchar(i32 %138)
%140 = load i8, i8* %51
%141 = zext i8 %140 to i32
%142 = call i32 @putchar(i32 %141)
%143 = load i8, i8* %52
%144 = zext i8 %143 to i32
%145 = call i32 @putchar(i32 %144)
%146 = add nuw nsw i64 %89, 12
br label %233
147: ; preds = %108
%148 = icmp ugt i64 %89, 499987
br i1 %148, label %260, label %149
149: ; preds = %147
%150 = load i8*, i8** @Z_NULL
%151 = call i64 @crc32(i64 0, i8* %150, i32 0)
%152 = add nuw nsw i64 %89, 12
br label %153
153: ; preds = %149, %158
%154 = phi i64 [ 8, %149 ], [ %162, %158 ]
%155 = call i32 (...) @getchar()
%156 = load i32, i32* @EOF
%157 = icmp eq i32 %155, %156
br i1 %157, label %164, label %158
158: ; preds = %153
%159 = trunc i32 %155 to i8
%160 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 %154
store i8 %159, i8* %160
%161 = add nuw nsw i64 %154, 1
%162 = and i64 %161, 4294967295
%163 = icmp ugt i64 %152, %162
br i1 %163, label %153, label %164
164: ; preds = %153, %158
%165 = trunc i64 %89 to i32
%166 = add nuw nsw i32 %165, 4
%167 = call i64 @crc32(i64 %151, i8* %49, i32 %166)
br label %168
168: ; preds = %206, %164
%169 = phi i64 [ %167, %164 ], [ %211, %206 ]
%170 = phi i32 [ %155, %164 ], [ %203, %206 ]
%171 = phi i64 [ %89, %164 ], [ %199, %206 ]
%172 = lshr i64 %169, 24
%173 = add nuw i64 %171, 8
%174 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 %173
%175 = load i8, i8* %174
%176 = trunc i64 %172 to i8
%177 = icmp eq i8 %175, %176
br i1 %177, label %178, label %198
178: ; preds = %168
%179 = lshr i64 %169, 16
%180 = add nuw i64 %171, 9
%181 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 %180
%182 = load i8, i8* %181
%183 = trunc i64 %179 to i8
%184 = icmp eq i8 %182, %183
br i1 %184, label %185, label %198
185: ; preds = %178
%186 = lshr i64 %169, 8
%187 = add nuw i64 %171, 10
%188 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 %187
%189 = load i8, i8* %188
%190 = trunc i64 %186 to i8
%191 = icmp eq i8 %189, %190
br i1 %191, label %192, label %198
192: ; preds = %185
%193 = add nuw i64 %171, 11
%194 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 %193
%195 = load i8, i8* %194
%196 = trunc i64 %169 to i8
%197 = icmp eq i8 %195, %196
br i1 %197, label %212, label %198
198: ; preds = %192, %185, %178, %168
%199 = add nuw i64 %171, 1
%200 = icmp ugt i64 %171, 499986
br i1 %200, label %201, label %202
201: ; preds = %198
store i8 0, i8* %2
store i8 0, i8* %46
store i8 0, i8* %47
store i8 20, i8* %48
br label %218
202: ; preds = %198
%203 = call i32 (...) @getchar()
%204 = load i32, i32* @EOF
%205 = icmp eq i32 %203, %204
br i1 %205, label %212, label %206
206: ; preds = %202
%207 = trunc i32 %203 to i8
%208 = add nuw nsw i64 %171, 12
%209 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 %208
store i8 %207, i8* %209
%210 = getelementptr inbounds i8, i8* %52, i64 %199
%211 = call i64 @crc32(i64 %169, i8* %210, i32 1)
br label %168
212: ; preds = %202, %192
%213 = phi i32 [ %170, %192 ], [ %203, %202 ]
%214 = phi i64 [ %171, %192 ], [ %199, %202 ]
store i8 0, i8* %2
store i8 0, i8* %46
store i8 0, i8* %47
%215 = trunc i64 %214 to i8
store i8 %215, i8* %48
%216 = add i64 %214, 12
%217 = icmp eq i64 %216, 0
br i1 %217, label %251, label %218
218: ; preds = %201, %212
%219 = phi i64 [ 500000, %201 ], [ %216, %212 ]
%220 = phi i32 [ %170, %201 ], [ %213, %212 ]
%221 = call i32 @putchar(i32 0)
%222 = icmp ugt i64 %219, 1
br i1 %222, label %223, label %251
223: ; preds = %218, %223
%224 = phi i64 [ %231, %223 ], [ 1, %218 ]
%225 = phi i32 [ %230, %223 ], [ 1, %218 ]
%226 = getelementptr inbounds [500000 x i8], [500000 x i8]* %1, i64 0, i64 %224
%227 = load i8, i8* %226
%228 = zext i8 %227 to i32
%229 = call i32 @putchar(i32 %228)
%230 = add i32 %225, 1
%231 = zext i32 %230 to i64
%232 = icmp ugt i64 %219, %231
br i1 %232, label %223, label %251
233: ; preds = %121, %238
%234 = phi i32 [ 8, %121 ], [ %240, %238 ]
%235 = call i32 (...) @getchar()
%236 = load i32, i32* @EOF
%237 = icmp eq i32 %235, %236
br i1 %237, label %260, label %238
238: ; preds = %233
%239 = call i32 @putchar(i32 %235)
%240 = add i32 %234, 1
%241 = zext i32 %240 to i64
%242 = icmp ugt i64 %146, %241
br i1 %242, label %233, label %243
243: ; preds = %238
%244 = load i32, i32* @EOF
%245 = icmp eq i32 %235, %244
%246 = load <4 x i8>, <4 x i8>* %53
%247 = freeze <4 x i8> %246
%248 = bitcast <4 x i8> %247 to i32
%249 = icmp eq i32 %248, 1145980233
%250 = or i1 %245, %249
br i1 %250, label %260, label %251
251: ; preds = %223, %243, %218, %212
%252 = phi i32 [ %213, %212 ], [ %220, %218 ], [ %235, %243 ], [ %220, %223 ]
%253 = load i32, i32* @EOF
%254 = icmp eq i32 %252, %253
%255 = load <4 x i8>, <4 x i8>* %54
%256 = freeze <4 x i8> %255
%257 = bitcast <4 x i8> %256 to i32
%258 = icmp eq i32 %257, 1145980233
%259 = or i1 %254, %258
br i1 %259, label %260, label %55
260: ; preds = %251, %243, %147, %103, %98, %93, %74, %69, %64, %59, %55, %233, %36, %31, %26, %21, %16, %11, %6, %0, %41
ret i32 0
}