1118 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			ArmAsm
		
	
	
		
		
			
		
	
	
			1118 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			ArmAsm
		
	
	
| 
								 | 
							
									.file	"run.c"
							 | 
						||
| 
								 | 
							
									.text
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	reset_datastack
							 | 
						||
| 
								 | 
							
									.def	reset_datastack;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								reset_datastack:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									@ link register save eliminated.
							 | 
						||
| 
								 | 
							
									ldr	r3, .L3
							 | 
						||
| 
								 | 
							
									@ lr needed for prologue
							 | 
						||
| 
								 | 
							
									ldr	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									ldr	r1, [r2, #24]
							 | 
						||
| 
								 | 
							
									ldr	r3, [r1, #0]
							 | 
						||
| 
								 | 
							
									sub	r5, r3, #4
							 | 
						||
| 
								 | 
							
									mov	pc, lr
							 | 
						||
| 
								 | 
							
								.L4:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L3:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	reset_retainstack
							 | 
						||
| 
								 | 
							
									.def	reset_retainstack;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								reset_retainstack:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									@ link register save eliminated.
							 | 
						||
| 
								 | 
							
									ldr	r3, .L7
							 | 
						||
| 
								 | 
							
									@ lr needed for prologue
							 | 
						||
| 
								 | 
							
									ldr	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									ldr	r1, [r2, #28]
							 | 
						||
| 
								 | 
							
									ldr	r3, [r1, #0]
							 | 
						||
| 
								 | 
							
									sub	r6, r3, #4
							 | 
						||
| 
								 | 
							
									mov	pc, lr
							 | 
						||
| 
								 | 
							
								.L8:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L7:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	save_stacks
							 | 
						||
| 
								 | 
							
									.def	save_stacks;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								save_stacks:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									@ link register save eliminated.
							 | 
						||
| 
								 | 
							
									ldr	r3, .L11
							 | 
						||
| 
								 | 
							
									@ lr needed for prologue
							 | 
						||
| 
								 | 
							
									ldr	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									str	r6, [r2, #12]
							 | 
						||
| 
								 | 
							
									str	r5, [r2, #8]
							 | 
						||
| 
								 | 
							
									mov	pc, lr
							 | 
						||
| 
								 | 
							
								.L12:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L11:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	init_stacks
							 | 
						||
| 
								 | 
							
									.def	init_stacks;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								init_stacks:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									@ link register save eliminated.
							 | 
						||
| 
								 | 
							
									ldr	r3, .L15
							 | 
						||
| 
								 | 
							
									ldr	r2, .L15+4
							 | 
						||
| 
								 | 
							
									str	r0, [r3, #0]
							 | 
						||
| 
								 | 
							
									ldr	r3, .L15+8
							 | 
						||
| 
								 | 
							
									str	r1, [r2, #0]
							 | 
						||
| 
								 | 
							
									mov	r1, #0
							 | 
						||
| 
								 | 
							
									@ lr needed for prologue
							 | 
						||
| 
								 | 
							
									str	r1, [r3, #0]
							 | 
						||
| 
								 | 
							
									mov	pc, lr
							 | 
						||
| 
								 | 
							
								.L16:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L15:
							 | 
						||
| 
								 | 
							
									.word	ds_size
							 | 
						||
| 
								 | 
							
									.word	rs_size
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	enable_word_profiling
							 | 
						||
| 
								 | 
							
									.def	enable_word_profiling;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								enable_word_profiling:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									@ link register save eliminated.
							 | 
						||
| 
								 | 
							
									ldr	r3, .L21
							 | 
						||
| 
								 | 
							
									ldr	r2, [r0, #32]
							 | 
						||
| 
								 | 
							
									@ lr needed for prologue
							 | 
						||
| 
								 | 
							
									cmp	r2, r3
							 | 
						||
| 
								 | 
							
									ldreq	r3, .L21+4
							 | 
						||
| 
								 | 
							
									streq	r3, [r0, #32]
							 | 
						||
| 
								 | 
							
									mov	pc, lr
							 | 
						||
| 
								 | 
							
								.L22:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L21:
							 | 
						||
| 
								 | 
							
									.word	docol
							 | 
						||
| 
								 | 
							
									.word	docol_profiling
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	disable_word_profiling
							 | 
						||
| 
								 | 
							
									.def	disable_word_profiling;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								disable_word_profiling:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									@ link register save eliminated.
							 | 
						||
| 
								 | 
							
									ldr	r3, .L27
							 | 
						||
| 
								 | 
							
									ldr	r2, [r0, #32]
							 | 
						||
| 
								 | 
							
									@ lr needed for prologue
							 | 
						||
| 
								 | 
							
									cmp	r2, r3
							 | 
						||
| 
								 | 
							
									ldreq	r3, .L27+4
							 | 
						||
| 
								 | 
							
									streq	r3, [r0, #32]
							 | 
						||
| 
								 | 
							
									mov	pc, lr
							 | 
						||
| 
								 | 
							
								.L28:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L27:
							 | 
						||
| 
								 | 
							
									.word	docol_profiling
							 | 
						||
| 
								 | 
							
									.word	docol
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_3drop
							 | 
						||
| 
								 | 
							
									.def	primitive_3drop;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_3drop:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									sub	r5, r5, #12
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_2drop
							 | 
						||
| 
								 | 
							
									.def	primitive_2drop;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_2drop:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									sub	r5, r5, #8
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_millis
							 | 
						||
| 
								 | 
							
									.def	primitive_millis;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_millis:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									bl	current_millis
							 | 
						||
| 
								 | 
							
									ldr	lr, [sp], #4
							 | 
						||
| 
								 | 
							
									b	box_unsigned_8
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	array_to_stack
							 | 
						||
| 
								 | 
							
									.def	array_to_stack;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								array_to_stack:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, r7, lr}
							 | 
						||
| 
								 | 
							
									ldr	r4, [r0, #4]
							 | 
						||
| 
								 | 
							
									mov	r7, r1
							 | 
						||
| 
								 | 
							
									mov	r4, r4, lsr #3
							 | 
						||
| 
								 | 
							
									mov	r4, r4, asl #2
							 | 
						||
| 
								 | 
							
									add	r1, r0, #8
							 | 
						||
| 
								 | 
							
									mov	r2, r4
							 | 
						||
| 
								 | 
							
									mov	r0, r7
							 | 
						||
| 
								 | 
							
									bl	memcpy
							 | 
						||
| 
								 | 
							
									add	r4, r4, r7
							 | 
						||
| 
								 | 
							
									sub	r0, r4, #4
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, pc}
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	unnest_stacks
							 | 
						||
| 
								 | 
							
									.def	unnest_stacks;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								unnest_stacks:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, lr}
							 | 
						||
| 
								 | 
							
									ldr	r4, .L39
							 | 
						||
| 
								 | 
							
									ldr	r3, [r4, #0]
							 | 
						||
| 
								 | 
							
									ldr	r0, [r3, #24]
							 | 
						||
| 
								 | 
							
									bl	dealloc_segment
							 | 
						||
| 
								 | 
							
									ldr	r3, [r4, #0]
							 | 
						||
| 
								 | 
							
									ldr	r0, [r3, #28]
							 | 
						||
| 
								 | 
							
									bl	dealloc_segment
							 | 
						||
| 
								 | 
							
									ldr	r0, [r4, #0]
							 | 
						||
| 
								 | 
							
									ldr	r1, .L39+4
							 | 
						||
| 
								 | 
							
									ldr	r2, [r0, #36]
							 | 
						||
| 
								 | 
							
									ldr	r5, [r0, #16]
							 | 
						||
| 
								 | 
							
									ldr	r6, [r0, #20]
							 | 
						||
| 
								 | 
							
									str	r2, [r1, #8]
							 | 
						||
| 
								 | 
							
									ldr	r3, [r0, #32]
							 | 
						||
| 
								 | 
							
									str	r3, [r1, #4]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r0, #40]
							 | 
						||
| 
								 | 
							
									ldr	r1, [r0, #44]
							 | 
						||
| 
								 | 
							
									ldr	r3, .L39+8
							 | 
						||
| 
								 | 
							
									str	r1, [r4, #0]
							 | 
						||
| 
								 | 
							
									str	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, lr}
							 | 
						||
| 
								 | 
							
									b	free
							 | 
						||
| 
								 | 
							
								.L40:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L39:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.word	userenv
							 | 
						||
| 
								 | 
							
									.word	extra_roots
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_drop
							 | 
						||
| 
								 | 
							
									.def	primitive_drop;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_drop:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									sub	r5, r5, #4
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_swapd
							 | 
						||
| 
								 | 
							
									.def	primitive_swapd;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_swapd:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r1, [r5, #-4]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #-8]
							 | 
						||
| 
								 | 
							
									stmdb	r5, {r1, r2}	@ phole stm
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_swap
							 | 
						||
| 
								 | 
							
									.def	primitive_swap;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_swap:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r1, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #-4]
							 | 
						||
| 
								 | 
							
									stmda	r5, {r1, r2}	@ phole stm
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive__rot
							 | 
						||
| 
								 | 
							
									.def	primitive__rot;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive__rot:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldmdb	r5, {r1, r2}	@ phole ldm
							 | 
						||
| 
								 | 
							
									stmda	r5, {r0, r1, r2}	@ phole stm
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_rot
							 | 
						||
| 
								 | 
							
									.def	primitive_rot;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_rot:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #-8]
							 | 
						||
| 
								 | 
							
									ldr	r1, [r5, #-4]
							 | 
						||
| 
								 | 
							
									stmda	r5, {r0, r2}	@ phole stm
							 | 
						||
| 
								 | 
							
									str	r1, [r5, #-8]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_3dup
							 | 
						||
| 
								 | 
							
									.def	primitive_3dup;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_3dup:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldmda	r5, {r0, r1, r2}	@ phole ldm
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									add	r5, r5, #12
							 | 
						||
| 
								 | 
							
									str	r2, [r3, #12]
							 | 
						||
| 
								 | 
							
									stmdb	r5, {r0, r1}	@ phole stm
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_2dup
							 | 
						||
| 
								 | 
							
									.def	primitive_2dup;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_2dup:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #-4]
							 | 
						||
| 
								 | 
							
									add	r1, r5, #8
							 | 
						||
| 
								 | 
							
									mov	r5, r1
							 | 
						||
| 
								 | 
							
									str	r2, [r5, #-4]
							 | 
						||
| 
								 | 
							
									str	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_sleep
							 | 
						||
| 
								 | 
							
									.def	primitive_sleep;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_sleep:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									ldr	r0, [r3], #-4
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									bl	to_cell
							 | 
						||
| 
								 | 
							
									ldr	lr, [sp], #4
							 | 
						||
| 
								 | 
							
									b	sleep_millis
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_exit
							 | 
						||
| 
								 | 
							
									.def	primitive_exit;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_exit:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									ldr	r0, [r3], #-4
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									bl	to_fixnum
							 | 
						||
| 
								 | 
							
									bl	exit
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_to_r
							 | 
						||
| 
								 | 
							
									.def	primitive_to_r;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_to_r:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									ldr	r1, [r3], #-4
							 | 
						||
| 
								 | 
							
									add	r2, r6, #4
							 | 
						||
| 
								 | 
							
									mov	r6, r2
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									str	r1, [r6, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_eq
							 | 
						||
| 
								 | 
							
									.def	primitive_eq;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_eq:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r0, r5
							 | 
						||
| 
								 | 
							
									ldr	r1, [r5, #-4]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r0], #-4
							 | 
						||
| 
								 | 
							
									mov	r3, #7
							 | 
						||
| 
								 | 
							
									cmp	r2, r1
							 | 
						||
| 
								 | 
							
									ldreq	r3, .L66
							 | 
						||
| 
								 | 
							
									mov	r5, r0
							 | 
						||
| 
								 | 
							
									ldreq	r3, [r3, #0]
							 | 
						||
| 
								 | 
							
									str	r3, [r0, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
								.L67:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L66:
							 | 
						||
| 
								 | 
							
									.word	T
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_getenv
							 | 
						||
| 
								 | 
							
									.def	primitive_getenv;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_getenv:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r3, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	r2, .L70
							 | 
						||
| 
								 | 
							
									mov	r3, r3, asr #3
							 | 
						||
| 
								 | 
							
									ldr	r1, [r2, r3, asl #2]
							 | 
						||
| 
								 | 
							
									str	r1, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
								.L71:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L70:
							 | 
						||
| 
								 | 
							
									.word	userenv
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_2nip
							 | 
						||
| 
								 | 
							
									.def	primitive_2nip;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_2nip:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #0]
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									sub	r5, r5, #8
							 | 
						||
| 
								 | 
							
									str	r2, [r3, #-8]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_nip
							 | 
						||
| 
								 | 
							
									.def	primitive_nip;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_nip:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r2, r5
							 | 
						||
| 
								 | 
							
									ldr	r1, [r2], #-4
							 | 
						||
| 
								 | 
							
									str	r1, [r5, #-4]
							 | 
						||
| 
								 | 
							
									mov	r5, r2
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_os_env
							 | 
						||
| 
								 | 
							
									.def	primitive_os_env;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_os_env:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									bl	unbox_char_string
							 | 
						||
| 
								 | 
							
									bl	getenv
							 | 
						||
| 
								 | 
							
									add	r3, r5, #4
							 | 
						||
| 
								 | 
							
									cmp	r0, #0
							 | 
						||
| 
								 | 
							
									moveq	r5, r3
							 | 
						||
| 
								 | 
							
									moveq	r3, #7
							 | 
						||
| 
								 | 
							
									streq	r3, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldreq	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									ldr	lr, [sp], #4
							 | 
						||
| 
								 | 
							
									b	box_char_string
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	stack_to_array
							 | 
						||
| 
								 | 
							
									.def	stack_to_array;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								stack_to_array:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, r7, r8, lr}
							 | 
						||
| 
								 | 
							
									mov	r8, r0
							 | 
						||
| 
								 | 
							
									rsb	r1, r8, r1
							 | 
						||
| 
								 | 
							
									adds	r7, r1, #4
							 | 
						||
| 
								 | 
							
									mov	r0, #8
							 | 
						||
| 
								 | 
							
									mov	r1, r7, asr #2
							 | 
						||
| 
								 | 
							
									mov	r3, #0
							 | 
						||
| 
								 | 
							
									bmi	.L85
							 | 
						||
| 
								 | 
							
									bl	allot_array_internal
							 | 
						||
| 
								 | 
							
									mov	r1, r8
							 | 
						||
| 
								 | 
							
									mov	r4, r0
							 | 
						||
| 
								 | 
							
									mov	r2, r7
							 | 
						||
| 
								 | 
							
									add	r0, r0, #8
							 | 
						||
| 
								 | 
							
									bl	memcpy
							 | 
						||
| 
								 | 
							
									bic	r4, r4, #7
							 | 
						||
| 
								 | 
							
									add	r3, r5, #4
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									orr	r4, r4, #3
							 | 
						||
| 
								 | 
							
									str	r4, [r5, #0]
							 | 
						||
| 
								 | 
							
									mov	r3, #1
							 | 
						||
| 
								 | 
							
								.L85:
							 | 
						||
| 
								 | 
							
									mov	r0, r3
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, r8, pc}
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_from_r
							 | 
						||
| 
								 | 
							
									.def	primitive_from_r;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_from_r:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r3, r6
							 | 
						||
| 
								 | 
							
									ldr	r1, [r3], #-4
							 | 
						||
| 
								 | 
							
									add	r2, r5, #4
							 | 
						||
| 
								 | 
							
									mov	r5, r2
							 | 
						||
| 
								 | 
							
									mov	r6, r3
							 | 
						||
| 
								 | 
							
									str	r1, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_pick
							 | 
						||
| 
								 | 
							
									.def	primitive_pick;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_pick:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #-8]
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									add	r5, r5, #4
							 | 
						||
| 
								 | 
							
									str	r2, [r3, #4]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_over
							 | 
						||
| 
								 | 
							
									.def	primitive_over;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_over:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #-4]
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									add	r5, r5, #4
							 | 
						||
| 
								 | 
							
									str	r2, [r3, #4]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_tuck
							 | 
						||
| 
								 | 
							
									.def	primitive_tuck;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_tuck:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #-4]
							 | 
						||
| 
								 | 
							
									add	r1, r5, #4
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									mov	r5, r1
							 | 
						||
| 
								 | 
							
									stmda	r3, {r0, r2}	@ phole stm
							 | 
						||
| 
								 | 
							
									str	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_dupd
							 | 
						||
| 
								 | 
							
									.def	primitive_dupd;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_dupd:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r5, #-4]
							 | 
						||
| 
								 | 
							
									add	r1, r5, #4
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									mov	r5, r1
							 | 
						||
| 
								 | 
							
									str	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									str	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_dup
							 | 
						||
| 
								 | 
							
									.def	primitive_dup;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_dup:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r2, r5
							 | 
						||
| 
								 | 
							
									ldr	r1, [r2], #4
							 | 
						||
| 
								 | 
							
									str	r1, [r5, #4]
							 | 
						||
| 
								 | 
							
									mov	r5, r2
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_set_slot
							 | 
						||
| 
								 | 
							
									.def	primitive_set_slot;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_set_slot:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r0, r5
							 | 
						||
| 
								 | 
							
									ldr	r1, [r0], #-4
							 | 
						||
| 
								 | 
							
									ldr	ip, [r5, #-4]
							 | 
						||
| 
								 | 
							
									ldr	lr, [r0, #-4]
							 | 
						||
| 
								 | 
							
									mov	r1, r1, asr #3
							 | 
						||
| 
								 | 
							
									bic	r3, ip, #7
							 | 
						||
| 
								 | 
							
									ldr	r2, .L101
							 | 
						||
| 
								 | 
							
									str	lr, [r3, r1, asl #2]
							 | 
						||
| 
								 | 
							
									ldr	r1, [r2, #0]
							 | 
						||
| 
								 | 
							
									sub	lr, r0, #4
							 | 
						||
| 
								 | 
							
									ldrb	r3, [r1, ip, lsr #6]	@ zero_extendqisi2
							 | 
						||
| 
								 | 
							
									mov	r5, r0
							 | 
						||
| 
								 | 
							
									mvn	r3, r3, asl #26
							 | 
						||
| 
								 | 
							
									mvn	r3, r3, lsr #26
							 | 
						||
| 
								 | 
							
									mov	r5, lr
							 | 
						||
| 
								 | 
							
									sub	r5, lr, #4
							 | 
						||
| 
								 | 
							
									strb	r3, [r1, ip, lsr #6]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
								.L102:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L101:
							 | 
						||
| 
								 | 
							
									.word	cards_offset
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_slot
							 | 
						||
| 
								 | 
							
									.def	primitive_slot;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_slot:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r1, r5
							 | 
						||
| 
								 | 
							
									ldr	r2, [r1], #-4
							 | 
						||
| 
								 | 
							
									ldr	r3, [r5, #-4]
							 | 
						||
| 
								 | 
							
									mov	r2, r2, asr #3
							 | 
						||
| 
								 | 
							
									bic	r3, r3, #7
							 | 
						||
| 
								 | 
							
									ldr	ip, [r3, r2, asl #2]
							 | 
						||
| 
								 | 
							
									mov	r0, r5
							 | 
						||
| 
								 | 
							
									mov	r5, r1
							 | 
						||
| 
								 | 
							
									sub	r5, r1, #4
							 | 
						||
| 
								 | 
							
									mov	r5, r1
							 | 
						||
| 
								 | 
							
									str	ip, [r0, #-4]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_setenv
							 | 
						||
| 
								 | 
							
									.def	primitive_setenv;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_setenv:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r1, r5
							 | 
						||
| 
								 | 
							
									ldr	r3, [r1], #-4
							 | 
						||
| 
								 | 
							
									ldr	r0, [r5, #-4]
							 | 
						||
| 
								 | 
							
									ldr	r2, .L107
							 | 
						||
| 
								 | 
							
									mov	r3, r3, asr #3
							 | 
						||
| 
								 | 
							
									mov	r5, r1
							 | 
						||
| 
								 | 
							
									sub	r5, r1, #4
							 | 
						||
| 
								 | 
							
									str	r0, [r2, r3, asl #2]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
								.L108:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L107:
							 | 
						||
| 
								 | 
							
									.word	userenv
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_class_hash
							 | 
						||
| 
								 | 
							
									.def	primitive_class_hash;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_class_hash:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r3, [r5, #0]
							 | 
						||
| 
								 | 
							
									and	r2, r3, #7
							 | 
						||
| 
								 | 
							
									cmp	r2, #2
							 | 
						||
| 
								 | 
							
									bic	r0, r3, #7
							 | 
						||
| 
								 | 
							
									beq	.L116
							 | 
						||
| 
								 | 
							
									cmp	r2, #3
							 | 
						||
| 
								 | 
							
									bic	r3, r3, #7
							 | 
						||
| 
								 | 
							
									ldreq	r3, [r3, #0]
							 | 
						||
| 
								 | 
							
									mov	r0, r2, asl #3
							 | 
						||
| 
								 | 
							
									streq	r3, [r5, #0]
							 | 
						||
| 
								 | 
							
									strne	r0, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
								.L116:
							 | 
						||
| 
								 | 
							
									ldr	r3, [r0, #8]
							 | 
						||
| 
								 | 
							
									bic	r3, r3, #7
							 | 
						||
| 
								 | 
							
									ldr	r2, [r3, #4]
							 | 
						||
| 
								 | 
							
									str	r2, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_tag
							 | 
						||
| 
								 | 
							
									.def	primitive_tag;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_tag:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r3, [r5, #0]
							 | 
						||
| 
								 | 
							
									and	r3, r3, #7
							 | 
						||
| 
								 | 
							
									mov	r3, r3, asl #3
							 | 
						||
| 
								 | 
							
									str	r3, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	nest_stacks
							 | 
						||
| 
								 | 
							
									.def	nest_stacks;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								nest_stacks:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, lr}
							 | 
						||
| 
								 | 
							
									mov	r0, #48
							 | 
						||
| 
								 | 
							
									bl	safe_malloc
							 | 
						||
| 
								 | 
							
									mov	r4, r0
							 | 
						||
| 
								 | 
							
									ldr	r0, .L121
							 | 
						||
| 
								 | 
							
									str	r5, [r4, #16]
							 | 
						||
| 
								 | 
							
									str	r6, [r4, #20]
							 | 
						||
| 
								 | 
							
									ldr	r3, [r0, #8]
							 | 
						||
| 
								 | 
							
									mvn	r2, #0
							 | 
						||
| 
								 | 
							
									str	r3, [r4, #36]
							 | 
						||
| 
								 | 
							
									ldr	r1, [r0, #4]
							 | 
						||
| 
								 | 
							
									ldr	r3, .L121+4
							 | 
						||
| 
								 | 
							
									str	r1, [r4, #32]
							 | 
						||
| 
								 | 
							
									str	r2, [r4, #0]
							 | 
						||
| 
								 | 
							
									str	r2, [r4, #4]
							 | 
						||
| 
								 | 
							
									ldr	r0, [r3, #0]
							 | 
						||
| 
								 | 
							
									bl	alloc_segment
							 | 
						||
| 
								 | 
							
									ldr	r3, .L121+8
							 | 
						||
| 
								 | 
							
									str	r0, [r4, #24]
							 | 
						||
| 
								 | 
							
									ldr	r0, [r3, #0]
							 | 
						||
| 
								 | 
							
									bl	alloc_segment
							 | 
						||
| 
								 | 
							
									ldr	r3, .L121+12
							 | 
						||
| 
								 | 
							
									ldr	ip, [r4, #24]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									ldr	r1, .L121+16
							 | 
						||
| 
								 | 
							
									str	r2, [r4, #40]
							 | 
						||
| 
								 | 
							
									ldr	lr, [ip, #0]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r0, #0]
							 | 
						||
| 
								 | 
							
									ldr	r3, [r1, #0]
							 | 
						||
| 
								 | 
							
									sub	r5, lr, #4
							 | 
						||
| 
								 | 
							
									sub	r6, r2, #4
							 | 
						||
| 
								 | 
							
									str	r3, [r4, #44]
							 | 
						||
| 
								 | 
							
									str	r0, [r4, #28]
							 | 
						||
| 
								 | 
							
									str	r4, [r1, #0]
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, pc}
							 | 
						||
| 
								 | 
							
								.L122:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L121:
							 | 
						||
| 
								 | 
							
									.word	userenv
							 | 
						||
| 
								 | 
							
									.word	ds_size
							 | 
						||
| 
								 | 
							
									.word	rs_size
							 | 
						||
| 
								 | 
							
									.word	extra_roots
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	fix_stacks
							 | 
						||
| 
								 | 
							
									.def	fix_stacks;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								fix_stacks:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									ldr	r2, .L131
							 | 
						||
| 
								 | 
							
									add	r3, r5, #4
							 | 
						||
| 
								 | 
							
									ldr	r2, [r2, #0]
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, lr}
							 | 
						||
| 
								 | 
							
									ldr	r0, [r2, #24]
							 | 
						||
| 
								 | 
							
									add	r4, r6, #256
							 | 
						||
| 
								 | 
							
									ldr	ip, [r0, #0]
							 | 
						||
| 
								 | 
							
									add	lr, r5, #256
							 | 
						||
| 
								 | 
							
									cmp	r3, ip
							 | 
						||
| 
								 | 
							
									add	r1, r6, #4
							 | 
						||
| 
								 | 
							
									bcc	.L124
							 | 
						||
| 
								 | 
							
									ldr	r3, [r0, #8]
							 | 
						||
| 
								 | 
							
									cmp	lr, r3
							 | 
						||
| 
								 | 
							
									bcs	.L124
							 | 
						||
| 
								 | 
							
								.L126:
							 | 
						||
| 
								 | 
							
									ldr	r2, [r2, #28]
							 | 
						||
| 
								 | 
							
									ldr	r0, [r2, #0]
							 | 
						||
| 
								 | 
							
									cmp	r1, r0
							 | 
						||
| 
								 | 
							
									bcc	.L127
							 | 
						||
| 
								 | 
							
									ldr	r3, [r2, #8]
							 | 
						||
| 
								 | 
							
									cmp	r4, r3
							 | 
						||
| 
								 | 
							
									ldmccfd	sp!, {r4, pc}
							 | 
						||
| 
								 | 
							
								.L127:
							 | 
						||
| 
								 | 
							
									sub	r6, r0, #4
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, pc}
							 | 
						||
| 
								 | 
							
								.L124:
							 | 
						||
| 
								 | 
							
									sub	r5, ip, #4
							 | 
						||
| 
								 | 
							
									b	.L126
							 | 
						||
| 
								 | 
							
								.L132:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L131:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_type
							 | 
						||
| 
								 | 
							
									.def	primitive_type;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_type:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	r3, [r5, #0]
							 | 
						||
| 
								 | 
							
									bic	r1, r3, #7
							 | 
						||
| 
								 | 
							
									and	r3, r3, #7
							 | 
						||
| 
								 | 
							
									cmp	r3, #3
							 | 
						||
| 
								 | 
							
									ldreq	r3, [r1, #0]
							 | 
						||
| 
								 | 
							
									moveq	r3, r3, lsr #3
							 | 
						||
| 
								 | 
							
									mov	r3, r3, asl #3
							 | 
						||
| 
								 | 
							
									str	r3, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	default_word_xt
							 | 
						||
| 
								 | 
							
									.def	default_word_xt;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								default_word_xt:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									ldr	r3, .L154
							 | 
						||
| 
								 | 
							
									ldr	r0, [r0, #16]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									str	lr, [sp, #-4]!
							 | 
						||
| 
								 | 
							
									cmp	r0, r2
							 | 
						||
| 
								 | 
							
									ldreq	r0, .L154+4
							 | 
						||
| 
								 | 
							
									ldreq	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									and	r1, r0, #7
							 | 
						||
| 
								 | 
							
									cmp	r1, #3
							 | 
						||
| 
								 | 
							
									biceq	r3, r0, #7
							 | 
						||
| 
								 | 
							
									ldreq	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									movne	r2, r1
							 | 
						||
| 
								 | 
							
									moveq	r2, r2, lsr #3
							 | 
						||
| 
								 | 
							
									cmp	r2, #14
							 | 
						||
| 
								 | 
							
									beq	.L153
							 | 
						||
| 
								 | 
							
									cmp	r1, #3
							 | 
						||
| 
								 | 
							
									biceq	r3, r0, #7
							 | 
						||
| 
								 | 
							
									ldreq	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									moveq	r1, r2, lsr #3
							 | 
						||
| 
								 | 
							
									cmp	r1, #0
							 | 
						||
| 
								 | 
							
									ldrne	r0, .L154+8
							 | 
						||
| 
								 | 
							
									ldrne	pc, [sp], #4
							 | 
						||
| 
								 | 
							
									bl	to_fixnum
							 | 
						||
| 
								 | 
							
									ldr	r3, .L154+12
							 | 
						||
| 
								 | 
							
									ldr	r0, [r3, r0, asl #2]
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
								.L153:
							 | 
						||
| 
								 | 
							
									ldr	r3, .L154+16
							 | 
						||
| 
								 | 
							
									ldr	r2, .L154+20
							 | 
						||
| 
								 | 
							
									ldrb	r1, [r3, #0]	@ zero_extendqisi2
							 | 
						||
| 
								 | 
							
									ldr	r3, .L154+24
							 | 
						||
| 
								 | 
							
									cmp	r1, #0
							 | 
						||
| 
								 | 
							
									moveq	r0, r2
							 | 
						||
| 
								 | 
							
									movne	r0, r3
							 | 
						||
| 
								 | 
							
									ldr	pc, [sp], #4
							 | 
						||
| 
								 | 
							
								.L155:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L154:
							 | 
						||
| 
								 | 
							
									.word	T
							 | 
						||
| 
								 | 
							
									.word	dosym
							 | 
						||
| 
								 | 
							
									.word	undefined
							 | 
						||
| 
								 | 
							
									.word	primitives
							 | 
						||
| 
								 | 
							
									.word	profiling
							 | 
						||
| 
								 | 
							
									.word	docol
							 | 
						||
| 
								 | 
							
									.word	docol_profiling
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_profiling
							 | 
						||
| 
								 | 
							
									.def	primitive_profiling;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_profiling:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, r7, r8, lr}
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									ldr	r0, [r3], #-4
							 | 
						||
| 
								 | 
							
									ldr	r4, .L175
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									bl	to_boolean
							 | 
						||
| 
								 | 
							
									strb	r0, [r4, #0]
							 | 
						||
| 
								 | 
							
									bl	begin_scan
							 | 
						||
| 
								 | 
							
									ldr	r8, .L175+4
							 | 
						||
| 
								 | 
							
									ldr	r7, .L175+8
							 | 
						||
| 
								 | 
							
								.L173:
							 | 
						||
| 
								 | 
							
									bl	next_object
							 | 
						||
| 
								 | 
							
									cmp	r0, #7
							 | 
						||
| 
								 | 
							
									bic	r2, r0, #7
							 | 
						||
| 
								 | 
							
									and	r3, r0, #7
							 | 
						||
| 
								 | 
							
									beq	.L174
							 | 
						||
| 
								 | 
							
								.L158:
							 | 
						||
| 
								 | 
							
									cmp	r3, #3
							 | 
						||
| 
								 | 
							
									ldreq	r3, [r2, #0]
							 | 
						||
| 
								 | 
							
									moveq	r3, r3, lsr #3
							 | 
						||
| 
								 | 
							
									cmp	r3, #17
							 | 
						||
| 
								 | 
							
									bne	.L173
							 | 
						||
| 
								 | 
							
									ldrb	r3, [r4, #0]	@ zero_extendqisi2
							 | 
						||
| 
								 | 
							
									bic	r2, r0, #7
							 | 
						||
| 
								 | 
							
									cmp	r3, #0
							 | 
						||
| 
								 | 
							
									bic	r0, r0, #7
							 | 
						||
| 
								 | 
							
									beq	.L162
							 | 
						||
| 
								 | 
							
									ldr	r3, [r2, #32]
							 | 
						||
| 
								 | 
							
									cmp	r3, r8
							 | 
						||
| 
								 | 
							
									streq	r7, [r2, #32]
							 | 
						||
| 
								 | 
							
									bl	next_object
							 | 
						||
| 
								 | 
							
									cmp	r0, #7
							 | 
						||
| 
								 | 
							
									bic	r2, r0, #7
							 | 
						||
| 
								 | 
							
									and	r3, r0, #7
							 | 
						||
| 
								 | 
							
									bne	.L158
							 | 
						||
| 
								 | 
							
								.L174:
							 | 
						||
| 
								 | 
							
									ldr	r3, .L175+12
							 | 
						||
| 
								 | 
							
									mov	r2, #0
							 | 
						||
| 
								 | 
							
									strb	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, r8, pc}
							 | 
						||
| 
								 | 
							
								.L162:
							 | 
						||
| 
								 | 
							
									ldr	r3, [r0, #32]
							 | 
						||
| 
								 | 
							
									cmp	r3, r7
							 | 
						||
| 
								 | 
							
									streq	r8, [r0, #32]
							 | 
						||
| 
								 | 
							
									b	.L173
							 | 
						||
| 
								 | 
							
								.L176:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L175:
							 | 
						||
| 
								 | 
							
									.word	profiling
							 | 
						||
| 
								 | 
							
									.word	docol
							 | 
						||
| 
								 | 
							
									.word	docol_profiling
							 | 
						||
| 
								 | 
							
									.word	gc_off
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_set_retainstack
							 | 
						||
| 
								 | 
							
									.def	primitive_set_retainstack;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_set_retainstack:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, r7, lr}
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									ldr	r1, [r3], #-4
							 | 
						||
| 
								 | 
							
									mov	r0, #8
							 | 
						||
| 
								 | 
							
									and	r2, r1, #7
							 | 
						||
| 
								 | 
							
									cmp	r2, #3
							 | 
						||
| 
								 | 
							
									bic	r4, r1, #7
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									ldreq	r3, [r4, #0]
							 | 
						||
| 
								 | 
							
									moveq	r2, r3, lsr #3
							 | 
						||
| 
								 | 
							
									cmp	r2, #8
							 | 
						||
| 
								 | 
							
									blne	type_error
							 | 
						||
| 
								 | 
							
								.L181:
							 | 
						||
| 
								 | 
							
									ldr	r3, .L184
							 | 
						||
| 
								 | 
							
									ldr	r7, [r4, #4]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									add	r1, r4, #8
							 | 
						||
| 
								 | 
							
									ldr	r0, [r2, #28]
							 | 
						||
| 
								 | 
							
									mov	r7, r7, lsr #3
							 | 
						||
| 
								 | 
							
									ldr	r4, [r0, #0]
							 | 
						||
| 
								 | 
							
									mov	r7, r7, asl #2
							 | 
						||
| 
								 | 
							
									mov	r0, r4
							 | 
						||
| 
								 | 
							
									mov	r2, r7
							 | 
						||
| 
								 | 
							
									bl	memcpy
							 | 
						||
| 
								 | 
							
									add	r4, r4, r7
							 | 
						||
| 
								 | 
							
									sub	r6, r4, #4
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, pc}
							 | 
						||
| 
								 | 
							
								.L185:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L184:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_set_datastack
							 | 
						||
| 
								 | 
							
									.def	primitive_set_datastack;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_set_datastack:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, r7, lr}
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									mov	r3, r5
							 | 
						||
| 
								 | 
							
									ldr	r1, [r3], #-4
							 | 
						||
| 
								 | 
							
									mov	r0, #8
							 | 
						||
| 
								 | 
							
									and	r2, r1, #7
							 | 
						||
| 
								 | 
							
									cmp	r2, #3
							 | 
						||
| 
								 | 
							
									bic	r4, r1, #7
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									ldreq	r3, [r4, #0]
							 | 
						||
| 
								 | 
							
									moveq	r2, r3, lsr #3
							 | 
						||
| 
								 | 
							
									cmp	r2, #8
							 | 
						||
| 
								 | 
							
									blne	type_error
							 | 
						||
| 
								 | 
							
								.L190:
							 | 
						||
| 
								 | 
							
									ldr	r3, .L193
							 | 
						||
| 
								 | 
							
									ldr	r7, [r4, #4]
							 | 
						||
| 
								 | 
							
									ldr	r2, [r3, #0]
							 | 
						||
| 
								 | 
							
									add	r1, r4, #8
							 | 
						||
| 
								 | 
							
									ldr	r0, [r2, #24]
							 | 
						||
| 
								 | 
							
									mov	r7, r7, lsr #3
							 | 
						||
| 
								 | 
							
									ldr	r4, [r0, #0]
							 | 
						||
| 
								 | 
							
									mov	r7, r7, asl #2
							 | 
						||
| 
								 | 
							
									mov	r0, r4
							 | 
						||
| 
								 | 
							
									mov	r2, r7
							 | 
						||
| 
								 | 
							
									bl	memcpy
							 | 
						||
| 
								 | 
							
									add	r4, r4, r7
							 | 
						||
| 
								 | 
							
									sub	r5, r4, #4
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, pc}
							 | 
						||
| 
								 | 
							
								.L194:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L193:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_retainstack
							 | 
						||
| 
								 | 
							
									.def	primitive_retainstack;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_retainstack:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, r7, r8, lr}
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	ip, .L200
							 | 
						||
| 
								 | 
							
									mov	r1, #7
							 | 
						||
| 
								 | 
							
									ldr	lr, [ip, #0]
							 | 
						||
| 
								 | 
							
									mov	r0, #8
							 | 
						||
| 
								 | 
							
									ldr	r4, [lr, #28]
							 | 
						||
| 
								 | 
							
									mov	r2, r1
							 | 
						||
| 
								 | 
							
									ldr	r8, [r4, #0]
							 | 
						||
| 
								 | 
							
									mov	r3, #0
							 | 
						||
| 
								 | 
							
									rsb	ip, r8, r6
							 | 
						||
| 
								 | 
							
									adds	r7, ip, #4
							 | 
						||
| 
								 | 
							
									bmi	.L196
							 | 
						||
| 
								 | 
							
									mov	r1, r7, asr #2
							 | 
						||
| 
								 | 
							
									bl	allot_array_internal
							 | 
						||
| 
								 | 
							
									mov	r1, r8
							 | 
						||
| 
								 | 
							
									mov	r4, r0
							 | 
						||
| 
								 | 
							
									mov	r2, r7
							 | 
						||
| 
								 | 
							
									add	r0, r0, #8
							 | 
						||
| 
								 | 
							
									bl	memcpy
							 | 
						||
| 
								 | 
							
									bic	r4, r4, #7
							 | 
						||
| 
								 | 
							
									add	r3, r5, #4
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									orr	r4, r4, #3
							 | 
						||
| 
								 | 
							
									str	r4, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, r8, pc}
							 | 
						||
| 
								 | 
							
								.L196:
							 | 
						||
| 
								 | 
							
									mov	r0, #13
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, r8, lr}
							 | 
						||
| 
								 | 
							
									b	general_error
							 | 
						||
| 
								 | 
							
								.L201:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L200:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
									.global	primitive_datastack
							 | 
						||
| 
								 | 
							
									.def	primitive_datastack;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
								primitive_datastack:
							 | 
						||
| 
								 | 
							
									@ args = 0, pretend = 0, frame = 0
							 | 
						||
| 
								 | 
							
									@ frame_needed = 0, uses_anonymous_args = 0
							 | 
						||
| 
								 | 
							
									stmfd	sp!, {r4, r7, r8, lr}
							 | 
						||
| 
								 | 
							
									mov	r0, r1
							 | 
						||
| 
								 | 
							
									bl	save_callstack_top
							 | 
						||
| 
								 | 
							
									ldr	ip, .L207
							 | 
						||
| 
								 | 
							
									mov	r1, #7
							 | 
						||
| 
								 | 
							
									ldr	lr, [ip, #0]
							 | 
						||
| 
								 | 
							
									mov	r0, #8
							 | 
						||
| 
								 | 
							
									ldr	r4, [lr, #24]
							 | 
						||
| 
								 | 
							
									mov	r2, r1
							 | 
						||
| 
								 | 
							
									ldr	r8, [r4, #0]
							 | 
						||
| 
								 | 
							
									mov	r3, #0
							 | 
						||
| 
								 | 
							
									rsb	ip, r8, r5
							 | 
						||
| 
								 | 
							
									adds	r7, ip, #4
							 | 
						||
| 
								 | 
							
									bmi	.L203
							 | 
						||
| 
								 | 
							
									mov	r1, r7, asr #2
							 | 
						||
| 
								 | 
							
									bl	allot_array_internal
							 | 
						||
| 
								 | 
							
									mov	r1, r8
							 | 
						||
| 
								 | 
							
									mov	r4, r0
							 | 
						||
| 
								 | 
							
									mov	r2, r7
							 | 
						||
| 
								 | 
							
									add	r0, r0, #8
							 | 
						||
| 
								 | 
							
									bl	memcpy
							 | 
						||
| 
								 | 
							
									bic	r4, r4, #7
							 | 
						||
| 
								 | 
							
									add	r3, r5, #4
							 | 
						||
| 
								 | 
							
									mov	r5, r3
							 | 
						||
| 
								 | 
							
									orr	r4, r4, #3
							 | 
						||
| 
								 | 
							
									str	r4, [r5, #0]
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, r8, pc}
							 | 
						||
| 
								 | 
							
								.L203:
							 | 
						||
| 
								 | 
							
									mov	r0, #11
							 | 
						||
| 
								 | 
							
									ldmfd	sp!, {r4, r7, r8, lr}
							 | 
						||
| 
								 | 
							
									b	general_error
							 | 
						||
| 
								 | 
							
								.L208:
							 | 
						||
| 
								 | 
							
									.align	0
							 | 
						||
| 
								 | 
							
								.L207:
							 | 
						||
| 
								 | 
							
									.word	stack_chain
							 | 
						||
| 
								 | 
							
									.comm	errno, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	profiling, 4	@ 1
							 | 
						||
| 
								 | 
							
									.comm	userenv, 160	@ 160
							 | 
						||
| 
								 | 
							
									.comm	T, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	stack_chain, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	ds_size, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	rs_size, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	signal_number, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	signal_fault_addr, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	signal_callstack_top, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	secure_gc, 4	@ 1
							 | 
						||
| 
								 | 
							
									.comm	data_heap, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	cards_offset, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	newspace, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	nursery, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	gc_time, 8	@ 8
							 | 
						||
| 
								 | 
							
									.comm	minor_collections, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	cards_scanned, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	performing_gc, 4	@ 1
							 | 
						||
| 
								 | 
							
									.comm	collecting_gen, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	collecting_code, 4	@ 1
							 | 
						||
| 
								 | 
							
									.comm	collecting_aging_again, 4	@ 1
							 | 
						||
| 
								 | 
							
									.comm	last_code_heap_scan, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	growing_data_heap, 4	@ 1
							 | 
						||
| 
								 | 
							
									.comm	old_data_heap, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	gc_jmp, 44	@ 44
							 | 
						||
| 
								 | 
							
									.comm	heap_scan_ptr, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	gc_off, 4	@ 1
							 | 
						||
| 
								 | 
							
									.comm	extra_roots_region, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	extra_roots, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	bignum_zero, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	bignum_pos_one, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	bignum_neg_one, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	code_heap, 8	@ 8
							 | 
						||
| 
								 | 
							
									.comm	data_relocation_base, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	code_relocation_base, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	posix_argc, 4	@ 4
							 | 
						||
| 
								 | 
							
									.comm	posix_argv, 4	@ 4
							 | 
						||
| 
								 | 
							
									.def	memcpy;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	type_error;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	safe_malloc;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	alloc_segment;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	dealloc_segment;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	free;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	allot_array_internal;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	general_error;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	memcpy;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	dosym;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	undefined;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	exit;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	to_fixnum;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	unbox_char_string;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	getenv;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	box_char_string;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	box_unsigned_8;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	current_millis;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	sleep_millis;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	to_cell;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	docol_profiling;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	docol;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	save_callstack_top;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	to_boolean;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	begin_scan;	.scl	2;	.type	32;	.endef
							 | 
						||
| 
								 | 
							
									.def	next_object;	.scl	2;	.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:profiling,data"
							 | 
						||
| 
								 | 
							
									.ascii " -export:nest_stacks"
							 | 
						||
| 
								 | 
							
									.ascii " -export:unnest_stacks"
							 | 
						||
| 
								 | 
							
									.ascii " -export:save_stacks"
							 |