// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x10, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
cmpl $0x0, -0x4(%rbp)
jl 0xb1b2
movq 0x151c5(%rip), %rax     # 0x20350
movslq -0x4(%rbp), %rcx
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xb1b2
movq 0x151ae(%rip), %rax     # 0x20350
movslq -0x4(%rbp), %rcx
movzbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xb1bf
movl -0x4(%rbp), %edi
callq 0xa320
jmp 0xb652
movq 0x1517a(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x15465(%rip), %eax     # 0x20638
jne 0xb1f8
movq 0x15164(%rip), %rax     # 0x20340
movq 0x15165(%rip), %rcx     # 0x20348
movslq -0x4(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0xa320
jmp 0xb650
movq 0x15141(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x15538(%rip), %eax     # 0x20744
jne 0xb251
movl $0x6, %edi
callq 0xa120
movq 0x15121(%rip), %rax     # 0x20340
movq 0x15122(%rip), %rcx     # 0x20348
movq 0x15113(%rip), %rdx     # 0x20340
movq 0x15114(%rip), %rsi     # 0x20348
movslq -0x4(%rbp), %rdi
movslq (%rsi,%rdi,4), %rsi
movslq (%rdx,%rsi,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0xa2b0
jmp 0xb64e
movq 0x150e8(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x154e3(%rip), %eax     # 0x20748
jne 0xb31c
movl $0x7, %edi
callq 0xa120
movq 0x150c4(%rip), %rax     # 0x20340
movq 0x150c5(%rip), %rcx     # 0x20348
movq 0x150b6(%rip), %rdx     # 0x20340
movq 0x150b7(%rip), %rsi     # 0x20348
movslq -0x4(%rbp), %rdi
movslq (%rsi,%rdi,4), %rsi
movslq (%rdx,%rsi,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0xa2b0
movl 0x14ed1(%rip), %edi     # 0x20180
movq 0x1508a(%rip), %rax     # 0x20340
movq 0x1508b(%rip), %rcx     # 0x20348
movq 0x15084(%rip), %rdx     # 0x20348
movslq -0x4(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %esi
callq 0x4730
movl %eax, -0x10(%rbp)
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl -0x10(%rbp), %eax
jne 0xb2ee
xorl %edi, %edi
callq 0xa2b0
jmp 0xb317
movq 0x1504b(%rip), %rax     # 0x20340
movq 0x1504c(%rip), %rcx     # 0x20348
movq 0x15045(%rip), %rdx     # 0x20348
movslq -0x10(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0xa2b0
jmp 0xb64c
movq 0x1501d(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x153f0(%rip), %eax     # 0x20720
jne 0xb344
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
xorl %edx, %edx
callq 0xb7c0
jmp 0xb64a
movq 0x14ff5(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x153cc(%rip), %eax     # 0x20724
jne 0xb36f
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
movl $0x1, %edx
callq 0xb7c0
jmp 0xb648
movq 0x14fca(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x153bd(%rip), %eax     # 0x20740
jne 0xb392
movl -0x4(%rbp), %edi
callq 0xbb10
jmp 0xb646
movq 0x14fa7(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x1538a(%rip), %eax     # 0x20730
jne 0xb3b8
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
callq 0xb0e0
jmp 0xb644
movq 0x14f81(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x15368(%rip), %eax     # 0x20734
jne 0xb3db
movl -0x4(%rbp), %edi
callq 0xb660
jmp 0xb642
movq 0x14f5e(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x15329(%rip), %eax     # 0x20718
jne 0xb401
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
callq 0xbce0
jmp 0xb640
movq 0x14f38(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x15317(%rip), %eax     # 0x2072c
jne 0xb4d4
movq 0x14f1e(%rip), %rax     # 0x20340
movq 0x14f1f(%rip), %rcx     # 0x20348
movq 0x14f18(%rip), %rdx     # 0x20348
movslq -0x4(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
xorl %esi, %esi
callq 0xb170
movl $0x1d, %edi
callq 0xa120
movl 0x14d2a(%rip), %edi     # 0x20180
movq 0x14ee3(%rip), %rax     # 0x20340
movq 0x14ee4(%rip), %rcx     # 0x20348
movslq -0x4(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %esi
callq 0x4730
movl %eax, -0x10(%rbp)
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl -0x10(%rbp), %eax
jne 0xb4a6
movq 0x14eb8(%rip), %rax     # 0x20340
movq 0x14eb9(%rip), %rcx     # 0x20348
movslq -0x4(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %esi
leaq 0x1040c(%rip), %rdi     # 0x1b8ad
callq 0x26c0
movq 0x14e93(%rip), %rax     # 0x20340
movq 0x14e94(%rip), %rcx     # 0x20348
movq 0x14e8d(%rip), %rdx     # 0x20348
movslq -0x10(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0xa2b0
jmp 0xb63e
movq 0x14e65(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0xa570
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
jl 0xb4ff
movl -0x4(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0xbed0
jmp 0xb63c
movq 0x14e3a(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0xa640
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
jl 0xb52a
movl -0x4(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0xbf00
jmp 0xb63a
movq 0x14e0f(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0xab50
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
jl 0xb555
movl -0x4(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0xbf60
jmp 0xb638
movq 0x14de4(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0xad80
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
jl 0xb580
movl -0x4(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0xbfe0
jmp 0xb636
movq 0x14db9(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0xadf0
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
jl 0xb5ab
movl -0x4(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0xc0a0
jmp 0xb634
movq 0x14d8e(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0xae40
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
jl 0xb5d3
movl -0x4(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0xc110
jmp 0xb632
movq 0x14d66(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0xaf10
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
jl 0xb5fb
movl -0x4(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0xc270
jmp 0xb630
movq 0x14d3e(%rip), %rax     # 0x20340
movslq -0x4(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0xafa0
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
jl 0xb623
movl -0x4(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0xc610
jmp 0xb62e
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
callq 0xbdf0
jmp 0xb630
jmp 0xb632
jmp 0xb634
jmp 0xb636
jmp 0xb638
jmp 0xb63a
jmp 0xb63c
jmp 0xb63e
jmp 0xb640
jmp 0xb642
jmp 0xb644
jmp 0xb646
jmp 0xb648
jmp 0xb64a
jmp 0xb64c
jmp 0xb64e
jmp 0xb650
jmp 0xb652
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)