// File: /workspace/github_c_makefile_star2_O1/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 0x13efe(%rip), %ebx     # 0x1e6d0
cmpl $0xffffff27, %ebx       # imm = 0xFFFFFF27
jg 0xa820
leal 0x130(%rbx), %eax
cmpl $0x5, %eax
jae 0xa883
movq 0x13968(%rip), %rdi     # 0x1e158
movq 0x13931(%rip), %rsi     # 0x1e128
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x13923(%rip)     # 0x1e128
callq 0x9c07
movl %eax, 0x13ec0(%rip)     # 0x1e6d0
movl $0x1, %edi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x3851
cmpl $0xffffff33, %ebx       # imm = 0xFFFFFF33
jle 0xa84b
cmpl $-0x69, %ebx
jg 0xa8cd
cmpl $0xffffff34, %ebx       # imm = 0xFFFFFF34
je 0xa952
cmpl $-0x6a, %ebx
je 0xa8f2
jmp 0xa9ad
cmpl $0xffffff28, %ebx       # imm = 0xFFFFFF28
je 0xa95d
cmpl $0xffffff2f, %ebx       # imm = 0xFFFFFF2F
je 0xa968
cmpl $0xffffff31, %ebx       # imm = 0xFFFFFF31
jne 0xa9ad
callq 0x75e0
movq 0x138ad(%rip), %rsi     # 0x1e128
movq %rax, %rdi
jmp 0xa7f7
cmpl $0xffffff21, %ebx       # imm = 0xFFFFFF21
je 0xa997
cmpl $0xffffff24, %ebx       # imm = 0xFFFFFF24
jne 0xa9ad
callq 0x9c07
movl %eax, 0x13e2a(%rip)     # 0x1e6d0
cmpl $0xfffffed1, %eax       # imm = 0xFFFFFED1
je 0xa7e9
cmpl $-0x67, %eax
jne 0xa9d1
movq 0x13dcf(%rip), %rax     # 0x1e690
movq %rax, 0x13890(%rip)     # 0x1e158
jmp 0xa7e9
cmpl $-0x68, %ebx
je 0xa8f2
cmpl $-0x67, %ebx
jne 0xa9ad
callq 0x9c07
movl %eax, 0x13dea(%rip)     # 0x1e6d0
movq 0x13da3(%rip), %rax     # 0x1e690
jmp 0xa9eb
callq 0x9c07
movl %eax, 0x13dd3(%rip)     # 0x1e6d0
xorl %esi, %esi
cmpl $-0x6a, %ebx
sete %sil
xorl %edi, %edi
callq 0xa02b
cmpq $-0x6, %rax
je 0xa9eb
cmpq $-0x1, %rax
je 0xa9eb
cmpl $-0x68, %ebx
jne 0xa938
movq 0x13c93(%rip), %rcx     # 0x1e5c0
cmpq $-0x1, (%rcx,%rax,8)
je 0xa9f2
cmpl $-0x6a, %ebx
leaq 0x13dd6(%rip), %rcx     # 0x1e718
leaq 0x13da7(%rip), %rdx     # 0x1e6f0
cmoveq %rcx, %rdx
movq (%rdx), %rdi
jmp 0xa987
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xb9ca
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xba7c
callq 0x9c07
movl %eax, 0x13d5d(%rip)     # 0x1e6d0
movq 0x13d8e(%rip), %rbx     # 0x1e708
movl $0x1, %edi
callq 0xb478
movq %rbx, %rdi
movq %rax, %rsi
xorl %edx, %edx
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x36e8
callq 0x9c07
movl %eax, 0x13d2e(%rip)     # 0x1e6d0
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xb8db
cmpl $0x0, 0x13c00(%rip)     # 0x1e5b4
jne 0xa9c1
callq 0x9c07
movl %eax, 0x13d0f(%rip)     # 0x1e6d0
movq 0x13790(%rip), %rsi     # 0x1e158
leaq 0xbdde(%rip), %rdi      # 0x167ad
jmp 0xa9df
movq 0x13780(%rip), %rsi     # 0x1e158
leaq 0xbe54(%rip), %rdi      # 0x16833
callq 0x33eb
movq $-0x5, %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0x13777(%rip), %rcx     # 0x1e170
movq (%rcx,%rax,8), %rax
jmp 0xa9eb