// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: pat_primary
cell pat_primary(int k) {
	int	t;
	cell	n;
	char	msg[] = "grouping not allowed in patterns; this is a bug!";

	switch(Token) {
	case TOK_ID:
	case TOK_STR:
	case TOK_NUM:
	case TOK_CHR:
	case TOK_BOOL:
		save(Attr);
		Token = scan();
		return node(unsave(1), NIL);
	case TOK_CONS:
		Token = scan();
		return node(S_cons, NIL);
	case TOK_LPAREN:
	case TOK_LBRACK:
		t = Token;
		Token = scan();
		n = pat_list(t == TOK_LBRACK);
		if (pat(n) == NIL || pat(n) == UNIT)
			return n;
		if (t == TOK_LPAREN && cdr(pat(n)) == NIL) {
			if (Guard_lev > 0)
				return error(msg, NOEXPR);
			return node(car(pat(n)), opr(n));
		}
		return n;
	default:
		if (!Error_flag)
			Token = scan();
		return error("syntax error at", Attr);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movl %edi, -0xc(%rbp)
movaps 0x13f1e(%rip), %xmm0    # 0x21a40
movaps %xmm0, -0x30(%rbp)
movaps 0x13f03(%rip), %xmm0    # 0x21a30
movaps %xmm0, -0x40(%rbp)
movaps 0x13ee8(%rip), %xmm0    # 0x21a20
movaps %xmm0, -0x50(%rbp)
movb $0x0, -0x20(%rbp)
movl 0x1ab9a(%rip), %eax     # 0x286e0
movl %eax, -0x54(%rbp)
addl $0x130, %eax            # imm = 0x130
subl $0x5, %eax
jb 0xdb7e
jmp 0xdb55
movl -0x54(%rbp), %eax
subl $-0x6a, %eax
je 0xdbf2
jmp 0xdb63
movl -0x54(%rbp), %eax
subl $-0x68, %eax
je 0xdbf2
jmp 0xdb71
movl -0x54(%rbp), %eax
subl $-0x67, %eax
je 0xdbc9
jmp 0xdcce
movq 0x1a5e3(%rip), %rdi     # 0x28168
movq 0x1a5ac(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x1a59e(%rip)     # 0x28138
callq 0xcc90
movl %eax, 0x1ab3b(%rip)     # 0x286e0
movl $0x1, %edi
callq 0x3950
movq %rax, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x8(%rbp)
jmp 0xdcfb
callq 0xcc90
movl %eax, 0x1ab0c(%rip)     # 0x286e0
movq 0x1aac5(%rip), %rdi     # 0x286a0
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x8(%rbp)
jmp 0xdcfb
movl 0x1aae8(%rip), %eax     # 0x286e0
movl %eax, -0x10(%rbp)
callq 0xcc90
movl %eax, 0x1aada(%rip)     # 0x286e0
cmpl $-0x6a, -0x10(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %edi
callq 0xe020
movq %rax, -0x18(%rbp)
movq 0x1a55e(%rip), %rax     # 0x28180
movq -0x18(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
je 0xdc3f
movq 0x1a54c(%rip), %rax     # 0x28180
movq -0x18(%rbp), %rcx
cmpq $-0x6, (%rax,%rcx,8)
jne 0xdc4c
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xdcfb
cmpl $-0x68, -0x10(%rbp)
jne 0xdcc4
movq 0x1a977(%rip), %rax     # 0x285d0
movq 0x1a520(%rip), %rcx     # 0x28180
movq -0x18(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0xdcc4
cmpl $0x0, 0x1aa7a(%rip)     # 0x286f0
jle 0xdc8e
leaq -0x50(%rbp), %rdi
movq $-0x8, %rsi
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0xdcfb
movq 0x1a4eb(%rip), %rax     # 0x28180
movq 0x1a4e4(%rip), %rcx     # 0x28180
movq -0x18(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x1a921(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x8(%rbp)
jmp 0xdcfb
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xdcfb
movl 0x1a8f0(%rip), %eax     # 0x285c4
cmpl $0x0, %eax
jne 0xdce4
callq 0xcc90
movl %eax, 0x1a9fc(%rip)     # 0x286e0
movq 0x1a47d(%rip), %rsi     # 0x28168
leaq 0x12b6b(%rip), %rdi     # 0x2085d
callq 0x34b0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)