#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*/ free(char *);
scalar_t__ isalnum(char);
scalar_t__ isalpha(char);
scalar_t__ isdigit(char);
scalar_t__ iskanji(char *);
char *malloc(scalar_t__);
int /*<<< orphan*/ strcpy(char *, char *);
scalar_t__ strlen(char *);
int get_token(char *line, char *token) {
  char *p, *ptk, str;
  char *pp;
  p = line;
  ptk = token;
  while (*p == ' ' || *p == '\t')
    ++p;
  if (*p == '\0') {
    pp = malloc(strlen(p) + 1);
    strcpy(pp, p);
    strcpy(line, pp);
    free(pp);
    token[0] = '\0';
    return 1;
  }
  if (iskanji(p)) {
    do {
      *ptk++ = *p++;
      if (!iskanji(p)) {
      }
    } while (iskanji(p) && *p != '\0');
    strcpy(token, "KANJI");
  } else if (isalpha(*p)) {
    do {
      *ptk++ = *p++;
    } while ((isalnum(*p) || *p == '_') && *p != '\0');
  } else if (*p == '0') {
    *ptk++ = *p++;
    if (*p == 'x' || *p == 'X') {
      do {
        *ptk++ = *p++;
      } while ((isdigit(*p) || *p == '.' || (*p >= 'a' && *p <= 'f') ||
                (*p >= 'A' && *p <= 'F')) &&
               *p != '\0');
    } else if (isdigit(*p)) {
      do {
        *ptk++ = *p++;
      } while ((isdigit(*p) || *p == '.') && *p != '\0');
    } else if (*p == '.') {
      do {
        *ptk++ = *p++;
      } while ((isdigit(*p) || *p == '.') && *p != '\0');
    }
  } else if (isdigit(*p)) {
    do {
      *ptk++ = *p++;
    } while ((isdigit(*p) || *p == '.') && *p != '\0');
  } else if (*p == '\'' || *p == '"') {
    str = *p;
    do {
      *ptk++ = *p++;
    } while (*p != str && *p != '\0');
    *ptk++ = *p++;
  } else if (*p == '*') {
    str = *p;
    *ptk++ = *p++;
    if (*p == str || *p == '/' || *p == '=') {
      *ptk++ = *p++;
    } else {
      do {
        *ptk++ = *p++;
      } while ((isalnum(*p) || *p == '_') && *p != '\0');
    }
  } else if (*p == '+') {
    str = *p;
    *ptk++ = *p++;
    if (*p == str || *p == '=') {
      *ptk++ = *p++;
    }
  } else if (*p == '-') {
    str = *p;
    *ptk++ = *p++;
    if (*p == str || *p == '>' || *p == '=') {
      *ptk++ = *p++;
    }
  } else if (*p == '/') {
    str = *p;
    *ptk++ = *p++;
    if (*p == str || *p == '*' || *p == '=') {
      *ptk++ = *p++;
    }
  } else if (*p == '&' || *p == '|') {
    str = *p;
    *ptk++ = *p++;
    if (*p == str || *p == '=') {
      *ptk++ = *p++;
    }
  } else if (*p == '>' || *p == '<') {
    str = *p;
    *ptk++ = *p++;
    if (*p == str || *p == '=') {
      *ptk++ = *p++;
    }
  } else if (*p == '!') {
    str = *p;
    *ptk++ = *p++;
    if (*p == '=') {
      *ptk++ = *p++;
    }
  } else if (*p == '=') {
    str = *p;
    *ptk++ = *p++;
    if (*p == str) {
      *ptk++ = *p++;
    }
  } else {
    *ptk++ = *p++;
  }
  *ptk = '\0';
  pp = malloc(strlen(p) + 1);
  strcpy(pp, p);
  strcpy(line, pp);
  free(pp);
  return 0;
}


x86 assembly (clang, -O0):
<get_token>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x39(%rbp)
je     11c5 <get_token+0x45>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
test   $0x1,%al
jne    11d5 <get_token+0x55>
jmp    11e6 <get_token+0x66>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    11a0 <get_token+0x20>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1245 <get_token+0xc5>
mov    -0x20(%rbp),%rdi
call   1060 <strlen@plt>
mov    %rax,%rdi
add    $0x1,%rdi
call   1080 <malloc@plt>
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rdi
mov    -0x20(%rbp),%rsi
call   1050 <strcpy@plt>
mov    -0x10(%rbp),%rdi
mov    -0x38(%rbp),%rsi
call   1050 <strcpy@plt>
mov    -0x38(%rbp),%rdi
call   1030 <free@plt>
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    1c32 <get_token+0xab2>
mov    -0x20(%rbp),%rdi
call   1090 <iskanji@plt>
cmp    $0x0,%rax
je     12e7 <get_token+0x167>
jmp    125d <get_token+0xdd>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rdi
call   1090 <iskanji@plt>
cmp    $0x0,%rax
jne    1297 <get_token+0x117>
jmp    1297 <get_token+0x117>
jmp    129c <get_token+0x11c>
mov    -0x20(%rbp),%rdi
call   1090 <iskanji@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x3a(%rbp)
je     12c7 <get_token+0x147>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
test   $0x1,%al
jne    125d <get_token+0xdd>
mov    -0x18(%rbp),%rdi
lea    0xd23(%rip),%rsi
call   1050 <strcpy@plt>
jmp    1be8 <get_token+0xa68>
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   10a0 <isalpha@plt>
cmp    $0x0,%rax
je     136f <get_token+0x1ef>
jmp    1302 <get_token+0x182>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1070 <isalnum@plt>
cmp    $0x0,%rax
jne    134f <get_token+0x1cf>
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x5f,%ecx
mov    %al,-0x3b(%rbp)
jne    135f <get_token+0x1df>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x3b(%rbp)
mov    -0x3b(%rbp),%al
test   $0x1,%al
jne    1302 <get_token+0x182>
jmp    1be3 <get_token+0xa63>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jne    1591 <get_token+0x411>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x78,%eax
je     13c1 <get_token+0x241>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x58,%eax
jne    1478 <get_token+0x2f8>
jmp    13c6 <get_token+0x246>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    1458 <get_token+0x2d8>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
je     1458 <get_token+0x2d8>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x61,%eax
jl     142e <get_token+0x2ae>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x66,%eax
jle    1458 <get_token+0x2d8>
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x41,%ecx
mov    %al,-0x3c(%rbp)
jl     1468 <get_token+0x2e8>
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x3c(%rbp)
jg     1468 <get_token+0x2e8>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x3c(%rbp)
mov    -0x3c(%rbp),%al
test   $0x1,%al
jne    13c6 <get_token+0x246>
jmp    158c <get_token+0x40c>
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1500 <get_token+0x380>
jmp    1493 <get_token+0x313>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    14e0 <get_token+0x360>
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x2e,%ecx
mov    %al,-0x3d(%rbp)
jne    14f0 <get_token+0x370>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x3d(%rbp)
mov    -0x3d(%rbp),%al
test   $0x1,%al
jne    1493 <get_token+0x313>
jmp    1587 <get_token+0x407>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
jne    1582 <get_token+0x402>
jmp    1515 <get_token+0x395>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    1562 <get_token+0x3e2>
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x2e,%ecx
mov    %al,-0x3e(%rbp)
jne    1572 <get_token+0x3f2>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x3e(%rbp)
mov    -0x3e(%rbp),%al
test   $0x1,%al
jne    1515 <get_token+0x395>
jmp    1582 <get_token+0x402>
jmp    1587 <get_token+0x407>
jmp    158c <get_token+0x40c>
jmp    1bde <get_token+0xa5e>
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1619 <get_token+0x499>
jmp    15ac <get_token+0x42c>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    15f9 <get_token+0x479>
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x2e,%ecx
mov    %al,-0x3f(%rbp)
jne    1609 <get_token+0x489>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x3f(%rbp)
mov    -0x3f(%rbp),%al
test   $0x1,%al
jne    15ac <get_token+0x42c>
jmp    1bd9 <get_token+0xa59>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x27,%eax
je     1639 <get_token+0x4b9>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    16be <get_token+0x53e>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
movsbl -0x29(%rbp),%edx
xor    %eax,%eax
cmp    %edx,%ecx
mov    %al,-0x40(%rbp)
je     168c <get_token+0x50c>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x40(%rbp)
mov    -0x40(%rbp),%al
test   $0x1,%al
jne    1642 <get_token+0x4c2>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bd4 <get_token+0xa54>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    17ca <get_token+0x64a>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x29(%rbp),%ecx
cmp    %ecx,%eax
je     172c <get_token+0x5ac>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
je     172c <get_token+0x5ac>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1753 <get_token+0x5d3>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    17c5 <get_token+0x645>
jmp    1758 <get_token+0x5d8>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1070 <isalnum@plt>
cmp    $0x0,%rax
jne    17a5 <get_token+0x625>
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x5f,%ecx
mov    %al,-0x41(%rbp)
jne    17b5 <get_token+0x635>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x41(%rbp)
mov    -0x41(%rbp),%al
test   $0x1,%al
jne    1758 <get_token+0x5d8>
jmp    17c5 <get_token+0x645>
jmp    1bcf <get_token+0xa4f>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2b,%eax
jne    184f <get_token+0x6cf>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x29(%rbp),%ecx
cmp    %ecx,%eax
je     1828 <get_token+0x6a8>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    184a <get_token+0x6ca>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bca <get_token+0xa4a>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    18e4 <get_token+0x764>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x29(%rbp),%ecx
cmp    %ecx,%eax
je     18bd <get_token+0x73d>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
je     18bd <get_token+0x73d>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    18df <get_token+0x75f>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bc5 <get_token+0xa45>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    1979 <get_token+0x7f9>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x29(%rbp),%ecx
cmp    %ecx,%eax
je     1952 <get_token+0x7d2>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
je     1952 <get_token+0x7d2>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1974 <get_token+0x7f4>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bc0 <get_token+0xa40>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x26,%eax
je     1999 <get_token+0x819>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7c,%eax
jne    1a0e <get_token+0x88e>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x29(%rbp),%ecx
cmp    %ecx,%eax
je     19e7 <get_token+0x867>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1a09 <get_token+0x889>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bbb <get_token+0xa3b>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
je     1a2e <get_token+0x8ae>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3c,%eax
jne    1aa3 <get_token+0x923>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x29(%rbp),%ecx
cmp    %ecx,%eax
je     1a7c <get_token+0x8fc>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1a9e <get_token+0x91e>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bb6 <get_token+0xa36>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x21,%eax
jne    1b15 <get_token+0x995>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1b10 <get_token+0x990>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bb1 <get_token+0xa31>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
jne    1b8a <get_token+0xa0a>
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x29(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x29(%rbp),%ecx
cmp    %ecx,%eax
jne    1b85 <get_token+0xa05>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bac <get_token+0xa2c>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1bb1 <get_token+0xa31>
jmp    1bb6 <get_token+0xa36>
jmp    1bbb <get_token+0xa3b>
jmp    1bc0 <get_token+0xa40>
jmp    1bc5 <get_token+0xa45>
jmp    1bca <get_token+0xa4a>
jmp    1bcf <get_token+0xa4f>
jmp    1bd4 <get_token+0xa54>
jmp    1bd9 <get_token+0xa59>
jmp    1bde <get_token+0xa5e>
jmp    1be3 <get_token+0xa63>
jmp    1be8 <get_token+0xa68>
mov    -0x28(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x20(%rbp),%rdi
call   1060 <strlen@plt>
mov    %rax,%rdi
add    $0x1,%rdi
call   1080 <malloc@plt>
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rdi
mov    -0x20(%rbp),%rsi
call   1050 <strcpy@plt>
mov    -0x10(%rbp),%rdi
mov    -0x38(%rbp),%rsi
call   1050 <strcpy@plt>
mov    -0x38(%rbp),%rdi
call   1030 <free@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_token>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rsi,%r15
mov    %rdi,%r14
lea    0x1(%rdi),%rbx
jmp    11a4 <get_token+0x24>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rbx
movzbl -0x1(%rbx),%eax
cmp    $0x9,%al
je     11a0 <get_token+0x20>
cmp    $0x20,%al
je     11a0 <get_token+0x20>
test   %al,%al
jne    11f8 <get_token+0x78>
add    $0xffffffffffffffff,%rbx
mov    %rbx,%rdi
call   1060 <strlen@plt>
lea    0x1(%rax),%rdi
call   1080 <malloc@plt>
mov    %rax,%r12
mov    %rax,%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
mov    %r14,%rdi
mov    %r12,%rsi
call   1050 <strcpy@plt>
mov    %r12,%rdi
call   1030 <free@plt>
movb   $0x0,(%r15)
mov    $0x1,%eax
jmp    1296 <get_token+0x116>
lea    -0x1(%rbx),%rdi
call   1090 <iskanji@plt>
mov    -0x1(%rbx),%cl
test   %rax,%rax
je     12a0 <get_token+0x120>
lea    0x1(%r15),%rax
mov    %rbx,%rdx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %rdx,%rbx
mov    %rax,%r12
mov    %cl,-0x1(%rax)
mov    %rdx,%rdi
call   1090 <iskanji@plt>
mov    %rbx,%rdi
call   1090 <iskanji@plt>
test   %rax,%rax
je     124e <get_token+0xce>
movzbl (%rbx),%ecx
lea    0x1(%rbx),%rdx
lea    0x1(%r12),%rax
test   %cl,%cl
jne    1220 <get_token+0xa0>
lea    0xf1b(%rip),%rsi
mov    %r15,%rdi
call   1050 <strcpy@plt>
movb   $0x0,(%r12)
mov    %rbx,%rdi
call   1060 <strlen@plt>
lea    0x1(%rax),%rdi
call   1080 <malloc@plt>
mov    %rax,%r15
mov    %rax,%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
mov    %r14,%rdi
mov    %r15,%rsi
call   1050 <strcpy@plt>
mov    %r15,%rdi
call   1030 <free@plt>
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret
movsbl %cl,%edi
call   10a0 <isalpha@plt>
mov    -0x1(%rbx),%cl
test   %rax,%rax
je     12f3 <get_token+0x173>
add    $0x1,%r15
mov    %rbx,%rax
jmp    12cd <get_token+0x14d>
nopl   0x0(%rax)
lea    0x1(%rbx),%rax
lea    0x1(%r12),%r15
test   %cl,%cl
je     125d <get_token+0xdd>
mov    %rax,%rbx
mov    %r15,%r12
mov    %cl,-0x1(%r15)
movsbl (%rax),%edi
call   1070 <isalnum@plt>
movzbl (%rbx),%ecx
test   %rax,%rax
jne    12c0 <get_token+0x140>
cmp    $0x5f,%cl
mov    $0x5f,%cl
je     12c0 <get_token+0x140>
jmp    125d <get_token+0xdd>
lea    0x1(%rbx),%r13
cmp    $0x30,%cl
jne    136d <get_token+0x1ed>
movb   $0x30,(%r15)
mov    (%rbx),%cl
mov    %ecx,%eax
or     $0x20,%al
cmp    $0x78,%al
jne    1407 <get_token+0x287>
add    $0x2,%r15
movabs $0x1f8000001f80001,%rbx
mov    %r15,%r12
jmp    133c <get_token+0x1bc>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
test   %cl,%cl
je     1365 <get_token+0x1e5>
add    $0x1,%r13
add    $0x1,%r12
mov    %cl,-0x1(%r12)
movsbl 0x0(%r13),%edi
call   1040 <isdigit@plt>
movzbl 0x0(%r13),%ecx
test   %rax,%rax
jne    1330 <get_token+0x1b0>
lea    -0x2e(%rcx),%eax
cmp    $0x38,%al
ja     1365 <get_token+0x1e5>
movzbl %al,%eax
bt     %rax,%rbx
jb     1334 <get_token+0x1b4>
mov    %r13,%rbx
jmp    125d <get_token+0xdd>
movsbl %cl,%edi
call   1040 <isdigit@plt>
mov    -0x1(%rbx),%cl
test   %rax,%rax
je     13c7 <get_token+0x247>
add    $0x1,%r15
mov    %rbx,%rax
jmp    13a1 <get_token+0x221>
cs nopw 0x0(%rax,%rax,1)
lea    0x1(%rbx),%rax
lea    0x1(%r12),%r15
test   %cl,%cl
je     125d <get_token+0xdd>
mov    %rax,%rbx
mov    %r15,%r12
mov    %cl,-0x1(%r15)
movsbl (%rax),%edi
call   1040 <isdigit@plt>
movzbl (%rbx),%ecx
test   %rax,%rax
jne    1390 <get_token+0x210>
cmp    $0x2e,%cl
mov    $0x2e,%cl
je     1390 <get_token+0x210>
jmp    125d <get_token+0xdd>
lea    -0x21(%rcx),%eax
cmp    $0x5b,%al
ja     1590 <get_token+0x410>
movzbl %al,%eax
lea    0xc24(%rip),%rdx
movslq (%rdx,%rax,4),%rax
add    %rdx,%rax
jmp    *%rax
mov    %cl,(%r15)
mov    (%rbx),%al
cmp    %cl,%al
je     13f6 <get_token+0x276>
cmp    $0x3d,%al
jne    1593 <get_token+0x413>
add    $0x1,%rbx
mov    %al,0x1(%r15)
add    $0x2,%r15
jmp    1597 <get_token+0x417>
movsbl %cl,%edi
call   1040 <isdigit@plt>
mov    (%rbx),%cl
test   %rax,%rax
je     1457 <get_token+0x2d7>
add    $0x2,%r15
jmp    142d <get_token+0x2ad>
lea    0x1(%rbx),%r13
lea    0x1(%r12),%r15
test   %cl,%cl
je     125d <get_token+0xdd>
mov    %r13,%rbx
mov    %r15,%r12
mov    %cl,-0x1(%r15)
movsbl 0x0(%r13),%edi
call   1040 <isdigit@plt>
movzbl 0x0(%r13),%ecx
test   %rax,%rax
jne    141c <get_token+0x29c>
cmp    $0x2e,%cl
mov    $0x2e,%cl
je     141c <get_token+0x29c>
jmp    125d <get_token+0xdd>
cmp    $0x2e,%cl
jne    1593 <get_token+0x413>
add    $0x2,%r15
mov    $0x2e,%cl
jmp    1479 <get_token+0x2f9>
lea    0x1(%rbx),%r13
lea    0x1(%r12),%r15
test   %cl,%cl
je     125d <get_token+0xdd>
mov    %r13,%rbx
mov    %r15,%r12
mov    %cl,-0x1(%r15)
movsbl 0x0(%r13),%edi
call   1040 <isdigit@plt>
movzbl 0x0(%r13),%ecx
test   %rax,%rax
jne    1468 <get_token+0x2e8>
cmp    $0x2e,%cl
mov    $0x2e,%cl
je     1468 <get_token+0x2e8>
jmp    125d <get_token+0xdd>
add    $0x1,%r15
mov    %r15,%r12
mov    %ecx,%eax
mov    %al,-0x1(%r12)
movzbl (%rbx),%eax
add    $0x1,%rbx
add    $0x1,%r12
cmp    %cl,%al
je     14c4 <get_token+0x344>
test   %al,%al
jne    14ac <get_token+0x32c>
mov    %al,-0x1(%r12)
jmp    125d <get_token+0xdd>
movb   $0x21,(%r15)
jmp    157c <get_token+0x3fc>
movb   $0x2a,(%r15)
movzbl (%rbx),%ecx
cmp    $0x3d,%rcx
ja     159f <get_token+0x41f>
movabs $0x2000840000000000,%rax
bt     %rcx,%rax
jae    159f <get_token+0x41f>
add    $0x1,%rbx
mov    %cl,0x1(%r15)
add    $0x2,%r15
jmp    1597 <get_token+0x417>
movb   $0x2b,(%r15)
mov    (%rbx),%al
cmp    $0x2b,%al
jne    13ee <get_token+0x26e>
jmp    13f6 <get_token+0x276>
lea    0x1(%r15),%r12
movb   $0x2d,(%r15)
movzbl (%rbx),%eax
cmp    $0x3e,%rax
ja     125d <get_token+0xdd>
movabs $0x6000200000000000,%rcx
jmp    1560 <get_token+0x3e0>
lea    0x1(%r15),%r12
movb   $0x2f,(%r15)
movzbl (%rbx),%eax
cmp    $0x3d,%rax
ja     125d <get_token+0xdd>
movabs $0x2000840000000000,%rcx
bt     %rax,%rcx
jae    125d <get_token+0xdd>
add    $0x1,%rbx
mov    %al,0x1(%r15)
add    $0x2,%r15
jmp    1597 <get_token+0x417>
movb   $0x3d,(%r15)
cmpb   $0x3d,(%rbx)
jne    1593 <get_token+0x413>
add    $0x1,%rbx
movb   $0x3d,0x1(%r15)
add    $0x2,%r15
jmp    1597 <get_token+0x417>
mov    %cl,(%r15)
add    $0x1,%r15
mov    %r15,%r12
jmp    125d <get_token+0xdd>
add    $0x2,%r15
jmp    15b6 <get_token+0x436>
lea    0x1(%rbx),%r13
lea    0x1(%r12),%r15
test   %cl,%cl
je     125d <get_token+0xdd>
mov    %r13,%rbx
mov    %r15,%r12
mov    %cl,-0x1(%r15)
movsbl 0x0(%r13),%edi
call   1070 <isalnum@plt>
movzbl 0x0(%r13),%ecx
test   %rax,%rax
jne    15a5 <get_token+0x425>
cmp    $0x5f,%cl
mov    $0x5f,%cl
je     15a5 <get_token+0x425>
jmp    125d <get_token+0xdd>

LLVM IR (-O0):
@.str = [6 x i8] c"KANJI\00"
define i32 @get_token(i8* %0, i8* %1) {
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i8
%9 = alloca i8*
store i8* %0, i8** %4
store i8* %1, i8** %5
%10 = load i8*, i8** %4
store i8* %10, i8** %6
%11 = load i8*, i8** %5
store i8* %11, i8** %7
br label %12
12: ; preds = %24, %2
%13 = load i8*, i8** %6
%14 = load i8, i8* %13
%15 = sext i8 %14 to i32
%16 = icmp eq i32 %15, 32
br i1 %16, label %22, label %17
17: ; preds = %12
%18 = load i8*, i8** %6
%19 = load i8, i8* %18
%20 = sext i8 %19 to i32
%21 = icmp eq i32 %20, 9
br label %22
22: ; preds = %17, %12
%23 = phi i1 [ true, %12 ], [ %21, %17 ]
br i1 %23, label %24, label %27
24: ; preds = %22
%25 = load i8*, i8** %6
%26 = getelementptr inbounds i8, i8* %25, i32 1
store i8* %26, i8** %6
br label %12
27: ; preds = %22
%28 = load i8*, i8** %6
%29 = load i8, i8* %28
%30 = sext i8 %29 to i32
%31 = icmp eq i32 %30, 0
br i1 %31, label %32, label %47
32: ; preds = %27
%33 = load i8*, i8** %6
%34 = call i64 @strlen(i8* %33)
%35 = add nsw i64 %34, 1
%36 = call i8* @malloc(i64 %35)
store i8* %36, i8** %9
%37 = load i8*, i8** %9
%38 = load i8*, i8** %6
%39 = call i32 @strcpy(i8* %37, i8* %38)
%40 = load i8*, i8** %4
%41 = load i8*, i8** %9
%42 = call i32 @strcpy(i8* %40, i8* %41)
%43 = load i8*, i8** %9
%44 = call i32 @free(i8* %43)
%45 = load i8*, i8** %5
%46 = getelementptr inbounds i8, i8* %45, i64 0
store i8 0, i8* %46
store i32 1, i32* %3
br label %622
47: ; preds = %27
%48 = load i8*, i8** %6
%49 = call i64 @iskanji(i8* %48)
%50 = icmp ne i64 %49, 0
br i1 %50, label %51, label %77
51: ; preds = %47
br label %52
52: ; preds = %72, %51
%53 = load i8*, i8** %6
%54 = getelementptr inbounds i8, i8* %53, i32 1
store i8* %54, i8** %6
%55 = load i8, i8* %53
%56 = load i8*, i8** %7
%57 = getelementptr inbounds i8, i8* %56, i32 1
store i8* %57, i8** %7
store i8 %55, i8* %56
%58 = load i8*, i8** %6
%59 = call i64 @iskanji(i8* %58)
%60 = icmp ne i64 %59, 0
br i1 %60, label %62, label %61
61: ; preds = %52
br label %62
62: ; preds = %61, %52
br label %63
63: ; preds = %62
%64 = load i8*, i8** %6
%65 = call i64 @iskanji(i8* %64)
%66 = icmp ne i64 %65, 0
br i1 %66, label %67, label %72
67: ; preds = %63
%68 = load i8*, i8** %6
%69 = load i8, i8* %68
%70 = sext i8 %69 to i32
%71 = icmp ne i32 %70, 0
br label %72
72: ; preds = %67, %63
%73 = phi i1 [ false, %63 ], [ %71, %67 ]
br i1 %73, label %52, label %74
74: ; preds = %72
%75 = load i8*, i8** %5
%76 = call i32 @strcpy(i8* %75, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
br label %608
77: ; preds = %47
%78 = load i8*, i8** %6
%79 = load i8, i8* %78
%80 = call i64 @isalpha(i8 signext %79)
%81 = icmp ne i64 %80, 0
br i1 %81, label %82, label %107
82: ; preds = %77
br label %83
83: ; preds = %104, %82
%84 = load i8*, i8** %6
%85 = getelementptr inbounds i8, i8* %84, i32 1
store i8* %85, i8** %6
%86 = load i8, i8* %84
%87 = load i8*, i8** %7
%88 = getelementptr inbounds i8, i8* %87, i32 1
store i8* %88, i8** %7
store i8 %86, i8* %87
br label %89
89: ; preds = %83
%90 = load i8*, i8** %6
%91 = load i8, i8* %90
%92 = call i64 @isalnum(i8 signext %91)
%93 = icmp ne i64 %92, 0
br i1 %93, label %99, label %94
94: ; preds = %89
%95 = load i8*, i8** %6
%96 = load i8, i8* %95
%97 = sext i8 %96 to i32
%98 = icmp eq i32 %97, 95
br i1 %98, label %99, label %104
99: ; preds = %94, %89
%100 = load i8*, i8** %6
%101 = load i8, i8* %100
%102 = sext i8 %101 to i32
%103 = icmp ne i32 %102, 0
br label %104
104: ; preds = %99, %94
%105 = phi i1 [ false, %94 ], [ %103, %99 ]
br i1 %105, label %83, label %106
106: ; preds = %104
br label %607
107: ; preds = %77
%108 = load i8*, i8** %6
%109 = load i8, i8* %108
%110 = sext i8 %109 to i32
%111 = icmp eq i32 %110, 48
br i1 %111, label %112, label %235
112: ; preds = %107
%113 = load i8*, i8** %6
%114 = getelementptr inbounds i8, i8* %113, i32 1
store i8* %114, i8** %6
%115 = load i8, i8* %113
%116 = load i8*, i8** %7
%117 = getelementptr inbounds i8, i8* %116, i32 1
store i8* %117, i8** %7
store i8 %115, i8* %116
%118 = load i8*, i8** %6
%119 = load i8, i8* %118
%120 = sext i8 %119 to i32
%121 = icmp eq i32 %120, 120
br i1 %121, label %127, label %122
122: ; preds = %112
%123 = load i8*, i8** %6
%124 = load i8, i8* %123
%125 = sext i8 %124 to i32
%126 = icmp eq i32 %125, 88
br i1 %126, label %127, label %172
127: ; preds = %122, %112
br label %128
128: ; preds = %169, %127
%129 = load i8*, i8** %6
%130 = getelementptr inbounds i8, i8* %129, i32 1
store i8* %130, i8** %6
%131 = load i8, i8* %129
%132 = load i8*, i8** %7
%133 = getelementptr inbounds i8, i8* %132, i32 1
store i8* %133, i8** %7
store i8 %131, i8* %132
br label %134
134: ; preds = %128
%135 = load i8*, i8** %6
%136 = load i8, i8* %135
%137 = call i64 @isdigit(i8 signext %136)
%138 = icmp ne i64 %137, 0
br i1 %138, label %164, label %139
139: ; preds = %134
%140 = load i8*, i8** %6
%141 = load i8, i8* %140
%142 = sext i8 %141 to i32
%143 = icmp eq i32 %142, 46
br i1 %143, label %164, label %144
144: ; preds = %139
%145 = load i8*, i8** %6
%146 = load i8, i8* %145
%147 = sext i8 %146 to i32
%148 = icmp sge i32 %147, 97
br i1 %148, label %149, label %154
149: ; preds = %144
%150 = load i8*, i8** %6
%151 = load i8, i8* %150
%152 = sext i8 %151 to i32
%153 = icmp sle i32 %152, 102
br i1 %153, label %164, label %154
154: ; preds = %149, %144
%155 = load i8*, i8** %6
%156 = load i8, i8* %155
%157 = sext i8 %156 to i32
%158 = icmp sge i32 %157, 65
br i1 %158, label %159, label %169
159: ; preds = %154
%160 = load i8*, i8** %6
%161 = load i8, i8* %160
%162 = sext i8 %161 to i32
%163 = icmp sle i32 %162, 70
br i1 %163, label %164, label %169
164: ; preds = %159, %149, %139, %134
%165 = load i8*, i8** %6
%166 = load i8, i8* %165
%167 = sext i8 %166 to i32
%168 = icmp ne i32 %167, 0
br label %169
169: ; preds = %164, %159, %154
%170 = phi i1 [ false, %159 ], [ false, %154 ], [ %168, %164 ]
br i1 %170, label %128, label %171
171: ; preds = %169
br label %234
172: ; preds = %122
%173 = load i8*, i8** %6
%174 = load i8, i8* %173
%175 = call i64 @isdigit(i8 signext %174)
%176 = icmp ne i64 %175, 0
br i1 %176, label %177, label %202
177: ; preds = %172
br label %178
178: ; preds = %199, %177
%179 = load i8*, i8** %6
%180 = getelementptr inbounds i8, i8* %179, i32 1
store i8* %180, i8** %6
%181 = load i8, i8* %179
%182 = load i8*, i8** %7
%183 = getelementptr inbounds i8, i8* %182, i32 1
store i8* %183, i8** %7
store i8 %181, i8* %182
br label %184
184: ; preds = %178
%185 = load i8*, i8** %6
%186 = load i8, i8* %185
%187 = call i64 @isdigit(i8 signext %186)
%188 = icmp ne i64 %187, 0
br i1 %188, label %194, label %189
189: ; preds = %184
%190 = load i8*, i8** %6
%191 = load i8, i8* %190
%192 = sext i8 %191 to i32
%193 = icmp eq i32 %192, 46
br i1 %193, label %194, label %199
194: ; preds = %189, %184
%195 = load i8*, i8** %6
%196 = load i8, i8* %195
%197 = sext i8 %196 to i32
%198 = icmp ne i32 %197, 0
br label %199
199: ; preds = %194, %189
%200 = phi i1 [ false, %189 ], [ %198, %194 ]
br i1 %200, label %178, label %201
201: ; preds = %199
br label %233
202: ; preds = %172
%203 = load i8*, i8** %6
%204 = load i8, i8* %203
%205 = sext i8 %204 to i32
%206 = icmp eq i32 %205, 46
br i1 %206, label %207, label %232
207: ; preds = %202
br label %208
208: ; preds = %229, %207
%209 = load i8*, i8** %6
%210 = getelementptr inbounds i8, i8* %209, i32 1
store i8* %210, i8** %6
%211 = load i8, i8* %209
%212 = load i8*, i8** %7
%213 = getelementptr inbounds i8, i8* %212, i32 1
store i8* %213, i8** %7
store i8 %211, i8* %212
br label %214
214: ; preds = %208
%215 = load i8*, i8** %6
%216 = load i8, i8* %215
%217 = call i64 @isdigit(i8 signext %216)
%218 = icmp ne i64 %217, 0
br i1 %218, label %224, label %219
219: ; preds = %214
%220 = load i8*, i8** %6
%221 = load i8, i8* %220
%222 = sext i8 %221 to i32
%223 = icmp eq i32 %222, 46
br i1 %223, label %224, label %229
224: ; preds = %219, %214
%225 = load i8*, i8** %6
%226 = load i8, i8* %225
%227 = sext i8 %226 to i32
%228 = icmp ne i32 %227, 0
br label %229
229: ; preds = %224, %219
%230 = phi i1 [ false, %219 ], [ %228, %224 ]
br i1 %230, label %208, label %231
231: ; preds = %229
br label %232
232: ; preds = %231, %202
br label %233
233: ; preds = %232, %201
br label %234
234: ; preds = %233, %171
br label %606
235: ; preds = %107
%236 = load i8*, i8** %6
%237 = load i8, i8* %236
%238 = call i64 @isdigit(i8 signext %237)
%239 = icmp ne i64 %238, 0
br i1 %239, label %240, label %265
240: ; preds = %235
br label %241
241: ; preds = %262, %240
%242 = load i8*, i8** %6
%243 = getelementptr inbounds i8, i8* %242, i32 1
store i8* %243, i8** %6
%244 = load i8, i8* %242
%245 = load i8*, i8** %7
%246 = getelementptr inbounds i8, i8* %245, i32 1
store i8* %246, i8** %7
store i8 %244, i8* %245
br label %247
247: ; preds = %241
%248 = load i8*, i8** %6
%249 = load i8, i8* %248
%250 = call i64 @isdigit(i8 signext %249)
%251 = icmp ne i64 %250, 0
br i1 %251, label %257, label %252
252: ; preds = %247
%253 = load i8*, i8** %6
%254 = load i8, i8* %253
%255 = sext i8 %254 to i32
%256 = icmp eq i32 %255, 46
br i1 %256, label %257, label %262
257: ; preds = %252, %247
%258 = load i8*, i8** %6
%259 = load i8, i8* %258
%260 = sext i8 %259 to i32
%261 = icmp ne i32 %260, 0
br label %262
262: ; preds = %257, %252
%263 = phi i1 [ false, %252 ], [ %261, %257 ]
br i1 %263, label %241, label %264
264: ; preds = %262
br label %605
265: ; preds = %235
%266 = load i8*, i8** %6
%267 = load i8, i8* %266
%268 = sext i8 %267 to i32
%269 = icmp eq i32 %268, 39
br i1 %269, label %275, label %270
270: ; preds = %265
%271 = load i8*, i8** %6
%272 = load i8, i8* %271
%273 = sext i8 %272 to i32
%274 = icmp eq i32 %273, 34
br i1 %274, label %275, label %304
275: ; preds = %270, %265
%276 = load i8*, i8** %6
%277 = load i8, i8* %276
store i8 %277, i8* %8
br label %278
278: ; preds = %296, %275
%279 = load i8*, i8** %6
%280 = getelementptr inbounds i8, i8* %279, i32 1
store i8* %280, i8** %6
%281 = load i8, i8* %279
%282 = load i8*, i8** %7
%283 = getelementptr inbounds i8, i8* %282, i32 1
store i8* %283, i8** %7
store i8 %281, i8* %282
br label %284
284: ; preds = %278
%285 = load i8*, i8** %6
%286 = load i8, i8* %285
%287 = sext i8 %286 to i32
%288 = load i8, i8* %8
%289 = sext i8 %288 to i32
%290 = icmp ne i32 %287, %289
br i1 %290, label %291, label %296
291: ; preds = %284
%292 = load i8*, i8** %6
%293 = load i8, i8* %292
%294 = sext i8 %293 to i32
%295 = icmp ne i32 %294, 0
br label %296
296: ; preds = %291, %284
%297 = phi i1 [ false, %284 ], [ %295, %291 ]
br i1 %297, label %278, label %298
298: ; preds = %296
%299 = load i8*, i8** %6
%300 = getelementptr inbounds i8, i8* %299, i32 1
store i8* %300, i8** %6
%301 = load i8, i8* %299
%302 = load i8*, i8** %7
%303 = getelementptr inbounds i8, i8* %302, i32 1
store i8* %303, i8** %7
store i8 %301, i8* %302
br label %604
304: ; preds = %270
%305 = load i8*, i8** %6
%306 = load i8, i8* %305
%307 = sext i8 %306 to i32
%308 = icmp eq i32 %307, 42
br i1 %308, label %309, label %365
309: ; preds = %304
%310 = load i8*, i8** %6
%311 = load i8, i8* %310
store i8 %311, i8* %8
%312 = load i8*, i8** %6
%313 = getelementptr inbounds i8, i8* %312, i32 1
store i8* %313, i8** %6
%314 = load i8, i8* %312
%315 = load i8*, i8** %7
%316 = getelementptr inbounds i8, i8* %315, i32 1
store i8* %316, i8** %7
store i8 %314, i8* %315
%317 = load i8*, i8** %6
%318 = load i8, i8* %317
%319 = sext i8 %318 to i32
%320 = load i8, i8* %8
%321 = sext i8 %320 to i32
%322 = icmp eq i32 %319, %321
br i1 %322, label %333, label %323
323: ; preds = %309
%324 = load i8*, i8** %6
%325 = load i8, i8* %324
%326 = sext i8 %325 to i32
%327 = icmp eq i32 %326, 47
br i1 %327, label %333, label %328
328: ; preds = %323
%329 = load i8*, i8** %6
%330 = load i8, i8* %329
%331 = sext i8 %330 to i32
%332 = icmp eq i32 %331, 61
br i1 %332, label %333, label %339
333: ; preds = %328, %323, %309
%334 = load i8*, i8** %6
%335 = getelementptr inbounds i8, i8* %334, i32 1
store i8* %335, i8** %6
%336 = load i8, i8* %334
%337 = load i8*, i8** %7
%338 = getelementptr inbounds i8, i8* %337, i32 1
store i8* %338, i8** %7
store i8 %336, i8* %337
br label %364
339: ; preds = %328
br label %340
340: ; preds = %361, %339
%341 = load i8*, i8** %6
%342 = getelementptr inbounds i8, i8* %341, i32 1
store i8* %342, i8** %6
%343 = load i8, i8* %341
%344 = load i8*, i8** %7
%345 = getelementptr inbounds i8, i8* %344, i32 1
store i8* %345, i8** %7
store i8 %343, i8* %344
br label %346
346: ; preds = %340
%347 = load i8*, i8** %6
%348 = load i8, i8* %347
%349 = call i64 @isalnum(i8 signext %348)
%350 = icmp ne i64 %349, 0
br i1 %350, label %356, label %351
351: ; preds = %346
%352 = load i8*, i8** %6
%353 = load i8, i8* %352
%354 = sext i8 %353 to i32
%355 = icmp eq i32 %354, 95
br i1 %355, label %356, label %361
356: ; preds = %351, %346
%357 = load i8*, i8** %6
%358 = load i8, i8* %357
%359 = sext i8 %358 to i32
%360 = icmp ne i32 %359, 0
br label %361
361: ; preds = %356, %351
%362 = phi i1 [ false, %351 ], [ %360, %356 ]
br i1 %362, label %340, label %363
363: ; preds = %361
br label %364
364: ; preds = %363, %333
br label %603
365: ; preds = %304
%366 = load i8*, i8** %6
%367 = load i8, i8* %366
%368 = sext i8 %367 to i32
%369 = icmp eq i32 %368, 43
br i1 %369, label %370, label %396
370: ; preds = %365
%371 = load i8*, i8** %6
%372 = load i8, i8* %371
store i8 %372, i8* %8
%373 = load i8*, i8** %6
%374 = getelementptr inbounds i8, i8* %373, i32 1
store i8* %374, i8** %6
%375 = load i8, i8* %373
%376 = load i8*, i8** %7
%377 = getelementptr inbounds i8, i8* %376, i32 1
store i8* %377, i8** %7
store i8 %375, i8* %376
%378 = load i8*, i8** %6
%379 = load i8, i8* %378
%380 = sext i8 %379 to i32
%381 = load i8, i8* %8
%382 = sext i8 %381 to i32
%383 = icmp eq i32 %380, %382
br i1 %383, label %389, label %384
384: ; preds = %370
%385 = load i8*, i8** %6
%386 = load i8, i8* %385
%387 = sext i8 %386 to i32
%388 = icmp eq i32 %387, 61
br i1 %388, label %389, label %395
389: ; preds = %384, %370
%390 = load i8*, i8** %6
%391 = getelementptr inbounds i8, i8* %390, i32 1
store i8* %391, i8** %6
%392 = load i8, i8* %390
%393 = load i8*, i8** %7
%394 = getelementptr inbounds i8, i8* %393, i32 1
store i8* %394, i8** %7
store i8 %392, i8* %393
br label %395
395: ; preds = %389, %384
br label %602
396: ; preds = %365
%397 = load i8*, i8** %6
%398 = load i8, i8* %397
%399 = sext i8 %398 to i32
%400 = icmp eq i32 %399, 45
br i1 %400, label %401, label %432
401: ; preds = %396
%402 = load i8*, i8** %6
%403 = load i8, i8* %402
store i8 %403, i8* %8
%404 = load i8*, i8** %6
%405 = getelementptr inbounds i8, i8* %404, i32 1
store i8* %405, i8** %6
%406 = load i8, i8* %404
%407 = load i8*, i8** %7
%408 = getelementptr inbounds i8, i8* %407, i32 1
store i8* %408, i8** %7
store i8 %406, i8* %407
%409 = load i8*, i8** %6
%410 = load i8, i8* %409
%411 = sext i8 %410 to i32
%412 = load i8, i8* %8
%413 = sext i8 %412 to i32
%414 = icmp eq i32 %411, %413
br i1 %414, label %425, label %415
415: ; preds = %401
%416 = load i8*, i8** %6
%417 = load i8, i8* %416
%418 = sext i8 %417 to i32
%419 = icmp eq i32 %418, 62
br i1 %419, label %425, label %420
420: ; preds = %415
%421 = load i8*, i8** %6
%422 = load i8, i8* %421
%423 = sext i8 %422 to i32
%424 = icmp eq i32 %423, 61
br i1 %424, label %425, label %431
425: ; preds = %420, %415, %401
%426 = load i8*, i8** %6
%427 = getelementptr inbounds i8, i8* %426, i32 1
store i8* %427, i8** %6
%428 = load i8, i8* %426
%429 = load i8*, i8** %7
%430 = getelementptr inbounds i8, i8* %429, i32 1
store i8* %430, i8** %7
store i8 %428, i8* %429
br label %431
431: ; preds = %425, %420
br label %601
432: ; preds = %396
%433 = load i8*, i8** %6
%434 = load i8, i8* %433
%435 = sext i8 %434 to i32
%436 = icmp eq i32 %435, 47
br i1 %436, label %437, label %468
437: ; preds = %432
%438 = load i8*, i8** %6
%439 = load i8, i8* %438
store i8 %439, i8* %8
%440 = load i8*, i8** %6
%441 = getelementptr inbounds i8, i8* %440, i32 1
store i8* %441, i8** %6
%442 = load i8, i8* %440
%443 = load i8*, i8** %7
%444 = getelementptr inbounds i8, i8* %443, i32 1
store i8* %444, i8** %7
store i8 %442, i8* %443
%445 = load i8*, i8** %6
%446 = load i8, i8* %445
%447 = sext i8 %446 to i32
%448 = load i8, i8* %8
%449 = sext i8 %448 to i32
%450 = icmp eq i32 %447, %449
br i1 %450, label %461, label %451
451: ; preds = %437
%452 = load i8*, i8** %6
%453 = load i8, i8* %452
%454 = sext i8 %453 to i32
%455 = icmp eq i32 %454, 42
br i1 %455, label %461, label %456
456: ; preds = %451
%457 = load i8*, i8** %6
%458 = load i8, i8* %457
%459 = sext i8 %458 to i32
%460 = icmp eq i32 %459, 61
br i1 %460, label %461, label %467
461: ; preds = %456, %451, %437
%462 = load i8*, i8** %6
%463 = getelementptr inbounds i8, i8* %462, i32 1
store i8* %463, i8** %6
%464 = load i8, i8* %462
%465 = load i8*, i8** %7
%466 = getelementptr inbounds i8, i8* %465, i32 1
store i8* %466, i8** %7
store i8 %464, i8* %465
br label %467
467: ; preds = %461, %456
br label %600
468: ; preds = %432
%469 = load i8*, i8** %6
%470 = load i8, i8* %469
%471 = sext i8 %470 to i32
%472 = icmp eq i32 %471, 38
br i1 %472, label %478, label %473
473: ; preds = %468
%474 = load i8*, i8** %6
%475 = load i8, i8* %474
%476 = sext i8 %475 to i32
%477 = icmp eq i32 %476, 124
br i1 %477, label %478, label %504
478: ; preds = %473, %468
%479 = load i8*, i8** %6
%480 = load i8, i8* %479
store i8 %480, i8* %8
%481 = load i8*, i8** %6
%482 = getelementptr inbounds i8, i8* %481, i32 1
store i8* %482, i8** %6
%483 = load i8, i8* %481
%484 = load i8*, i8** %7
%485 = getelementptr inbounds i8, i8* %484, i32 1
store i8* %485, i8** %7
store i8 %483, i8* %484
%486 = load i8*, i8** %6
%487 = load i8, i8* %486
%488 = sext i8 %487 to i32
%489 = load i8, i8* %8
%490 = sext i8 %489 to i32
%491 = icmp eq i32 %488, %490
br i1 %491, label %497, label %492
492: ; preds = %478
%493 = load i8*, i8** %6
%494 = load i8, i8* %493
%495 = sext i8 %494 to i32
%496 = icmp eq i32 %495, 61
br i1 %496, label %497, label %503
497: ; preds = %492, %478
%498 = load i8*, i8** %6
%499 = getelementptr inbounds i8, i8* %498, i32 1
store i8* %499, i8** %6
%500 = load i8, i8* %498
%501 = load i8*, i8** %7
%502 = getelementptr inbounds i8, i8* %501, i32 1
store i8* %502, i8** %7
store i8 %500, i8* %501
br label %503
503: ; preds = %497, %492
br label %599
504: ; preds = %473
%505 = load i8*, i8** %6
%506 = load i8, i8* %505
%507 = sext i8 %506 to i32
%508 = icmp eq i32 %507, 62
br i1 %508, label %514, label %509
509: ; preds = %504
%510 = load i8*, i8** %6
%511 = load i8, i8* %510
%512 = sext i8 %511 to i32
%513 = icmp eq i32 %512, 60
br i1 %513, label %514, label %540
514: ; preds = %509, %504
%515 = load i8*, i8** %6
%516 = load i8, i8* %515
store i8 %516, i8* %8
%517 = load i8*, i8** %6
%518 = getelementptr inbounds i8, i8* %517, i32 1
store i8* %518, i8** %6
%519 = load i8, i8* %517
%520 = load i8*, i8** %7
%521 = getelementptr inbounds i8, i8* %520, i32 1
store i8* %521, i8** %7
store i8 %519, i8* %520
%522 = load i8*, i8** %6
%523 = load i8, i8* %522
%524 = sext i8 %523 to i32
%525 = load i8, i8* %8
%526 = sext i8 %525 to i32
%527 = icmp eq i32 %524, %526
br i1 %527, label %533, label %528
528: ; preds = %514
%529 = load i8*, i8** %6
%530 = load i8, i8* %529
%531 = sext i8 %530 to i32
%532 = icmp eq i32 %531, 61
br i1 %532, label %533, label %539
533: ; preds = %528, %514
%534 = load i8*, i8** %6
%535 = getelementptr inbounds i8, i8* %534, i32 1
store i8* %535, i8** %6
%536 = load i8, i8* %534
%537 = load i8*, i8** %7
%538 = getelementptr inbounds i8, i8* %537, i32 1
store i8* %538, i8** %7
store i8 %536, i8* %537
br label %539
539: ; preds = %533, %528
br label %598
540: ; preds = %509
%541 = load i8*, i8** %6
%542 = load i8, i8* %541
%543 = sext i8 %542 to i32
%544 = icmp eq i32 %543, 33
br i1 %544, label %545, label %564
545: ; preds = %540
%546 = load i8*, i8** %6
%547 = load i8, i8* %546
store i8 %547, i8* %8
%548 = load i8*, i8** %6
%549 = getelementptr inbounds i8, i8* %548, i32 1
store i8* %549, i8** %6
%550 = load i8, i8* %548
%551 = load i8*, i8** %7
%552 = getelementptr inbounds i8, i8* %551, i32 1
store i8* %552, i8** %7
store i8 %550, i8* %551
%553 = load i8*, i8** %6
%554 = load i8, i8* %553
%555 = sext i8 %554 to i32
%556 = icmp eq i32 %555, 61
br i1 %556, label %557, label %563
557: ; preds = %545
%558 = load i8*, i8** %6
%559 = getelementptr inbounds i8, i8* %558, i32 1
store i8* %559, i8** %6
%560 = load i8, i8* %558
%561 = load i8*, i8** %7
%562 = getelementptr inbounds i8, i8* %561, i32 1
store i8* %562, i8** %7
store i8 %560, i8* %561
br label %563
563: ; preds = %557, %545
br label %597
564: ; preds = %540
%565 = load i8*, i8** %6
%566 = load i8, i8* %565
%567 = sext i8 %566 to i32
%568 = icmp eq i32 %567, 61
br i1 %568, label %569, label %590
569: ; preds = %564
%570 = load i8*, i8** %6
%571 = load i8, i8* %570
store i8 %571, i8* %8
%572 = load i8*, i8** %6
%573 = getelementptr inbounds i8, i8* %572, i32 1
store i8* %573, i8** %6
%574 = load i8, i8* %572
%575 = load i8*, i8** %7
%576 = getelementptr inbounds i8, i8* %575, i32 1
store i8* %576, i8** %7
store i8 %574, i8* %575
%577 = load i8*, i8** %6
%578 = load i8, i8* %577
%579 = sext i8 %578 to i32
%580 = load i8, i8* %8
%581 = sext i8 %580 to i32
%582 = icmp eq i32 %579, %581
br i1 %582, label %583, label %589
583: ; preds = %569
%584 = load i8*, i8** %6
%585 = getelementptr inbounds i8, i8* %584, i32 1
store i8* %585, i8** %6
%586 = load i8, i8* %584
%587 = load i8*, i8** %7
%588 = getelementptr inbounds i8, i8* %587, i32 1
store i8* %588, i8** %7
store i8 %586, i8* %587
br label %589
589: ; preds = %583, %569
br label %596
590: ; preds = %564
%591 = load i8*, i8** %6
%592 = getelementptr inbounds i8, i8* %591, i32 1
store i8* %592, i8** %6
%593 = load i8, i8* %591
%594 = load i8*, i8** %7
%595 = getelementptr inbounds i8, i8* %594, i32 1
store i8* %595, i8** %7
store i8 %593, i8* %594
br label %596
596: ; preds = %590, %589
br label %597
597: ; preds = %596, %563
br label %598
598: ; preds = %597, %539
br label %599
599: ; preds = %598, %503
br label %600
600: ; preds = %599, %467
br label %601
601: ; preds = %600, %431
br label %602
602: ; preds = %601, %395
br label %603
603: ; preds = %602, %364
br label %604
604: ; preds = %603, %298
br label %605
605: ; preds = %604, %264
br label %606
606: ; preds = %605, %234
br label %607
607: ; preds = %606, %106
br label %608
608: ; preds = %607, %74
%609 = load i8*, i8** %7
store i8 0, i8* %609
%610 = load i8*, i8** %6
%611 = call i64 @strlen(i8* %610)
%612 = add nsw i64 %611, 1
%613 = call i8* @malloc(i64 %612)
store i8* %613, i8** %9
%614 = load i8*, i8** %9
%615 = load i8*, i8** %6
%616 = call i32 @strcpy(i8* %614, i8* %615)
%617 = load i8*, i8** %4
%618 = load i8*, i8** %9
%619 = call i32 @strcpy(i8* %617, i8* %618)
%620 = load i8*, i8** %9
%621 = call i32 @free(i8* %620)
store i32 0, i32* %3
br label %622
622: ; preds = %608, %32
%623 = load i32, i32* %3
ret i32 %623
}

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