findtoken(p, tokenp, len) char *p, *tokenp;
short *len;
{
  char *btokenp;
  short count;
  int iv;
  float fv;
  btokenp = tokenp;
  *len = 0;
  count = 0;
  while (*p == ' ') {
    p++;
    *len += 1;
  }
  switch (*p) {
  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9':
    while (isdigit(*p)) {
      *tokenp = *p;
      tokenp++;
      p++;
      *len += 1;
      count++;
      if (count >= 100)
        return (-501);
    }
    if (*p == '.') {
      do {
        *tokenp = *p;
        tokenp++;
        p++;
        *len += 1;
        count++;
        if (count >= 100)
          return (-501);
      } while (isdigit(*p));
    }
    *tokenp = '\0';
    return (101);
  case '=':
    *len += 1;
    return (501);
  case '>':
    p++;
    if (*p == '=') {
      *len += 2;
      return (502);
    }
    *len += 1;
    return (503);
  case '<':
    p++;
    if (*p == '=') {
      *len += 2;
      return (504);
    } else if (*p == '>') {
      *len += 2;
      return (505);
    }
    *len += 1;
    return (506);
  case '.':
    *len += 1;
    return (115);
  case ',':
    *len += 1;
    return (100);
  case ':':
    *len += 1;
    return (108);
  case '(':
    *len += 1;
    return (109);
  case ')':
    *len += 1;
    return (110);
  case '^':
    *len += 1;
    return (111);
  case '[':
    *len += 1;
    return (112);
  case ']':
    *len += 1;
    return (113);
  case '"':
    p++;
    *len += 1;
    while (*p != '"') {
      if (*p == ';')
        return (-502);
      *tokenp = *p;
      tokenp++;
      p++;
      *len += 1;
      count++;
      if (count >= 100)
        return (-501);
    }
    *tokenp = '\0';
    *len += 1;
    return (114);
  case ';':
    return (116);
  default:
    while (isalpha(*p) || isdigit(*p) || *p == '/' || *p == '-') {
      *tokenp = *p;
      tokenp++;
      p++;
      *len += 1;
      count++;
      if (count >= 100)
        return (-501);
    }
    *tokenp = '\0';
    if (strcmp(btokenp, "createdb") == 0)
      return (201);
    if (strcmp(btokenp, "destroydb") == 0)
      return (202);
    if (strcmp(btokenp, "opendb") == 0)
      return (203);
    if (strcmp(btokenp, "closedb") == 0)
      return (204);
    if (strcmp(btokenp, "create") == 0)
      return (205);
    if (strcmp(btokenp, "destroy") == 0)
      return (206);
    if (strcmp(btokenp, "load") == 0)
      return (207);
    if (strcmp(btokenp, "print") == 0)
      return (208);
    if (strcmp(btokenp, "sort") == 0)
      return (209);
    if (strcmp(btokenp, "quit") == 0)
      return (210);
    if (strcmp(btokenp, "select") == 0)
      return (211);
    if (strcmp(btokenp, "project") == 0)
      return (212);
    if (strcmp(btokenp, "join") == 0)
      return (213);
    if (strcmp(btokenp, "insert") == 0)
      return (214);
    if (strcmp(btokenp, "delete") == 0)
      return (215);
    if (strcmp(btokenp, "intersect") == 0)
      return (216);
    if (strcmp(btokenp, "union") == 0)
      return (217);
    if (strcmp(btokenp, "on") == 0)
      return (301);
    if (strcmp(btokenp, "key") == 0)
      return (302);
    if (strcmp(btokenp, "size") == 0)
      return (303);
    if (strcmp(btokenp, "is") == 0)
      return (304);
    if (strcmp(btokenp, "from") == 0)
      return (305);
    if (strcmp(btokenp, "into") == 0)
      return (306);
    if (strcmp(btokenp, "to") == 0)
      return (307);
    if (strcmp(btokenp, "where") == 0)
      return (308);
    if (strcmp(btokenp, "and") == 0)
      return (309);
    if (strcmp(btokenp, "help") == 0)
      return (218);
    if (strcmp(btokenp, "buildindex") == 0)
      return (219);
    if (strcmp(btokenp, "dropindex") == 0)
      return (220);
    if (strcmp(btokenp, "for") == 0)
      return (310);
    if (strcmp(btokenp, "") == 0)
      return (-504);
    return (117);
  }
}


x86 assembly (clang, -O0):
<findtoken>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
movw   $0x0,(%rax)
movw   $0x0,-0x2a(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    1189 <findtoken+0x59>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
jmp    115b <findtoken+0x2b>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
add    $0xffffffde,%eax
mov    %eax,%ecx
mov    %rcx,-0x40(%rbp)
sub    $0x3c,%eax
ja     153f <findtoken+0x40f>
mov    -0x40(%rbp),%rax
lea    0xe53(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    11bb <findtoken+0x8b>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     122b <findtoken+0xfb>
mov    -0x10(%rbp),%rax
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
mov    -0x2a(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x2a(%rbp)
movswl -0x2a(%rbp),%eax
cmp    $0x64,%eax
jl     1226 <findtoken+0xf6>
movl   $0xfffffe0b,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
jmp    11bb <findtoken+0x8b>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
jne    12b5 <findtoken+0x185>
jmp    1240 <findtoken+0x110>
mov    -0x10(%rbp),%rax
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
mov    -0x2a(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x2a(%rbp)
movswl -0x2a(%rbp),%eax
cmp    $0x64,%eax
jl     1296 <findtoken+0x166>
movl   $0xfffffe0b,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
jmp    129b <findtoken+0x16b>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
jne    1240 <findtoken+0x110>
jmp    12b5 <findtoken+0x185>
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
movl   $0x65,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x1f5,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1316 <findtoken+0x1e6>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x2,%ecx
mov    %cx,(%rax)
movl   $0x1f6,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x1f7,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1364 <findtoken+0x234>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x2,%ecx
mov    %cx,(%rax)
movl   $0x1f8,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
jne    138d <findtoken+0x25d>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x2,%ecx
mov    %cx,(%rax)
movl   $0x1f9,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
jmp    1392 <findtoken+0x262>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x1fa,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x73,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x64,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x6c,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x6d,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x6e,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x6f,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x70,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x71,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
je     1513 <findtoken+0x3e3>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
jne    14b8 <findtoken+0x388>
movl   $0xfffffe0a,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x10(%rbp),%rax
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
mov    -0x2a(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x2a(%rbp)
movswl -0x2a(%rbp),%eax
cmp    $0x64,%eax
jl     150e <findtoken+0x3de>
movl   $0xfffffe0b,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
jmp    148c <findtoken+0x35c>
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
movl   $0x72,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
movl   $0x74,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
jmp    1544 <findtoken+0x414>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1050 <isalpha@plt>
mov    %eax,%ecx
mov    $0x1,%al
cmp    $0x0,%ecx
mov    %al,-0x41(%rbp)
jne    15a1 <findtoken+0x471>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isdigit@plt>
mov    %eax,%ecx
mov    $0x1,%al
cmp    $0x0,%ecx
mov    %al,-0x41(%rbp)
jne    15a1 <findtoken+0x471>
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x2f,%ecx
mov    %al,-0x41(%rbp)
je     15a1 <findtoken+0x471>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
sete   %al
mov    %al,-0x41(%rbp)
mov    -0x41(%rbp),%al
test   $0x1,%al
jne    15b1 <findtoken+0x481>
jmp    160c <findtoken+0x4dc>
mov    -0x10(%rbp),%rax
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movswl (%rax),%ecx
add    $0x1,%ecx
mov    %cx,(%rax)
mov    -0x2a(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x2a(%rbp)
movswl -0x2a(%rbp),%eax
cmp    $0x64,%eax
jl     1607 <findtoken+0x4d7>
movl   $0xfffffe0b,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
jmp    1544 <findtoken+0x414>
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x28(%rbp),%rdi
lea    0xad6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1638 <findtoken+0x508>
movl   $0xc9,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0xaba(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    165d <findtoken+0x52d>
movl   $0xca,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0xa9f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1682 <findtoken+0x552>
movl   $0xcb,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0xa81(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    16a7 <findtoken+0x577>
movl   $0xcc,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0xa64(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    16cc <findtoken+0x59c>
movl   $0xcd,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0xa46(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    16f1 <findtoken+0x5c1>
movl   $0xce,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0xa29(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1716 <findtoken+0x5e6>
movl   $0xcf,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0xa09(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    173b <findtoken+0x60b>
movl   $0xd0,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x9ea(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1760 <findtoken+0x630>
movl   $0xd1,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x9ca(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1785 <findtoken+0x655>
movl   $0xd2,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x9aa(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    17aa <findtoken+0x67a>
movl   $0xd3,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x98c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    17cf <findtoken+0x69f>
movl   $0xd4,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x96f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    17f4 <findtoken+0x6c4>
movl   $0xd5,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x94f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1819 <findtoken+0x6e9>
movl   $0xd6,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x931(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    183e <findtoken+0x70e>
movl   $0xd7,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x913(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1863 <findtoken+0x733>
movl   $0xd8,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x8f8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1888 <findtoken+0x758>
movl   $0xd9,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x8d6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    18ad <findtoken+0x77d>
movl   $0x12d,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x8b4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    18d2 <findtoken+0x7a2>
movl   $0x12e,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x893(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    18f7 <findtoken+0x7c7>
movl   $0x12f,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x873(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    191c <findtoken+0x7ec>
movl   $0x130,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x851(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1941 <findtoken+0x811>
movl   $0x131,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x831(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1966 <findtoken+0x836>
movl   $0x132,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x80e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    198b <findtoken+0x85b>
movl   $0x133,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x7ec(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    19b0 <findtoken+0x880>
movl   $0x134,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x7cd(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    19d5 <findtoken+0x8a5>
movl   $0x135,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x7ac(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    19fa <findtoken+0x8ca>
movl   $0xda,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x78c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1a1f <findtoken+0x8ef>
movl   $0xdb,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x772(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1a44 <findtoken+0x914>
movl   $0xdc,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x757(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1a69 <findtoken+0x939>
movl   $0x136,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
mov    -0x28(%rbp),%rdi
lea    0x6a1(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1a8e <findtoken+0x95e>
movl   $0xfffffe08,-0x4(%rbp)
jmp    1a95 <findtoken+0x965>
movl   $0x75,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<findtoken>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdx,%r15
mov    %rsi,%r14
mov    %rdi,%rbx
movw   $0x0,(%rdx)
mov    (%rdi),%bpl
xor    %ecx,%ecx
cmp    $0x20,%bpl
jne    1169 <findtoken+0x49>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %rcx,%rax
add    $0x1,%rcx
mov    %cx,(%r15)
movzbl 0x1(%rbx,%rax,1),%ebp
cmp    $0x20,%bpl
je     1150 <findtoken+0x30>
add    %rcx,%rbx
movsbl %bpl,%r12d
lea    -0x22(%r12),%edx
cmp    $0x3c,%edx
ja     12cb <findtoken+0x1ab>
mov    $0x74,%eax
lea    0xe79(%rip),%rsi
movslq (%rsi,%rdx,4),%rdx
add    %rsi,%rdx
jmp    *%rdx
add    $0xffffffd0,%r12d
cmp    $0x9,%r12d
ja     11ef <findtoken+0xcf>
xor    %eax,%eax
nopl   0x0(%rax)
mov    %bpl,(%r14,%rax,1)
addw   $0x1,(%r15)
movsbl 0x1(%rbx,%rax,1),%ebp
mov    %ebp,%ecx
add    $0xffffffd0,%ecx
cmp    $0x9,%ecx
ja     11f9 <findtoken+0xd9>
mov    %bpl,0x1(%r14,%rax,1)
addw   $0x1,(%r15)
cmp    $0x62,%ax
je     1611 <findtoken+0x4f1>
movsbl 0x2(%rbx,%rax,1),%ebp
mov    %ebp,%ecx
add    $0xffffffd0,%ecx
add    $0x2,%rax
cmp    $0xa,%ecx
jb     11a0 <findtoken+0x80>
add    %rax,%rbx
add    %rax,%r14
mov    %eax,%ecx
cmp    $0x2e,%bpl
je     1210 <findtoken+0xf0>
jmp    1248 <findtoken+0x128>
xor    %ecx,%ecx
cmp    $0x2e,%bpl
je     1210 <findtoken+0xf0>
jmp    1248 <findtoken+0x128>
add    %rax,%rbx
add    $0x1,%rbx
lea    0x1(%rax),%ecx
add    %rax,%r14
add    $0x1,%r14
cmp    $0x2e,%bpl
jne    1248 <findtoken+0x128>
neg    %ecx
movswq %cx,%rax
add    $0x63,%rax
mov    $0x2e,%dl
xor    %ecx,%ecx
xchg   %ax,%ax
mov    %dl,(%r14,%rcx,1)
addw   $0x1,(%r15)
cmp    %cx,%ax
je     1611 <findtoken+0x4f1>
movsbl 0x1(%rbx,%rcx,1),%edx
mov    %edx,%esi
add    $0xffffffd0,%esi
add    $0x1,%rcx
cmp    $0xa,%esi
jb     1220 <findtoken+0x100>
add    %rcx,%r14
movb   $0x0,(%r14)
mov    $0x65,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
add    $0x1,%r14
mov    $0x2,%ecx
cs nopw 0x0(%rax,%rax,1)
movzbl -0x1(%rbx,%rcx,1),%edx
cmp    $0x22,%dl
je     171d <findtoken+0x5fd>
mov    $0xfffffe0a,%eax
cmp    $0x3b,%dl
je     1616 <findtoken+0x4f6>
mov    %dl,-0x1(%r14)
addw   $0x1,(%r15)
movzbl (%rbx,%rcx,1),%edx
cmp    $0x22,%dl
je     1721 <findtoken+0x601>
cmp    $0x3b,%dl
je     1616 <findtoken+0x4f6>
mov    %dl,(%r14)
addw   $0x1,(%r15)
add    $0x2,%r14
add    $0x2,%rcx
mov    $0xfffffe0b,%eax
cmp    $0x66,%cx
jne    1270 <findtoken+0x150>
jmp    1616 <findtoken+0x4f6>
mov    %r12d,%edi
call   1040 <isalpha@plt>
test   %eax,%eax
jne    12f0 <findtoken+0x1d0>
add    $0xffffffd0,%r12d
cmp    $0xa,%r12d
jb     12f0 <findtoken+0x1d0>
cmp    $0x2f,%bpl
je     12f0 <findtoken+0x1d0>
mov    %r14,%r13
cmp    $0x2d,%bpl
jne    1347 <findtoken+0x227>
xor    %r13d,%r13d
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %bpl,(%r14,%r13,1)
addw   $0x1,(%r15)
cmp    $0x63,%r13w
je     1611 <findtoken+0x4f1>
movzbl 0x1(%rbx,%r13,1),%ebp
movsbl %bpl,%r12d
mov    %r12d,%edi
call   1040 <isalpha@plt>
add    $0x1,%r13
test   %eax,%eax
jne    1300 <findtoken+0x1e0>
add    $0xffffffd0,%r12d
cmp    $0xa,%r12d
jb     1300 <findtoken+0x1e0>
cmp    $0x2f,%bpl
je     1300 <findtoken+0x1e0>
cmp    $0x2d,%bpl
je     1300 <findtoken+0x1e0>
add    %r14,%r13
movb   $0x0,0x0(%r13)
lea    0xda1(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1713 <findtoken+0x5f3>
lea    0xd93(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1734 <findtoken+0x614>
lea    0xd86(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     173e <findtoken+0x61e>
lea    0xd76(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1748 <findtoken+0x628>
lea    0xd67(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1752 <findtoken+0x632>
lea    0xd57(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     175c <findtoken+0x63c>
lea    0xd48(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1766 <findtoken+0x646>
lea    0xd36(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1770 <findtoken+0x650>
lea    0xd25(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     177a <findtoken+0x65a>
lea    0xd13(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1784 <findtoken+0x664>
lea    0xd01(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     178e <findtoken+0x66e>
lea    0xcf1(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1798 <findtoken+0x678>
lea    0xce2(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17a2 <findtoken+0x682>
lea    0xcd0(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17ac <findtoken+0x68c>
lea    0xcc0(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17b6 <findtoken+0x696>
lea    0xcb0(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17c0 <findtoken+0x6a0>
lea    0xca3(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17ca <findtoken+0x6aa>
lea    0xc8f(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17d4 <findtoken+0x6b4>
lea    0xc7b(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17de <findtoken+0x6be>
lea    0xc68(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17e8 <findtoken+0x6c8>
lea    0xc56(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17f2 <findtoken+0x6d2>
lea    0xc42(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     17fc <findtoken+0x6dc>
lea    0xc30(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1806 <findtoken+0x6e6>
lea    0xc1b(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1810 <findtoken+0x6f0>
lea    0xc07(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     181a <findtoken+0x6fa>
lea    0xbf6(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1824 <findtoken+0x704>
lea    0xbe3(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     182e <findtoken+0x70e>
lea    0xbd1(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1838 <findtoken+0x718>
lea    0xbc5(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1842 <findtoken+0x722>
lea    0xbb8(%rip),%rsi
mov    %r14,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     184c <findtoken+0x72c>
cmpb   $0x0,(%r14)
mov    $0xfffffe08,%ecx
mov    $0x75,%eax
cmove  %ecx,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xfffffe0b,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x6d,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x6e,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x64,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x73,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x6c,%eax
jmp    1616 <findtoken+0x4f6>
mov    0x1(%rbx),%al
cmp    $0x3e,%al
je     16f1 <findtoken+0x5d1>
cmp    $0x3d,%al
jne    1702 <findtoken+0x5e2>
add    $0x2,%ecx
mov    %cx,(%r15)
mov    $0x1f8,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x1f5,%eax
jmp    1616 <findtoken+0x4f6>
cmpb   $0x3d,0x1(%rbx)
jne    16e0 <findtoken+0x5c0>
add    $0x2,%ecx
mov    %cx,(%r15)
mov    $0x1f6,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x70,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x71,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x6f,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x1f7,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x2,%ecx
mov    %cx,(%r15)
mov    $0x1f9,%eax
jmp    1616 <findtoken+0x4f6>
add    $0x1,%ecx
mov    %cx,(%r15)
mov    $0x1fa,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xc9,%eax
jmp    1616 <findtoken+0x4f6>
add    $0xffffffffffffffff,%r14
movb   $0x0,(%r14)
addw   $0x1,(%r15)
mov    $0x72,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xca,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xcb,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xcc,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xcd,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xce,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xcf,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd0,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd1,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd2,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd3,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd4,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd5,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd6,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd7,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd8,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xd9,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x12d,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x12e,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x12f,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x130,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x131,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x132,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x133,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x134,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x135,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xda,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xdb,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0xdc,%eax
jmp    1616 <findtoken+0x4f6>
mov    $0x136,%eax
jmp    1616 <findtoken+0x4f6>

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

LLVM IR (-O2):
@.str = [9 x i8] c"createdb\00"
@.str.1 = [10 x i8] c"destroydb\00"
@.str.2 = [7 x i8] c"opendb\00"
@.str.3 = [8 x i8] c"closedb\00"
@.str.4 = [7 x i8] c"create\00"
@.str.5 = [8 x i8] c"destroy\00"
@.str.6 = [5 x i8] c"load\00"
@.str.7 = [6 x i8] c"print\00"
@.str.8 = [5 x i8] c"sort\00"
@.str.9 = [5 x i8] c"quit\00"
@.str.10 = [7 x i8] c"select\00"
@.str.11 = [8 x i8] c"project\00"
@.str.12 = [5 x i8] c"join\00"
@.str.13 = [7 x i8] c"insert\00"
@.str.14 = [7 x i8] c"delete\00"
@.str.15 = [10 x i8] c"intersect\00"
@.str.16 = [6 x i8] c"union\00"
@.str.17 = [3 x i8] c"on\00"
@.str.18 = [4 x i8] c"key\00"
@.str.19 = [5 x i8] c"size\00"
@.str.20 = [3 x i8] c"is\00"
@.str.21 = [5 x i8] c"from\00"
@.str.22 = [5 x i8] c"into\00"
@.str.23 = [3 x i8] c"to\00"
@.str.24 = [6 x i8] c"where\00"
@.str.25 = [4 x i8] c"and\00"
@.str.26 = [5 x i8] c"help\00"
@.str.27 = [11 x i8] c"buildindex\00"
@.str.28 = [10 x i8] c"dropindex\00"
@.str.29 = [4 x i8] c"for\00"
define i32 @findtoken(i8* nocapture %0, i8* %1, i16* %2) {
store i16 0, i16* %2
%4 = load i8, i8* %0
%5 = icmp eq i8 %4, 32
br i1 %5, label %6, label %13
6: ; preds = %3, %6
%7 = phi i8* [ %9, %6 ], [ %0, %3 ]
%8 = phi i16 [ %10, %6 ], [ 0, %3 ]
%9 = getelementptr inbounds i8, i8* %7, i64 1
%10 = add i16 %8, 1
store i16 %10, i16* %2
%11 = load i8, i8* %9
%12 = icmp eq i8 %11, 32
br i1 %12, label %6, label %13
13: ; preds = %6, %3
%14 = phi i16 [ 0, %3 ], [ %10, %6 ]
%15 = phi i8* [ %0, %3 ], [ %9, %6 ]
%16 = phi i8 [ %4, %3 ], [ %11, %6 ]
%17 = sext i8 %16 to i32
switch i32 %17, label %18 [
i32 48, label %29
i32 49, label %29
i32 50, label %29
i32 51, label %29
i32 52, label %29
i32 53, label %29
i32 54, label %29
i32 55, label %29
i32 56, label %29
i32 57, label %29
i32 61, label %84
i32 62, label %86
i32 60, label %94
i32 46, label %103
i32 44, label %105
i32 58, label %107
i32 40, label %109
i32 41, label %111
i32 94, label %113
i32 91, label %115
i32 93, label %117
i32 34, label %119
i32 59, label %261
]
18: ; preds = %13
%19 = sext i8 %16 to i32
%20 = tail call i32 @isalpha(i32 %19)
%21 = icmp ne i32 %20, 0
%22 = add nsw i32 %19, -48
%23 = icmp ult i32 %22, 10
%24 = select i1 %21, i1 true, i1 %23
%25 = icmp eq i8 %16, 47
%26 = select i1 %24, i1 true, i1 %25
%27 = icmp eq i8 %16, 45
%28 = select i1 %26, i1 true, i1 %27
br i1 %28, label %143, label %166
29: ; preds = %13, %13, %13, %13, %13, %13, %13, %13, %13, %13
%30 = sext i8 %16 to i32
%31 = add nsw i32 %30, -48
%32 = icmp ult i32 %31, 10
br i1 %32, label %33, label %60
33: ; preds = %29, %52
%34 = phi i8* [ %47, %52 ], [ %15, %29 ]
%35 = phi i16 [ %50, %52 ], [ 0, %29 ]
%36 = phi i8* [ %53, %52 ], [ %1, %29 ]
%37 = phi i8 [ %54, %52 ], [ %16, %29 ]
store i8 %37, i8* %36
%38 = getelementptr inbounds i8, i8* %34, i64 1
%39 = load i16, i16* %2
%40 = add i16 %39, 1
store i16 %40, i16* %2
%41 = getelementptr inbounds i8, i8* %36, i64 1
%42 = load i8, i8* %38
%43 = sext i8 %42 to i32
%44 = add nsw i32 %43, -48
%45 = icmp ult i32 %44, 10
br i1 %45, label %46, label %58
46: ; preds = %33
store i8 %42, i8* %41
%47 = getelementptr inbounds i8, i8* %34, i64 2
%48 = load i16, i16* %2
%49 = add i16 %48, 1
store i16 %49, i16* %2
%50 = add nuw nsw i16 %35, 2
%51 = icmp eq i16 %50, 100
br i1 %51, label %261, label %52
52: ; preds = %46
%53 = getelementptr inbounds i8, i8* %36, i64 2
%54 = load i8, i8* %47
%55 = sext i8 %54 to i32
%56 = add nsw i32 %55, -48
%57 = icmp ult i32 %56, 10
br i1 %57, label %33, label %60
58: ; preds = %33
%59 = or i16 %35, 1
br label %60
60: ; preds = %58, %52, %29
%61 = phi i8 [ %16, %29 ], [ %42, %58 ], [ %54, %52 ]
%62 = phi i8* [ %1, %29 ], [ %41, %58 ], [ %53, %52 ]
%63 = phi i16 [ 0, %29 ], [ %59, %58 ], [ %50, %52 ]
%64 = phi i8* [ %15, %29 ], [ %38, %58 ], [ %47, %52 ]
%65 = icmp eq i8 %61, 46
br i1 %65, label %66, label %82
66: ; preds = %60, %76
%67 = phi i8 [ %78, %76 ], [ 46, %60 ]
%68 = phi i8* [ %71, %76 ], [ %62, %60 ]
%69 = phi i16 [ %77, %76 ], [ %63, %60 ]
%70 = phi i8* [ %72, %76 ], [ %64, %60 ]
store i8 %67, i8* %68
%71 = getelementptr inbounds i8, i8* %68, i64 1
%72 = getelementptr inbounds i8, i8* %70, i64 1
%73 = load i16, i16* %2
%74 = add i16 %73, 1
store i16 %74, i16* %2
%75 = icmp eq i16 %69, 99
br i1 %75, label %261, label %76
76: ; preds = %66
%77 = add nuw nsw i16 %69, 1
%78 = load i8, i8* %72
%79 = sext i8 %78 to i32
%80 = add nsw i32 %79, -48
%81 = icmp ult i32 %80, 10
br i1 %81, label %66, label %82
82: ; preds = %76, %60
%83 = phi i8* [ %62, %60 ], [ %71, %76 ]
store i8 0, i8* %83
br label %261
84: ; preds = %13
%85 = add i16 %14, 1
store i16 %85, i16* %2
br label %261
86: ; preds = %13
%87 = getelementptr inbounds i8, i8* %15, i64 1
%88 = load i8, i8* %87
%89 = icmp eq i8 %88, 61
br i1 %89, label %90, label %92
90: ; preds = %86
%91 = add i16 %14, 2
store i16 %91, i16* %2
br label %261
92: ; preds = %86
%93 = add i16 %14, 1
store i16 %93, i16* %2
br label %261
94: ; preds = %13
%95 = getelementptr inbounds i8, i8* %15, i64 1
%96 = load i8, i8* %95
switch i8 %96, label %101 [
i8 61, label %97
i8 62, label %99
]
97: ; preds = %94
%98 = add i16 %14, 2
store i16 %98, i16* %2
br label %261
99: ; preds = %94
%100 = add i16 %14, 2
store i16 %100, i16* %2
br label %261
101: ; preds = %94
%102 = add i16 %14, 1
store i16 %102, i16* %2
br label %261
103: ; preds = %13
%104 = add i16 %14, 1
store i16 %104, i16* %2
br label %261
105: ; preds = %13
%106 = add i16 %14, 1
store i16 %106, i16* %2
br label %261
107: ; preds = %13
%108 = add i16 %14, 1
store i16 %108, i16* %2
br label %261
109: ; preds = %13
%110 = add i16 %14, 1
store i16 %110, i16* %2
br label %261
111: ; preds = %13
%112 = add i16 %14, 1
store i16 %112, i16* %2
br label %261
113: ; preds = %13
%114 = add i16 %14, 1
store i16 %114, i16* %2
br label %261
115: ; preds = %13
%116 = add i16 %14, 1
store i16 %116, i16* %2
br label %261
117: ; preds = %13
%118 = add i16 %14, 1
store i16 %118, i16* %2
br label %261
119: ; preds = %13
%120 = add i16 %14, 1
store i16 %120, i16* %2
br label %121
121: ; preds = %133, %119
%122 = phi i8* [ %1, %119 ], [ %134, %133 ]
%123 = phi i16 [ 0, %119 ], [ %137, %133 ]
%124 = phi i8* [ %15, %119 ], [ %131, %133 ]
%125 = getelementptr inbounds i8, i8* %124, i64 1
%126 = load i8, i8* %125
switch i8 %126, label %127 [
i8 34, label %139
i8 59, label %261
]
127: ; preds = %121
store i8 %126, i8* %122
%128 = getelementptr inbounds i8, i8* %122, i64 1
%129 = load i16, i16* %2
%130 = add i16 %129, 1
store i16 %130, i16* %2
%131 = getelementptr inbounds i8, i8* %124, i64 2
%132 = load i8, i8* %131
switch i8 %132, label %133 [
i8 34, label %139
i8 59, label %261
]
133: ; preds = %127
store i8 %132, i8* %128
%134 = getelementptr inbounds i8, i8* %122, i64 2
%135 = load i16, i16* %2
%136 = add i16 %135, 1
store i16 %136, i16* %2
%137 = add nuw nsw i16 %123, 2
%138 = icmp eq i16 %137, 100
br i1 %138, label %261, label %121
139: ; preds = %127, %121
%140 = phi i8* [ %122, %121 ], [ %128, %127 ]
store i8 0, i8* %140
%141 = load i16, i16* %2
%142 = add i16 %141, 1
store i16 %142, i16* %2
br label %261
143: ; preds = %18, %153
%144 = phi i8* [ %148, %153 ], [ %15, %18 ]
%145 = phi i16 [ %151, %153 ], [ 0, %18 ]
%146 = phi i8* [ %154, %153 ], [ %1, %18 ]
%147 = phi i8 [ %155, %153 ], [ %16, %18 ]
store i8 %147, i8* %146
%148 = getelementptr inbounds i8, i8* %144, i64 1
%149 = load i16, i16* %2
%150 = add i16 %149, 1
store i16 %150, i16* %2
%151 = add nuw nsw i16 %145, 1
%152 = icmp eq i16 %151, 100
br i1 %152, label %261, label %153
153: ; preds = %143
%154 = getelementptr inbounds i8, i8* %146, i64 1
%155 = load i8, i8* %148
%156 = sext i8 %155 to i32
%157 = tail call i32 @isalpha(i32 %156)
%158 = icmp ne i32 %157, 0
%159 = add nsw i32 %156, -48
%160 = icmp ult i32 %159, 10
%161 = select i1 %158, i1 true, i1 %160
%162 = icmp eq i8 %155, 47
%163 = select i1 %161, i1 true, i1 %162
%164 = icmp eq i8 %155, 45
%165 = select i1 %163, i1 true, i1 %164
br i1 %165, label %143, label %166
166: ; preds = %153, %18
%167 = phi i8* [ %1, %18 ], [ %154, %153 ]
store i8 0, i8* %167
%168 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(9) getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0))
%169 = icmp eq i32 %168, 0
br i1 %169, label %261, label %170
170: ; preds = %166
%171 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.1, i64 0, i64 0))
%172 = icmp eq i32 %171, 0
br i1 %172, label %261, label %173
173: ; preds = %170
%174 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0))
%175 = icmp eq i32 %174, 0
br i1 %175, label %261, label %176
176: ; preds = %173
%177 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
%178 = icmp eq i32 %177, 0
br i1 %178, label %261, label %179
179: ; preds = %176
%180 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0))
%181 = icmp eq i32 %180, 0
br i1 %181, label %261, label %182
182: ; preds = %179
%183 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
%184 = icmp eq i32 %183, 0
br i1 %184, label %261, label %185
185: ; preds = %182
%186 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%187 = icmp eq i32 %186, 0
br i1 %187, label %261, label %188
188: ; preds = %185
%189 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%190 = icmp eq i32 %189, 0
br i1 %190, label %261, label %191
191: ; preds = %188
%192 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%193 = icmp eq i32 %192, 0
br i1 %193, label %261, label %194
194: ; preds = %191
%195 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0))
%196 = icmp eq i32 %195, 0
br i1 %196, label %261, label %197
197: ; preds = %194
%198 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.10, i64 0, i64 0))
%199 = icmp eq i32 %198, 0
br i1 %199, label %261, label %200
200: ; preds = %197
%201 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i64 0, i64 0))
%202 = icmp eq i32 %201, 0
br i1 %202, label %261, label %203
203: ; preds = %200
%204 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0))
%205 = icmp eq i32 %204, 0
br i1 %205, label %261, label %206
206: ; preds = %203
%207 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.13, i64 0, i64 0))
%208 = icmp eq i32 %207, 0
br i1 %208, label %261, label %209
209: ; preds = %206
%210 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0))
%211 = icmp eq i32 %210, 0
br i1 %211, label %261, label %212
212: ; preds = %209
%213 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.15, i64 0, i64 0))
%214 = icmp eq i32 %213, 0
br i1 %214, label %261, label %215
215: ; preds = %212
%216 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
%217 = icmp eq i32 %216, 0
br i1 %217, label %261, label %218
218: ; preds = %215
%219 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
%220 = icmp eq i32 %219, 0
br i1 %220, label %261, label %221
221: ; preds = %218
%222 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0))
%223 = icmp eq i32 %222, 0
br i1 %223, label %261, label %224
224: ; preds = %221
%225 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0))
%226 = icmp eq i32 %225, 0
br i1 %226, label %261, label %227
227: ; preds = %224
%228 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0))
%229 = icmp eq i32 %228, 0
br i1 %229, label %261, label %230
230: ; preds = %227
%231 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.21, i64 0, i64 0))
%232 = icmp eq i32 %231, 0
br i1 %232, label %261, label %233
233: ; preds = %230
%234 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0))
%235 = icmp eq i32 %234, 0
br i1 %235, label %261, label %236
236: ; preds = %233
%237 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0))
%238 = icmp eq i32 %237, 0
br i1 %238, label %261, label %239
239: ; preds = %236
%240 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.24, i64 0, i64 0))
%241 = icmp eq i32 %240, 0
br i1 %241, label %261, label %242
242: ; preds = %239
%243 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0))
%244 = icmp eq i32 %243, 0
br i1 %244, label %261, label %245
245: ; preds = %242
%246 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i64 0, i64 0))
%247 = icmp eq i32 %246, 0
br i1 %247, label %261, label %248
248: ; preds = %245
%249 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.27, i64 0, i64 0))
%250 = icmp eq i32 %249, 0
br i1 %250, label %261, label %251
251: ; preds = %248
%252 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.28, i64 0, i64 0))
%253 = icmp eq i32 %252, 0
br i1 %253, label %261, label %254
254: ; preds = %251
%255 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0))
%256 = icmp eq i32 %255, 0
br i1 %256, label %261, label %257
257: ; preds = %254
%258 = load i8, i8* %1
%259 = icmp eq i8 %258, 0
%260 = select i1 %259, i32 -504, i32 117
br label %261
261: ; preds = %121, %127, %133, %46, %66, %143, %257, %254, %251, %248, %245, %242, %239, %236, %233, %230, %227, %224, %221, %218, %215, %212, %209, %206, %203, %200, %197, %194, %191, %188, %185, %182, %179, %176, %173, %170, %166, %13, %139, %117, %115, %113, %111, %109, %107, %105, %103, %101, %99, %97, %92, %90, %84, %82
%262 = phi i32 [ 114, %139 ], [ 113, %117 ], [ 112, %115 ], [ 111, %113 ], [ 110, %111 ], [ 109, %109 ], [ 108, %107 ], [ 100, %105 ], [ 115, %103 ], [ 504, %97 ], [ 505, %99 ], [ 506, %101 ], [ 502, %90 ], [ 503, %92 ], [ 501, %84 ], [ 101, %82 ], [ 116, %13 ], [ 201, %166 ], [ 202, %170 ], [ 203, %173 ], [ 204, %176 ], [ 205, %179 ], [ 206, %182 ], [ 207, %185 ], [ 208, %188 ], [ 209, %191 ], [ 210, %194 ], [ 211, %197 ], [ 212, %200 ], [ 213, %203 ], [ 214, %206 ], [ 215, %209 ], [ 216, %212 ], [ 217, %215 ], [ 301, %218 ], [ 302, %221 ], [ 303, %224 ], [ 304, %227 ], [ 305, %230 ], [ 306, %233 ], [ 307, %236 ], [ 308, %239 ], [ 309, %242 ], [ 218, %245 ], [ 219, %248 ], [ 220, %251 ], [ 310, %254 ], [ %260, %257 ], [ -501, %143 ], [ -501, %66 ], [ -501, %46 ], [ -502, %121 ], [ -502, %127 ], [ -501, %133 ]
ret i32 %262
}