// File: /workspace/github_c_makefile_star2_O0/blakemcbride[P]LISP9/ls9.c
// Function: freevars
cell freevars(cell x, cell e) {
	cell	n, u, a;
	int	lam;

	lam = 0;
	if (memq(x, e) != NIL) {
		return NIL;
	}
	else if (symbolp(x)) {
		return cons(x, NIL);
	}
	else if (!pairp(x)) {
		return NIL;
	}
	else if (car(x) == S_quote) {
		return NIL;
	}
	else if (car(x) == S_apply ||
		 car(x) == S_prog ||
		 car(x) == S_if ||
		 car(x) == S_ifstar ||
		 car(x) == S_setq
	) {
		x = cdr(x);
	}
	else if (car(x) == S_def ||
		 car(x) == S_macro
	) {
		x = cddr(x);
	}
	else if (subrp(car(x))) {
		x = cdr(x);
	}
	else if (car(x) == S_lambda) {
		protect(e);
		a = flatargs(cadr(x));
		protect(a);
		n = set_union(a, e);
		protect(n);
		e = n;
		x = cddr(x);
		lam = 1;
	}
	protect(u = NIL);
	while (pairp(x)) {
		n = freevars(car(x), e);
		protect(n);
		u = set_union(u, n);
		unprot(1);;
		car(Protected) = u;
		x = cdr(x);
	}
	n = unprot(1);
	if (lam) e = unprot(3);
	return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x8(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0x7fb0
cmpl $-0x1, %eax
je 0x8611
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8980
cmpl $0x0, -0x8(%rbp)
jl 0x865a
movq 0x17d32(%rip), %rax     # 0x20350
movslq -0x8(%rbp), %rcx
movzbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x865a
movq 0x17d0b(%rip), %rcx     # 0x20340
movslq -0x8(%rbp), %rdx
movl $0xffffffee, %eax       # imm = 0xFFFFFFEE
cmpl (%rcx,%rdx,4), %eax
jne 0x865a
movl -0x8(%rbp), %edi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %edx, %edx
callq 0x3990
movl %eax, -0x4(%rbp)
jmp 0x8980
cmpl $0x0, -0x8(%rbp)
jl 0x868e
movq 0x17ce9(%rip), %rax     # 0x20350
movslq -0x8(%rbp), %rcx
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x868e
movq 0x17cd2(%rip), %rax     # 0x20350
movslq -0x8(%rbp), %rcx
movzbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x869a
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8980
movq 0x17c9f(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x17f8a(%rip), %eax     # 0x20638
jne 0x86bc
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8980
movq 0x17c7d(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x18048(%rip), %eax     # 0x20718
je 0x872a
movq 0x17c67(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x1804a(%rip), %eax     # 0x20730
je 0x872a
movq 0x17c51(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x18024(%rip), %eax     # 0x20720
je 0x872a
movq 0x17c3b(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x18012(%rip), %eax     # 0x20724
je 0x872a
movq 0x17c25(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x1800c(%rip), %eax     # 0x20734
jne 0x8740
movq 0x17c17(%rip), %rax     # 0x20348
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x8(%rbp)
jmp 0x8875
movq 0x17bf9(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x17fc8(%rip), %eax     # 0x2071c
je 0x876c
movq 0x17be3(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x17fc2(%rip), %eax     # 0x2072c
jne 0x878d
movq 0x17bd5(%rip), %rax     # 0x20348
movq 0x17bce(%rip), %rcx     # 0x20348
movslq -0x8(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x8(%rbp)
jmp 0x8873
movq 0x17bac(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %edi
callq 0x8990
cmpl $0x0, %eax
je 0x87bb
movq 0x17b9c(%rip), %rax     # 0x20348
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x8(%rbp)
jmp 0x8871
movq 0x17b7e(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x17f59(%rip), %eax     # 0x20728
jne 0x886f
movl -0xc(%rbp), %edi
movl 0x17992(%rip), %esi     # 0x20170
xorl %edx, %edx
callq 0x3990
movl %eax, 0x17985(%rip)     # 0x20170
movq 0x17b4e(%rip), %rax     # 0x20340
movq 0x17b4f(%rip), %rcx     # 0x20348
movslq -0x8(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edi
callq 0x8090
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %edi
movl 0x1795b(%rip), %esi     # 0x20170
xorl %edx, %edx
callq 0x3990
movl %eax, 0x1794e(%rip)     # 0x20170
movl -0x18(%rbp), %edi
movl -0xc(%rbp), %esi
callq 0x84a0
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %edi
movl 0x17937(%rip), %esi     # 0x20170
xorl %edx, %edx
callq 0x3990
movl %eax, 0x1792a(%rip)     # 0x20170
movl -0x10(%rbp), %eax
movl %eax, -0xc(%rbp)
movq 0x17af5(%rip), %rax     # 0x20348
movq 0x17aee(%rip), %rcx     # 0x20348
movslq -0x8(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x8(%rbp)
movl $0x1, -0x1c(%rbp)
jmp 0x8871
jmp 0x8873
jmp 0x8875
jmp 0x8877
jmp 0x8879
jmp 0x887b
jmp 0x887d
movl $0xffffffff, -0x14(%rbp) # imm = 0xFFFFFFFF
movl 0x178e6(%rip), %esi     # 0x20170
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
xorl %edx, %edx
callq 0x3990
movl %eax, 0x178d4(%rip)     # 0x20170
movb $0x1, %al
cmpl $0x0, -0x8(%rbp)
movb %al, -0x1d(%rbp)
jl 0x88de
movq 0x17aa2(%rip), %rax     # 0x20350
movslq -0x8(%rbp), %rcx
movzbl (%rax,%rcx), %ecx
andl $0x1, %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x1d(%rbp)
jne 0x88de
movq 0x17a86(%rip), %rax     # 0x20350
movslq -0x8(%rbp), %rcx
movzbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x1d(%rbp)
movb -0x1d(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x88e9
jmp 0x895a
movq 0x17a50(%rip), %rax     # 0x20340
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %edi
movl -0xc(%rbp), %esi
callq 0x85e0
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %edi
movl 0x17865(%rip), %esi     # 0x20170
xorl %edx, %edx
callq 0x3990
movl %eax, 0x17858(%rip)     # 0x20170
movl -0x14(%rbp), %edi
movl -0x10(%rbp), %esi
callq 0x84a0
movl %eax, -0x14(%rbp)
movl $0x1, %edi
callq 0x3d00
movl -0x14(%rbp), %edx
movq 0x17a06(%rip), %rax     # 0x20340
movslq 0x1782f(%rip), %rcx     # 0x20170
movl %edx, (%rax,%rcx,4)
movq 0x179fd(%rip), %rax     # 0x20348
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x8(%rbp)
jmp 0x889c
movl $0x1, %edi
callq 0x3d00
movl %eax, -0x10(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0x897a
movl $0x3, %edi
callq 0x3d00
movl %eax, -0xc(%rbp)
movl -0x10(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)