// File: /workspace/github_c_makefile_star2_O3/blakemcbride[P]LISP9/ls9.c
// Function: expandbody
cell expandbody(cell x) {
	cell	n, vs, as;

	protect(vs = NIL);
	protect(as = NIL);
	while (	pairp(x) &&
		pairp(car(x)) &&
		(caar(x) == S_def ||
		 caar(x) == S_defun))
	{
		if (caar(x) == S_def) {
			n = car(x);
			vs = cons(cadr(n), vs);
			cadr(Protected) = vs;
			n = cons(caddr(n), NIL);
			as = cons(n, as);
			car(Protected) = as;
		}
		else {
			n = expanddef(car(x));
			protect(n);
			vs = cons(cadr(n), vs);
			caddr(Protected) = vs;
			n = cons(caddr(n), NIL);
			as = cons(n, as);
			cadr(Protected) = as;
			unprot(1);
		}
		x = cdr(x);
	}
	if (NIL == vs) {
		unprot(2);
		return x;
	}
	as = car(Protected) = nreverse(as);
	vs = cadr(Protected) = nreverse(vs);
	n = cons(zip(vs, as), x);
	n = cons(S_labels, n);
	n = cons(n, NIL);
	unprot(2);
	return n;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %edi, %r14d
movl 0xf9cb(%rip), %esi      # 0x19170
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
xorl %edx, %edx
callq 0x30e7
movl %eax, 0xf9b4(%rip)      # 0x19170
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
movl %eax, %esi
xorl %edx, %edx
callq 0x30e7
movl %eax, 0xf9a0(%rip)      # 0x19170
testl %r14d, %r14d
js 0x99e1
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movq 0xfb6b(%rip), %rcx      # 0x19350
movl %r14d, %r12d
testb $0x9, (%rcx,%r12)
jne 0x9960
movq 0xfb46(%rip), %rax      # 0x19340
movslq (%rax,%r12,4), %r15
testq %r15, %r15
js 0x9960
testb $0x9, (%rcx,%r15)
jne 0x9960
movl (%rax,%r15,4), %ecx
movl 0xff00(%rip), %edx      # 0x1971c
cmpl %edx, %ecx
je 0x982c
cmpl 0x1011a(%rip), %ecx     # 0x19940
jne 0x9960
cmpl %edx, %ecx
jne 0x989f
movq 0xfb11(%rip), %rcx      # 0x19348
movslq (%rcx,%r15,4), %rcx
movl (%rax,%rcx,4), %edi
movl %ebp, %esi
xorl %edx, %edx
callq 0x30e7
movl %eax, %ebp
movq 0xfaf0(%rip), %rax      # 0x19340
movq 0xfaf1(%rip), %rcx      # 0x19348
movslq 0xf912(%rip), %rdx      # 0x19170
movslq (%rcx,%rdx,4), %rdx
movl %ebp, (%rax,%rdx,4)
movslq (%rcx,%r15,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %edx, %edx
callq 0x30e7
movl %eax, %edi
movl %ebx, %esi
xorl %edx, %edx
callq 0x30e7
movl %eax, %ebx
movq 0xfab0(%rip), %rax      # 0x19340
movslq 0xf8d9(%rip), %rcx      # 0x19170
movl %ebx, (%rax,%rcx,4)
jmp 0x994c
movl %r15d, %edi
callq 0x99f7
movl %eax, %r14d
movl 0xf8c0(%rip), %esi      # 0x19170
movl %eax, %edi
xorl %edx, %edx
callq 0x30e7
movl %eax, 0xf8b1(%rip)      # 0x19170
movq 0xfa7a(%rip), %rax      # 0x19340
movq 0xfa7b(%rip), %rcx      # 0x19348
movslq %r14d, %r14
movslq (%rcx,%r14,4), %rcx
movl (%rax,%rcx,4), %edi
movl %ebp, %esi
xorl %edx, %edx
callq 0x30e7
movl %eax, %ebp
movq 0xfa57(%rip), %rax      # 0x19340
movq 0xfa58(%rip), %rcx      # 0x19348
movslq 0xf879(%rip), %rdx      # 0x19170
movslq (%rcx,%rdx,4), %rdx
movslq (%rcx,%rdx,4), %rdx
movl %ebp, (%rax,%rdx,4)
movslq (%rcx,%r14,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %edx, %edx
callq 0x30e7
movl %eax, %edi
movl %ebx, %esi
xorl %edx, %edx
callq 0x30e7
movl %eax, %ebx
movq 0xfa13(%rip), %rax      # 0x19340
movq 0xfa14(%rip), %rcx      # 0x19348
movslq 0xf835(%rip), %rdx      # 0x19170
movslq (%rcx,%rdx,4), %rcx
movl %ebx, (%rax,%rcx,4)
movl $0x1, %edi
callq 0x335c
movq 0xf9f5(%rip), %rax      # 0x19348
movl (%rax,%r12,4), %r14d
testl %r14d, %r14d
jns 0x97de
cmpl $-0x1, %ebp
je 0x99e1
movl %ebx, %edi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x3dc8
movl %eax, %ebx
movq 0xf9c6(%rip), %rax      # 0x19340
movslq 0xf7ef(%rip), %rcx      # 0x19170
movl %ebx, (%rax,%rcx,4)
movl %ebp, %edi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x3dc8
movq 0xf9a9(%rip), %rcx      # 0x19340
movq 0xf9aa(%rip), %rdx      # 0x19348
movslq 0xf7cb(%rip), %rsi      # 0x19170
movslq (%rdx,%rsi,4), %rdx
movl %eax, (%rcx,%rdx,4)
movl %eax, %edi
movl %ebx, %esi
callq 0x96e1
movl %eax, %edi
movl %r14d, %esi
xorl %edx, %edx
callq 0x30e7
movl 0xff7d(%rip), %edi      # 0x19944
movl %eax, %esi
xorl %edx, %edx
callq 0x30e7
movl %eax, %edi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %edx, %edx
callq 0x30e7
movl %eax, %r14d
movl $0x2, %edi
callq 0x335c
movl %r14d, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq