// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: scan
int scan(void) {
	int	c;
	cell	n;

	c = read_c();
	while (1) {	/* Skip over spaces and comments */
		while (c == ' ' || c == '\t' || c == '\n' || c == '\r') {
			if (c == '\n')
				Line_no++;
			if (Error_flag)
				return UNDEFINED;
			c = read_c();
		}
		if (c == ';') {		/* ;; comment */
			c = read_c();
			if (c != ';') {
				reject(c);
				c = ';';
				break;
			}
		}
		else if (c == '(') {	/* (*...*) comment */
			c = read_c();
			if (c != '*') {
				reject(c);
				c = '(';
				break;
			}
			block_comment();
			c = read_c();
			continue;
		}
		else {
			break;
		}
		while (!Error_flag && c != '\n' && c != EOF)
			c = read_c();
		if (Error_flag)
			return UNDEFINED;
	}
	Attr = UNDEFINED;
	if (c == EOF)
		return END_OF_FILE;
	if (c == ';')
		return TOK_SEMI;
	if (c == ',')
		return TOK_COMMA;
	if (c == '|')
		return TOK_PIPE;
	if (c == '(')
		return TOK_LPAREN;
	if (c == ')')
		return TOK_RPAREN;
	if (c == '[')
		return TOK_LBRACK;
	if (c == ']')
		return TOK_RBRACK;
	if (c == '`')
		return TOK_APPLY;
	if (c == ':') {
		c = read_c();
		if (c == ':')
			return TOK_CONS;
		reject(c);
		Attr = read_ident(':', 0);
		return TOK_ID;
	}
	if (isdigit(c)) {
		Attr = read_number(c);
		return TOK_NUM;
	}
	if (is_ident(c)) {
		Attr = read_ident(c, 0);
		if (Attr == TRUE || Attr == FALSE)
			return TOK_BOOL;
		if ((n = keyword(symbol_name(Attr))) != UNDEFINED)
			return n;
		return TOK_ID;
	}
	if (is_opsym(c)) {
		if (c == '~') {
			if (isdigit(c = read_c())) {
				Attr = read_number(c);
				Attr = real_negate(Attr);
				return TOK_NUM;
			}
			else {
				reject(c);
				c = '~';
			}
		}
		Attr = read_opsym(c);
		if ((n = keyword(symbol_name(Attr))) != UNDEFINED)
			return n;
		return TOK_ID;
	}
	if (c == '"') {
		Attr = read_string();
		return TOK_STR;
	}
	if (c == '#') {
		c = read_c();
		reject(c);
		if (c == '!') {
			while (c != '\n' && c != EOF)
				c = read_c();
			reject(c);
			return scan();
		}
		if (c != '"')
			return TOK_REF;
		Attr = read_char();
		return TOK_CHR;
	}
	return funny_char("funny input character", c);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movslq 0x1ba09(%rip), %rcx     # 0x286a8
leaq 0x1b4ea(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
jmp 0xccb4
movb $0x1, %al
cmpl $0x20, -0x8(%rbp)
movb %al, -0x11(%rbp)
je 0xccdf
movb $0x1, %al
cmpl $0x9, -0x8(%rbp)
movb %al, -0x11(%rbp)
je 0xccdf
movb $0x1, %al
cmpl $0xa, -0x8(%rbp)
movb %al, -0x11(%rbp)
je 0xccdf
cmpl $0xd, -0x8(%rbp)
sete %al
movb %al, -0x11(%rbp)
movb -0x11(%rbp), %al
testb $0x1, %al
jne 0xcce8
jmp 0xcd30
cmpl $0xa, -0x8(%rbp)
jne 0xccfd
movl 0x1b8ec(%rip), %eax     # 0x285e0
addl $0x1, %eax
movl %eax, 0x1b8e3(%rip)     # 0x285e0
movl 0x1b8c1(%rip), %eax     # 0x285c4
cmpl $0x0, %eax
je 0xcd14
movl $0xfffffffb, -0x4(%rbp) # imm = 0xFFFFFFFB
jmp 0xd24c
movslq 0x1b98d(%rip), %rcx     # 0x286a8
leaq 0x1b46e(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
jmp 0xccb4
cmpl $0x3b, -0x8(%rbp)
jne 0xcd7e
movslq 0x1b96b(%rip), %rcx     # 0x286a8
leaq 0x1b44c(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
cmpl $0x3b, -0x8(%rbp)
je 0xcd7c
movl -0x8(%rbp), %edi
movslq 0x1b948(%rip), %rcx     # 0x286a8
leaq 0x1b429(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rsi
callq 0x3180
movl $0x3b, -0x8(%rbp)
jmp 0xce58
jmp 0xcdf0
cmpl $0x28, -0x8(%rbp)
jne 0xcdee
movslq 0x1b91d(%rip), %rcx     # 0x286a8
leaq 0x1b3fe(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
cmpl $0x2a, -0x8(%rbp)
je 0xcdca
movl -0x8(%rbp), %edi
movslq 0x1b8fa(%rip), %rcx     # 0x286a8
leaq 0x1b3db(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rsi
callq 0x3180
movl $0x28, -0x8(%rbp)
jmp 0xce58
callq 0xcba0
movslq 0x1b8d2(%rip), %rcx     # 0x286a8
leaq 0x1b3b3(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
jmp 0xccb2
jmp 0xce58
jmp 0xcdf2
movl 0x1b7cc(%rip), %ecx     # 0x285c4
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x12(%rbp)
jne 0xce17
xorl %eax, %eax
cmpl $0xa, -0x8(%rbp)
movb %al, -0x12(%rbp)
je 0xce17
cmpl $-0x1, -0x8(%rbp)
setne %al
movb %al, -0x12(%rbp)
movb -0x12(%rbp), %al
testb $0x1, %al
jne 0xce20
jmp 0xce3c
movslq 0x1b881(%rip), %rcx     # 0x286a8
leaq 0x1b362(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
jmp 0xcdf2
movl 0x1b782(%rip), %eax     # 0x285c4
cmpl $0x0, %eax
je 0xce53
movl $0xfffffffb, -0x4(%rbp) # imm = 0xFFFFFFFB
jmp 0xd24c
jmp 0xccb2
movq $-0x5, 0x1b305(%rip) # 0x28168
cmpl $-0x1, -0x8(%rbp)
jne 0xce75
movl $0xfffffffc, -0x4(%rbp) # imm = 0xFFFFFFFC
jmp 0xd24c
cmpl $0x3b, -0x8(%rbp)
jne 0xce87
movl $0xffffff9b, -0x4(%rbp) # imm = 0xFFFFFF9B
jmp 0xd24c
cmpl $0x2c, -0x8(%rbp)
jne 0xce99
movl $0xffffff9c, -0x4(%rbp) # imm = 0xFFFFFF9C
jmp 0xd24c
cmpl $0x7c, -0x8(%rbp)
jne 0xceab
movl $0xffffff9a, -0x4(%rbp) # imm = 0xFFFFFF9A
jmp 0xd24c
cmpl $0x28, -0x8(%rbp)
jne 0xcebd
movl $0xffffff98, -0x4(%rbp) # imm = 0xFFFFFF98
jmp 0xd24c
cmpl $0x29, -0x8(%rbp)
jne 0xcecf
movl $0xffffff97, -0x4(%rbp) # imm = 0xFFFFFF97
jmp 0xd24c
cmpl $0x5b, -0x8(%rbp)
jne 0xcee1
movl $0xffffff96, -0x4(%rbp) # imm = 0xFFFFFF96
jmp 0xd24c
cmpl $0x5d, -0x8(%rbp)
jne 0xcef3
movl $0xffffff95, -0x4(%rbp) # imm = 0xFFFFFF95
jmp 0xd24c
cmpl $0x60, -0x8(%rbp)
jne 0xcf05
movl $0xffffff36, -0x4(%rbp) # imm = 0xFFFFFF36
jmp 0xd24c
cmpl $0x3a, -0x8(%rbp)
jne 0xcf70
movslq 0x1b796(%rip), %rcx     # 0x286a8
leaq 0x1b277(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
cmpl $0x3a, -0x8(%rbp)
jne 0xcf37
movl $0xffffff99, -0x4(%rbp) # imm = 0xFFFFFF99
jmp 0xd24c
movl -0x8(%rbp), %edi
movslq 0x1b767(%rip), %rcx     # 0x286a8
leaq 0x1b248(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rsi
callq 0x3180
movl $0x3a, %edi
xorl %esi, %esi
callq 0xa900
movq %rax, 0x1b204(%rip)     # 0x28168
movl $0xfffffed1, -0x4(%rbp) # imm = 0xFFFFFED1
jmp 0xd24c
callq 0x3240
movq (%rax), %rax
movslq -0x8(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0xcfa5
movl -0x8(%rbp), %edi
callq 0xa7e0
movq %rax, 0x1b1cf(%rip)     # 0x28168
movl $0xfffffed4, -0x4(%rbp) # imm = 0xFFFFFED4
jmp 0xd24c
callq 0x3240
movq (%rax), %rax
movslq -0x8(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
jne 0xcfd1
cmpl $0x5f, -0x8(%rbp)
je 0xcfd1
cmpl $0x3a, -0x8(%rbp)
je 0xcfd1
cmpl $0x27, -0x8(%rbp)
jne 0xd04b
movl -0x8(%rbp), %edi
xorl %esi, %esi
callq 0xa900
movq %rax, 0x1b186(%rip)     # 0x28168
cmpq $-0x2, 0x1b17e(%rip)    # 0x28168
je 0xcff6
cmpq $-0x3, 0x1b174(%rip)    # 0x28168
jne 0xd002
movl $0xfffffed0, -0x4(%rbp) # imm = 0xFFFFFED0
jmp 0xd24c
movq 0x1b5ef(%rip), %rdi     # 0x285f8
movq 0x1b5c0(%rip), %rax     # 0x285d0
movq 0x1b151(%rip), %rcx     # 0x28168
movq (%rax,%rcx,8), %rax
shlq $0x3, %rax
addq %rax, %rdi
callq 0xc710
cltq
movq %rax, -0x10(%rbp)
cmpq $-0x5, %rax
je 0xd03f
movq -0x10(%rbp), %rax
movl %eax, -0x4(%rbp)
jmp 0xd24c
movl $0xfffffed1, -0x4(%rbp) # imm = 0xFFFFFED1
jmp 0xd24c
movl -0x8(%rbp), %esi
leaq 0x135a2(%rip), %rdi     # 0x205f7
callq 0x30c0
cmpq $0x0, %rax
je 0xd154
cmpl $0x7e, -0x8(%rbp)
jne 0xd0fc
callq 0x3240
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movslq 0x1b627(%rip), %rcx     # 0x286a8
leaq 0x1b108(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, -0x8(%rbp)
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0xd0d9
movl -0x8(%rbp), %edi
callq 0xa7e0
movq %rax, 0x1b0ae(%rip)     # 0x28168
movq 0x1b0a7(%rip), %rdi     # 0x28168
callq 0x69a0
movq %rax, 0x1b09b(%rip)     # 0x28168
movl $0xfffffed4, -0x4(%rbp) # imm = 0xFFFFFED4
jmp 0xd24c
movl -0x8(%rbp), %edi
movslq 0x1b5c5(%rip), %rcx     # 0x286a8
leaq 0x1b0a6(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rsi
callq 0x3180
movl $0x7e, -0x8(%rbp)
jmp 0xd0fc
movl -0x8(%rbp), %edi
callq 0xaac0
movq %rax, 0x1b05d(%rip)     # 0x28168
movq 0x1b4e6(%rip), %rdi     # 0x285f8
movq 0x1b4b7(%rip), %rax     # 0x285d0
movq 0x1b048(%rip), %rcx     # 0x28168
movq (%rax,%rcx,8), %rax
shlq $0x3, %rax
addq %rax, %rdi
callq 0xc710
cltq
movq %rax, -0x10(%rbp)
cmpq $-0x5, %rax
je 0xd148
movq -0x10(%rbp), %rax
movl %eax, -0x4(%rbp)
jmp 0xd24c
movl $0xfffffed1, -0x4(%rbp) # imm = 0xFFFFFED1
jmp 0xd24c
cmpl $0x22, -0x8(%rbp)
jne 0xd172
callq 0xa3d0
movq %rax, 0x1b002(%rip)     # 0x28168
movl $0xfffffed3, -0x4(%rbp) # imm = 0xFFFFFED3
jmp 0xd24c
cmpl $0x23, -0x8(%rbp)
jne 0xd23a
movslq 0x1b525(%rip), %rcx     # 0x286a8
leaq 0x1b006(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %edi
movslq 0x1b508(%rip), %rcx     # 0x286a8
leaq 0x1afe9(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rsi
callq 0x3180
cmpl $0x21, -0x8(%rbp)
jne 0xd216
jmp 0xd1b8
xorl %eax, %eax
cmpl $0xa, -0x8(%rbp)
movb %al, -0x21(%rbp)
je 0xd1cd
cmpl $-0x1, -0x8(%rbp)
setne %al
movb %al, -0x21(%rbp)
movb -0x21(%rbp), %al
testb $0x1, %al
jne 0xd1d6
jmp 0xd1f2
movslq 0x1b4cb(%rip), %rcx     # 0x286a8
leaq 0x1afac(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0x8(%rbp)
jmp 0xd1b8
movl -0x8(%rbp), %edi
movslq 0x1b4ac(%rip), %rcx     # 0x286a8
leaq 0x1af8d(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rsi
callq 0x3180
callq 0xcc90
movl %eax, -0x4(%rbp)
jmp 0xd24c
cmpl $0x22, -0x8(%rbp)
je 0xd225
movl $0xffffff21, -0x4(%rbp) # imm = 0xFFFFFF21
jmp 0xd24c
callq 0xa5d0
movq %rax, 0x1af37(%rip)     # 0x28168
movl $0xfffffed2, -0x4(%rbp) # imm = 0xFFFFFED2
jmp 0xd24c
movl -0x8(%rbp), %esi
leaq 0x1342f(%rip), %rdi     # 0x20673
callq 0xa730
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)