// File: /workspace/github_c_makefile_star2_O0/eiselekd[P]MinimalLisp/./lf1.c
// Function: lf_apply_p
v *
lf_apply_p(lfctx *lfctx) 
{
    fctx *cctx = (fctx *)lfctx; v *env = 0;
    v *fn = POP; v *args = POP; v *r = 0, *benv; int a = 0, isop = 0;
    if( (isop = ((fn->tag == FUNC) ? 0 : 1)) || fwordp(fn)) {
        benv = TOSE;
        if (FN_FUNCENVP(fn))
            benv = funcenv(fn);
        /* if (FN_ARGBINDP(fn)) */
        /*     benv = evbind(car(func(fn)), args, benv); /\* error, todo: bind eval'ed args  *\/ */
        env = benv;
        a = (FN_ARGEVALP(fn)) ? 1 : 0;
    } else {
        fprintf(stderr, "Cannot apply to "); print((ctx*)cctx, stderr, fn); fprintf(stderr, "\n"); 
    }
    PUSH(env);
    PUSH(args);
    PUSH(fn);
    PUSH(mkInt(isop));
    PUSH(mkInt(a));
    return r;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x10(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
callq 0x4830
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
callq 0x4830
movq %rax, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movl $0x0, -0x3c(%rbp)
movl $0x0, -0x40(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %edx
andl $0xf, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x4, %edx
cmovel %ecx, %eax
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
jne 0x10cde
cmpq $0x0, -0x20(%rbp)
je 0x10cd6
movq -0x20(%rbp), %rax
movl (%rax), %eax
shrl $0x4, %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x10cd6
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0xf, %eax
cmpl $0x0, %eax
jne 0x10cd6
movb $0x1, %al
testb $0x1, %al
jne 0x10cde
jmp 0x10d35
xorl %eax, %eax
testb $0x1, %al
jne 0x10cde
jmp 0x10d35
movq -0x8(%rbp), %rax
movq 0x178(%rax), %rdi
callq 0x2530
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %eax
shrl $0x4, %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x10d0f
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %edx
shrl $0x4, %edx
andl $0x1, %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
movl %eax, -0x3c(%rbp)
jmp 0x10d7c
movq 0x62bc(%rip), %rax      # 0x16ff8
movq (%rax), %rdi
leaq 0x2447(%rip), %rsi      # 0x1318d
movb $0x0, %al
callq 0x20a0
movq -0x10(%rbp), %rdi
movq 0x62a0(%rip), %rax      # 0x16ff8
movq (%rax), %rsi
movq -0x20(%rbp), %rdx
callq 0x2cc0
movq 0x628d(%rip), %rax      # 0x16ff8
movq (%rax), %rdi
leaq 0x2416(%rip), %rsi      # 0x1318b
movb $0x0, %al
callq 0x20a0
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x120(%rax), %rsi
callq 0x2380
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x120(%rax)
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x120(%rax), %rsi
callq 0x2380
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x120(%rax)
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x120(%rax), %rsi
callq 0x2380
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x120(%rax)
movslq -0x40(%rbp), %rdi
callq 0x23c0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movq 0x120(%rax), %rsi
callq 0x2380
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x120(%rax)
movslq -0x3c(%rbp), %rdi
callq 0x23c0
movq %rax, %rdi
movq -0x10(%rbp), %rax
movq 0x120(%rax), %rsi
callq 0x2380
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x120(%rax)
movq -0x30(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq