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

	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 != ';')
			break;
		while (!Error_flag && c != '\n' && c != EOF)
			c = read_c();
		if (Error_flag)
			return UNDEFINED;
	}
	if (c == EOF)
		return END_OF_FILE;
	if (Error_flag)
		return UNDEFINED;
	if (c == '(') {
		return read_list(0, TOK_RPAREN);
	}
	else if (c == '[') {
		return read_list(LIST_TAG, TOK_RBRACK);
	}
	else if (c == '\'' || c == '`') {
		cell	n;

		if (closing_paren())
			return error("missing form after \"'\" or \"`\"",
					NOEXPR);
		Level++;
		n = quote(read_form(), c=='`'? S_quasiquote: S_quote);
		Level--;
		return n;
	}
	else if (c == ',') {
		if (closing_paren())
			return error("missing form after \",\"",
					NOEXPR);
		c = read_c();
		if (c == '@') {
			return quote(read_form(), S_unquote_splicing);
		}
		else {
			reject(c);
			return quote(read_form(), S_unquote);
		}
	}
	else if (c == '#') {
		return read_char();
	}
	else if (c == '"') {
		return read_string();
	}
	else if (c == ')') {
		if (!Level)
			return error("unexpected ')'", NOEXPR);
		return TOK_RPAREN;
	}
	else if (c == ']') {
		if (!Level)
			return error("unexpected ']'", NOEXPR);
		return TOK_RBRACK;
	}
	else if (c == ':') {
		c = read_c();
		if (c != ':') {
			reject(c);
			return read_ident(':', 0);
		}
		if (!Level)
			return S_cons;
		return TOK_CONS;
	}
	else if (isdigit(c)) {
		return read_number(c);
	}
	else if (is_ident(c)) {
		return read_ident(c, 1);
	}
	else if (is_opsym(c)) {
		return read_opsym(c);
	}
	else {
		return funny_char("funny input character", c);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movslq 0x1ee69(%rip), %rcx     # 0x286a8
leaq 0x1e94a(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0xc(%rbp)
jmp 0x9854
movb $0x1, %al
cmpl $0x20, -0xc(%rbp)
movb %al, -0x19(%rbp)
je 0x987f
movb $0x1, %al
cmpl $0x9, -0xc(%rbp)
movb %al, -0x19(%rbp)
je 0x987f
movb $0x1, %al
cmpl $0xa, -0xc(%rbp)
movb %al, -0x19(%rbp)
je 0x987f
cmpl $0xd, -0xc(%rbp)
sete %al
movb %al, -0x19(%rbp)
movb -0x19(%rbp), %al
testb $0x1, %al
jne 0x9888
jmp 0x98d1
cmpl $0xa, -0xc(%rbp)
jne 0x989d
movl 0x1ed4c(%rip), %eax     # 0x285e0
addl $0x1, %eax
movl %eax, 0x1ed43(%rip)     # 0x285e0
movl 0x1ed21(%rip), %eax     # 0x285c4
cmpl $0x0, %eax
je 0x98b5
movq $-0x5, -0x8(%rbp)
jmp 0x9c93
movslq 0x1edec(%rip), %rcx     # 0x286a8
leaq 0x1e8cd(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0xc(%rbp)
jmp 0x9854
cmpl $0x3b, -0xc(%rbp)
je 0x98d9
jmp 0x9942
jmp 0x98db
movl 0x1ece3(%rip), %ecx     # 0x285c4
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x1a(%rbp)
jne 0x9900
xorl %eax, %eax
cmpl $0xa, -0xc(%rbp)
movb %al, -0x1a(%rbp)
je 0x9900
cmpl $-0x1, -0xc(%rbp)
setne %al
movb %al, -0x1a(%rbp)
movb -0x1a(%rbp), %al
testb $0x1, %al
jne 0x9909
jmp 0x9925
movslq 0x1ed98(%rip), %rcx     # 0x286a8
leaq 0x1e879(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0xc(%rbp)
jmp 0x98db
movl 0x1ec99(%rip), %eax     # 0x285c4
cmpl $0x0, %eax
je 0x993d
movq $-0x5, -0x8(%rbp)
jmp 0x9c93
jmp 0x9852
cmpl $-0x1, -0xc(%rbp)
jne 0x9955
movq $-0x4, -0x8(%rbp)
jmp 0x9c93
movl 0x1ec69(%rip), %eax     # 0x285c4
cmpl $0x0, %eax
je 0x996d
movq $-0x5, -0x8(%rbp)
jmp 0x9c93
cmpl $0x28, -0xc(%rbp)
jne 0x9988
xorl %edi, %edi
movl $0xffffff97, %esi       # imm = 0xFFFFFF97
callq 0x94b0
movq %rax, -0x8(%rbp)
jmp 0x9c93
cmpl $0x5b, -0xc(%rbp)
jne 0x99a6
movl $0x8, %edi
movl $0xffffff95, %esi       # imm = 0xFFFFFF95
callq 0x94b0
movq %rax, -0x8(%rbp)
jmp 0x9c93
cmpl $0x27, -0xc(%rbp)
je 0x99b6
cmpl $0x60, -0xc(%rbp)
jne 0x9a3f
callq 0xaba0
cmpl $0x0, %eax
je 0x99dc
leaq 0x16c59(%rip), %rdi     # 0x20620
movq $-0x8, %rsi
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x9c93
movl 0x1ecae(%rip), %eax     # 0x28690
addl $0x1, %eax
movl %eax, 0x1eca5(%rip)     # 0x28690
callq 0x9830
movq %rax, -0x28(%rbp)
cmpl $0x60, -0xc(%rbp)
jne 0x9a07
movq 0x1ecaf(%rip), %rax     # 0x286b0
movq %rax, -0x30(%rbp)
jmp 0x9a12
movq 0x1ecaa(%rip), %rax     # 0x286b8
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x9ca0
movq %rax, -0x18(%rbp)
movl 0x1ec67(%rip), %eax     # 0x28690
addl $-0x1, %eax
movl %eax, 0x1ec5e(%rip)     # 0x28690
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x9c93
cmpl $0x2c, -0xc(%rbp)
jne 0x9ae3
callq 0xaba0
cmpl $0x0, %eax
je 0x9a6f
leaq 0x16be4(%rip), %rdi     # 0x2063e
movq $-0x8, %rsi
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x9c93
movslq 0x1ec32(%rip), %rcx     # 0x286a8
leaq 0x1e713(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0xc(%rbp)
cmpl $0x40, -0xc(%rbp)
jne 0x9aac
callq 0x9830
movq %rax, %rdi
movq 0x1ec22(%rip), %rsi     # 0x286c0
callq 0x9ca0
movq %rax, -0x8(%rbp)
jmp 0x9c93
movl -0xc(%rbp), %edi
movslq 0x1ebf2(%rip), %rcx     # 0x286a8
leaq 0x1e6d3(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rsi
callq 0x3180
callq 0x9830
movq %rax, %rdi
movq 0x1ebf3(%rip), %rsi     # 0x286c8
callq 0x9ca0
movq %rax, -0x8(%rbp)
jmp 0x9c93
cmpl $0x23, -0xc(%rbp)
jne 0x9af7
callq 0xa5d0
movq %rax, -0x8(%rbp)
jmp 0x9c93
cmpl $0x22, -0xc(%rbp)
jne 0x9b0b
callq 0xa3d0
movq %rax, -0x8(%rbp)
jmp 0x9c93
cmpl $0x29, -0xc(%rbp)
jne 0x9b43
cmpl $0x0, 0x1eb78(%rip)     # 0x28690
jne 0x9b36
leaq 0x16b34(%rip), %rdi     # 0x20655
movq $-0x8, %rsi
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x9c93
movq $-0x69, -0x8(%rbp)
jmp 0x9c93
cmpl $0x5d, -0xc(%rbp)
jne 0x9b7b
cmpl $0x0, 0x1eb40(%rip)     # 0x28690
jne 0x9b6e
leaq 0x16b0b(%rip), %rdi     # 0x20664
movq $-0x8, %rsi
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x9c93
movq $-0x6b, -0x8(%rbp)
jmp 0x9c93
cmpl $0x3a, -0xc(%rbp)
jne 0x9bf6
movslq 0x1eb20(%rip), %rcx     # 0x286a8
leaq 0x1e601(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rdi
callq 0x3230
movl %eax, -0xc(%rbp)
cmpl $0x3a, -0xc(%rbp)
je 0x9bd0
movl -0xc(%rbp), %edi
movslq 0x1eafd(%rip), %rcx     # 0x286a8
leaq 0x1e5de(%rip), %rax     # 0x28190
movq (%rax,%rcx,8), %rsi
callq 0x3180
movl $0x3a, %edi
xorl %esi, %esi
callq 0xa900
movq %rax, -0x8(%rbp)
jmp 0x9c93
cmpl $0x0, 0x1eab9(%rip)     # 0x28690
jne 0x9be9
movq 0x1eac0(%rip), %rax     # 0x286a0
movq %rax, -0x8(%rbp)
jmp 0x9c93
movq $-0x67, -0x8(%rbp)
jmp 0x9c93
callq 0x3240
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x9c1e
movl -0xc(%rbp), %edi
callq 0xa7e0
movq %rax, -0x8(%rbp)
jmp 0x9c93
callq 0x3240
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
jne 0x9c4a
cmpl $0x5f, -0xc(%rbp)
je 0x9c4a
cmpl $0x3a, -0xc(%rbp)
je 0x9c4a
cmpl $0x27, -0xc(%rbp)
jne 0x9c5d
movl -0xc(%rbp), %edi
movl $0x1, %esi
callq 0xa900
movq %rax, -0x8(%rbp)
jmp 0x9c93
movl -0xc(%rbp), %esi
leaq 0x16990(%rip), %rdi     # 0x205f7
callq 0x30c0
cmpq $0x0, %rax
je 0x9c80
movl -0xc(%rbp), %edi
callq 0xaac0
movq %rax, -0x8(%rbp)
jmp 0x9c93
movl -0xc(%rbp), %esi
leaq 0x169e9(%rip), %rdi     # 0x20673
callq 0xa730
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)