main() {
  char *c, b[5 * 72];
  int a, e, d[9 * 9 * 9];
  while (gets(b)) {
    if (0 [b] - 7 * 5) {
      c = b;
      while ((*c - 6 * 7) * *c)
        c = c + 1;
      if ((-0)[c] && gets(b + 8 * 5 * 3) && gets(b + 8 * 5 * 6)) {
        a = 0;
        while (a[b]) {
          a[d] = !!(a[b] - 4 * 8);
          a = a + 1;
        }
        while (a < 8 * 5 * 3)
          d[(a++)] = 0;
        a = 0;
        while (b[a + 8 * 3 * 5]) {
          d[a] = a[d] + !!(b[a + 40 * 3] - 4 * 8) * 2;
          ++a;
        }
        a = 0;
        while (a[b + 6 * 40]) {
          a[d] += !!(b[a + 5 * 6 * 8] - 4 * 8) * 4;
          a = a + 1;
        }
        a = 0;
        while (a < 3 * 8 * 5) {
          if (a[d]) {
            e = 1;
            while (e[a + d]) {
              *(d + a + e) = a[d + e - 1] + (d[a + e] << (3 * e));
              e = e + 1;
            }
            a = a + e - 1;
            putchar(!!(*(d + a) % (64) - 12 * 5) + (e > 4)
                        ? " A?B?K?L?CIF?MSP?E?H?O?R?DJG?NTQ?????U?V?????X??????"
                          "?Z????W??Y??"[e > 2 ? 2 : a[d]]
                        : 6 * 8 + (" A?B?K?L?CIF?MSP?E?H?O?R?DJG?NTQ?????U?V???"
                                   "??X???????Z????W??Y??"[d[a] / 8 / 8] -
                                   4) %
                                      (10));
            if (!(2 [a + d] + 3 [d + a]))
              putchar(4 * 8);
          }
          a = a + 1;
        }
        putchar(5 * 2);
      } else {
        c = b;
        e = 0;
        while (*c) {
          *c += -(*c > 8 * 12) * 32;
          a = 8 * 8;
          if (*c >= 48 && *c < 8 * 8 - 6) {
            *c = (*c + 1) % (5 * 2) + 65;
            while (--a > 0 && *c - a[" A?B?K?L?CIF?MSP?E?H?O?R?DJG?NTQ?????U?V?"
                                     "????X???????Z????W??Y??"])
              ;
            d[(e++)] = 4;
            (*(d + (e++))) = 07;
          } else
            while (a-- > 1 && *c - " A?B?K?L?CIF?MSP?E?H?O?R?DJG?NTQ?????U?V???"
                                   "??X???????Z????W??Y??"[a])
              ;
          d[(e = e + 1) - 1] = a % 8;
          while (a /= 8)
            d[(e++)] = a % 8;
          ++c;
          *(e++ + d) = 0;
        }
        --e;
        if (e > 0) {
          a = 1;
          while (a < 8) {
            c = b;
            while (c < e + b) {
              putchar(*(c - b + d) & a ? 6 * 7 : 8 * 4);
              c++;
            }
            a = a + a;
            putchar(2 * 5);
          }
          putchar(5 * 2);
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd00,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x180(%rbp),%rdi
mov    $0x0,%al
call   1040 <gets@plt>
cmp    $0x0,%eax
je     18a4 <main+0x784>
movsbl -0x180(%rbp),%eax
sub    $0x23,%eax
cmp    $0x0,%eax
je     189f <main+0x77f>
lea    -0x180(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
sub    $0x2a,%eax
mov    -0x10(%rbp),%rcx
movsbl (%rcx),%ecx
imul   %ecx,%eax
cmp    $0x0,%eax
je     1195 <main+0x75>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1167 <main+0x47>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     158b <main+0x46b>
lea    -0x180(%rbp),%rdi
add    $0x78,%rdi
mov    $0x0,%al
call   1040 <gets@plt>
cmp    $0x0,%eax
je     158b <main+0x46b>
lea    -0x180(%rbp),%rdi
add    $0xf0,%rdi
mov    $0x0,%al
call   1040 <gets@plt>
cmp    $0x0,%eax
je     158b <main+0x46b>
movl   $0x0,-0x184(%rbp)
movslq -0x184(%rbp),%rax
cmpb   $0x0,-0x180(%rbp,%rax,1)
je     1240 <main+0x120>
movslq -0x184(%rbp),%rax
movsbl -0x180(%rbp,%rax,1),%eax
ff
sub    $0x20,%eax
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%ecx
movslq -0x184(%rbp),%rax
mov    %ecx,-0xcf0(%rbp,%rax,4)
mov    -0x184(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x184(%rbp)
jmp    11e8 <main+0xc8>
jmp    1245 <main+0x125>
cmpl   $0x78,-0x184(%rbp)
jge    1275 <main+0x155>
mov    -0x184(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x184(%rbp)
cltq
movl   $0x0,-0xcf0(%rbp,%rax,4)
jmp    1245 <main+0x125>
movl   $0x0,-0x184(%rbp)
mov    -0x184(%rbp),%eax
add    $0x78,%eax
cltq
cmpb   $0x0,-0x180(%rbp,%rax,1)
je     12f2 <main+0x1d2>
movslq -0x184(%rbp),%rax
mov    -0xcf0(%rbp,%rax,4),%ecx
mov    -0x184(%rbp),%eax
add    $0x78,%eax
cltq
movsbl -0x180(%rbp,%rax,1),%eax
ff
sub    $0x20,%eax
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
shl    $0x1,%eax
add    %eax,%ecx
movslq -0x184(%rbp),%rax
mov    %ecx,-0xcf0(%rbp,%rax,4)
mov    -0x184(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x184(%rbp)
jmp    127f <main+0x15f>
movl   $0x0,-0x184(%rbp)
movslq -0x184(%rbp),%rax
cmpb   $0x0,-0x90(%rbp,%rax,1)
je     1364 <main+0x244>
mov    -0x184(%rbp),%eax
add    $0xf0,%eax
cltq
movsbl -0x180(%rbp,%rax,1),%eax
ff
sub    $0x20,%eax
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%ecx
shl    $0x2,%ecx
movslq -0x184(%rbp),%rax
add    -0xcf0(%rbp,%rax,4),%ecx
mov    %ecx,-0xcf0(%rbp,%rax,4)
mov    -0x184(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x184(%rbp)
jmp    12fc <main+0x1dc>
movl   $0x0,-0x184(%rbp)
cmpl   $0x78,-0x184(%rbp)
jge    157a <main+0x45a>
movslq -0x184(%rbp),%rax
cmpl   $0x0,-0xcf0(%rbp,%rax,4)
je     1566 <main+0x446>
movl   $0x1,-0x188(%rbp)
mov    -0x188(%rbp),%ecx
mov    -0x184(%rbp),%edx
lea    -0xcf0(%rbp),%rax
movslq %edx,%rdx
shl    $0x2,%rdx
add    %rdx,%rax
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     1439 <main+0x319>
mov    -0x184(%rbp),%ecx
lea    -0xcf0(%rbp),%rax
movslq -0x188(%rbp),%rdx
shl    $0x2,%rdx
add    %rdx,%rax
movslq %ecx,%rcx
mov    -0x4(%rax,%rcx,4),%edx
mov    -0x184(%rbp),%eax
add    -0x188(%rbp),%eax
cltq
mov    -0xcf0(%rbp,%rax,4),%eax
imul   $0x3,-0x188(%rbp),%ecx
shl    %cl,%eax
add    %eax,%edx
lea    -0xcf0(%rbp),%rax
movslq -0x184(%rbp),%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x188(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x188(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x188(%rbp)
jmp    139a <main+0x27a>
mov    -0x184(%rbp),%eax
add    -0x188(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x184(%rbp)
movslq -0x184(%rbp),%rax
mov    -0xcf0(%rbp,%rax,4),%eax
mov    $0x40,%ecx
cltd
idiv   %ecx
sub    $0x3c,%edx
cmp    $0x0,%edx
setne  %al
xor    $0xff,%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x4,-0x188(%rbp)
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmp    $0x0,%eax
je     14e1 <main+0x3c1>
cmpl   $0x2,-0x188(%rbp)
jle    14ae <main+0x38e>
mov    $0x2,%eax
mov    %eax,-0xcf4(%rbp)
jmp    14c2 <main+0x3a2>
movslq -0x184(%rbp),%rax
mov    -0xcf0(%rbp,%rax,4),%eax
mov    %eax,-0xcf4(%rbp)
mov    -0xcf4(%rbp),%eax
movslq %eax,%rcx
lea    0xb2e(%rip),%rax
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0xcf8(%rbp)
jmp    1523 <main+0x403>
movslq -0x184(%rbp),%rax
mov    -0xcf0(%rbp,%rax,4),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    $0x8,%ecx
cltd
idiv   %ecx
movslq %eax,%rcx
lea    0xaf7(%rip),%rax
movsbl (%rax,%rcx,1),%eax
sub    $0x4,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
add    $0x30,%eax
mov    %eax,-0xcf8(%rbp)
mov    -0xcf8(%rbp),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movslq -0x184(%rbp),%rax
mov    -0xce8(%rbp,%rax,4),%eax
movslq -0x184(%rbp),%rcx
add    -0xce4(%rbp,%rcx,4),%eax
cmp    $0x0,%eax
jne    1561 <main+0x441>
mov    $0x20,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
jmp    1566 <main+0x446>
mov    -0x184(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x184(%rbp)
jmp    136e <main+0x24e>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
jmp    189a <main+0x77a>
lea    -0x180(%rbp),%rax
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x188(%rbp)
mov    -0x10(%rbp),%rax
cmpb   $0x0,(%rax)
je     17c5 <main+0x6a5>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x60,%eax
setg   %al
and    $0x1,%al
movzbl %al,%eax
xor    %edx,%edx
sub    %eax,%edx
shl    $0x5,%edx
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
add    %edx,%ecx
mov    %cl,(%rax)
movl   $0x40,-0x184(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     16b8 <main+0x598>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3a,%eax
jge    16b8 <main+0x598>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
add    $0x1,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
add    $0x41,%edx
mov    %dl,%cl
mov    -0x10(%rbp),%rax
mov    %cl,(%rax)
mov    -0x184(%rbp),%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x184(%rbp)
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0xcf9(%rbp)
jle    165f <main+0x53f>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
movslq -0x184(%rbp),%rdx
lea    0x9b3(%rip),%rcx
movsbl (%rcx,%rdx,1),%ecx
sub    %ecx,%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0xcf9(%rbp)
mov    -0xcf9(%rbp),%al
test   $0x1,%al
jne    1672 <main+0x552>
jmp    1677 <main+0x557>
jmp    1618 <main+0x4f8>
mov    -0x188(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x188(%rbp)
cltq
movl   $0x4,-0xcf0(%rbp,%rax,4)
mov    -0x188(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x188(%rbp)
cltq
movl   $0x7,-0xcf0(%rbp,%rax,4)
jmp    1723 <main+0x603>
jmp    16bd <main+0x59d>
mov    -0x184(%rbp),%ecx
mov    %ecx,%eax
add    $0xffffffff,%eax
mov    %eax,-0x184(%rbp)
xor    %eax,%eax
cmp    $0x1,%ecx
mov    %al,-0xcfa(%rbp)
jle    1706 <main+0x5e6>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
movslq -0x184(%rbp),%rdx
lea    0x90c(%rip),%rcx
movsbl (%rcx,%rdx,1),%ecx
sub    %ecx,%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0xcfa(%rbp)
mov    -0xcfa(%rbp),%al
test   $0x1,%al
jne    1719 <main+0x5f9>
jmp    171e <main+0x5fe>
jmp    16bd <main+0x59d>
jmp    1723 <main+0x603>
mov    -0x184(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    -0x188(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x188(%rbp)
sub    $0x1,%eax
cltq
mov    %edx,-0xcf0(%rbp,%rax,4)
mov    -0x184(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    %eax,-0x184(%rbp)
cmp    $0x0,%eax
je     1796 <main+0x676>
mov    -0x184(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    -0x188(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x188(%rbp)
cltq
mov    %edx,-0xcf0(%rbp,%rax,4)
jmp    174c <main+0x62c>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x188(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x188(%rbp)
cltq
movl   $0x0,-0xcf0(%rbp,%rax,4)
jmp    15a0 <main+0x480>
mov    -0x188(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x188(%rbp)
cmpl   $0x0,-0x188(%rbp)
jle    1895 <main+0x775>
movl   $0x1,-0x184(%rbp)
cmpl   $0x8,-0x184(%rbp)
jge    1889 <main+0x769>
lea    -0x180(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x188(%rbp),%edx
lea    -0x180(%rbp),%rcx
movslq %edx,%rdx
add    %rdx,%rcx
cmp    %rcx,%rax
jae    1866 <main+0x746>
mov    -0x10(%rbp),%rax
lea    -0x180(%rbp),%rcx
sub    %rcx,%rax
mov    -0xcf0(%rbp,%rax,4),%ecx
and    -0x184(%rbp),%ecx
mov    $0x20,%edi
mov    $0x2a,%eax
cmp    $0x0,%ecx
cmovne %eax,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1803 <main+0x6e3>
mov    -0x184(%rbp),%eax
add    -0x184(%rbp),%eax
mov    %eax,-0x184(%rbp)
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
jmp    17eb <main+0x6cb>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
jmp    189a <main+0x77a>
jmp    189f <main+0x77f>
jmp    1132 <main+0x12>
mov    -0x4(%rbp),%eax
add    $0xd00,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xcd8,%rsp
mov    %rsp,%r13
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <gets@plt>
test   %eax,%eax
je     166a <main+0x53a>
lea    0xea3(%rip),%r14
movabs $0x700000004,%r15
jmp    1193 <main+0x63>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    %r13,%rdi
xor    %eax,%eax
call   1050 <gets@plt>
test   %eax,%eax
je     166a <main+0x53a>
movsbl (%rsp),%eax
cmp    $0x23,%eax
je     1181 <main+0x51>
lea    -0x2a(%rax),%ecx
imul   %eax,%ecx
test   %ecx,%ecx
je     11c1 <main+0x91>
lea    0x1(%rsp),%rcx
nopl   0x0(%rax,%rax,1)
movsbl (%rcx),%eax
lea    -0x2a(%rax),%edx
imul   %eax,%edx
add    $0x1,%rcx
test   %edx,%edx
jne    11b0 <main+0x80>
test   %al,%al
je     13d0 <main+0x2a0>
lea    0x78(%rsp),%rdi
xor    %eax,%eax
call   1050 <gets@plt>
test   %eax,%eax
je     13d0 <main+0x2a0>
lea    0xf0(%rsp),%rdi
xor    %eax,%eax
call   1050 <gets@plt>
test   %eax,%eax
je     13d0 <main+0x2a0>
mov    (%rsp),%cl
xor    %eax,%eax
test   %cl,%cl
je     1221 <main+0xf1>
nopl   (%rax)
xor    %edx,%edx
cmp    $0x20,%cl
setne  %dl
mov    %edx,0x170(%rsp,%rax,4)
movzbl 0x1(%rsp,%rax,1),%ecx
add    $0x1,%rax
test   %cl,%cl
jne    1200 <main+0xd0>
cmp    $0x77,%eax
ja     1244 <main+0x114>
mov    %eax,%ecx
lea    (%rsp,%rcx,4),%rdi
add    $0x170,%rdi
mov    $0x77,%ecx
sub    %eax,%ecx
lea    0x4(,%rcx,4),%rdx
xor    %esi,%esi
call   1040 <memset@plt>
mov    0x78(%rsp),%cl
test   %cl,%cl
je     126e <main+0x13e>
xor    %eax,%eax
xchg   %ax,%ax
xor    %edx,%edx
cmp    $0x20,%cl
setne  %dl
add    %edx,%edx
add    %edx,0x170(%rsp,%rax,4)
movzbl 0x79(%rsp,%rax,1),%ecx
add    $0x1,%rax
test   %cl,%cl
jne    1250 <main+0x120>
cmpb   $0x0,0xf0(%rsp)
je     12a5 <main+0x175>
xor    %eax,%eax
nopw   0x0(%rax,%rax,1)
xor    %ecx,%ecx
cmpb   $0x20,0xf0(%rsp,%rax,1)
20
setne  %cl
shl    $0x2,%ecx
add    %ecx,0x170(%rsp,%rax,4)
cmpb   $0x0,0xf1(%rsp,%rax,1)
lea    0x1(%rax),%rax
jne    1280 <main+0x150>
xor    %r12d,%r12d
jmp    12c2 <main+0x192>
nopw   0x0(%rax,%rax,1)
lea    0x1(%r12),%eax
cmp    $0x77,%r12d
mov    %eax,%r12d
jge    1175 <main+0x45>
movslq %r12d,%rax
cmpl   $0x0,0x170(%rsp,%rax,4)
je     12b0 <main+0x180>
cmpl   $0x0,0x174(%rsp,%rax,4)
je     1310 <main+0x1e0>
lea    (%rsp,%rax,4),%rdx
add    $0x170,%rdx
mov    $0x3,%ecx
mov    $0x2,%eax
xchg   %ax,%ax
mov    -0x4(%rdx,%rax,4),%esi
shl    %cl,%esi
add    -0x8(%rdx,%rax,4),%esi
mov    %esi,-0x4(%rdx,%rax,4)
add    $0x3,%ecx
cmpl   $0x0,(%rdx,%rax,4)
lea    0x1(%rax),%rax
jne    12f0 <main+0x1c0>
add    $0xffffffff,%eax
jmp    1315 <main+0x1e5>
mov    $0x1,%eax
lea    (%rax,%r12,1),%ecx
movslq %ecx,%rbp
mov    0x16c(%rsp,%rbp,4),%ecx
add    $0xffffffffffffffff,%rbp
lea    0x3f(%rcx),%edx
test   %ecx,%ecx
cmovns %ecx,%edx
mov    %edx,%esi
and    $0xffffffc0,%esi
mov    %ecx,%edi
sub    %esi,%edi
xor    %esi,%esi
cmp    $0x3c,%edi
setne  %sil
cmp    $0x5,%eax
mov    $0x0,%edi
adc    $0xffffffff,%edi
cmp    %edi,%esi
jne    1380 <main+0x250>
sar    $0x6,%edx
movslq %edx,%rcx
movsbl (%rcx,%r14,1),%ecx
add    $0xfffffffc,%ecx
imul   $0x6667,%ecx,%edx
mov    %edx,%esi
shr    $0x1f,%esi
sar    $0x12,%edx
add    %esi,%edx
add    %edx,%edx
lea    (%rdx,%rdx,4),%edx
sub    %edx,%ecx
add    $0x30,%ecx
movzwl %cx,%edi
jmp    1393 <main+0x263>
nopl   (%rax)
cmp    $0x3,%eax
mov    $0x2,%edx
cmovae %edx,%ecx
movslq %ecx,%rcx
movsbl (%rcx,%r14,1),%edi
add    %eax,%r12d
add    $0xffffffff,%r12d
xor    %eax,%eax
call   1030 <putchar@plt>
mov    0x178(%rsp,%rbp,4),%eax
add    0x17c(%rsp,%rbp,4),%eax
jne    12b0 <main+0x180>
mov    $0x20,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
jmp    12b0 <main+0x180>
cs nopw 0x0(%rax,%rax,1)
mov    (%rsp),%sil
test   %sil,%sil
je     1181 <main+0x51>
xor    %ecx,%ecx
mov    %r13,%rax
jmp    1424 <main+0x2f4>
movslq %ecx,%rsi
movl   $0x0,0x170(%rsp,%rsi,4)
add    $0x1,%esi
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
lea    0x2(%rdx),%ecx
movslq %esi,%rsi
movl   $0x0,0x170(%rsp,%rsi,4)
mov    0x1(%rax),%sil
add    $0x1,%rax
test   %sil,%sil
je     15a0 <main+0x470>
cmp    $0x61,%sil
setge  %dl
shl    $0x5,%dl
sub    %dl,%sil
mov    %sil,(%rax)
lea    -0x30(%rsi),%edx
cmp    $0xa,%dl
jae    14a0 <main+0x370>
add    $0x1,%sil
movzbl %sil,%esi
imul   $0xcd,%esi,%edx
shr    $0xa,%edx
and    $0xfffffffe,%edx
lea    (%rdx,%rdx,4),%edx
sub    %dl,%sil
add    $0x41,%sil
mov    %sil,(%rax)
mov    $0x40,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    -0x1(%rdi,%r14,1),%sil
je     14df <main+0x3af>
cmp    -0x2(%rdi,%r14,1),%sil
je     14eb <main+0x3bb>
cmp    -0x3(%rdi,%r14,1),%sil
je     14f7 <main+0x3c7>
cmp    $0x4,%rdi
je     1509 <main+0x3d9>
lea    -0x4(%rdi),%rdx
cmp    -0x4(%rdi,%r14,1),%sil
mov    %rdx,%rdi
jne    1470 <main+0x340>
jmp    1510 <main+0x3e0>
nopl   0x0(%rax,%rax,1)
mov    $0x40,%edi
cs nopw 0x0(%rax,%rax,1)
nop
cmp    -0x1(%rdi,%r14,1),%sil
je     14e5 <main+0x3b5>
cmp    -0x2(%rdi,%r14,1),%sil
je     14f1 <main+0x3c1>
cmp    -0x3(%rdi,%r14,1),%sil
je     1500 <main+0x3d0>
cmp    $0x4,%rdi
je     13e4 <main+0x2b4>
lea    -0x4(%rdi),%rdx
cmp    -0x4(%rdi,%r14,1),%sil
mov    %rdx,%rdi
jne    14b0 <main+0x380>
jmp    151e <main+0x3ee>
add    $0xffffffffffffffff,%rdi
jmp    14fb <main+0x3cb>
add    $0xffffffffffffffff,%rdi
jmp    1504 <main+0x3d4>
add    $0xfffffffffffffffe,%rdi
jmp    14fb <main+0x3cb>
add    $0xfffffffffffffffe,%rdi
jmp    1504 <main+0x3d4>
add    $0xfffffffffffffffd,%rdi
mov    %rdi,%rdx
jmp    1510 <main+0x3e0>
add    $0xfffffffffffffffd,%rdi
mov    %rdi,%rdx
jmp    151e <main+0x3ee>
xor    %edx,%edx
nopl   0x0(%rax,%rax,1)
movslq %ecx,%rsi
mov    %r15,0x170(%rsp,%rsi,4)
add    $0x2,%ecx
lea    0x7(%rdx),%edi
test   %edx,%edx
mov    %edx,%esi
cmovs  %edi,%esi
and    $0xfffffff8,%esi
mov    %edx,%ebp
sub    %esi,%ebp
movslq %ecx,%rsi
mov    %ebp,0x170(%rsp,%rsi,4)
add    $0x1,%esi
cmp    $0xf,%edi
jb     1400 <main+0x2d0>
movslq %esi,%rsi
lea    (%rsp,%rsi,4),%rsi
add    $0x170,%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0x7(%rdx),%edi
test   %edx,%edx
cmovns %edx,%edi
sar    $0x3,%edi
lea    0x7(%rdi),%ebp
test   %edi,%edi
mov    %edi,%ebx
mov    %edi,%edx
cmovs  %ebp,%edi
and    $0xfffffff8,%edi
sub    %edi,%ebx
mov    %ebx,(%rsi)
add    $0x1,%ecx
add    $0x4,%rsi
cmp    $0xe,%ebp
ja     1560 <main+0x430>
lea    0x1(%rcx),%esi
jmp    1400 <main+0x2d0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
test   %edx,%edx
js     1181 <main+0x51>
add    $0x1,%edx
lea    (%rsp,%rdx,1),%r12
lea    0x170(%rsp),%rbp
mov    %r13,%rbx
jmp    15d4 <main+0x4a4>
nopl   0x0(%rax)
xor    %eax,%eax
call   1030 <putchar@plt>
add    $0x1,%r13
add    $0x4,%rbp
cmp    %r12,%r13
jae    15e6 <main+0x4b6>
testb  $0x1,0x0(%rbp)
mov    $0x20,%edi
je     15c0 <main+0x490>
mov    $0x2a,%edi
jmp    15c0 <main+0x490>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
lea    0x170(%rsp),%rbp
mov    %rbx,%r13
jmp    1614 <main+0x4e4>
nop
xor    %eax,%eax
call   1030 <putchar@plt>
add    $0x1,%rbx
add    $0x4,%rbp
cmp    %r12,%rbx
jae    1626 <main+0x4f6>
testb  $0x2,0x0(%rbp)
mov    $0x20,%edi
je     1600 <main+0x4d0>
mov    $0x2a,%edi
jmp    1600 <main+0x4d0>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
lea    0x170(%rsp),%rbp
mov    %r13,%rbx
jmp    1658 <main+0x528>
nop
xor    %eax,%eax
call   1030 <putchar@plt>
add    $0x1,%rbx
add    $0x4,%rbp
cmp    %r12,%rbx
jae    1169 <main+0x39>
testb  $0x4,0x0(%rbp)
mov    $0x20,%edi
je     1640 <main+0x510>
mov    $0x2a,%edi
jmp    1640 <main+0x510>
xor    %eax,%eax
add    $0xcd8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [65 x i8] c" A?B?K?L?CIF?MSP?E?H?O?R?DJG?NTQ?????U?V?????X???????Z????W??Y??\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i8*
%3 = alloca [360 x i8]
%4 = alloca i32
%5 = alloca i32
%6 = alloca [729 x i32]
store i32 0, i32* %1
br label %7
7: ; preds = %421, %0
%8 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
%9 = call i32 (i8*, ...) bitcast (i32 (...)* @gets to i32 (i8*, ...)*)(i8* %8)
%10 = icmp ne i32 %9, 0
br i1 %10, label %11, label %422
11: ; preds = %7
%12 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
%13 = load i8, i8* %12
%14 = sext i8 %13 to i32
%15 = sub nsw i32 %14, 35
%16 = icmp ne i32 %15, 0
br i1 %16, label %17, label %421
17: ; preds = %11
%18 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
store i8* %18, i8** %2
br label %19
19: ; preds = %29, %17
%20 = load i8*, i8** %2
%21 = load i8, i8* %20
%22 = sext i8 %21 to i32
%23 = sub nsw i32 %22, 42
%24 = load i8*, i8** %2
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = mul nsw i32 %23, %26
%28 = icmp ne i32 %27, 0
br i1 %28, label %29, label %32
29: ; preds = %19
%30 = load i8*, i8** %2
%31 = getelementptr inbounds i8, i8* %30, i64 1
store i8* %31, i8** %2
br label %19
32: ; preds = %19
%33 = load i8*, i8** %2
%34 = getelementptr inbounds i8, i8* %33, i64 0
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = icmp ne i32 %36, 0
br i1 %37, label %38, label %265
38: ; preds = %32
%39 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
%40 = getelementptr inbounds i8, i8* %39, i64 120
%41 = call i32 (i8*, ...) bitcast (i32 (...)* @gets to i32 (i8*, ...)*)(i8* %40)
%42 = icmp ne i32 %41, 0
br i1 %42, label %43, label %265
43: ; preds = %38
%44 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
%45 = getelementptr inbounds i8, i8* %44, i64 240
%46 = call i32 (i8*, ...) bitcast (i32 (...)* @gets to i32 (i8*, ...)*)(i8* %45)
%47 = icmp ne i32 %46, 0
br i1 %47, label %48, label %265
48: ; preds = %43
store i32 0, i32* %4
br label %49
49: ; preds = %55, %48
%50 = load i32, i32* %4
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 %51
%53 = load i8, i8* %52
%54 = icmp ne i8 %53, 0
br i1 %54, label %55, label %71
55: ; preds = %49
%56 = load i32, i32* %4
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 %57
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = sub nsw i32 %60, 32
%62 = icmp ne i32 %61, 0
%63 = xor i1 %62, true
%64 = xor i1 %63, true
%65 = zext i1 %64 to i32
%66 = load i32, i32* %4
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %67
store i32 %65, i32* %68
%69 = load i32, i32* %4
%70 = add nsw i32 %69, 1
store i32 %70, i32* %4
br label %49
71: ; preds = %49
br label %72
72: ; preds = %75, %71
%73 = load i32, i32* %4
%74 = icmp slt i32 %73, 120
br i1 %74, label %75, label %80
75: ; preds = %72
%76 = load i32, i32* %4
%77 = add nsw i32 %76, 1
store i32 %77, i32* %4
%78 = sext i32 %76 to i64
%79 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %78
store i32 0, i32* %79
br label %72
80: ; preds = %72
store i32 0, i32* %4
br label %81
81: ; preds = %88, %80
%82 = load i32, i32* %4
%83 = add nsw i32 %82, 120
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 %84
%86 = load i8, i8* %85
%87 = icmp ne i8 %86, 0
br i1 %87, label %88, label %111
88: ; preds = %81
%89 = load i32, i32* %4
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %90
%92 = load i32, i32* %91
%93 = load i32, i32* %4
%94 = add nsw i32 %93, 120
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 %95
%97 = load i8, i8* %96
%98 = sext i8 %97 to i32
%99 = sub nsw i32 %98, 32
%100 = icmp ne i32 %99, 0
%101 = xor i1 %100, true
%102 = xor i1 %101, true
%103 = zext i1 %102 to i32
%104 = mul nsw i32 %103, 2
%105 = add nsw i32 %92, %104
%106 = load i32, i32* %4
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %107
store i32 %105, i32* %108
%109 = load i32, i32* %4
%110 = add nsw i32 %109, 1
store i32 %110, i32* %4
br label %81
111: ; preds = %81
store i32 0, i32* %4
br label %112
112: ; preds = %120, %111
%113 = load i32, i32* %4
%114 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
%115 = getelementptr inbounds i8, i8* %114, i64 240
%116 = sext i32 %113 to i64
%117 = getelementptr inbounds i8, i8* %115, i64 %116
%118 = load i8, i8* %117
%119 = icmp ne i8 %118, 0
br i1 %119, label %120, label %140
120: ; preds = %112
%121 = load i32, i32* %4
%122 = add nsw i32 %121, 240
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 %123
%125 = load i8, i8* %124
%126 = sext i8 %125 to i32
%127 = sub nsw i32 %126, 32
%128 = icmp ne i32 %127, 0
%129 = xor i1 %128, true
%130 = xor i1 %129, true
%131 = zext i1 %130 to i32
%132 = mul nsw i32 %131, 4
%133 = load i32, i32* %4
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %134
%136 = load i32, i32* %135
%137 = add nsw i32 %136, %132
store i32 %137, i32* %135
%138 = load i32, i32* %4
%139 = add nsw i32 %138, 1
store i32 %139, i32* %4
br label %112
140: ; preds = %112
store i32 0, i32* %4
br label %141
141: ; preds = %260, %140
%142 = load i32, i32* %4
%143 = icmp slt i32 %142, 120
br i1 %143, label %144, label %263
144: ; preds = %141
%145 = load i32, i32* %4
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %146
%148 = load i32, i32* %147
%149 = icmp ne i32 %148, 0
br i1 %149, label %150, label %260
150: ; preds = %144
store i32 1, i32* %5
br label %151
151: ; preds = %161, %150
%152 = load i32, i32* %5
%153 = load i32, i32* %4
%154 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%155 = sext i32 %153 to i64
%156 = getelementptr inbounds i32, i32* %154, i64 %155
%157 = sext i32 %152 to i64
%158 = getelementptr inbounds i32, i32* %156, i64 %157
%159 = load i32, i32* %158
%160 = icmp ne i32 %159, 0
br i1 %160, label %161, label %190
161: ; preds = %151
%162 = load i32, i32* %4
%163 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%164 = load i32, i32* %5
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds i32, i32* %163, i64 %165
%167 = getelementptr inbounds i32, i32* %166, i64 -1
%168 = sext i32 %162 to i64
%169 = getelementptr inbounds i32, i32* %167, i64 %168
%170 = load i32, i32* %169
%171 = load i32, i32* %4
%172 = load i32, i32* %5
%173 = add nsw i32 %171, %172
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %174
%176 = load i32, i32* %175
%177 = load i32, i32* %5
%178 = mul nsw i32 3, %177
%179 = shl i32 %176, %178
%180 = add nsw i32 %170, %179
%181 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%182 = load i32, i32* %4
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds i32, i32* %181, i64 %183
%185 = load i32, i32* %5
%186 = sext i32 %185 to i64
%187 = getelementptr inbounds i32, i32* %184, i64 %186
store i32 %180, i32* %187
%188 = load i32, i32* %5
%189 = add nsw i32 %188, 1
store i32 %189, i32* %5
br label %151
190: ; preds = %151
%191 = load i32, i32* %4
%192 = load i32, i32* %5
%193 = add nsw i32 %191, %192
%194 = sub nsw i32 %193, 1
store i32 %194, i32* %4
%195 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%196 = load i32, i32* %4
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds i32, i32* %195, i64 %197
%199 = load i32, i32* %198
%200 = srem i32 %199, 64
%201 = sub nsw i32 %200, 60
%202 = icmp ne i32 %201, 0
%203 = xor i1 %202, true
%204 = xor i1 %203, true
%205 = zext i1 %204 to i32
%206 = load i32, i32* %5
%207 = icmp sgt i32 %206, 4
%208 = zext i1 %207 to i32
%209 = add nsw i32 %205, %208
%210 = icmp ne i32 %209, 0
br i1 %210, label %211, label %226
211: ; preds = %190
%212 = load i32, i32* %5
%213 = icmp sgt i32 %212, 2
br i1 %213, label %214, label %215
214: ; preds = %211
br label %220
215: ; preds = %211
%216 = load i32, i32* %4
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %217
%219 = load i32, i32* %218
br label %220
220: ; preds = %215, %214
%221 = phi i32 [ 2, %214 ], [ %219, %215 ]
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds [65 x i8], [65 x i8]* @.str, i64 0, i64 %222
%224 = load i8, i8* %223
%225 = sext i8 %224 to i32
br label %240
226: ; preds = %190
%227 = load i32, i32* %4
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %228
%230 = load i32, i32* %229
%231 = sdiv i32 %230, 8
%232 = sdiv i32 %231, 8
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds [65 x i8], [65 x i8]* @.str, i64 0, i64 %233
%235 = load i8, i8* %234
%236 = sext i8 %235 to i32
%237 = sub nsw i32 %236, 4
%238 = srem i32 %237, 10
%239 = add nsw i32 48, %238
br label %240
240: ; preds = %226, %220
%241 = phi i32 [ %225, %220 ], [ %239, %226 ]
%242 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 %241)
%243 = load i32, i32* %4
%244 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%245 = sext i32 %243 to i64
%246 = getelementptr inbounds i32, i32* %244, i64 %245
%247 = getelementptr inbounds i32, i32* %246, i64 2
%248 = load i32, i32* %247
%249 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%250 = load i32, i32* %4
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds i32, i32* %249, i64 %251
%253 = getelementptr inbounds i32, i32* %252, i64 3
%254 = load i32, i32* %253
%255 = add nsw i32 %248, %254
%256 = icmp ne i32 %255, 0
br i1 %256, label %259, label %257
257: ; preds = %240
%258 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 32)
br label %259
259: ; preds = %257, %240
br label %260
260: ; preds = %259, %144
%261 = load i32, i32* %4
%262 = add nsw i32 %261, 1
store i32 %262, i32* %4
br label %141
263: ; preds = %141
%264 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 10)
br label %420
265: ; preds = %43, %38, %32
%266 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
store i8* %266, i8** %2
store i32 0, i32* %5
br label %267
267: ; preds = %369, %265
%268 = load i8*, i8** %2
%269 = load i8, i8* %268
%270 = icmp ne i8 %269, 0
br i1 %270, label %271, label %377
271: ; preds = %267
%272 = load i8*, i8** %2
%273 = load i8, i8* %272
%274 = sext i8 %273 to i32
%275 = icmp sgt i32 %274, 96
%276 = zext i1 %275 to i32
%277 = sub nsw i32 0, %276
%278 = mul nsw i32 %277, 32
%279 = load i8*, i8** %2
%280 = load i8, i8* %279
%281 = sext i8 %280 to i32
%282 = add nsw i32 %281, %278
%283 = trunc i32 %282 to i8
store i8 %283, i8* %279
store i32 64, i32* %4
%284 = load i8*, i8** %2
%285 = load i8, i8* %284
%286 = sext i8 %285 to i32
%287 = icmp sge i32 %286, 48
br i1 %287, label %288, label %330
288: ; preds = %271
%289 = load i8*, i8** %2
%290 = load i8, i8* %289
%291 = sext i8 %290 to i32
%292 = icmp slt i32 %291, 58
br i1 %292, label %293, label %330
293: ; preds = %288
%294 = load i8*, i8** %2
%295 = load i8, i8* %294
%296 = sext i8 %295 to i32
%297 = add nsw i32 %296, 1
%298 = srem i32 %297, 10
%299 = add nsw i32 %298, 65
%300 = trunc i32 %299 to i8
%301 = load i8*, i8** %2
store i8 %300, i8* %301
br label %302
302: ; preds = %319, %293
%303 = load i32, i32* %4
%304 = add nsw i32 %303, -1
store i32 %304, i32* %4
%305 = icmp sgt i32 %304, 0
br i1 %305, label %306, label %317
306: ; preds = %302
%307 = load i8*, i8** %2
%308 = load i8, i8* %307
%309 = sext i8 %308 to i32
%310 = load i32, i32* %4
%311 = sext i32 %310 to i64
%312 = getelementptr inbounds [65 x i8], [65 x i8]* @.str, i64 0, i64 %311
%313 = load i8, i8* %312
%314 = sext i8 %313 to i32
%315 = sub nsw i32 %309, %314
%316 = icmp ne i32 %315, 0
br label %317
317: ; preds = %306, %302
%318 = phi i1 [ false, %302 ], [ %316, %306 ]
br i1 %318, label %319, label %320
319: ; preds = %317
br label %302
320: ; preds = %317
%321 = load i32, i32* %5
%322 = add nsw i32 %321, 1
store i32 %322, i32* %5
%323 = sext i32 %321 to i64
%324 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %323
store i32 4, i32* %324
%325 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%326 = load i32, i32* %5
%327 = add nsw i32 %326, 1
store i32 %327, i32* %5
%328 = sext i32 %326 to i64
%329 = getelementptr inbounds i32, i32* %325, i64 %328
store i32 7, i32* %329
br label %350
330: ; preds = %288, %271
br label %331
331: ; preds = %348, %330
%332 = load i32, i32* %4
%333 = add nsw i32 %332, -1
store i32 %333, i32* %4
%334 = icmp sgt i32 %332, 1
br i1 %334, label %335, label %346
335: ; preds = %331
%336 = load i8*, i8** %2
%337 = load i8, i8* %336
%338 = sext i8 %337 to i32
%339 = load i32, i32* %4
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds [65 x i8], [65 x i8]* @.str, i64 0, i64 %340
%342 = load i8, i8* %341
%343 = sext i8 %342 to i32
%344 = sub nsw i32 %338, %343
%345 = icmp ne i32 %344, 0
br label %346
346: ; preds = %335, %331
%347 = phi i1 [ false, %331 ], [ %345, %335 ]
br i1 %347, label %348, label %349
348: ; preds = %346
br label %331
349: ; preds = %346
br label %350
350: ; preds = %349, %320
%351 = load i32, i32* %4
%352 = srem i32 %351, 8
%353 = load i32, i32* %5
%354 = add nsw i32 %353, 1
store i32 %354, i32* %5
%355 = sub nsw i32 %354, 1
%356 = sext i32 %355 to i64
%357 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %356
store i32 %352, i32* %357
br label %358
358: ; preds = %362, %350
%359 = load i32, i32* %4
%360 = sdiv i32 %359, 8
store i32 %360, i32* %4
%361 = icmp ne i32 %360, 0
br i1 %361, label %362, label %369
362: ; preds = %358
%363 = load i32, i32* %4
%364 = srem i32 %363, 8
%365 = load i32, i32* %5
%366 = add nsw i32 %365, 1
store i32 %366, i32* %5
%367 = sext i32 %365 to i64
%368 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 %367
store i32 %364, i32* %368
br label %358
369: ; preds = %358
%370 = load i8*, i8** %2
%371 = getelementptr inbounds i8, i8* %370, i32 1
store i8* %371, i8** %2
%372 = load i32, i32* %5
%373 = add nsw i32 %372, 1
store i32 %373, i32* %5
%374 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%375 = sext i32 %372 to i64
%376 = getelementptr inbounds i32, i32* %374, i64 %375
store i32 0, i32* %376
br label %267
377: ; preds = %267
%378 = load i32, i32* %5
%379 = add nsw i32 %378, -1
store i32 %379, i32* %5
%380 = load i32, i32* %5
%381 = icmp sgt i32 %380, 0
br i1 %381, label %382, label %419
382: ; preds = %377
store i32 1, i32* %4
br label %383
383: ; preds = %412, %382
%384 = load i32, i32* %4
%385 = icmp slt i32 %384, 8
br i1 %385, label %386, label %417
386: ; preds = %383
%387 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
store i8* %387, i8** %2
br label %388
388: ; preds = %395, %386
%389 = load i8*, i8** %2
%390 = load i32, i32* %5
%391 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
%392 = sext i32 %390 to i64
%393 = getelementptr inbounds i8, i8* %391, i64 %392
%394 = icmp ult i8* %389, %393
br i1 %394, label %395, label %412
395: ; preds = %388
%396 = load i8*, i8** %2
%397 = getelementptr inbounds [360 x i8], [360 x i8]* %3, i64 0, i64 0
%398 = ptrtoint i8* %396 to i64
%399 = ptrtoint i8* %397 to i64
%400 = sub i64 %398, %399
%401 = getelementptr inbounds [729 x i32], [729 x i32]* %6, i64 0, i64 0
%402 = getelementptr inbounds i32, i32* %401, i64 %400
%403 = load i32, i32* %402
%404 = load i32, i32* %4
%405 = and i32 %403, %404
%406 = icmp ne i32 %405, 0
%407 = zext i1 %406 to i64
%408 = select i1 %406, i32 42, i32 32
%409 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 %408)
%410 = load i8*, i8** %2
%411 = getelementptr inbounds i8, i8* %410, i32 1
store i8* %411, i8** %2
br label %388
412: ; preds = %388
%413 = load i32, i32* %4
%414 = load i32, i32* %4
%415 = add nsw i32 %413, %414
store i32 %415, i32* %4
%416 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 10)
br label %383
417: ; preds = %383
%418 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 10)
br label %419
419: ; preds = %417, %377
br label %420
420: ; preds = %419, %263
br label %421
421: ; preds = %420, %11
br label %7
422: ; preds = %7
%423 = load i32, i32* %1
ret i32 %423
}

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