// File: /workspace/github_c_makefile_star2_O2/blakemcbride[P]LISP9/ls9.c
// Function: compexpr
void compexpr(cell x, int t) {
	int	op;
	cell	y;

	if (atomp(x)) {
		emitq(x);
	}
	else if (car(x) == S_quote) {
		emitq(cadr(x));
	}
	else if (car(x) == I_arg) {
		emitop(OP_ARG);
		emitarg(fixval(cadr(x)));
	}
	else if (car(x) == I_ref) {
		emitop(OP_REF);
		emitarg(fixval(cadr(x)));
		y = htlookup(Symhash, caddr(x));
		if (UNDEF == y)
			emitarg(0);
		else
			emitarg(fixval(cdr(y)));
	}
	else if (car(x) == S_if) {
		compif(x, t, 0);
	}
	else if (car(x) == S_ifstar) {
		compif(x, t, 1);
	}
	else if (car(x) == I_closure) {
		compcls(x);
	}
	else if (car(x) == S_prog) {
		compprog(x, t);
	}
	else if (car(x) == S_setq) {
		compsetq(x);
	}
	else if (car(x) == S_apply) {
		compapply(x, t);
	}
	else if (car(x) == S_macro) {
		compexpr(caddr(x), 0);
		emitop(OP_MACRO);
		y = htlookup(Symhash, cadr(x));
		if (UNDEF == y) error("oops: unknown name in MACRO", cadr(x));
		emitarg(fixval(cdr(y)));
	}
	else if ((op = subr0(car(x))) >= 0) {
		compsubr0(x, op);
	}
	else if ((op = subr1(car(x))) >= 0) {
		compsubr1(x, op);
	}
	else if ((op = subr2(car(x))) >= 0) {
		compsubr2(x, op);
	}
	else if ((op = subr3(car(x))) >= 0) {
		compsubr3(x, op);
	}
	else if ((op = osubr0(car(x))) >= 0) {
		composubr0(x, op);
	}
	else if ((op = osubr1(car(x))) >= 0) {
		composubr1(x, op);
	}
	else if ((op = lsubr0(car(x))) >= 0) {
		complsubr0(x, op);
	}
	else if ((op = lsubr1(car(x))) >= 0) {
		complsubr1(x, op);
	}
	else { /* application */
		compapp(x, t);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %edi, %ebx
testl %edi, %edi
js 0x73db
movq 0xff7f(%rip), %rax      # 0x17350
movl %ebx, %r15d
testb $0x9, (%rax,%r15)
je 0x73ea
movl %ebx, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x6b65
movq 0xff4f(%rip), %rax      # 0x17340
movl (%rax,%r15,4), %r14d
cmpl 0x1023c(%rip), %r14d    # 0x17638
jne 0x740e
movq 0xff43(%rip), %rcx      # 0x17348
movslq (%rcx,%r15,4), %rcx
movl (%rax,%rcx,4), %edi
jmp 0x73dd
cmpl 0x1032f(%rip), %r14d    # 0x17744
jne 0x7449
pushq $0x6
popq %rdi
callq 0x69ff
movq 0xff1a(%rip), %rax      # 0x17340
movq 0xff1b(%rip), %rcx      # 0x17348
movslq (%rcx,%r15,4), %rdx
movslq (%rax,%rdx,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x6b17
cmpl 0x102f8(%rip), %r14d    # 0x17748
jne 0x74a9
pushq $0x7
popq %rdi
callq 0x69ff
movq 0xfedf(%rip), %rax      # 0x17340
movq 0xfee0(%rip), %rcx      # 0x17348
movslq (%rcx,%r15,4), %rdx
movslq (%rax,%rdx,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0x6b17
movl 0xfcfe(%rip), %edi      # 0x17180
movq 0xfeb7(%rip), %rbx      # 0x17340
movq 0xfeb8(%rip), %r14      # 0x17348
movslq (%r14,%r15,4), %rax
movslq (%r14,%rax,4), %rax
movl (%rbx,%rax,4), %esi
callq 0x362b
cmpl $-0x4, %eax
jne 0x74bc
xorl %edi, %edi
jmp 0x743c
movl %esi, %ebp
cmpl 0x1026e(%rip), %r14d    # 0x17720
jne 0x74ce
movl %ebx, %edi
movl %ebp, %esi
xorl %edx, %edx
jmp 0x74de
cltq
movslq (%r14,%rax,4), %rax
movslq (%r14,%rax,4), %rax
movl (%rbx,%rax,4), %edi
jmp 0x743c
cmpl 0x1024f(%rip), %r14d    # 0x17724
jne 0x74eb
pushq $0x1
popq %rdx
movl %ebx, %edi
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x775a
cmpl 0x1024e(%rip), %r14d    # 0x17740
jne 0x7503
movl %ebx, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x796b
cmpl 0x10226(%rip), %r14d    # 0x17730
jne 0x751d
movl %ebx, %edi
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7365
cmpl 0x10210(%rip), %r14d    # 0x17734
jne 0x7535
movl %ebx, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x76bd
cmpl 0x101dc(%rip), %r14d    # 0x17718
jne 0x754f
movl %ebx, %edi
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7ae0
cmpl 0x101d6(%rip), %r14d    # 0x1772c
jne 0x75b8
movq 0xfde9(%rip), %rcx      # 0x17348
movslq (%rcx,%r15,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
xorl %esi, %esi
callq 0x73bc
pushq $0x1d
popq %rdi
callq 0x69ff
movl 0xfc01(%rip), %edi      # 0x17180
movq 0xfdba(%rip), %r14      # 0x17340
movq 0xfdbb(%rip), %r12      # 0x17348
movslq (%r12,%r15,4), %rax
movl (%r14,%rax,4), %ebx
movl %ebx, %esi
callq 0x362b
cmpl $-0x4, %eax
je 0x76af
cltq
movslq (%r12,%rax,4), %rax
movslq (%r12,%rax,4), %rax
movl (%r14,%rax,4), %edi
jmp 0x743c
movl %r14d, %edi
callq 0x6cb9
testl %eax, %eax
js 0x75d5
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7c5e
movl %r14d, %edi
callq 0x6d2c
testl %eax, %eax
js 0x75f2
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7c72
movl %r14d, %edi
callq 0x7041
testl %eax, %eax
js 0x760f
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7cc3
movl %r14d, %edi
callq 0x718a
testl %eax, %eax
js 0x762c
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7d27
movl %r14d, %edi
callq 0x71c4
testl %eax, %eax
js 0x7649
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7db8
movl %r14d, %edi
callq 0x71ed
testl %eax, %eax
js 0x7666
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7e05
movl %r14d, %edi
callq 0x7261
testl %eax, %eax
js 0x7683
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7ef9
movl %r14d, %edi
callq 0x72b2
movl %ebx, %edi
testl %eax, %eax
js 0x76a0
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8176
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7ba4
leaq 0x9147(%rip), %rdi      # 0x107fd
movl %ebx, %esi
callq 0x258a