char *line_parser_old(char *file_line) {
  int size;
  int count;
  int pos;
  size = 0;
  while (*(file_line + size) != 0) {
    size++;
  }
  count = 0;
  do {
    if ((*(file_line + count) == 13) || (*(file_line + count) == 10) ||
        (*(file_line + count) == ';')) {
      *(file_line + count) = ' ';
    }
    count++;
  } while (count < size);
  count = 0;
  do {
    {
      if (*(file_line + count) == '\'') {
        *(file_line + count) = ' ';
        count++;
        if (count == size) {
          break;
        }
        while (*(file_line + count) != '\'' && count < size) {
          *(file_line + count) = ' ';
          count++;
          if (count == size) {
            break;
          }
        }
        *(file_line + count) = ' ';
        if (count == size) {
          break;
        }
      } else {
        if (((*(file_line + count) >= '0') && (*(file_line + count) <= '9') &&
             !((*(file_line + count - 1) >= 'a' &&
                *(file_line + count - 1) <= 'z') ||
               (*(file_line + count - 1) >= 'A' &&
                *(file_line + count - 1) <= 'Z'))) ||
            ((*(file_line + count) == '-' || *(file_line + count) == '+' ||
              *(file_line + count) == '*' || *(file_line + count) == '/' ||
              *(file_line + count) == '.' || *(file_line + count) == ',') &&
             (*(file_line + count + 1) >= '0') &&
             (*(file_line + count + 1) <= '9'))) {
          while (
              (((*(file_line + count) >= '0') &&
                (*(file_line + count) <= '9')) ||
               ((*(file_line + count) == '-' || *(file_line + count) == '.' ||
                 *(file_line + count) == ','))) &&
              (count < size)) {
            *(file_line + count) = ' ';
            count++;
            if (count == size) {
              break;
            }
          }
        }
      }
    }
    count++;
  } while (count < size);
  size = 0;
  while (*(file_line + size) != 0) {
    size++;
  }
  pos = 0;
  count = 0;
  do {
    if (*(file_line + count) == ' ') {
      if (count > 0) {
        *(file_line + pos) = *(file_line + count);
        pos++;
      }
      while (*(file_line + count) == ' ' && count < size) {
        count++;
      }
    }
    if ((*(file_line + count) >= 'A') && (*(file_line + count) <= 'Z')) {
      *(file_line + pos) = *(file_line + count) + 32;
    } else {
      *(file_line + pos) = *(file_line + count);
    }
    pos++;
    count++;
  } while (count < size);
  if (*(file_line + pos - 2) == ' ') {
    *(file_line + pos - 2) = '\0';
  }
  for (count = pos; count < size; count++) {
    *(file_line + pos) = '\0';
  }
  return (file_line);
}


x86 assembly (clang, -O0):
<line_parser_old>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1132 <line_parser_old+0x32>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    110f <line_parser_old+0xf>
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xd,%eax
je     1178 <line_parser_old+0x78>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1178 <line_parser_old+0x78>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3b,%eax
jne    1184 <line_parser_old+0x84>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1139 <line_parser_old+0x39>
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x27,%eax
jne    1263 <line_parser_old+0x163>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    11db <line_parser_old+0xdb>
jmp    1468 <line_parser_old+0x368>
jmp    11e0 <line_parser_old+0xe0>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x27,%ecx
mov    %al,-0x15(%rbp)
je     1206 <line_parser_old+0x106>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
setl   %al
mov    %al,-0x15(%rbp)
mov    -0x15(%rbp),%al
test   $0x1,%al
jne    1216 <line_parser_old+0x116>
jmp    1241 <line_parser_old+0x141>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    123c <line_parser_old+0x13c>
jmp    1241 <line_parser_old+0x141>
jmp    11e0 <line_parser_old+0xe0>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    125e <line_parser_old+0x15e>
jmp    1468 <line_parser_old+0x368>
jmp    1453 <line_parser_old+0x353>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     12e5 <line_parser_old+0x1e5>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     12e5 <line_parser_old+0x1e5>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     12b9 <line_parser_old+0x1b9>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jle    12e5 <line_parser_old+0x1e5>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     138f <line_parser_old+0x28f>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jg     138f <line_parser_old+0x28f>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
je     1363 <line_parser_old+0x263>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2b,%eax
je     1363 <line_parser_old+0x263>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
je     1363 <line_parser_old+0x263>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
je     1363 <line_parser_old+0x263>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     1363 <line_parser_old+0x263>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
jne    144e <line_parser_old+0x34e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     144e <line_parser_old+0x34e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     144e <line_parser_old+0x34e>
jmp    1394 <line_parser_old+0x294>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     13be <line_parser_old+0x2be>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jle    1402 <line_parser_old+0x302>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
je     1402 <line_parser_old+0x302>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     1402 <line_parser_old+0x302>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x2c,%ecx
mov    %al,-0x16(%rbp)
jne    140e <line_parser_old+0x30e>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
setl   %al
mov    %al,-0x16(%rbp)
mov    -0x16(%rbp),%al
test   $0x1,%al
jne    141e <line_parser_old+0x31e>
jmp    1449 <line_parser_old+0x349>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    1444 <line_parser_old+0x344>
jmp    1449 <line_parser_old+0x349>
jmp    1394 <line_parser_old+0x294>
jmp    144e <line_parser_old+0x34e>
jmp    1453 <line_parser_old+0x353>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     11a0 <line_parser_old+0xa0>
movl   $0x0,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1492 <line_parser_old+0x392>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    146f <line_parser_old+0x36f>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    152c <line_parser_old+0x42c>
cmpl   $0x0,-0x10(%rbp)
jle    14de <line_parser_old+0x3de>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    14e3 <line_parser_old+0x3e3>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x17(%rbp)
jne    1509 <line_parser_old+0x409>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
setl   %al
mov    %al,-0x17(%rbp)
mov    -0x17(%rbp),%al
test   $0x1,%al
jne    1519 <line_parser_old+0x419>
jmp    1527 <line_parser_old+0x427>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    14e3 <line_parser_old+0x3e3>
jmp    152c <line_parser_old+0x42c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     1577 <line_parser_old+0x477>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jg     1577 <line_parser_old+0x477>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
add    $0x20,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    158d <line_parser_old+0x48d>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     14a0 <line_parser_old+0x3a0>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl -0x2(%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    15ce <line_parser_old+0x4ce>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movb   $0x0,-0x2(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    15fa <line_parser_old+0x4fa>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    15d4 <line_parser_old+0x4d4>
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<line_parser_old>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %rdi,%rax
movabs $0xffffffff00000000,%r8
ff ff ff
mov    $0xffffffff,%esi
mov    $0xfffffffe,%r15d
movabs $0x100000000,%r12
mov    %rdi,%rdx
mov    %r8,%rcx
add    $0x1,%esi
add    $0x1,%r15d
add    %r12,%rcx
cmpb   $0x0,(%rdx)
lea    0x1(%rdx),%rdx
jne    1130 <line_parser_old+0x30>
cmp    $0x2,%esi
mov    $0x1,%r10d
cmovae %esi,%r10d
mov    $0x1,%r11d
lea    -0x1(%r10),%rdx
movabs $0x800000000002400,%r9
cmp    $0x3,%rdx
jae    11c7 <line_parser_old+0xc7>
xor    %edi,%edi
test   $0x3,%r10b
je     11af <line_parser_old+0xaf>
add    %rax,%rdi
cmp    $0x2,%esi
mov    $0x1,%edx
cmovae %esi,%edx
and    $0x3,%edx
xor    %ebp,%ebp
jmp    1199 <line_parser_old+0x99>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rbp
cmp    %rbp,%rdx
je     11af <line_parser_old+0xaf>
movzbl (%rdi,%rbp,1),%ebx
cmp    $0x3b,%rbx
ja     1190 <line_parser_old+0x90>
bt     %rbx,%r9
jae    1190 <line_parser_old+0x90>
movb   $0x20,(%rdi,%rbp,1)
jmp    1190 <line_parser_old+0x90>
sar    $0x20,%rcx
mov    %esi,%r9d
neg    %r9d
mov    %r15d,%r10d
neg    %r10d
xor    %r11d,%r11d
jmp    125d <line_parser_old+0x15d>
cmp    $0x2,%esi
cmovae %esi,%r11d
and    $0xfffffffc,%r11d
xor    %edi,%edi
jmp    11e9 <line_parser_old+0xe9>
cs nopw 0x0(%rax,%rax,1)
add    $0x4,%rdi
cmp    %rdi,%r11
je     116c <line_parser_old+0x6c>
movzbl (%rax,%rdi,1),%edx
cmp    $0x3b,%rdx
ja     11fd <line_parser_old+0xfd>
bt     %rdx,%r9
jae    11fd <line_parser_old+0xfd>
movb   $0x20,(%rax,%rdi,1)
movzbl 0x1(%rax,%rdi,1),%edx
cmp    $0x3b,%rdx
ja     1213 <line_parser_old+0x113>
bt     %rdx,%r9
jae    1213 <line_parser_old+0x113>
movb   $0x20,0x1(%rax,%rdi,1)
movzbl 0x2(%rax,%rdi,1),%edx
cmp    $0x3b,%rdx
ja     1229 <line_parser_old+0x129>
bt     %rdx,%r9
jae    1229 <line_parser_old+0x129>
movb   $0x20,0x2(%rax,%rdi,1)
movzbl 0x3(%rax,%rdi,1),%edx
cmp    $0x3b,%rdx
ja     11e0 <line_parser_old+0xe0>
bt     %rdx,%r9
jae    11e0 <line_parser_old+0xe0>
movb   $0x20,0x3(%rax,%rdi,1)
jmp    11e0 <line_parser_old+0xe0>
mov    %esi,%r11d
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r11d
cmp    %esi,%r11d
jge    1369 <line_parser_old+0x269>
movslq %r11d,%rdi
mov    (%rax,%rdi,1),%r14b
cmp    $0x27,%r14b
jne    12c0 <line_parser_old+0x1c0>
movb   $0x20,(%rax,%rdi,1)
cmp    %r15d,%r11d
je     1369 <line_parser_old+0x269>
lea    0x1(%r11),%edx
movslq %edx,%rbp
mov    %rbp,%rbx
shl    $0x20,%rbx
lea    (%r9,%r11,1),%r14d
mov    $0xffffffff,%edi
xchg   %ax,%ax
cmpb   $0x27,(%rax,%rbp,1)
je     1350 <line_parser_old+0x250>
cmp    %rcx,%rbp
jge    1350 <line_parser_old+0x250>
movb   $0x20,(%rax,%rbp,1)
add    $0x1,%rbp
add    %r12,%rbx
add    $0xffffffff,%edi
cmp    %edi,%r14d
jne    1290 <line_parser_old+0x190>
jmp    1365 <line_parser_old+0x265>
nopl   0x0(%rax,%rax,1)
lea    -0x30(%r14),%edx
cmp    $0x9,%dl
ja     12e0 <line_parser_old+0x1e0>
mov    -0x1(%rax,%rdi,1),%dl
and    $0xdf,%dl
add    $0xbf,%dl
cmp    $0x1a,%dl
jb     1250 <line_parser_old+0x150>
jmp    12fd <line_parser_old+0x1fd>
xchg   %ax,%ax
lea    -0x2a(%r14),%edx
cmp    $0x5,%dl
ja     1250 <line_parser_old+0x150>
mov    0x1(%rax,%rdi,1),%dl
add    $0xd0,%dl
cmp    $0x9,%dl
ja     1250 <line_parser_old+0x150>
lea    (%r10,%r11,1),%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x30(%r14),%edx
cmp    $0xa,%dl
jb     1327 <line_parser_old+0x227>
add    $0xd4,%r14b
cmp    $0x2,%r14b
ja     1250 <line_parser_old+0x150>
cmp    %rcx,%rdi
jge    1250 <line_parser_old+0x150>
movb   $0x20,(%rax,%rdi,1)
test   %ebp,%ebp
je     1241 <line_parser_old+0x141>
movzbl 0x1(%rax,%rdi,1),%r14d
add    $0x1,%r11d
add    $0x1,%ebp
add    $0x1,%rdi
jmp    1310 <line_parser_old+0x210>
nop
sar    $0x20,%rbx
movb   $0x20,(%rax,%rbx,1)
cmp    %edi,%r14d
je     1369 <line_parser_old+0x269>
sub    %edi,%r11d
jmp    1250 <line_parser_old+0x150>
movb   $0x20,(%rax,%rcx,1)
xor    %ecx,%ecx
mov    %r8,%rsi
xchg   %ax,%ax
add    %r12,%rsi
cmpb   $0x0,(%rax,%rcx,1)
lea    0x1(%rcx),%rcx
jne    1370 <line_parser_old+0x270>
add    $0xffffffffffffffff,%rcx
sar    $0x20,%rsi
xor    %ebx,%ebx
xor    %r9d,%r9d
jmp    13be <line_parser_old+0x2be>
nopl   0x0(%rax)
sar    $0x20,%rbp
mov    (%rax,%rbp,1),%bpl
lea    -0x41(%rbp),%edx
lea    0x20(%rbp),%edi
cmp    $0x1a,%dl
movzbl %bpl,%edx
movzbl %dil,%edi
cmovae %edx,%edi
movslq %r9d,%r9
mov    %dil,(%rax,%r9,1)
add    $0x1,%r9
add    $0x1,%ebx
cmp    %ecx,%ebx
jge    140a <line_parser_old+0x30a>
movslq %ebx,%rdx
mov    (%rax,%rdx,1),%bpl
cmp    $0x20,%bpl
jne    1398 <line_parser_old+0x298>
test   %ebx,%ebx
jle    13db <line_parser_old+0x2db>
movslq %r9d,%r9
movb   $0x20,(%rax,%r9,1)
add    $0x1,%r9d
mov    %rdx,%rbp
shl    $0x20,%rbp
add    %r8,%rbp
add    $0xffffffff,%ebx
nopl   0x0(%rax,%rax,1)
add    %r12,%rbp
add    $0x1,%ebx
cmpb   $0x20,(%rax,%rdx,1)
jne    1390 <line_parser_old+0x290>
lea    0x1(%rdx),%rdi
cmp    %rsi,%rdx
mov    %rdi,%rdx
jl     13f0 <line_parser_old+0x2f0>
jmp    1390 <line_parser_old+0x290>
cmpb   $0x20,-0x2(%rax,%r9,1)
jne    1418 <line_parser_old+0x318>
movb   $0x0,-0x2(%rax,%r9,1)
cmp    %ecx,%r9d
jge    1422 <line_parser_old+0x322>
movb   $0x0,(%rax,%r9,1)
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i8* @line_parser_old(i8* returned %0) {
br label %2
2: ; preds = %2, %1
%3 = phi i64 [ %7, %2 ], [ 0, %1 ]
%4 = getelementptr inbounds i8, i8* %0, i64 %3
%5 = load i8, i8* %4
%6 = icmp eq i8 %5, 0
%7 = add nuw i64 %3, 1
br i1 %6, label %8, label %2
8: ; preds = %2
%9 = trunc i64 %3 to i32
%10 = call i32 @llvm.umax.i32(i32 %9, i32 1)
%11 = zext i32 %10 to i64
%12 = add nsw i64 %11, -1
%13 = and i64 %11, 3
%14 = icmp ult i64 %12, 3
br i1 %14, label %42, label %15
15: ; preds = %8
%16 = and i64 %11, 4294967292
br label %17
17: ; preds = %38, %15
%18 = phi i64 [ 0, %15 ], [ %39, %38 ]
%19 = phi i64 [ 0, %15 ], [ %40, %38 ]
%20 = getelementptr inbounds i8, i8* %0, i64 %18
%21 = load i8, i8* %20
switch i8 %21, label %23 [
i8 13, label %22
i8 10, label %22
i8 59, label %22
]
22: ; preds = %17, %17, %17
store i8 32, i8* %20
br label %23
23: ; preds = %17, %22
%24 = or i64 %18, 1
%25 = getelementptr inbounds i8, i8* %0, i64 %24
%26 = load i8, i8* %25
switch i8 %26, label %28 [
i8 13, label %27
i8 10, label %27
i8 59, label %27
]
27: ; preds = %23, %23, %23
store i8 32, i8* %25
br label %28
28: ; preds = %27, %23
%29 = or i64 %18, 2
%30 = getelementptr inbounds i8, i8* %0, i64 %29
%31 = load i8, i8* %30
switch i8 %31, label %33 [
i8 13, label %32
i8 10, label %32
i8 59, label %32
]
32: ; preds = %28, %28, %28
store i8 32, i8* %30
br label %33
33: ; preds = %32, %28
%34 = or i64 %18, 3
%35 = getelementptr inbounds i8, i8* %0, i64 %34
%36 = load i8, i8* %35
switch i8 %36, label %38 [
i8 13, label %37
i8 10, label %37
i8 59, label %37
]
37: ; preds = %33, %33, %33
store i8 32, i8* %35
br label %38
38: ; preds = %37, %33
%39 = add nuw nsw i64 %18, 4
%40 = add i64 %19, 4
%41 = icmp eq i64 %40, %16
br i1 %41, label %42, label %17
42: ; preds = %38, %8
%43 = phi i64 [ 0, %8 ], [ %39, %38 ]
%44 = icmp eq i64 %13, 0
br i1 %44, label %55, label %45
45: ; preds = %42, %51
%46 = phi i64 [ %52, %51 ], [ %43, %42 ]
%47 = phi i64 [ %53, %51 ], [ 0, %42 ]
%48 = getelementptr inbounds i8, i8* %0, i64 %46
%49 = load i8, i8* %48
switch i8 %49, label %51 [
i8 13, label %50
i8 10, label %50
i8 59, label %50
]
50: ; preds = %45, %45, %45
store i8 32, i8* %48
br label %51
51: ; preds = %50, %45
%52 = add nuw nsw i64 %46, 1
%53 = add i64 %47, 1
%54 = icmp eq i64 %53, %13
br i1 %54, label %55, label %45
55: ; preds = %51, %42
%56 = shl i64 %3, 32
%57 = ashr exact i64 %56, 32
br label %58
58: ; preds = %55, %130
%59 = phi i32 [ %132, %130 ], [ 0, %55 ]
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds i8, i8* %0, i64 %60
%62 = load i8, i8* %61
%63 = icmp eq i8 %62, 39
br i1 %63, label %64, label %88
64: ; preds = %58
store i8 32, i8* %61
%65 = add nsw i32 %59, 1
%66 = icmp eq i32 %65, %9
br i1 %66, label %134, label %67
67: ; preds = %64
%68 = sext i32 %65 to i64
br label %69
69: ; preds = %67, %76
%70 = phi i64 [ %68, %67 ], [ %77, %76 ]
%71 = getelementptr inbounds i8, i8* %0, i64 %70
%72 = load i8, i8* %71
%73 = icmp ne i8 %72, 39
%74 = icmp slt i64 %70, %57
%75 = select i1 %73, i1 %74, i1 false
br i1 %75, label %76, label %82
76: ; preds = %69
store i8 32, i8* %71
%77 = add nsw i64 %70, 1
%78 = trunc i64 %77 to i32
%79 = icmp eq i32 %78, %9
br i1 %79, label %80, label %69
80: ; preds = %76
%81 = getelementptr inbounds i8, i8* %0, i64 %57
store i8 32, i8* %81
br label %134
82: ; preds = %69
%83 = trunc i64 %70 to i32
%84 = shl i64 %70, 32
%85 = ashr exact i64 %84, 32
%86 = getelementptr inbounds i8, i8* %0, i64 %85
store i8 32, i8* %86
%87 = icmp eq i32 %83, %9
br i1 %87, label %134, label %130
88: ; preds = %58
%89 = add i8 %62, -48
%90 = icmp ult i8 %89, 10
br i1 %90, label %91, label %97
91: ; preds = %88
%92 = getelementptr inbounds i8, i8* %61, i64 -1
%93 = load i8, i8* %92
%94 = and i8 %93, -33
%95 = add i8 %94, -65
%96 = icmp ult i8 %95, 26
br i1 %96, label %130, label %105
97: ; preds = %88
%98 = add i8 %62, -42
%99 = icmp ult i8 %98, 6
br i1 %99, label %100, label %130
100: ; preds = %97
%101 = getelementptr inbounds i8, i8* %61, i64 1
%102 = load i8, i8* %101
%103 = add i8 %102, -48
%104 = icmp ult i8 %103, 10
br i1 %104, label %105, label %130
105: ; preds = %91, %100
br label %106
106: ; preds = %105, %123
%107 = phi i8 [ %125, %123 ], [ %62, %105 ]
%108 = phi i64 [ %120, %123 ], [ %60, %105 ]
%109 = getelementptr inbounds i8, i8* %0, i64 %108
%110 = add i8 %107, -48
%111 = icmp ult i8 %110, 10
br i1 %111, label %117, label %112
112: ; preds = %106
%113 = add i8 %107, -44
%114 = icmp ult i8 %113, 3
%115 = icmp slt i64 %108, %57
%116 = select i1 %114, i1 %115, i1 false
br i1 %116, label %119, label %128
117: ; preds = %106
%118 = icmp slt i64 %108, %57
br i1 %118, label %119, label %126
119: ; preds = %112, %117
store i8 32, i8* %109
%120 = add nsw i64 %108, 1
%121 = trunc i64 %120 to i32
%122 = icmp eq i32 %121, %9
br i1 %122, label %130, label %123
123: ; preds = %119
%124 = getelementptr inbounds i8, i8* %0, i64 %120
%125 = load i8, i8* %124
br label %106
126: ; preds = %117
%127 = trunc i64 %108 to i32
br label %130
128: ; preds = %112
%129 = trunc i64 %108 to i32
br label %130
130: ; preds = %119, %126, %128, %91, %97, %100, %82
%131 = phi i32 [ %83, %82 ], [ %59, %100 ], [ %59, %97 ], [ %59, %91 ], [ %127, %126 ], [ %129, %128 ], [ %9, %119 ]
%132 = add nsw i32 %131, 1
%133 = icmp slt i32 %132, %9
br i1 %133, label %58, label %134
134: ; preds = %82, %64, %130, %80
br label %135
135: ; preds = %134, %135
%136 = phi i64 [ %140, %135 ], [ 0, %134 ]
%137 = getelementptr inbounds i8, i8* %0, i64 %136
%138 = load i8, i8* %137
%139 = icmp eq i8 %138, 0
%140 = add nuw i64 %136, 1
br i1 %139, label %141, label %135
141: ; preds = %135
%142 = trunc i64 %136 to i32
%143 = shl i64 %136, 32
%144 = ashr exact i64 %143, 32
br label %145
145: ; preds = %141, %174
%146 = phi i32 [ %185, %174 ], [ 0, %141 ]
%147 = phi i32 [ %184, %174 ], [ 0, %141 ]
%148 = sext i32 %146 to i64
%149 = getelementptr inbounds i8, i8* %0, i64 %148
%150 = load i8, i8* %149
%151 = icmp eq i8 %150, 32
br i1 %151, label %152, label %174
152: ; preds = %145
%153 = icmp sgt i32 %146, 0
br i1 %153, label %154, label %158
154: ; preds = %152
%155 = sext i32 %147 to i64
%156 = getelementptr inbounds i8, i8* %0, i64 %155
store i8 32, i8* %156
%157 = add nsw i32 %147, 1
br label %158
158: ; preds = %154, %152
%159 = phi i32 [ %157, %154 ], [ %147, %152 ]
br label %160
160: ; preds = %160, %158
%161 = phi i64 [ %167, %160 ], [ %148, %158 ]
%162 = getelementptr inbounds i8, i8* %0, i64 %161
%163 = load i8, i8* %162
%164 = icmp eq i8 %163, 32
%165 = icmp slt i64 %161, %144
%166 = select i1 %164, i1 %165, i1 false
%167 = add nsw i64 %161, 1
br i1 %166, label %160, label %168
168: ; preds = %160
%169 = trunc i64 %161 to i32
%170 = shl i64 %161, 32
%171 = ashr exact i64 %170, 32
%172 = getelementptr inbounds i8, i8* %0, i64 %171
%173 = load i8, i8* %172
br label %174
174: ; preds = %168, %145
%175 = phi i8 [ %173, %168 ], [ %150, %145 ]
%176 = phi i32 [ %169, %168 ], [ %146, %145 ]
%177 = phi i32 [ %159, %168 ], [ %147, %145 ]
%178 = add i8 %175, -65
%179 = icmp ult i8 %178, 26
%180 = add nuw nsw i8 %175, 32
%181 = select i1 %179, i8 %180, i8 %175
%182 = sext i32 %177 to i64
%183 = getelementptr inbounds i8, i8* %0, i64 %182
store i8 %181, i8* %183
%184 = add nsw i32 %177, 1
%185 = add nsw i32 %176, 1
%186 = icmp slt i32 %185, %142
br i1 %186, label %145, label %187
187: ; preds = %174
%188 = sext i32 %184 to i64
%189 = getelementptr inbounds i8, i8* %0, i64 %188
%190 = getelementptr inbounds i8, i8* %189, i64 -2
%191 = load i8, i8* %190
%192 = icmp eq i8 %191, 32
br i1 %192, label %193, label %194
193: ; preds = %187
store i8 0, i8* %190
br label %194
194: ; preds = %193, %187
%195 = icmp slt i32 %184, %142
br i1 %195, label %196, label %197
196: ; preds = %194
store i8 0, i8* %189
br label %197
197: ; preds = %196, %194
ret i8* %0
}