// File: /workspace/github_c_makefile_star2_O1/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 %rbx
pushq %rax
movl %edi, %ebx
testl %edi, %edi
js 0x82fe
movq 0x1105c(%rip), %rax     # 0x19350
movl %ebx, %r15d
testb $0x9, (%rax,%r15)
je 0x830f
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x798e
movq 0x1102a(%rip), %rax     # 0x19340
movl (%rax,%r15,4), %r14d
cmpl 0x11317(%rip), %r14d    # 0x19638
jne 0x8333
movq 0x1101e(%rip), %rcx     # 0x19348
movslq (%rcx,%r15,4), %rcx
movl (%rax,%rcx,4), %edi
jmp 0x8300
cmpl 0x1140a(%rip), %r14d    # 0x19744
jne 0x8372
movl $0x6, %edi
callq 0x7831
movq 0x10ff3(%rip), %rax     # 0x19340
movq 0x10ff4(%rip), %rcx     # 0x19348
movslq (%rcx,%r15,4), %rdx
movslq (%rax,%rdx,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x7940
cmpl 0x113cf(%rip), %r14d    # 0x19748
jne 0x83e8
movl $0x7, %edi
callq 0x7831
movq 0x10fb4(%rip), %rax     # 0x19340
movq 0x10fb5(%rip), %rcx     # 0x19348
movslq (%rcx,%r15,4), %rdx
movslq (%rax,%rdx,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0x7940
movl 0x10dd3(%rip), %edi     # 0x19180
movq 0x10f8c(%rip), %rbx     # 0x19340
movq 0x10f8d(%rip), %r14     # 0x19348
movslq (%r14,%r15,4), %rax
movslq (%r14,%rax,4), %rax
movl (%rbx,%rax,4), %esi
callq 0x398f
cmpl $-0x4, %eax
jne 0x83fb
xorl %edi, %edi
callq 0x7831
xorl %edi, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x7831
movl %esi, %ebp
cmpl 0x1132f(%rip), %r14d    # 0x19720
jne 0x840d
movl %ebx, %edi
movl %ebp, %esi
xorl %edx, %edx
jmp 0x841f
cltq
movslq (%r14,%rax,4), %rax
movslq (%r14,%rax,4), %rax
movl (%rbx,%rax,4), %edi
jmp 0x8363
cmpl 0x11310(%rip), %r14d    # 0x19724
jne 0x842e
movl %ebx, %edi
movl %ebp, %esi
movl $0x1, %edx
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8724
cmpl 0x1130b(%rip), %r14d    # 0x19740
jne 0x8448
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8958
cmpl 0x112e1(%rip), %r14d    # 0x19730
jne 0x8464
movl %ebx, %edi
movl %ebp, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x826f
cmpl 0x112c9(%rip), %r14d    # 0x19734
jne 0x847e
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8684
cmpl 0x11293(%rip), %r14d    # 0x19718
jne 0x849a
movl %ebx, %edi
movl %ebp, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8b2a
cmpl 0x1128b(%rip), %r14d    # 0x1972c
jne 0x8511
movq 0x10e9e(%rip), %rcx     # 0x19348
movslq (%rcx,%r15,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
xorl %esi, %esi
callq 0x82e0
movl $0x1d, %edi
callq 0x7831
movl 0x10cb4(%rip), %edi     # 0x19180
movq 0x10e6d(%rip), %rax     # 0x19340
movq 0x10e6e(%rip), %rcx     # 0x19348
movslq (%rcx,%r15,4), %rcx
movl (%rax,%rcx,4), %ebx
movl %ebx, %esi
callq 0x398f
cmpl $-0x4, %eax
je 0x8676
movq 0x10e48(%rip), %rcx     # 0x19340
movq 0x10e49(%rip), %rdx     # 0x19348
cltq
movslq (%rdx,%rax,4), %rax
movslq (%rdx,%rax,4), %rax
movl (%rcx,%rax,4), %edi
jmp 0x8363
movl %r14d, %edi
callq 0x7b00
testl %eax, %eax
js 0x8533
movl %eax, %r15d
movl %ebx, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5cc5
movl %r15d, %edi
jmp 0x83d9
movl %r14d, %edi
callq 0x7b7b
testl %eax, %eax
js 0x8552
movl %ebx, %edi
movl %eax, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8ce1
movl %r14d, %edi
callq 0x7efb
testl %eax, %eax
js 0x8571
movl %ebx, %edi
movl %eax, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8d39
movl $0x80, %esi
cmpl %r14d, 0x11333(%rip)    # 0x198b0
je 0x85b0
movl $0x85, %esi
cmpl %r14d, 0x11329(%rip)    # 0x198b4
je 0x85b0
movl $0x86, %esi
cmpl %r14d, 0x1131f(%rip)    # 0x198b8
je 0x85b0
xorl %esi, %esi
cmpl %r14d, 0x11318(%rip)    # 0x198bc
setne %sil
negl %esi
orl $0x95, %esi
testl %esi, %esi
js 0x85c5
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8da4
movl $0x65, %esi
cmpl %r14d, 0x112ef(%rip)    # 0x198c0
je 0x85f3
movl $0x6a, %esi
cmpl %r14d, 0x112e5(%rip)    # 0x198c4
je 0x85f3
xorl %esi, %esi
cmpl %r14d, 0x112de(%rip)    # 0x198c8
setne %sil
negl %esi
orl $0x6b, %esi
testl %esi, %esi
js 0x8608
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8e3d
movl %r14d, %edi
callq 0x80d6
testl %eax, %eax
js 0x8627
movl %ebx, %edi
movl %eax, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8e8e
movl %r14d, %edi
callq 0x8151
testl %eax, %eax
js 0x8646
movl %ebx, %edi
movl %eax, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8f9e
movl %r14d, %edi
callq 0x81a5
movl %ebx, %edi
testl %eax, %eax
js 0x8665
movl %eax, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x921c
movl %ebp, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8bfa
leaq 0xb190(%rip), %rdi      # 0x1380d
movl %ebx, %esi
callq 0x264c