// File: /workspace/github_c_makefile_star2_O3/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
movl $0xfffffffb, %eax       # imm = 0xFFFFFFFB
leal -0x61(%rcx), %edx
cmpl $0x16, %edx
ja 0x9757
leaq 0xc938(%rip), %rcx      # 0x16054
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
leaq 0xcf79(%rip), %rsi      # 0x166a5
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x99c4
leaq 0xcf67(%rip), %rsi      # 0x166aa
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff37, %ecx       # imm = 0xFFFFFF37
jmp 0x999d
cmpl $0x3e, %ecx
je 0x99ac
cmpl $0x3c, %ecx
jne 0x99a5
cmpb $0x3c, 0x1(%rbx)
jne 0x99a5
cmpb $0x0, 0x2(%rbx)
movl $0xffffff93, %ecx       # imm = 0xFFFFFF93
jmp 0x99a2
leaq 0xcf6d(%rip), %rsi      # 0x166f5
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff1d, %ecx       # imm = 0xFFFFFF1D
jmp 0x999d
leaq 0xcf46(%rip), %rsi      # 0x166e9
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff26, %ecx       # imm = 0xFFFFFF26
jmp 0x999d
leaq 0xcf0a(%rip), %rsi      # 0x166c8
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff2d, %ecx       # imm = 0xFFFFFF2D
jmp 0x999d
leaq 0xd2bd(%rip), %rsi      # 0x16a96
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x99bd
leaq 0xcebe(%rip), %rsi      # 0x166ae
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff34, %ecx       # imm = 0xFFFFFF34
jmp 0x999d
leaq 0xceb5(%rip), %rsi      # 0x166c0
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff1e, %ecx       # imm = 0xFFFFFF1E
jmp 0x999d
cmpb $0x66, 0x1(%rbx)
jne 0x982f
cmpb $0x0, 0x2(%rbx)
je 0x99ee
cmpb $0x6e, 0x1(%rbx)
jne 0x983f
cmpb $0x0, 0x2(%rbx)
je 0x9a03
leaq 0xce8c(%rip), %rsi      # 0x166d2
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x99e0
leaq 0xce7b(%rip), %rsi      # 0x166d8
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff29, %ecx       # imm = 0xFFFFFF29
jmp 0x999d
leaq 0xce3e(%rip), %rsi      # 0x166b6
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x99cb
leaq 0xce2c(%rip), %rsi      # 0x166bb
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x99e7
leaq 0xce19(%rip), %rsi      # 0x166bf
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x9a11
leaq 0xd884(%rip), %rsi      # 0x17141
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff30, %ecx       # imm = 0xFFFFFF30
jmp 0x999d
cmpb $0x6e, 0x1(%rbx)
jne 0x98e1
cmpb $0x0, 0x2(%rbx)
je 0x99f5
leaq 0xcddc(%rip), %rsi      # 0x166c4
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff2e, %ecx       # imm = 0xFFFFFF2E
jmp 0x999d
leaq 0xcddc(%rip), %rsi      # 0x166df
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x99d2
leaq 0xcdc9(%rip), %rsi      # 0x166e3
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff27, %ecx       # imm = 0xFFFFFF27
jmp 0x999d
cmpb $0x66, 0x1(%rbx)
jne 0x993b
cmpb $0x0, 0x2(%rbx)
je 0x99fc
cmpb $0x70, 0x1(%rbx)
jne 0x994b
cmpb $0x0, 0x2(%rbx)
je 0x9a0a
cmpb $0x72, 0x1(%rbx)
jne 0x99a5
cmpb $0x0, 0x2(%rbx)
movl $0xffffff23, %ecx       # imm = 0xFFFFFF23
jmp 0x99a2
leaq 0xcd8d(%rip), %rsi      # 0x166f0
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
je 0x99d9
leaq 0xdb12(%rip), %rsi      # 0x17488
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff1f, %ecx       # imm = 0xFFFFFF1F
jmp 0x999d
leaq 0xdb14(%rip), %rsi      # 0x174a2
movq %rbx, %rdi
callq 0x3110
testl %eax, %eax
movl $0xffffff22, %ecx       # imm = 0xFFFFFF22
movl $0xfffffffb, %eax       # imm = 0xFFFFFFFB
cmovel %ecx, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
cmpb $0x3e, 0x1(%rbx)
jne 0x99a5
cmpb $0x0, 0x2(%rbx)
movl $0xffffff94, %ecx       # imm = 0xFFFFFF94
jmp 0x99a2
movl $0xffffff35, %eax       # imm = 0xFFFFFF35
jmp 0x99a5
movl $0xffffff38, %eax       # imm = 0xFFFFFF38
jmp 0x99a5
movl $0xffffff33, %eax       # imm = 0xFFFFFF33
jmp 0x99a5
movl $0xffffff28, %eax       # imm = 0xFFFFFF28
jmp 0x99a5
movl $0xffffff20, %eax       # imm = 0xFFFFFF20
jmp 0x99a5
movl $0xffffff2a, %eax       # imm = 0xFFFFFF2A
jmp 0x99a5
movl $0xffffff32, %eax       # imm = 0xFFFFFF32
jmp 0x99a5
movl $0xffffff2c, %eax       # imm = 0xFFFFFF2C
jmp 0x99a5
movl $0xffffff2f, %eax       # imm = 0xFFFFFF2F
jmp 0x99a5
movl $0xffffff25, %eax       # imm = 0xFFFFFF25
jmp 0x99a5
movl $0xffffff2b, %eax       # imm = 0xFFFFFF2B
jmp 0x99a5
movl $0xffffff24, %eax       # imm = 0xFFFFFF24
jmp 0x99a5
movl $0xffffff31, %eax       # imm = 0xFFFFFF31
jmp 0x99a5