// File: /workspace/github_c_makefile_star2_O2/azhai[P]mlite/mlite.c
// Function: keyword
int keyword(char *s) {
	switch (*s) {
	case '<':	if (!strcmp(s, "<<")) return TOK_TO;
			return UNDEFINED;
	case '>':	if (!strcmp(s, ">>")) return TOK_FROM;
			return UNDEFINED;
	case 'a':	if (!strcmp(s, "also")) return TOK_ALSO;
			if (!strcmp(s, "and")) return TOK_AND;
			return UNDEFINED;
	case 'c':	if (!strcmp(s, "case")) return TOK_CASE;
			if (!strcmp(s, "compile")) return TOK_COMPILE;
			return UNDEFINED;
	case 'e':	if (!strcmp(s, "else")) return TOK_ELSE;
			if (!strcmp(s, "end")) return TOK_END;
			if (!strcmp(s, "eval")) return TOK_EVAL;
			if (!strcmp(s, "exception")) return TOK_EXCEPTION;
			return UNDEFINED;
	case 'f':	if (!strcmp(s, "fn")) return TOK_FN;
			if (!strcmp(s, "fun")) return TOK_FUN;
			return UNDEFINED;
	case 'h':	if (!strcmp(s, "handle")) return TOK_HANDLE;
			return UNDEFINED;
	case 'i':	if (!strcmp(s, "if")) return TOK_IF;
			if (!strcmp(s, "in")) return TOK_IN;
			if (!strcmp(s, "infix")) return TOK_INFIX;
			if (!strcmp(s, "infixr")) return TOK_INFIXR;
			return UNDEFINED;
	case 'l':	if (!strcmp(s, "let")) return TOK_LET;
			if (!strcmp(s, "local")) return TOK_LOCAL;
			return UNDEFINED;
	case 'n':	if (!strcmp(s, "nonfix")) return TOK_NONFIX;
			return UNDEFINED;
	case 'o':	if (!strcmp(s, "of")) return TOK_OF;
			if (!strcmp(s, "op")) return TOK_OP;
			if (!strcmp(s, "or")) return TOK_OR;
			return UNDEFINED;
	case 'r':	if (!strcmp(s, "raise")) return TOK_RAISE;
			return UNDEFINED;
	case 't':	if (!strcmp(s, "then")) return TOK_THEN;
			if (!strcmp(s, "type")) return TOK_TYPE;
			return UNDEFINED;
	case 'v':	if (!strcmp(s, "val")) return TOK_VAL;
			return UNDEFINED;
	case 'w':	if (!strcmp(s, "where")) return TOK_WHERE;
			return UNDEFINED;
	default:	return UNDEFINED;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
movzbl (%rdi), %ecx
pushq $-0x5
popq %rax
leal -0x61(%rcx), %edx
cmpl $0x16, %edx
ja 0x8a23
leaq 0xb66c(%rip), %rcx      # 0x14054
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
leaq 0xbcad(%rip), %rsi      # 0x146a5
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x8c89
leaq 0xbc9b(%rip), %rsi      # 0x146aa
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff37, %ecx       # imm = 0xFFFFFF37
jmp 0x8c66
cmpl $0x3e, %ecx
je 0x8c73
cmpl $0x3c, %ecx
jne 0x8c6c
cmpb $0x3c, 0x1(%rbx)
jne 0x8c6c
cmpb $0x0, 0x2(%rbx)
pushq $-0x6d
jmp 0x8c7f
leaq 0xbca4(%rip), %rsi      # 0x146f5
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff1d, %ecx       # imm = 0xFFFFFF1D
jmp 0x8c66
leaq 0xbc7d(%rip), %rsi      # 0x146e9
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff26, %ecx       # imm = 0xFFFFFF26
jmp 0x8c66
leaq 0xbc41(%rip), %rsi      # 0x146c8
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff2d, %ecx       # imm = 0xFFFFFF2D
jmp 0x8c66
leaq 0xbff4(%rip), %rsi      # 0x14a96
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x8c82
leaq 0xbbf5(%rip), %rsi      # 0x146ae
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff34, %ecx       # imm = 0xFFFFFF34
jmp 0x8c66
leaq 0xbbec(%rip), %rsi      # 0x146c0
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff1e, %ecx       # imm = 0xFFFFFF1E
jmp 0x8c66
cmpb $0x66, 0x1(%rbx)
jne 0x8af8
cmpb $0x0, 0x2(%rbx)
je 0x8cb3
cmpb $0x6e, 0x1(%rbx)
jne 0x8b08
cmpb $0x0, 0x2(%rbx)
je 0x8cc8
leaq 0xbbc3(%rip), %rsi      # 0x146d2
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x8ca5
leaq 0xbbb2(%rip), %rsi      # 0x146d8
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff29, %ecx       # imm = 0xFFFFFF29
jmp 0x8c66
leaq 0xbb75(%rip), %rsi      # 0x146b6
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x8c90
leaq 0xbb63(%rip), %rsi      # 0x146bb
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x8cac
leaq 0xbb50(%rip), %rsi      # 0x146bf
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x8cd6
leaq 0xc5bb(%rip), %rsi      # 0x15141
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff30, %ecx       # imm = 0xFFFFFF30
jmp 0x8c66
cmpb $0x6e, 0x1(%rbx)
jne 0x8baa
cmpb $0x0, 0x2(%rbx)
je 0x8cba
leaq 0xbb13(%rip), %rsi      # 0x146c4
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff2e, %ecx       # imm = 0xFFFFFF2E
jmp 0x8c66
leaq 0xbb13(%rip), %rsi      # 0x146df
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x8c97
leaq 0xbb00(%rip), %rsi      # 0x146e3
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff27, %ecx       # imm = 0xFFFFFF27
jmp 0x8c66
cmpb $0x66, 0x1(%rbx)
jne 0x8c04
cmpb $0x0, 0x2(%rbx)
je 0x8cc1
cmpb $0x70, 0x1(%rbx)
jne 0x8c14
cmpb $0x0, 0x2(%rbx)
je 0x8ccf
cmpb $0x72, 0x1(%rbx)
jne 0x8c6c
cmpb $0x0, 0x2(%rbx)
movl $0xffffff23, %ecx       # imm = 0xFFFFFF23
jmp 0x8c69
leaq 0xbac4(%rip), %rsi      # 0x146f0
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x8c9e
leaq 0xc849(%rip), %rsi      # 0x15488
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff1f, %ecx       # imm = 0xFFFFFF1F
jmp 0x8c66
leaq 0xc84b(%rip), %rsi      # 0x154a2
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff22, %ecx       # imm = 0xFFFFFF22
pushq $-0x5
popq %rax
cmovel %ecx, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
cmpb $0x3e, 0x1(%rbx)
jne 0x8c6c
cmpb $0x0, 0x2(%rbx)
pushq $-0x6c
popq %rcx
jmp 0x8c69
movl $0xffffff35, %eax       # imm = 0xFFFFFF35
jmp 0x8c6c
movl $0xffffff38, %eax       # imm = 0xFFFFFF38
jmp 0x8c6c
movl $0xffffff33, %eax       # imm = 0xFFFFFF33
jmp 0x8c6c
movl $0xffffff28, %eax       # imm = 0xFFFFFF28
jmp 0x8c6c
movl $0xffffff20, %eax       # imm = 0xFFFFFF20
jmp 0x8c6c
movl $0xffffff2a, %eax       # imm = 0xFFFFFF2A
jmp 0x8c6c
movl $0xffffff32, %eax       # imm = 0xFFFFFF32
jmp 0x8c6c
movl $0xffffff2c, %eax       # imm = 0xFFFFFF2C
jmp 0x8c6c
movl $0xffffff2f, %eax       # imm = 0xFFFFFF2F
jmp 0x8c6c
movl $0xffffff25, %eax       # imm = 0xFFFFFF25
jmp 0x8c6c
movl $0xffffff2b, %eax       # imm = 0xFFFFFF2B
jmp 0x8c6c
movl $0xffffff24, %eax       # imm = 0xFFFFFF24
jmp 0x8c6c
movl $0xffffff31, %eax       # imm = 0xFFFFFF31
jmp 0x8c6c