// File: /workspace/github_c_makefile_star2_O3/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 0x1404e(%rip), %ebx     # 0x1e6d0
cmpl $0xffffff27, %ebx       # imm = 0xFFFFFF27
jg 0xa6d0
leal 0x130(%rbx), %eax
cmpl $0x5, %eax
jae 0xa733
movq 0x13ab8(%rip), %rdi     # 0x1e158
movq 0x13a81(%rip), %rsi     # 0x1e128
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x13a73(%rip)     # 0x1e128
callq 0x9ac4
movl %eax, 0x14010(%rip)     # 0x1e6d0
movl $0x1, %edi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x384f
cmpl $0xffffff33, %ebx       # imm = 0xFFFFFF33
jle 0xa6fb
cmpl $-0x69, %ebx
jg 0xa77d
cmpl $0xffffff34, %ebx       # imm = 0xFFFFFF34
je 0xa802
cmpl $-0x6a, %ebx
je 0xa7a2
jmp 0xa85d
cmpl $0xffffff28, %ebx       # imm = 0xFFFFFF28
je 0xa80d
cmpl $0xffffff2f, %ebx       # imm = 0xFFFFFF2F
je 0xa818
cmpl $0xffffff31, %ebx       # imm = 0xFFFFFF31
jne 0xa85d
callq 0x754a
movq 0x139fd(%rip), %rsi     # 0x1e128
movq %rax, %rdi
jmp 0xa6a7
cmpl $0xffffff21, %ebx       # imm = 0xFFFFFF21
je 0xa847
cmpl $0xffffff24, %ebx       # imm = 0xFFFFFF24
jne 0xa85d
callq 0x9ac4
movl %eax, 0x13f7a(%rip)     # 0x1e6d0
cmpl $-0x67, %eax
je 0xa892
cmpl $0xfffffed1, %eax       # imm = 0xFFFFFED1
je 0xa699
movq 0x139e7(%rip), %rsi     # 0x1e158
leaq 0xc0a0(%rip), %rdi      # 0x16818
jmp 0xa87f
cmpl $-0x68, %ebx
je 0xa7a2
cmpl $-0x67, %ebx
jne 0xa85d
callq 0x9ac4
movl %eax, 0x13f3a(%rip)     # 0x1e6d0
movq 0x13ef3(%rip), %rax     # 0x1e690
jmp 0xa88b
callq 0x9ac4
movl %eax, 0x13f23(%rip)     # 0x1e6d0
xorl %esi, %esi
cmpl $-0x6a, %ebx
sete %sil
xorl %edi, %edi
callq 0x9efa
cmpq $-0x6, %rax
je 0xa88b
cmpq $-0x1, %rax
je 0xa88b
cmpl $-0x68, %ebx
jne 0xa7e8
movq 0x13de3(%rip), %rcx     # 0x1e5c0
cmpq $-0x1, (%rcx,%rax,8)
je 0xa8a5
cmpl $-0x6a, %ebx
leaq 0x13f26(%rip), %rcx     # 0x1e718
leaq 0x13ef7(%rip), %rdx     # 0x1e6f0
cmoveq %rcx, %rdx
movq (%rdx), %rdi
jmp 0xa837
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xb870
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xb922
callq 0x9ac4
movl %eax, 0x13ead(%rip)     # 0x1e6d0
movq 0x13ede(%rip), %rbx     # 0x1e708
movl $0x1, %edi
callq 0xb317
movq %rbx, %rdi
movq %rax, %rsi
xorl %edx, %edx
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x36e8
callq 0x9ac4
movl %eax, 0x13e7e(%rip)     # 0x1e6d0
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xb781
cmpl $0x0, 0x13d50(%rip)     # 0x1e5b4
jne 0xa871
callq 0x9ac4
movl %eax, 0x13e5f(%rip)     # 0x1e6d0
movq 0x138e0(%rip), %rsi     # 0x1e158
leaq 0xbf13(%rip), %rdi      # 0x16792
callq 0x33eb
movq $-0x5, %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0x13df7(%rip), %rdi     # 0x1e690
movq %rdi, 0x138b8(%rip)     # 0x1e158
jmp 0xa6a0
movq 0x138c4(%rip), %rcx     # 0x1e170
movq (%rcx,%rax,8), %rax
jmp 0xa88b