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

	switch(Token) {
	case TOK_ID:
	case TOK_STR:
	case TOK_NUM:
	case TOK_CHR:
	case TOK_BOOL:
		save(Attr);
		Token = scan();
		return unsave(1);
	case TOK_CONS:
		Token = scan();
		return S_cons;
	case TOK_LPAREN:
	case TOK_LBRACK:
		t = Token;
		Token = scan();
		n = list(0, t == TOK_LBRACK);
		if (n == NIL || n == UNIT)
			return n;
		if (t == TOK_LPAREN && cdr(n) == NIL) {
			return car(n);
		}
		n = node(t == TOK_LBRACK? S_list: S_tuple, n);
		return n;
	case TOK_FN:
		Token = scan();
		return node(S_fn, match(1));
	case TOK_OP:
		Token = scan();
		if (Token == TOK_CONS)
			Attr = S_cons;
		else if (Token != TOK_ID)
			return error("op: missing identifier at", Attr);
		save(Attr);
		Token = scan();
		return unsave(1);
	case TOK_REF:
		Token = scan();
		return tuple_ref();
	case TOK_LET:
		return let_expr();
	case TOK_EVAL:
		save(read_form());
		Token = scan();
		return unsave(1);
	case TOK_COMPILE:
		return compile();
	default:
		if (!Error_flag)
			Token = scan();
		return error("syntax error at", Attr);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl 0x12e4d(%rip), %ebx     # 0x1c6d0
leal 0x130(%rbx), %eax
cmpl $0x5, %eax
jb 0x9986
cmpl $0xffffff21, %ebx       # imm = 0xFFFFFF21
je 0x99c6
cmpl $0xffffff24, %ebx       # imm = 0xFFFFFF24
je 0x9967
cmpl $0xffffff28, %ebx       # imm = 0xFFFFFF28
je 0x99bb
cmpl $0xffffff2f, %ebx       # imm = 0xFFFFFF2F
je 0x99f8
cmpl $0xffffff31, %ebx       # imm = 0xFFFFFF31
je 0x99e7
cmpl $0xffffff34, %ebx       # imm = 0xFFFFFF34
je 0x99dc
cmpl $-0x6a, %ebx
je 0x9904
cmpl $-0x68, %ebx
je 0x9904
cmpl $-0x67, %ebx
jne 0x9a25
callq 0x8d74
movl %eax, 0x12dd8(%rip)     # 0x1c6d0
movq 0x12d91(%rip), %rax     # 0x1c690
jmp 0x9a72
callq 0x8d74
movl %eax, 0x12dc1(%rip)     # 0x1c6d0
xorl %esi, %esi
cmpl $-0x6a, %ebx
sete %sil
xorl %edi, %edi
callq 0x9184
cmpq $-0x6, %rax
je 0x9a72
cmpq $-0x1, %rax
je 0x9a72
cmpl $-0x68, %ebx
jne 0x994a
movq 0x12c81(%rip), %rcx     # 0x1c5c0
cmpq $-0x1, (%rcx,%rax,8)
je 0x9a79
cmpl $-0x6a, %ebx
leaq 0x12dc4(%rip), %rcx     # 0x1c718
leaq 0x12d95(%rip), %rdx     # 0x1c6f0
cmoveq %rcx, %rdx
movq (%rdx), %rdi
jmp 0x9a15
callq 0x8d74
movl %eax, 0x12d5e(%rip)     # 0x1c6d0
cmpl $-0x67, %eax
je 0x9a49
cmpl $0xfffffed1, %eax       # imm = 0xFFFFFED1
jne 0x9a5c
movq 0x127cb(%rip), %rdi     # 0x1c158
movq 0x12794(%rip), %rsi     # 0x1c128
xorl %edx, %edx
callq 0x3613
movq %rax, 0x12786(%rip)     # 0x1c128
callq 0x8d74
movl %eax, 0x12d23(%rip)     # 0x1c6d0
pushq $0x1
popq %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x3775
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xaa36
callq 0x8d74
movl %eax, 0x12cff(%rip)     # 0x1c6d0
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xa8b3
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xa99e
callq 0x6cb2
movq 0x12735(%rip), %rsi     # 0x1c128
movq %rax, %rdi
jmp 0x9994
callq 0x8d74
movl %eax, 0x12ccd(%rip)     # 0x1c6d0
movq 0x12cfe(%rip), %rbx     # 0x1c708
pushq $0x1
popq %rdi
callq 0xa484
movq %rbx, %rdi
movq %rax, %rsi
xorl %edx, %edx
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x3613
cmpl $0x0, 0x12b88(%rip)     # 0x1c5b4
jne 0x9a39
callq 0x8d74
movl %eax, 0x12c97(%rip)     # 0x1c6d0
movq 0x12718(%rip), %rsi     # 0x1c158
leaq 0xad4b(%rip), %rdi      # 0x14792
jmp 0x9a6a
movq 0x12c40(%rip), %rdi     # 0x1c690
movq %rdi, 0x12701(%rip)     # 0x1c158
jmp 0x998d
movq 0x126f5(%rip), %rsi     # 0x1c158
leaq 0xadae(%rip), %rdi      # 0x14818
callq 0x33e4
pushq $-0x5
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0x126f0(%rip), %rcx     # 0x1c170
movq (%rcx,%rax,8), %rax
jmp 0x9a72