char *line_parser(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) == '\'') {
        count++;
        if (count == size) {
          break;
        }
        while (*(file_line + count) != '\'' && count < size) {
          *(file_line + count) = ' ';
          count++;
          if (count == size) {
            break;
          }
        }
        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) == '.'))) &&
                 (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 - 1) == '\0')) {
    *(file_line + pos - 2) = '\0';
  }
  for (count = pos; count < size; count++) {
    *(file_line + pos) = '\0';
  }
  return (file_line);
}


x86 assembly (clang, -O0):
<line_parser>:
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+0x32>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    110f <line_parser+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+0x78>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1178 <line_parser+0x78>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3b,%eax
jne    1184 <line_parser+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+0x39>
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x27,%eax
jne    124b <line_parser+0x14b>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    11cf <line_parser+0xcf>
jmp    143b <line_parser+0x33b>
jmp    11d4 <line_parser+0xd4>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x27,%ecx
mov    %al,-0x15(%rbp)
je     11fa <line_parser+0xfa>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
setl   %al
mov    %al,-0x15(%rbp)
mov    -0x15(%rbp),%al
test   $0x1,%al
jne    120a <line_parser+0x10a>
jmp    1235 <line_parser+0x135>
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    1230 <line_parser+0x130>
jmp    1235 <line_parser+0x135>
jmp    11d4 <line_parser+0xd4>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    1246 <line_parser+0x146>
jmp    143b <line_parser+0x33b>
jmp    1426 <line_parser+0x326>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     12cd <line_parser+0x1cd>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     12cd <line_parser+0x1cd>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     12a1 <line_parser+0x1a1>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jle    12cd <line_parser+0x1cd>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     1377 <line_parser+0x277>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jg     1377 <line_parser+0x277>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
je     134b <line_parser+0x24b>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2b,%eax
je     134b <line_parser+0x24b>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
je     134b <line_parser+0x24b>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
je     134b <line_parser+0x24b>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     134b <line_parser+0x24b>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
jne    1421 <line_parser+0x321>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     1421 <line_parser+0x321>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl 0x1(%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     1421 <line_parser+0x321>
jmp    137c <line_parser+0x27c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     13a6 <line_parser+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jle    13d5 <line_parser+0x2d5>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
je     13d5 <line_parser+0x2d5>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x2e,%ecx
mov    %al,-0x16(%rbp)
jne    13e1 <line_parser+0x2e1>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
setl   %al
mov    %al,-0x16(%rbp)
mov    -0x16(%rbp),%al
test   $0x1,%al
jne    13f1 <line_parser+0x2f1>
jmp    141c <line_parser+0x31c>
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    1417 <line_parser+0x317>
jmp    141c <line_parser+0x31c>
jmp    137c <line_parser+0x27c>
jmp    1421 <line_parser+0x321>
jmp    1426 <line_parser+0x326>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     11a0 <line_parser+0xa0>
movl   $0x0,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1465 <line_parser+0x365>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1442 <line_parser+0x342>
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    14ff <line_parser+0x3ff>
cmpl   $0x0,-0x10(%rbp)
jle    14b1 <line_parser+0x3b1>
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    14b6 <line_parser+0x3b6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x17(%rbp)
jne    14dc <line_parser+0x3dc>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
setl   %al
mov    %al,-0x17(%rbp)
mov    -0x17(%rbp),%al
test   $0x1,%al
jne    14ec <line_parser+0x3ec>
jmp    14fa <line_parser+0x3fa>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    14b6 <line_parser+0x3b6>
jmp    14ff <line_parser+0x3ff>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     154a <line_parser+0x44a>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jg     154a <line_parser+0x44a>
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    1560 <line_parser+0x460>
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     1473 <line_parser+0x373>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl -0x2(%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    15b7 <line_parser+0x4b7>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl -0x1(%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    15b7 <line_parser+0x4b7>
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    15e3 <line_parser+0x4e3>
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    15bd <line_parser+0x4bd>
mov    -0x8(%rbp),%rax
pop    %rbp
ret

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

LLVM IR (-O0):
define i8* @line_parser(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 = %277, %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 %103
63: ; preds = %55
%64 = load i32, i32* %4
%65 = add nsw i32 %64, 1
store i32 %65, i32* %4
%66 = load i32, i32* %4
%67 = load i32, i32* %3
%68 = icmp eq i32 %66, %67
br i1 %68, label %69, label %70
69: ; preds = %63
br label %281
70: ; preds = %63
br label %71
71: ; preds = %96, %70
%72 = load i8*, i8** %2
%73 = load i32, i32* %4
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds i8, i8* %72, i64 %74
%76 = load i8, i8* %75
%77 = sext i8 %76 to i32
%78 = icmp ne i32 %77, 39
br i1 %78, label %79, label %83
79: ; preds = %71
%80 = load i32, i32* %4
%81 = load i32, i32* %3
%82 = icmp slt i32 %80, %81
br label %83
83: ; preds = %79, %71
%84 = phi i1 [ false, %71 ], [ %82, %79 ]
br i1 %84, label %85, label %97
85: ; preds = %83
%86 = load i8*, i8** %2
%87 = load i32, i32* %4
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds i8, i8* %86, i64 %88
store i8 32, i8* %89
%90 = load i32, i32* %4
%91 = add nsw i32 %90, 1
store i32 %91, i32* %4
%92 = load i32, i32* %4
%93 = load i32, i32* %3
%94 = icmp eq i32 %92, %93
br i1 %94, label %95, label %96
95: ; preds = %85
br label %97
96: ; preds = %85
br label %71
97: ; preds = %95, %83
%98 = load i32, i32* %4
%99 = load i32, i32* %3
%100 = icmp eq i32 %98, %99
br i1 %100, label %101, label %102
101: ; preds = %97
br label %281
102: ; preds = %97
br label %274
103: ; preds = %55
%104 = load i8*, i8** %2
%105 = load i32, i32* %4
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds i8, i8* %104, i64 %106
%108 = load i8, i8* %107
%109 = sext i8 %108 to i32
%110 = icmp sge i32 %109, 48
br i1 %110, label %111, label %155
111: ; preds = %103
%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 sle i32 %117, 57
br i1 %118, label %119, label %155
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 = getelementptr inbounds i8, i8* %123, i64 -1
%125 = load i8, i8* %124
%126 = sext i8 %125 to i32
%127 = icmp sge i32 %126, 97
br i1 %127, label %128, label %137
128: ; preds = %119
%129 = load i8*, i8** %2
%130 = load i32, i32* %4
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds i8, i8* %129, i64 %131
%133 = getelementptr inbounds i8, i8* %132, i64 -1
%134 = load i8, i8* %133
%135 = sext i8 %134 to i32
%136 = icmp sle i32 %135, 122
br i1 %136, label %155, label %137
137: ; preds = %128, %119
%138 = load i8*, i8** %2
%139 = load i32, i32* %4
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds i8, i8* %138, i64 %140
%142 = getelementptr inbounds i8, i8* %141, i64 -1
%143 = load i8, i8* %142
%144 = sext i8 %143 to i32
%145 = icmp sge i32 %144, 65
br i1 %145, label %146, label %221
146: ; preds = %137
%147 = load i8*, i8** %2
%148 = load i32, i32* %4
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds i8, i8* %147, i64 %149
%151 = getelementptr inbounds i8, i8* %150, i64 -1
%152 = load i8, i8* %151
%153 = sext i8 %152 to i32
%154 = icmp sle i32 %153, 90
br i1 %154, label %155, label %221
155: ; preds = %146, %128, %111, %103
%156 = load i8*, i8** %2
%157 = load i32, i32* %4
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds i8, i8* %156, i64 %158
%160 = load i8, i8* %159
%161 = sext i8 %160 to i32
%162 = icmp eq i32 %161, 45
br i1 %162, label %203, label %163
163: ; preds = %155
%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, 43
br i1 %170, label %203, 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, 42
br i1 %178, label %203, 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, 47
br i1 %186, label %203, 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, 46
br i1 %194, label %203, 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, 44
br i1 %202, label %203, label %273
203: ; preds = %195, %187, %179, %171, %163, %155
%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 = getelementptr inbounds i8, i8* %207, i64 1
%209 = load i8, i8* %208
%210 = sext i8 %209 to i32
%211 = icmp sge i32 %210, 48
br i1 %211, label %212, label %273
212: ; preds = %203
%213 = load i8*, i8** %2
%214 = load i32, i32* %4
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds i8, i8* %213, i64 %215
%217 = getelementptr inbounds i8, i8* %216, i64 1
%218 = load i8, i8* %217
%219 = sext i8 %218 to i32
%220 = icmp sle i32 %219, 57
br i1 %220, label %221, label %273
221: ; preds = %212, %146, %137
br label %222
222: ; preds = %271, %221
%223 = load i8*, i8** %2
%224 = load i32, i32* %4
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i8, i8* %223, i64 %225
%227 = load i8, i8* %226
%228 = sext i8 %227 to i32
%229 = icmp sge i32 %228, 48
br i1 %229, label %230, label %238
230: ; preds = %222
%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 sle i32 %236, 57
br i1 %237, label %254, label %238
238: ; preds = %230, %222
%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 eq i32 %244, 45
br i1 %245, label %254, label %246
246: ; preds = %238
%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, 46
br i1 %253, label %254, label %258
254: ; preds = %246, %238, %230
%255 = load i32, i32* %4
%256 = load i32, i32* %3
%257 = icmp slt i32 %255, %256
br label %258
258: ; preds = %254, %246
%259 = phi i1 [ false, %246 ], [ %257, %254 ]
br i1 %259, label %260, label %272
260: ; preds = %258
%261 = load i8*, i8** %2
%262 = load i32, i32* %4
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds i8, i8* %261, i64 %263
store i8 32, i8* %264
%265 = load i32, i32* %4
%266 = add nsw i32 %265, 1
store i32 %266, i32* %4
%267 = load i32, i32* %4
%268 = load i32, i32* %3
%269 = icmp eq i32 %267, %268
br i1 %269, label %270, label %271
270: ; preds = %260
br label %272
271: ; preds = %260
br label %222
272: ; preds = %270, %258
br label %273
273: ; preds = %272, %212, %203, %195
br label %274
274: ; preds = %273, %102
%275 = load i32, i32* %4
%276 = add nsw i32 %275, 1
store i32 %276, i32* %4
br label %277
277: ; preds = %274
%278 = load i32, i32* %4
%279 = load i32, i32* %3
%280 = icmp slt i32 %278, %279
br i1 %280, label %55, label %281
281: ; preds = %277, %101, %69
store i32 0, i32* %3
br label %282
282: ; preds = %290, %281
%283 = load i8*, i8** %2
%284 = load i32, i32* %3
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds i8, i8* %283, i64 %285
%287 = load i8, i8* %286
%288 = sext i8 %287 to i32
%289 = icmp ne i32 %288, 0
br i1 %289, label %290, label %293
290: ; preds = %282
%291 = load i32, i32* %3
%292 = add nsw i32 %291, 1
store i32 %292, i32* %3
br label %282
293: ; preds = %282
store i32 0, i32* %5
store i32 0, i32* %4
br label %294
294: ; preds = %380, %293
%295 = load i8*, i8** %2
%296 = load i32, i32* %4
%297 = sext i32 %296 to i64
%298 = getelementptr inbounds i8, i8* %295, i64 %297
%299 = load i8, i8* %298
%300 = sext i8 %299 to i32
%301 = icmp eq i32 %300, 32
br i1 %301, label %302, label %336
302: ; preds = %294
%303 = load i32, i32* %4
%304 = icmp sgt i32 %303, 0
br i1 %304, label %305, label %317
305: ; preds = %302
%306 = load i8*, i8** %2
%307 = load i32, i32* %4
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds i8, i8* %306, i64 %308
%310 = load i8, i8* %309
%311 = load i8*, i8** %2
%312 = load i32, i32* %5
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds i8, i8* %311, i64 %313
store i8 %310, i8* %314
%315 = load i32, i32* %5
%316 = add nsw i32 %315, 1
store i32 %316, i32* %5
br label %317
317: ; preds = %305, %302
br label %318
318: ; preds = %332, %317
%319 = load i8*, i8** %2
%320 = load i32, i32* %4
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds i8, i8* %319, i64 %321
%323 = load i8, i8* %322
%324 = sext i8 %323 to i32
%325 = icmp eq i32 %324, 32
br i1 %325, label %326, label %330
326: ; preds = %318
%327 = load i32, i32* %4
%328 = load i32, i32* %3
%329 = icmp slt i32 %327, %328
br label %330
330: ; preds = %326, %318
%331 = phi i1 [ false, %318 ], [ %329, %326 ]
br i1 %331, label %332, label %335
332: ; preds = %330
%333 = load i32, i32* %4
%334 = add nsw i32 %333, 1
store i32 %334, i32* %4
br label %318
335: ; preds = %330
br label %336
336: ; preds = %335, %294
%337 = load i8*, i8** %2
%338 = load i32, i32* %4
%339 = sext i32 %338 to i64
%340 = getelementptr inbounds i8, i8* %337, i64 %339
%341 = load i8, i8* %340
%342 = sext i8 %341 to i32
%343 = icmp sge i32 %342, 65
br i1 %343, label %344, label %365
344: ; preds = %336
%345 = load i8*, i8** %2
%346 = load i32, i32* %4
%347 = sext i32 %346 to i64
%348 = getelementptr inbounds i8, i8* %345, i64 %347
%349 = load i8, i8* %348
%350 = sext i8 %349 to i32
%351 = icmp sle i32 %350, 90
br i1 %351, label %352, label %365
352: ; preds = %344
%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 = add nsw i32 %358, 32
%360 = trunc i32 %359 to i8
%361 = load i8*, i8** %2
%362 = load i32, i32* %5
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds i8, i8* %361, i64 %363
store i8 %360, i8* %364
br label %375
365: ; preds = %344, %336
%366 = load i8*, i8** %2
%367 = load i32, i32* %4
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds i8, i8* %366, i64 %368
%370 = load i8, i8* %369
%371 = load i8*, i8** %2
%372 = load i32, i32* %5
%373 = sext i32 %372 to i64
%374 = getelementptr inbounds i8, i8* %371, i64 %373
store i8 %370, i8* %374
br label %375
375: ; preds = %365, %352
%376 = load i32, i32* %5
%377 = add nsw i32 %376, 1
store i32 %377, i32* %5
%378 = load i32, i32* %4
%379 = add nsw i32 %378, 1
store i32 %379, i32* %4
br label %380
380: ; preds = %375
%381 = load i32, i32* %4
%382 = load i32, i32* %3
%383 = icmp slt i32 %381, %382
br i1 %383, label %294, label %384
384: ; preds = %380
%385 = load i8*, i8** %2
%386 = load i32, i32* %5
%387 = sext i32 %386 to i64
%388 = getelementptr inbounds i8, i8* %385, i64 %387
%389 = getelementptr inbounds i8, i8* %388, i64 -2
%390 = load i8, i8* %389
%391 = sext i8 %390 to i32
%392 = icmp eq i32 %391, 32
br i1 %392, label %393, label %408
393: ; preds = %384
%394 = load i8*, i8** %2
%395 = load i32, i32* %5
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds i8, i8* %394, i64 %396
%398 = getelementptr inbounds i8, i8* %397, i64 -1
%399 = load i8, i8* %398
%400 = sext i8 %399 to i32
%401 = icmp eq i32 %400, 0
br i1 %401, label %402, label %408
402: ; preds = %393
%403 = load i8*, i8** %2
%404 = load i32, i32* %5
%405 = sext i32 %404 to i64
%406 = getelementptr inbounds i8, i8* %403, i64 %405
%407 = getelementptr inbounds i8, i8* %406, i64 -2
store i8 0, i8* %407
br label %408
408: ; preds = %402, %393, %384
%409 = load i32, i32* %5
store i32 %409, i32* %4
br label %410
410: ; preds = %419, %408
%411 = load i32, i32* %4
%412 = load i32, i32* %3
%413 = icmp slt i32 %411, %412
br i1 %413, label %414, label %422
414: ; preds = %410
%415 = load i8*, i8** %2
%416 = load i32, i32* %5
%417 = sext i32 %416 to i64
%418 = getelementptr inbounds i8, i8* %415, i64 %417
store i8 0, i8* %418
br label %419
419: ; preds = %414
%420 = load i32, i32* %4
%421 = add nsw i32 %420, 1
store i32 %421, i32* %4
br label %410
422: ; preds = %410
%423 = load i8*, i8** %2
ret i8* %423
}

LLVM IR (-O2):
define i8* @line_parser(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, %125
%59 = phi i32 [ %127, %125 ], [ 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 %83
64: ; preds = %58
%65 = add nsw i32 %59, 1
%66 = icmp eq i32 %65, %9
br i1 %66, label %129, 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 %80
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 %129, label %69
80: ; preds = %69
%81 = trunc i64 %70 to i32
%82 = icmp eq i32 %81, %9
br i1 %82, label %129, label %125
83: ; preds = %58
%84 = add i8 %62, -48
%85 = icmp ult i8 %84, 10
br i1 %85, label %86, label %92
86: ; preds = %83
%87 = getelementptr inbounds i8, i8* %61, i64 -1
%88 = load i8, i8* %87
%89 = and i8 %88, -33
%90 = add i8 %89, -65
%91 = icmp ult i8 %90, 26
br i1 %91, label %125, label %100
92: ; preds = %83
%93 = add i8 %62, -42
%94 = icmp ult i8 %93, 6
br i1 %94, label %95, label %125
95: ; preds = %92
%96 = getelementptr inbounds i8, i8* %61, i64 1
%97 = load i8, i8* %96
%98 = add i8 %97, -48
%99 = icmp ult i8 %98, 10
br i1 %99, label %100, label %125
100: ; preds = %86, %95
br label %101
101: ; preds = %100, %118
%102 = phi i8 [ %120, %118 ], [ %62, %100 ]
%103 = phi i64 [ %115, %118 ], [ %60, %100 ]
%104 = getelementptr inbounds i8, i8* %0, i64 %103
%105 = add i8 %102, -48
%106 = icmp ult i8 %105, 10
br i1 %106, label %112, label %107
107: ; preds = %101
%108 = add i8 %102, -45
%109 = icmp ult i8 %108, 2
%110 = icmp slt i64 %103, %57
%111 = select i1 %109, i1 %110, i1 false
br i1 %111, label %114, label %123
112: ; preds = %101
%113 = icmp slt i64 %103, %57
br i1 %113, label %114, label %121
114: ; preds = %107, %112
store i8 32, i8* %104
%115 = add nsw i64 %103, 1
%116 = trunc i64 %115 to i32
%117 = icmp eq i32 %116, %9
br i1 %117, label %125, label %118
118: ; preds = %114
%119 = getelementptr inbounds i8, i8* %0, i64 %115
%120 = load i8, i8* %119
br label %101
121: ; preds = %112
%122 = trunc i64 %103 to i32
br label %125
123: ; preds = %107
%124 = trunc i64 %103 to i32
br label %125
125: ; preds = %114, %121, %123, %86, %92, %95, %80
%126 = phi i32 [ %81, %80 ], [ %59, %95 ], [ %59, %92 ], [ %59, %86 ], [ %122, %121 ], [ %124, %123 ], [ %9, %114 ]
%127 = add nsw i32 %126, 1
%128 = icmp slt i32 %127, %9
br i1 %128, label %58, label %129
129: ; preds = %80, %64, %125, %76
br label %130
130: ; preds = %129, %130
%131 = phi i64 [ %135, %130 ], [ 0, %129 ]
%132 = getelementptr inbounds i8, i8* %0, i64 %131
%133 = load i8, i8* %132
%134 = icmp eq i8 %133, 0
%135 = add nuw i64 %131, 1
br i1 %134, label %136, label %130
136: ; preds = %130
%137 = trunc i64 %131 to i32
%138 = shl i64 %131, 32
%139 = ashr exact i64 %138, 32
br label %140
140: ; preds = %136, %169
%141 = phi i32 [ %180, %169 ], [ 0, %136 ]
%142 = phi i32 [ %179, %169 ], [ 0, %136 ]
%143 = sext i32 %141 to i64
%144 = getelementptr inbounds i8, i8* %0, i64 %143
%145 = load i8, i8* %144
%146 = icmp eq i8 %145, 32
br i1 %146, label %147, label %169
147: ; preds = %140
%148 = icmp sgt i32 %141, 0
br i1 %148, label %149, label %153
149: ; preds = %147
%150 = sext i32 %142 to i64
%151 = getelementptr inbounds i8, i8* %0, i64 %150
store i8 32, i8* %151
%152 = add nsw i32 %142, 1
br label %153
153: ; preds = %149, %147
%154 = phi i32 [ %152, %149 ], [ %142, %147 ]
br label %155
155: ; preds = %155, %153
%156 = phi i64 [ %162, %155 ], [ %143, %153 ]
%157 = getelementptr inbounds i8, i8* %0, i64 %156
%158 = load i8, i8* %157
%159 = icmp eq i8 %158, 32
%160 = icmp slt i64 %156, %139
%161 = select i1 %159, i1 %160, i1 false
%162 = add nsw i64 %156, 1
br i1 %161, label %155, label %163
163: ; preds = %155
%164 = trunc i64 %156 to i32
%165 = shl i64 %156, 32
%166 = ashr exact i64 %165, 32
%167 = getelementptr inbounds i8, i8* %0, i64 %166
%168 = load i8, i8* %167
br label %169
169: ; preds = %163, %140
%170 = phi i8 [ %168, %163 ], [ %145, %140 ]
%171 = phi i32 [ %164, %163 ], [ %141, %140 ]
%172 = phi i32 [ %154, %163 ], [ %142, %140 ]
%173 = add i8 %170, -65
%174 = icmp ult i8 %173, 26
%175 = add nuw nsw i8 %170, 32
%176 = select i1 %174, i8 %175, i8 %170
%177 = sext i32 %172 to i64
%178 = getelementptr inbounds i8, i8* %0, i64 %177
store i8 %176, i8* %178
%179 = add nsw i32 %172, 1
%180 = add nsw i32 %171, 1
%181 = icmp slt i32 %180, %137
br i1 %181, label %140, label %182
182: ; preds = %169
%183 = sext i32 %179 to i64
%184 = getelementptr inbounds i8, i8* %0, i64 %183
%185 = getelementptr inbounds i8, i8* %184, i64 -2
%186 = load i8, i8* %185
%187 = icmp eq i8 %186, 32
%188 = icmp eq i8 %176, 0
%189 = select i1 %187, i1 %188, i1 false
br i1 %189, label %190, label %191
190: ; preds = %182
store i8 0, i8* %185
br label %191
191: ; preds = %190, %182
%192 = icmp slt i32 %179, %137
br i1 %192, label %193, label %194
193: ; preds = %191
store i8 0, i8* %184
br label %194
194: ; preds = %193, %191
ret i8* %0
}