// File: /workspace/github_c_makefile_star2_O0/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
subq $0x30, %rsp
movl 0x1a9c2(%rip), %eax     # 0x286e0
movl %eax, -0x1c(%rbp)
addl $0x130, %eax            # imm = 0x130
subl $0x5, %eax
jb 0xddb2
jmp 0xdd31
movl -0x1c(%rbp), %eax
subl $0xffffff21, %eax       # imm = 0xFFFFFF21
je 0xdf7a
jmp 0xdd41
movl -0x1c(%rbp), %eax
subl $0xffffff24, %eax       # imm = 0xFFFFFF24
je 0xdef2
jmp 0xdd51
movl -0x1c(%rbp), %eax
subl $0xffffff28, %eax       # imm = 0xFFFFFF28
je 0xdf90
jmp 0xdd61
movl -0x1c(%rbp), %eax
subl $0xffffff2f, %eax       # imm = 0xFFFFFF2F
je 0xdebb
jmp 0xdd71
movl -0x1c(%rbp), %eax
subl $0xffffff31, %eax       # imm = 0xFFFFFF31
je 0xdf9b
jmp 0xdd81
movl -0x1c(%rbp), %eax
subl $0xffffff34, %eax       # imm = 0xFFFFFF34
je 0xdfd3
jmp 0xdd91
movl -0x1c(%rbp), %eax
subl $-0x6a, %eax
je 0xde07
jmp 0xdd9b
movl -0x1c(%rbp), %eax
subl $-0x68, %eax
je 0xde07
jmp 0xdda5
movl -0x1c(%rbp), %eax
subl $-0x67, %eax
je 0xddec
jmp 0xdfde
movq 0x1a3af(%rip), %rdi     # 0x28168
movq 0x1a378(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x1a36a(%rip)     # 0x28138
callq 0xcc90
movl %eax, 0x1a907(%rip)     # 0x286e0
movl $0x1, %edi
callq 0x3950
movq %rax, -0x8(%rbp)
jmp 0xe00b
callq 0xcc90
movl %eax, 0x1a8e9(%rip)     # 0x286e0
movq 0x1a8a2(%rip), %rax     # 0x286a0
movq %rax, -0x8(%rbp)
jmp 0xe00b
movl 0x1a8d3(%rip), %eax     # 0x286e0
movl %eax, -0xc(%rbp)
callq 0xcc90
movl %eax, 0x1a8c5(%rip)     # 0x286e0
cmpl $-0x6a, -0xc(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %esi
xorl %edi, %edi
callq 0xd260
movq %rax, -0x18(%rbp)
cmpq $-0x1, -0x18(%rbp)
je 0xde40
cmpq $-0x6, -0x18(%rbp)
jne 0xde4d
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xe00b
cmpl $-0x68, -0xc(%rbp)
jne 0xde7d
movq 0x1a776(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0xde7d
movq 0x1a314(%rip), %rax     # 0x28180
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x8(%rbp)
jmp 0xe00b
cmpl $-0x6a, -0xc(%rbp)
jne 0xde90
movq 0x1a89e(%rip), %rax     # 0x28728
movq %rax, -0x28(%rbp)
jmp 0xde9b
movq 0x1a869(%rip), %rax     # 0x28700
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xe00b
callq 0xcc90
movl %eax, 0x1a81a(%rip)     # 0x286e0
movq 0x1a84b(%rip), %rax     # 0x28718
movq %rax, -0x30(%rbp)
movl $0x1, %edi
callq 0xf110
movq -0x30(%rbp), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x8(%rbp)
jmp 0xe00b
callq 0xcc90
movl %eax, 0x1a7e3(%rip)     # 0x286e0
cmpl $-0x67, 0x1a7dc(%rip)   # 0x286e0
jne 0xdf16
movq 0x1a793(%rip), %rax     # 0x286a0
movq %rax, 0x1a254(%rip)     # 0x28168
jmp 0xdf40
cmpl $0xfffffed1, 0x1a7c0(%rip) # imm = 0xFFFFFED1
je 0xdf3e
movq 0x1a23f(%rip), %rsi     # 0x28168
leaq 0x129b3(%rip), %rdi     # 0x208e3
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0xe00b
jmp 0xdf40
movq 0x1a221(%rip), %rdi     # 0x28168
movq 0x1a1ea(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x1a1dc(%rip)     # 0x28138
callq 0xcc90
movl %eax, 0x1a779(%rip)     # 0x286e0
movl $0x1, %edi
callq 0x3950
movq %rax, -0x8(%rbp)
jmp 0xe00b
callq 0xcc90
movl %eax, 0x1a75b(%rip)     # 0x286e0
callq 0xf6b0
movq %rax, -0x8(%rbp)
jmp 0xe00b
callq 0xf970
movq %rax, -0x8(%rbp)
jmp 0xe00b
callq 0x9830
movq %rax, %rdi
movq 0x1a18e(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x1a180(%rip)     # 0x28138
callq 0xcc90
movl %eax, 0x1a71d(%rip)     # 0x286e0
movl $0x1, %edi
callq 0x3950
movq %rax, -0x8(%rbp)
jmp 0xe00b
callq 0xf830
movq %rax, -0x8(%rbp)
jmp 0xe00b
movl 0x1a5e0(%rip), %eax     # 0x285c4
cmpl $0x0, %eax
jne 0xdff4
callq 0xcc90
movl %eax, 0x1a6ec(%rip)     # 0x286e0
movq 0x1a16d(%rip), %rsi     # 0x28168
leaq 0x1285b(%rip), %rdi     # 0x2085d
callq 0x34b0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)