#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 */
int /*<<< orphan*/ memcmp(char const *, char *, int);
int search_standard_typename(const char *p, size_t size) {
  if (size < 6 || p[size - 2] != '_' || p[size - 1] != 't')
    return -1;
  switch (p[4]) {
  case '1':
    if (size == 8 && !memcmp(p, "uint16", 6))
      return 20;
    break;
  case '2':
    if (size == 7 && !memcmp(p, "int32", 5))
      return 21;
    break;
  case '3':
    if (size == 8 && !memcmp(p, "uint32", 6))
      return 22;
    break;
  case '4':
    if (size == 7 && !memcmp(p, "int64", 5))
      return 23;
    break;
  case '6':
    if (size == 8 && !memcmp(p, "uint64", 6))
      return 24;
    if (size == 7 && !memcmp(p, "int16", 5))
      return 19;
    break;
  case '8':
    if (size == 7 && !memcmp(p, "uint8", 5))
      return 18;
    break;
  case 'a':
    if (size == 8 && !memcmp(p, "intmax", 6))
      return 46;
    break;
  case 'e':
    if (size == 7 && !memcmp(p, "ssize", 5))
      return 29;
    break;
  case 'f':
    if (size == 11 && !memcmp(p, "int_fast8", 9))
      return 38;
    if (size == 12 && !memcmp(p, "int_fast16", 10))
      return 40;
    if (size == 12 && !memcmp(p, "int_fast32", 10))
      return 42;
    if (size == 12 && !memcmp(p, "int_fast64", 10))
      return 44;
    break;
  case 'i':
    if (size == 9 && !memcmp(p, "ptrdiff", 7))
      return 27;
    break;
  case 'l':
    if (size == 12 && !memcmp(p, "int_least8", 10))
      return 30;
    if (size == 13 && !memcmp(p, "int_least16", 11))
      return 32;
    if (size == 13 && !memcmp(p, "int_least32", 11))
      return 34;
    if (size == 13 && !memcmp(p, "int_least64", 11))
      return 36;
    break;
  case 'm':
    if (size == 9 && !memcmp(p, "uintmax", 7))
      return 47;
    break;
  case 'p':
    if (size == 9 && !memcmp(p, "uintptr", 7))
      return 26;
    break;
  case 'r':
    if (size == 7 && !memcmp(p, "wchar", 5))
      return 16;
    break;
  case 't':
    if (size == 8 && !memcmp(p, "intptr", 6))
      return 25;
    break;
  case '_':
    if (size == 6 && !memcmp(p, "size", 4))
      return 28;
    if (size == 6 && !memcmp(p, "int8", 4))
      return 17;
    if (size >= 12) {
      switch (p[10]) {
      case '1':
        if (size == 14 && !memcmp(p, "uint_least16", 12))
          return 33;
        break;
      case '2':
        if (size == 13 && !memcmp(p, "uint_fast32", 11))
          return 43;
        break;
      case '3':
        if (size == 14 && !memcmp(p, "uint_least32", 12))
          return 35;
        break;
      case '4':
        if (size == 13 && !memcmp(p, "uint_fast64", 11))
          return 45;
        break;
      case '6':
        if (size == 14 && !memcmp(p, "uint_least64", 12))
          return 37;
        if (size == 13 && !memcmp(p, "uint_fast16", 11))
          return 41;
        break;
      case '8':
        if (size == 13 && !memcmp(p, "uint_least8", 11))
          return 31;
        break;
      case '_':
        if (size == 12 && !memcmp(p, "uint_fast8", 10))
          return 39;
        break;
      default:
        break;
      }
    }
    break;
  default:
    break;
  }
  return -1;
}


x86 assembly (clang, -O0):
<search_standard_typename>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
cmpq   $0x6,-0x18(%rbp)
jb     115d <search_standard_typename+0x4d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5f,%eax
jne    115d <search_standard_typename+0x4d>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
je     1169 <search_standard_typename+0x59>
movl   $0xffffffff,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
add    $0xffffffcf,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0x43,%eax
ja     18ed <search_standard_typename+0x7dd>
mov    -0x20(%rbp),%rax
lea    0xe72(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmpq   $0x8,-0x18(%rbp)
jne    11cc <search_standard_typename+0xbc>
mov    -0x10(%rbp),%rdi
lea    0x101f(%rip),%rsi
mov    $0x6,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    11cc <search_standard_typename+0xbc>
movl   $0x14,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x7,-0x18(%rbp)
jne    1206 <search_standard_typename+0xf6>
mov    -0x10(%rbp),%rdi
lea    0xfed(%rip),%rsi
mov    $0x5,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1206 <search_standard_typename+0xf6>
movl   $0x15,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x8,-0x18(%rbp)
jne    1240 <search_standard_typename+0x130>
mov    -0x10(%rbp),%rdi
lea    0xfb2(%rip),%rsi
mov    $0x6,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1240 <search_standard_typename+0x130>
movl   $0x16,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x7,-0x18(%rbp)
jne    127a <search_standard_typename+0x16a>
mov    -0x10(%rbp),%rdi
lea    0xf80(%rip),%rsi
mov    $0x5,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    127a <search_standard_typename+0x16a>
movl   $0x17,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x8,-0x18(%rbp)
jne    12b4 <search_standard_typename+0x1a4>
mov    -0x10(%rbp),%rdi
lea    0xf45(%rip),%rsi
mov    $0x6,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    12b4 <search_standard_typename+0x1a4>
movl   $0x18,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0x7,-0x18(%rbp)
jne    12e9 <search_standard_typename+0x1d9>
mov    -0x10(%rbp),%rdi
lea    0xf03(%rip),%rsi
mov    $0x5,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    12e9 <search_standard_typename+0x1d9>
movl   $0x13,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x7,-0x18(%rbp)
jne    1323 <search_standard_typename+0x213>
mov    -0x10(%rbp),%rdi
lea    0xedd(%rip),%rsi
mov    $0x5,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1323 <search_standard_typename+0x213>
movl   $0x12,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x8,-0x18(%rbp)
jne    135d <search_standard_typename+0x24d>
mov    -0x10(%rbp),%rdi
lea    0xeb8(%rip),%rsi
mov    $0x6,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    135d <search_standard_typename+0x24d>
movl   $0x2e,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x7,-0x18(%rbp)
jne    1397 <search_standard_typename+0x287>
mov    -0x10(%rbp),%rdi
lea    0xe6f(%rip),%rsi
mov    $0x5,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1397 <search_standard_typename+0x287>
movl   $0x1d,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0xb,-0x18(%rbp)
jne    13d1 <search_standard_typename+0x2c1>
mov    -0x10(%rbp),%rdi
lea    0xeb1(%rip),%rsi
mov    $0x9,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    13d1 <search_standard_typename+0x2c1>
movl   $0x26,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0xc,-0x18(%rbp)
jne    1406 <search_standard_typename+0x2f6>
mov    -0x10(%rbp),%rdi
lea    0xe64(%rip),%rsi
mov    $0xa,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1406 <search_standard_typename+0x2f6>
movl   $0x28,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0xc,-0x18(%rbp)
jne    143b <search_standard_typename+0x32b>
mov    -0x10(%rbp),%rdi
lea    0xdfd(%rip),%rsi
mov    $0xa,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    143b <search_standard_typename+0x32b>
movl   $0x2a,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0xc,-0x18(%rbp)
jne    1470 <search_standard_typename+0x360>
mov    -0x10(%rbp),%rdi
lea    0xde1(%rip),%rsi
mov    $0xa,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1470 <search_standard_typename+0x360>
movl   $0x2c,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x9,-0x18(%rbp)
jne    14aa <search_standard_typename+0x39a>
mov    -0x10(%rbp),%rdi
lea    0xd62(%rip),%rsi
mov    $0x7,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    14aa <search_standard_typename+0x39a>
movl   $0x1b,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0xc,-0x18(%rbp)
jne    14e4 <search_standard_typename+0x3d4>
mov    -0x10(%rbp),%rdi
lea    0xd92(%rip),%rsi
mov    $0xa,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    14e4 <search_standard_typename+0x3d4>
movl   $0x1e,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0xd,-0x18(%rbp)
jne    1519 <search_standard_typename+0x409>
mov    -0x10(%rbp),%rdi
lea    0xd12(%rip),%rsi
mov    $0xb,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1519 <search_standard_typename+0x409>
movl   $0x20,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0xd,-0x18(%rbp)
jne    154e <search_standard_typename+0x43e>
mov    -0x10(%rbp),%rdi
lea    0xcf6(%rip),%rsi
mov    $0xb,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    154e <search_standard_typename+0x43e>
movl   $0x22,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0xd,-0x18(%rbp)
jne    1583 <search_standard_typename+0x473>
mov    -0x10(%rbp),%rdi
lea    0xcda(%rip),%rsi
mov    $0xb,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1583 <search_standard_typename+0x473>
movl   $0x24,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x9,-0x18(%rbp)
jne    15bd <search_standard_typename+0x4ad>
mov    -0x10(%rbp),%rdi
lea    0xc57(%rip),%rsi
mov    $0x7,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    15bd <search_standard_typename+0x4ad>
movl   $0x2f,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x9,-0x18(%rbp)
jne    15f7 <search_standard_typename+0x4e7>
mov    -0x10(%rbp),%rdi
lea    0xc25(%rip),%rsi
mov    $0x7,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    15f7 <search_standard_typename+0x4e7>
movl   $0x1a,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x7,-0x18(%rbp)
jne    1631 <search_standard_typename+0x521>
mov    -0x10(%rbp),%rdi
lea    0xbf3(%rip),%rsi
mov    $0x5,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1631 <search_standard_typename+0x521>
movl   $0x10,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x8,-0x18(%rbp)
jne    166b <search_standard_typename+0x55b>
mov    -0x10(%rbp),%rdi
lea    0xbb2(%rip),%rsi
mov    $0x6,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    166b <search_standard_typename+0x55b>
movl   $0x19,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18f2 <search_standard_typename+0x7e2>
cmpq   $0x6,-0x18(%rbp)
jne    16a5 <search_standard_typename+0x595>
mov    -0x10(%rbp),%rdi
lea    0xb62(%rip),%rsi
mov    $0x4,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    16a5 <search_standard_typename+0x595>
movl   $0x1c,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0x6,-0x18(%rbp)
jne    16da <search_standard_typename+0x5ca>
mov    -0x10(%rbp),%rdi
lea    0xb27(%rip),%rsi
mov    $0x4,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    16da <search_standard_typename+0x5ca>
movl   $0x11,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0xc,-0x18(%rbp)
jb     18e8 <search_standard_typename+0x7d8>
mov    -0x10(%rbp),%rax
movsbl 0xa(%rax),%eax
add    $0xffffffcf,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x2e,%eax
ja     18de <search_standard_typename+0x7ce>
mov    -0x28(%rbp),%rax
lea    0xa06(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmpq   $0xe,-0x18(%rbp)
jne    1748 <search_standard_typename+0x638>
mov    -0x10(%rbp),%rdi
lea    0xae2(%rip),%rsi
mov    $0xc,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1748 <search_standard_typename+0x638>
movl   $0x21,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18e3 <search_standard_typename+0x7d3>
cmpq   $0xd,-0x18(%rbp)
jne    1782 <search_standard_typename+0x672>
mov    -0x10(%rbp),%rdi
lea    0xab5(%rip),%rsi
mov    $0xb,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1782 <search_standard_typename+0x672>
movl   $0x2b,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18e3 <search_standard_typename+0x7d3>
cmpq   $0xe,-0x18(%rbp)
jne    17bc <search_standard_typename+0x6ac>
mov    -0x10(%rbp),%rdi
lea    0xa87(%rip),%rsi
mov    $0xc,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    17bc <search_standard_typename+0x6ac>
movl   $0x23,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18e3 <search_standard_typename+0x7d3>
cmpq   $0xd,-0x18(%rbp)
jne    17f6 <search_standard_typename+0x6e6>
mov    -0x10(%rbp),%rdi
lea    0xa5a(%rip),%rsi
mov    $0xb,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    17f6 <search_standard_typename+0x6e6>
movl   $0x2d,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18e3 <search_standard_typename+0x7d3>
cmpq   $0xe,-0x18(%rbp)
jne    1830 <search_standard_typename+0x720>
mov    -0x10(%rbp),%rdi
lea    0xa2c(%rip),%rsi
mov    $0xc,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1830 <search_standard_typename+0x720>
movl   $0x25,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
cmpq   $0xd,-0x18(%rbp)
jne    1865 <search_standard_typename+0x755>
mov    -0x10(%rbp),%rdi
lea    0xa04(%rip),%rsi
mov    $0xb,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    1865 <search_standard_typename+0x755>
movl   $0x29,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18e3 <search_standard_typename+0x7d3>
cmpq   $0xd,-0x18(%rbp)
jne    189f <search_standard_typename+0x78f>
mov    -0x10(%rbp),%rdi
lea    0x9d6(%rip),%rsi
mov    $0xb,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    189f <search_standard_typename+0x78f>
movl   $0x1f,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18e3 <search_standard_typename+0x7d3>
cmpq   $0xc,-0x18(%rbp)
jne    18d9 <search_standard_typename+0x7c9>
mov    -0x10(%rbp),%rdi
lea    0x9a8(%rip),%rsi
mov    $0xa,%edx
call   1030 <memcmp@plt>
cmp    $0x0,%eax
jne    18d9 <search_standard_typename+0x7c9>
movl   $0x27,-0x4(%rbp)
jmp    18f9 <search_standard_typename+0x7e9>
jmp    18e3 <search_standard_typename+0x7d3>
jmp    18e3 <search_standard_typename+0x7d3>
jmp    18e8 <search_standard_typename+0x7d8>
jmp    18f2 <search_standard_typename+0x7e2>
jmp    18f2 <search_standard_typename+0x7e2>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<search_standard_typename>:
push   %rbp
push   %rbx
push   %rax
mov    $0xffffffff,%ebp
cmp    $0x6,%rsi
jb     15dc <search_standard_typename+0x4cc>
mov    %rdi,%rbx
cmpb   $0x5f,-0x2(%rsi,%rdi,1)
jne    15dc <search_standard_typename+0x4cc>
cmpb   $0x74,-0x1(%rsi,%rbx,1)
jne    15dc <search_standard_typename+0x4cc>
movsbl 0x4(%rbx),%eax
add    $0xffffffcf,%eax
cmp    $0x43,%eax
ja     15dc <search_standard_typename+0x4cc>
lea    0xeae(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmp    $0x8,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0x1060(%rip),%rsi
mov    %rbx,%rdi
mov    $0x6,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x14,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x7,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0x1038(%rip),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x15,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x8,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0x1007(%rip),%rsi
mov    %rbx,%rdi
mov    $0x6,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x16,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x7,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xfe5(%rip),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x12,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x6,%rsi
jne    1495 <search_standard_typename+0x385>
lea    0xfbc(%rip),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
je     15bb <search_standard_typename+0x4ab>
lea    0xf9a(%rip),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x11,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x8,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xf7e(%rip),%rsi
mov    %rbx,%rdi
mov    $0x6,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x2e,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x9,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xf45(%rip),%rsi
mov    %rbx,%rdi
mov    $0x7,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x1b,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0xd,%rsi
je     14ef <search_standard_typename+0x3df>
cmp    $0xc,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xf75(%rip),%rsi
mov    %rbx,%rdi
mov    $0xa,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x1e,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x9,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xee3(%rip),%rsi
mov    %rbx,%rdi
mov    $0x7,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x2f,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x9,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xebb(%rip),%rsi
mov    %rbx,%rdi
mov    $0x7,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x1a,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x7,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xe93(%rip),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x10,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x8,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xe5c(%rip),%rsi
mov    %rbx,%rdi
mov    $0x6,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x19,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x7,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xe09(%rip),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x17,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x7,%rsi
je     154d <search_standard_typename+0x43d>
cmp    $0x8,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xdce(%rip),%rsi
mov    %rbx,%rdi
mov    $0x6,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x18,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0x7,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xdab(%rip),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x1d,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0xc,%rsi
je     156c <search_standard_typename+0x45c>
cmp    $0xb,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xded(%rip),%rsi
mov    %rbx,%rdi
mov    $0x9,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x26,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0xc,%rsi
jb     15dc <search_standard_typename+0x4cc>
movsbl 0xa(%rbx),%eax
add    $0xffffffcf,%eax
cmp    $0x2e,%eax
ja     15dc <search_standard_typename+0x4cc>
lea    0xc5a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmp    $0xe,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xd3b(%rip),%rsi
mov    %rbx,%rdi
mov    $0xc,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x21,%ebp
jmp    15dc <search_standard_typename+0x4cc>
lea    0xd16(%rip),%rsi
mov    %rbx,%rdi
mov    $0xb,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
je     15c2 <search_standard_typename+0x4b2>
lea    0xd13(%rip),%rsi
mov    %rbx,%rdi
mov    $0xb,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
je     15d0 <search_standard_typename+0x4c0>
lea    0xd10(%rip),%rsi
mov    %rbx,%rdi
mov    $0xb,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x24,%ebp
jmp    15dc <search_standard_typename+0x4cc>
lea    0xc79(%rip),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x13,%ebp
jmp    15dc <search_standard_typename+0x4cc>
lea    0xcd8(%rip),%rsi
mov    %rbx,%rdi
mov    $0xa,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
je     15c9 <search_standard_typename+0x4b9>
lea    0xc8e(%rip),%rsi
mov    %rbx,%rdi
mov    $0xa,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
je     15d7 <search_standard_typename+0x4c7>
lea    0xc8f(%rip),%rsi
mov    %rbx,%rdi
mov    $0xa,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x2c,%ebp
jmp    15dc <search_standard_typename+0x4cc>
mov    $0x1c,%ebp
jmp    15dc <search_standard_typename+0x4cc>
mov    $0x20,%ebp
jmp    15dc <search_standard_typename+0x4cc>
mov    $0x28,%ebp
jmp    15dc <search_standard_typename+0x4cc>
mov    $0x22,%ebp
jmp    15dc <search_standard_typename+0x4cc>
mov    $0x2a,%ebp
mov    %ebp,%eax
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret
cmp    $0xd,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xc26(%rip),%rsi
mov    %rbx,%rdi
mov    $0xb,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x2b,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0xe,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xc0d(%rip),%rsi
mov    %rbx,%rdi
mov    $0xc,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x23,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0xd,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xc1a(%rip),%rsi
mov    %rbx,%rdi
mov    $0xb,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x1f,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0xc,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xc01(%rip),%rsi
mov    %rbx,%rdi
mov    $0xa,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x27,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0xd,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xba0(%rip),%rsi
mov    %rbx,%rdi
mov    $0xb,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x2d,%ebp
jmp    15dc <search_standard_typename+0x4cc>
cmp    $0xd,%rsi
je     16e6 <search_standard_typename+0x5d6>
cmp    $0xe,%rsi
jne    15dc <search_standard_typename+0x4cc>
lea    0xb76(%rip),%rsi
mov    %rbx,%rdi
mov    $0xc,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x25,%ebp
jmp    15dc <search_standard_typename+0x4cc>
lea    0xb5d(%rip),%rsi
mov    %rbx,%rdi
mov    $0xb,%edx
call   1030 <memcmp@plt>
test   %eax,%eax
jne    15dc <search_standard_typename+0x4cc>
mov    $0x29,%ebp
jmp    15dc <search_standard_typename+0x4cc>

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

LLVM IR (-O2):
@.str = [7 x i8] c"uint16\00"
@.str.1 = [6 x i8] c"int32\00"
@.str.2 = [7 x i8] c"uint32\00"
@.str.3 = [6 x i8] c"int64\00"
@.str.4 = [7 x i8] c"uint64\00"
@.str.5 = [6 x i8] c"int16\00"
@.str.6 = [6 x i8] c"uint8\00"
@.str.7 = [7 x i8] c"intmax\00"
@.str.8 = [6 x i8] c"ssize\00"
@.str.9 = [10 x i8] c"int_fast8\00"
@.str.10 = [11 x i8] c"int_fast16\00"
@.str.11 = [11 x i8] c"int_fast32\00"
@.str.12 = [11 x i8] c"int_fast64\00"
@.str.13 = [8 x i8] c"ptrdiff\00"
@.str.14 = [11 x i8] c"int_least8\00"
@.str.15 = [12 x i8] c"int_least16\00"
@.str.16 = [12 x i8] c"int_least32\00"
@.str.17 = [12 x i8] c"int_least64\00"
@.str.18 = [8 x i8] c"uintmax\00"
@.str.19 = [8 x i8] c"uintptr\00"
@.str.20 = [6 x i8] c"wchar\00"
@.str.21 = [7 x i8] c"intptr\00"
@.str.22 = [5 x i8] c"size\00"
@.str.23 = [5 x i8] c"int8\00"
@.str.24 = [13 x i8] c"uint_least16\00"
@.str.25 = [12 x i8] c"uint_fast32\00"
@.str.26 = [13 x i8] c"uint_least32\00"
@.str.27 = [12 x i8] c"uint_fast64\00"
@.str.28 = [13 x i8] c"uint_least64\00"
@.str.29 = [12 x i8] c"uint_fast16\00"
@.str.30 = [12 x i8] c"uint_least8\00"
@.str.31 = [11 x i8] c"uint_fast8\00"
define i32 @search_standard_typename(i8* %0, i64 %1) {
%3 = icmp ult i64 %1, 6
br i1 %3, label %163, label %4
4: ; preds = %2
%5 = add i64 %1, -2
%6 = getelementptr inbounds i8, i8* %0, i64 %5
%7 = load i8, i8* %6
%8 = icmp eq i8 %7, 95
br i1 %8, label %9, label %163
9: ; preds = %4
%10 = add i64 %1, -1
%11 = getelementptr inbounds i8, i8* %0, i64 %10
%12 = load i8, i8* %11
%13 = icmp eq i8 %12, 116
br i1 %13, label %14, label %163
14: ; preds = %9
%15 = getelementptr inbounds i8, i8* %0, i64 4
%16 = load i8, i8* %15
%17 = sext i8 %16 to i32
switch i32 %17, label %162 [
i32 49, label %18
i32 50, label %23
i32 51, label %28
i32 52, label %33
i32 54, label %38
i32 56, label %45
i32 97, label %50
i32 101, label %55
i32 102, label %60
i32 105, label %73
i32 108, label %78
i32 109, label %91
i32 112, label %96
i32 114, label %101
i32 116, label %106
i32 95, label %111
]
18: ; preds = %14
%19 = icmp eq i64 %1, 8
br i1 %19, label %20, label %162
20: ; preds = %18
%21 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 6)
%22 = icmp eq i32 %21, 0
br i1 %22, label %163, label %162
23: ; preds = %14
%24 = icmp eq i64 %1, 7
br i1 %24, label %25, label %162
25: ; preds = %23
%26 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 5)
%27 = icmp eq i32 %26, 0
br i1 %27, label %163, label %162
28: ; preds = %14
%29 = icmp eq i64 %1, 8
br i1 %29, label %30, label %162
30: ; preds = %28
%31 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i32 6)
%32 = icmp eq i32 %31, 0
br i1 %32, label %163, label %162
33: ; preds = %14
%34 = icmp eq i64 %1, 7
br i1 %34, label %35, label %162
35: ; preds = %33
%36 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0), i32 5)
%37 = icmp eq i32 %36, 0
br i1 %37, label %163, label %162
38: ; preds = %14
switch i64 %1, label %162 [
i64 8, label %39
i64 7, label %42
]
39: ; preds = %38
%40 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i32 6)
%41 = icmp eq i32 %40, 0
br i1 %41, label %163, label %162
42: ; preds = %38
%43 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i32 5)
%44 = icmp eq i32 %43, 0
br i1 %44, label %163, label %162
45: ; preds = %14
%46 = icmp eq i64 %1, 7
br i1 %46, label %47, label %162
47: ; preds = %45
%48 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), i32 5)
%49 = icmp eq i32 %48, 0
br i1 %49, label %163, label %162
50: ; preds = %14
%51 = icmp eq i64 %1, 8
br i1 %51, label %52, label %162
52: ; preds = %50
%53 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0), i32 6)
%54 = icmp eq i32 %53, 0
br i1 %54, label %163, label %162
55: ; preds = %14
%56 = icmp eq i64 %1, 7
br i1 %56, label %57, label %162
57: ; preds = %55
%58 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32 5)
%59 = icmp eq i32 %58, 0
br i1 %59, label %163, label %162
60: ; preds = %14
switch i64 %1, label %162 [
i64 11, label %61
i64 12, label %64
]
61: ; preds = %60
%62 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i32 9)
%63 = icmp eq i32 %62, 0
br i1 %63, label %163, label %162
64: ; preds = %60
%65 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.10, i64 0, i64 0), i32 10)
%66 = icmp eq i32 %65, 0
br i1 %66, label %163, label %67
67: ; preds = %64
%68 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.11, i64 0, i64 0), i32 10)
%69 = icmp eq i32 %68, 0
br i1 %69, label %163, label %70
70: ; preds = %67
%71 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.12, i64 0, i64 0), i32 10)
%72 = icmp eq i32 %71, 0
br i1 %72, label %163, label %162
73: ; preds = %14
%74 = icmp eq i64 %1, 9
br i1 %74, label %75, label %162
75: ; preds = %73
%76 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.13, i64 0, i64 0), i32 7)
%77 = icmp eq i32 %76, 0
br i1 %77, label %163, label %162
78: ; preds = %14
switch i64 %1, label %162 [
i64 12, label %79
i64 13, label %82
]
79: ; preds = %78
%80 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.14, i64 0, i64 0), i32 10)
%81 = icmp eq i32 %80, 0
br i1 %81, label %163, label %162
82: ; preds = %78
%83 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.15, i64 0, i64 0), i32 11)
%84 = icmp eq i32 %83, 0
br i1 %84, label %163, label %85
85: ; preds = %82
%86 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0), i32 11)
%87 = icmp eq i32 %86, 0
br i1 %87, label %163, label %88
88: ; preds = %85
%89 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.17, i64 0, i64 0), i32 11)
%90 = icmp eq i32 %89, 0
br i1 %90, label %163, label %162
91: ; preds = %14
%92 = icmp eq i64 %1, 9
br i1 %92, label %93, label %162
93: ; preds = %91
%94 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.18, i64 0, i64 0), i32 7)
%95 = icmp eq i32 %94, 0
br i1 %95, label %163, label %162
96: ; preds = %14
%97 = icmp eq i64 %1, 9
br i1 %97, label %98, label %162
98: ; preds = %96
%99 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.19, i64 0, i64 0), i32 7)
%100 = icmp eq i32 %99, 0
br i1 %100, label %163, label %162
101: ; preds = %14
%102 = icmp eq i64 %1, 7
br i1 %102, label %103, label %162
103: ; preds = %101
%104 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), i32 5)
%105 = icmp eq i32 %104, 0
br i1 %105, label %163, label %162
106: ; preds = %14
%107 = icmp eq i64 %1, 8
br i1 %107, label %108, label %162
108: ; preds = %106
%109 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.21, i64 0, i64 0), i32 6)
%110 = icmp eq i32 %109, 0
br i1 %110, label %163, label %162
111: ; preds = %14
%112 = icmp eq i64 %1, 6
br i1 %112, label %113, label %119
113: ; preds = %111
%114 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), i32 4)
%115 = icmp eq i32 %114, 0
br i1 %115, label %163, label %116
116: ; preds = %113
%117 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0), i32 4)
%118 = icmp eq i32 %117, 0
br i1 %118, label %163, label %162
119: ; preds = %111
%120 = icmp ugt i64 %1, 11
br i1 %120, label %121, label %162
121: ; preds = %119
%122 = getelementptr inbounds i8, i8* %0, i64 10
%123 = load i8, i8* %122
%124 = sext i8 %123 to i32
switch i32 %124, label %162 [
i32 49, label %125
i32 50, label %130
i32 51, label %135
i32 52, label %140
i32 54, label %145
i32 56, label %152
i32 95, label %157
]
125: ; preds = %121
%126 = icmp eq i64 %1, 14
br i1 %126, label %127, label %162
127: ; preds = %125
%128 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.24, i64 0, i64 0), i32 12)
%129 = icmp eq i32 %128, 0
br i1 %129, label %163, label %162
130: ; preds = %121
%131 = icmp eq i64 %1, 13
br i1 %131, label %132, label %162
132: ; preds = %130
%133 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.25, i64 0, i64 0), i32 11)
%134 = icmp eq i32 %133, 0
br i1 %134, label %163, label %162
135: ; preds = %121
%136 = icmp eq i64 %1, 14
br i1 %136, label %137, label %162
137: ; preds = %135
%138 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0), i32 12)
%139 = icmp eq i32 %138, 0
br i1 %139, label %163, label %162
140: ; preds = %121
%141 = icmp eq i64 %1, 13
br i1 %141, label %142, label %162
142: ; preds = %140
%143 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.27, i64 0, i64 0), i32 11)
%144 = icmp eq i32 %143, 0
br i1 %144, label %163, label %162
145: ; preds = %121
switch i64 %1, label %162 [
i64 14, label %146
i64 13, label %149
]
146: ; preds = %145
%147 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.28, i64 0, i64 0), i32 12)
%148 = icmp eq i32 %147, 0
br i1 %148, label %163, label %162
149: ; preds = %145
%150 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.29, i64 0, i64 0), i32 11)
%151 = icmp eq i32 %150, 0
br i1 %151, label %163, label %162
152: ; preds = %121
%153 = icmp eq i64 %1, 13
br i1 %153, label %154, label %162
154: ; preds = %152
%155 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.30, i64 0, i64 0), i32 11)
%156 = icmp eq i32 %155, 0
br i1 %156, label %163, label %162
157: ; preds = %121
%158 = icmp eq i64 %1, 12
br i1 %158, label %159, label %162
159: ; preds = %157
%160 = tail call i32 @memcmp(i8* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.31, i64 0, i64 0), i32 10)
%161 = icmp eq i32 %160, 0
br i1 %161, label %163, label %162
162: ; preds = %78, %60, %116, %79, %61, %146, %39, %145, %38, %14, %119, %121, %157, %159, %152, %154, %149, %140, %142, %135, %137, %130, %132, %125, %127, %106, %108, %101, %103, %96, %98, %91, %93, %88, %73, %75, %70, %55, %57, %50, %52, %45, %47, %42, %33, %35, %28, %30, %23, %25, %18, %20
br label %163
163: ; preds = %159, %154, %149, %146, %142, %137, %132, %127, %116, %113, %108, %103, %98, %93, %88, %85, %82, %79, %75, %70, %67, %64, %61, %57, %52, %47, %42, %39, %35, %30, %25, %20, %2, %4, %9, %162
%164 = phi i32 [ -1, %162 ], [ -1, %9 ], [ -1, %4 ], [ -1, %2 ], [ 20, %20 ], [ 21, %25 ], [ 22, %30 ], [ 23, %35 ], [ 24, %39 ], [ 19, %42 ], [ 18, %47 ], [ 46, %52 ], [ 29, %57 ], [ 38, %61 ], [ 40, %64 ], [ 42, %67 ], [ 44, %70 ], [ 27, %75 ], [ 30, %79 ], [ 32, %82 ], [ 34, %85 ], [ 36, %88 ], [ 47, %93 ], [ 26, %98 ], [ 16, %103 ], [ 25, %108 ], [ 28, %113 ], [ 17, %116 ], [ 33, %127 ], [ 43, %132 ], [ 35, %137 ], [ 45, %142 ], [ 37, %146 ], [ 41, %149 ], [ 31, %154 ], [ 39, %159 ]
ret i32 %164
}