// File: /workspace/github_c_makefile_star2_O0/eiselekd[P]MinimalLisp/./f1.c
// Function: fop_interpret
v *
fop_interpret(fctx *cctx)
{
    int lit, imm = 0; long val;
    struct v *v = next(cctx, &imm);
    if (v) {
        switch(v->tag) {
            
        case CONS:
            
            if ((cctx->w = v)) {
                if (imm || !FCTX_COMPILE(cctx)) {
                    return car(cctx->w);
                } else { /* compiling */
                    comma(cctx, cctx->here, v);
                }
            }
            return NEXT(cctx);
            break;
            
        case STR: case INT:
            
            if (FCTX_COMPILE(cctx)) {
                comma(cctx, cctx->here, g_LIT);
                comma(cctx, cctx->here, v);
            } else {
                PUSH(v);
            }
            return NEXT(cctx);
            break;
        
        case SYM:
            if (FCTX_COMPILE(cctx)) {
                comma(cctx, cctx->here, g_SYM);
                comma(cctx, cctx->here, v);
                return NEXT(cctx);
            }
            break;
            
        }
    }
    dbgprint(cctx," * ");

    if (cctx->fc >= 0) 
        return NEXT(cctx);
    else 
        return 0;
    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x6b80
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x7a32
movq -0x28(%rbp), %rax
movl (%rax), %eax
andl $0xf, %eax
movl %eax, -0x2c(%rbp)
je 0x7820
jmp 0x77ff
movl -0x2c(%rbp), %eax
decl %eax
subl $0x2, %eax
jb 0x78d5
jmp 0x780f
movl -0x2c(%rbp), %eax
subl $0x3, %eax
je 0x7993
jmp 0x7a30
movq -0x28(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rax, 0x138(%rcx)
cmpq $0x0, %rax
je 0x7880
cmpl $0x0, -0x18(%rbp)
jne 0x784d
movq -0x10(%rbp), %rax
movl 0x118(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x7866
movq -0x10(%rbp), %rax
movq 0x138(%rax), %rdi
callq 0x14f0
movq %rax, -0x8(%rbp)
jmp 0x7aaa
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x158(%rax), %rsi
movq -0x28(%rbp), %rdx
callq 0x6a20
jmp 0x7880
movq -0x10(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x14f0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x138(%rax)
movq -0x10(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x1520
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x130(%rax)
movq -0x10(%rbp), %rax
movq 0x138(%rax), %rdi
callq 0x14f0
movq %rax, -0x8(%rbp)
jmp 0x7aaa
movq -0x10(%rbp), %rax
movl 0x118(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x791c
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x158(%rax), %rsi
movq 0xc9ab(%rip), %rdx      # 0x142a8
callq 0x6a20
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x158(%rax), %rsi
movq -0x28(%rbp), %rdx
callq 0x6a20
jmp 0x793e
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x120(%rax), %rsi
callq 0x1340
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x120(%rax)
movq -0x10(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x14f0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x138(%rax)
movq -0x10(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x1520
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x130(%rax)
movq -0x10(%rbp), %rax
movq 0x138(%rax), %rdi
callq 0x14f0
movq %rax, -0x8(%rbp)
jmp 0x7aaa
movq -0x10(%rbp), %rax
movl 0x118(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x7a2e
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x158(%rax), %rsi
movq 0xc8f1(%rip), %rdx      # 0x142b0
callq 0x6a20
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x158(%rax), %rsi
movq -0x28(%rbp), %rdx
callq 0x6a20
movq -0x10(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x14f0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x138(%rax)
movq -0x10(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x1520
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x130(%rax)
movq -0x10(%rbp), %rax
movq 0x138(%rax), %rdi
callq 0x14f0
movq %rax, -0x8(%rbp)
jmp 0x7aaa
jmp 0x7a30
jmp 0x7a32
movq -0x10(%rbp), %rdi
leaq 0x8b0d(%rip), %rsi      # 0x1054a
callq 0x38c0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x90(%rax)
jl 0x7aa2
movq -0x10(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x14f0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x138(%rax)
movq -0x10(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x1520
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x130(%rax)
movq -0x10(%rbp), %rax
movq 0x138(%rax), %rdi
callq 0x14f0
movq %rax, -0x8(%rbp)
jmp 0x7aaa
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)