#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 get_line_len(char const *);
int strlen(char const *);
void remove_useless_data(const char *src, char *dst) {
  int linelen, counter;
  int emptyline;
  int inside_grouping;
  const char *readpos, *readpos2;
  char *writepos, *writepos2;
  readpos = src;
  writepos = dst;
  while ((linelen = get_line_len(readpos)) != 0) {
    counter = linelen;
    while (counter) {
      if (*readpos == '#') {
        if (*(readpos + counter - 1) == '\n')
          *(writepos++) = '\n';
        readpos += counter;
        counter = 0;
      } else if (*readpos == '"') {
        *(writepos++) = *(readpos++);
        counter--;
        while (counter && (*readpos != '"')) {
          *(writepos++) = *(readpos++);
          counter--;
        }
        if (counter && (*readpos == '"')) {
          *(writepos++) = *(readpos++);
          counter--;
        }
      } else {
        *(writepos++) = *(readpos++);
        counter--;
      }
    }
  }
  *writepos = '\0';
  readpos = dst;
  writepos = dst;
  while ((linelen = get_line_len(readpos)) != 0) {
    counter = linelen;
    emptyline = 1;
    readpos2 = readpos;
    writepos2 = writepos;
    while (counter--) {
      if ((*readpos2 > ' ') && (*readpos2 != '\n'))
        emptyline = 0;
      readpos2++;
    }
    if (emptyline == 0) {
      counter = linelen;
      while (counter--)
        *(writepos++) = *(readpos++);
    } else {
      readpos += linelen;
    }
  }
  *writepos = '\0';
  readpos = dst;
  writepos = dst;
  while ((linelen = get_line_len(readpos)) != 0) {
    counter = linelen;
    while (counter) {
      if ((*readpos <= ' ') && (*readpos != '\n')) {
        readpos++;
      } else if (*readpos == '\\') {
        *(writepos++) = *(readpos++);
        if (counter > 1) {
          *(writepos++) = *(readpos++);
          counter--;
        }
      } else if (*readpos == '"') {
        *(writepos++) = *(readpos++);
        counter--;
        while (counter && (*readpos != '"')) {
          *(writepos++) = *(readpos++);
          counter--;
        }
        if (counter && (*readpos == '"')) {
          *(writepos++) = *(readpos++);
          counter--;
        }
        counter++;
      } else {
        *(writepos++) = *(readpos++);
      }
      counter--;
    }
  }
  *writepos = '\0';
  readpos = dst;
  writepos = dst;
  counter = strlen(readpos);
  inside_grouping = 0;
  while (counter) {
    switch (*readpos) {
    case '"':
      *(writepos++) = *(readpos++);
      counter--;
      while (counter && (*readpos != '"')) {
        *(writepos++) = *(readpos++);
        counter--;
      }
      if (counter && (*readpos == '"')) {
        *(writepos++) = *(readpos++);
        counter--;
      }
      break;
    case '\\':
      *(writepos++) = *(readpos++);
      counter--;
      if (counter) {
        *(writepos++) = *(readpos++);
        counter--;
      }
      break;
    case '{':
      inside_grouping = 1;
      *(writepos++) = *(readpos++);
      counter--;
      break;
    case '}':
      inside_grouping = 0;
      *(writepos++) = *(readpos++);
      counter--;
      break;
    case '\n':
      if (inside_grouping == 0)
        *(writepos++) = *(readpos++);
      else
        readpos++;
      counter--;
      break;
    default:
      *(writepos++) = *(readpos++);
      counter--;
    }
  }
  *writepos = '\0';
}


x86 assembly (clang, -O0):
<remove_useless_data>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rdi
call   1040 <get_line_len@plt>
mov    %eax,-0x14(%rbp)
cmp    $0x0,%eax
je     12d8 <remove_useless_data+0x1b8>
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
je     12d3 <remove_useless_data+0x1b3>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
jne    11ba <remove_useless_data+0x9a>
mov    -0x28(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0xa,%eax
jne    119d <remove_useless_data+0x7d>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0xa,(%rax)
mov    -0x18(%rbp),%ecx
mov    -0x28(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x18(%rbp)
jmp    12ce <remove_useless_data+0x1ae>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    129e <remove_useless_data+0x17e>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x18(%rbp)
mov    %al,-0x41(%rbp)
je     1214 <remove_useless_data+0xf4>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
setne  %al
mov    %al,-0x41(%rbp)
mov    -0x41(%rbp),%al
test   $0x1,%al
jne    1224 <remove_useless_data+0x104>
jmp    1254 <remove_useless_data+0x134>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    11f5 <remove_useless_data+0xd5>
cmpl   $0x0,-0x18(%rbp)
je     1299 <remove_useless_data+0x179>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1299 <remove_useless_data+0x179>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    12c9 <remove_useless_data+0x1a9>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    12ce <remove_useless_data+0x1ae>
jmp    115b <remove_useless_data+0x3b>
jmp    1140 <remove_useless_data+0x20>
mov    -0x38(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rdi
call   1040 <get_line_len@plt>
mov    %eax,-0x14(%rbp)
cmp    $0x0,%eax
je     13d3 <remove_useless_data+0x2b3>
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
movl   $0x1,-0x1c(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x18(%rbp)
cmp    $0x0,%eax
je     136d <remove_useless_data+0x24d>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jle    135c <remove_useless_data+0x23c>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     135c <remove_useless_data+0x23c>
movl   $0x0,-0x1c(%rbp)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    1321 <remove_useless_data+0x201>
cmpl   $0x0,-0x1c(%rbp)
jne    13bd <remove_useless_data+0x29d>
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x18(%rbp)
cmp    $0x0,%eax
je     13b8 <remove_useless_data+0x298>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
jmp    137d <remove_useless_data+0x25d>
jmp    13ce <remove_useless_data+0x2ae>
mov    -0x14(%rbp),%ecx
mov    -0x28(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
jmp    12ef <remove_useless_data+0x1cf>
mov    -0x38(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rdi
call   1040 <get_line_len@plt>
mov    %eax,-0x14(%rbp)
cmp    $0x0,%eax
je     15d8 <remove_useless_data+0x4b8>
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
je     15d3 <remove_useless_data+0x4b3>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jg     1440 <remove_useless_data+0x320>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     1440 <remove_useless_data+0x320>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    15c5 <remove_useless_data+0x4a5>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    14ac <remove_useless_data+0x38c>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
cmpl   $0x1,-0x18(%rbp)
jle    14a7 <remove_useless_data+0x387>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    15c0 <remove_useless_data+0x4a0>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1599 <remove_useless_data+0x479>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x18(%rbp)
mov    %al,-0x42(%rbp)
je     1506 <remove_useless_data+0x3e6>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
setne  %al
mov    %al,-0x42(%rbp)
mov    -0x42(%rbp),%al
test   $0x1,%al
jne    1516 <remove_useless_data+0x3f6>
jmp    1546 <remove_useless_data+0x426>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    14e7 <remove_useless_data+0x3c7>
cmpl   $0x0,-0x18(%rbp)
je     158b <remove_useless_data+0x46b>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    158b <remove_useless_data+0x46b>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    15bb <remove_useless_data+0x49b>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
jmp    15c0 <remove_useless_data+0x4a0>
jmp    15c5 <remove_useless_data+0x4a5>
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1405 <remove_useless_data+0x2e5>
jmp    13ea <remove_useless_data+0x2ca>
mov    -0x38(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x20(%rbp)
cmpl   $0x0,-0x18(%rbp)
je     188a <remove_useless_data+0x76a>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x48(%rbp)
sub    $0xa,%eax
je     180f <remove_useless_data+0x6ef>
jmp    1624 <remove_useless_data+0x504>
mov    -0x48(%rbp),%eax
sub    $0x22,%eax
je     1668 <remove_useless_data+0x548>
jmp    1635 <remove_useless_data+0x515>
mov    -0x48(%rbp),%eax
sub    $0x5c,%eax
je     173c <remove_useless_data+0x61c>
jmp    1646 <remove_useless_data+0x526>
mov    -0x48(%rbp),%eax
sub    $0x7b,%eax
je     17a1 <remove_useless_data+0x681>
jmp    1657 <remove_useless_data+0x537>
mov    -0x48(%rbp),%eax
sub    $0x7d,%eax
je     17d8 <remove_useless_data+0x6b8>
jmp    185a <remove_useless_data+0x73a>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x18(%rbp)
mov    %al,-0x49(%rbp)
je     16b2 <remove_useless_data+0x592>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
setne  %al
mov    %al,-0x49(%rbp)
mov    -0x49(%rbp),%al
test   $0x1,%al
jne    16c2 <remove_useless_data+0x5a2>
jmp    16f2 <remove_useless_data+0x5d2>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1693 <remove_useless_data+0x573>
cmpl   $0x0,-0x18(%rbp)
je     1737 <remove_useless_data+0x617>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1737 <remove_useless_data+0x617>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1885 <remove_useless_data+0x765>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
je     179c <remove_useless_data+0x67c>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1885 <remove_useless_data+0x765>
movl   $0x1,-0x20(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1885 <remove_useless_data+0x765>
movl   $0x0,-0x20(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1885 <remove_useless_data+0x765>
cmpl   $0x0,-0x20(%rbp)
jne    1840 <remove_useless_data+0x720>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
jmp    184c <remove_useless_data+0x72c>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1885 <remove_useless_data+0x765>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1602 <remove_useless_data+0x4e2>
mov    -0x38(%rbp),%rax
movb   $0x0,(%rax)
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<remove_useless_data>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rsi,%r14
mov    %rdi,%r13
call   1040 <get_line_len@plt>
mov    %r14,%r12
test   %eax,%eax
je     1225 <remove_useless_data+0x105>
mov    %r14,%rcx
jmp    1169 <remove_useless_data+0x49>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %rcx,%r12
mov    %r15,%rdi
call   1040 <get_line_len@plt>
mov    %r12,%rcx
mov    %r15,%r13
test   %eax,%eax
je     1225 <remove_useless_data+0x105>
mov    0x0(%r13),%dl
cmp    $0x22,%dl
je     1190 <remove_useless_data+0x70>
cmp    $0x23,%dl
jne    11f0 <remove_useless_data+0xd0>
cltq
lea    (%rax,%r13,1),%r15
cmpb   $0xa,-0x1(%r13,%rax,1)
jne    1150 <remove_useless_data+0x30>
movb   $0xa,(%rcx)
add    $0x1,%rcx
jmp    1150 <remove_useless_data+0x30>
xchg   %ax,%ax
movb   $0x22,(%rcx)
lea    0x1(%rcx),%r12
lea    0x1(%r13),%r15
cmp    $0x1,%eax
je     1153 <remove_useless_data+0x33>
mov    (%r15),%bl
cmp    $0x22,%bl
je     11d7 <remove_useless_data+0xb7>
mov    %eax,%esi
add    $0xfffffffffffffffe,%rsi
xor    %edx,%edx
mov    %bl,0x1(%rcx,%rdx,1)
cmp    %edx,%esi
je     1210 <remove_useless_data+0xf0>
movzbl 0x2(%r13,%rdx,1),%ebx
add    $0x1,%rdx
cmp    $0x22,%bl
jne    11b0 <remove_useless_data+0x90>
lea    (%rcx,%rdx,1),%r12
add    $0x1,%r12
add    %rdx,%rcx
add    %rdx,%r13
sub    %edx,%eax
add    $0x2,%r13
add    $0x2,%rcx
movb   $0x22,(%r12)
add    $0xfffffffe,%eax
jmp    11fd <remove_useless_data+0xdd>
nopl   0x0(%rax)
add    $0x1,%r13
mov    %dl,(%rcx)
add    $0x1,%rcx
add    $0xffffffff,%eax
mov    %r13,%r15
mov    %rcx,%r12
test   %eax,%eax
jne    1169 <remove_useless_data+0x49>
jmp    1153 <remove_useless_data+0x33>
lea    (%rcx,%rdx,1),%r12
add    $0x2,%r12
lea    (%rdx,%r13,1),%r15
add    $0x2,%r15
jmp    1153 <remove_useless_data+0x33>
movb   $0x0,(%r12)
mov    %r14,%rdi
call   1040 <get_line_len@plt>
mov    %r14,%r13
test   %eax,%eax
je     15a1 <remove_useless_data+0x481>
movabs $0x1ffffffe0,%r15
xor    %r12d,%r12d
movdqa 0xdbe(%rip),%xmm6
mov    %r14,%r13
mov    %r14,%rbx
jmp    127d <remove_useless_data+0x15d>
nopw   0x0(%rax,%rax,1)
cltq
add    %rax,%rbx
mov    %rbx,%rdi
call   1040 <get_line_len@plt>
test   %eax,%eax
movdqa 0xd99(%rip),%xmm6
je     15a1 <remove_useless_data+0x481>
lea    -0x1(%rax),%r9d
mov    $0x1,%ecx
mov    %rbx,%rsi
mov    %eax,%edi
cmp    $0x7,%r9d
jb     13ad <remove_useless_data+0x28d>
lea    0x1(%r9),%r8
lea    0x18(%r15),%rdx
and    %r8,%rdx
lea    -0x8(%rdx),%rsi
mov    %rsi,%rcx
shr    $0x3,%rcx
add    $0x1,%rcx
test   %rsi,%rsi
je     142b <remove_useless_data+0x30b>
mov    %rcx,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %esi,%esi
movdqa 0xd37(%rip),%xmm2
movdqa %xmm2,%xmm3
nopl   (%rax)
movd   (%rbx,%rsi,1),%xmm0
movd   0x4(%rbx,%rsi,1),%xmm4
pcmpgtb %xmm6,%xmm0
pcmpgtb %xmm6,%xmm4
movd   0x8(%rbx,%rsi,1),%xmm1
movd   0xc(%rbx,%rsi,1),%xmm5
pcmpgtb %xmm6,%xmm1
por    %xmm0,%xmm1
punpcklbw %xmm1,%xmm0
punpcklwd %xmm0,%xmm1
pcmpgtb %xmm6,%xmm5
por    %xmm4,%xmm5
punpcklbw %xmm5,%xmm0
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm1
pandn  %xmm3,%xmm1
psrad  $0x18,%xmm0
pandn  %xmm2,%xmm0
add    $0x10,%rsi
movdqa %xmm1,%xmm3
movdqa %xmm0,%xmm2
add    $0xfffffffffffffffe,%rdi
jne    12d0 <remove_useless_data+0x1b0>
test   $0x1,%cl
je     1375 <remove_useless_data+0x255>
movd   (%rbx,%rsi,1),%xmm2
movd   0x4(%rbx,%rsi,1),%xmm3
pcmpgtb %xmm6,%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
psrad  $0x18,%xmm2
pandn  %xmm1,%xmm2
pcmpgtb %xmm6,%xmm3
punpcklbw %xmm3,%xmm1
punpcklwd %xmm1,%xmm3
psrad  $0x18,%xmm3
pandn  %xmm0,%xmm3
movdqa %xmm2,%xmm1
movdqa %xmm3,%xmm0
movdqa %xmm1,%xmm2
movdqa 0xc7f(%rip),%xmm3
pcmpeqd %xmm3,%xmm2
pand   %xmm2,%xmm0
pandn  %xmm1,%xmm2
por    %xmm0,%xmm2
pcmpeqd %xmm3,%xmm2
movmskps %xmm2,%esi
xor    %ecx,%ecx
cmp    $0xf,%esi
sete   %cl
cmp    %rdx,%r8
je     13d0 <remove_useless_data+0x2b0>
lea    (%rbx,%rdx,1),%rsi
mov    %eax,%edi
sub    %edx,%edi
mov    %edi,%edx
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmpb   $0x21,(%rsi,%rdi,1)
cmovge %r12d,%ecx
add    $0x1,%rdi
cmp    %edi,%edx
jne    13c0 <remove_useless_data+0x2a0>
test   %ecx,%ecx
jne    1260 <remove_useless_data+0x140>
cmp    $0x1f,%r9d
jb     1510 <remove_useless_data+0x3f0>
lea    (%rbx,%r9,1),%rcx
add    $0x1,%rcx
cmp    %rcx,%r13
jae    1400 <remove_useless_data+0x2e0>
lea    (%r9,%r13,1),%rcx
add    $0x1,%rcx
cmp    %rcx,%rbx
jb     1510 <remove_useless_data+0x3f0>
add    $0x1,%r9
mov    %r9,%r8
and    %r15,%r8
lea    -0x20(%r8),%rdx
mov    %rdx,%rcx
shr    $0x5,%rcx
add    $0x1,%rcx
mov    %ecx,%esi
and    $0x3,%esi
cmp    $0x60,%rdx
jae    1447 <remove_useless_data+0x327>
xor    %edi,%edi
jmp    14b5 <remove_useless_data+0x395>
xor    %esi,%esi
movdqa 0xbcb(%rip),%xmm0
movdqa %xmm0,%xmm1
test   $0x1,%cl
jne    1338 <remove_useless_data+0x218>
jmp    1375 <remove_useless_data+0x255>
and    $0xfffffffffffffffc,%rcx
xor    %edi,%edi
nopl   (%rax)
movups (%rbx,%rdi,1),%xmm0
movups 0x10(%rbx,%rdi,1),%xmm1
movups %xmm0,0x0(%r13,%rdi,1)
movups %xmm1,0x10(%r13,%rdi,1)
movups 0x20(%rbx,%rdi,1),%xmm0
movups 0x30(%rbx,%rdi,1),%xmm1
movups %xmm0,0x20(%r13,%rdi,1)
movups %xmm1,0x30(%r13,%rdi,1)
movups 0x40(%rbx,%rdi,1),%xmm0
movups 0x50(%rbx,%rdi,1),%xmm1
movups %xmm0,0x40(%r13,%rdi,1)
movups %xmm1,0x50(%r13,%rdi,1)
movdqu 0x60(%rbx,%rdi,1),%xmm0
movdqu 0x70(%rbx,%rdi,1),%xmm1
movdqu %xmm0,0x60(%r13,%rdi,1)
movdqu %xmm1,0x70(%r13,%rdi,1)
sub    $0xffffffffffffff80,%rdi
add    $0xfffffffffffffffc,%rcx
jne    1450 <remove_useless_data+0x330>
test   %rsi,%rsi
je     14ef <remove_useless_data+0x3cf>
lea    (%rbx,%rdi,1),%rcx
add    $0x10,%rcx
add    %r13,%rdi
add    $0x10,%rdi
shl    $0x5,%rsi
xor    %edx,%edx
nop
movdqu -0x10(%rcx,%rdx,1),%xmm0
movdqu (%rcx,%rdx,1),%xmm1
movdqu %xmm0,-0x10(%rdi,%rdx,1)
movdqu %xmm1,(%rdi,%rdx,1)
add    $0x20,%rdx
cmp    %rdx,%rsi
jne    14d0 <remove_useless_data+0x3b0>
add    %r8,%r13
add    %r8,%rbx
cmp    %r8,%r9
je     1265 <remove_useless_data+0x145>
sub    %r8d,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rax),%edi
test   $0x7,%al
je     1539 <remove_useless_data+0x419>
mov    %eax,%esi
and    $0x7,%esi
xor    %edx,%edx
xchg   %ax,%ax
movzbl (%rbx,%rdx,1),%ecx
mov    %cl,0x0(%r13,%rdx,1)
add    $0x1,%rdx
cmp    %edx,%esi
jne    1520 <remove_useless_data+0x400>
add    %rdx,%r13
add    %rdx,%rbx
sub    %edx,%eax
cmp    $0x7,%edi
jb     1265 <remove_useless_data+0x145>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl (%rbx),%ecx
mov    %cl,0x0(%r13)
movzbl 0x1(%rbx),%ecx
mov    %cl,0x1(%r13)
movzbl 0x2(%rbx),%ecx
mov    %cl,0x2(%r13)
movzbl 0x3(%rbx),%ecx
mov    %cl,0x3(%r13)
movzbl 0x4(%rbx),%ecx
mov    %cl,0x4(%r13)
movzbl 0x5(%rbx),%ecx
mov    %cl,0x5(%r13)
movzbl 0x6(%rbx),%ecx
mov    %cl,0x6(%r13)
movzbl 0x7(%rbx),%ecx
add    $0x8,%rbx
mov    %cl,0x7(%r13)
add    $0x8,%r13
add    $0xfffffff8,%eax
jne    1550 <remove_useless_data+0x430>
jmp    1265 <remove_useless_data+0x145>
movb   $0x0,0x0(%r13)
mov    %r14,%rdi
call   1040 <get_line_len@plt>
mov    %r14,%r15
test   %eax,%eax
je     16d0 <remove_useless_data+0x5b0>
mov    %r14,%r15
mov    %r14,%rbx
nop
mov    (%rbx),%cl
cmp    $0x20,%cl
jg     15e0 <remove_useless_data+0x4c0>
cmp    $0xa,%cl
je     15e0 <remove_useless_data+0x4c0>
add    $0x1,%rbx
add    $0xffffffff,%eax
jne    15c0 <remove_useless_data+0x4a0>
jmp    16c0 <remove_useless_data+0x5a0>
nopw   0x0(%rax,%rax,1)
cmp    $0x22,%cl
je     1617 <remove_useless_data+0x4f7>
cmp    $0x5c,%cl
jne    167f <remove_useless_data+0x55f>
movb   $0x5c,(%r15)
cmp    $0x2,%eax
jl     1688 <remove_useless_data+0x568>
mov    0x1(%rbx),%cl
add    $0x2,%rbx
mov    %cl,0x1(%r15)
add    $0x2,%r15
add    $0xffffffff,%eax
add    $0xffffffff,%eax
jne    15c0 <remove_useless_data+0x4a0>
jmp    16c0 <remove_useless_data+0x5a0>
movb   $0x22,(%r15)
lea    0x1(%r15),%rcx
lea    0x1(%rbx),%rsi
xor    %edi,%edi
cmp    $0x1,%eax
je     16aa <remove_useless_data+0x58a>
mov    (%rsi),%dl
cmp    $0x22,%dl
je     1667 <remove_useless_data+0x547>
mov    %eax,%ecx
add    $0xfffffffffffffffe,%rcx
xor    %esi,%esi
nopl   (%rax)
mov    %dl,0x1(%r15,%rsi,1)
cmp    %esi,%ecx
je     169b <remove_useless_data+0x57b>
movzbl 0x2(%rbx,%rsi,1),%edx
add    $0x1,%rsi
cmp    $0x22,%dl
jne    1640 <remove_useless_data+0x520>
lea    (%r15,%rsi,1),%rcx
add    $0x1,%rcx
add    %rsi,%r15
add    %rsi,%rbx
sub    %esi,%eax
add    $0x2,%rbx
add    $0x2,%r15
movb   $0x22,(%rcx)
add    $0xfffffffe,%eax
mov    %eax,%edi
mov    %rbx,%rsi
mov    %r15,%rcx
jmp    16aa <remove_useless_data+0x58a>
add    $0x1,%rbx
mov    %cl,(%r15)
jmp    168c <remove_useless_data+0x56c>
add    $0x1,%rbx
add    $0x1,%r15
add    $0xffffffff,%eax
jne    15c0 <remove_useless_data+0x4a0>
jmp    16c0 <remove_useless_data+0x5a0>
lea    (%r15,%rsi,1),%rcx
add    $0x2,%rcx
add    %rbx,%rsi
add    $0x2,%rsi
add    $0x1,%edi
mov    %edi,%eax
mov    %rsi,%rbx
mov    %rcx,%r15
add    $0xffffffff,%eax
jne    15c0 <remove_useless_data+0x4a0>
xchg   %ax,%ax
mov    %rbx,%rdi
call   1040 <get_line_len@plt>
test   %eax,%eax
jne    15c0 <remove_useless_data+0x4a0>
movb   $0x0,(%r15)
mov    %r14,%rdi
call   1030 <strlen@plt>
test   %eax,%eax
je     17fc <remove_useless_data+0x6dc>
xor    %edx,%edx
mov    %r14,%rcx
jmp    1701 <remove_useless_data+0x5e1>
add    $0x1,%rcx
mov    %bl,(%r14)
add    $0x1,%r14
add    $0xffffffff,%eax
test   %eax,%eax
je     17fc <remove_useless_data+0x6dc>
mov    (%rcx),%bl
movsbl %bl,%esi
cmp    $0x5b,%esi
jle    1740 <remove_useless_data+0x620>
cmp    $0x5c,%esi
je     17aa <remove_useless_data+0x68a>
cmp    $0x7b,%esi
je     17c9 <remove_useless_data+0x6a9>
cmp    $0x7d,%esi
jne    16eb <remove_useless_data+0x5cb>
add    $0x1,%rcx
mov    %bl,(%r14)
add    $0x1,%r14
add    $0xffffffff,%eax
xor    %edx,%edx
jmp    16f9 <remove_useless_data+0x5d9>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    $0xa,%esi
je     17e1 <remove_useless_data+0x6c1>
cmp    $0x22,%esi
jne    16eb <remove_useless_data+0x5cb>
mov    %bl,(%r14)
lea    0x1(%r14),%rsi
cmp    $0x1,%eax
je     180a <remove_useless_data+0x6ea>
mov    0x1(%rcx),%bl
cmp    $0x22,%bl
je     1797 <remove_useless_data+0x677>
mov    %eax,%esi
add    $0xfffffffffffffffe,%rsi
xor    %edi,%edi
xchg   %ax,%ax
mov    %bl,0x1(%r14,%rdi,1)
cmp    %edi,%esi
je     17f5 <remove_useless_data+0x6d5>
movzbl 0x2(%rcx,%rdi,1),%ebx
add    $0x1,%rdi
cmp    $0x22,%bl
jne    1770 <remove_useless_data+0x650>
add    %rdi,%rcx
lea    (%r14,%rdi,1),%rsi
add    $0x1,%rsi
add    %rdi,%r14
sub    %edi,%eax
add    $0x2,%rcx
add    $0x2,%r14
movb   $0x22,(%rsi)
add    $0xfffffffe,%eax
jmp    16f9 <remove_useless_data+0x5d9>
mov    %bl,(%r14)
cmp    $0x1,%eax
je     180f <remove_useless_data+0x6ef>
mov    0x1(%rcx),%bl
add    $0x2,%rcx
mov    %bl,0x1(%r14)
add    $0x2,%r14
add    $0xfffffffe,%eax
jmp    16f9 <remove_useless_data+0x5d9>
add    $0x1,%rcx
mov    %bl,(%r14)
add    $0x1,%r14
add    $0xffffffff,%eax
mov    $0x1,%edx
jmp    16f9 <remove_useless_data+0x5d9>
test   %edx,%edx
jne    17ec <remove_useless_data+0x6cc>
mov    %bl,(%r14)
add    $0x1,%r14
add    $0x1,%rcx
jmp    16f6 <remove_useless_data+0x5d6>
add    %rdi,%r14
add    $0x2,%r14
movb   $0x0,(%r14)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret
mov    %rsi,%r14
jmp    17fc <remove_useless_data+0x6dc>
add    $0x1,%r14
jmp    17fc <remove_useless_data+0x6dc>

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

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