int mstrcmp(const char *str1, const char *str2, int f) {
  int i, j, f1, f2, n1, n2;
  if (f == 0)
    return strcmp(str1, str2);
  if (f == 1) {
    i = 0;
    while (str1[i] != 0 && str2[i] != 0 &&
           (str1[i] == str2[i] ||
            (((str1[i]) >= ('A') && (str1[i]) <= ('Z')) &&
             ((str2[i]) >= ('a') && (str2[i]) <= ('z')) &&
             (str1[i] - 'A' == str2[i] - 'a')) ||
            (((str1[i]) >= ('a') && (str1[i]) <= ('z')) &&
             ((str2[i]) >= ('A') && (str2[i]) <= ('Z')) &&
             (str1[i] - 'a' == str2[i] - 'A'))))
      ++i;
    return str1[i] - ((int)str2[i]);
  }
  if (f == -1) {
    i = 0;
    j = 0;
    f = 0;
    while (str1[i] != 0 &&
           ((str1[i]) == ' ' || (str1[i]) == '\r' || (str1[i]) == '\t' ||
            (str1[i]) == '\n' || (str1[i]) == '\f' || (str1[i]) == '\v'))
      ++i;
    while (str2[j] != 0 &&
           ((str2[j]) == ' ' || (str2[j]) == '\r' || (str2[j]) == '\t' ||
            (str2[j]) == '\n' || (str2[j]) == '\f' || (str2[j]) == '\v'))
      ++j;
    i += n1 = str1[i] == '-';
    j += n2 = str2[j] == '-';
    while (str1[i] == '0' ||
           ((str1[i]) == ' ' || (str1[i]) == '\r' || (str1[i]) == '\t' ||
            (str1[i]) == '\n' || (str1[i]) == '\f' || (str1[i]) == '\v'))
      ++i;
    while (str2[j] == '0' ||
           ((str2[j]) == ' ' || (str2[j]) == '\r' || (str2[j]) == '\t' ||
            (str2[j]) == '\n' || (str2[j]) == '\f' || (str2[j]) == '\v'))
      ++j;
    f1 = ((str1[i]) >= ('0') && (str1[i]) <= ('9'));
    f2 = ((str2[j]) >= ('0') && (str2[j]) <= ('9'));
    if (!(f1 && f2))
      return (n1 ? -f1 : f1) - (n2 ? -f2 : f2);
    if (n1 ^ n2)
      return n2 - n1;
    f1 = 0;
    f2 = 0;
    while (str1[i] != 0 && str2[j] != 0) {
      if (((str1[i]) == ' ' || (str1[i]) == '\r' || (str1[i]) == '\t' ||
           (str1[i]) == '\n' || (str1[i]) == '\f' || (str1[i]) == '\v')) {
        ++i;
        continue;
      }
      if (((str2[j]) == ' ' || (str2[j]) == '\r' || (str2[j]) == '\t' ||
           (str2[j]) == '\n' || (str2[j]) == '\f' || (str2[j]) == '\v')) {
        ++j;
        continue;
      }
      if (((str1[i]) >= ('0') && (str1[i]) <= ('9')) &&
          ((str2[j]) >= ('0') && (str2[j]) <= ('9')))
        (f) ? 0 : (f = (str1[i] - str2[j])), ++f1, ++f2, ++i, ++j;
      else
        return f1 += ((str1[i]) >= ('0') && (str1[i]) <= ('9')),
               f2 += ((str2[j]) >= ('0') && (str2[j]) <= ('9')),
               (((n2 = f1 - f2)) ? 0 : (n2 = f)), (n1 ? -n2 : n2);
    }
    return f1 += ((str1[i]) >= ('0') && (str1[i]) <= ('9')),
           f2 += ((str2[j]) >= ('0') && (str2[j]) <= ('9')),
           (((n2 = f1 - f2)) ? 0 : (n2 = f)), (n1 ? -n2 : n2);
  }
  return 0;
}


x86 assembly (clang, -O0):
<mstrcmp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jne    1142 <mstrcmp+0x32>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   1030 <strcmp@plt>
mov    %eax,-0x4(%rbp)
jmp    1b4f <mstrcmp+0xa3f>
cmpl   $0x1,-0x1c(%rbp)
jne    1305 <mstrcmp+0x1f5>
movl   $0x0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x35(%rbp)
je     12c5 <mstrcmp+0x1b5>
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x35(%rbp)
je     12c5 <mstrcmp+0x1b5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rdx
movsbl (%rax,%rdx,1),%edx
mov    $0x1,%al
cmp    %edx,%ecx
mov    %al,-0x36(%rbp)
je     12bf <mstrcmp+0x1af>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     122b <mstrcmp+0x11b>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jg     122b <mstrcmp+0x11b>
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     122b <mstrcmp+0x11b>
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     122b <mstrcmp+0x11b>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
sub    $0x41,%ecx
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rdx
movsbl (%rax,%rdx,1),%edx
sub    $0x61,%edx
mov    $0x1,%al
cmp    %edx,%ecx
mov    %al,-0x36(%rbp)
je     12bf <mstrcmp+0x1af>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x61,%ecx
mov    %al,-0x37(%rbp)
jl     12b9 <mstrcmp+0x1a9>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x7a,%ecx
mov    %al,-0x37(%rbp)
jg     12b9 <mstrcmp+0x1a9>
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x41,%ecx
mov    %al,-0x37(%rbp)
jl     12b9 <mstrcmp+0x1a9>
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x5a,%ecx
mov    %al,-0x37(%rbp)
jg     12b9 <mstrcmp+0x1a9>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x61,%eax
mov    -0x18(%rbp),%rcx
movslq -0x20(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
sub    $0x41,%ecx
cmp    %ecx,%eax
sete   %al
mov    %al,-0x37(%rbp)
mov    -0x37(%rbp),%al
mov    %al,-0x36(%rbp)
mov    -0x36(%rbp),%al
mov    %al,-0x35(%rbp)
mov    -0x35(%rbp),%al
test   $0x1,%al
jne    12d5 <mstrcmp+0x1c5>
jmp    12e3 <mstrcmp+0x1d3>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1153 <mstrcmp+0x43>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    -0x18(%rbp),%rcx
movslq -0x20(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
sub    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    1b4f <mstrcmp+0xa3f>
cmpl   $0xffffffff,-0x1c(%rbp)
jne    1b48 <mstrcmp+0xa38>
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x38(%rbp)
je     13db <mstrcmp+0x2cb>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x39(%rbp)
je     13d5 <mstrcmp+0x2c5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xd,%ecx
mov    %al,-0x39(%rbp)
je     13d5 <mstrcmp+0x2c5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x39(%rbp)
je     13d5 <mstrcmp+0x2c5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xa,%ecx
mov    %al,-0x39(%rbp)
je     13d5 <mstrcmp+0x2c5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xc,%ecx
mov    %al,-0x39(%rbp)
je     13d5 <mstrcmp+0x2c5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xb,%eax
sete   %al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
mov    %al,-0x38(%rbp)
mov    -0x38(%rbp),%al
test   $0x1,%al
jne    13eb <mstrcmp+0x2db>
jmp    13f9 <mstrcmp+0x2e9>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1324 <mstrcmp+0x214>
jmp    13fe <mstrcmp+0x2ee>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x3a(%rbp)
je     14b5 <mstrcmp+0x3a5>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x3b(%rbp)
je     14af <mstrcmp+0x39f>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xd,%ecx
mov    %al,-0x3b(%rbp)
je     14af <mstrcmp+0x39f>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x3b(%rbp)
je     14af <mstrcmp+0x39f>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xa,%ecx
mov    %al,-0x3b(%rbp)
je     14af <mstrcmp+0x39f>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xc,%ecx
mov    %al,-0x3b(%rbp)
je     14af <mstrcmp+0x39f>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xb,%eax
sete   %al
mov    %al,-0x3b(%rbp)
mov    -0x3b(%rbp),%al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
test   $0x1,%al
jne    14c5 <mstrcmp+0x3b5>
jmp    14d3 <mstrcmp+0x3c3>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    13fe <mstrcmp+0x2ee>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x30(%rbp)
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x30,%ecx
mov    %al,-0x3c(%rbp)
je     15ca <mstrcmp+0x4ba>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x3d(%rbp)
je     15c4 <mstrcmp+0x4b4>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xd,%ecx
mov    %al,-0x3d(%rbp)
je     15c4 <mstrcmp+0x4b4>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x3d(%rbp)
je     15c4 <mstrcmp+0x4b4>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xa,%ecx
mov    %al,-0x3d(%rbp)
je     15c4 <mstrcmp+0x4b4>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xc,%ecx
mov    %al,-0x3d(%rbp)
je     15c4 <mstrcmp+0x4b4>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xb,%eax
sete   %al
mov    %al,-0x3d(%rbp)
mov    -0x3d(%rbp),%al
mov    %al,-0x3c(%rbp)
mov    -0x3c(%rbp),%al
test   $0x1,%al
jne    15da <mstrcmp+0x4ca>
jmp    15e8 <mstrcmp+0x4d8>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1513 <mstrcmp+0x403>
jmp    15ed <mstrcmp+0x4dd>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x30,%ecx
mov    %al,-0x3e(%rbp)
je     16a4 <mstrcmp+0x594>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x3f(%rbp)
je     169e <mstrcmp+0x58e>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xd,%ecx
mov    %al,-0x3f(%rbp)
je     169e <mstrcmp+0x58e>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x3f(%rbp)
je     169e <mstrcmp+0x58e>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xa,%ecx
mov    %al,-0x3f(%rbp)
je     169e <mstrcmp+0x58e>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0xc,%ecx
mov    %al,-0x3f(%rbp)
je     169e <mstrcmp+0x58e>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xb,%eax
sete   %al
mov    %al,-0x3f(%rbp)
mov    -0x3f(%rbp),%al
mov    %al,-0x3e(%rbp)
mov    -0x3e(%rbp),%al
test   $0x1,%al
jne    16b4 <mstrcmp+0x5a4>
jmp    16c2 <mstrcmp+0x5b2>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    15ed <mstrcmp+0x4dd>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x40(%rbp)
jl     16f1 <mstrcmp+0x5e1>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x40(%rbp)
mov    -0x40(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x41(%rbp)
jl     172b <mstrcmp+0x61b>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x41(%rbp)
mov    -0x41(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x28(%rbp)
je     174a <mstrcmp+0x63a>
cmpl   $0x0,-0x2c(%rbp)
jne    179a <mstrcmp+0x68a>
cmpl   $0x0,-0x30(%rbp)
je     1761 <mstrcmp+0x651>
xor    %eax,%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x48(%rbp)
jmp    1767 <mstrcmp+0x657>
mov    -0x28(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x4c(%rbp)
cmpl   $0x0,-0x34(%rbp)
je     1784 <mstrcmp+0x674>
xor    %eax,%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x50(%rbp)
jmp    178a <mstrcmp+0x67a>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x4c(%rbp),%eax
mov    -0x50(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    1b4f <mstrcmp+0xa3f>
mov    -0x30(%rbp),%eax
xor    -0x34(%rbp),%eax
cmp    $0x0,%eax
je     17b7 <mstrcmp+0x6a7>
mov    -0x34(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b4f <mstrcmp+0xa3f>
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x51(%rbp)
je     17f4 <mstrcmp+0x6e4>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x51(%rbp)
mov    -0x51(%rbp),%al
test   $0x1,%al
jne    1804 <mstrcmp+0x6f4>
jmp    1a89 <mstrcmp+0x979>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     1882 <mstrcmp+0x772>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xd,%eax
je     1882 <mstrcmp+0x772>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
je     1882 <mstrcmp+0x772>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1882 <mstrcmp+0x772>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xc,%eax
je     1882 <mstrcmp+0x772>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xb,%eax
jne    1890 <mstrcmp+0x780>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    17c5 <mstrcmp+0x6b5>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     190e <mstrcmp+0x7fe>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xd,%eax
je     190e <mstrcmp+0x7fe>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
je     190e <mstrcmp+0x7fe>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     190e <mstrcmp+0x7fe>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xc,%eax
je     190e <mstrcmp+0x7fe>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xb,%eax
jne    191c <mstrcmp+0x80c>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    17c5 <mstrcmp+0x6b5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     19c5 <mstrcmp+0x8b5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     19c5 <mstrcmp+0x8b5>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     19c5 <mstrcmp+0x8b5>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     19c5 <mstrcmp+0x8b5>
cmpl   $0x0,-0x1c(%rbp)
je     197f <mstrcmp+0x86f>
jmp    199c <mstrcmp+0x88c>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    -0x18(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1a84 <mstrcmp+0x974>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x52(%rbp)
jl     19f4 <mstrcmp+0x8e4>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x52(%rbp)
mov    -0x52(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x53(%rbp)
jl     1a31 <mstrcmp+0x921>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x53(%rbp)
mov    -0x53(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x28(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x34(%rbp)
cmp    $0x0,%eax
je     1a56 <mstrcmp+0x946>
jmp    1a5c <mstrcmp+0x94c>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x0,-0x30(%rbp)
je     1a73 <mstrcmp+0x963>
xor    %eax,%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    1a79 <mstrcmp+0x969>
mov    -0x34(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b4f <mstrcmp+0xa3f>
jmp    17c5 <mstrcmp+0x6b5>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x59(%rbp)
jl     1ab8 <mstrcmp+0x9a8>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x59(%rbp)
mov    -0x59(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x5a(%rbp)
jl     1af5 <mstrcmp+0x9e5>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x5a(%rbp)
mov    -0x5a(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x28(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x34(%rbp)
cmp    $0x0,%eax
je     1b1a <mstrcmp+0xa0a>
jmp    1b20 <mstrcmp+0xa10>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x0,-0x30(%rbp)
je     1b37 <mstrcmp+0xa27>
xor    %eax,%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x60(%rbp)
jmp    1b3d <mstrcmp+0xa2d>
mov    -0x34(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b4f <mstrcmp+0xa3f>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mstrcmp>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
cmp    $0x1,%edx
je     121a <mstrcmp+0x10a>
test   %edx,%edx
je     1271 <mstrcmp+0x161>
xor    %eax,%eax
cmp    $0xffffffff,%edx
jne    139c <mstrcmp+0x28c>
xor    %ecx,%ecx
jmp    1144 <mstrcmp+0x34>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rcx
movzbl (%rdi,%rcx,1),%r8d
lea    -0x9(%r8),%eax
cmp    $0x5,%al
jb     1140 <mstrcmp+0x30>
cmp    $0x20,%r8b
je     1140 <mstrcmp+0x30>
xor    %edx,%edx
jmp    1164 <mstrcmp+0x54>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rdx
movzbl (%rsi,%rdx,1),%r9d
lea    -0x9(%r9),%eax
cmp    $0x5,%al
jb     1160 <mstrcmp+0x50>
cmp    $0x20,%r9b
je     1160 <mstrcmp+0x50>
xor    %r10d,%r10d
cmp    $0x2d,%r8b
sete   %r10b
add    %r10d,%ecx
xor    %eax,%eax
cmp    $0x2d,%r9b
sete   %al
jmp    1194 <mstrcmp+0x84>
add    $0x1,%rcx
movzbl (%rdi,%rcx,1),%ebx
lea    -0x9(%rbx),%ebp
cmp    $0x5,%bpl
jb     1190 <mstrcmp+0x80>
cmp    $0x20,%bl
je     1190 <mstrcmp+0x80>
cmp    $0x30,%bl
je     1190 <mstrcmp+0x80>
xor    %r11d,%r11d
cmp    $0x2d,%r9b
sete   %r11b
add    %edx,%r11d
jmp    11c4 <mstrcmp+0xb4>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r11
movzbl (%rsi,%r11,1),%edx
lea    -0x9(%rdx),%ebp
cmp    $0x5,%bpl
jb     11c0 <mstrcmp+0xb0>
cmp    $0x30,%dl
je     11c0 <mstrcmp+0xb0>
cmp    $0x20,%dl
je     11c0 <mstrcmp+0xb0>
add    $0xd0,%bl
xor    %ebp,%ebp
cmp    $0xa,%bl
setb   %r15b
add    $0xd0,%dl
xor    %r14d,%r14d
cmp    $0xa,%dl
setb   %r12b
cmp    $0x9,%bl
ja     1290 <mstrcmp+0x180>
cmp    $0xa,%dl
jae    1290 <mstrcmp+0x180>
mov    %r10d,%edx
xor    %eax,%edx
je     12b5 <mstrcmp+0x1a5>
sub    %r10d,%eax
jmp    139c <mstrcmp+0x28c>
mov    (%rdi),%cl
xor    %eax,%eax
jmp    1229 <mstrcmp+0x119>
movzbl 0x1(%rdi,%rax,1),%ecx
add    $0x1,%rax
test   %cl,%cl
je     127e <mstrcmp+0x16e>
movsbl (%rsi,%rax,1),%edx
test   %edx,%edx
je     1280 <mstrcmp+0x170>
cmp    %dl,%cl
je     1220 <mstrcmp+0x110>
movsbl %cl,%ebx
lea    -0x41(%rcx),%ebp
cmp    $0x19,%bpl
ja     1256 <mstrcmp+0x146>
cmp    $0x61,%dl
jl     1256 <mstrcmp+0x146>
cmp    $0x7a,%dl
jg     1256 <mstrcmp+0x146>
lea    -0x20(%rdx),%ebp
cmp    %ebx,%ebp
je     1220 <mstrcmp+0x110>
lea    -0x61(%rcx),%ebp
cmp    $0x19,%bpl
ja     1280 <mstrcmp+0x170>
lea    -0x41(%rdx),%ebp
cmp    $0x19,%bpl
ja     1280 <mstrcmp+0x170>
add    $0xffffffe0,%ebx
cmp    %edx,%ebx
je     1220 <mstrcmp+0x110>
jmp    1280 <mstrcmp+0x170>
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <strcmp@plt>
xor    %ecx,%ecx
mov    %eax,%edx
movsbl %cl,%eax
movsbl (%rsi,%rdx,1),%ecx
sub    %ecx,%eax
jmp    139c <mstrcmp+0x28c>
mov    %r15b,%bpl
mov    %r12b,%r14b
mov    %ebp,%ecx
neg    %ecx
cmp    $0x2d,%r8b
cmovne %ebp,%ecx
mov    %r14d,%eax
neg    %eax
cmp    $0x2d,%r9b
cmove  %r14d,%eax
add    %ecx,%eax
jmp    139c <mstrcmp+0x28c>
mov    %ecx,%eax
mov    (%rdi,%rax,1),%al
test   %al,%al
je     1372 <mstrcmp+0x262>
xor    %edx,%edx
movabs $0x100003e00,%r10
mov    %r11d,%ebx
mov    %edx,%r9d
movslq %ecx,%r14
mov    %ebx,%r11d
jmp    12ed <mstrcmp+0x1dd>
mov    0x1(%rdi,%r14,1),%al
add    $0x1,%r14
test   %al,%al
je     1375 <mstrcmp+0x265>
movslq %r11d,%rcx
mov    (%rsi,%rcx,1),%bl
jmp    1316 <mstrcmp+0x206>
cs nopw 0x0(%rax,%rax,1)
nop
lea    -0x9(%rbx),%ebp
cmp    $0x5,%bpl
jae    132a <mstrcmp+0x21a>
movzbl 0x1(%rsi,%rcx,1),%ebx
add    $0x1,%rcx
add    $0x1,%r11d
test   %bl,%bl
je     136d <mstrcmp+0x25d>
movzbl %al,%edx
cmp    $0x20,%dl
ja     1300 <mstrcmp+0x1f0>
bt     %rdx,%r10
jae    1300 <mstrcmp+0x1f0>
jmp    12dc <mstrcmp+0x1cc>
cmp    $0x20,%bl
je     1309 <mstrcmp+0x1f9>
add    $0xd0,%al
cmp    $0x9,%al
ja     13a5 <mstrcmp+0x295>
cmp    $0x30,%bl
jl     13a5 <mstrcmp+0x295>
cmp    $0x39,%bl
jg     13a5 <mstrcmp+0x295>
movzbl %bl,%eax
sub    %eax,%edx
test   %r9d,%r9d
cmovne %r9d,%edx
movslq %r14d,%rcx
lea    0x1(%r11),%ebx
mov    0x1(%rdi,%rcx,1),%al
add    $0x1,%rcx
test   %al,%al
jne    12d1 <mstrcmp+0x1c1>
add    $0x1,%r11d
xor    %eax,%eax
mov    %edx,%r9d
jmp    1377 <mstrcmp+0x267>
mov    %ecx,%r11d
jmp    1377 <mstrcmp+0x267>
xor    %r9d,%r9d
xor    %eax,%eax
add    $0xd0,%al
xor    %ecx,%ecx
cmp    $0xa,%al
setb   %cl
movslq %r11d,%rax
mov    (%rsi,%rax,1),%al
add    $0xd0,%al
cmp    $0xa,%al
sbb    $0x0,%ecx
cmove  %r9d,%ecx
mov    %ecx,%eax
neg    %eax
cmp    $0x2d,%r8b
cmovne %ecx,%eax
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %ecx,%ecx
cmp    $0xa,%al
setb   %cl
add    $0xd0,%bl
cmp    $0xa,%bl
jmp    138a <mstrcmp+0x27a>

LLVM IR (-O0):
define i32 @mstrcmp(i8* %0, i8* %1, i32 %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
store i8* %0, i8** %5
store i8* %1, i8** %6
store i32 %2, i32* %7
%14 = load i32, i32* %7
%15 = icmp eq i32 %14, 0
br i1 %15, label %16, label %20
16: ; preds = %3
%17 = load i8*, i8** %5
%18 = load i8*, i8** %6
%19 = call i32 @strcmp(i8* %17, i8* %18)
store i32 %19, i32* %4
br label %824
20: ; preds = %3
%21 = load i32, i32* %7
%22 = icmp eq i32 %21, 1
br i1 %22, label %23, label %173
23: ; preds = %20
store i32 0, i32* %8
br label %24
24: ; preds = %156, %23
%25 = load i8*, i8** %5
%26 = load i32, i32* %8
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i8, i8* %25, i64 %27
%29 = load i8, i8* %28
%30 = sext i8 %29 to i32
%31 = icmp ne i32 %30, 0
br i1 %31, label %32, label %154
32: ; preds = %24
%33 = load i8*, i8** %6
%34 = load i32, i32* %8
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds i8, i8* %33, i64 %35
%37 = load i8, i8* %36
%38 = sext i8 %37 to i32
%39 = icmp ne i32 %38, 0
br i1 %39, label %40, label %154
40: ; preds = %32
%41 = load i8*, i8** %5
%42 = load i32, i32* %8
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i8, i8* %41, i64 %43
%45 = load i8, i8* %44
%46 = sext i8 %45 to i32
%47 = load i8*, i8** %6
%48 = load i32, i32* %8
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds i8, i8* %47, i64 %49
%51 = load i8, i8* %50
%52 = sext i8 %51 to i32
%53 = icmp eq i32 %46, %52
br i1 %53, label %152, label %54
54: ; preds = %40
%55 = load i8*, i8** %5
%56 = load i32, i32* %8
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds i8, i8* %55, i64 %57
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = icmp sge i32 %60, 65
br i1 %61, label %62, label %102
62: ; preds = %54
%63 = load i8*, i8** %5
%64 = load i32, i32* %8
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds i8, i8* %63, i64 %65
%67 = load i8, i8* %66
%68 = sext i8 %67 to i32
%69 = icmp sle i32 %68, 90
br i1 %69, label %70, label %102
70: ; preds = %62
%71 = load i8*, i8** %6
%72 = load i32, i32* %8
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds i8, i8* %71, i64 %73
%75 = load i8, i8* %74
%76 = sext i8 %75 to i32
%77 = icmp sge i32 %76, 97
br i1 %77, label %78, label %102
78: ; preds = %70
%79 = load i8*, i8** %6
%80 = load i32, i32* %8
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds i8, i8* %79, i64 %81
%83 = load i8, i8* %82
%84 = sext i8 %83 to i32
%85 = icmp sle i32 %84, 122
br i1 %85, label %86, label %102
86: ; preds = %78
%87 = load i8*, i8** %5
%88 = load i32, i32* %8
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds i8, i8* %87, i64 %89
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = sub nsw i32 %92, 65
%94 = load i8*, i8** %6
%95 = load i32, i32* %8
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds i8, i8* %94, i64 %96
%98 = load i8, i8* %97
%99 = sext i8 %98 to i32
%100 = sub nsw i32 %99, 97
%101 = icmp eq i32 %93, %100
br i1 %101, label %152, label %102
102: ; preds = %86, %78, %70, %62, %54
%103 = load i8*, i8** %5
%104 = load i32, i32* %8
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds i8, i8* %103, i64 %105
%107 = load i8, i8* %106
%108 = sext i8 %107 to i32
%109 = icmp sge i32 %108, 97
br i1 %109, label %110, label %150
110: ; preds = %102
%111 = load i8*, i8** %5
%112 = load i32, i32* %8
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds i8, i8* %111, i64 %113
%115 = load i8, i8* %114
%116 = sext i8 %115 to i32
%117 = icmp sle i32 %116, 122
br i1 %117, label %118, label %150
118: ; preds = %110
%119 = load i8*, i8** %6
%120 = load i32, i32* %8
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds i8, i8* %119, i64 %121
%123 = load i8, i8* %122
%124 = sext i8 %123 to i32
%125 = icmp sge i32 %124, 65
br i1 %125, label %126, label %150
126: ; preds = %118
%127 = load i8*, i8** %6
%128 = load i32, i32* %8
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds i8, i8* %127, i64 %129
%131 = load i8, i8* %130
%132 = sext i8 %131 to i32
%133 = icmp sle i32 %132, 90
br i1 %133, label %134, label %150
134: ; preds = %126
%135 = load i8*, i8** %5
%136 = load i32, i32* %8
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds i8, i8* %135, i64 %137
%139 = load i8, i8* %138
%140 = sext i8 %139 to i32
%141 = sub nsw i32 %140, 97
%142 = load i8*, i8** %6
%143 = load i32, i32* %8
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds i8, i8* %142, i64 %144
%146 = load i8, i8* %145
%147 = sext i8 %146 to i32
%148 = sub nsw i32 %147, 65
%149 = icmp eq i32 %141, %148
br label %150
150: ; preds = %134, %126, %118, %110, %102
%151 = phi i1 [ false, %126 ], [ false, %118 ], [ false, %110 ], [ false, %102 ], [ %149, %134 ]
br label %152
152: ; preds = %150, %86, %40
%153 = phi i1 [ true, %86 ], [ true, %40 ], [ %151, %150 ]
br label %154
154: ; preds = %152, %32, %24
%155 = phi i1 [ false, %32 ], [ false, %24 ], [ %153, %152 ]
br i1 %155, label %156, label %159
156: ; preds = %154
%157 = load i32, i32* %8
%158 = add nsw i32 %157, 1
store i32 %158, i32* %8
br label %24
159: ; preds = %154
%160 = load i8*, i8** %5
%161 = load i32, i32* %8
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds i8, i8* %160, i64 %162
%164 = load i8, i8* %163
%165 = sext i8 %164 to i32
%166 = load i8*, i8** %6
%167 = load i32, i32* %8
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds i8, i8* %166, i64 %168
%170 = load i8, i8* %169
%171 = sext i8 %170 to i32
%172 = sub nsw i32 %165, %171
store i32 %172, i32* %4
br label %824
173: ; preds = %20
%174 = load i32, i32* %7
%175 = icmp eq i32 %174, -1
br i1 %175, label %176, label %823
176: ; preds = %173
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %7
br label %177
177: ; preds = %237, %176
%178 = load i8*, i8** %5
%179 = load i32, i32* %8
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds i8, i8* %178, i64 %180
%182 = load i8, i8* %181
%183 = sext i8 %182 to i32
%184 = icmp ne i32 %183, 0
br i1 %184, label %185, label %235
185: ; preds = %177
%186 = load i8*, i8** %5
%187 = load i32, i32* %8
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds i8, i8* %186, i64 %188
%190 = load i8, i8* %189
%191 = sext i8 %190 to i32
%192 = icmp eq i32 %191, 32
br i1 %192, label %233, label %193
193: ; preds = %185
%194 = load i8*, i8** %5
%195 = load i32, i32* %8
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds i8, i8* %194, i64 %196
%198 = load i8, i8* %197
%199 = sext i8 %198 to i32
%200 = icmp eq i32 %199, 13
br i1 %200, label %233, label %201
201: ; preds = %193
%202 = load i8*, i8** %5
%203 = load i32, i32* %8
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds i8, i8* %202, i64 %204
%206 = load i8, i8* %205
%207 = sext i8 %206 to i32
%208 = icmp eq i32 %207, 9
br i1 %208, label %233, label %209
209: ; preds = %201
%210 = load i8*, i8** %5
%211 = load i32, i32* %8
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds i8, i8* %210, i64 %212
%214 = load i8, i8* %213
%215 = sext i8 %214 to i32
%216 = icmp eq i32 %215, 10
br i1 %216, label %233, label %217
217: ; preds = %209
%218 = load i8*, i8** %5
%219 = load i32, i32* %8
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds i8, i8* %218, i64 %220
%222 = load i8, i8* %221
%223 = sext i8 %222 to i32
%224 = icmp eq i32 %223, 12
br i1 %224, label %233, label %225
225: ; preds = %217
%226 = load i8*, i8** %5
%227 = load i32, i32* %8
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds i8, i8* %226, i64 %228
%230 = load i8, i8* %229
%231 = sext i8 %230 to i32
%232 = icmp eq i32 %231, 11
br label %233
233: ; preds = %225, %217, %209, %201, %193, %185
%234 = phi i1 [ true, %217 ], [ true, %209 ], [ true, %201 ], [ true, %193 ], [ true, %185 ], [ %232, %225 ]
br label %235
235: ; preds = %233, %177
%236 = phi i1 [ false, %177 ], [ %234, %233 ]
br i1 %236, label %237, label %240
237: ; preds = %235
%238 = load i32, i32* %8
%239 = add nsw i32 %238, 1
store i32 %239, i32* %8
br label %177
240: ; preds = %235
br label %241
241: ; preds = %301, %240
%242 = load i8*, i8** %6
%243 = load i32, i32* %9
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds i8, i8* %242, i64 %244
%246 = load i8, i8* %245
%247 = sext i8 %246 to i32
%248 = icmp ne i32 %247, 0
br i1 %248, label %249, label %299
249: ; preds = %241
%250 = load i8*, i8** %6
%251 = load i32, i32* %9
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds i8, i8* %250, i64 %252
%254 = load i8, i8* %253
%255 = sext i8 %254 to i32
%256 = icmp eq i32 %255, 32
br i1 %256, label %297, label %257
257: ; preds = %249
%258 = load i8*, i8** %6
%259 = load i32, i32* %9
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds i8, i8* %258, i64 %260
%262 = load i8, i8* %261
%263 = sext i8 %262 to i32
%264 = icmp eq i32 %263, 13
br i1 %264, label %297, label %265
265: ; preds = %257
%266 = load i8*, i8** %6
%267 = load i32, i32* %9
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds i8, i8* %266, i64 %268
%270 = load i8, i8* %269
%271 = sext i8 %270 to i32
%272 = icmp eq i32 %271, 9
br i1 %272, label %297, label %273
273: ; preds = %265
%274 = load i8*, i8** %6
%275 = load i32, i32* %9
%276 = sext i32 %275 to i64
%277 = getelementptr inbounds i8, i8* %274, i64 %276
%278 = load i8, i8* %277
%279 = sext i8 %278 to i32
%280 = icmp eq i32 %279, 10
br i1 %280, label %297, label %281
281: ; preds = %273
%282 = load i8*, i8** %6
%283 = load i32, i32* %9
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds i8, i8* %282, i64 %284
%286 = load i8, i8* %285
%287 = sext i8 %286 to i32
%288 = icmp eq i32 %287, 12
br i1 %288, label %297, label %289
289: ; preds = %281
%290 = load i8*, i8** %6
%291 = load i32, i32* %9
%292 = sext i32 %291 to i64
%293 = getelementptr inbounds i8, i8* %290, i64 %292
%294 = load i8, i8* %293
%295 = sext i8 %294 to i32
%296 = icmp eq i32 %295, 11
br label %297
297: ; preds = %289, %281, %273, %265, %257, %249
%298 = phi i1 [ true, %281 ], [ true, %273 ], [ true, %265 ], [ true, %257 ], [ true, %249 ], [ %296, %289 ]
br label %299
299: ; preds = %297, %241
%300 = phi i1 [ false, %241 ], [ %298, %297 ]
br i1 %300, label %301, label %304
301: ; preds = %299
%302 = load i32, i32* %9
%303 = add nsw i32 %302, 1
store i32 %303, i32* %9
br label %241
304: ; preds = %299
%305 = load i8*, i8** %5
%306 = load i32, i32* %8
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds i8, i8* %305, i64 %307
%309 = load i8, i8* %308
%310 = sext i8 %309 to i32
%311 = icmp eq i32 %310, 45
%312 = zext i1 %311 to i32
store i32 %312, i32* %12
%313 = load i32, i32* %8
%314 = add nsw i32 %313, %312
store i32 %314, i32* %8
%315 = load i8*, i8** %6
%316 = load i32, i32* %9
%317 = sext i32 %316 to i64
%318 = getelementptr inbounds i8, i8* %315, i64 %317
%319 = load i8, i8* %318
%320 = sext i8 %319 to i32
%321 = icmp eq i32 %320, 45
%322 = zext i1 %321 to i32
store i32 %322, i32* %13
%323 = load i32, i32* %9
%324 = add nsw i32 %323, %322
store i32 %324, i32* %9
br label %325
325: ; preds = %385, %304
%326 = load i8*, i8** %5
%327 = load i32, i32* %8
%328 = sext i32 %327 to i64
%329 = getelementptr inbounds i8, i8* %326, i64 %328
%330 = load i8, i8* %329
%331 = sext i8 %330 to i32
%332 = icmp eq i32 %331, 48
br i1 %332, label %383, label %333
333: ; preds = %325
%334 = load i8*, i8** %5
%335 = load i32, i32* %8
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds i8, i8* %334, i64 %336
%338 = load i8, i8* %337
%339 = sext i8 %338 to i32
%340 = icmp eq i32 %339, 32
br i1 %340, label %381, label %341
341: ; preds = %333
%342 = load i8*, i8** %5
%343 = load i32, i32* %8
%344 = sext i32 %343 to i64
%345 = getelementptr inbounds i8, i8* %342, i64 %344
%346 = load i8, i8* %345
%347 = sext i8 %346 to i32
%348 = icmp eq i32 %347, 13
br i1 %348, label %381, label %349
349: ; preds = %341
%350 = load i8*, i8** %5
%351 = load i32, i32* %8
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds i8, i8* %350, i64 %352
%354 = load i8, i8* %353
%355 = sext i8 %354 to i32
%356 = icmp eq i32 %355, 9
br i1 %356, label %381, label %357
357: ; preds = %349
%358 = load i8*, i8** %5
%359 = load i32, i32* %8
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds i8, i8* %358, i64 %360
%362 = load i8, i8* %361
%363 = sext i8 %362 to i32
%364 = icmp eq i32 %363, 10
br i1 %364, label %381, label %365
365: ; preds = %357
%366 = load i8*, i8** %5
%367 = load i32, i32* %8
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds i8, i8* %366, i64 %368
%370 = load i8, i8* %369
%371 = sext i8 %370 to i32
%372 = icmp eq i32 %371, 12
br i1 %372, label %381, label %373
373: ; preds = %365
%374 = load i8*, i8** %5
%375 = load i32, i32* %8
%376 = sext i32 %375 to i64
%377 = getelementptr inbounds i8, i8* %374, i64 %376
%378 = load i8, i8* %377
%379 = sext i8 %378 to i32
%380 = icmp eq i32 %379, 11
br label %381
381: ; preds = %373, %365, %357, %349, %341, %333
%382 = phi i1 [ true, %365 ], [ true, %357 ], [ true, %349 ], [ true, %341 ], [ true, %333 ], [ %380, %373 ]
br label %383
383: ; preds = %381, %325
%384 = phi i1 [ true, %325 ], [ %382, %381 ]
br i1 %384, label %385, label %388
385: ; preds = %383
%386 = load i32, i32* %8
%387 = add nsw i32 %386, 1
store i32 %387, i32* %8
br label %325
388: ; preds = %383
br label %389
389: ; preds = %449, %388
%390 = load i8*, i8** %6
%391 = load i32, i32* %9
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds i8, i8* %390, i64 %392
%394 = load i8, i8* %393
%395 = sext i8 %394 to i32
%396 = icmp eq i32 %395, 48
br i1 %396, label %447, label %397
397: ; preds = %389
%398 = load i8*, i8** %6
%399 = load i32, i32* %9
%400 = sext i32 %399 to i64
%401 = getelementptr inbounds i8, i8* %398, i64 %400
%402 = load i8, i8* %401
%403 = sext i8 %402 to i32
%404 = icmp eq i32 %403, 32
br i1 %404, label %445, label %405
405: ; preds = %397
%406 = load i8*, i8** %6
%407 = load i32, i32* %9
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds i8, i8* %406, i64 %408
%410 = load i8, i8* %409
%411 = sext i8 %410 to i32
%412 = icmp eq i32 %411, 13
br i1 %412, label %445, label %413
413: ; preds = %405
%414 = load i8*, i8** %6
%415 = load i32, i32* %9
%416 = sext i32 %415 to i64
%417 = getelementptr inbounds i8, i8* %414, i64 %416
%418 = load i8, i8* %417
%419 = sext i8 %418 to i32
%420 = icmp eq i32 %419, 9
br i1 %420, label %445, label %421
421: ; preds = %413
%422 = load i8*, i8** %6
%423 = load i32, i32* %9
%424 = sext i32 %423 to i64
%425 = getelementptr inbounds i8, i8* %422, i64 %424
%426 = load i8, i8* %425
%427 = sext i8 %426 to i32
%428 = icmp eq i32 %427, 10
br i1 %428, label %445, label %429
429: ; preds = %421
%430 = load i8*, i8** %6
%431 = load i32, i32* %9
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds i8, i8* %430, i64 %432
%434 = load i8, i8* %433
%435 = sext i8 %434 to i32
%436 = icmp eq i32 %435, 12
br i1 %436, label %445, label %437
437: ; preds = %429
%438 = load i8*, i8** %6
%439 = load i32, i32* %9
%440 = sext i32 %439 to i64
%441 = getelementptr inbounds i8, i8* %438, i64 %440
%442 = load i8, i8* %441
%443 = sext i8 %442 to i32
%444 = icmp eq i32 %443, 11
br label %445
445: ; preds = %437, %429, %421, %413, %405, %397
%446 = phi i1 [ true, %429 ], [ true, %421 ], [ true, %413 ], [ true, %405 ], [ true, %397 ], [ %444, %437 ]
br label %447
447: ; preds = %445, %389
%448 = phi i1 [ true, %389 ], [ %446, %445 ]
br i1 %448, label %449, label %452
449: ; preds = %447
%450 = load i32, i32* %9
%451 = add nsw i32 %450, 1
store i32 %451, i32* %9
br label %389
452: ; preds = %447
%453 = load i8*, i8** %5
%454 = load i32, i32* %8
%455 = sext i32 %454 to i64
%456 = getelementptr inbounds i8, i8* %453, i64 %455
%457 = load i8, i8* %456
%458 = sext i8 %457 to i32
%459 = icmp sge i32 %458, 48
br i1 %459, label %460, label %468
460: ; preds = %452
%461 = load i8*, i8** %5
%462 = load i32, i32* %8
%463 = sext i32 %462 to i64
%464 = getelementptr inbounds i8, i8* %461, i64 %463
%465 = load i8, i8* %464
%466 = sext i8 %465 to i32
%467 = icmp sle i32 %466, 57
br label %468
468: ; preds = %460, %452
%469 = phi i1 [ false, %452 ], [ %467, %460 ]
%470 = zext i1 %469 to i32
store i32 %470, i32* %10
%471 = load i8*, i8** %6
%472 = load i32, i32* %9
%473 = sext i32 %472 to i64
%474 = getelementptr inbounds i8, i8* %471, i64 %473
%475 = load i8, i8* %474
%476 = sext i8 %475 to i32
%477 = icmp sge i32 %476, 48
br i1 %477, label %478, label %486
478: ; preds = %468
%479 = load i8*, i8** %6
%480 = load i32, i32* %9
%481 = sext i32 %480 to i64
%482 = getelementptr inbounds i8, i8* %479, i64 %481
%483 = load i8, i8* %482
%484 = sext i8 %483 to i32
%485 = icmp sle i32 %484, 57
br label %486
486: ; preds = %478, %468
%487 = phi i1 [ false, %468 ], [ %485, %478 ]
%488 = zext i1 %487 to i32
store i32 %488, i32* %11
%489 = load i32, i32* %10
%490 = icmp ne i32 %489, 0
br i1 %490, label %491, label %494
491: ; preds = %486
%492 = load i32, i32* %11
%493 = icmp ne i32 %492, 0
br i1 %493, label %514, label %494
494: ; preds = %491, %486
%495 = load i32, i32* %12
%496 = icmp ne i32 %495, 0
br i1 %496, label %497, label %500
497: ; preds = %494
%498 = load i32, i32* %10
%499 = sub nsw i32 0, %498
br label %502
500: ; preds = %494
%501 = load i32, i32* %10
br label %502
502: ; preds = %500, %497
%503 = phi i32 [ %499, %497 ], [ %501, %500 ]
%504 = load i32, i32* %13
%505 = icmp ne i32 %504, 0
br i1 %505, label %506, label %509
506: ; preds = %502
%507 = load i32, i32* %11
%508 = sub nsw i32 0, %507
br label %511
509: ; preds = %502
%510 = load i32, i32* %11
br label %511
511: ; preds = %509, %506
%512 = phi i32 [ %508, %506 ], [ %510, %509 ]
%513 = sub nsw i32 %503, %512
store i32 %513, i32* %4
br label %824
514: ; preds = %491
%515 = load i32, i32* %12
%516 = load i32, i32* %13
%517 = xor i32 %515, %516
%518 = icmp ne i32 %517, 0
br i1 %518, label %519, label %523
519: ; preds = %514
%520 = load i32, i32* %13
%521 = load i32, i32* %12
%522 = sub nsw i32 %520, %521
store i32 %522, i32* %4
br label %824
523: ; preds = %514
store i32 0, i32* %10
store i32 0, i32* %11
br label %524
524: ; preds = %763, %641, %590, %523
%525 = load i8*, i8** %5
%526 = load i32, i32* %8
%527 = sext i32 %526 to i64
%528 = getelementptr inbounds i8, i8* %525, i64 %527
%529 = load i8, i8* %528
%530 = sext i8 %529 to i32
%531 = icmp ne i32 %530, 0
br i1 %531, label %532, label %540
532: ; preds = %524
%533 = load i8*, i8** %6
%534 = load i32, i32* %9
%535 = sext i32 %534 to i64
%536 = getelementptr inbounds i8, i8* %533, i64 %535
%537 = load i8, i8* %536
%538 = sext i8 %537 to i32
%539 = icmp ne i32 %538, 0
br label %540
540: ; preds = %532, %524
%541 = phi i1 [ false, %524 ], [ %539, %532 ]
br i1 %541, label %542, label %764
542: ; preds = %540
%543 = load i8*, i8** %5
%544 = load i32, i32* %8
%545 = sext i32 %544 to i64
%546 = getelementptr inbounds i8, i8* %543, i64 %545
%547 = load i8, i8* %546
%548 = sext i8 %547 to i32
%549 = icmp eq i32 %548, 32
br i1 %549, label %590, label %550
550: ; preds = %542
%551 = load i8*, i8** %5
%552 = load i32, i32* %8
%553 = sext i32 %552 to i64
%554 = getelementptr inbounds i8, i8* %551, i64 %553
%555 = load i8, i8* %554
%556 = sext i8 %555 to i32
%557 = icmp eq i32 %556, 13
br i1 %557, label %590, label %558
558: ; preds = %550
%559 = load i8*, i8** %5
%560 = load i32, i32* %8
%561 = sext i32 %560 to i64
%562 = getelementptr inbounds i8, i8* %559, i64 %561
%563 = load i8, i8* %562
%564 = sext i8 %563 to i32
%565 = icmp eq i32 %564, 9
br i1 %565, label %590, label %566
566: ; preds = %558
%567 = load i8*, i8** %5
%568 = load i32, i32* %8
%569 = sext i32 %568 to i64
%570 = getelementptr inbounds i8, i8* %567, i64 %569
%571 = load i8, i8* %570
%572 = sext i8 %571 to i32
%573 = icmp eq i32 %572, 10
br i1 %573, label %590, label %574
574: ; preds = %566
%575 = load i8*, i8** %5
%576 = load i32, i32* %8
%577 = sext i32 %576 to i64
%578 = getelementptr inbounds i8, i8* %575, i64 %577
%579 = load i8, i8* %578
%580 = sext i8 %579 to i32
%581 = icmp eq i32 %580, 12
br i1 %581, label %590, label %582
582: ; preds = %574
%583 = load i8*, i8** %5
%584 = load i32, i32* %8
%585 = sext i32 %584 to i64
%586 = getelementptr inbounds i8, i8* %583, i64 %585
%587 = load i8, i8* %586
%588 = sext i8 %587 to i32
%589 = icmp eq i32 %588, 11
br i1 %589, label %590, label %593
590: ; preds = %582, %574, %566, %558, %550, %542
%591 = load i32, i32* %8
%592 = add nsw i32 %591, 1
store i32 %592, i32* %8
br label %524
593: ; preds = %582
%594 = load i8*, i8** %6
%595 = load i32, i32* %9
%596 = sext i32 %595 to i64
%597 = getelementptr inbounds i8, i8* %594, i64 %596
%598 = load i8, i8* %597
%599 = sext i8 %598 to i32
%600 = icmp eq i32 %599, 32
br i1 %600, label %641, label %601
601: ; preds = %593
%602 = load i8*, i8** %6
%603 = load i32, i32* %9
%604 = sext i32 %603 to i64
%605 = getelementptr inbounds i8, i8* %602, i64 %604
%606 = load i8, i8* %605
%607 = sext i8 %606 to i32
%608 = icmp eq i32 %607, 13
br i1 %608, label %641, label %609
609: ; preds = %601
%610 = load i8*, i8** %6
%611 = load i32, i32* %9
%612 = sext i32 %611 to i64
%613 = getelementptr inbounds i8, i8* %610, i64 %612
%614 = load i8, i8* %613
%615 = sext i8 %614 to i32
%616 = icmp eq i32 %615, 9
br i1 %616, label %641, label %617
617: ; preds = %609
%618 = load i8*, i8** %6
%619 = load i32, i32* %9
%620 = sext i32 %619 to i64
%621 = getelementptr inbounds i8, i8* %618, i64 %620
%622 = load i8, i8* %621
%623 = sext i8 %622 to i32
%624 = icmp eq i32 %623, 10
br i1 %624, label %641, label %625
625: ; preds = %617
%626 = load i8*, i8** %6
%627 = load i32, i32* %9
%628 = sext i32 %627 to i64
%629 = getelementptr inbounds i8, i8* %626, i64 %628
%630 = load i8, i8* %629
%631 = sext i8 %630 to i32
%632 = icmp eq i32 %631, 12
br i1 %632, label %641, label %633
633: ; preds = %625
%634 = load i8*, i8** %6
%635 = load i32, i32* %9
%636 = sext i32 %635 to i64
%637 = getelementptr inbounds i8, i8* %634, i64 %636
%638 = load i8, i8* %637
%639 = sext i8 %638 to i32
%640 = icmp eq i32 %639, 11
br i1 %640, label %641, label %644
641: ; preds = %633, %625, %617, %609, %601, %593
%642 = load i32, i32* %9
%643 = add nsw i32 %642, 1
store i32 %643, i32* %9
br label %524
644: ; preds = %633
%645 = load i8*, i8** %5
%646 = load i32, i32* %8
%647 = sext i32 %646 to i64
%648 = getelementptr inbounds i8, i8* %645, i64 %647
%649 = load i8, i8* %648
%650 = sext i8 %649 to i32
%651 = icmp sge i32 %650, 48
br i1 %651, label %652, label %704
652: ; preds = %644
%653 = load i8*, i8** %5
%654 = load i32, i32* %8
%655 = sext i32 %654 to i64
%656 = getelementptr inbounds i8, i8* %653, i64 %655
%657 = load i8, i8* %656
%658 = sext i8 %657 to i32
%659 = icmp sle i32 %658, 57
br i1 %659, label %660, label %704
660: ; preds = %652
%661 = load i8*, i8** %6
%662 = load i32, i32* %9
%663 = sext i32 %662 to i64
%664 = getelementptr inbounds i8, i8* %661, i64 %663
%665 = load i8, i8* %664
%666 = sext i8 %665 to i32
%667 = icmp sge i32 %666, 48
br i1 %667, label %668, label %704
668: ; preds = %660
%669 = load i8*, i8** %6
%670 = load i32, i32* %9
%671 = sext i32 %670 to i64
%672 = getelementptr inbounds i8, i8* %669, i64 %671
%673 = load i8, i8* %672
%674 = sext i8 %673 to i32
%675 = icmp sle i32 %674, 57
br i1 %675, label %676, label %704
676: ; preds = %668
%677 = load i32, i32* %7
%678 = icmp ne i32 %677, 0
br i1 %678, label %679, label %680
679: ; preds = %676
br label %694
680: ; preds = %676
%681 = load i8*, i8** %5
%682 = load i32, i32* %8
%683 = sext i32 %682 to i64
%684 = getelementptr inbounds i8, i8* %681, i64 %683
%685 = load i8, i8* %684
%686 = sext i8 %685 to i32
%687 = load i8*, i8** %6
%688 = load i32, i32* %9
%689 = sext i32 %688 to i64
%690 = getelementptr inbounds i8, i8* %687, i64 %689
%691 = load i8, i8* %690
%692 = sext i8 %691 to i32
%693 = sub nsw i32 %686, %692
store i32 %693, i32* %7
br label %694
694: ; preds = %680, %679
%695 = phi i32 [ 0, %679 ], [ %693, %680 ]
%696 = load i32, i32* %10
%697 = add nsw i32 %696, 1
store i32 %697, i32* %10
%698 = load i32, i32* %11
%699 = add nsw i32 %698, 1
store i32 %699, i32* %11
%700 = load i32, i32* %8
%701 = add nsw i32 %700, 1
store i32 %701, i32* %8
%702 = load i32, i32* %9
%703 = add nsw i32 %702, 1
store i32 %703, i32* %9
br label %763
704: ; preds = %668, %660, %652, %644
%705 = load i8*, i8** %5
%706 = load i32, i32* %8
%707 = sext i32 %706 to i64
%708 = getelementptr inbounds i8, i8* %705, i64 %707
%709 = load i8, i8* %708
%710 = sext i8 %709 to i32
%711 = icmp sge i32 %710, 48
br i1 %711, label %712, label %720
712: ; preds = %704
%713 = load i8*, i8** %5
%714 = load i32, i32* %8
%715 = sext i32 %714 to i64
%716 = getelementptr inbounds i8, i8* %713, i64 %715
%717 = load i8, i8* %716
%718 = sext i8 %717 to i32
%719 = icmp sle i32 %718, 57
br label %720
720: ; preds = %712, %704
%721 = phi i1 [ false, %704 ], [ %719, %712 ]
%722 = zext i1 %721 to i32
%723 = load i32, i32* %10
%724 = add nsw i32 %723, %722
store i32 %724, i32* %10
%725 = load i8*, i8** %6
%726 = load i32, i32* %9
%727 = sext i32 %726 to i64
%728 = getelementptr inbounds i8, i8* %725, i64 %727
%729 = load i8, i8* %728
%730 = sext i8 %729 to i32
%731 = icmp sge i32 %730, 48
br i1 %731, label %732, label %740
732: ; preds = %720
%733 = load i8*, i8** %6
%734 = load i32, i32* %9
%735 = sext i32 %734 to i64
%736 = getelementptr inbounds i8, i8* %733, i64 %735
%737 = load i8, i8* %736
%738 = sext i8 %737 to i32
%739 = icmp sle i32 %738, 57
br label %740
740: ; preds = %732, %720
%741 = phi i1 [ false, %720 ], [ %739, %732 ]
%742 = zext i1 %741 to i32
%743 = load i32, i32* %11
%744 = add nsw i32 %743, %742
store i32 %744, i32* %11
%745 = load i32, i32* %10
%746 = load i32, i32* %11
%747 = sub nsw i32 %745, %746
store i32 %747, i32* %13
%748 = icmp ne i32 %747, 0
br i1 %748, label %749, label %750
749: ; preds = %740
br label %752
750: ; preds = %740
%751 = load i32, i32* %7
store i32 %751, i32* %13
br label %752
752: ; preds = %750, %749
%753 = phi i32 [ 0, %749 ], [ %751, %750 ]
%754 = load i32, i32* %12
%755 = icmp ne i32 %754, 0
br i1 %755, label %756, label %759
756: ; preds = %752
%757 = load i32, i32* %13
%758 = sub nsw i32 0, %757
br label %761
759: ; preds = %752
%760 = load i32, i32* %13
br label %761
761: ; preds = %759, %756
%762 = phi i32 [ %758, %756 ], [ %760, %759 ]
store i32 %762, i32* %4
br label %824
763: ; preds = %694
br label %524
764: ; preds = %540
%765 = load i8*, i8** %5
%766 = load i32, i32* %8
%767 = sext i32 %766 to i64
%768 = getelementptr inbounds i8, i8* %765, i64 %767
%769 = load i8, i8* %768
%770 = sext i8 %769 to i32
%771 = icmp sge i32 %770, 48
br i1 %771, label %772, label %780
772: ; preds = %764
%773 = load i8*, i8** %5
%774 = load i32, i32* %8
%775 = sext i32 %774 to i64
%776 = getelementptr inbounds i8, i8* %773, i64 %775
%777 = load i8, i8* %776
%778 = sext i8 %777 to i32
%779 = icmp sle i32 %778, 57
br label %780
780: ; preds = %772, %764
%781 = phi i1 [ false, %764 ], [ %779, %772 ]
%782 = zext i1 %781 to i32
%783 = load i32, i32* %10
%784 = add nsw i32 %783, %782
store i32 %784, i32* %10
%785 = load i8*, i8** %6
%786 = load i32, i32* %9
%787 = sext i32 %786 to i64
%788 = getelementptr inbounds i8, i8* %785, i64 %787
%789 = load i8, i8* %788
%790 = sext i8 %789 to i32
%791 = icmp sge i32 %790, 48
br i1 %791, label %792, label %800
792: ; preds = %780
%793 = load i8*, i8** %6
%794 = load i32, i32* %9
%795 = sext i32 %794 to i64
%796 = getelementptr inbounds i8, i8* %793, i64 %795
%797 = load i8, i8* %796
%798 = sext i8 %797 to i32
%799 = icmp sle i32 %798, 57
br label %800
800: ; preds = %792, %780
%801 = phi i1 [ false, %780 ], [ %799, %792 ]
%802 = zext i1 %801 to i32
%803 = load i32, i32* %11
%804 = add nsw i32 %803, %802
store i32 %804, i32* %11
%805 = load i32, i32* %10
%806 = load i32, i32* %11
%807 = sub nsw i32 %805, %806
store i32 %807, i32* %13
%808 = icmp ne i32 %807, 0
br i1 %808, label %809, label %810
809: ; preds = %800
br label %812
810: ; preds = %800
%811 = load i32, i32* %7
store i32 %811, i32* %13
br label %812
812: ; preds = %810, %809
%813 = phi i32 [ 0, %809 ], [ %811, %810 ]
%814 = load i32, i32* %12
%815 = icmp ne i32 %814, 0
br i1 %815, label %816, label %819
816: ; preds = %812
%817 = load i32, i32* %13
%818 = sub nsw i32 0, %817
br label %821
819: ; preds = %812
%820 = load i32, i32* %13
br label %821
821: ; preds = %819, %816
%822 = phi i32 [ %818, %816 ], [ %820, %819 ]
store i32 %822, i32* %4
br label %824
823: ; preds = %173
store i32 0, i32* %4
br label %824
824: ; preds = %823, %821, %761, %519, %511, %159, %16
%825 = load i32, i32* %4
ret i32 %825
}

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