.file	"run.c"
	.text
.globl _reset_datastack
	.def	_reset_datastack;	.scl	2;	.type	32;	.endef
_reset_datastack:
	pushl	%ebp
	movl	%esp, %ebp
	movl	_stack_chain, %eax
	movl	24(%eax), %eax
	movl	(%eax), %esi
	subl	$4, %esi
	popl	%ebp
	ret
.globl _reset_retainstack
	.def	_reset_retainstack;	.scl	2;	.type	32;	.endef
_reset_retainstack:
	pushl	%ebp
	movl	%esp, %ebp
	movl	_stack_chain, %eax
	movl	28(%eax), %eax
	movl	(%eax), %edi
	subl	$4, %edi
	popl	%ebp
	ret
.globl _fix_stacks
	.def	_fix_stacks;	.scl	2;	.type	32;	.endef
_fix_stacks:
	pushl	%ebp
	movl	%esp, %ebp
	leal	4(%esi), %eax
	movl	_stack_chain, %edx
	movl	24(%edx), %edx
	cmpl	(%edx), %eax
	jb	L5
	leal	256(%esi), %eax
	movl	_stack_chain, %edx
	movl	24(%edx), %edx
	cmpl	8(%edx), %eax
	jae	L5
	jmp	L4
L5:
	call	_reset_datastack
L4:
	leal	4(%edi), %eax
	movl	_stack_chain, %edx
	movl	28(%edx), %edx
	cmpl	(%edx), %eax
	jb	L7
	leal	256(%edi), %eax
	movl	_stack_chain, %edx
	movl	28(%edx), %edx
	cmpl	8(%edx), %eax
	jae	L7
	jmp	L3
L7:
	call	_reset_retainstack
L3:
	popl	%ebp
	ret
.globl _save_stacks
	.def	_save_stacks;	.scl	2;	.type	32;	.endef
_save_stacks:
	pushl	%ebp
	movl	%esp, %ebp
	cmpl	$0, _stack_chain
	je	L8
	movl	_stack_chain, %eax
	movl	%esi, 8(%eax)
	movl	_stack_chain, %eax
	movl	%edi, 12(%eax)
L8:
	popl	%ebp
	ret
.globl _nest_stacks
	.def	_nest_stacks;	.scl	2;	.type	32;	.endef
_nest_stacks:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	subl	$20, %esp
	movl	$44, (%esp)
	call	_safe_malloc
	movl	%eax, -8(%ebp)
	movl	-8(%ebp), %eax
	movl	$-1, 4(%eax)
	movl	-8(%ebp), %eax
	movl	$-1, (%eax)
	movl	-8(%ebp), %eax
	movl	%esi, 16(%eax)
	movl	-8(%ebp), %eax
	movl	%edi, 20(%eax)
	movl	-8(%ebp), %edx
	movl	_userenv+8, %eax
	movl	%eax, 36(%edx)
	movl	-8(%ebp), %edx
	movl	_userenv+4, %eax
	movl	%eax, 32(%edx)
	movl	-8(%ebp), %ebx
	movl	_ds_size, %eax
	movl	%eax, (%esp)
	call	_alloc_segment
	movl	%eax, 24(%ebx)
	movl	-8(%ebp), %ebx
	movl	_rs_size, %eax
	movl	%eax, (%esp)
	call	_alloc_segment
	movl	%eax, 28(%ebx)
	movl	-8(%ebp), %edx
	movl	_stack_chain, %eax
	movl	%eax, 40(%edx)
	movl	-8(%ebp), %eax
	movl	%eax, _stack_chain
	call	_reset_datastack
	call	_reset_retainstack
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
.globl _unnest_stacks
	.def	_unnest_stacks;	.scl	2;	.type	32;	.endef
_unnest_stacks:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	_stack_chain, %eax
	movl	24(%eax), %eax
	movl	%eax, (%esp)
	call	_dealloc_segment
	movl	_stack_chain, %eax
	movl	28(%eax), %eax
	movl	%eax, (%esp)
	call	_dealloc_segment
	movl	_stack_chain, %eax
	movl	16(%eax), %esi
	movl	_stack_chain, %eax
	movl	20(%eax), %edi
	movl	_stack_chain, %eax
	movl	36(%eax), %eax
	movl	%eax, _userenv+8
	movl	_stack_chain, %eax
	movl	32(%eax), %eax
	movl	%eax, _userenv+4
	movl	_stack_chain, %eax
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %eax
	movl	40(%eax), %eax
	movl	%eax, _stack_chain
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	_free
	leave
	ret
.globl _init_stacks
	.def	_init_stacks;	.scl	2;	.type	32;	.endef
_init_stacks:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	movl	%eax, _ds_size
	movl	12(%ebp), %eax
	movl	%eax, _rs_size
	movl	$0, _stack_chain
	popl	%ebp
	ret
.globl _primitive_drop
	.def	_primitive_drop;	.scl	2;	.type	32;	.endef
_primitive_drop:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_drop_impl
	leave
	ret
	.def	_primitive_drop_impl;	.scl	3;	.type	32;	.endef
_primitive_drop_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpop
	leave
	ret
	.def	_dpop;	.scl	3;	.type	32;	.endef
_dpop:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%esi, (%esp)
	call	_get
	movl	%eax, -4(%ebp)
	subl	$4, %esi
	movl	-4(%ebp), %eax
	leave
	ret
	.def	_get;	.scl	3;	.type	32;	.endef
_get:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	movl	(%eax), %eax
	popl	%ebp
	ret
.globl _primitive_2drop
	.def	_primitive_2drop;	.scl	2;	.type	32;	.endef
_primitive_2drop:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_2drop_impl
	leave
	ret
	.def	_primitive_2drop_impl;	.scl	3;	.type	32;	.endef
_primitive_2drop_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esi
	popl	%ebp
	ret
.globl _primitive_3drop
	.def	_primitive_3drop;	.scl	2;	.type	32;	.endef
_primitive_3drop:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_3drop_impl
	leave
	ret
	.def	_primitive_3drop_impl;	.scl	3;	.type	32;	.endef
_primitive_3drop_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$12, %esi
	popl	%ebp
	ret
.globl _primitive_dup
	.def	_primitive_dup;	.scl	2;	.type	32;	.endef
_primitive_dup:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_dup_impl
	leave
	ret
	.def	_primitive_dup_impl;	.scl	3;	.type	32;	.endef
_primitive_dup_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpeek
	movl	%eax, (%esp)
	call	_dpush
	leave
	ret
	.def	_dpush;	.scl	3;	.type	32;	.endef
_dpush:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	addl	$4, %esi
	movl	8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	leave
	ret
	.def	_put;	.scl	3;	.type	32;	.endef
_put:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %edx
	movl	12(%ebp), %eax
	movl	%eax, (%edx)
	popl	%ebp
	ret
	.def	_dpeek;	.scl	3;	.type	32;	.endef
_dpeek:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$4, %esp
	movl	%esi, (%esp)
	call	_get
	leave
	ret
.globl _primitive_2dup
	.def	_primitive_2dup;	.scl	2;	.type	32;	.endef
_primitive_2dup:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_2dup_impl
	leave
	ret
	.def	_primitive_2dup_impl;	.scl	3;	.type	32;	.endef
_primitive_2dup_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$16, %esp
	call	_dpeek
	movl	%eax, -4(%ebp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -8(%ebp)
	addl	$8, %esi
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	movl	-4(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	leave
	ret
.globl _primitive_3dup
	.def	_primitive_3dup;	.scl	2;	.type	32;	.endef
_primitive_3dup:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_3dup_impl
	leave
	ret
	.def	_primitive_3dup_impl;	.scl	3;	.type	32;	.endef
_primitive_3dup_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$20, %esp
	call	_dpeek
	movl	%eax, -4(%ebp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -8(%ebp)
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -12(%ebp)
	addl	$12, %esi
	movl	-4(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	movl	-12(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	leave
	ret
.globl _primitive_rot
	.def	_primitive_rot;	.scl	2;	.type	32;	.endef
_primitive_rot:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_rot_impl
	leave
	ret
	.def	_primitive_rot_impl;	.scl	3;	.type	32;	.endef
_primitive_rot_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$20, %esp
	call	_dpeek
	movl	%eax, -4(%ebp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -8(%ebp)
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -12(%ebp)
	movl	-12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	movl	-4(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	leave
	ret
.globl _primitive__rot
	.def	_primitive__rot;	.scl	2;	.type	32;	.endef
_primitive__rot:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive__rot_impl
	leave
	ret
	.def	_primitive__rot_impl;	.scl	3;	.type	32;	.endef
_primitive__rot_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$20, %esp
	call	_dpeek
	movl	%eax, -4(%ebp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -8(%ebp)
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -12(%ebp)
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	movl	-12(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	movl	-4(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	leave
	ret
.globl _primitive_dupd
	.def	_primitive_dupd;	.scl	2;	.type	32;	.endef
_primitive_dupd:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_dupd_impl
	leave
	ret
	.def	_primitive_dupd_impl;	.scl	3;	.type	32;	.endef
_primitive_dupd_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	_dpeek
	movl	%eax, -4(%ebp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -8(%ebp)
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	_dpush
	leave
	ret
.globl _primitive_swapd
	.def	_primitive_swapd;	.scl	2;	.type	32;	.endef
_primitive_swapd:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_swapd_impl
	leave
	ret
	.def	_primitive_swapd_impl;	.scl	3;	.type	32;	.endef
_primitive_swapd_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$16, %esp
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -4(%ebp)
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -8(%ebp)
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	movl	-4(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	leave
	ret
.globl _primitive_nip
	.def	_primitive_nip;	.scl	2;	.type	32;	.endef
_primitive_nip:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_nip_impl
	leave
	ret
	.def	_primitive_nip_impl;	.scl	3;	.type	32;	.endef
_primitive_nip_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpop
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	_drepl
	leave
	ret
	.def	_drepl;	.scl	3;	.type	32;	.endef
_drepl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	leave
	ret
.globl _primitive_2nip
	.def	_primitive_2nip;	.scl	2;	.type	32;	.endef
_primitive_2nip:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_2nip_impl
	leave
	ret
	.def	_primitive_2nip_impl;	.scl	3;	.type	32;	.endef
_primitive_2nip_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpeek
	movl	%eax, -4(%ebp)
	subl	$8, %esi
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	_drepl
	leave
	ret
.globl _primitive_tuck
	.def	_primitive_tuck;	.scl	2;	.type	32;	.endef
_primitive_tuck:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_tuck_impl
	leave
	ret
	.def	_primitive_tuck_impl;	.scl	3;	.type	32;	.endef
_primitive_tuck_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	_dpeek
	movl	%eax, -4(%ebp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -8(%ebp)
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	movl	-4(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	_dpush
	leave
	ret
.globl _primitive_over
	.def	_primitive_over;	.scl	2;	.type	32;	.endef
_primitive_over:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_over_impl
	leave
	ret
	.def	_primitive_over_impl;	.scl	3;	.type	32;	.endef
_primitive_over_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, (%esp)
	call	_dpush
	leave
	ret
.globl _primitive_pick
	.def	_primitive_pick;	.scl	2;	.type	32;	.endef
_primitive_pick:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_pick_impl
	leave
	ret
	.def	_primitive_pick_impl;	.scl	3;	.type	32;	.endef
_primitive_pick_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	leal	-8(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, (%esp)
	call	_dpush
	leave
	ret
.globl _primitive_swap
	.def	_primitive_swap;	.scl	2;	.type	32;	.endef
_primitive_swap:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_swap_impl
	leave
	ret
	.def	_primitive_swap_impl;	.scl	3;	.type	32;	.endef
_primitive_swap_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$16, %esp
	call	_dpeek
	movl	%eax, -4(%ebp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, -8(%ebp)
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%esi, (%esp)
	call	_put
	movl	-4(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	-4(%esi), %eax
	movl	%eax, (%esp)
	call	_put
	leave
	ret
.globl _primitive_to_r
	.def	_primitive_to_r;	.scl	2;	.type	32;	.endef
_primitive_to_r:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_to_r_impl
	leave
	ret
	.def	_primitive_to_r_impl;	.scl	3;	.type	32;	.endef
_primitive_to_r_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpop
	movl	%eax, (%esp)
	call	_rpush
	leave
	ret
	.def	_rpush;	.scl	3;	.type	32;	.endef
_rpush:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	addl	$4, %edi
	movl	8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	%edi, (%esp)
	call	_put
	leave
	ret
.globl _primitive_from_r
	.def	_primitive_from_r;	.scl	2;	.type	32;	.endef
_primitive_from_r:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_from_r_impl
	leave
	ret
	.def	_primitive_from_r_impl;	.scl	3;	.type	32;	.endef
_primitive_from_r_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_rpop
	movl	%eax, (%esp)
	call	_dpush
	leave
	ret
	.def	_rpop;	.scl	3;	.type	32;	.endef
_rpop:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%edi, (%esp)
	call	_get
	movl	%eax, -4(%ebp)
	subl	$4, %edi
	movl	-4(%ebp), %eax
	leave
	ret
.globl _stack_to_array
	.def	_stack_to_array;	.scl	2;	.type	32;	.endef
_stack_to_array:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$40, %esp
	movl	8(%ebp), %edx
	movl	12(%ebp), %eax
	subl	%edx, %eax
	addl	$4, %eax
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	L58
	movl	$0, -12(%ebp)
	jmp	L57
L58:
	movl	-4(%ebp), %eax
	movl	%eax, -16(%ebp)
	cmpl	$0, -16(%ebp)
	jns	L60
	addl	$3, -16(%ebp)
L60:
	movl	-16(%ebp), %eax
	sarl	$2, %eax
	movl	%eax, 4(%esp)
	movl	$8, (%esp)
	call	_allot_array_internal
	movl	%eax, -8(%ebp)
	movl	-4(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	-8(%ebp), %eax
	addl	$8, %eax
	movl	%eax, (%esp)
	call	_memcpy
	movl	-8(%ebp), %eax
	movl	%eax, (%esp)
	call	_tag_object
	movl	%eax, (%esp)
	call	_dpush
	movl	$1, -12(%ebp)
L57:
	movl	-12(%ebp), %eax
	leave
	ret
	.def	_tag_object;	.scl	3;	.type	32;	.endef
_tag_object:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	andl	$-8, %eax
	orl	$3, %eax
	popl	%ebp
	ret
.globl _primitive_datastack
	.def	_primitive_datastack;	.scl	2;	.type	32;	.endef
_primitive_datastack:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_datastack_impl
	leave
	ret
	.def	_primitive_datastack_impl;	.scl	3;	.type	32;	.endef
_primitive_datastack_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	%esi, 4(%esp)
	movl	_stack_chain, %eax
	movl	24(%eax), %eax
	movl	(%eax), %eax
	movl	%eax, (%esp)
	call	_stack_to_array
	testb	%al, %al
	jne	L63
	movl	$0, 12(%esp)
	movl	$7, 8(%esp)
	movl	$7, 4(%esp)
	movl	$11, (%esp)
	call	_general_error
L63:
	leave
	ret
.globl _primitive_retainstack
	.def	_primitive_retainstack;	.scl	2;	.type	32;	.endef
_primitive_retainstack:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_retainstack_impl
	leave
	ret
	.def	_primitive_retainstack_impl;	.scl	3;	.type	32;	.endef
_primitive_retainstack_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	%edi, 4(%esp)
	movl	_stack_chain, %eax
	movl	28(%eax), %eax
	movl	(%eax), %eax
	movl	%eax, (%esp)
	call	_stack_to_array
	testb	%al, %al
	jne	L66
	movl	$0, 12(%esp)
	movl	$7, 8(%esp)
	movl	$7, 4(%esp)
	movl	$13, (%esp)
	call	_general_error
L66:
	leave
	ret
.globl _array_to_stack
	.def	_array_to_stack;	.scl	2;	.type	32;	.endef
_array_to_stack:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	_array_capacity
	sall	$2, %eax
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	8(%ebp), %eax
	addl	$8, %eax
	movl	%eax, 4(%esp)
	movl	12(%ebp), %eax
	movl	%eax, (%esp)
	call	_memcpy
	movl	-4(%ebp), %eax
	addl	12(%ebp), %eax
	subl	$4, %eax
	leave
	ret
	.def	_array_capacity;	.scl	3;	.type	32;	.endef
_array_capacity:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	movl	4(%eax), %eax
	shrl	$3, %eax
	popl	%ebp
	ret
.globl _primitive_set_datastack
	.def	_primitive_set_datastack;	.scl	2;	.type	32;	.endef
_primitive_set_datastack:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_set_datastack_impl
	leave
	ret
	.def	_primitive_set_datastack_impl;	.scl	3;	.type	32;	.endef
_primitive_set_datastack_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpop
	movl	%eax, (%esp)
	call	_untag_array
	movl	%eax, %edx
	movl	_stack_chain, %eax
	movl	24(%eax), %eax
	movl	(%eax), %eax
	movl	%eax, 4(%esp)
	movl	%edx, (%esp)
	call	_array_to_stack
	movl	%eax, %esi
	leave
	ret
	.def	_untag_array;	.scl	3;	.type	32;	.endef
_untag_array:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	$8, (%esp)
	call	_type_check
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	_untag_object
	leave
	ret
	.def	_untag_object;	.scl	3;	.type	32;	.endef
_untag_object:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	andl	$-8, %eax
	popl	%ebp
	ret
	.def	_type_check;	.scl	3;	.type	32;	.endef
_type_check:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, (%esp)
	call	_type_of
	cmpl	8(%ebp), %eax
	je	L74
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	_type_error
L74:
	leave
	ret
	.def	_type_of;	.scl	3;	.type	32;	.endef
_type_of:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	8(%ebp), %eax
	andl	$7, %eax
	movl	%eax, -4(%ebp)
	cmpl	$3, -4(%ebp)
	jne	L77
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	_object_type
	movl	%eax, -8(%ebp)
	jmp	L76
L77:
	movl	-4(%ebp), %eax
	movl	%eax, -8(%ebp)
L76:
	movl	-8(%ebp), %eax
	leave
	ret
	.def	_object_type;	.scl	3;	.type	32;	.endef
_object_type:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	andl	$-8, %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, (%esp)
	call	_untag_header
	leave
	ret
	.def	_untag_header;	.scl	3;	.type	32;	.endef
_untag_header:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	shrl	$3, %eax
	popl	%ebp
	ret
.globl _primitive_set_retainstack
	.def	_primitive_set_retainstack;	.scl	2;	.type	32;	.endef
_primitive_set_retainstack:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_set_retainstack_impl
	leave
	ret
	.def	_primitive_set_retainstack_impl;	.scl	3;	.type	32;	.endef
_primitive_set_retainstack_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpop
	movl	%eax, (%esp)
	call	_untag_array
	movl	%eax, %edx
	movl	_stack_chain, %eax
	movl	28(%eax), %eax
	movl	(%eax), %eax
	movl	%eax, 4(%esp)
	movl	%edx, (%esp)
	call	_array_to_stack
	movl	%eax, %edi
	leave
	ret
.globl _primitive_getenv
	.def	_primitive_getenv;	.scl	2;	.type	32;	.endef
_primitive_getenv:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_getenv_impl
	leave
	ret
	.def	_primitive_getenv_impl;	.scl	3;	.type	32;	.endef
_primitive_getenv_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpeek
	movl	%eax, (%esp)
	call	_untag_fixnum_fast
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %eax
	movl	_userenv(,%eax,4), %eax
	movl	%eax, (%esp)
	call	_drepl
	leave
	ret
	.def	_untag_fixnum_fast;	.scl	3;	.type	32;	.endef
_untag_fixnum_fast:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	sarl	$3, %eax
	popl	%ebp
	ret
.globl _primitive_setenv
	.def	_primitive_setenv;	.scl	2;	.type	32;	.endef
_primitive_setenv:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_setenv_impl
	leave
	ret
	.def	_primitive_setenv_impl;	.scl	3;	.type	32;	.endef
_primitive_setenv_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	_dpop
	movl	%eax, (%esp)
	call	_untag_fixnum_fast
	movl	%eax, -4(%ebp)
	call	_dpop
	movl	%eax, -8(%ebp)
	movl	-4(%ebp), %edx
	movl	-8(%ebp), %eax
	movl	%eax, _userenv(,%edx,4)
	leave
	ret
.globl _primitive_exit
	.def	_primitive_exit;	.scl	2;	.type	32;	.endef
_primitive_exit:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_exit_impl
	leave
	ret
	.def	_primitive_exit_impl;	.scl	3;	.type	32;	.endef
_primitive_exit_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpop
	movl	%eax, (%esp)
	call	_to_fixnum
	movl	%eax, (%esp)
	call	_exit
.globl _primitive_os_env
	.def	_primitive_os_env;	.scl	2;	.type	32;	.endef
_primitive_os_env:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_os_env_impl
	leave
	ret
	.def	_primitive_os_env_impl;	.scl	3;	.type	32;	.endef
_primitive_os_env_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	_unbox_char_string
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	_getenv
	movl	%eax, -8(%ebp)
	cmpl	$0, -8(%ebp)
	jne	L92
	movl	$7, (%esp)
	call	_dpush
	jmp	L91
L92:
	movl	-8(%ebp), %eax
	movl	%eax, (%esp)
	call	_box_char_string
L91:
	leave
	ret
.globl _primitive_eq
	.def	_primitive_eq;	.scl	2;	.type	32;	.endef
_primitive_eq:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_eq_impl
	leave
	ret
	.def	_primitive_eq_impl;	.scl	3;	.type	32;	.endef
_primitive_eq_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	_dpop
	movl	%eax, -4(%ebp)
	call	_dpeek
	movl	%eax, -8(%ebp)
	movl	-4(%ebp), %eax
	cmpl	-8(%ebp), %eax
	jne	L96
	movl	_T, %eax
	movl	%eax, -12(%ebp)
	jmp	L97
L96:
	movl	$7, -12(%ebp)
L97:
	movl	-12(%ebp), %eax
	movl	%eax, (%esp)
	call	_drepl
	leave
	ret
.globl _primitive_millis
	.def	_primitive_millis;	.scl	2;	.type	32;	.endef
_primitive_millis:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_millis_impl
	leave
	ret
	.def	_primitive_millis_impl;	.scl	3;	.type	32;	.endef
_primitive_millis_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_current_millis
	movl	%eax, (%esp)
	movl	%edx, 4(%esp)
	call	_box_unsigned_8
	leave
	ret
.globl _primitive_sleep
	.def	_primitive_sleep;	.scl	2;	.type	32;	.endef
_primitive_sleep:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_sleep_impl
	leave
	ret
	.def	_primitive_sleep_impl;	.scl	3;	.type	32;	.endef
_primitive_sleep_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpop
	movl	%eax, (%esp)
	call	_to_cell
	movl	%eax, (%esp)
	call	_sleep_millis
	leave
	ret
.globl _primitive_tag
	.def	_primitive_tag;	.scl	2;	.type	32;	.endef
_primitive_tag:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_tag_impl
	leave
	ret
	.def	_primitive_tag_impl;	.scl	3;	.type	32;	.endef
_primitive_tag_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	_dpeek
	andl	$7, %eax
	movl	%eax, (%esp)
	call	_tag_fixnum
	movl	%eax, (%esp)
	call	_drepl
	leave
	ret
	.def	_tag_fixnum;	.scl	3;	.type	32;	.endef
_tag_fixnum:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	sall	$3, %eax
	andl	$-8, %eax
	popl	%ebp
	ret
.globl _primitive_slot
	.def	_primitive_slot;	.scl	2;	.type	32;	.endef
_primitive_slot:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_slot_impl
	leave
	ret
	.def	_primitive_slot_impl;	.scl	3;	.type	32;	.endef
_primitive_slot_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	_dpop
	movl	%eax, (%esp)
	call	_untag_fixnum_fast
	movl	%eax, -4(%ebp)
	call	_dpop
	movl	%eax, -8(%ebp)
	movl	-8(%ebp), %edx
	andl	$-8, %edx
	movl	-4(%ebp), %eax
	sall	$2, %eax
	leal	(%edx,%eax), %eax
	movl	%eax, (%esp)
	call	_get
	movl	%eax, (%esp)
	call	_dpush
	leave
	ret
.globl _primitive_set_slot
	.def	_primitive_set_slot;	.scl	2;	.type	32;	.endef
_primitive_set_slot:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	%eax, -4(%ebp)
	movl	%edx, -8(%ebp)
	movl	-8(%ebp), %eax
	call	_save_callstack_top
	call	_primitive_set_slot_impl
	leave
	ret
	.def	_primitive_set_slot_impl;	.scl	3;	.type	32;	.endef
_primitive_set_slot_impl:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	_dpop
	movl	%eax, (%esp)
	call	_untag_fixnum_fast
	movl	%eax, -4(%ebp)
	call	_dpop
	movl	%eax, -8(%ebp)
	call	_dpop
	movl	%eax, -12(%ebp)
	movl	-12(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	-4(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	-8(%ebp), %eax
	movl	%eax, (%esp)
	call	_set_slot
	leave
	ret
	.def	_set_slot;	.scl	3;	.type	32;	.endef
_set_slot:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	16(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %edx
	andl	$-8, %edx
	movl	12(%ebp), %eax
	sall	$2, %eax
	leal	(%edx,%eax), %eax
	movl	%eax, (%esp)
	call	_put
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	_write_barrier
	leave
	ret
	.def	_write_barrier;	.scl	3;	.type	32;	.endef
_write_barrier:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$4, %esp
	movl	8(%ebp), %eax
	shrl	$6, %eax
	addl	_cards_offset, %eax
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %edx
	movl	-4(%ebp), %eax
	movzbl	(%eax), %eax
	orb	$-64, %al
	movb	%al, (%edx)
	leave
	ret
	.comm	_console_open, 16	 # 1
	.comm	_userenv, 256	 # 256
	.comm	_T, 16	 # 4
	.comm	_stack_chain, 16	 # 4
	.comm	_ds_size, 16	 # 4
	.comm	_rs_size, 16	 # 4
	.comm	_stage2, 16	 # 1
	.comm	_profiling_p, 16	 # 1
	.comm	_signal_number, 16	 # 4
	.comm	_signal_fault_addr, 16	 # 4
	.comm	_signal_callstack_top, 16	 # 4
	.comm	_secure_gc, 16	 # 1
	.comm	_data_heap, 16	 # 4
	.comm	_cards_offset, 16	 # 4
	.comm	_newspace, 16	 # 4
	.comm	_nursery, 16	 # 4
	.comm	_gc_time, 16	 # 8
	.comm	_nursery_collections, 16	 # 4
	.comm	_aging_collections, 16	 # 4
	.comm	_cards_scanned, 16	 # 4
	.comm	_performing_gc, 16	 # 1
	.comm	_collecting_gen, 16	 # 4
	.comm	_collecting_aging_again, 16	 # 1
	.comm	_last_code_heap_scan, 16	 # 4
	.comm	_growing_data_heap, 16	 # 1
	.comm	_old_data_heap, 16	 # 4
	.comm	_gc_jmp, 208	 # 208
	.comm	_heap_scan_ptr, 16	 # 4
	.comm	_gc_off, 16	 # 1
	.comm	_gc_locals_region, 16	 # 4
	.comm	_gc_locals, 16	 # 4
	.comm	_extra_roots_region, 16	 # 4
	.comm	_extra_roots, 16	 # 4
	.comm	_bignum_zero, 16	 # 4
	.comm	_bignum_pos_one, 16	 # 4
	.comm	_bignum_neg_one, 16	 # 4
	.comm	_code_heap, 16	 # 8
	.comm	_data_relocation_base, 16	 # 4
	.comm	_code_relocation_base, 16	 # 4
	.comm	_posix_argc, 16	 # 4
	.comm	_posix_argv, 16	 # 4
	.def	_sleep_millis;	.scl	3;	.type	32;	.endef
	.def	_current_millis;	.scl	3;	.type	32;	.endef
	.def	_getenv;	.scl	3;	.type	32;	.endef
	.def	_exit;	.scl	3;	.type	32;	.endef
	.def	_general_error;	.scl	3;	.type	32;	.endef
	.def	_memcpy;	.scl	3;	.type	32;	.endef
	.def	_allot_array_internal;	.scl	3;	.type	32;	.endef
	.def	_save_callstack_top;	.scl	3;	.type	32;	.endef
	.def	_free;	.scl	3;	.type	32;	.endef
	.def	_dealloc_segment;	.scl	3;	.type	32;	.endef
	.def	_alloc_segment;	.scl	3;	.type	32;	.endef
	.def	_safe_malloc;	.scl	3;	.type	32;	.endef
	.def	_type_error;	.scl	3;	.type	32;	.endef
	.section .drectve

	.ascii " -export:nursery,data"
	.ascii " -export:cards_offset,data"
	.ascii " -export:stack_chain,data"
	.ascii " -export:userenv,data"
	.ascii " -export:unnest_stacks"
	.ascii " -export:nest_stacks"
	.ascii " -export:save_stacks"