#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*/ *fgets(char *, int, int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, ...);
int /*<<< orphan*/ sscanf(char *, char *, int *);
int /*<<< orphan*/ stdin;
int /*<<< orphan*/ stdout;
int /*<<< orphan*/ strcpy(char *, char *);
scalar_t__ strncmp(char *, char *, int);
int main(int argc, char *argv[]) {
  int width;
  int ii;
  int kk;
  int line;
  int ll;
  int height;
  int beg_end;
  char comment[256];
  char linebuf[256];
  int bbit;
  int hh;
  long bittab[80];
  line = 0;
  height = 0;
  while (fgets(linebuf, 256, stdin) != NULL) {
    for (ll = 0; ll < 256; ll++) {
      if (linebuf[ll] == '\r')
        linebuf[ll] = (char)0;
      if (linebuf[ll] == '\n')
        linebuf[ll] = (char)0;
    }
    beg_end = 0;
    if (linebuf[0] == '|') {
      if (height == 0) {
        for (kk = 1; kk < 256; kk++) {
          if (linebuf[kk] == '|')
            break;
        }
        width = kk - 1;
      }
      bittab[height] = 0;
      for (kk = 1; kk <= width; kk++) {
        if (linebuf[kk] != ' ')
          bittab[height] |= (1 << (kk - 1));
      }
      height++;
    } else {
      if ((strncmp(linebuf, "/* ", 3)) == 0) {
        strcpy(comment, linebuf);
      } else {
        if ((linebuf[0] == ' ') && (linebuf[1] == '-')) {
          beg_end = 1;
        } else {
          fprintf(stdout, "%s\r\n", linebuf);
        }
      }
    }
    if ((height > 5) && (beg_end != 0)) {
      fprintf(stdout, "{");
      for (kk = 0; kk < width; kk++) {
        bbit = 0;
        hh = height;
        if (hh > 8)
          hh = 8;
        for (ii = 0; ii < hh; ii++) {
          if ((bittab[ii] & (1 << kk)) != 0)
            bbit |= (1 << ii);
        }
        fprintf(stdout, "0x%02X", bbit);
        if ((kk != (width - 1)) || (height > 8))
          fprintf(stdout, ",");
      }
      if (height > 8) {
        fprintf(stdout, "\r\n ");
        for (kk = 0; kk < width; kk++) {
          bbit = 0;
          hh = height;
          if (hh > 8)
            hh = 8;
          for (ii = 8; ii < height; ii++) {
            if ((bittab[ii] & (1 << kk)) != 0)
              bbit |= (1 << (ii - 8));
          }
          fprintf(stdout, "0x%02X", bbit);
          if (kk != (width - 1))
            fprintf(stdout, ",");
        }
      }
      fprintf(stdout, "}");
      sscanf(&comment[3], "%x", &line);
      if (line != 255) {
        fprintf(stdout, ",");
      } else {
        fprintf(stdout, " ");
      }
      fprintf(stdout, "\t%s\r\n", comment);
      height = 0;
    }
  }
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x4c0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x28(%rbp)
lea    -0x230(%rbp),%rdi
mov    0x2e63(%rip),%rax
mov    (%rax),%edx
mov    $0x100,%esi
call   1050 <fgets@plt>
cmp    $0x0,%rax
je     1669 <main+0x519>
movl   $0x0,-0x24(%rbp)
cmpl   $0x100,-0x24(%rbp)
jge    1204 <main+0xb4>
movslq -0x24(%rbp),%rax
movsbl -0x230(%rbp,%rax,1),%eax
ff
cmp    $0xd,%eax
jne    11d0 <main+0x80>
movslq -0x24(%rbp),%rax
movb   $0x0,-0x230(%rbp,%rax,1)
movslq -0x24(%rbp),%rax
movsbl -0x230(%rbp,%rax,1),%eax
ff
cmp    $0xa,%eax
jne    11f1 <main+0xa1>
movslq -0x24(%rbp),%rax
movb   $0x0,-0x230(%rbp,%rax,1)
jmp    11f6 <main+0xa6>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11a2 <main+0x52>
movl   $0x0,-0x2c(%rbp)
movsbl -0x230(%rbp),%eax
cmp    $0x7c,%eax
jne    12ec <main+0x19c>
cmpl   $0x0,-0x28(%rbp)
jne    126f <main+0x11f>
movl   $0x1,-0x1c(%rbp)
cmpl   $0x100,-0x1c(%rbp)
jge    1266 <main+0x116>
movslq -0x1c(%rbp),%rax
movsbl -0x230(%rbp,%rax,1),%eax
ff
cmp    $0x7c,%eax
jne    1253 <main+0x103>
jmp    1266 <main+0x116>
jmp    1258 <main+0x108>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    122c <main+0xdc>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x14(%rbp)
movslq -0x28(%rbp),%rax
movq   $0x0,-0x4c0(%rbp,%rax,8)
movl   $0x1,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     12de <main+0x18e>
movslq -0x1c(%rbp),%rax
movsbl -0x230(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
je     12cb <main+0x17b>
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movslq %eax,%rcx
movslq -0x28(%rbp),%rax
or     -0x4c0(%rbp,%rax,8),%rcx
ff
mov    %rcx,-0x4c0(%rbp,%rax,8)
ff
jmp    12d0 <main+0x180>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1286 <main+0x136>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    137a <main+0x22a>
lea    -0x230(%rbp),%rdi
lea    0xd06(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1326 <main+0x1d6>
lea    -0x130(%rbp),%rdi
lea    -0x230(%rbp),%rsi
call   1040 <strcpy@plt>
jmp    1375 <main+0x225>
movsbl -0x230(%rbp),%eax
cmp    $0x20,%eax
jne    1352 <main+0x202>
movsbl -0x22f(%rbp),%eax
cmp    $0x2d,%eax
jne    1352 <main+0x202>
movl   $0x1,-0x2c(%rbp)
jmp    1370 <main+0x220>
mov    0x2c7f(%rip),%rax
mov    (%rax),%edi
lea    -0x230(%rbp),%rdx
lea    0xcb0(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
jmp    1375 <main+0x225>
jmp    137a <main+0x22a>
cmpl   $0x5,-0x28(%rbp)
jle    1664 <main+0x514>
cmpl   $0x0,-0x2c(%rbp)
je     1664 <main+0x514>
mov    0x2c43(%rip),%rax
mov    (%rax),%edi
lea    0xc66(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    14ab <main+0x35b>
movl   $0x0,-0x234(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,-0x238(%rbp)
cmpl   $0x8,-0x238(%rbp)
jle    13e2 <main+0x292>
movl   $0x8,-0x238(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x238(%rbp),%eax
jge    1449 <main+0x2f9>
movslq -0x18(%rbp),%rax
mov    -0x4c0(%rbp,%rax,8),%rax
ff
mov    -0x1c(%rbp),%ecx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
cmp    $0x0,%rax
je     1436 <main+0x2e6>
mov    -0x18(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
or     -0x234(%rbp),%eax
mov    %eax,-0x234(%rbp)
jmp    143b <main+0x2eb>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    13e9 <main+0x299>
mov    0x2b88(%rip),%rax
mov    (%rax),%edi
mov    -0x234(%rbp),%edx
lea    0xba7(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1481 <main+0x331>
cmpl   $0x8,-0x28(%rbp)
jle    1498 <main+0x348>
mov    0x2b50(%rip),%rax
mov    (%rax),%edi
lea    0xb7c(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
jmp    149d <main+0x34d>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    13ac <main+0x25c>
cmpl   $0x8,-0x28(%rbp)
jle    15cd <main+0x47d>
mov    0x2b1c(%rip),%rax
mov    (%rax),%edi
lea    0xb4a(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    15c8 <main+0x478>
movl   $0x0,-0x234(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,-0x238(%rbp)
cmpl   $0x8,-0x238(%rbp)
jle    1509 <main+0x3b9>
movl   $0x8,-0x238(%rbp)
movl   $0x8,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    1570 <main+0x420>
movslq -0x18(%rbp),%rax
mov    -0x4c0(%rbp,%rax,8),%rax
ff
mov    -0x1c(%rbp),%ecx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
cmp    $0x0,%rax
je     155d <main+0x40d>
mov    -0x18(%rbp),%ecx
sub    $0x8,%ecx
mov    $0x1,%eax
shl    %cl,%eax
or     -0x234(%rbp),%eax
mov    %eax,-0x234(%rbp)
jmp    1562 <main+0x412>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1510 <main+0x3c0>
mov    0x2a61(%rip),%rax
mov    (%rax),%edi
mov    -0x234(%rbp),%edx
lea    0xa80(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
je     15b5 <main+0x465>
mov    0x2a33(%rip),%rax
mov    (%rax),%edi
lea    0xa5f(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
jmp    15ba <main+0x46a>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    14d3 <main+0x383>
jmp    15cd <main+0x47d>
mov    0x2a04(%rip),%rax
mov    (%rax),%edi
lea    0xa36(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
lea    -0x130(%rbp),%rdi
add    $0x3,%rdi
lea    0xa1f(%rip),%rsi
lea    -0x20(%rbp),%rdx
call   1070 <sscanf@plt>
cmpl   $0xff,-0x20(%rbp)
je     1628 <main+0x4d8>
mov    0x29c5(%rip),%rax
mov    (%rax),%edi
lea    0x9f1(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
jmp    163f <main+0x4ef>
mov    0x29a9(%rip),%rax
mov    (%rax),%edi
lea    0x9d9(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
mov    0x2992(%rip),%rax
mov    (%rax),%edi
lea    -0x130(%rbp),%rdx
lea    0x9c2(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
movl   $0x0,-0x28(%rbp)
jmp    1177 <main+0x27>
xor    %eax,%eax
add    $0x4c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x4c8,%rsp
movl   $0x0,0x4(%rsp)
mov    0x2e78(%rip),%r14
mov    (%r14),%edx
lea    0x40(%rsp),%rdi
mov    $0x100,%esi
call   1050 <fgets@plt>
test   %rax,%rax
je     173b <main+0x5eb>
xor    %r15d,%r15d
lea    0x40(%rsp),%r13
xor    %ebp,%ebp
jmp    11bc <main+0x6c>
nopw   0x0(%rax,%rax,1)
add    $0x1,%ebp
mov    (%r14),%edx
mov    %r13,%rdi
mov    $0x100,%esi
call   1050 <fgets@plt>
test   %rax,%rax
je     173b <main+0x5eb>
xor    %eax,%eax
jmp    11d1 <main+0x81>
movb   $0x0,0x43(%rsp,%rax,1)
add    $0x4,%rax
cmp    $0x100,%rax
je     1220 <main+0xd0>
movzbl 0x40(%rsp,%rax,1),%ecx
cmp    $0xd,%cl
je     11e0 <main+0x90>
cmp    $0xa,%cl
jne    11e5 <main+0x95>
movb   $0x0,0x40(%rsp,%rax,1)
movzbl 0x41(%rsp,%rax,1),%ecx
cmp    $0xd,%cl
je     11f4 <main+0xa4>
cmp    $0xa,%cl
jne    11f9 <main+0xa9>
movb   $0x0,0x41(%rsp,%rax,1)
movzbl 0x42(%rsp,%rax,1),%ecx
cmp    $0xd,%cl
je     1208 <main+0xb8>
cmp    $0xa,%cl
jne    120d <main+0xbd>
movb   $0x0,0x42(%rsp,%rax,1)
movzbl 0x43(%rsp,%rax,1),%ecx
cmp    $0xd,%cl
je     11c0 <main+0x70>
cmp    $0xa,%cl
je     11c0 <main+0x70>
jmp    11c5 <main+0x75>
xchg   %ax,%ax
cmpb   $0x7c,0x40(%rsp)
jne    12a0 <main+0x150>
test   %ebp,%ebp
jne    15d2 <main+0x482>
mov    $0x5,%r12d
cs nopw 0x0(%rax,%rax,1)
nop
cmpb   $0x7c,0x3c(%rsp,%r12,1)
je     15b8 <main+0x468>
cmpb   $0x7c,0x3d(%rsp,%r12,1)
je     15be <main+0x46e>
cmpb   $0x7c,0x3e(%rsp,%r12,1)
je     15c4 <main+0x474>
cmpb   $0x7c,0x3f(%rsp,%r12,1)
je     15ca <main+0x47a>
cmpb   $0x7c,0x40(%rsp,%r12,1)
je     15ce <main+0x47e>
add    $0x5,%r12
cmp    $0x104,%r12
jne    1240 <main+0xf0>
mov    $0x100,%r12d
jmp    15ce <main+0x47e>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r13,%rdi
lea    0xd56(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     147f <main+0x32f>
cmpb   $0x20,0x40(%rsp)
jne    1494 <main+0x344>
cmpb   $0x2d,0x41(%rsp)
jne    1494 <main+0x344>
cmp    $0x6,%ebp
jl     11a3 <main+0x53>
mov    0x2cf5(%rip),%rax
mov    (%rax),%edi
lea    0xd18(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
test   %r12d,%r12d
jle    16a1 <main+0x551>
lea    -0x1(%r12),%r14d
cmp    $0x9,%ebp
mov    %ebp,(%rsp)
mov    %ebp,%ebx
mov    $0x8,%eax
cmovae %eax,%ebx
mov    0x140(%rsp),%rbp
mov    0x148(%rsp),%rax
mov    %rax,0x38(%rsp)
mov    0x150(%rsp),%rax
mov    %rax,0x30(%rsp)
mov    0x158(%rsp),%rax
mov    %rax,0x28(%rsp)
mov    0x160(%rsp),%rax
mov    %rax,0x20(%rsp)
mov    0x168(%rsp),%rax
mov    %rax,0x18(%rsp)
mov    0x170(%rsp),%rax
mov    %rax,0x10(%rsp)
xor    %r13d,%r13d
mov    0x178(%rsp),%rax
mov    %rax,0x8(%rsp)
jmp    13a4 <main+0x254>
nopl   0x0(%rax)
mov    0x2c51(%rip),%rax
mov    (%rax),%edi
lea    0xc7d(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
add    $0x1,%r13d
cmp    %r13d,%r12d
je     14b3 <main+0x363>
mov    $0x1,%eax
mov    %r13d,%ecx
shl    %cl,%eax
cltq
xor    %edx,%edx
test   %rax,%rbp
setne  %dl
cmp    $0x1,%ebx
je     1450 <main+0x300>
xor    %ecx,%ecx
test   %rax,0x38(%rsp)
setne  %cl
lea    (%rdx,%rcx,2),%edx
cmp    $0x2,%ebx
je     1450 <main+0x300>
xor    %ecx,%ecx
test   %rax,0x30(%rsp)
setne  %cl
lea    (%rdx,%rcx,4),%edx
cmp    $0x3,%ebx
je     1450 <main+0x300>
xor    %ecx,%ecx
test   %rax,0x28(%rsp)
setne  %cl
lea    (%rdx,%rcx,8),%edx
cmp    $0x4,%ebx
je     1450 <main+0x300>
xor    %ecx,%ecx
test   %rax,0x20(%rsp)
setne  %cl
shl    $0x4,%ecx
or     %ecx,%edx
cmp    $0x5,%ebx
je     1450 <main+0x300>
xor    %ecx,%ecx
test   %rax,0x18(%rsp)
setne  %cl
shl    $0x5,%ecx
or     %ecx,%edx
cmp    $0x6,%ebx
je     1450 <main+0x300>
xor    %ecx,%ecx
test   %rax,0x10(%rsp)
setne  %cl
shl    $0x6,%ecx
or     %ecx,%edx
cmp    $0x7,%ebx
je     1450 <main+0x300>
xor    %ecx,%ecx
test   %rax,0x8(%rsp)
setne  %cl
shl    $0x7,%ecx
or     %edx,%ecx
mov    %ecx,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0x2b81(%rip),%rax
mov    (%rax),%edi
lea    0xba6(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
cmp    %r13d,%r14d
jne    1380 <main+0x230>
cmpl   $0x9,(%rsp)
jb     1397 <main+0x247>
jmp    1380 <main+0x230>
lea    0x3c0(%rsp),%rdi
mov    %r13,%rsi
call   1040 <strcpy@plt>
jmp    11a3 <main+0x53>
mov    0x2b3d(%rip),%rax
mov    (%rax),%edi
lea    0xb75(%rip),%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1060 <fprintf@plt>
jmp    11a3 <main+0x53>
cmpl   $0x8,(%rsp)
jle    16bd <main+0x56d>
mov    0x2b14(%rip),%rax
mov    (%rax),%edi
lea    0xb42(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
test   %r12d,%r12d
jle    16bd <main+0x56d>
mov    (%rsp),%r13d
lea    -0x8(%r13),%rbp
and    $0xfffffffffffffffe,%rbp
xor    %ebx,%ebx
jmp    14fc <main+0x3ac>
nopl   (%rax)
add    $0x1,%ebx
cmp    %r12d,%ebx
je     16bd <main+0x56d>
mov    $0x1,%eax
mov    %ebx,%ecx
shl    %cl,%eax
movslq %eax,%rsi
mov    $0x8,%eax
mov    $0x0,%edx
cmpl   $0x9,(%rsp)
je     155c <main+0x40c>
xor    %edx,%edx
xor    %eax,%eax
nopl   0x0(%rax)
mov    $0x1,%edi
mov    %eax,%ecx
shl    %cl,%edi
test   %rsi,0x180(%rsp,%rax,8)
cmove  %r15d,%edi
or     %edx,%edi
lea    0x1(%rax),%ecx
mov    $0x1,%edx
shl    %cl,%edx
test   %rsi,0x188(%rsp,%rax,8)
cmove  %r15d,%edx
or     %edi,%edx
add    $0x2,%rax
cmp    %rax,%rbp
jne    1520 <main+0x3d0>
add    $0x8,%rax
test   $0x1,%r13b
je     157c <main+0x42c>
lea    -0x8(%rax),%ecx
mov    $0x1,%edi
shl    %cl,%edi
test   %rsi,0x140(%rsp,%rax,8)
cmove  %r15d,%edi
or     %edx,%edi
mov    %edi,%edx
mov    0x2a55(%rip),%rax
mov    (%rax),%edi
lea    0xa7a(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
cmp    %r14d,%ebx
je     14f0 <main+0x3a0>
mov    0x2a35(%rip),%rax
mov    (%rax),%edi
lea    0xa61(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
jmp    14f0 <main+0x3a0>
add    $0xfffffffffffffffc,%r12
jmp    15ce <main+0x47e>
add    $0xfffffffffffffffd,%r12
jmp    15ce <main+0x47e>
add    $0xfffffffffffffffe,%r12
jmp    15ce <main+0x47e>
add    $0xffffffffffffffff,%r12
add    $0xffffffff,%r12d
movslq %ebp,%rdx
movq   $0x0,0x140(%rsp,%rdx,8)
test   %r12d,%r12d
jle    11a0 <main+0x50>
mov    %ebp,%r8d
mov    %r12d,%ebp
cmp    $0x1,%r12d
jne    1633 <main+0x4e3>
mov    $0x1,%eax
xor    %esi,%esi
test   $0x1,%bpl
mov    %r8d,%ebp
je     11a0 <main+0x50>
cmpb   $0x20,0x40(%rsp,%rax,1)
je     11a0 <main+0x50>
add    $0xff,%al
mov    $0x1,%edi
mov    %eax,%ecx
shl    %cl,%edi
movslq %edi,%rax
or     %rax,%rsi
mov    %rsi,0x140(%rsp,%rdx,8)
jmp    11a0 <main+0x50>
mov    %ebp,%edi
and    $0xfffffffe,%edi
neg    %rdi
mov    $0x1,%eax
xor    %esi,%esi
jmp    1662 <main+0x512>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    (%rdi,%rax,1),%rcx
add    $0x2,%rcx
add    $0x2,%rax
cmp    $0x1,%rcx
je     15fd <main+0x4ad>
cmpb   $0x20,0x40(%rsp,%rax,1)
je     1681 <main+0x531>
lea    -0x1(%rax),%ecx
mov    $0x1,%ebx
shl    %cl,%ebx
movslq %ebx,%rcx
or     %rcx,%rsi
mov    %rsi,0x140(%rsp,%rdx,8)
cmpb   $0x20,0x41(%rsp,%rax,1)
je     1650 <main+0x500>
mov    $0x1,%ebx
mov    %eax,%ecx
shl    %cl,%ebx
movslq %ebx,%rcx
or     %rcx,%rsi
mov    %rsi,0x140(%rsp,%rdx,8)
jmp    1650 <main+0x500>
cmp    $0x9,%ebp
jb     16bd <main+0x56d>
mov    0x292b(%rip),%rax
mov    (%rax),%edi
lea    0x959(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    0x2914(%rip),%rbx
mov    (%rbx),%edi
xor    %ebp,%ebp
lea    0x944(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
lea    0x3c3(%rsp),%rdi
lea    0x930(%rip),%rsi
lea    0x4(%rsp),%rdx
call   1070 <sscanf@plt>
cmpl   $0xff,0x4(%rsp)
mov    (%rbx),%edi
lea    0x90d(%rip),%rsi
lea    0x90a(%rip),%rax
cmove  %rax,%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    (%rbx),%edi
lea    0x8fd(%rip),%rsi
lea    0x3c0(%rsp),%rdx
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    0x28b7(%rip),%r14
lea    0x40(%rsp),%r13
jmp    11a3 <main+0x53>
xor    %eax,%eax
add    $0x4c8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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