int fpattern_submatch_tolower(const char *pat, const char *fname, int flength) {
  int fch;
  int pch, pch2;
  int i;
  int yes, match;
  int lo, hi;
  while (*pat != '\0') {
    fch = (unsigned char)*fname;
    pch = (unsigned char)*pat;
    pat++;
    switch (pch) {
    case '?':
      if (flength == 0)
        return (0);
      fname++;
      flength--;
      break;
    case '*':
      i = flength;
      while (i >= 0) {
        if (fpattern_submatch_tolower(pat, fname + i, flength - i))
          return (1);
        i--;
      }
      return (0);
    case '`':;
      pch = (unsigned char)*pat;
      if ((((pch) >= '0' && (pch) <= '9') || ((pch) >= 'a' && (pch) <= 'f') ||
           ((pch) >= 'A' && (pch) <= 'F'))) {
        pch2 = *++pat;
        pch = ((((pch) >= '0' && (pch) <= '9')
                    ? (pch) - '0'
                    : 10 + (((pch) >= 'a' && (pch) <= 'f') ? (pch) - 'a'
                                                           : (pch) - 'A'))
               << 4) |
              (((pch2) >= '0' && (pch2) <= '9')
                   ? (pch2) - '0'
                   : 10 + (((pch2) >= 'a' && (pch2) <= 'f') ? (pch2) - 'a'
                                                            : (pch2) - 'A'));
      }
      if (((fch) >= 'A' && (fch) <= 'Z' ? (fch) - 'A' + 'a' : (fch)) !=
          ((pch) >= 'A' && (pch) <= 'Z' ? (pch) - 'A' + 'a' : (pch)))
        return (0);
      fname++;
      flength--;
      pat++;
      break;
    case '[':
      yes = 1;
      if (*pat == '!') {
        pat++;
        yes = 0;
      }
      match = !yes;
      while (*pat != ']') {
        ;
        pch = (unsigned char)*pat++;
        if (pch == '`') {
          ;
          pch = (unsigned char)*pat++;
          if ((((pch) >= '0' && (pch) <= '9') ||
               ((pch) >= 'a' && (pch) <= 'f') ||
               ((pch) >= 'A' && (pch) <= 'F'))) {
            pch2 = *pat++;
            lo = ((((pch) >= '0' && (pch) <= '9')
                       ? (pch) - '0'
                       : 10 + (((pch) >= 'a' && (pch) <= 'f') ? (pch) - 'a'
                                                              : (pch) - 'A'))
                  << 4) |
                 (((pch2) >= '0' && (pch2) <= '9')
                      ? (pch2) - '0'
                      : 10 + (((pch2) >= 'a' && (pch2) <= 'f') ? (pch2) - 'a'
                                                               : (pch2) - 'A'));
          } else {
            lo = pch;
          }
        } else {
          lo = pch;
        }
        if (*pat == '-') {
          pat++;
          pch = (unsigned char)*pat++;
          if (pch == '`') {
            ;
            pch = (unsigned char)*pat++;
            if ((((pch) >= '0' && (pch) <= '9') ||
                 ((pch) >= 'a' && (pch) <= 'f') ||
                 ((pch) >= 'A' && (pch) <= 'F'))) {
              pch2 = *pat++;
              hi = ((((pch) >= '0' && (pch) <= '9')
                         ? (pch) - '0'
                         : 10 + (((pch) >= 'a' && (pch) <= 'f') ? (pch) - 'a'
                                                                : (pch) - 'A'))
                    << 4) |
                   (((pch2) >= '0' && (pch2) <= '9')
                        ? (pch2) - '0'
                        : 10 + (((pch2) >= 'a' && (pch2) <= 'f')
                                    ? (pch2) - 'a'
                                    : (pch2) - 'A'));
            } else {
              hi = pch;
            }
          } else {
            hi = pch;
          }
          if (((fch) >= 'A' && (fch) <= 'Z' ? (fch) - 'A' + 'a' : (fch)) >=
                  ((lo) >= 'A' && (lo) <= 'Z' ? (lo) - 'A' + 'a' : (lo)) &&
              ((fch) >= 'A' && (fch) <= 'Z' ? (fch) - 'A' + 'a' : (fch)) <=
                  ((hi) >= 'A' && (hi) <= 'Z' ? (hi) - 'A' + 'a' : (hi))) {
            match = yes;
            while (*pat != ']') {
              ;
              pat++;
            }
            break;
          }
        } else {
          if (((fch) >= 'A' && (fch) <= 'Z' ? (fch) - 'A' + 'a' : (fch)) ==
              ((lo) >= 'A' && (lo) <= 'Z' ? (lo) - 'A' + 'a' : (lo))) {
            match = yes;
            while (*pat != ']') {
              ;
              pat++;
            }
            break;
          }
        };
      }
      if (!match)
        return (0);
      fname++;
      flength--;
      ;
      pat++;
      break;
    case '{':
      yes = 1;
      if (*pat == '!') {
        pat++;
        yes = 0;
      }
      do {
        const char *org_pat = pat;
        match = !yes;
        while (*pat != '}') {
          ;
          pch = (unsigned char)*pat++;
          if (pch == '`') {
            ;
            pch = (unsigned char)*pat++;
            if ((((pch) >= '0' && (pch) <= '9') ||
                 ((pch) >= 'a' && (pch) <= 'f') ||
                 ((pch) >= 'A' && (pch) <= 'F'))) {
              pch2 = *pat++;
              lo = ((((pch) >= '0' && (pch) <= '9')
                         ? (pch) - '0'
                         : 10 + (((pch) >= 'a' && (pch) <= 'f') ? (pch) - 'a'
                                                                : (pch) - 'A'))
                    << 4) |
                   (((pch2) >= '0' && (pch2) <= '9')
                        ? (pch2) - '0'
                        : 10 + (((pch2) >= 'a' && (pch2) <= 'f')
                                    ? (pch2) - 'a'
                                    : (pch2) - 'A'));
            } else {
              lo = pch;
            }
          } else {
            lo = pch;
          }
          if (*pat == '-') {
            pat++;
            pch = (unsigned char)*pat++;
            if (pch == '`') {
              ;
              pch = (unsigned char)*pat++;
              if ((((pch) >= '0' && (pch) <= '9') ||
                   ((pch) >= 'a' && (pch) <= 'f') ||
                   ((pch) >= 'A' && (pch) <= 'F'))) {
                pch2 = *pat++;
                hi =
                    ((((pch) >= '0' && (pch) <= '9')
                          ? (pch) - '0'
                          : 10 + (((pch) >= 'a' && (pch) <= 'f') ? (pch) - 'a'
                                                                 : (pch) - 'A'))
                     << 4) |
                    (((pch2) >= '0' && (pch2) <= '9')
                         ? (pch2) - '0'
                         : 10 + (((pch2) >= 'a' && (pch2) <= 'f')
                                     ? (pch2) - 'a'
                                     : (pch2) - 'A'));
              } else {
                hi = pch;
              }
            } else {
              hi = pch;
            }
            if (((fch) >= 'A' && (fch) <= 'Z' ? (fch) - 'A' + 'a' : (fch)) >=
                    ((lo) >= 'A' && (lo) <= 'Z' ? (lo) - 'A' + 'a' : (lo)) &&
                ((fch) >= 'A' && (fch) <= 'Z' ? (fch) - 'A' + 'a' : (fch)) <=
                    ((hi) >= 'A' && (hi) <= 'Z' ? (hi) - 'A' + 'a' : (hi))) {
              match = yes;
              while (*pat != '}') {
                ;
                pat++;
              }
              break;
            }
          } else {
            if (((fch) >= 'A' && (fch) <= 'Z' ? (fch) - 'A' + 'a' : (fch)) ==
                ((lo) >= 'A' && (lo) <= 'Z' ? (lo) - 'A' + 'a' : (lo))) {
              match = yes;
              while (*pat != '}') {
                ;
                pat++;
              }
              break;
            }
          };
        };
        if (match) {
          fname++;
          flength--;
          fch = *fname;
          if (flength > 0)
            pat = org_pat;
        }
      } while (match && flength > 0);
      pat++;
      break;
    default:
      if (((fch) >= 'A' && (fch) <= 'Z' ? (fch) - 'A' + 'a' : (fch)) !=
          ((pch) >= 'A' && (pch) <= 'Z' ? (pch) - 'A' + 'a' : (pch)))
        return (0);
      fname++;
      flength--;
      break;
    }
  }
  if (flength != 0)
    return (0);
  return (1);
}


x86 assembly (clang, -O0):
<fpattern_submatch_tolower>:
push   %rbp
mov    %rsp,%rbp
sub    $0x120,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1ff5 <fpattern_submatch_tolower+0xee5>
mov    -0x18(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x4c(%rbp)
sub    $0x2a,%eax
je     11de <fpattern_submatch_tolower+0xce>
jmp    116a <fpattern_submatch_tolower+0x5a>
mov    -0x4c(%rbp),%eax
sub    $0x3f,%eax
je     11ae <fpattern_submatch_tolower+0x9e>
jmp    117b <fpattern_submatch_tolower+0x6b>
mov    -0x4c(%rbp),%eax
sub    $0x5b,%eax
je     13ef <fpattern_submatch_tolower+0x2df>
jmp    118c <fpattern_submatch_tolower+0x7c>
mov    -0x4c(%rbp),%eax
sub    $0x60,%eax
je     1237 <fpattern_submatch_tolower+0x127>
jmp    119d <fpattern_submatch_tolower+0x8d>
mov    -0x4c(%rbp),%eax
sub    $0x7b,%eax
je     195f <fpattern_submatch_tolower+0x84f>
jmp    1f4d <fpattern_submatch_tolower+0xe3d>
cmpl   $0x0,-0x1c(%rbp)
jne    11c4 <fpattern_submatch_tolower+0xb4>
movl   $0x0,-0x4(%rbp)
jmp    2012 <fpattern_submatch_tolower+0xf02>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    1ff0 <fpattern_submatch_tolower+0xee0>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jl     122b <fpattern_submatch_tolower+0x11b>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
movslq -0x2c(%rbp),%rax
add    %rax,%rsi
mov    -0x1c(%rbp),%edx
sub    -0x2c(%rbp),%edx
call   1030 <fpattern_submatch_tolower@plt>
cmp    $0x0,%eax
je     121d <fpattern_submatch_tolower+0x10d>
movl   $0x1,-0x4(%rbp)
jmp    2012 <fpattern_submatch_tolower+0xf02>
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    11e4 <fpattern_submatch_tolower+0xd4>
movl   $0x0,-0x4(%rbp)
jmp    2012 <fpattern_submatch_tolower+0xf02>
mov    -0x10(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     1255 <fpattern_submatch_tolower+0x145>
cmpl   $0x39,-0x24(%rbp)
jle    127d <fpattern_submatch_tolower+0x16d>
cmpl   $0x61,-0x24(%rbp)
jl     1269 <fpattern_submatch_tolower+0x159>
cmpl   $0x66,-0x24(%rbp)
jle    127d <fpattern_submatch_tolower+0x16d>
cmpl   $0x41,-0x24(%rbp)
jl     1353 <fpattern_submatch_tolower+0x243>
cmpl   $0x46,-0x24(%rbp)
jg     1353 <fpattern_submatch_tolower+0x243>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movsbl 0x1(%rax),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     12b5 <fpattern_submatch_tolower+0x1a5>
cmpl   $0x39,-0x24(%rbp)
jg     12b5 <fpattern_submatch_tolower+0x1a5>
mov    -0x24(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x50(%rbp)
jmp    12e9 <fpattern_submatch_tolower+0x1d9>
cmpl   $0x61,-0x24(%rbp)
jl     12d7 <fpattern_submatch_tolower+0x1c7>
cmpl   $0x66,-0x24(%rbp)
jg     12d7 <fpattern_submatch_tolower+0x1c7>
mov    -0x24(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0x54(%rbp)
jmp    12e0 <fpattern_submatch_tolower+0x1d0>
mov    -0x24(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
shl    $0x4,%eax
mov    %eax,-0x58(%rbp)
cmpl   $0x30,-0x28(%rbp)
jl     1314 <fpattern_submatch_tolower+0x204>
cmpl   $0x39,-0x28(%rbp)
jg     1314 <fpattern_submatch_tolower+0x204>
mov    -0x28(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x5c(%rbp)
jmp    1348 <fpattern_submatch_tolower+0x238>
cmpl   $0x61,-0x28(%rbp)
jl     1336 <fpattern_submatch_tolower+0x226>
cmpl   $0x66,-0x28(%rbp)
jg     1336 <fpattern_submatch_tolower+0x226>
mov    -0x28(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0x60(%rbp)
jmp    133f <fpattern_submatch_tolower+0x22f>
mov    -0x28(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x58(%rbp),%eax
mov    -0x5c(%rbp),%ecx
or     %ecx,%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x41,-0x20(%rbp)
jl     1378 <fpattern_submatch_tolower+0x268>
cmpl   $0x5a,-0x20(%rbp)
jg     1378 <fpattern_submatch_tolower+0x268>
mov    -0x20(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0x64(%rbp)
jmp    137e <fpattern_submatch_tolower+0x26e>
mov    -0x20(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x41,-0x24(%rbp)
jl     13a9 <fpattern_submatch_tolower+0x299>
cmpl   $0x5a,-0x24(%rbp)
jg     13a9 <fpattern_submatch_tolower+0x299>
mov    -0x24(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0x6c(%rbp)
jmp    13af <fpattern_submatch_tolower+0x29f>
mov    -0x24(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x68(%rbp),%eax
mov    -0x6c(%rbp),%ecx
cmp    %ecx,%eax
je     13c9 <fpattern_submatch_tolower+0x2b9>
movl   $0x0,-0x4(%rbp)
jmp    2012 <fpattern_submatch_tolower+0xf02>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1ff0 <fpattern_submatch_tolower+0xee0>
movl   $0x1,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x21,%eax
jne    1419 <fpattern_submatch_tolower+0x309>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x0,-0x30(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
je     1923 <fpattern_submatch_tolower+0x813>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x60,-0x24(%rbp)
jne    158f <fpattern_submatch_tolower+0x47f>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     1482 <fpattern_submatch_tolower+0x372>
cmpl   $0x39,-0x24(%rbp)
jle    14aa <fpattern_submatch_tolower+0x39a>
cmpl   $0x61,-0x24(%rbp)
jl     1496 <fpattern_submatch_tolower+0x386>
cmpl   $0x66,-0x24(%rbp)
jle    14aa <fpattern_submatch_tolower+0x39a>
cmpl   $0x41,-0x24(%rbp)
jl     1584 <fpattern_submatch_tolower+0x474>
cmpl   $0x46,-0x24(%rbp)
jg     1584 <fpattern_submatch_tolower+0x474>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movsbl (%rax),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     14e1 <fpattern_submatch_tolower+0x3d1>
cmpl   $0x39,-0x24(%rbp)
jg     14e1 <fpattern_submatch_tolower+0x3d1>
mov    -0x24(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x70(%rbp)
jmp    1515 <fpattern_submatch_tolower+0x405>
cmpl   $0x61,-0x24(%rbp)
jl     1503 <fpattern_submatch_tolower+0x3f3>
cmpl   $0x66,-0x24(%rbp)
jg     1503 <fpattern_submatch_tolower+0x3f3>
mov    -0x24(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0x74(%rbp)
jmp    150c <fpattern_submatch_tolower+0x3fc>
mov    -0x24(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
shl    $0x4,%eax
mov    %eax,-0x78(%rbp)
cmpl   $0x30,-0x28(%rbp)
jl     1540 <fpattern_submatch_tolower+0x430>
cmpl   $0x39,-0x28(%rbp)
jg     1540 <fpattern_submatch_tolower+0x430>
mov    -0x28(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x7c(%rbp)
jmp    1574 <fpattern_submatch_tolower+0x464>
cmpl   $0x61,-0x28(%rbp)
jl     1562 <fpattern_submatch_tolower+0x452>
cmpl   $0x66,-0x28(%rbp)
jg     1562 <fpattern_submatch_tolower+0x452>
mov    -0x28(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0x80(%rbp)
jmp    156b <fpattern_submatch_tolower+0x45b>
mov    -0x28(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x80(%rbp)
mov    -0x80(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x78(%rbp),%eax
mov    -0x7c(%rbp),%ecx
or     %ecx,%eax
mov    %eax,-0x38(%rbp)
jmp    158a <fpattern_submatch_tolower+0x47a>
mov    -0x24(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    1595 <fpattern_submatch_tolower+0x485>
mov    -0x24(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    186b <fpattern_submatch_tolower+0x75b>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x60,-0x24(%rbp)
jne    1730 <fpattern_submatch_tolower+0x620>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     15f9 <fpattern_submatch_tolower+0x4e9>
cmpl   $0x39,-0x24(%rbp)
jle    1621 <fpattern_submatch_tolower+0x511>
cmpl   $0x61,-0x24(%rbp)
jl     160d <fpattern_submatch_tolower+0x4fd>
cmpl   $0x66,-0x24(%rbp)
jle    1621 <fpattern_submatch_tolower+0x511>
cmpl   $0x41,-0x24(%rbp)
jl     1725 <fpattern_submatch_tolower+0x615>
cmpl   $0x46,-0x24(%rbp)
jg     1725 <fpattern_submatch_tolower+0x615>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movsbl (%rax),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     165b <fpattern_submatch_tolower+0x54b>
cmpl   $0x39,-0x24(%rbp)
jg     165b <fpattern_submatch_tolower+0x54b>
mov    -0x24(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x84(%rbp)
jmp    169b <fpattern_submatch_tolower+0x58b>
cmpl   $0x61,-0x24(%rbp)
jl     1680 <fpattern_submatch_tolower+0x570>
cmpl   $0x66,-0x24(%rbp)
jg     1680 <fpattern_submatch_tolower+0x570>
mov    -0x24(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0x88(%rbp)
jmp    168c <fpattern_submatch_tolower+0x57c>
mov    -0x24(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x88(%rbp)
mov    -0x88(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
shl    $0x4,%eax
mov    %eax,-0x8c(%rbp)
cmpl   $0x30,-0x28(%rbp)
jl     16cf <fpattern_submatch_tolower+0x5bf>
cmpl   $0x39,-0x28(%rbp)
jg     16cf <fpattern_submatch_tolower+0x5bf>
mov    -0x28(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x90(%rbp)
jmp    170f <fpattern_submatch_tolower+0x5ff>
cmpl   $0x61,-0x28(%rbp)
jl     16f4 <fpattern_submatch_tolower+0x5e4>
cmpl   $0x66,-0x28(%rbp)
jg     16f4 <fpattern_submatch_tolower+0x5e4>
mov    -0x28(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0x94(%rbp)
jmp    1700 <fpattern_submatch_tolower+0x5f0>
mov    -0x28(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x94(%rbp)
mov    -0x94(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x90(%rbp)
mov    -0x8c(%rbp),%eax
mov    -0x90(%rbp),%ecx
or     %ecx,%eax
mov    %eax,-0x3c(%rbp)
jmp    172b <fpattern_submatch_tolower+0x61b>
mov    -0x24(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    1736 <fpattern_submatch_tolower+0x626>
mov    -0x24(%rbp),%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x41,-0x20(%rbp)
jl     175e <fpattern_submatch_tolower+0x64e>
cmpl   $0x5a,-0x20(%rbp)
jg     175e <fpattern_submatch_tolower+0x64e>
mov    -0x20(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0x98(%rbp)
jmp    1767 <fpattern_submatch_tolower+0x657>
mov    -0x20(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x98(%rbp),%eax
mov    %eax,-0x9c(%rbp)
cmpl   $0x41,-0x38(%rbp)
jl     179b <fpattern_submatch_tolower+0x68b>
cmpl   $0x5a,-0x38(%rbp)
jg     179b <fpattern_submatch_tolower+0x68b>
mov    -0x38(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xa0(%rbp)
jmp    17a4 <fpattern_submatch_tolower+0x694>
mov    -0x38(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x9c(%rbp),%eax
mov    -0xa0(%rbp),%ecx
cmp    %ecx,%eax
jl     1866 <fpattern_submatch_tolower+0x756>
cmpl   $0x41,-0x20(%rbp)
jl     17e0 <fpattern_submatch_tolower+0x6d0>
cmpl   $0x5a,-0x20(%rbp)
jg     17e0 <fpattern_submatch_tolower+0x6d0>
mov    -0x20(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xa4(%rbp)
jmp    17e9 <fpattern_submatch_tolower+0x6d9>
mov    -0x20(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0xa4(%rbp),%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x41,-0x3c(%rbp)
jl     181d <fpattern_submatch_tolower+0x70d>
cmpl   $0x5a,-0x3c(%rbp)
jg     181d <fpattern_submatch_tolower+0x70d>
mov    -0x3c(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xac(%rbp)
jmp    1826 <fpattern_submatch_tolower+0x716>
mov    -0x3c(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0xa8(%rbp),%eax
mov    -0xac(%rbp),%ecx
cmp    %ecx,%eax
jg     1866 <fpattern_submatch_tolower+0x756>
mov    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
je     1861 <fpattern_submatch_tolower+0x751>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1840 <fpattern_submatch_tolower+0x730>
jmp    1923 <fpattern_submatch_tolower+0x813>
jmp    191e <fpattern_submatch_tolower+0x80e>
cmpl   $0x41,-0x20(%rbp)
jl     1893 <fpattern_submatch_tolower+0x783>
cmpl   $0x5a,-0x20(%rbp)
jg     1893 <fpattern_submatch_tolower+0x783>
mov    -0x20(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xb0(%rbp)
jmp    189c <fpattern_submatch_tolower+0x78c>
mov    -0x20(%rbp),%eax
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
mov    %eax,-0xb4(%rbp)
cmpl   $0x41,-0x38(%rbp)
jl     18d0 <fpattern_submatch_tolower+0x7c0>
cmpl   $0x5a,-0x38(%rbp)
jg     18d0 <fpattern_submatch_tolower+0x7c0>
mov    -0x38(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xb8(%rbp)
jmp    18d9 <fpattern_submatch_tolower+0x7c9>
mov    -0x38(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb4(%rbp),%eax
mov    -0xb8(%rbp),%ecx
cmp    %ecx,%eax
jne    1919 <fpattern_submatch_tolower+0x809>
mov    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
je     1914 <fpattern_submatch_tolower+0x804>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    18f3 <fpattern_submatch_tolower+0x7e3>
jmp    1923 <fpattern_submatch_tolower+0x813>
jmp    191e <fpattern_submatch_tolower+0x80e>
jmp    142a <fpattern_submatch_tolower+0x31a>
cmpl   $0x0,-0x34(%rbp)
jne    1939 <fpattern_submatch_tolower+0x829>
movl   $0x0,-0x4(%rbp)
jmp    2012 <fpattern_submatch_tolower+0xf02>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1ff0 <fpattern_submatch_tolower+0xee0>
movl   $0x1,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x21,%eax
jne    1989 <fpattern_submatch_tolower+0x879>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x30(%rbp)
jmp    198e <fpattern_submatch_tolower+0x87e>
mov    -0x10(%rbp),%rax
mov    %rax,-0x48(%rbp)
cmpl   $0x0,-0x30(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
je     1eca <fpattern_submatch_tolower+0xdba>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x60,-0x24(%rbp)
jne    1b36 <fpattern_submatch_tolower+0xa26>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     19ff <fpattern_submatch_tolower+0x8ef>
cmpl   $0x39,-0x24(%rbp)
jle    1a27 <fpattern_submatch_tolower+0x917>
cmpl   $0x61,-0x24(%rbp)
jl     1a13 <fpattern_submatch_tolower+0x903>
cmpl   $0x66,-0x24(%rbp)
jle    1a27 <fpattern_submatch_tolower+0x917>
cmpl   $0x41,-0x24(%rbp)
jl     1b2b <fpattern_submatch_tolower+0xa1b>
cmpl   $0x46,-0x24(%rbp)
jg     1b2b <fpattern_submatch_tolower+0xa1b>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movsbl (%rax),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     1a61 <fpattern_submatch_tolower+0x951>
cmpl   $0x39,-0x24(%rbp)
jg     1a61 <fpattern_submatch_tolower+0x951>
mov    -0x24(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0xbc(%rbp)
jmp    1aa1 <fpattern_submatch_tolower+0x991>
cmpl   $0x61,-0x24(%rbp)
jl     1a86 <fpattern_submatch_tolower+0x976>
cmpl   $0x66,-0x24(%rbp)
jg     1a86 <fpattern_submatch_tolower+0x976>
mov    -0x24(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0xc0(%rbp)
jmp    1a92 <fpattern_submatch_tolower+0x982>
mov    -0x24(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
shl    $0x4,%eax
mov    %eax,-0xc4(%rbp)
cmpl   $0x30,-0x28(%rbp)
jl     1ad5 <fpattern_submatch_tolower+0x9c5>
cmpl   $0x39,-0x28(%rbp)
jg     1ad5 <fpattern_submatch_tolower+0x9c5>
mov    -0x28(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0xc8(%rbp)
jmp    1b15 <fpattern_submatch_tolower+0xa05>
cmpl   $0x61,-0x28(%rbp)
jl     1afa <fpattern_submatch_tolower+0x9ea>
cmpl   $0x66,-0x28(%rbp)
jg     1afa <fpattern_submatch_tolower+0x9ea>
mov    -0x28(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0xcc(%rbp)
jmp    1b06 <fpattern_submatch_tolower+0x9f6>
mov    -0x28(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc4(%rbp),%eax
mov    -0xc8(%rbp),%ecx
or     %ecx,%eax
mov    %eax,-0x38(%rbp)
jmp    1b31 <fpattern_submatch_tolower+0xa21>
mov    -0x24(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    1b3c <fpattern_submatch_tolower+0xa2c>
mov    -0x24(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    1e12 <fpattern_submatch_tolower+0xd02>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x60,-0x24(%rbp)
jne    1cd7 <fpattern_submatch_tolower+0xbc7>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     1ba0 <fpattern_submatch_tolower+0xa90>
cmpl   $0x39,-0x24(%rbp)
jle    1bc8 <fpattern_submatch_tolower+0xab8>
cmpl   $0x61,-0x24(%rbp)
jl     1bb4 <fpattern_submatch_tolower+0xaa4>
cmpl   $0x66,-0x24(%rbp)
jle    1bc8 <fpattern_submatch_tolower+0xab8>
cmpl   $0x41,-0x24(%rbp)
jl     1ccc <fpattern_submatch_tolower+0xbbc>
cmpl   $0x46,-0x24(%rbp)
jg     1ccc <fpattern_submatch_tolower+0xbbc>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movsbl (%rax),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x30,-0x24(%rbp)
jl     1c02 <fpattern_submatch_tolower+0xaf2>
cmpl   $0x39,-0x24(%rbp)
jg     1c02 <fpattern_submatch_tolower+0xaf2>
mov    -0x24(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0xd0(%rbp)
jmp    1c42 <fpattern_submatch_tolower+0xb32>
cmpl   $0x61,-0x24(%rbp)
jl     1c27 <fpattern_submatch_tolower+0xb17>
cmpl   $0x66,-0x24(%rbp)
jg     1c27 <fpattern_submatch_tolower+0xb17>
mov    -0x24(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0xd4(%rbp)
jmp    1c33 <fpattern_submatch_tolower+0xb23>
mov    -0x24(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0xd0(%rbp)
mov    -0xd0(%rbp),%eax
shl    $0x4,%eax
mov    %eax,-0xd8(%rbp)
cmpl   $0x30,-0x28(%rbp)
jl     1c76 <fpattern_submatch_tolower+0xb66>
cmpl   $0x39,-0x28(%rbp)
jg     1c76 <fpattern_submatch_tolower+0xb66>
mov    -0x28(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0xdc(%rbp)
jmp    1cb6 <fpattern_submatch_tolower+0xba6>
cmpl   $0x61,-0x28(%rbp)
jl     1c9b <fpattern_submatch_tolower+0xb8b>
cmpl   $0x66,-0x28(%rbp)
jg     1c9b <fpattern_submatch_tolower+0xb8b>
mov    -0x28(%rbp),%eax
sub    $0x61,%eax
mov    %eax,-0xe0(%rbp)
jmp    1ca7 <fpattern_submatch_tolower+0xb97>
mov    -0x28(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0xe0(%rbp)
mov    -0xe0(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0xdc(%rbp)
mov    -0xd8(%rbp),%eax
mov    -0xdc(%rbp),%ecx
or     %ecx,%eax
mov    %eax,-0x3c(%rbp)
jmp    1cd2 <fpattern_submatch_tolower+0xbc2>
mov    -0x24(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    1cdd <fpattern_submatch_tolower+0xbcd>
mov    -0x24(%rbp),%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x41,-0x20(%rbp)
jl     1d05 <fpattern_submatch_tolower+0xbf5>
cmpl   $0x5a,-0x20(%rbp)
jg     1d05 <fpattern_submatch_tolower+0xbf5>
mov    -0x20(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xe4(%rbp)
jmp    1d0e <fpattern_submatch_tolower+0xbfe>
mov    -0x20(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
mov    %eax,-0xe8(%rbp)
cmpl   $0x41,-0x38(%rbp)
jl     1d42 <fpattern_submatch_tolower+0xc32>
cmpl   $0x5a,-0x38(%rbp)
jg     1d42 <fpattern_submatch_tolower+0xc32>
mov    -0x38(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xec(%rbp)
jmp    1d4b <fpattern_submatch_tolower+0xc3b>
mov    -0x38(%rbp),%eax
mov    %eax,-0xec(%rbp)
mov    -0xe8(%rbp),%eax
mov    -0xec(%rbp),%ecx
cmp    %ecx,%eax
jl     1e0d <fpattern_submatch_tolower+0xcfd>
cmpl   $0x41,-0x20(%rbp)
jl     1d87 <fpattern_submatch_tolower+0xc77>
cmpl   $0x5a,-0x20(%rbp)
jg     1d87 <fpattern_submatch_tolower+0xc77>
mov    -0x20(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xf0(%rbp)
jmp    1d90 <fpattern_submatch_tolower+0xc80>
mov    -0x20(%rbp),%eax
mov    %eax,-0xf0(%rbp)
mov    -0xf0(%rbp),%eax
mov    %eax,-0xf4(%rbp)
cmpl   $0x41,-0x3c(%rbp)
jl     1dc4 <fpattern_submatch_tolower+0xcb4>
cmpl   $0x5a,-0x3c(%rbp)
jg     1dc4 <fpattern_submatch_tolower+0xcb4>
mov    -0x3c(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xf8(%rbp)
jmp    1dcd <fpattern_submatch_tolower+0xcbd>
mov    -0x3c(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf4(%rbp),%eax
mov    -0xf8(%rbp),%ecx
cmp    %ecx,%eax
jg     1e0d <fpattern_submatch_tolower+0xcfd>
mov    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
je     1e08 <fpattern_submatch_tolower+0xcf8>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1de7 <fpattern_submatch_tolower+0xcd7>
jmp    1eca <fpattern_submatch_tolower+0xdba>
jmp    1ec5 <fpattern_submatch_tolower+0xdb5>
cmpl   $0x41,-0x20(%rbp)
jl     1e3a <fpattern_submatch_tolower+0xd2a>
cmpl   $0x5a,-0x20(%rbp)
jg     1e3a <fpattern_submatch_tolower+0xd2a>
mov    -0x20(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0xfc(%rbp)
jmp    1e43 <fpattern_submatch_tolower+0xd33>
mov    -0x20(%rbp),%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
mov    %eax,-0x100(%rbp)
cmpl   $0x41,-0x38(%rbp)
jl     1e77 <fpattern_submatch_tolower+0xd67>
cmpl   $0x5a,-0x38(%rbp)
jg     1e77 <fpattern_submatch_tolower+0xd67>
mov    -0x38(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0x104(%rbp)
jmp    1e80 <fpattern_submatch_tolower+0xd70>
mov    -0x38(%rbp),%eax
mov    %eax,-0x104(%rbp)
mov    -0x100(%rbp),%eax
mov    -0x104(%rbp),%ecx
cmp    %ecx,%eax
jne    1ec0 <fpattern_submatch_tolower+0xdb0>
mov    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
je     1ebb <fpattern_submatch_tolower+0xdab>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1e9a <fpattern_submatch_tolower+0xd8a>
jmp    1eca <fpattern_submatch_tolower+0xdba>
jmp    1ec5 <fpattern_submatch_tolower+0xdb5>
jmp    19a7 <fpattern_submatch_tolower+0x897>
cmpl   $0x0,-0x34(%rbp)
je     1f0a <fpattern_submatch_tolower+0xdfa>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jle    1f05 <fpattern_submatch_tolower+0xdf5>
mov    -0x48(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    1f0a <fpattern_submatch_tolower+0xdfa>
jmp    1f0f <fpattern_submatch_tolower+0xdff>
xor    %eax,%eax
cmpl   $0x0,-0x34(%rbp)
mov    %al,-0x105(%rbp)
je     1f2e <fpattern_submatch_tolower+0xe1e>
cmpl   $0x0,-0x1c(%rbp)
setg   %al
mov    %al,-0x105(%rbp)
mov    -0x105(%rbp),%al
test   $0x1,%al
jne    198e <fpattern_submatch_tolower+0x87e>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1ff0 <fpattern_submatch_tolower+0xee0>
cmpl   $0x41,-0x20(%rbp)
jl     1f75 <fpattern_submatch_tolower+0xe65>
cmpl   $0x5a,-0x20(%rbp)
jg     1f75 <fpattern_submatch_tolower+0xe65>
mov    -0x20(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0x10c(%rbp)
jmp    1f7e <fpattern_submatch_tolower+0xe6e>
mov    -0x20(%rbp),%eax
mov    %eax,-0x10c(%rbp)
mov    -0x10c(%rbp),%eax
mov    %eax,-0x110(%rbp)
cmpl   $0x41,-0x24(%rbp)
jl     1fb2 <fpattern_submatch_tolower+0xea2>
cmpl   $0x5a,-0x24(%rbp)
jg     1fb2 <fpattern_submatch_tolower+0xea2>
mov    -0x24(%rbp),%eax
sub    $0x41,%eax
add    $0x61,%eax
mov    %eax,-0x114(%rbp)
jmp    1fbb <fpattern_submatch_tolower+0xeab>
mov    -0x24(%rbp),%eax
mov    %eax,-0x114(%rbp)
mov    -0x110(%rbp),%eax
mov    -0x114(%rbp),%ecx
cmp    %ecx,%eax
je     1fdb <fpattern_submatch_tolower+0xecb>
movl   $0x0,-0x4(%rbp)
jmp    2012 <fpattern_submatch_tolower+0xf02>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    1126 <fpattern_submatch_tolower+0x16>
cmpl   $0x0,-0x1c(%rbp)
je     200b <fpattern_submatch_tolower+0xefb>
movl   $0x0,-0x4(%rbp)
jmp    2012 <fpattern_submatch_tolower+0xf02>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x120,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fpattern_submatch_tolower>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    (%rdi),%al
test   %al,%al
je     16f5 <fpattern_submatch_tolower+0x5e5>
mov    %rsi,%r14
movabs $0x3f0000003f,%r10
jmp    1174 <fpattern_submatch_tolower+0x64>
cmp    $0x2a,%al
je     16fe <fpattern_submatch_tolower+0x5ee>
movzbl %al,%ecx
lea    -0x41(%rsi),%edi
lea    0x20(%rsi),%ebp
cmp    $0x1a,%dil
cmovae %esi,%ebp
add    $0xbf,%al
lea    0x20(%rcx),%esi
cmp    $0x1a,%al
cmovae %ecx,%esi
cmp    %esi,%ebp
jne    1735 <fpattern_submatch_tolower+0x625>
add    $0x1,%r14
add    $0xffffffff,%edx
mov    (%r12),%al
mov    %r12,%rdi
test   %al,%al
je     16f5 <fpattern_submatch_tolower+0x5e5>
movzbl (%r14),%esi
lea    0x1(%rdi),%r12
cmp    $0x5f,%al
jg     1380 <fpattern_submatch_tolower+0x270>
cmp    $0x3f,%al
je     15f6 <fpattern_submatch_tolower+0x4e6>
cmp    $0x5b,%al
jne    1134 <fpattern_submatch_tolower+0x24>
lea    0x2(%rdi),%rax
xor    %r9d,%r9d
cmpb   $0x21,0x1(%rdi)
setne  %r8b
sete   %r9b
cmove  %rax,%r12
mov    0x1(%r9,%rdi,1),%al
cmp    $0x5d,%al
je     16e0 <fpattern_submatch_tolower+0x5d0>
lea    -0x41(%rsi),%ecx
lea    0x20(%rsi),%edi
cmp    $0x1a,%cl
cmovae %esi,%edi
jmp    11f1 <fpattern_submatch_tolower+0xe1>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x41(%rax),%esi
lea    0x20(%rax),%ebp
cmp    $0x1a,%esi
cmovae %eax,%ebp
cmp    %ebp,%edi
je     16a9 <fpattern_submatch_tolower+0x599>
movzbl (%r12),%eax
cmp    $0x5d,%al
je     16e0 <fpattern_submatch_tolower+0x5d0>
cmp    $0x60,%al
jne    1210 <fpattern_submatch_tolower+0x100>
movzbl 0x1(%r12),%eax
lea    -0x30(%rax),%ecx
cmp    $0xa,%cl
jae    1220 <fpattern_submatch_tolower+0x110>
add    $0xffffffd0,%eax
jmp    1254 <fpattern_submatch_tolower+0x144>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r12
movzbl %al,%eax
jmp    1299 <fpattern_submatch_tolower+0x189>
nopl   0x0(%rax)
lea    0x2(%r12),%rcx
lea    -0x41(%rax),%esi
cmp    $0x25,%sil
ja     1369 <fpattern_submatch_tolower+0x259>
movzbl %sil,%esi
bt     %rsi,%r10
jae    1369 <fpattern_submatch_tolower+0x259>
lea    -0x61(%rax),%ecx
xor    %esi,%esi
cmp    $0x6,%cl
setae  %sil
shl    $0x5,%esi
add    %esi,%eax
add    $0xffffffa9,%eax
movsbl 0x2(%r12),%esi
add    $0x3,%r12
shl    $0x4,%eax
lea    -0x30(%rsi),%ecx
cmp    $0x9,%cl
ja     1280 <fpattern_submatch_tolower+0x170>
add    $0xffffffd0,%esi
or     %eax,%esi
mov    %esi,%eax
jmp    1299 <fpattern_submatch_tolower+0x189>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x61(%rsi),%ecx
xor    %ebp,%ebp
cmp    $0x6,%cl
setae  %bpl
shl    $0x5,%ebp
lea    (%rsi,%rbp,1),%ecx
add    $0xffffffa9,%ecx
or     %eax,%ecx
mov    %ecx,%eax
movzbl (%r12),%ecx
cmp    $0x2d,%cl
jne    11d0 <fpattern_submatch_tolower+0xc0>
movzbl 0x1(%r12),%ebp
cmp    $0x60,%ebp
jne    12d0 <fpattern_submatch_tolower+0x1c0>
movzbl 0x2(%r12),%ebp
lea    -0x30(%rbp),%ecx
cmp    $0xa,%cl
jae    12d6 <fpattern_submatch_tolower+0x1c6>
add    $0xffffffd0,%ebp
jmp    1306 <fpattern_submatch_tolower+0x1f6>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x2,%r12
jmp    133c <fpattern_submatch_tolower+0x22c>
lea    0x3(%r12),%rcx
lea    -0x41(%rbp),%esi
cmp    $0x25,%sil
ja     1371 <fpattern_submatch_tolower+0x261>
movzbl %sil,%esi
bt     %rsi,%r10
jae    1371 <fpattern_submatch_tolower+0x261>
lea    -0x61(%rbp),%ecx
xor    %esi,%esi
cmp    $0x6,%cl
setae  %sil
shl    $0x5,%esi
add    %esi,%ebp
add    $0xffffffa9,%ebp
movsbl 0x3(%r12),%esi
add    $0x4,%r12
shl    $0x4,%ebp
lea    -0x30(%rsi),%ecx
cmp    $0x9,%cl
ja     1324 <fpattern_submatch_tolower+0x214>
add    $0xffffffd0,%esi
or     %ebp,%esi
mov    %esi,%ebp
jmp    133c <fpattern_submatch_tolower+0x22c>
lea    -0x61(%rsi),%ecx
xor    %ebx,%ebx
cmp    $0x6,%cl
setae  %bl
shl    $0x5,%ebx
lea    (%rbx,%rsi,1),%ecx
add    $0xffffffa9,%ecx
or     %ebp,%ecx
mov    %ecx,%ebp
lea    -0x41(%rax),%ecx
lea    0x20(%rax),%esi
cmp    $0x1a,%ecx
cmovae %eax,%esi
cmp    %esi,%edi
jl     11e4 <fpattern_submatch_tolower+0xd4>
lea    -0x41(%rbp),%eax
lea    0x20(%rbp),%ecx
cmp    $0x1a,%eax
cmovae %ebp,%ecx
cmp    %ecx,%edi
jg     11e4 <fpattern_submatch_tolower+0xd4>
jmp    16bf <fpattern_submatch_tolower+0x5af>
mov    %rcx,%r12
jmp    1299 <fpattern_submatch_tolower+0x189>
mov    %rcx,%r12
jmp    133c <fpattern_submatch_tolower+0x22c>
cs nopw 0x0(%rax,%rax,1)
cmp    $0x60,%al
je     1603 <fpattern_submatch_tolower+0x4f3>
cmp    $0x7b,%al
jne    113c <fpattern_submatch_tolower+0x2c>
lea    0x2(%rdi),%rax
xor    %r11d,%r11d
cmpb   $0x21,0x1(%rdi)
setne  %r8b
sete   %r11b
cmove  %rax,%r12
test   %edx,%edx
mov    $0x1,%r9d
cmovle %edx,%r9d
add    $0xffffffff,%r9d
mov    0x1(%r11,%rdi,1),%r15b
nopl   0x0(%rax)
mov    %r12,%rdi
mov    %r11d,%eax
cmp    $0x7d,%r15b
jne    13e0 <fpattern_submatch_tolower+0x2d0>
test   %al,%al
jne    15d0 <fpattern_submatch_tolower+0x4c0>
jmp    15ea <fpattern_submatch_tolower+0x4da>
nopl   0x0(%rax)
lea    -0x41(%rsi),%eax
lea    0x20(%rsi),%r13d
cmp    $0x1a,%eax
cmovae %esi,%r13d
mov    %r15d,%eax
mov    %r12,%rdi
jmp    1420 <fpattern_submatch_tolower+0x310>
cs nopw 0x0(%rax,%rax,1)
lea    -0x41(%rsi),%ecx
lea    0x20(%rsi),%ebx
cmp    $0x1a,%ecx
cmovae %esi,%ebx
cmp    %ebx,%r13d
je     1589 <fpattern_submatch_tolower+0x479>
movzbl (%rdi),%eax
cmp    $0x7d,%al
je     1580 <fpattern_submatch_tolower+0x470>
cmp    $0x60,%al
jne    1440 <fpattern_submatch_tolower+0x330>
movzbl 0x1(%rdi),%esi
lea    -0x30(%rsi),%eax
cmp    $0xa,%al
jae    1450 <fpattern_submatch_tolower+0x340>
add    $0xffffffd0,%esi
jmp    147f <fpattern_submatch_tolower+0x36f>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rdi
movzbl %al,%esi
jmp    14b7 <fpattern_submatch_tolower+0x3a7>
nopl   0x0(%rax)
lea    0x2(%rdi),%rax
lea    -0x41(%rsi),%ecx
cmp    $0x25,%cl
ja     1571 <fpattern_submatch_tolower+0x461>
movzbl %cl,%ecx
bt     %rcx,%r10
jae    1571 <fpattern_submatch_tolower+0x461>
lea    -0x61(%rsi),%eax
xor    %ecx,%ecx
cmp    $0x6,%al
setae  %cl
shl    $0x5,%ecx
add    %ecx,%esi
add    $0xffffffa9,%esi
movsbl 0x2(%rdi),%ecx
add    $0x3,%rdi
shl    $0x4,%esi
lea    -0x30(%rcx),%eax
cmp    $0x9,%al
ja     14a0 <fpattern_submatch_tolower+0x390>
add    $0xffffffd0,%ecx
or     %esi,%ecx
mov    %ecx,%esi
jmp    14b7 <fpattern_submatch_tolower+0x3a7>
nopw   0x0(%rax,%rax,1)
lea    -0x61(%rcx),%eax
xor    %ebx,%ebx
cmp    $0x6,%al
setae  %bl
shl    $0x5,%ebx
lea    (%rbx,%rcx,1),%eax
add    $0xffffffa9,%eax
or     %esi,%eax
mov    %eax,%esi
movzbl (%rdi),%eax
cmp    $0x2d,%al
jne    1400 <fpattern_submatch_tolower+0x2f0>
movzbl 0x1(%rdi),%ecx
cmp    $0x60,%ecx
jne    14e0 <fpattern_submatch_tolower+0x3d0>
movzbl 0x2(%rdi),%ecx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    14e6 <fpattern_submatch_tolower+0x3d6>
add    $0xffffffd0,%ecx
jmp    1511 <fpattern_submatch_tolower+0x401>
nopl   0x0(%rax,%rax,1)
add    $0x2,%rdi
jmp    1545 <fpattern_submatch_tolower+0x435>
lea    0x3(%rdi),%rax
lea    -0x41(%rcx),%ebx
cmp    $0x25,%bl
ja     1579 <fpattern_submatch_tolower+0x469>
movzbl %bl,%ebx
bt     %rbx,%r10
jae    1579 <fpattern_submatch_tolower+0x469>
lea    -0x61(%rcx),%eax
xor    %ebx,%ebx
cmp    $0x6,%al
setae  %bl
shl    $0x5,%ebx
add    %ebx,%ecx
add    $0xffffffa9,%ecx
movsbl 0x3(%rdi),%eax
add    $0x4,%rdi
shl    $0x4,%ecx
lea    -0x30(%rax),%ebx
cmp    $0x9,%bl
ja     152d <fpattern_submatch_tolower+0x41d>
add    $0xffffffd0,%eax
or     %ecx,%eax
mov    %eax,%ecx
jmp    1545 <fpattern_submatch_tolower+0x435>
lea    -0x61(%rax),%ebx
xor    %ebp,%ebp
cmp    $0x6,%bl
setae  %bpl
shl    $0x5,%ebp
add    %ebp,%eax
add    $0xffffffa9,%eax
or     %ecx,%eax
mov    %eax,%ecx
lea    -0x41(%rsi),%eax
lea    0x20(%rsi),%ebx
cmp    $0x1a,%eax
cmovae %esi,%ebx
cmp    %ebx,%r13d
jl     1415 <fpattern_submatch_tolower+0x305>
lea    -0x41(%rcx),%eax
lea    0x20(%rcx),%esi
cmp    $0x1a,%eax
cmovae %ecx,%esi
cmp    %esi,%r13d
jg     1415 <fpattern_submatch_tolower+0x305>
jmp    15a3 <fpattern_submatch_tolower+0x493>
mov    %rax,%rdi
jmp    14b7 <fpattern_submatch_tolower+0x3a7>
mov    %rax,%rdi
jmp    1545 <fpattern_submatch_tolower+0x435>
xchg   %ax,%ax
mov    %r11d,%eax
test   %al,%al
jne    15d0 <fpattern_submatch_tolower+0x4c0>
jmp    15ea <fpattern_submatch_tolower+0x4da>
cmp    $0x7d,%al
je     15ba <fpattern_submatch_tolower+0x4aa>
nopl   (%rax)
cmpb   $0x7d,0x1(%rdi)
lea    0x1(%rdi),%rdi
jne    1590 <fpattern_submatch_tolower+0x480>
mov    %r8d,%eax
test   %al,%al
jne    15d0 <fpattern_submatch_tolower+0x4c0>
jmp    15ea <fpattern_submatch_tolower+0x4da>
add    $0xffffffffffffffff,%rdi
nopw   0x0(%rax,%rax,1)
cmpb   $0x7d,0x1(%rdi)
lea    0x1(%rdi),%rdi
jne    15b0 <fpattern_submatch_tolower+0x4a0>
mov    %r8d,%eax
test   %al,%al
je     15ea <fpattern_submatch_tolower+0x4da>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rdx),%eax
movsbl 0x1(%r14),%esi
add    $0x1,%r14
cmp    $0x1,%edx
mov    %eax,%edx
jg     13c0 <fpattern_submatch_tolower+0x2b0>
mov    %r9d,%edx
add    $0x1,%rdi
mov    %rdi,%r12
jmp    1165 <fpattern_submatch_tolower+0x55>
test   %edx,%edx
jne    115e <fpattern_submatch_tolower+0x4e>
jmp    1735 <fpattern_submatch_tolower+0x625>
movzbl (%r12),%eax
lea    -0x30(%rax),%ecx
cmp    $0xa,%cl
jae    1617 <fpattern_submatch_tolower+0x507>
add    $0xffffffd0,%eax
mov    %eax,%ecx
jmp    1644 <fpattern_submatch_tolower+0x534>
mov    $0x1,%ecx
lea    -0x41(%rax),%ebp
cmp    $0x25,%bpl
ja     1674 <fpattern_submatch_tolower+0x564>
movzbl %bpl,%ebp
bt     %rbp,%r10
jae    1674 <fpattern_submatch_tolower+0x564>
lea    -0x61(%rax),%ecx
xor    %ebp,%ebp
cmp    $0x6,%cl
setae  %bpl
shl    $0x5,%ebp
lea    (%rax,%rbp,1),%ecx
add    $0xffffffa9,%ecx
movsbl 0x2(%rdi),%eax
shl    $0x4,%ecx
lea    -0x30(%rax),%ebp
cmp    $0x9,%bpl
ja     1659 <fpattern_submatch_tolower+0x549>
add    $0xffffffd0,%eax
jmp    166d <fpattern_submatch_tolower+0x55d>
lea    -0x61(%rax),%ebp
xor    %ebx,%ebx
cmp    $0x6,%bpl
setae  %bl
shl    $0x5,%ebx
add    %ebx,%eax
add    $0xffffffa9,%eax
or     %ecx,%eax
mov    $0x2,%ecx
lea    -0x41(%rsi),%ebp
lea    0x20(%rsi),%ebx
cmp    $0x1a,%bpl
cmovae %esi,%ebx
lea    -0x41(%rax),%esi
lea    0x20(%rax),%ebp
cmp    $0x1a,%esi
cmovae %eax,%ebp
cmp    %ebp,%ebx
jne    1735 <fpattern_submatch_tolower+0x625>
add    $0x1,%r14
add    $0xffffffff,%edx
lea    (%rdi,%rcx,1),%r12
add    $0x1,%r12
jmp    1165 <fpattern_submatch_tolower+0x55>
cmp    $0x5d,%cl
je     16dd <fpattern_submatch_tolower+0x5cd>
xchg   %ax,%ax
cmpb   $0x5d,0x1(%r12)
lea    0x1(%r12),%r12
jne    16b0 <fpattern_submatch_tolower+0x5a0>
jmp    16dd <fpattern_submatch_tolower+0x5cd>
add    $0xffffffffffffffff,%r12
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmpb   $0x5d,0x1(%r12)
lea    0x1(%r12),%r12
jne    16d0 <fpattern_submatch_tolower+0x5c0>
mov    %r8d,%r9d
test   %r9b,%r9b
je     1735 <fpattern_submatch_tolower+0x625>
add    $0x1,%r14
add    $0xffffffff,%edx
add    $0x1,%r12
jmp    1165 <fpattern_submatch_tolower+0x55>
xor    %eax,%eax
test   %edx,%edx
sete   %al
jmp    1737 <fpattern_submatch_tolower+0x627>
test   %edx,%edx
js     1735 <fpattern_submatch_tolower+0x625>
mov    %edx,%r15d
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
lea    (%r14,%r15,1),%rsi
mov    %r12,%rdi
mov    %ebp,%edx
call   1030 <fpattern_submatch_tolower@plt>
test   %eax,%eax
jne    1746 <fpattern_submatch_tolower+0x636>
lea    -0x1(%r15),%rcx
add    $0x1,%ebp
xor    %eax,%eax
test   %r15,%r15
mov    %rcx,%r15
jg     1710 <fpattern_submatch_tolower+0x600>
jmp    1737 <fpattern_submatch_tolower+0x627>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x1,%eax
jmp    1737 <fpattern_submatch_tolower+0x627>

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

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