#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*/ isalpha(char);
int /*<<< orphan*/ isdigit(char);
int /*<<< orphan*/ strcmp(char *, char *);
findtoken(char *p, char *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,%r12
movw   $0x0,(%rdx)
mov    (%rdi),%cl
xor    %eax,%eax
cmp    $0x20,%cl
jne    1179 <findtoken+0x49>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %rax,%rcx
add    $0x1,%rax
mov    %ax,(%r15)
movzbl 0x1(%r12,%rcx,1),%ecx
cmp    $0x20,%cl
je     1160 <findtoken+0x30>
add    %rax,%r12
movsbl %cl,%edi
lea    -0x22(%rdi),%edx
cmp    $0x3c,%edx
ja     1377 <findtoken+0x247>
mov    $0x74,%r13d
lea    0xe6b(%rip),%rsi
movslq (%rsi,%rdx,4),%rdx
add    %rsi,%rdx
jmp    *%rdx
call   1030 <isdigit@plt>
test   %eax,%eax
je     11f6 <findtoken+0xc6>
mov    $0x1,%ebx
xor    %ebp,%ebp
xchg   %ax,%ax
movzbl -0x1(%r12,%rbx,1),%eax
mov    %al,-0x1(%r14,%rbx,1)
addw   $0x1,(%r15)
cmp    $0xff9d,%bp
je     13d0 <findtoken+0x2a0>
movsbl (%r12,%rbx,1),%edi
call   1030 <isdigit@plt>
add    $0x1,%rbx
add    $0xffffffffffffffff,%rbp
test   %eax,%eax
jne    11b0 <findtoken+0x80>
mov    %ebp,%eax
neg    %eax
sub    %rbp,%r12
sub    %rbp,%r14
cmpb   $0x2e,(%r12)
je     1203 <findtoken+0xd3>
jmp    141b <findtoken+0x2eb>
xor    %eax,%eax
cmpb   $0x2e,(%r12)
jne    141b <findtoken+0x2eb>
movb   $0x2e,(%r14)
addw   $0x1,(%r15)
mov    $0xfffffe0b,%r13d
cmp    $0x63,%ax
je     1425 <findtoken+0x2f5>
neg    %eax
movswq %ax,%rbx
add    $0x63,%rbx
xor    %ebp,%ebp
nopl   0x0(%rax,%rax,1)
movsbl 0x1(%r12,%rbp,1),%edi
call   1030 <isdigit@plt>
test   %eax,%eax
je     1414 <findtoken+0x2e4>
movzbl 0x1(%r12,%rbp,1),%eax
mov    %al,0x1(%r14,%rbp,1)
addw   $0x1,(%r15)
add    $0x1,%rbp
cmp    %bp,%bx
jne    1230 <findtoken+0x100>
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x1f5,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x71,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
add    $0x1,%r14
mov    $0x2,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movzbl -0x1(%r12,%rax,1),%ecx
cmp    $0x22,%cl
je     1464 <findtoken+0x334>
mov    $0xfffffe0a,%r13d
cmp    $0x3b,%cl
je     1425 <findtoken+0x2f5>
mov    %cl,-0x1(%r14)
addw   $0x1,(%r15)
movzbl (%r12,%rax,1),%ecx
cmp    $0x22,%cl
je     1468 <findtoken+0x338>
cmp    $0x3b,%cl
je     1425 <findtoken+0x2f5>
mov    %cl,(%r14)
addw   $0x1,(%r15)
add    $0x2,%r14
add    $0x2,%rax
mov    $0xfffffe0b,%r13d
cmp    $0x66,%ax
jne    12a0 <findtoken+0x170>
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x6d,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x6e,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x64,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x73,%r13d
jmp    1425 <findtoken+0x2f5>
cmpb   $0x3d,0x1(%r12)
jne    1437 <findtoken+0x307>
add    $0x2,%eax
mov    %ax,(%r15)
mov    $0x1f6,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x6f,%r13d
jmp    1425 <findtoken+0x2f5>
xor    %ebp,%ebp
nopl   0x0(%rax)
movsbl %cl,%edi
call   1050 <isalpha@plt>
test   %eax,%eax
jne    13b0 <findtoken+0x280>
movsbl (%r12,%rbp,1),%edi
call   1030 <isdigit@plt>
test   %eax,%eax
jne    13b0 <findtoken+0x280>
movzbl (%r12,%rbp,1),%eax
or     $0x2,%al
cmp    $0x2f,%al
jne    1479 <findtoken+0x349>
nopl   0x0(%rax)
movzbl (%r12,%rbp,1),%eax
mov    %al,(%r14,%rbp,1)
addw   $0x1,(%r15)
cmp    $0x63,%bp
je     13d0 <findtoken+0x2a0>
movzbl 0x1(%r12,%rbp,1),%ecx
add    $0x1,%rbp
jmp    1380 <findtoken+0x250>
mov    $0xfffffe0b,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x6c,%r13d
jmp    1425 <findtoken+0x2f5>
mov    0x1(%r12),%cl
cmp    $0x3e,%cl
je     1446 <findtoken+0x316>
cmp    $0x3d,%cl
jne    1455 <findtoken+0x325>
add    $0x2,%eax
mov    %ax,(%r15)
mov    $0x1f8,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x70,%r13d
jmp    1425 <findtoken+0x2f5>
add    %rbp,%r14
add    $0x1,%r14
movb   $0x0,(%r14)
mov    $0x65,%r13d
mov    %r13d,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x1f7,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x2,%eax
mov    %ax,(%r15)
mov    $0x1f9,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0x1,%eax
mov    %ax,(%r15)
mov    $0x1fa,%r13d
jmp    1425 <findtoken+0x2f5>
add    $0xffffffffffffffff,%r14
movb   $0x0,(%r14)
addw   $0x1,(%r15)
mov    $0x72,%r13d
jmp    1425 <findtoken+0x2f5>
movb   $0x0,(%r14,%rbp,1)
lea    0xc6f(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1748 <findtoken+0x618>
lea    0xc61(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1753 <findtoken+0x623>
lea    0xc54(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     175e <findtoken+0x62e>
lea    0xc44(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1769 <findtoken+0x639>
lea    0xc35(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1774 <findtoken+0x644>
lea    0xc25(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     177f <findtoken+0x64f>
lea    0xc16(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     178a <findtoken+0x65a>
lea    0xc04(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1795 <findtoken+0x665>
lea    0xbf3(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17a0 <findtoken+0x670>
lea    0xbe1(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17ab <findtoken+0x67b>
lea    0xbcf(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17b6 <findtoken+0x686>
lea    0xbbf(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17c1 <findtoken+0x691>
lea    0xbb0(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17cc <findtoken+0x69c>
lea    0xb9e(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17d7 <findtoken+0x6a7>
lea    0xb8e(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17e2 <findtoken+0x6b2>
lea    0xb7e(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17ed <findtoken+0x6bd>
lea    0xb71(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     17f8 <findtoken+0x6c8>
lea    0xb5d(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1803 <findtoken+0x6d3>
lea    0xb49(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     180e <findtoken+0x6de>
lea    0xb36(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1819 <findtoken+0x6e9>
lea    0xb24(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1824 <findtoken+0x6f4>
lea    0xb10(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     182f <findtoken+0x6ff>
lea    0xafe(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     183a <findtoken+0x70a>
lea    0xae9(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1845 <findtoken+0x715>
lea    0xad5(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1850 <findtoken+0x720>
lea    0xac4(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     185b <findtoken+0x72b>
lea    0xab1(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1866 <findtoken+0x736>
lea    0xa9f(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1871 <findtoken+0x741>
lea    0xa93(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     187c <findtoken+0x74c>
lea    0xa86(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1887 <findtoken+0x757>
cmpb   $0x0,(%r14)
mov    $0xfffffe08,%eax
mov    $0x75,%r13d
cmove  %eax,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xc9,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xca,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xcb,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xcc,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xcd,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xce,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xcf,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd0,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd1,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd2,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd3,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd4,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd5,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd6,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd7,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd8,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xd9,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x12d,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x12e,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x12f,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x130,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x131,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x132,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x133,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x134,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x135,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xda,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xdb,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0xdc,%r13d
jmp    1425 <findtoken+0x2f5>
mov    $0x136,%r13d
jmp    1425 <findtoken+0x2f5>

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

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 %122 [
i32 48, label %18
i32 49, label %18
i32 50, label %18
i32 51, label %18
i32 52, label %18
i32 53, label %18
i32 54, label %18
i32 55, label %18
i32 56, label %18
i32 57, label %18
i32 61, label %63
i32 62, label %65
i32 60, label %73
i32 46, label %82
i32 44, label %84
i32 58, label %86
i32 40, label %88
i32 41, label %90
i32 94, label %92
i32 91, label %94
i32 93, label %96
i32 34, label %98
i32 59, label %239
]
18: ; preds = %13, %13, %13, %13, %13, %13, %13, %13, %13, %13
%19 = tail call i32 @isdigit(i8 signext %16)
%20 = icmp eq i32 %19, 0
br i1 %20, label %36, label %21
21: ; preds = %18, %31
%22 = phi i8* [ %26, %31 ], [ %15, %18 ]
%23 = phi i16 [ %29, %31 ], [ 0, %18 ]
%24 = phi i8* [ %32, %31 ], [ %1, %18 ]
%25 = load i8, i8* %22
store i8 %25, i8* %24
%26 = getelementptr inbounds i8, i8* %22, i64 1
%27 = load i16, i16* %2
%28 = add i16 %27, 1
store i16 %28, i16* %2
%29 = add nuw nsw i16 %23, 1
%30 = icmp eq i16 %29, 100
br i1 %30, label %239, label %31
31: ; preds = %21
%32 = getelementptr inbounds i8, i8* %24, i64 1
%33 = load i8, i8* %26
%34 = tail call i32 @isdigit(i8 signext %33)
%35 = icmp eq i32 %34, 0
br i1 %35, label %36, label %21
36: ; preds = %31, %18
%37 = phi i8* [ %1, %18 ], [ %32, %31 ]
%38 = phi i16 [ 0, %18 ], [ %29, %31 ]
%39 = phi i8* [ %15, %18 ], [ %26, %31 ]
%40 = load i8, i8* %39
%41 = icmp eq i8 %40, 46
br i1 %41, label %42, label %61
42: ; preds = %36
store i8 46, i8* %37
%43 = load i16, i16* %2
%44 = add i16 %43, 1
store i16 %44, i16* %2
%45 = icmp eq i16 %38, 99
br i1 %45, label %239, label %46
46: ; preds = %42, %56
%47 = phi i16 [ %52, %56 ], [ %38, %42 ]
%48 = phi i8* [ %51, %56 ], [ %39, %42 ]
%49 = phi i8* [ %50, %56 ], [ %37, %42 ]
%50 = getelementptr inbounds i8, i8* %49, i64 1
%51 = getelementptr inbounds i8, i8* %48, i64 1
%52 = add nuw nsw i16 %47, 1
%53 = load i8, i8* %51
%54 = tail call i32 @isdigit(i8 signext %53)
%55 = icmp eq i32 %54, 0
br i1 %55, label %61, label %56
56: ; preds = %46
%57 = load i8, i8* %51
store i8 %57, i8* %50
%58 = load i16, i16* %2
%59 = add i16 %58, 1
store i16 %59, i16* %2
%60 = icmp eq i16 %52, 99
br i1 %60, label %239, label %46
61: ; preds = %46, %36
%62 = phi i8* [ %37, %36 ], [ %50, %46 ]
store i8 0, i8* %62
br label %239
63: ; preds = %13
%64 = add i16 %14, 1
store i16 %64, i16* %2
br label %239
65: ; preds = %13
%66 = getelementptr inbounds i8, i8* %15, i64 1
%67 = load i8, i8* %66
%68 = icmp eq i8 %67, 61
br i1 %68, label %69, label %71
69: ; preds = %65
%70 = add i16 %14, 2
store i16 %70, i16* %2
br label %239
71: ; preds = %65
%72 = add i16 %14, 1
store i16 %72, i16* %2
br label %239
73: ; preds = %13
%74 = getelementptr inbounds i8, i8* %15, i64 1
%75 = load i8, i8* %74
switch i8 %75, label %80 [
i8 61, label %76
i8 62, label %78
]
76: ; preds = %73
%77 = add i16 %14, 2
store i16 %77, i16* %2
br label %239
78: ; preds = %73
%79 = add i16 %14, 2
store i16 %79, i16* %2
br label %239
80: ; preds = %73
%81 = add i16 %14, 1
store i16 %81, i16* %2
br label %239
82: ; preds = %13
%83 = add i16 %14, 1
store i16 %83, i16* %2
br label %239
84: ; preds = %13
%85 = add i16 %14, 1
store i16 %85, i16* %2
br label %239
86: ; preds = %13
%87 = add i16 %14, 1
store i16 %87, i16* %2
br label %239
88: ; preds = %13
%89 = add i16 %14, 1
store i16 %89, i16* %2
br label %239
90: ; preds = %13
%91 = add i16 %14, 1
store i16 %91, i16* %2
br label %239
92: ; preds = %13
%93 = add i16 %14, 1
store i16 %93, i16* %2
br label %239
94: ; preds = %13
%95 = add i16 %14, 1
store i16 %95, i16* %2
br label %239
96: ; preds = %13
%97 = add i16 %14, 1
store i16 %97, i16* %2
br label %239
98: ; preds = %13
%99 = add i16 %14, 1
store i16 %99, i16* %2
br label %100
100: ; preds = %112, %98
%101 = phi i8* [ %1, %98 ], [ %113, %112 ]
%102 = phi i16 [ 0, %98 ], [ %116, %112 ]
%103 = phi i8* [ %15, %98 ], [ %110, %112 ]
%104 = getelementptr inbounds i8, i8* %103, i64 1
%105 = load i8, i8* %104
switch i8 %105, label %106 [
i8 34, label %118
i8 59, label %239
]
106: ; preds = %100
store i8 %105, i8* %101
%107 = getelementptr inbounds i8, i8* %101, i64 1
%108 = load i16, i16* %2
%109 = add i16 %108, 1
store i16 %109, i16* %2
%110 = getelementptr inbounds i8, i8* %103, i64 2
%111 = load i8, i8* %110
switch i8 %111, label %112 [
i8 34, label %118
i8 59, label %239
]
112: ; preds = %106
store i8 %111, i8* %107
%113 = getelementptr inbounds i8, i8* %101, i64 2
%114 = load i16, i16* %2
%115 = add i16 %114, 1
store i16 %115, i16* %2
%116 = add nuw nsw i16 %102, 2
%117 = icmp eq i16 %116, 100
br i1 %117, label %239, label %100
118: ; preds = %106, %100
%119 = phi i8* [ %101, %100 ], [ %107, %106 ]
store i8 0, i8* %119
%120 = load i16, i16* %2
%121 = add i16 %120, 1
store i16 %121, i16* %2
br label %239
122: ; preds = %13, %142
%123 = phi i8 [ %144, %142 ], [ %16, %13 ]
%124 = phi i8* [ %143, %142 ], [ %1, %13 ]
%125 = phi i16 [ %140, %142 ], [ 0, %13 ]
%126 = phi i8* [ %137, %142 ], [ %15, %13 ]
%127 = tail call i32 @isalpha(i8 signext %123)
%128 = icmp eq i32 %127, 0
br i1 %128, label %129, label %135
129: ; preds = %122
%130 = load i8, i8* %126
%131 = tail call i32 @isdigit(i8 signext %130)
%132 = icmp eq i32 %131, 0
br i1 %132, label %133, label %135
133: ; preds = %129
%134 = load i8, i8* %126
switch i8 %134, label %145 [
i8 47, label %135
i8 45, label %135
]
135: ; preds = %133, %133, %122, %129
%136 = load i8, i8* %126
store i8 %136, i8* %124
%137 = getelementptr inbounds i8, i8* %126, i64 1
%138 = load i16, i16* %2
%139 = add i16 %138, 1
store i16 %139, i16* %2
%140 = add nuw nsw i16 %125, 1
%141 = icmp eq i16 %140, 100
br i1 %141, label %239, label %142
142: ; preds = %135
%143 = getelementptr inbounds i8, i8* %124, i64 1
%144 = load i8, i8* %137
br label %122
145: ; preds = %133
store i8 0, i8* %124
%146 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(9) getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0))
%147 = icmp eq i32 %146, 0
br i1 %147, label %239, label %148
148: ; preds = %145
%149 = 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))
%150 = icmp eq i32 %149, 0
br i1 %150, label %239, label %151
151: ; preds = %148
%152 = 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))
%153 = icmp eq i32 %152, 0
br i1 %153, label %239, label %154
154: ; preds = %151
%155 = 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))
%156 = icmp eq i32 %155, 0
br i1 %156, label %239, label %157
157: ; preds = %154
%158 = 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))
%159 = icmp eq i32 %158, 0
br i1 %159, label %239, label %160
160: ; preds = %157
%161 = 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))
%162 = icmp eq i32 %161, 0
br i1 %162, label %239, label %163
163: ; preds = %160
%164 = 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))
%165 = icmp eq i32 %164, 0
br i1 %165, label %239, label %166
166: ; preds = %163
%167 = 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))
%168 = icmp eq i32 %167, 0
br i1 %168, label %239, label %169
169: ; preds = %166
%170 = 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))
%171 = icmp eq i32 %170, 0
br i1 %171, label %239, label %172
172: ; preds = %169
%173 = 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))
%174 = icmp eq i32 %173, 0
br i1 %174, label %239, label %175
175: ; preds = %172
%176 = 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))
%177 = icmp eq i32 %176, 0
br i1 %177, label %239, label %178
178: ; preds = %175
%179 = 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))
%180 = icmp eq i32 %179, 0
br i1 %180, label %239, label %181
181: ; preds = %178
%182 = 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))
%183 = icmp eq i32 %182, 0
br i1 %183, label %239, label %184
184: ; preds = %181
%185 = 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))
%186 = icmp eq i32 %185, 0
br i1 %186, label %239, label %187
187: ; preds = %184
%188 = 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))
%189 = icmp eq i32 %188, 0
br i1 %189, label %239, label %190
190: ; preds = %187
%191 = 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))
%192 = icmp eq i32 %191, 0
br i1 %192, label %239, label %193
193: ; preds = %190
%194 = 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))
%195 = icmp eq i32 %194, 0
br i1 %195, label %239, label %196
196: ; preds = %193
%197 = 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))
%198 = icmp eq i32 %197, 0
br i1 %198, label %239, label %199
199: ; preds = %196
%200 = 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))
%201 = icmp eq i32 %200, 0
br i1 %201, label %239, label %202
202: ; preds = %199
%203 = 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))
%204 = icmp eq i32 %203, 0
br i1 %204, label %239, label %205
205: ; preds = %202
%206 = 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))
%207 = icmp eq i32 %206, 0
br i1 %207, label %239, label %208
208: ; preds = %205
%209 = 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))
%210 = icmp eq i32 %209, 0
br i1 %210, label %239, label %211
211: ; preds = %208
%212 = 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))
%213 = icmp eq i32 %212, 0
br i1 %213, label %239, label %214
214: ; preds = %211
%215 = 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))
%216 = icmp eq i32 %215, 0
br i1 %216, label %239, label %217
217: ; preds = %214
%218 = 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))
%219 = icmp eq i32 %218, 0
br i1 %219, label %239, label %220
220: ; preds = %217
%221 = 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))
%222 = icmp eq i32 %221, 0
br i1 %222, label %239, label %223
223: ; preds = %220
%224 = 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))
%225 = icmp eq i32 %224, 0
br i1 %225, label %239, label %226
226: ; preds = %223
%227 = 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))
%228 = icmp eq i32 %227, 0
br i1 %228, label %239, label %229
229: ; preds = %226
%230 = 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))
%231 = icmp eq i32 %230, 0
br i1 %231, label %239, label %232
232: ; preds = %229
%233 = 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))
%234 = icmp eq i32 %233, 0
br i1 %234, label %239, label %235
235: ; preds = %232
%236 = load i8, i8* %1
%237 = icmp eq i8 %236, 0
%238 = select i1 %237, i32 -504, i32 117
br label %239
239: ; preds = %100, %106, %112, %21, %56, %135, %42, %235, %232, %229, %226, %223, %220, %217, %214, %211, %208, %205, %202, %199, %196, %193, %190, %187, %184, %181, %178, %175, %172, %169, %166, %163, %160, %157, %154, %151, %148, %145, %13, %118, %96, %94, %92, %90, %88, %86, %84, %82, %80, %78, %76, %71, %69, %63, %61
%240 = phi i32 [ 114, %118 ], [ 113, %96 ], [ 112, %94 ], [ 111, %92 ], [ 110, %90 ], [ 109, %88 ], [ 108, %86 ], [ 100, %84 ], [ 115, %82 ], [ 504, %76 ], [ 505, %78 ], [ 506, %80 ], [ 502, %69 ], [ 503, %71 ], [ 501, %63 ], [ 101, %61 ], [ 116, %13 ], [ 201, %145 ], [ 202, %148 ], [ 203, %151 ], [ 204, %154 ], [ 205, %157 ], [ 206, %160 ], [ 207, %163 ], [ 208, %166 ], [ 209, %169 ], [ 210, %172 ], [ 211, %175 ], [ 212, %178 ], [ 213, %181 ], [ 214, %184 ], [ 215, %187 ], [ 216, %190 ], [ 217, %193 ], [ 301, %196 ], [ 302, %199 ], [ 303, %202 ], [ 304, %205 ], [ 305, %208 ], [ 306, %211 ], [ 307, %214 ], [ 308, %217 ], [ 309, %220 ], [ 218, %223 ], [ 219, %226 ], [ 220, %229 ], [ 310, %232 ], [ %238, %235 ], [ -501, %42 ], [ -501, %135 ], [ -501, %56 ], [ -501, %21 ], [ -502, %100 ], [ -502, %106 ], [ -501, %112 ]
ret i32 %240
}