char *breakval(char buffer[], unsigned long buflen, const char *string,
               unsigned long pos1, unsigned long pos2) {
  unsigned long i, is;
  unsigned long pos, poss;
  unsigned long breakpos = pos1;
  char *pb = buffer, *pbs;
  const char *ps = string, *pss;
  char c;
  buffer[0] = '\0';
  if (!string)
    return (buffer);
  if (pos1 <= 1)
    pos1 = 0U;
  if (pos2 <= 1)
    pos2 = 0U;
  i = 0U;
  pbs = pb;
  pss = ps;
  while ((i < buflen - 1) && (*ps)) {
    pos = 0U;
    poss = pos;
    is = i;
    while ((i < buflen - 1) && (*ps) && (pos < breakpos - 1)) {
      if ((*ps) == '\r')
        ps++;
      else if ((*ps) == '\n')
        ps++;
      else if ((*ps) == '\\') {
        c = *ps;
        ps++;
        if ((*ps) == ('\r')) {
          ps++;
          c = (char)0;
        }
        if ((*ps) == ('\n')) {
          ps++;
          c = (char)0;
        }
        if ((c) && (i < buflen - 2)) {
          *pb = c;
          pb++;
          *pb = *ps;
          pb++;
          ps++;
          i += 2;
          pos += 2;
        }
      } else if (((*ps) == ' ') && (i < buflen - 4)) {
        if (i < buflen - 1) {
          *pb = *ps;
          pb++;
          ps++;
          i++;
          pos++;
        }
        pbs = pb;
        pss = ps;
        poss = pos;
        is = i;
      } else {
        *pb = *ps;
        pb++;
        ps++;
        i++;
        pos++;
      }
    }
    if ((poss != 0U) && (*ps)) {
      pb = pbs;
      ps = pss;
      pos = poss;
      i = is;
    }
    if (*ps) {
      if (ps[1]) {
        if (i < buflen - 3) {
          *pb = '\\';
          pb++;
          *pb = '\r';
          pb++;
          *pb = '\n';
          pb++;
          i += 3;
          pos = 0U;
          pbs = pb;
          pss = ps;
          poss = pos;
          is = i;
          breakpos = pos2;
        }
      } else {
        if (*ps != '\\') {
          *pb = *ps;
          pb++;
          ps++;
          i++;
          pos++;
        }
      }
    }
  }
  while ((i < buflen - 1) && (*ps)) {
    if ((*ps) == '\r')
      ps++;
    else if ((*ps) == '\n')
      ps++;
    else if ((*ps) == '\\') {
      c = *ps;
      ps++;
      if ((*ps) == ('\r')) {
        ps++;
        c = (char)0;
      }
      if ((*ps) == ('\n')) {
        ps++;
        c = (char)0;
      }
      if ((c) && (i < buflen - 2)) {
        *pb = c;
        pb++;
        *pb = *ps;
        pb++;
        ps++;
        i += 2;
        pos += 2;
      }
    } else {
      *pb = *ps;
      pb++;
      ps++;
      i++;
      pos++;
    }
  }
  *pb = '\0';
  pb++;
  return (buffer);
}


x86 assembly (clang, -O0):
<breakval>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movb   $0x0,(%rax)
cmpq   $0x0,-0x20(%rbp)
jne    114f <breakval+0x4f>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1741 <breakval+0x641>
cmpq   $0x1,-0x28(%rbp)
ja     1162 <breakval+0x62>
movq   $0x0,-0x28(%rbp)
cmpq   $0x1,-0x30(%rbp)
ja     1175 <breakval+0x75>
movq   $0x0,-0x30(%rbp)
movq   $0x0,-0x38(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x38(%rbp),%rcx
mov    -0x18(%rbp),%rdx
sub    $0x1,%rdx
xor    %eax,%eax
cmp    %rdx,%rcx
mov    %al,-0x7a(%rbp)
jae    11b7 <breakval+0xb7>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x7a(%rbp)
mov    -0x7a(%rbp),%al
test   $0x1,%al
jne    11c7 <breakval+0xc7>
jmp    157d <breakval+0x47d>
movq   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rcx
mov    -0x18(%rbp),%rdx
sub    $0x1,%rdx
xor    %eax,%eax
cmp    %rdx,%rcx
mov    %al,-0x7b(%rbp)
jae    1223 <breakval+0x123>
mov    -0x70(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x7b(%rbp)
je     1223 <breakval+0x123>
mov    -0x48(%rbp),%rax
mov    -0x58(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
setb   %al
mov    %al,-0x7b(%rbp)
mov    -0x7b(%rbp),%al
test   $0x1,%al
jne    1233 <breakval+0x133>
jmp    143d <breakval+0x33d>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
jne    1254 <breakval+0x154>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    1438 <breakval+0x338>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    1275 <breakval+0x175>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    1433 <breakval+0x333>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    1352 <breakval+0x252>
mov    -0x70(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x79(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
jne    12ba <breakval+0x1ba>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
movb   $0x0,-0x79(%rbp)
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    12da <breakval+0x1da>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
movb   $0x0,-0x79(%rbp)
movsbl -0x79(%rbp),%eax
cmp    $0x0,%eax
je     134d <breakval+0x24d>
mov    -0x38(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
cmp    %rcx,%rax
jae    134d <breakval+0x24d>
mov    -0x79(%rbp),%cl
mov    -0x60(%rbp),%rax
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
mov    (%rax),%cl
mov    -0x60(%rbp),%rax
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x38(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x48(%rbp)
jmp    142e <breakval+0x32e>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    13ed <breakval+0x2ed>
mov    -0x38(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x4,%rcx
cmp    %rcx,%rax
jae    13ed <breakval+0x2ed>
mov    -0x38(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jae    13c8 <breakval+0x2c8>
mov    -0x70(%rbp),%rax
mov    (%rax),%cl
mov    -0x60(%rbp),%rax
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x40(%rbp)
jmp    1429 <breakval+0x329>
mov    -0x70(%rbp),%rax
mov    (%rax),%cl
mov    -0x60(%rbp),%rax
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
jmp    142e <breakval+0x32e>
jmp    1433 <breakval+0x333>
jmp    1438 <breakval+0x338>
jmp    11df <breakval+0xdf>
cmpq   $0x0,-0x50(%rbp)
je     1478 <breakval+0x378>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1478 <breakval+0x378>
mov    -0x68(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x78(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x70(%rbp),%rax
cmpb   $0x0,(%rax)
je     1578 <breakval+0x478>
mov    -0x70(%rbp),%rax
cmpb   $0x0,0x1(%rax)
je     1522 <breakval+0x422>
mov    -0x38(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x3,%rcx
cmp    %rcx,%rax
jae    151d <breakval+0x41d>
mov    -0x60(%rbp),%rax
movb   $0x5c,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
movb   $0xd,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
movb   $0xa,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x38(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x38(%rbp)
movq   $0x0,-0x48(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x58(%rbp)
jmp    1573 <breakval+0x473>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
je     156e <breakval+0x46e>
mov    -0x70(%rbp),%rax
mov    (%rax),%cl
mov    -0x60(%rbp),%rax
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
jmp    1573 <breakval+0x473>
jmp    1578 <breakval+0x478>
jmp    118d <breakval+0x8d>
jmp    1582 <breakval+0x482>
mov    -0x38(%rbp),%rcx
mov    -0x18(%rbp),%rdx
sub    $0x1,%rdx
xor    %eax,%eax
cmp    %rdx,%rcx
mov    %al,-0x7c(%rbp)
jae    15ac <breakval+0x4ac>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x7c(%rbp)
mov    -0x7c(%rbp),%al
test   $0x1,%al
jne    15bc <breakval+0x4bc>
jmp    1726 <breakval+0x626>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
jne    15dd <breakval+0x4dd>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    1721 <breakval+0x621>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    15fe <breakval+0x4fe>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    171c <breakval+0x61c>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    16db <breakval+0x5db>
mov    -0x70(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x79(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
jne    1643 <breakval+0x543>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
movb   $0x0,-0x79(%rbp)
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    1663 <breakval+0x563>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
movb   $0x0,-0x79(%rbp)
movsbl -0x79(%rbp),%eax
cmp    $0x0,%eax
je     16d6 <breakval+0x5d6>
mov    -0x38(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
cmp    %rcx,%rax
jae    16d6 <breakval+0x5d6>
mov    -0x79(%rbp),%cl
mov    -0x60(%rbp),%rax
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
mov    (%rax),%cl
mov    -0x60(%rbp),%rax
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x38(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x48(%rbp)
jmp    1717 <breakval+0x617>
mov    -0x70(%rbp),%rax
mov    (%rax),%cl
mov    -0x60(%rbp),%rax
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
jmp    171c <breakval+0x61c>
jmp    1721 <breakval+0x621>
jmp    1582 <breakval+0x482>
mov    -0x60(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x60(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x60(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<breakval>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rcx,-0x30(%rsp)
mov    %rdi,%rax
movb   $0x0,(%rdi)
test   %rdx,%rdx
je     1448 <breakval+0x348>
mov    %rdx,%r10
xor    %ecx,%ecx
cmp    $0x2,%r8
cmovb  %rcx,%r8
mov    %rsi,%r13
add    $0xffffffffffffffff,%r13
mov    %rax,-0x20(%rsp)
mov    %rsi,-0x28(%rsp)
je     135f <breakval+0x25f>
mov    %r8,-0x18(%rsp)
lea    -0x4(%rsi),%r11
lea    -0x2(%rsi),%rcx
mov    %rcx,-0x8(%rsp)
lea    -0x3(%rsi),%rcx
mov    %rcx,-0x10(%rsp)
mov    %r10,%rbx
mov    %rax,%r14
mov    %rax,%rdi
xor    %ebp,%ebp
jmp    1192 <breakval+0x92>
mov    %rbp,%r9
mov    %rdi,%r12
mov    %rbx,%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %rdx,%rbx
mov    %r12,%rdi
mov    %r9,%rbp
cmp    %r13,%r9
jae    1368 <breakval+0x268>
mov    (%rbx),%r15b
test   %r15b,%r15b
je     1372 <breakval+0x272>
cmp    %r13,%rbp
jae    12d0 <breakval+0x1d0>
mov    -0x30(%rsp),%r8
mov    %rbp,%r9
add    $0xffffffffffffffff,%r8
je     12db <breakval+0x1db>
xor    %edx,%edx
xor    %r12d,%r12d
xchg   %ax,%ax
cmp    $0x1f,%r15b
jg     11e0 <breakval+0xe0>
cmp    $0xa,%r15b
je     11d6 <breakval+0xd6>
cmp    $0xd,%r15b
jne    1280 <breakval+0x180>
add    $0x1,%rbx
jmp    1293 <breakval+0x193>
nop
cmp    $0x20,%r15b
je     1250 <breakval+0x150>
cmp    $0x5c,%r15b
jne    1280 <breakval+0x180>
lea    0x1(%rbx),%rax
lea    0x2(%rbx),%rsi
xor    %ecx,%ecx
cmpb   $0xd,0x1(%rbx)
cmove  %rsi,%rax
sete   %cl
xor    %esi,%esi
cmpb   $0xa,0x1(%rcx,%rbx,1)
sete   %sil
lea    (%rsi,%rax,1),%rbx
or     %cl,%sil
cmp    $0x1,%sil
je     1293 <breakval+0x193>
cmp    -0x8(%rsp),%rbp
jae    1293 <breakval+0x193>
test   %sil,%sil
mov    $0x5c,%eax
mov    $0x0,%ecx
cmovne %ecx,%eax
mov    %al,(%rdi)
movzbl (%rbx),%eax
mov    %al,0x1(%rdi)
add    $0x2,%rdi
add    $0x1,%rbx
add    $0x2,%rbp
add    $0x2,%rdx
jmp    1293 <breakval+0x193>
xchg   %ax,%ax
cmp    %r11,%rbp
jae    1280 <breakval+0x180>
movb   $0x20,(%rdi)
add    $0x1,%rdi
add    $0x1,%rbx
add    $0x1,%rbp
add    $0x1,%rdx
mov    %rbp,%r9
mov    %rdx,%r12
mov    %rdi,%r14
mov    %rbx,%r10
jmp    1293 <breakval+0x193>
cs nopw 0x0(%rax,%rax,1)
mov    %r15b,(%rdi)
add    $0x1,%rdi
add    $0x1,%rbx
add    $0x1,%rbp
add    $0x1,%rdx
cmp    %r13,%rbp
jae    12b0 <breakval+0x1b0>
movzbl (%rbx),%r15d
test   %r15b,%r15b
je     12b0 <breakval+0x1b0>
cmp    %r8,%rdx
jb     11c0 <breakval+0xc0>
nopw   0x0(%rax,%rax,1)
test   %r12,%r12
je     12e3 <breakval+0x1e3>
cmpb   $0x0,(%rbx)
mov    %r14,%r12
mov    %r10,%rdx
jne    12ec <breakval+0x1ec>
jmp    116a <breakval+0x6a>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rbx,%rdx
mov    %rdi,%r12
mov    %rbp,%r9
jmp    12f8 <breakval+0x1f8>
xor    %r12d,%r12d
test   %r12,%r12
jne    12b5 <breakval+0x1b5>
mov    %rbp,%r9
mov    %rdi,%r12
mov    %rbx,%rdx
mov    (%rdx),%r15b
test   %r15b,%r15b
je     1180 <breakval+0x80>
cmpb   $0x0,0x1(%rdx)
je     1340 <breakval+0x240>
cmp    -0x10(%rsp),%r9
jae    1180 <breakval+0x80>
movw   $0xd5c,(%r12)
movb   $0xa,0x2(%r12)
add    $0x3,%r12
add    $0x3,%r9
mov    -0x18(%rsp),%rax
mov    %rax,-0x30(%rsp)
mov    %r12,%r14
mov    %rdx,%r10
jmp    1180 <breakval+0x80>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    $0x5c,%r15b
je     1180 <breakval+0x80>
add    $0x1,%rdx
mov    %r15b,(%r12)
add    $0x1,%r12
add    $0x1,%r9
jmp    1180 <breakval+0x80>
xor    %r9d,%r9d
mov    %rax,%r12
mov    %r10,%rdx
cmp    %r13,%r9
jb     1384 <breakval+0x284>
jmp    143e <breakval+0x33e>
mov    %rbp,%r9
mov    %rdi,%r12
mov    %rbx,%rdx
cmp    %r13,%r9
jae    143e <breakval+0x33e>
mov    -0x28(%rsp),%rbp
add    $0xfffffffffffffffe,%rbp
xor    %eax,%eax
jmp    13b6 <breakval+0x2b6>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmp    $0xa,%cl
jne    1425 <breakval+0x325>
add    $0x1,%rdx
cmp    %r13,%r9
jae    143e <breakval+0x33e>
movzbl (%rdx),%ecx
cmp    $0xc,%cl
jle    13a0 <breakval+0x2a0>
cmp    $0x5c,%cl
je     13d0 <breakval+0x2d0>
cmp    $0xd,%cl
je     13a9 <breakval+0x2a9>
jmp    1429 <breakval+0x329>
nopw   0x0(%rax,%rax,1)
lea    0x1(%rdx),%rsi
lea    0x2(%rdx),%rcx
xor    %edi,%edi
cmpb   $0xd,0x1(%rdx)
cmove  %rcx,%rsi
sete   %dil
xor    %ecx,%ecx
cmpb   $0xa,0x1(%rdi,%rdx,1)
sete   %cl
lea    (%rcx,%rsi,1),%rdx
or     %dil,%cl
cmp    $0x1,%cl
je     13ad <breakval+0x2ad>
cmp    %rbp,%r9
jae    13ad <breakval+0x2ad>
test   %cl,%cl
mov    $0x5c,%ecx
cmovne %eax,%ecx
mov    %cl,(%r12)
movzbl (%rdx),%ecx
mov    %cl,0x1(%r12)
add    $0x2,%r12
add    $0x1,%rdx
add    $0x2,%r9
jmp    13ad <breakval+0x2ad>
test   %cl,%cl
je     143e <breakval+0x33e>
mov    %cl,(%r12)
add    $0x1,%r12
add    $0x1,%rdx
add    $0x1,%r9
jmp    13ad <breakval+0x2ad>
movb   $0x0,(%r12)
mov    -0x20(%rsp),%rax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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