qsort-rec.as 5.54 KB
	.globl	readInt
	.globl	writeInt
	.globl	readBool
	.globl	writeBool
	.globl	readReal
	.globl	writeReal
	.globl	writeChar
	.globl	array
	.data
array:
	.space	800

	.globl	size
	.data
size:
	.space	4

	.globl	qsort
	.text
qsort:
# args:   8 bytes
# result: 0 bytes
# locals: 17 bytes
# temps:  24 bytes
#
#     l:	argument (4 bytes)	at (ap)
#     r:	argument (4 bytes)	at 4(ap)
#     i:	local    (4 bytes)	at -4(fp)
#     j:	local    (4 bytes)	at -8(fp)
#     x:	local    (8 bytes)	at -16(fp)
#     more:	local    (1 bytes)	at -17(fp)
#
	movl	sp, fp
	subl2	$41, sp
	movl	(ap), -25(fp)
	movl	4(ap), -21(fp)
	movl	-25(fp), -4(fp)
	movl	-21(fp), -8(fp)
	movl	(ap), r0
	movl	4(ap), r1
	addl2	r1, r0
	divl2	$2, r0
	movab	array, r1
	mull2	$8, r0
	addl2	r0, r1
	movc3	$8, (r1), -16(fp)
	movb	$1, -17(fp)
Lbg_1:
	movb	-17(fp), r0
	jlbc	r0, Lel_1
Lbg_2:
	movl	-4(fp), r0
	mull2	$8, r0
	movab	array, r1
	addl2	r0, r1
	movab	(r1), r0
	addl2	$0, r0
	movl	(r0), r0
	movab	-16(fp), r2
	addl2	$0, r2
	movl	(r2), r2
	movb	$1, r3
	cmpl	r0, r2
	jlss	Lro_1
	movb	$0, r3
Lro_1:
	jlbc	r3, Lel_2
	movl	-4(fp), r0
	addl3	$1, r0, -4(fp)
	jbr	Lbg_2
Lel_2:
Leg_2:
Lbg_3:
	movab	-16(fp), r0
	addl2	$0, r0
	movl	(r0), r0
	movl	-8(fp), r2
	mull2	$8, r2
	movab	array, r3
	addl2	r2, r3
	movab	(r3), r2
	addl2	$0, r2
	movl	(r2), r2
	movb	$1, r4
	cmpl	r0, r2
	jlss	Lro_2
	movb	$0, r4
Lro_2:
	jlbc	r4, Lel_3
	movl	-8(fp), r0
	subl3	$1, r0, -8(fp)
	jbr	Lbg_3
Lel_3:
Leg_3:
Lbg_4:
	movl	-4(fp), r0
	movl	-8(fp), r2
	movb	$1, r4
	cmpl	r0, r2
	jleq	Lro_3
	movb	$0, r4
Lro_3:
	jlbc	r4, Lel_4
	movl	-8(fp), r0
	movab	array, r2
	mull2	$8, r0
	addl2	r0, r2
	movc3	$8, (r2), -41(fp)
	movl	-4(fp), r0
	movab	array, r2
	mull2	$8, r0
	addl2	r0, r2
	movc3	$8, (r2), -33(fp)
	movl	-4(fp), r0
	mull2	$8, r0
	movab	array, r2
	addl2	r0, r2
	movc3	$8, -41(fp), (r2)
	movl	-8(fp), r0
	mull2	$8, r0
	movab	array, r4
	addl2	r0, r4
	movc3	$8, -33(fp), (r4)
	movl	-4(fp), r0
	addl3	$1, r0, -25(fp)
	movl	-8(fp), r0
	subl3	$1, r0, -21(fp)
	movl	-25(fp), -4(fp)
	movl	-21(fp), -8(fp)
	jbr	Leg_4
Lel_4:
Leg_4:
	movl	-4(fp), r0
	movl	-8(fp), r5
	movb	$1, -17(fp)
	cmpl	r0, r5
	jleq	Lro_4
	movb	$0, -17(fp)
Lro_4:
	jbr	Lbg_1
Lel_1:
Leg_1:
Lbg_5:
	movl	(ap), r0
	movl	-8(fp), r5
	movb	$1, r6
	cmpl	r0, r5
	jlss	Lro_5
	movb	$0, r6
Lro_5:
	jlbc	r6, Lel_5
	movl	(ap), -25(fp)
	movl	-8(fp), -21(fp)
	pushr	$0x381E
	movab	-41(fp), r11
	movab	-25(fp), ap
	jsb	qsort
	popr	$0x381E
	jbr	Leg_5
Lel_5:
Leg_5:
Lbg_6:
	movl	-4(fp), r0
	movl	4(ap), r5
	movb	$1, r6
	cmpl	r0, r5
	jlss	Lro_6
	movb	$0, r6
Lro_6:
	jlbc	r6, Lel_6
	movl	-4(fp), -25(fp)
	movl	4(ap), -21(fp)
	pushr	$0x381E
	movab	-41(fp), r11
	movab	-25(fp), ap
	jsb	qsort
	popr	$0x381E
	jbr	Leg_6
Lel_6:
Leg_6:
	movl	fp, sp
	rsb

	.globl	readData
	.text
readData:
# args:   0 bytes
# result: 0 bytes
# locals: 12 bytes
# temps:  20 bytes
#
#     i:	local    (4 bytes)	at -4(fp)
#     j:	local    (4 bytes)	at -8(fp)
#     k:	local    (4 bytes)	at -12(fp)
#
	movl	sp, fp
	subl2	$32, sp
	pushr	$0x3800
	moval	size, r11
	movab	-12(fp), ap
	jsb	readInt
	popr	$0x3800
	movl	$0, -4(fp)
Lbg_7:
	movl	-4(fp), r0
	movl	size, r1
	movb	$1, r2
	cmpl	r0, r1
	jlss	Lro_7
	movb	$0, r2
Lro_7:
	jlbc	r2, Lel_7
	movl	-4(fp), r0
	mull2	$8, r0
	movab	array, r1
	addl2	r0, r1
	movab	(r1), r0
	addl2	$0, r0
	pushr	$0x3803
	moval	(r0), r11
	movab	-12(fp), ap
	jsb	readInt
	popr	$0x3803
	movl	-4(fp), r2
	addl3	$1, r2, -4(fp)
	jbr	Lbg_7
Lel_7:
Leg_7:
	movl	$0, -24(fp)
	movl	$0f0.5, -20(fp)
	movl	$0f1.5, -16(fp)
	movl	-24(fp), -4(fp)
	movl	-20(fp), -8(fp)
	movl	-16(fp), -12(fp)
Lbg_8:
	movl	-4(fp), r2
	movl	size, r3
	movb	$1, r4
	cmpl	r2, r3
	jlss	Lro_8
	movb	$0, r4
Lro_8:
	jlbc	r4, Lel_8
	movl	-4(fp), r2
	mull2	$8, r2
	movab	array, r3
	addl2	r2, r3
	movab	(r3), r2
	addl2	$4, r2
	movl	-8(fp), r4
	movl	-12(fp), r5
	addf3	r5, r4, (r2)
	movl	-12(fp), -32(fp)
	movl	-8(fp), r4
	movl	-12(fp), r5
	addf3	r5, r4, -28(fp)
	movl	-32(fp), -8(fp)
	movl	-28(fp), -12(fp)
	movl	-4(fp), r4
	addl3	$1, r4, -4(fp)
	jbr	Lbg_8
Lel_8:
Leg_8:
	movl	fp, sp
	rsb

	.globl	writeData
	.text
writeData:
# args:   0 bytes
# result: 0 bytes
# locals: 4 bytes
# temps:  4 bytes
#
#     i:	local    (4 bytes)	at -4(fp)
#
	movl	sp, fp
	subl2	$8, sp
	movl	$10, -8(fp)
	pushr	$0x3800
	movab	-8(fp), r11
	moval	-8(fp), ap
	jsb	writeChar
	popr	$0x3800
	movl	$0, -4(fp)
Lbg_9:
	movl	-4(fp), r0
	movl	size, r1
	movb	$1, r2
	cmpl	r0, r1
	jlss	Lro_9
	movb	$0, r2
Lro_9:
	jlbc	r2, Lel_9
	movl	-4(fp), r0
	mull2	$8, r0
	movab	array, r1
	addl2	r0, r1
	movab	(r1), r0
	addl2	$0, r0
	movl	(r0), r0
	movl	r0, -8(fp)
	pushr	$0x3802
	movab	-8(fp), r11
	moval	-8(fp), ap
	jsb	writeInt
	popr	$0x3802
	movl	$32, -8(fp)
	pushr	$0x3802
	movab	-8(fp), r11
	moval	-8(fp), ap
	jsb	writeChar
	popr	$0x3802
	movl	-4(fp), r0
	mull2	$8, r0
	movab	array, r2
	addl2	r0, r2
	movab	(r2), r0
	addl2	$4, r0
	movl	(r0), r0
	movl	r0, -8(fp)
	pushr	$0x3806
	movab	-8(fp), r11
	movaf	-8(fp), ap
	jsb	writeReal
	popr	$0x3806
	movl	$10, -8(fp)
	pushr	$0x3806
	movab	-8(fp), r11
	moval	-8(fp), ap
	jsb	writeChar
	popr	$0x3806
	movl	-4(fp), r0
	addl3	$1, r0, -4(fp)
	jbr	Lbg_9
Lel_9:
Leg_9:
	movl	fp, sp
	rsb

	.globl	program
	.text
program:
# args:   0 bytes
# result: 0 bytes
# locals: 0 bytes
# temps:  9 bytes
#
#
	movl	sp, fp
	subl2	$9, sp
	pushr	$0x3800
	movab	(fp), r11
	movab	(fp), ap
	jsb	readData
	popr	$0x3800
Lbg_10:
	pushr	$0x3800
	movab	-1(fp), r11
	movab	(fp), ap
	jsb	readBool
	popr	$0x3800
	jlbc	-1(fp), Lel_10
	movl	$0, -9(fp)
	movl	size, r0
	subl3	$1, r0, -5(fp)
	pushr	$0x3800
	movab	(fp), r11
	movab	-9(fp), ap
	jsb	qsort
	popr	$0x3800
	jbr	Leg_10
Lel_10:
Leg_10:
	pushr	$0x3800
	movab	(fp), r11
	movab	(fp), ap
	jsb	writeData
	popr	$0x3800
	movl	fp, sp
	rsb