// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: pat_funapp
cell pat_funapp(int k) {
	cell	n, m, p, f, x;

	n = pat_primary(k);
	if (!k)
		return n;
	while (	(Token == TOK_ID || Token == TOK_STR || Token == TOK_NUM ||
		 Token == TOK_CHR || Token == TOK_BOOL ||
		 Token == TOK_LPAREN || Token == TOK_LBRACK ||
		 Token == TOK_OP)
		&&
		!is_binop(Attr) && Token != TOK_CONS
		&&
		is_fun(n)
	) {
		save(n);
		m = pat_primary(k);
		p = pat(m);
		save(p);
		f = opr(n) == NIL? pat(n): opr(n);
		x = opr(m) == NIL? pat(m): opr(m);
		n = node(x, NIL);
		n = node(f, n);
		n = node(p, n);
		unsave(2);
	}
	return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0xc(%rbp)
movl -0xc(%rbp), %edi
callq 0xdb10
movq %rax, -0x18(%rbp)
cmpl $0x0, -0xc(%rbp)
jne 0xe23a
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xe4a7
jmp 0xe23c
cmpl $0xfffffed1, 0x1a49a(%rip) # imm = 0xFFFFFED1
je 0xe29f
cmpl $0xfffffed3, 0x1a48e(%rip) # imm = 0xFFFFFED3
je 0xe29f
cmpl $0xfffffed4, 0x1a482(%rip) # imm = 0xFFFFFED4
je 0xe29f
cmpl $0xfffffed2, 0x1a476(%rip) # imm = 0xFFFFFED2
je 0xe29f
cmpl $0xfffffed0, 0x1a46a(%rip) # imm = 0xFFFFFED0
je 0xe29f
cmpl $-0x68, 0x1a461(%rip)   # 0x286e0
je 0xe29f
cmpl $-0x6a, 0x1a458(%rip)   # 0x286e0
je 0xe29f
xorl %eax, %eax
cmpl $0xffffff24, 0x1a44a(%rip) # imm = 0xFFFFFF24
movb %al, -0x39(%rbp)
jne 0xe373
movq 0x19ec2(%rip), %rdi     # 0x28168
callq 0xc680
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x39(%rbp)
jne 0xe373
xorl %eax, %eax
cmpl $-0x67, 0x1a41c(%rip)   # 0x286e0
movb %al, -0x39(%rbp)
je 0xe373
cmpq $0x0, -0x18(%rbp)
jl 0xe319
movq 0x1a315(%rip), %rax     # 0x285f0
movq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xe319
movq 0x19e8e(%rip), %rcx     # 0x28180
movq -0x18(%rbp), %rdx
movb $0x1, %al
cmpq $-0x1f, (%rcx,%rdx,8)
movb %al, -0x3a(%rbp)
je 0xe36b
movq 0x19e77(%rip), %rcx     # 0x28180
movq -0x18(%rbp), %rdx
movb $0x1, %al
cmpq $-0x18, (%rcx,%rdx,8)
movb %al, -0x3a(%rbp)
je 0xe36b
cmpq $0x0, -0x18(%rbp)
jl 0xe34e
movq 0x1a2c9(%rip), %rax     # 0x285f0
movq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xe34e
movq 0x19e42(%rip), %rcx     # 0x28180
movq -0x18(%rbp), %rdx
movb $0x1, %al
cmpq $-0x16, (%rcx,%rdx,8)
movb %al, -0x3a(%rbp)
je 0xe36b
movb $0x1, %al
cmpq $-0x2, -0x18(%rbp)
movb %al, -0x3b(%rbp)
je 0xe365
cmpq $-0x3, -0x18(%rbp)
sete %al
movb %al, -0x3b(%rbp)
movb -0x3b(%rbp), %al
movb %al, -0x3a(%rbp)
movb -0x3a(%rbp), %al
xorb $-0x1, %al
movb %al, -0x39(%rbp)
movb -0x39(%rbp), %al
testb $0x1, %al
jne 0xe37f
jmp 0xe49f
movq -0x18(%rbp), %rdi
movq 0x19dae(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x19da0(%rip)     # 0x28138
movl -0xc(%rbp), %edi
callq 0xdb10
movq %rax, -0x20(%rbp)
movq 0x19dd5(%rip), %rax     # 0x28180
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq 0x19d76(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x19d68(%rip)     # 0x28138
movq 0x1a1f9(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0xe3f7
movq 0x19d97(%rip), %rax     # 0x28180
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
jmp 0xe40a
movq 0x1a1d2(%rip), %rax     # 0x285d0
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x30(%rbp)
movq 0x1a1b7(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0xe439
movq 0x19d55(%rip), %rax     # 0x28180
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x50(%rbp)
jmp 0xe44c
movq 0x1a190(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movl $0x2, %edi
callq 0x3950
jmp 0xe23c
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)