// File: /workspace/github_c_makefile_star2_O3/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 0x8200
movq 0x1115a(%rip), %rax     # 0x19350
movl %ebx, %r15d
testb $0x9, (%rax,%r15)
je 0x820f
movl %ebx, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x78a7
movq 0x1112a(%rip), %rax     # 0x19340
movl (%rax,%r15,4), %r14d
cmpl 0x11417(%rip), %r14d    # 0x19638
jne 0x8233
movq 0x1111e(%rip), %rcx     # 0x19348
movslq (%rcx,%r15,4), %rcx
movl (%rax,%rcx,4), %edi
jmp 0x8202
cmpl 0x1150a(%rip), %r14d    # 0x19744
jne 0x8270
movl $0x6, %edi
callq 0x7748
movq 0x110f3(%rip), %rax     # 0x19340
movq 0x110f4(%rip), %rcx     # 0x19348
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 0x7859
cmpl 0x114d1(%rip), %r14d    # 0x19748
jne 0x82e4
movl $0x7, %edi
callq 0x7748
movq 0x110b6(%rip), %rax     # 0x19340
movq 0x110b7(%rip), %rcx     # 0x19348
movslq (%rcx,%r15,4), %rdx
movslq (%rax,%rdx,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0x7859
movl 0x10ed5(%rip), %edi     # 0x19180
movq 0x1108e(%rip), %rbx     # 0x19340
movq 0x1108f(%rip), %r14     # 0x19348
movslq (%r14,%r15,4), %rax
movslq (%r14,%rax,4), %rax
movl (%rbx,%rax,4), %esi
callq 0x38f3
cmpl $-0x4, %eax
jne 0x82f7
xorl %edi, %edi
callq 0x7748
xorl %edi, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7748
movl %esi, %ebp
cmpl 0x11433(%rip), %r14d    # 0x19720
jne 0x8309
movl %ebx, %edi
movl %ebp, %esi
xorl %edx, %edx
jmp 0x831b
cltq
movslq (%r14,%rax,4), %rax
movslq (%r14,%rax,4), %rax
movl (%rbx,%rax,4), %edi
jmp 0x8263
cmpl 0x11414(%rip), %r14d    # 0x19724
jne 0x8328
movl %ebx, %edi
movl %ebp, %esi
movl $0x1, %edx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x85e7
cmpl 0x11411(%rip), %r14d    # 0x19740
jne 0x8340
movl %ebx, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x881b
cmpl 0x113e9(%rip), %r14d    # 0x19730
jne 0x835a
movl %ebx, %edi
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8177
cmpl 0x113d3(%rip), %r14d    # 0x19734
jne 0x8372
movl %ebx, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8547
cmpl 0x1139f(%rip), %r14d    # 0x19718
jne 0x838c
movl %ebx, %edi
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x89e6
cmpl 0x11399(%rip), %r14d    # 0x1972c
jne 0x83f7
movq 0x10fac(%rip), %rcx     # 0x19348
movslq (%rcx,%r15,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
xorl %esi, %esi
callq 0x81e1
movl $0x1d, %edi
callq 0x7748
movl 0x10dc2(%rip), %edi     # 0x19180
movq 0x10f7b(%rip), %r14     # 0x19340
movq 0x10f7c(%rip), %r12     # 0x19348
movslq (%r12,%r15,4), %rax
movl (%r14,%rax,4), %ebx
movl %ebx, %esi
callq 0x38f3
cmpl $-0x4, %eax
je 0x8539
cltq
movslq (%r12,%rax,4), %rax
movslq (%r12,%rax,4), %rax
movl (%r14,%rax,4), %edi
jmp 0x8263
movl %r14d, %edi
callq 0x7a08
testl %eax, %eax
js 0x8419
movl %eax, %r15d
movl %ebx, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5c5c
movl %r15d, %edi
jmp 0x82d7
movl %r14d, %edi
callq 0x7a83
testl %eax, %eax
js 0x8436
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8b9d
movl %r14d, %edi
callq 0x7e03
testl %eax, %eax
js 0x8453
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8bf5
movl $0x80, %esi
cmpl %r14d, 0x11451(%rip)    # 0x198b0
je 0x848b
movl $0x85, %esi
cmpl %r14d, 0x11447(%rip)    # 0x198b4
je 0x848b
movl $0x86, %esi
cmpl %r14d, 0x1143d(%rip)    # 0x198b8
je 0x848b
movl $0x95, %esi
cmpl %r14d, 0x11433(%rip)    # 0x198bc
jne 0x849a
movl %ebx, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8c60
movl $0x65, %esi
cmpl %r14d, 0x1141a(%rip)    # 0x198c0
je 0x84c4
movl $0x6a, %esi
cmpl %r14d, 0x11410(%rip)    # 0x198c4
je 0x84c4
movl $0x6b, %esi
cmpl %r14d, 0x11406(%rip)    # 0x198c8
jne 0x84d3
movl %ebx, %edi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8cf9
movl %r14d, %edi
callq 0x7fde
testl %eax, %eax
js 0x84f0
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8d4a
movl %r14d, %edi
callq 0x8059
testl %eax, %eax
js 0x850d
movl %ebx, %edi
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8e5a
movl %r14d, %edi
callq 0x80ad
movl %ebx, %edi
testl %eax, %eax
js 0x852a
movl %eax, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x90c9
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8ab6
leaq 0xb2fd(%rip), %rdi      # 0x1383d
movl %ebx, %esi
callq 0x2643