char *BASM_PP_ParseLine(char *s, char *b) {
  static int is = 0;
  char *t;
  t = b;
  while (*s) {
    if (*s == '\"') {
      is = !is;
      *t++ = *s++;
      continue;
    }
    if (is) {
      if (is && (s[0] == '\\') && (s[1] == '\"')) {
        *t++ = *s++;
        *t++ = *s++;
        continue;
      }
      if (is && (s[0] == '\\') && (s[1] == '\\')) {
        *t++ = *s++;
        *t++ = *s++;
        continue;
      }
      *t++ = *s++;
      continue;
    }
    if (s[0] <= ' ') {
      if ((*s == '\n') || (*s == '\r'))
        break;
      if (s[1] == ';') {
        while (*s && (*s != '\n') && (*s != '\r'))
          s++;
        break;
      }
      *t++ = *s++;
      continue;
    }
    if (s[0] == '/') {
      if ((s[0] == '/') && (s[1] == '/')) {
        while (*s && (*s != '\n') && (*s != '\r'))
          s++;
        break;
      }
      if ((s[0] == '/') && (s[1] == '*')) {
        s += 2;
        while (*s) {
          if ((s[0] == '*') && (s[1] == '/')) {
            s += 2;
            break;
          }
          s++;
        }
        *t++ = ' ';
        continue;
      }
    }
    if ((*s == '\\') && ((s[1] == '\r') || (s[1] == '\n'))) {
      s++;
      while (*s && (*s <= ' '))
        s++;
      *t++ = ' ';
      continue;
    }
    *t++ = *s++;
  }
  *t++ = 0;
  if (*s == '\r')
    s++;
  if (*s == '\n')
    s++;
  return (s);
}


x86 assembly (clang, -O0):
<BASM_PP_ParseLine>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
cmpb   $0x0,(%rax)
je     1554 <BASM_PP_ParseLine+0x454>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    116f <BASM_PP_ParseLine+0x6f>
cmpl   $0x0,0x2eec(%rip)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,0x2edc(%rip)
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    1114 <BASM_PP_ParseLine+0x14>
cmpl   $0x0,0x2eae(%rip)
je     1291 <BASM_PP_ParseLine+0x191>
cmpl   $0x0,0x2ea1(%rip)
je     11f3 <BASM_PP_ParseLine+0xf3>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    11f3 <BASM_PP_ParseLine+0xf3>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x22,%eax
jne    11f3 <BASM_PP_ParseLine+0xf3>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    1114 <BASM_PP_ParseLine+0x14>
cmpl   $0x0,0x2e2a(%rip)
je     126a <BASM_PP_ParseLine+0x16a>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    126a <BASM_PP_ParseLine+0x16a>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x5c,%eax
jne    126a <BASM_PP_ParseLine+0x16a>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    1114 <BASM_PP_ParseLine+0x14>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    1114 <BASM_PP_ParseLine+0x14>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jg     1363 <BASM_PP_ParseLine+0x263>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     12c1 <BASM_PP_ParseLine+0x1c1>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
jne    12c6 <BASM_PP_ParseLine+0x1c6>
jmp    1554 <BASM_PP_ParseLine+0x454>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x3b,%eax
jne    133c <BASM_PP_ParseLine+0x23c>
jmp    12dc <BASM_PP_ParseLine+0x1dc>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x19(%rbp)
je     1316 <BASM_PP_ParseLine+0x216>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x19(%rbp)
je     1316 <BASM_PP_ParseLine+0x216>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
setne  %al
mov    %al,-0x19(%rbp)
mov    -0x19(%rbp),%al
test   $0x1,%al
jne    1326 <BASM_PP_ParseLine+0x226>
jmp    1337 <BASM_PP_ParseLine+0x237>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    12dc <BASM_PP_ParseLine+0x1dc>
jmp    1554 <BASM_PP_ParseLine+0x454>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    1114 <BASM_PP_ParseLine+0x14>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    1492 <BASM_PP_ParseLine+0x392>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    13f9 <BASM_PP_ParseLine+0x2f9>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2f,%eax
jne    13f9 <BASM_PP_ParseLine+0x2f9>
jmp    1399 <BASM_PP_ParseLine+0x299>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x1a(%rbp)
je     13d3 <BASM_PP_ParseLine+0x2d3>
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x1a(%rbp)
je     13d3 <BASM_PP_ParseLine+0x2d3>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
setne  %al
mov    %al,-0x1a(%rbp)
mov    -0x1a(%rbp),%al
test   $0x1,%al
jne    13e3 <BASM_PP_ParseLine+0x2e3>
jmp    13f4 <BASM_PP_ParseLine+0x2f4>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    1399 <BASM_PP_ParseLine+0x299>
jmp    1554 <BASM_PP_ParseLine+0x454>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    148d <BASM_PP_ParseLine+0x38d>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2a,%eax
jne    148d <BASM_PP_ParseLine+0x38d>
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
cmpb   $0x0,(%rax)
je     1476 <BASM_PP_ParseLine+0x376>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    1465 <BASM_PP_ParseLine+0x365>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2f,%eax
jne    1465 <BASM_PP_ParseLine+0x365>
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
jmp    1476 <BASM_PP_ParseLine+0x376>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    1426 <BASM_PP_ParseLine+0x326>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x20,(%rax)
jmp    1114 <BASM_PP_ParseLine+0x14>
jmp    1492 <BASM_PP_ParseLine+0x392>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    152d <BASM_PP_ParseLine+0x42d>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0xd,%eax
je     14c4 <BASM_PP_ParseLine+0x3c4>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0xa,%eax
jne    152d <BASM_PP_ParseLine+0x42d>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x1b(%rbp)
je     14f5 <BASM_PP_ParseLine+0x3f5>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
setle  %al
mov    %al,-0x1b(%rbp)
mov    -0x1b(%rbp),%al
test   $0x1,%al
jne    1505 <BASM_PP_ParseLine+0x405>
jmp    1516 <BASM_PP_ParseLine+0x416>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    14d0 <BASM_PP_ParseLine+0x3d0>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x20,(%rax)
jmp    1114 <BASM_PP_ParseLine+0x14>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    1114 <BASM_PP_ParseLine+0x14>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x0,(%rax)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
jne    1582 <BASM_PP_ParseLine+0x482>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    159e <BASM_PP_ParseLine+0x49e>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<BASM_PP_ParseLine>:
jmp    112d <BASM_PP_ParseLine+0x2d>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
xor    %eax,%eax
cmpl   $0x0,0x2f0b(%rip)
sete   %al
mov    %eax,0x2f02(%rip)
add    $0x1,%rdi
movb   $0x22,(%rsi)
add    $0x1,%rsi
mov    (%rdi),%al
cmp    $0x22,%al
je     1110 <BASM_PP_ParseLine+0x10>
test   %al,%al
je     1255 <BASM_PP_ParseLine+0x155>
cmpl   $0x0,0x2ee2(%rip)
je     1170 <BASM_PP_ParseLine+0x70>
cmp    $0x5c,%al
jne    11f0 <BASM_PP_ParseLine+0xf0>
mov    0x1(%rdi),%cl
cmp    $0x5c,%cl
je     115d <BASM_PP_ParseLine+0x5d>
cmp    $0x22,%cl
jne    11f0 <BASM_PP_ParseLine+0xf0>
movb   $0x5c,(%rsi)
mov    0x1(%rdi),%al
add    $0x2,%rdi
mov    %al,0x1(%rsi)
add    $0x2,%rsi
jmp    112d <BASM_PP_ParseLine+0x2d>
cmp    $0x20,%al
jg     118f <BASM_PP_ParseLine+0x8f>
cmp    $0xa,%al
je     1255 <BASM_PP_ParseLine+0x155>
cmp    $0xd,%al
je     1255 <BASM_PP_ParseLine+0x155>
cmpb   $0x3b,0x1(%rdi)
jne    11f0 <BASM_PP_ParseLine+0xf0>
jmp    1237 <BASM_PP_ParseLine+0x137>
cmp    $0x5c,%al
je     11a9 <BASM_PP_ParseLine+0xa9>
cmp    $0x2f,%al
jne    11f0 <BASM_PP_ParseLine+0xf0>
mov    0x1(%rdi),%cl
cmp    $0x2a,%cl
je     11ff <BASM_PP_ParseLine+0xff>
cmp    $0x2f,%cl
jne    11f0 <BASM_PP_ParseLine+0xf0>
jmp    1270 <BASM_PP_ParseLine+0x170>
mov    0x1(%rdi),%cl
cmp    $0xd,%cl
je     11b6 <BASM_PP_ParseLine+0xb6>
cmp    $0xa,%cl
jne    11f0 <BASM_PP_ParseLine+0xf0>
add    $0x1,%rdi
test   %cl,%cl
je     122b <BASM_PP_ParseLine+0x12b>
cmp    $0x20,%cl
jg     122b <BASM_PP_ParseLine+0x12b>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl 0x1(%rdi),%eax
add    $0x1,%rdi
test   %al,%al
je     122b <BASM_PP_ParseLine+0x12b>
cmp    $0x21,%al
jl     11d0 <BASM_PP_ParseLine+0xd0>
jmp    122b <BASM_PP_ParseLine+0x12b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%rdi
mov    %al,(%rsi)
add    $0x1,%rsi
jmp    112d <BASM_PP_ParseLine+0x2d>
add    $0x2,%rdi
jmp    121a <BASM_PP_ParseLine+0x11a>
cs nopw 0x0(%rax,%rax,1)
nop
cmpb   $0x2f,0x1(%rdi)
je     1227 <BASM_PP_ParseLine+0x127>
add    $0x1,%rdi
movzbl (%rdi),%eax
cmp    $0x2a,%al
je     1210 <BASM_PP_ParseLine+0x110>
test   %al,%al
jne    1216 <BASM_PP_ParseLine+0x116>
jmp    122b <BASM_PP_ParseLine+0x12b>
add    $0x2,%rdi
movb   $0x20,(%rsi)
add    $0x1,%rsi
jmp    112d <BASM_PP_ParseLine+0x2d>
mov    $0x2401,%ecx
jmp    1248 <BASM_PP_ParseLine+0x148>
xchg   %ax,%ax
movzbl 0x1(%rdi),%eax
add    $0x1,%rdi
cmp    $0xd,%al
ja     1240 <BASM_PP_ParseLine+0x140>
movzbl %al,%eax
bt     %rax,%rcx
jae    1240 <BASM_PP_ParseLine+0x140>
movb   $0x0,(%rsi)
xor    %ecx,%ecx
cmpb   $0xd,(%rdi)
sete   %cl
xor    %eax,%eax
cmpb   $0xa,(%rdi,%rcx,1)
sete   %al
add    %rdi,%rax
add    %rcx,%rax
ret
mov    $0x2401,%eax
jmp    1288 <BASM_PP_ParseLine+0x188>
nopw   0x0(%rax,%rax,1)
movzbl 0x1(%rdi),%ecx
add    $0x1,%rdi
cmp    $0xd,%cl
ja     1280 <BASM_PP_ParseLine+0x180>
movzbl %cl,%ecx
bt     %rcx,%rax
jae    1280 <BASM_PP_ParseLine+0x180>
jmp    1255 <BASM_PP_ParseLine+0x155>

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

LLVM IR (-O2):
@BASM_PP_ParseLine.is = internal unnamed_addr global i32 0
define i8* @BASM_PP_ParseLine(i8* %0, i8* nocapture writeonly %1) {
br label %3
3: ; preds = %13, %2
%4 = phi i8* [ %0, %2 ], [ %14, %13 ]
%5 = phi i8* [ %1, %2 ], [ %15, %13 ]
%6 = load i8, i8* %4
switch i8 %6, label %16 [
i8 0, label %101
i8 34, label %7
]
7: ; preds = %3
%8 = load i32, i32* @BASM_PP_ParseLine.is
%9 = icmp eq i32 %8, 0
%10 = zext i1 %9 to i32
store i32 %10, i32* @BASM_PP_ParseLine.is
%11 = getelementptr inbounds i8, i8* %4, i64 1
%12 = getelementptr inbounds i8, i8* %5, i64 1
store i8 34, i8* %5
br label %13
13: ; preds = %7, %24, %29, %34, %50, %75, %95, %98
%14 = phi i8* [ %11, %7 ], [ %26, %24 ], [ %31, %29 ], [ %35, %34 ], [ %41, %50 ], [ %76, %75 ], [ %96, %95 ], [ %99, %98 ]
%15 = phi i8* [ %12, %7 ], [ %28, %24 ], [ %33, %29 ], [ %36, %34 ], [ %51, %50 ], [ %77, %75 ], [ %97, %95 ], [ %100, %98 ]
br label %3
16: ; preds = %3
%17 = load i32, i32* @BASM_PP_ParseLine.is
%18 = icmp eq i32 %17, 0
br i1 %18, label %37, label %19
19: ; preds = %16
%20 = icmp eq i8 %6, 92
br i1 %20, label %21, label %34
21: ; preds = %19
%22 = getelementptr inbounds i8, i8* %4, i64 1
%23 = load i8, i8* %22
switch i8 %23, label %34 [
i8 34, label %24
i8 92, label %29
]
24: ; preds = %21
%25 = getelementptr inbounds i8, i8* %5, i64 1
store i8 92, i8* %5
%26 = getelementptr inbounds i8, i8* %4, i64 2
%27 = load i8, i8* %22
%28 = getelementptr inbounds i8, i8* %5, i64 2
store i8 %27, i8* %25
br label %13
29: ; preds = %21
%30 = getelementptr inbounds i8, i8* %5, i64 1
store i8 92, i8* %5
%31 = getelementptr inbounds i8, i8* %4, i64 2
%32 = load i8, i8* %22
%33 = getelementptr inbounds i8, i8* %5, i64 2
store i8 %32, i8* %30
br label %13
34: ; preds = %21, %19
%35 = getelementptr inbounds i8, i8* %4, i64 1
%36 = getelementptr inbounds i8, i8* %5, i64 1
store i8 %6, i8* %5
br label %13
37: ; preds = %16
%38 = icmp slt i8 %6, 33
br i1 %38, label %39, label %52
39: ; preds = %37
switch i8 %6, label %40 [
i8 10, label %101
i8 13, label %101
]
40: ; preds = %39
%41 = getelementptr inbounds i8, i8* %4, i64 1
%42 = load i8, i8* %41
%43 = icmp eq i8 %42, 59
br i1 %43, label %44, label %50
44: ; preds = %40, %47
%45 = phi i8 [ %49, %47 ], [ %6, %40 ]
%46 = phi i8* [ %48, %47 ], [ %4, %40 ]
switch i8 %45, label %47 [
i8 0, label %101
i8 10, label %101
i8 13, label %101
]
47: ; preds = %44
%48 = getelementptr inbounds i8, i8* %46, i64 1
%49 = load i8, i8* %48
br label %44
50: ; preds = %40
%51 = getelementptr inbounds i8, i8* %5, i64 1
store i8 %6, i8* %5
br label %13
52: ; preds = %37
switch i8 %6, label %98 [
i8 47, label %53
i8 92, label %78
]
53: ; preds = %52
%54 = getelementptr inbounds i8, i8* %4, i64 1
%55 = load i8, i8* %54
switch i8 %55, label %98 [
i8 47, label %56
i8 42, label %62
]
56: ; preds = %53, %59
%57 = phi i8 [ %61, %59 ], [ %55, %53 ]
%58 = phi i8* [ %60, %59 ], [ %4, %53 ]
switch i8 %57, label %59 [
i8 0, label %101
i8 10, label %101
i8 13, label %101
]
59: ; preds = %56
%60 = getelementptr inbounds i8, i8* %58, i64 1
%61 = load i8, i8* %60
br label %56
62: ; preds = %53
%63 = getelementptr inbounds i8, i8* %4, i64 2
br label %64
64: ; preds = %73, %62
%65 = phi i8* [ %63, %62 ], [ %74, %73 ]
%66 = load i8, i8* %65
switch i8 %66, label %73 [
i8 0, label %75
i8 42, label %67
]
67: ; preds = %64
%68 = getelementptr inbounds i8, i8* %65, i64 1
%69 = load i8, i8* %68
%70 = icmp eq i8 %69, 47
br i1 %70, label %71, label %73
71: ; preds = %67
%72 = getelementptr inbounds i8, i8* %65, i64 2
br label %75
73: ; preds = %64, %67
%74 = getelementptr inbounds i8, i8* %65, i64 1
br label %64
75: ; preds = %64, %71
%76 = phi i8* [ %72, %71 ], [ %65, %64 ]
%77 = getelementptr inbounds i8, i8* %5, i64 1
store i8 32, i8* %5
br label %13
78: ; preds = %52
%79 = getelementptr inbounds i8, i8* %4, i64 1
%80 = load i8, i8* %79
switch i8 %80, label %98 [
i8 13, label %81
i8 10, label %81
]
81: ; preds = %78, %78
%82 = getelementptr inbounds i8, i8* %4, i64 1
%83 = icmp ne i8 %80, 0
%84 = icmp slt i8 %80, 33
%85 = and i1 %83, %84
br i1 %85, label %86, label %95
86: ; preds = %81, %86
%87 = phi i8* [ %91, %86 ], [ %82, %81 ]
%88 = phi i8* [ %87, %86 ], [ %4, %81 ]
%89 = getelementptr inbounds i8, i8* %88, i64 2
%90 = load i8, i8* %89
%91 = getelementptr inbounds i8, i8* %87, i64 1
%92 = icmp ne i8 %90, 0
%93 = icmp slt i8 %90, 33
%94 = and i1 %92, %93
br i1 %94, label %86, label %95
95: ; preds = %86, %81
%96 = phi i8* [ %82, %81 ], [ %91, %86 ]
%97 = getelementptr inbounds i8, i8* %5, i64 1
store i8 32, i8* %5
br label %13
98: ; preds = %52, %53, %78
%99 = getelementptr inbounds i8, i8* %4, i64 1
%100 = getelementptr inbounds i8, i8* %5, i64 1
store i8 %6, i8* %5
br label %13
101: ; preds = %39, %39, %3, %56, %56, %56, %44, %44, %44
%102 = phi i8* [ %46, %44 ], [ %46, %44 ], [ %46, %44 ], [ %58, %56 ], [ %58, %56 ], [ %58, %56 ], [ %4, %3 ], [ %4, %39 ], [ %4, %39 ]
store i8 0, i8* %5
%103 = load i8, i8* %102
%104 = icmp eq i8 %103, 13
%105 = zext i1 %104 to i64
%106 = getelementptr i8, i8* %102, i64 %105
%107 = load i8, i8* %106
%108 = icmp eq i8 %107, 10
%109 = zext i1 %108 to i64
%110 = getelementptr i8, i8* %106, i64 %109
ret i8* %110
}