#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
scalar_t__ toupper(char const);
int fileglob_WildMatch(const char *pattern, const char *string,
                       int caseSensitive, int recursive) {
  const char *mp = 0;
  const char *cp = 0;
  if (caseSensitive) {
    if (recursive) {
    topa:
      while (*string != 0 && *pattern != '*') {
        if (*pattern != '?') {
          if (toupper(*pattern) != toupper(*string))
            return 0;
        }
        pattern++;
        string++;
      }
      while (*string != 0) {
        if (*pattern == '*') {
          ++pattern;
          if (*pattern == '*') {
            if (pattern[1] == '/')
              pattern += 2;
            while (*string != 0) {
              while (*string != 0) {
                if (*string == '/') {
                  ++string;
                  break;
                }
                ++string;
              }
              if (fileglob_WildMatch(pattern, string, caseSensitive, 1)) {
                return 1;
              }
            }
          }
          mp = pattern;
          cp = string + 1;
        } else {
          if (*string == '/') {
            if (*pattern != '/') {
              return 0;
            } else {
              pattern++;
              string++;
              if (*pattern == 0 && *string != 0) {
                return 0;
              }
              goto topa;
            }
          }
          if (toupper(*pattern) == toupper(*string) || *pattern == '?') {
            pattern++;
            string++;
          } else {
            pattern = mp;
            string = cp++;
          }
        }
      }
    } else {
      while (*string != 0 && *pattern != '*') {
        if (*pattern != '?') {
          if (*pattern != *string)
            return 0;
        }
        pattern++;
        string++;
      }
      while (*string != 0) {
        if (*pattern == '*') {
          if (*++pattern == 0) {
            return 1;
          }
          mp = pattern;
          cp = string + 1;
        } else {
          if (*pattern == *string || *pattern == '?') {
            pattern++;
            string++;
          } else {
            pattern = mp;
            string = cp++;
          }
        }
      }
    }
  } else {
    if (recursive) {
    topb:
      while (*string != 0 && *pattern != '*') {
        if (*pattern != '?') {
          if (toupper(*pattern) != toupper(*string))
            return 0;
        }
        pattern++;
        string++;
      }
      while (*string != 0) {
        if (*pattern == '*') {
          ++pattern;
          if (*pattern == '*') {
            if (pattern[1] == '/')
              pattern += 2;
            while (*string != 0) {
              if (fileglob_WildMatch(pattern, string, caseSensitive, 1)) {
                return 1;
              }
              while (*string != 0) {
                if (*string == '/') {
                  ++string;
                  break;
                }
                ++string;
              }
            }
          }
          mp = pattern;
          cp = string + 1;
        } else {
          if (*string == '/') {
            if (*pattern != '/') {
              return 0;
            } else {
              pattern++;
              string++;
              if (*pattern == 0 && *string != 0) {
                return 0;
              }
              goto topb;
            }
          }
          if (toupper(*pattern) == toupper(*string) || *pattern == '?') {
            pattern++;
            string++;
          } else {
            pattern = mp;
            string = cp++;
          }
        }
      }
    } else {
      while (*string != 0 && *pattern != '*') {
        if (*pattern != '?') {
          if (toupper(*pattern) != toupper(*string))
            return 0;
        }
        pattern++;
        string++;
      }
      while (*string != 0) {
        if (*pattern == '*') {
          if (*++pattern == 0) {
            return 1;
          }
          mp = pattern;
          cp = string + 1;
        } else {
          if (toupper(*pattern) == toupper(*string) || *pattern == '?') {
            pattern++;
            string++;
          } else {
            pattern = mp;
            string = cp++;
          }
        }
      }
    }
  }
  while (*pattern == '*')
    pattern++;
  return !*pattern && !*string;
}


x86 assembly (clang, -O0):
<fileglob_WildMatch>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    %ecx,-0x20(%rbp)
movq   $0x0,-0x28(%rbp)
movq   $0x0,-0x30(%rbp)
cmpl   $0x0,-0x1c(%rbp)
je     156b <fileglob_WildMatch+0x44b>
cmpl   $0x0,-0x20(%rbp)
je     1405 <fileglob_WildMatch+0x2e5>
jmp    1162 <fileglob_WildMatch+0x42>
jmp    1167 <fileglob_WildMatch+0x47>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x31(%rbp)
je     118c <fileglob_WildMatch+0x6c>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
setne  %al
mov    %al,-0x31(%rbp)
mov    -0x31(%rbp),%al
test   $0x1,%al
jne    119c <fileglob_WildMatch+0x7c>
jmp    1206 <fileglob_WildMatch+0xe6>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3f,%eax
je     11e9 <fileglob_WildMatch+0xc9>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,%rcx
mov    -0x40(%rbp),%rax
cmp    %rcx,%rax
je     11e4 <fileglob_WildMatch+0xc4>
movl   $0x0,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
jmp    11e9 <fileglob_WildMatch+0xc9>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1167 <fileglob_WildMatch+0x47>
jmp    120b <fileglob_WildMatch+0xeb>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1400 <fileglob_WildMatch+0x2e0>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    130d <fileglob_WildMatch+0x1ed>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    12f4 <fileglob_WildMatch+0x1d4>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2f,%eax
jne    1264 <fileglob_WildMatch+0x144>
mov    -0x10(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x10(%rbp)
jmp    1269 <fileglob_WildMatch+0x149>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     12ef <fileglob_WildMatch+0x1cf>
jmp    127e <fileglob_WildMatch+0x15e>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     12c0 <fileglob_WildMatch+0x1a0>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    12af <fileglob_WildMatch+0x18f>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    12c0 <fileglob_WildMatch+0x1a0>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    127e <fileglob_WildMatch+0x15e>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x1c(%rbp),%edx
mov    $0x1,%ecx
call   1030 <fileglob_WildMatch@plt>
cmp    $0x0,%eax
je     12ea <fileglob_WildMatch+0x1ca>
movl   $0x1,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
jmp    1269 <fileglob_WildMatch+0x149>
jmp    12f4 <fileglob_WildMatch+0x1d4>
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    13fb <fileglob_WildMatch+0x2db>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    1382 <fileglob_WildMatch+0x262>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
je     1339 <fileglob_WildMatch+0x219>
movl   $0x0,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    137d <fileglob_WildMatch+0x25d>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     137d <fileglob_WildMatch+0x25d>
movl   $0x0,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
jmp    1162 <fileglob_WildMatch+0x42>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,%rcx
mov    -0x48(%rbp),%rax
cmp    %rcx,%rax
je     13be <fileglob_WildMatch+0x29e>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3f,%eax
jne    13db <fileglob_WildMatch+0x2bb>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    13f6 <fileglob_WildMatch+0x2d6>
mov    -0x28(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
mov    %rax,-0x18(%rbp)
jmp    13fb <fileglob_WildMatch+0x2db>
jmp    120b <fileglob_WildMatch+0xeb>
jmp    1566 <fileglob_WildMatch+0x446>
jmp    140a <fileglob_WildMatch+0x2ea>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x49(%rbp)
je     142f <fileglob_WildMatch+0x30f>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
setne  %al
mov    %al,-0x49(%rbp)
mov    -0x49(%rbp),%al
test   $0x1,%al
jne    143f <fileglob_WildMatch+0x31f>
jmp    1493 <fileglob_WildMatch+0x373>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3f,%eax
je     1476 <fileglob_WildMatch+0x356>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    -0x18(%rbp),%rcx
movsbl (%rcx),%ecx
cmp    %ecx,%eax
je     1471 <fileglob_WildMatch+0x351>
movl   $0x0,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
jmp    1476 <fileglob_WildMatch+0x356>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    140a <fileglob_WildMatch+0x2ea>
jmp    1498 <fileglob_WildMatch+0x378>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1561 <fileglob_WildMatch+0x441>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    14f9 <fileglob_WildMatch+0x3d9>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
jne    14e0 <fileglob_WildMatch+0x3c0>
movl   $0x1,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    155c <fileglob_WildMatch+0x43c>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    -0x18(%rbp),%rcx
movsbl (%rcx),%ecx
cmp    %ecx,%eax
je     151f <fileglob_WildMatch+0x3ff>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3f,%eax
jne    153c <fileglob_WildMatch+0x41c>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1557 <fileglob_WildMatch+0x437>
mov    -0x28(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
mov    %rax,-0x18(%rbp)
jmp    155c <fileglob_WildMatch+0x43c>
jmp    1498 <fileglob_WildMatch+0x378>
jmp    1566 <fileglob_WildMatch+0x446>
jmp    19af <fileglob_WildMatch+0x88f>
cmpl   $0x0,-0x20(%rbp)
je     181d <fileglob_WildMatch+0x6fd>
jmp    157a <fileglob_WildMatch+0x45a>
jmp    157f <fileglob_WildMatch+0x45f>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x4a(%rbp)
je     15a4 <fileglob_WildMatch+0x484>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
setne  %al
mov    %al,-0x4a(%rbp)
mov    -0x4a(%rbp),%al
test   $0x1,%al
jne    15b4 <fileglob_WildMatch+0x494>
jmp    161e <fileglob_WildMatch+0x4fe>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3f,%eax
je     1601 <fileglob_WildMatch+0x4e1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,%rcx
mov    -0x58(%rbp),%rax
cmp    %rcx,%rax
je     15fc <fileglob_WildMatch+0x4dc>
movl   $0x0,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
jmp    1601 <fileglob_WildMatch+0x4e1>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    157f <fileglob_WildMatch+0x45f>
jmp    1623 <fileglob_WildMatch+0x503>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1818 <fileglob_WildMatch+0x6f8>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    1725 <fileglob_WildMatch+0x605>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    170c <fileglob_WildMatch+0x5ec>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2f,%eax
jne    167c <fileglob_WildMatch+0x55c>
mov    -0x10(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x10(%rbp)
jmp    1681 <fileglob_WildMatch+0x561>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1707 <fileglob_WildMatch+0x5e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x1c(%rbp),%edx
mov    $0x1,%ecx
call   1030 <fileglob_WildMatch@plt>
cmp    $0x0,%eax
je     16bb <fileglob_WildMatch+0x59b>
movl   $0x1,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
jmp    16c0 <fileglob_WildMatch+0x5a0>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1702 <fileglob_WildMatch+0x5e2>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    16f1 <fileglob_WildMatch+0x5d1>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1702 <fileglob_WildMatch+0x5e2>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    16c0 <fileglob_WildMatch+0x5a0>
jmp    1681 <fileglob_WildMatch+0x561>
jmp    170c <fileglob_WildMatch+0x5ec>
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    1813 <fileglob_WildMatch+0x6f3>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    179a <fileglob_WildMatch+0x67a>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
je     1751 <fileglob_WildMatch+0x631>
movl   $0x0,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1795 <fileglob_WildMatch+0x675>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1795 <fileglob_WildMatch+0x675>
movl   $0x0,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
jmp    157a <fileglob_WildMatch+0x45a>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,%rcx
mov    -0x60(%rbp),%rax
cmp    %rcx,%rax
je     17d6 <fileglob_WildMatch+0x6b6>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3f,%eax
jne    17f3 <fileglob_WildMatch+0x6d3>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    180e <fileglob_WildMatch+0x6ee>
mov    -0x28(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
mov    %rax,-0x18(%rbp)
jmp    1813 <fileglob_WildMatch+0x6f3>
jmp    1623 <fileglob_WildMatch+0x503>
jmp    19aa <fileglob_WildMatch+0x88a>
jmp    1822 <fileglob_WildMatch+0x702>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x61(%rbp)
je     1847 <fileglob_WildMatch+0x727>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
setne  %al
mov    %al,-0x61(%rbp)
mov    -0x61(%rbp),%al
test   $0x1,%al
jne    1857 <fileglob_WildMatch+0x737>
jmp    18c1 <fileglob_WildMatch+0x7a1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3f,%eax
je     18a4 <fileglob_WildMatch+0x784>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,%rcx
mov    -0x70(%rbp),%rax
cmp    %rcx,%rax
je     189f <fileglob_WildMatch+0x77f>
movl   $0x0,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
jmp    18a4 <fileglob_WildMatch+0x784>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1822 <fileglob_WildMatch+0x702>
jmp    18c6 <fileglob_WildMatch+0x7a6>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     19a5 <fileglob_WildMatch+0x885>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    1927 <fileglob_WildMatch+0x807>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
jne    190e <fileglob_WildMatch+0x7ee>
movl   $0x1,-0x4(%rbp)
jmp    1a01 <fileglob_WildMatch+0x8e1>
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    19a0 <fileglob_WildMatch+0x880>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,-0x78(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %rax,%rcx
mov    -0x78(%rbp),%rax
cmp    %rcx,%rax
je     1963 <fileglob_WildMatch+0x843>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3f,%eax
jne    1980 <fileglob_WildMatch+0x860>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    199b <fileglob_WildMatch+0x87b>
mov    -0x28(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
mov    %rax,-0x18(%rbp)
jmp    19a0 <fileglob_WildMatch+0x880>
jmp    18c6 <fileglob_WildMatch+0x7a6>
jmp    19aa <fileglob_WildMatch+0x88a>
jmp    19af <fileglob_WildMatch+0x88f>
jmp    19b4 <fileglob_WildMatch+0x894>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    19d5 <fileglob_WildMatch+0x8b5>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    19b4 <fileglob_WildMatch+0x894>
mov    -0x10(%rbp),%rcx
xor    %eax,%eax
cmpb   $0x0,(%rcx)
mov    %al,-0x79(%rbp)
jne    19f6 <fileglob_WildMatch+0x8d6>
mov    -0x18(%rbp),%rax
cmpb   $0x0,(%rax)
setne  %al
xor    $0xff,%al
mov    %al,-0x79(%rbp)
mov    -0x79(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fileglob_WildMatch>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %rdi,%rbx
mov    (%rsi),%al
test   %edx,%edx
je     12df <fileglob_WildMatch+0x1bf>
test   %ecx,%ecx
je     12bd <fileglob_WildMatch+0x19d>
test   %al,%al
je     1554 <fileglob_WildMatch+0x434>
mov    %edx,%r12d
xor    %r13d,%r13d
xor    %r15d,%r15d
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    (%rbx),%cl
cmp    $0x3f,%cl
je     1189 <fileglob_WildMatch+0x69>
cmp    $0x2a,%cl
je     11b1 <fileglob_WildMatch+0x91>
movsbl %cl,%edi
call   1040 <toupper@plt>
mov    %rax,%rbp
movsbl (%r14),%edi
call   1040 <toupper@plt>
cmp    %rax,%rbp
jne    1566 <fileglob_WildMatch+0x446>
add    $0x1,%rbx
mov    0x1(%r14),%al
add    $0x1,%r14
test   %al,%al
jne    1160 <fileglob_WildMatch+0x40>
jmp    1554 <fileglob_WildMatch+0x434>
add    $0x1,%rbx
add    $0x1,%r14
mov    (%r14),%al
test   %al,%al
je     1554 <fileglob_WildMatch+0x434>
mov    (%rbx),%cl
cmp    $0x2a,%cl
jne    1240 <fileglob_WildMatch+0x120>
lea    0x1(%rbx),%r15
cmpb   $0x2a,0x1(%rbx)
jne    122b <fileglob_WildMatch+0x10b>
cmpb   $0x2f,0x2(%rbx)
lea    0x3(%rbx),%rcx
cmove  %rcx,%r15
test   %al,%al
je     122b <fileglob_WildMatch+0x10b>
cs nopw 0x0(%rax,%rax,1)
test   %al,%al
je     1204 <fileglob_WildMatch+0xe4>
cmp    $0x2f,%al
je     1200 <fileglob_WildMatch+0xe0>
movzbl 0x1(%r14),%eax
add    $0x1,%r14
test   %al,%al
jne    11e4 <fileglob_WildMatch+0xc4>
jmp    1204 <fileglob_WildMatch+0xe4>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r14
mov    $0x1,%ebp
mov    %r15,%rdi
mov    %r14,%rsi
mov    %r12d,%edx
mov    $0x1,%ecx
call   1030 <fileglob_WildMatch@plt>
test   %eax,%eax
jne    1568 <fileglob_WildMatch+0x448>
mov    (%r14),%al
test   %al,%al
jne    11e0 <fileglob_WildMatch+0xc0>
lea    0x1(%r14),%r13
jmp    1271 <fileglob_WildMatch+0x151>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmp    $0x2f,%al
je     1279 <fileglob_WildMatch+0x159>
movsbl %cl,%edi
call   1040 <toupper@plt>
mov    %rax,%rbp
movsbl (%r14),%edi
call   1040 <toupper@plt>
cmp    %rax,%rbp
je     119e <fileglob_WildMatch+0x7e>
cmpb   $0x3f,(%rbx)
je     119e <fileglob_WildMatch+0x7e>
mov    %r13,%r14
add    $0x1,%r13
mov    %r15,%rbx
jmp    11a6 <fileglob_WildMatch+0x86>
xor    %ebp,%ebp
cmp    $0x2f,%cl
jne    1568 <fileglob_WildMatch+0x448>
add    $0x1,%r14
cmpb   $0x0,0x1(%rbx)
jne    1298 <fileglob_WildMatch+0x178>
cmpb   $0x0,(%r14)
jne    1568 <fileglob_WildMatch+0x448>
add    $0x1,%rbx
mov    (%r14),%al
jmp    1195 <fileglob_WildMatch+0x75>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rbx
movzbl 0x1(%r14),%eax
add    $0x1,%r14
test   %al,%al
je     1554 <fileglob_WildMatch+0x434>
movzbl (%rbx),%ecx
cmp    $0x3f,%cl
je     12b0 <fileglob_WildMatch+0x190>
cmp    $0x2a,%cl
je     1480 <fileglob_WildMatch+0x360>
cmp    %al,%cl
je     12b0 <fileglob_WildMatch+0x190>
jmp    1566 <fileglob_WildMatch+0x446>
test   %ecx,%ecx
je     142e <fileglob_WildMatch+0x30e>
test   %al,%al
je     1554 <fileglob_WildMatch+0x434>
xor    %r12d,%r12d
xor    %r15d,%r15d
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%rbx),%cl
cmp    $0x3f,%cl
je     1329 <fileglob_WildMatch+0x209>
cmp    $0x2a,%cl
je     1353 <fileglob_WildMatch+0x233>
movsbl %cl,%edi
call   1040 <toupper@plt>
mov    %rax,%rbp
movsbl (%r14),%edi
call   1040 <toupper@plt>
cmp    %rax,%rbp
jne    1566 <fileglob_WildMatch+0x446>
add    $0x1,%rbx
mov    0x1(%r14),%al
add    $0x1,%r14
test   %al,%al
jne    1300 <fileglob_WildMatch+0x1e0>
jmp    1554 <fileglob_WildMatch+0x434>
xchg   %ax,%ax
add    $0x1,%rbx
add    $0x1,%r14
mov    (%r14),%al
test   %al,%al
je     1554 <fileglob_WildMatch+0x434>
mov    (%rbx),%cl
cmp    $0x2a,%cl
jne    13c0 <fileglob_WildMatch+0x2a0>
lea    0x1(%rbx),%r15
cmpb   $0x2a,0x1(%rbx)
jne    13f7 <fileglob_WildMatch+0x2d7>
lea    0x3(%rbx),%rax
cmpb   $0x2f,0x2(%rbx)
cmove  %rax,%r15
mov    $0x1,%ebp
mov    %r15,%rdi
mov    %r14,%rsi
xor    %edx,%edx
mov    $0x1,%ecx
call   1030 <fileglob_WildMatch@plt>
test   %eax,%eax
jne    1568 <fileglob_WildMatch+0x448>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%r14
movzbl -0x1(%r14),%eax
test   %al,%al
je     13f3 <fileglob_WildMatch+0x2d3>
cmp    $0x2f,%al
jne    13a0 <fileglob_WildMatch+0x280>
cmpb   $0x0,(%r14)
jne    1374 <fileglob_WildMatch+0x254>
jmp    13f7 <fileglob_WildMatch+0x2d7>
nopl   0x0(%rax)
cmp    $0x2f,%al
je     1403 <fileglob_WildMatch+0x2e3>
movsbl %cl,%edi
call   1040 <toupper@plt>
mov    %rax,%rbp
movsbl (%r14),%edi
call   1040 <toupper@plt>
cmp    %rax,%rbp
je     1340 <fileglob_WildMatch+0x220>
cmpb   $0x3f,(%rbx)
je     1340 <fileglob_WildMatch+0x220>
mov    %r12,%r14
add    $0x1,%r12
jmp    13fb <fileglob_WildMatch+0x2db>
add    $0xffffffffffffffff,%r14
lea    0x1(%r14),%r12
mov    %r15,%rbx
jmp    1348 <fileglob_WildMatch+0x228>
xor    %ebp,%ebp
cmp    $0x2f,%cl
jne    1568 <fileglob_WildMatch+0x448>
add    $0x1,%r14
cmpb   $0x0,0x1(%rbx)
jne    1422 <fileglob_WildMatch+0x302>
cmpb   $0x0,(%r14)
jne    1568 <fileglob_WildMatch+0x448>
add    $0x1,%rbx
mov    (%r14),%al
jmp    1335 <fileglob_WildMatch+0x215>
test   %al,%al
jne    1453 <fileglob_WildMatch+0x333>
jmp    1554 <fileglob_WildMatch+0x434>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rbx
cmpb   $0x0,0x1(%r14)
lea    0x1(%r14),%r14
je     1554 <fileglob_WildMatch+0x434>
movzbl (%rbx),%eax
cmp    $0x3f,%al
je     1440 <fileglob_WildMatch+0x320>
cmp    $0x2a,%al
je     14e5 <fileglob_WildMatch+0x3c5>
movsbl %al,%edi
call   1040 <toupper@plt>
mov    %rax,%rbp
movsbl (%r14),%edi
call   1040 <toupper@plt>
cmp    %rax,%rbp
je     1440 <fileglob_WildMatch+0x320>
jmp    1566 <fileglob_WildMatch+0x446>
xor    %ecx,%ecx
xor    %esi,%esi
jmp    14a4 <fileglob_WildMatch+0x384>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rbx
add    $0x1,%r14
movzbl (%r14),%eax
test   %al,%al
je     1554 <fileglob_WildMatch+0x434>
movzbl (%rbx),%edx
cmp    $0x2a,%dl
jne    14d0 <fileglob_WildMatch+0x3b0>
cmpb   $0x0,0x1(%rbx)
je     155f <fileglob_WildMatch+0x43f>
add    $0x1,%rbx
lea    0x1(%r14),%rcx
mov    %rbx,%rsi
jmp    1498 <fileglob_WildMatch+0x378>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    %al,%dl
je     1490 <fileglob_WildMatch+0x370>
cmp    $0x3f,%dl
je     1490 <fileglob_WildMatch+0x370>
mov    %rcx,%r14
add    $0x1,%rcx
mov    %rsi,%rbx
jmp    1498 <fileglob_WildMatch+0x378>
xor    %r15d,%r15d
xor    %r12d,%r12d
jmp    14fb <fileglob_WildMatch+0x3db>
add    $0x1,%rbx
add    $0x1,%r14
cmpb   $0x0,(%r14)
je     1554 <fileglob_WildMatch+0x434>
movzbl (%rbx),%eax
cmp    $0x2a,%al
jne    1520 <fileglob_WildMatch+0x400>
cmpb   $0x0,0x1(%rbx)
je     155f <fileglob_WildMatch+0x43f>
add    $0x1,%rbx
lea    0x1(%r14),%r15
mov    %rbx,%r12
jmp    14f5 <fileglob_WildMatch+0x3d5>
cs nopw 0x0(%rax,%rax,1)
nop
movsbl %al,%edi
call   1040 <toupper@plt>
mov    %rax,%rbp
movsbl (%r14),%edi
call   1040 <toupper@plt>
cmp    %rax,%rbp
je     14ed <fileglob_WildMatch+0x3cd>
cmpb   $0x3f,(%rbx)
je     14ed <fileglob_WildMatch+0x3cd>
mov    %r15,%r14
add    $0x1,%r15
mov    %r12,%rbx
jmp    14f5 <fileglob_WildMatch+0x3d5>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rbx
movzbl (%rbx),%eax
cmp    $0x2a,%al
je     1550 <fileglob_WildMatch+0x430>
test   %al,%al
jne    1566 <fileglob_WildMatch+0x446>
mov    $0x1,%ebp
jmp    1568 <fileglob_WildMatch+0x448>
xor    %ebp,%ebp
mov    %ebp,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @fileglob_WildMatch(i8* %0, i8* %1, i32 %2, i32 %3) {
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i8*
%11 = alloca i8*
store i8* %0, i8** %6
store i8* %1, i8** %7
store i32 %2, i32* %8
store i32 %3, i32* %9
store i8* null, i8** %10
store i8* null, i8** %11
%12 = load i32, i32* %8
%13 = icmp ne i32 %12, 0
br i1 %13, label %14, label %247
14: ; preds = %4
%15 = load i32, i32* %9
%16 = icmp ne i32 %15, 0
br i1 %16, label %17, label %166
17: ; preds = %14
br label %18
18: ; preds = %140, %17
br label %19
19: ; preds = %46, %18
%20 = load i8*, i8** %7
%21 = load i8, i8* %20
%22 = sext i8 %21 to i32
%23 = icmp ne i32 %22, 0
br i1 %23, label %24, label %29
24: ; preds = %19
%25 = load i8*, i8** %6
%26 = load i8, i8* %25
%27 = sext i8 %26 to i32
%28 = icmp ne i32 %27, 42
br label %29
29: ; preds = %24, %19
%30 = phi i1 [ false, %19 ], [ %28, %24 ]
br i1 %30, label %31, label %51
31: ; preds = %29
%32 = load i8*, i8** %6
%33 = load i8, i8* %32
%34 = sext i8 %33 to i32
%35 = icmp ne i32 %34, 63
br i1 %35, label %36, label %46
36: ; preds = %31
%37 = load i8*, i8** %6
%38 = load i8, i8* %37
%39 = call i64 @toupper(i8 signext %38)
%40 = load i8*, i8** %7
%41 = load i8, i8* %40
%42 = call i64 @toupper(i8 signext %41)
%43 = icmp ne i64 %39, %42
br i1 %43, label %44, label %45
44: ; preds = %36
store i32 0, i32* %5
br label %501
45: ; preds = %36
br label %46
46: ; preds = %45, %31
%47 = load i8*, i8** %6
%48 = getelementptr inbounds i8, i8* %47, i32 1
store i8* %48, i8** %6
%49 = load i8*, i8** %7
%50 = getelementptr inbounds i8, i8* %49, i32 1
store i8* %50, i8** %7
br label %19
51: ; preds = %29
br label %52
52: ; preds = %164, %51
%53 = load i8*, i8** %7
%54 = load i8, i8* %53
%55 = sext i8 %54 to i32
%56 = icmp ne i32 %55, 0
br i1 %56, label %57, label %165
57: ; preds = %52
%58 = load i8*, i8** %6
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = icmp eq i32 %60, 42
br i1 %61, label %62, label %114
62: ; preds = %57
%63 = load i8*, i8** %6
%64 = getelementptr inbounds i8, i8* %63, i32 1
store i8* %64, i8** %6
%65 = load i8*, i8** %6
%66 = load i8, i8* %65
%67 = sext i8 %66 to i32
%68 = icmp eq i32 %67, 42
br i1 %68, label %69, label %110
69: ; preds = %62
%70 = load i8*, i8** %6
%71 = getelementptr inbounds i8, i8* %70, i64 1
%72 = load i8, i8* %71
%73 = sext i8 %72 to i32
%74 = icmp eq i32 %73, 47
br i1 %74, label %75, label %78
75: ; preds = %69
%76 = load i8*, i8** %6
%77 = getelementptr inbounds i8, i8* %76, i64 2
store i8* %77, i8** %6
br label %78
78: ; preds = %75, %69
br label %79
79: ; preds = %108, %78
%80 = load i8*, i8** %7
%81 = load i8, i8* %80
%82 = sext i8 %81 to i32
%83 = icmp ne i32 %82, 0
br i1 %83, label %84, label %109
84: ; preds = %79
br label %85
85: ; preds = %98, %84
%86 = load i8*, i8** %7
%87 = load i8, i8* %86
%88 = sext i8 %87 to i32
%89 = icmp ne i32 %88, 0
br i1 %89, label %90, label %101
90: ; preds = %85
%91 = load i8*, i8** %7
%92 = load i8, i8* %91
%93 = sext i8 %92 to i32
%94 = icmp eq i32 %93, 47
br i1 %94, label %95, label %98
95: ; preds = %90
%96 = load i8*, i8** %7
%97 = getelementptr inbounds i8, i8* %96, i32 1
store i8* %97, i8** %7
br label %101
98: ; preds = %90
%99 = load i8*, i8** %7
%100 = getelementptr inbounds i8, i8* %99, i32 1
store i8* %100, i8** %7
br label %85
101: ; preds = %95, %85
%102 = load i8*, i8** %6
%103 = load i8*, i8** %7
%104 = load i32, i32* %8
%105 = call i32 @fileglob_WildMatch(i8* %102, i8* %103, i32 %104, i32 1)
%106 = icmp ne i32 %105, 0
br i1 %106, label %107, label %108
107: ; preds = %101
store i32 1, i32* %5
br label %501
108: ; preds = %101
br label %79
109: ; preds = %79
br label %110
110: ; preds = %109, %62
%111 = load i8*, i8** %6
store i8* %111, i8** %10
%112 = load i8*, i8** %7
%113 = getelementptr inbounds i8, i8* %112, i64 1
store i8* %113, i8** %11
br label %164
114: ; preds = %57
%115 = load i8*, i8** %7
%116 = load i8, i8* %115
%117 = sext i8 %116 to i32
%118 = icmp eq i32 %117, 47
br i1 %118, label %119, label %141
119: ; preds = %114
%120 = load i8*, i8** %6
%121 = load i8, i8* %120
%122 = sext i8 %121 to i32
%123 = icmp ne i32 %122, 47
br i1 %123, label %124, label %125
124: ; preds = %119
store i32 0, i32* %5
br label %501
125: ; preds = %119
%126 = load i8*, i8** %6
%127 = getelementptr inbounds i8, i8* %126, i32 1
store i8* %127, i8** %6
%128 = load i8*, i8** %7
%129 = getelementptr inbounds i8, i8* %128, i32 1
store i8* %129, i8** %7
%130 = load i8*, i8** %6
%131 = load i8, i8* %130
%132 = sext i8 %131 to i32
%133 = icmp eq i32 %132, 0
br i1 %133, label %134, label %140
134: ; preds = %125
%135 = load i8*, i8** %7
%136 = load i8, i8* %135
%137 = sext i8 %136 to i32
%138 = icmp ne i32 %137, 0
br i1 %138, label %139, label %140
139: ; preds = %134
store i32 0, i32* %5
br label %501
140: ; preds = %134, %125
br label %18
141: ; preds = %114
%142 = load i8*, i8** %6
%143 = load i8, i8* %142
%144 = call i64 @toupper(i8 signext %143)
%145 = load i8*, i8** %7
%146 = load i8, i8* %145
%147 = call i64 @toupper(i8 signext %146)
%148 = icmp eq i64 %144, %147
br i1 %148, label %154, label %149
149: ; preds = %141
%150 = load i8*, i8** %6
%151 = load i8, i8* %150
%152 = sext i8 %151 to i32
%153 = icmp eq i32 %152, 63
br i1 %153, label %154, label %159
154: ; preds = %149, %141
%155 = load i8*, i8** %6
%156 = getelementptr inbounds i8, i8* %155, i32 1
store i8* %156, i8** %6
%157 = load i8*, i8** %7
%158 = getelementptr inbounds i8, i8* %157, i32 1
store i8* %158, i8** %7
br label %163
159: ; preds = %149
%160 = load i8*, i8** %10
store i8* %160, i8** %6
%161 = load i8*, i8** %11
%162 = getelementptr inbounds i8, i8* %161, i32 1
store i8* %162, i8** %11
store i8* %161, i8** %7
br label %163
163: ; preds = %159, %154
br label %164
164: ; preds = %163, %110
br label %52
165: ; preds = %52
br label %246
166: ; preds = %14
br label %167
167: ; preds = %194, %166
%168 = load i8*, i8** %7
%169 = load i8, i8* %168
%170 = sext i8 %169 to i32
%171 = icmp ne i32 %170, 0
br i1 %171, label %172, label %177
172: ; preds = %167
%173 = load i8*, i8** %6
%174 = load i8, i8* %173
%175 = sext i8 %174 to i32
%176 = icmp ne i32 %175, 42
br label %177
177: ; preds = %172, %167
%178 = phi i1 [ false, %167 ], [ %176, %172 ]
br i1 %178, label %179, label %199
179: ; preds = %177
%180 = load i8*, i8** %6
%181 = load i8, i8* %180
%182 = sext i8 %181 to i32
%183 = icmp ne i32 %182, 63
br i1 %183, label %184, label %194
184: ; preds = %179
%185 = load i8*, i8** %6
%186 = load i8, i8* %185
%187 = sext i8 %186 to i32
%188 = load i8*, i8** %7
%189 = load i8, i8* %188
%190 = sext i8 %189 to i32
%191 = icmp ne i32 %187, %190
br i1 %191, label %192, label %193
192: ; preds = %184
store i32 0, i32* %5
br label %501
193: ; preds = %184
br label %194
194: ; preds = %193, %179
%195 = load i8*, i8** %6
%196 = getelementptr inbounds i8, i8* %195, i32 1
store i8* %196, i8** %6
%197 = load i8*, i8** %7
%198 = getelementptr inbounds i8, i8* %197, i32 1
store i8* %198, i8** %7
br label %167
199: ; preds = %177
br label %200
200: ; preds = %244, %199
%201 = load i8*, i8** %7
%202 = load i8, i8* %201
%203 = sext i8 %202 to i32
%204 = icmp ne i32 %203, 0
br i1 %204, label %205, label %245
205: ; preds = %200
%206 = load i8*, i8** %6
%207 = load i8, i8* %206
%208 = sext i8 %207 to i32
%209 = icmp eq i32 %208, 42
br i1 %209, label %210, label %221
210: ; preds = %205
%211 = load i8*, i8** %6
%212 = getelementptr inbounds i8, i8* %211, i32 1
store i8* %212, i8** %6
%213 = load i8, i8* %212
%214 = sext i8 %213 to i32
%215 = icmp eq i32 %214, 0
br i1 %215, label %216, label %217
216: ; preds = %210
store i32 1, i32* %5
br label %501
217: ; preds = %210
%218 = load i8*, i8** %6
store i8* %218, i8** %10
%219 = load i8*, i8** %7
%220 = getelementptr inbounds i8, i8* %219, i64 1
store i8* %220, i8** %11
br label %244
221: ; preds = %205
%222 = load i8*, i8** %6
%223 = load i8, i8* %222
%224 = sext i8 %223 to i32
%225 = load i8*, i8** %7
%226 = load i8, i8* %225
%227 = sext i8 %226 to i32
%228 = icmp eq i32 %224, %227
br i1 %228, label %234, label %229
229: ; preds = %221
%230 = load i8*, i8** %6
%231 = load i8, i8* %230
%232 = sext i8 %231 to i32
%233 = icmp eq i32 %232, 63
br i1 %233, label %234, label %239
234: ; preds = %229, %221
%235 = load i8*, i8** %6
%236 = getelementptr inbounds i8, i8* %235, i32 1
store i8* %236, i8** %6
%237 = load i8*, i8** %7
%238 = getelementptr inbounds i8, i8* %237, i32 1
store i8* %238, i8** %7
br label %243
239: ; preds = %229
%240 = load i8*, i8** %10
store i8* %240, i8** %6
%241 = load i8*, i8** %11
%242 = getelementptr inbounds i8, i8* %241, i32 1
store i8* %242, i8** %11
store i8* %241, i8** %7
br label %243
243: ; preds = %239, %234
br label %244
244: ; preds = %243, %217
br label %200
245: ; preds = %200
br label %246
246: ; preds = %245, %165
br label %480
247: ; preds = %4
%248 = load i32, i32* %9
%249 = icmp ne i32 %248, 0
br i1 %249, label %250, label %399
250: ; preds = %247
br label %251
251: ; preds = %373, %250
br label %252
252: ; preds = %279, %251
%253 = load i8*, i8** %7
%254 = load i8, i8* %253
%255 = sext i8 %254 to i32
%256 = icmp ne i32 %255, 0
br i1 %256, label %257, label %262
257: ; preds = %252
%258 = load i8*, i8** %6
%259 = load i8, i8* %258
%260 = sext i8 %259 to i32
%261 = icmp ne i32 %260, 42
br label %262
262: ; preds = %257, %252
%263 = phi i1 [ false, %252 ], [ %261, %257 ]
br i1 %263, label %264, label %284
264: ; preds = %262
%265 = load i8*, i8** %6
%266 = load i8, i8* %265
%267 = sext i8 %266 to i32
%268 = icmp ne i32 %267, 63
br i1 %268, label %269, label %279
269: ; preds = %264
%270 = load i8*, i8** %6
%271 = load i8, i8* %270
%272 = call i64 @toupper(i8 signext %271)
%273 = load i8*, i8** %7
%274 = load i8, i8* %273
%275 = call i64 @toupper(i8 signext %274)
%276 = icmp ne i64 %272, %275
br i1 %276, label %277, label %278
277: ; preds = %269
store i32 0, i32* %5
br label %501
278: ; preds = %269
br label %279
279: ; preds = %278, %264
%280 = load i8*, i8** %6
%281 = getelementptr inbounds i8, i8* %280, i32 1
store i8* %281, i8** %6
%282 = load i8*, i8** %7
%283 = getelementptr inbounds i8, i8* %282, i32 1
store i8* %283, i8** %7
br label %252
284: ; preds = %262
br label %285
285: ; preds = %397, %284
%286 = load i8*, i8** %7
%287 = load i8, i8* %286
%288 = sext i8 %287 to i32
%289 = icmp ne i32 %288, 0
br i1 %289, label %290, label %398
290: ; preds = %285
%291 = load i8*, i8** %6
%292 = load i8, i8* %291
%293 = sext i8 %292 to i32
%294 = icmp eq i32 %293, 42
br i1 %294, label %295, label %347
295: ; preds = %290
%296 = load i8*, i8** %6
%297 = getelementptr inbounds i8, i8* %296, i32 1
store i8* %297, i8** %6
%298 = load i8*, i8** %6
%299 = load i8, i8* %298
%300 = sext i8 %299 to i32
%301 = icmp eq i32 %300, 42
br i1 %301, label %302, label %343
302: ; preds = %295
%303 = load i8*, i8** %6
%304 = getelementptr inbounds i8, i8* %303, i64 1
%305 = load i8, i8* %304
%306 = sext i8 %305 to i32
%307 = icmp eq i32 %306, 47
br i1 %307, label %308, label %311
308: ; preds = %302
%309 = load i8*, i8** %6
%310 = getelementptr inbounds i8, i8* %309, i64 2
store i8* %310, i8** %6
br label %311
311: ; preds = %308, %302
br label %312
312: ; preds = %341, %311
%313 = load i8*, i8** %7
%314 = load i8, i8* %313
%315 = sext i8 %314 to i32
%316 = icmp ne i32 %315, 0
br i1 %316, label %317, label %342
317: ; preds = %312
%318 = load i8*, i8** %6
%319 = load i8*, i8** %7
%320 = load i32, i32* %8
%321 = call i32 @fileglob_WildMatch(i8* %318, i8* %319, i32 %320, i32 1)
%322 = icmp ne i32 %321, 0
br i1 %322, label %323, label %324
323: ; preds = %317
store i32 1, i32* %5
br label %501
324: ; preds = %317
br label %325
325: ; preds = %338, %324
%326 = load i8*, i8** %7
%327 = load i8, i8* %326
%328 = sext i8 %327 to i32
%329 = icmp ne i32 %328, 0
br i1 %329, label %330, label %341
330: ; preds = %325
%331 = load i8*, i8** %7
%332 = load i8, i8* %331
%333 = sext i8 %332 to i32
%334 = icmp eq i32 %333, 47
br i1 %334, label %335, label %338
335: ; preds = %330
%336 = load i8*, i8** %7
%337 = getelementptr inbounds i8, i8* %336, i32 1
store i8* %337, i8** %7
br label %341
338: ; preds = %330
%339 = load i8*, i8** %7
%340 = getelementptr inbounds i8, i8* %339, i32 1
store i8* %340, i8** %7
br label %325
341: ; preds = %335, %325
br label %312
342: ; preds = %312
br label %343
343: ; preds = %342, %295
%344 = load i8*, i8** %6
store i8* %344, i8** %10
%345 = load i8*, i8** %7
%346 = getelementptr inbounds i8, i8* %345, i64 1
store i8* %346, i8** %11
br label %397
347: ; preds = %290
%348 = load i8*, i8** %7
%349 = load i8, i8* %348
%350 = sext i8 %349 to i32
%351 = icmp eq i32 %350, 47
br i1 %351, label %352, label %374
352: ; preds = %347
%353 = load i8*, i8** %6
%354 = load i8, i8* %353
%355 = sext i8 %354 to i32
%356 = icmp ne i32 %355, 47
br i1 %356, label %357, label %358
357: ; preds = %352
store i32 0, i32* %5
br label %501
358: ; preds = %352
%359 = load i8*, i8** %6
%360 = getelementptr inbounds i8, i8* %359, i32 1
store i8* %360, i8** %6
%361 = load i8*, i8** %7
%362 = getelementptr inbounds i8, i8* %361, i32 1
store i8* %362, i8** %7
%363 = load i8*, i8** %6
%364 = load i8, i8* %363
%365 = sext i8 %364 to i32
%366 = icmp eq i32 %365, 0
br i1 %366, label %367, label %373
367: ; preds = %358
%368 = load i8*, i8** %7
%369 = load i8, i8* %368
%370 = sext i8 %369 to i32
%371 = icmp ne i32 %370, 0
br i1 %371, label %372, label %373
372: ; preds = %367
store i32 0, i32* %5
br label %501
373: ; preds = %367, %358
br label %251
374: ; preds = %347
%375 = load i8*, i8** %6
%376 = load i8, i8* %375
%377 = call i64 @toupper(i8 signext %376)
%378 = load i8*, i8** %7
%379 = load i8, i8* %378
%380 = call i64 @toupper(i8 signext %379)
%381 = icmp eq i64 %377, %380
br i1 %381, label %387, label %382
382: ; preds = %374
%383 = load i8*, i8** %6
%384 = load i8, i8* %383
%385 = sext i8 %384 to i32
%386 = icmp eq i32 %385, 63
br i1 %386, label %387, label %392
387: ; preds = %382, %374
%388 = load i8*, i8** %6
%389 = getelementptr inbounds i8, i8* %388, i32 1
store i8* %389, i8** %6
%390 = load i8*, i8** %7
%391 = getelementptr inbounds i8, i8* %390, i32 1
store i8* %391, i8** %7
br label %396
392: ; preds = %382
%393 = load i8*, i8** %10
store i8* %393, i8** %6
%394 = load i8*, i8** %11
%395 = getelementptr inbounds i8, i8* %394, i32 1
store i8* %395, i8** %11
store i8* %394, i8** %7
br label %396
396: ; preds = %392, %387
br label %397
397: ; preds = %396, %343
br label %285
398: ; preds = %285
br label %479
399: ; preds = %247
br label %400
400: ; preds = %427, %399
%401 = load i8*, i8** %7
%402 = load i8, i8* %401
%403 = sext i8 %402 to i32
%404 = icmp ne i32 %403, 0
br i1 %404, label %405, label %410
405: ; preds = %400
%406 = load i8*, i8** %6
%407 = load i8, i8* %406
%408 = sext i8 %407 to i32
%409 = icmp ne i32 %408, 42
br label %410
410: ; preds = %405, %400
%411 = phi i1 [ false, %400 ], [ %409, %405 ]
br i1 %411, label %412, label %432
412: ; preds = %410
%413 = load i8*, i8** %6
%414 = load i8, i8* %413
%415 = sext i8 %414 to i32
%416 = icmp ne i32 %415, 63
br i1 %416, label %417, label %427
417: ; preds = %412
%418 = load i8*, i8** %6
%419 = load i8, i8* %418
%420 = call i64 @toupper(i8 signext %419)
%421 = load i8*, i8** %7
%422 = load i8, i8* %421
%423 = call i64 @toupper(i8 signext %422)
%424 = icmp ne i64 %420, %423
br i1 %424, label %425, label %426
425: ; preds = %417
store i32 0, i32* %5
br label %501
426: ; preds = %417
br label %427
427: ; preds = %426, %412
%428 = load i8*, i8** %6
%429 = getelementptr inbounds i8, i8* %428, i32 1
store i8* %429, i8** %6
%430 = load i8*, i8** %7
%431 = getelementptr inbounds i8, i8* %430, i32 1
store i8* %431, i8** %7
br label %400
432: ; preds = %410
br label %433
433: ; preds = %477, %432
%434 = load i8*, i8** %7
%435 = load i8, i8* %434
%436 = sext i8 %435 to i32
%437 = icmp ne i32 %436, 0
br i1 %437, label %438, label %478
438: ; preds = %433
%439 = load i8*, i8** %6
%440 = load i8, i8* %439
%441 = sext i8 %440 to i32
%442 = icmp eq i32 %441, 42
br i1 %442, label %443, label %454
443: ; preds = %438
%444 = load i8*, i8** %6
%445 = getelementptr inbounds i8, i8* %444, i32 1
store i8* %445, i8** %6
%446 = load i8, i8* %445
%447 = sext i8 %446 to i32
%448 = icmp eq i32 %447, 0
br i1 %448, label %449, label %450
449: ; preds = %443
store i32 1, i32* %5
br label %501
450: ; preds = %443
%451 = load i8*, i8** %6
store i8* %451, i8** %10
%452 = load i8*, i8** %7
%453 = getelementptr inbounds i8, i8* %452, i64 1
store i8* %453, i8** %11
br label %477
454: ; preds = %438
%455 = load i8*, i8** %6
%456 = load i8, i8* %455
%457 = call i64 @toupper(i8 signext %456)
%458 = load i8*, i8** %7
%459 = load i8, i8* %458
%460 = call i64 @toupper(i8 signext %459)
%461 = icmp eq i64 %457, %460
br i1 %461, label %467, label %462
462: ; preds = %454
%463 = load i8*, i8** %6
%464 = load i8, i8* %463
%465 = sext i8 %464 to i32
%466 = icmp eq i32 %465, 63
br i1 %466, label %467, label %472
467: ; preds = %462, %454
%468 = load i8*, i8** %6
%469 = getelementptr inbounds i8, i8* %468, i32 1
store i8* %469, i8** %6
%470 = load i8*, i8** %7
%471 = getelementptr inbounds i8, i8* %470, i32 1
store i8* %471, i8** %7
br label %476
472: ; preds = %462
%473 = load i8*, i8** %10
store i8* %473, i8** %6
%474 = load i8*, i8** %11
%475 = getelementptr inbounds i8, i8* %474, i32 1
store i8* %475, i8** %11
store i8* %474, i8** %7
br label %476
476: ; preds = %472, %467
br label %477
477: ; preds = %476, %450
br label %433
478: ; preds = %433
br label %479
479: ; preds = %478, %398
br label %480
480: ; preds = %479, %246
br label %481
481: ; preds = %486, %480
%482 = load i8*, i8** %6
%483 = load i8, i8* %482
%484 = sext i8 %483 to i32
%485 = icmp eq i32 %484, 42
br i1 %485, label %486, label %489
486: ; preds = %481
%487 = load i8*, i8** %6
%488 = getelementptr inbounds i8, i8* %487, i32 1
store i8* %488, i8** %6
br label %481
489: ; preds = %481
%490 = load i8*, i8** %6
%491 = load i8, i8* %490
%492 = icmp ne i8 %491, 0
br i1 %492, label %498, label %493
493: ; preds = %489
%494 = load i8*, i8** %7
%495 = load i8, i8* %494
%496 = icmp ne i8 %495, 0
%497 = xor i1 %496, true
br label %498
498: ; preds = %493, %489
%499 = phi i1 [ false, %489 ], [ %497, %493 ]
%500 = zext i1 %499 to i32
store i32 %500, i32* %5
br label %501
501: ; preds = %498, %449, %425, %372, %357, %323, %277, %216, %192, %139, %124, %107, %44
%502 = load i32, i32* %5
ret i32 %502
}

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