Răsfoiți Sursa

Merge branch 'master' of github.com:taddeus/peephole

Richard Torenvliet 14 ani în urmă
părinte
comite
405dc7a5bf

+ 0 - 3740
benchmarks/optimized/clinpack.s

@@ -1,3740 +0,0 @@
-	.file	1 "clinpack.c"
-# GNU C 2.7.2.3 [AL 1.1, MM 40, tma 0.1] SimpleScalar running sstrix compiled by GNU C
-# Cc1 defaults:
-# -mgas -mgpOPT
-# Cc1 arguments (-G value = 8, Cpu = default, ISA = 1):
-# -quiet -dumpbase -O0 -o
-gcc2_compiled.:
-__gnu_compiled_c:
-	.lcomm	aa.2,320000
-	.lcomm	a.3,321600
-	.lcomm	b.4,1600
-	.lcomm	x.5,1600
-	.lcomm	ipvt.6,800
-	.lcomm	n.7,4
-	.lcomm	i.8,4
-	.lcomm	ntimes.9,4
-	.lcomm	info.10,4
-	.lcomm	lda.11,4
-	.lcomm	ldaa.12,4
-	.lcomm	kflops.13,4
-	.rdata
-	.align	2
-$LC1:
-	.ascii	"Unrolled \000"
-	.sdata
-	.align	2
-$LC2:
-	.ascii	"Double \000"
-	.rdata
-	.align	2
-$LC3:
-	.ascii	"Precision Linpack\n\n\000"
-	.align	2
-$LC6:
-	.ascii	"   norm. resid      resid           machep\000"
-	.align	2
-$LC7:
-	.ascii	"         x[0]-1        x[n-1]-1\n\000"
-	.align	2
-$LC8:
-	.ascii	"%8.1f      %16.8e%16.8e%16.8e%16.8e\n\000"
-	.align	2
-$LC9:
-	.ascii	" times are reported for matrices of order %5d\n\000"
-	.align	2
-$LC10:
-	.ascii	"      dgefa      dgesl      total       kflops     unit\000"
-	.align	2
-$LC11:
-	.ascii	"      ratio\n\000"
-	.align	2
-$LC14:
-	.ascii	" times for array with leading dimension of%5d\n\000"
-	.align	2
-$LC16:
-	.ascii	" times for array with leading dimension of%4d\n\000"
-	.align	2
-$LC17:
-	.ascii	" Precision %5d Kflops ; %d Reps \n\000"
-	.sdata
-	.align	3
-$LC0:
-	.word	0x3126e979		# 0.056000000000000001166
-	.word	0x3facac08
-	.align	3
-$LC4:
-	.word	0x00000000		# 3
-	.word	0x40080000
-	.align	3
-$LC5:
-	.word	0x00000000		# 1
-	.word	0x3ff00000
-	.align	3
-$LC12:
-	.word	0x00000000		# 1000
-	.word	0x408f4000
-	.align	3
-$LC13:
-	.word	0x00000000		# 2000
-	.word	0x409f4000
-	.align	3
-$LC15:
-	.word	0x00000000		# 0.5
-	.word	0x3fe00000
-	.text
-	.align	2
-	.globl	main
-	.rdata
-	.align	2
-$LC18:
-	.ascii	"%11.2f%11.2f%11.2f%11.0f%11.2f%11.2f\n\000"
-	.text
-	.align	2
-	.globl	print_time
-	.sdata
-	.align	3
-$LC19:
-	.word	0x00000000		# 32768
-	.word	0x40e00000
-	.align	3
-$LC20:
-	.word	0x00000000		# 16384
-	.word	0x40d00000
-	.text
-	.align	2
-	.globl	matgen
-	.sdata
-	.align	3
-$LC21:
-	.word	0x00000000		# -1
-	.word	0xbff00000
-	.text
-	.align	2
-	.globl	dgefa
-	.align	2
-	.globl	dgesl
-	.align	2
-	.globl	daxpy
-	.align	2
-	.globl	ddot
-	.align	2
-	.globl	dscal
-	.align	2
-	.globl	idamax
-	.sdata
-	.align	3
-$LC22:
-	.word	0x55555555		# 1.3333333333333332593
-	.word	0x3ff55555
-	.align	3
-$LC23:
-	.word	0x00000000		# 1
-	.word	0x3ff00000
-	.text
-	.align	2
-	.globl	epslon
-	.align	2
-	.globl	dmxpy
-	.sdata
-	.align	3
-$LC24:
-	.word	0xa0b5ed8d		# 9.9999999999999995475e-07
-	.word	0x3eb0c6f7
-	.text
-	.align	2
-	.globl	dtime
-	.lcomm	st,384
-	.comm	rusage,72
-	.text
-	.loc	1 72
-	.ent	main
-main:
-	.frame	$fp,168,$31		# vars= 96, regs= 2/2, args= 48, extra= 0
-	.mask	0xc0000000,-20
-	.fmask	0x00f00000,-4
-	subu	$sp,$sp,168
-	sw	$31,148($sp)
-	sw	$fp,144($sp)
-	s.d	$f22,160($sp)
-	s.d	$f20,152($sp)
-	move	$fp,$sp
-	jal	__main
-	li	$2,0x000000c9		# 201
-	sw	$2,lda.11
-	li	$2,0x000000c8		# 200
-	sw	$2,ldaa.12
-	l.d	$f0,$LC0
-	s.d	$f0,48($fp)
-	li	$2,0x00000019		# 25
-	sw	$2,n.7
-	la	$4,$LC1
-	jal	printf
-	la	$4,$LC2
-	jal	printf
-	la	$4,$LC3
-	jal	printf
-	lw	$2,n.7
-	lw	$3,n.7
-	mult	$2,$3
-	mflo	$2
-	lw	$3,n.7
-	mult	$2,$3
-	mflo	$2
-	mtc1	$2,$f20
-	#nop
-	cvt.d.w	$f20,$f20
-	add.d	$f0,$f20,$f20
-	l.d	$f2,$LC4
-	div.d	$f0,$f0,$f2
-	lw	$2,n.7
-	lw	$3,n.7
-	mult	$2,$3
-	mflo	$2
-	mtc1	$2,$f22
-	#nop
-	cvt.d.w	$f22,$f22
-	add.d	$f2,$f22,$f22
-	add.d	$f0,$f0,$f2
-	s.d	$f0,56($fp)
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,info.10
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgefa
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,b.4
-	sw	$2,16($sp)
-	sw	$0,20($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgesl
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+48
-	l.d	$f0,st
-	l.d	$f2,st+48
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	sw	$0,i.8
-$L2:
-	lw	$2,i.8
-	lw	$3,n.7
-	slt	$2,$2,$3
-	bne	$2,$0,$L5
-	j	$L3
-$L5:
-	lw	$2,i.8
-	move	$3,$2
-	sll	$2,$3,3
-	la	$3,x.5
-	addu	$2,$2,$3
-	lw	$3,i.8
-	move	$4,$3
-	sll	$3,$4,3
-	la	$4,b.4
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-$L4:
-	lw	$3,i.8
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,i.8
-	j	$L2
-$L3:
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	sw	$0,i.8
-$L6:
-	lw	$2,i.8
-	lw	$3,n.7
-	slt	$2,$2,$3
-	bne	$2,$0,$L9
-	j	$L7
-$L9:
-	lw	$2,i.8
-	move	$3,$2
-	sll	$2,$3,3
-	la	$3,b.4
-	addu	$2,$2,$3
-	lw	$3,i.8
-	move	$4,$3
-	sll	$3,$4,3
-	la	$4,b.4
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	neg.d	$f2,$f0
-	s.d	$f2,0($2)
-$L8:
-	lw	$3,i.8
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,i.8
-	j	$L6
-$L7:
-	la	$2,x.5
-	sw	$2,16($sp)
-	la	$2,a.3
-	sw	$2,20($sp)
-	lw	$4,n.7
-	la	$5,b.4
-	lw	$6,n.7
-	lw	$7,lda.11
-	jal	dmxpy
-	dsz	88($fp)
-	dsz	80($fp)
-	sw	$0,i.8
-$L10:
-	lw	$2,i.8
-	lw	$3,n.7
-	slt	$2,$2,$3
-	bne	$2,$0,$L13
-	j	$L11
-$L13:
-	lw	$2,i.8
-	move	$3,$2
-	sll	$2,$3,3
-	la	$3,b.4
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-	l.d	$f2,88($fp)
-	c.lt.d	$f0,$f2
-	bc1f	$L14
-	l.d	$f0,88($fp)
-	j	$L15
-$L14:
-	lw	$2,i.8
-	move	$3,$2
-	sll	$2,$3,3
-	la	$3,b.4
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-$L15:
-	s.d	$f0,88($fp)
-	lw	$2,i.8
-	move	$3,$2
-	sll	$2,$3,3
-	la	$3,x.5
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-	l.d	$f2,80($fp)
-	c.lt.d	$f0,$f2
-	bc1f	$L16
-	l.d	$f0,80($fp)
-	j	$L17
-$L16:
-	lw	$2,i.8
-	move	$3,$2
-	sll	$2,$3,3
-	la	$3,x.5
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-$L17:
-	s.d	$f0,80($fp)
-$L12:
-	lw	$3,i.8
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,i.8
-	j	$L10
-$L11:
-	l.d	$f12,$LC5
-	jal	epslon
-	s.d	$f0,104($fp)
-	l.s	$f0,n.7
-	#nop
-	cvt.d.w	$f0,$f0
-	l.d	$f2,72($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,80($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,104($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,88($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,96($fp)
-	la	$4,$LC6
-	jal	printf
-	la	$4,$LC7
-	jal	printf
-	l.d	$f0,88($fp)
-	s.d	$f0,16($sp)
-	l.d	$f0,104($fp)
-	s.d	$f0,24($sp)
-	l.d	$f0,x.5
-	l.d	$f2,$LC5
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,32($sp)
-	lw	$2,n.7
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	l.d	$f2,$LC5
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,40($sp)
-	la	$4,$LC8
-	dlw	$6,96($fp)
-	jal	printf
-	la	$4,$LC9
-	lw	$5,n.7
-	jal	printf
-	la	$4,$LC10
-	jal	printf
-	la	$4,$LC11
-	jal	printf
-	l.d	$f0,64($fp)
-	s.d	$f0,st+96
-	l.d	$f0,64($fp)
-	l.d	$f2,$LC12
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,st+144
-	l.d	$f0,$LC13
-	l.d	$f2,st+144
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+192
-	l.d	$f0,64($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+240
-	la	$4,$LC14
-	lw	$5,lda.11
-	jal	printf
-	move	$4,$0
-	jal	print_time
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,info.10
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgefa
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+8
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,b.4
-	sw	$2,16($sp)
-	sw	$0,20($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgesl
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+56
-	l.d	$f0,st+8
-	l.d	$f2,st+56
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	l.d	$f0,64($fp)
-	s.d	$f0,st+104
-	l.d	$f0,64($fp)
-	l.d	$f2,$LC12
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,st+152
-	l.d	$f0,$LC13
-	l.d	$f2,st+152
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+200
-	l.d	$f0,64($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+248
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,info.10
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgefa
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+16
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,b.4
-	sw	$2,16($sp)
-	sw	$0,20($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgesl
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+64
-	l.d	$f0,st+16
-	l.d	$f2,st+64
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	l.d	$f0,64($fp)
-	s.d	$f0,st+112
-	l.d	$f0,64($fp)
-	l.d	$f2,$LC12
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,st+160
-	l.d	$f0,$LC13
-	l.d	$f2,st+160
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+208
-	l.d	$f0,64($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+256
-	li	$2,0x00000001		# 1
-	sw	$2,ntimes.9
-	dsz	136($fp)
-	jal	dtime
-	s.d	$f0,120($fp)
-	sw	$0,i.8
-$L18:
-	lw	$2,i.8
-	lw	$3,ntimes.9
-	slt	$2,$2,$3
-	bne	$2,$0,$L21
-	j	$L19
-$L21:
-	jal	dtime
-	s.d	$f0,128($fp)
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	jal	dtime
-	l.d	$f2,136($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,128($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,136($fp)
-	la	$2,info.10
-	sw	$2,16($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgefa
-$L20:
-	lw	$3,i.8
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,i.8
-	j	$L18
-$L19:
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	l.d	$f2,136($fp)
-	sub.d	$f0,$f0,$f2
-	l.s	$f2,ntimes.9
-	#nop
-	cvt.d.w	$f2,$f2
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+24
-	jal	dtime
-	s.d	$f0,120($fp)
-	sw	$0,i.8
-$L22:
-	lw	$2,i.8
-	lw	$3,ntimes.9
-	slt	$2,$2,$3
-	bne	$2,$0,$L25
-	j	$L23
-$L25:
-	la	$2,b.4
-	sw	$2,16($sp)
-	sw	$0,20($sp)
-	la	$4,a.3
-	lw	$5,lda.11
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgesl
-$L24:
-	lw	$3,i.8
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,i.8
-	j	$L22
-$L23:
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	l.s	$f2,ntimes.9
-	#nop
-	cvt.d.w	$f2,$f2
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+72
-	l.d	$f0,st+24
-	l.d	$f2,st+72
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	l.d	$f0,64($fp)
-	s.d	$f0,st+120
-	l.d	$f0,64($fp)
-	l.d	$f2,$LC12
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,st+168
-	l.d	$f0,$LC13
-	l.d	$f2,st+168
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+216
-	l.d	$f0,64($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+264
-	li	$4,0x00000001		# 1
-	jal	print_time
-	li	$4,0x00000002		# 2
-	jal	print_time
-	li	$4,0x00000003		# 3
-	jal	print_time
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,info.10
-	sw	$2,16($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgefa
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+32
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,b.4
-	sw	$2,16($sp)
-	sw	$0,20($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgesl
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+80
-	l.d	$f0,st+32
-	l.d	$f2,st+80
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	l.d	$f0,64($fp)
-	s.d	$f0,st+128
-	l.d	$f0,64($fp)
-	l.d	$f2,$LC12
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,st+176
-	l.d	$f0,$LC13
-	l.d	$f2,st+176
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+224
-	l.d	$f0,64($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+272
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,info.10
-	sw	$2,16($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgefa
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+40
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,b.4
-	sw	$2,16($sp)
-	sw	$0,20($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgesl
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+88
-	l.d	$f0,st+40
-	l.d	$f2,st+88
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	l.d	$f0,64($fp)
-	s.d	$f0,st+136
-	l.d	$f0,64($fp)
-	l.d	$f2,$LC12
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,st+184
-	l.d	$f0,$LC13
-	l.d	$f2,st+184
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+232
-	l.d	$f0,64($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+280
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,info.10
-	sw	$2,16($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgefa
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+48
-	jal	dtime
-	s.d	$f0,120($fp)
-	la	$2,b.4
-	sw	$2,16($sp)
-	sw	$0,20($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgesl
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,st+96
-	l.d	$f0,st+48
-	l.d	$f2,st+96
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	l.d	$f0,64($fp)
-	s.d	$f0,st+144
-	l.d	$f0,64($fp)
-	l.d	$f2,$LC12
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,st+192
-	l.d	$f0,$LC13
-	l.d	$f2,st+192
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+240
-	l.d	$f0,64($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+288
-	li	$2,0x00000001		# 1
-	sw	$2,ntimes.9
-	dsz	136($fp)
-	jal	dtime
-	s.d	$f0,120($fp)
-	sw	$0,i.8
-$L26:
-	lw	$2,i.8
-	lw	$3,ntimes.9
-	slt	$2,$2,$3
-	bne	$2,$0,$L29
-	j	$L27
-$L29:
-	jal	dtime
-	s.d	$f0,128($fp)
-	addu	$2,$fp,72
-	sw	$2,16($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,b.4
-	jal	matgen
-	jal	dtime
-	l.d	$f2,136($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,128($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,136($fp)
-	la	$2,info.10
-	sw	$2,16($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgefa
-$L28:
-	lw	$3,i.8
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,i.8
-	j	$L26
-$L27:
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	l.d	$f2,136($fp)
-	sub.d	$f0,$f0,$f2
-	l.s	$f2,ntimes.9
-	#nop
-	cvt.d.w	$f2,$f2
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+56
-	jal	dtime
-	s.d	$f0,120($fp)
-	sw	$0,i.8
-$L30:
-	lw	$2,i.8
-	lw	$3,ntimes.9
-	slt	$2,$2,$3
-	bne	$2,$0,$L33
-	j	$L31
-$L33:
-	la	$2,b.4
-	sw	$2,16($sp)
-	sw	$0,20($sp)
-	la	$4,aa.2
-	lw	$5,ldaa.12
-	lw	$6,n.7
-	la	$7,ipvt.6
-	jal	dgesl
-$L32:
-	lw	$3,i.8
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,i.8
-	j	$L30
-$L31:
-	jal	dtime
-	l.d	$f2,120($fp)
-	sub.d	$f0,$f0,$f2
-	l.s	$f2,ntimes.9
-	#nop
-	cvt.d.w	$f2,$f2
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+104
-	l.d	$f0,st+56
-	l.d	$f2,st+104
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	l.d	$f0,64($fp)
-	s.d	$f0,st+152
-	l.d	$f0,64($fp)
-	l.d	$f2,$LC12
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,st+200
-	l.d	$f0,$LC13
-	l.d	$f2,st+200
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+248
-	l.d	$f0,64($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,st+296
-	l.d	$f0,st+168
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.lt.d	$f0,$f2
-	bc1f	$L34
-	dsz	st+168
-$L34:
-	l.d	$f0,st+200
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.lt.d	$f0,$f2
-	bc1f	$L35
-	dsz	st+200
-$L35:
-	l.d	$f0,st+168
-	s.d	$f0,112($fp)
-	l.d	$f0,st+200
-	l.d	$f2,st+168
-	c.lt.d	$f0,$f2
-	bc1f	$L36
-	l.d	$f0,st+200
-	s.d	$f0,112($fp)
-$L36:
-	l.d	$f0,112($fp)
-	l.d	$f2,$LC15
-	add.d	$f0,$f0,$f2
-	trunc.w.d $f4,$f0,$8
-	s.s	$f4,kflops.13
-	la	$4,$LC16
-	lw	$5,ldaa.12
-	jal	printf
-	li	$4,0x00000004		# 4
-	jal	print_time
-	li	$4,0x00000005		# 5
-	jal	print_time
-	li	$4,0x00000006		# 6
-	jal	print_time
-	li	$4,0x00000007		# 7
-	jal	print_time
-	la	$4,$LC1
-	jal	printf
-	la	$4,$LC2
-	jal	printf
-	la	$4,$LC17
-	lw	$5,kflops.13
-	li	$6,0x00000001		# 1
-	jal	printf
-$L1:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,148($sp)
-	lw	$fp,144($sp)
-	l.d	$f22,160($sp)
-	l.d	$f20,152($sp)
-	addu	$sp,$sp,168
-	j	$31
-	.end	main
-	.loc	1 300
-	.ent	print_time
-print_time:
-	.frame	$fp,64,$31		# vars= 0, regs= 2/0, args= 56, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,64
-	sw	$31,60($sp)
-	sw	$fp,56($sp)
-	move	$fp,$sp
-	sw	$4,64($fp)
-	lw	$2,64($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	la	$3,st
-	addu	$2,$2,$3
-	lw	$3,64($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	la	$4,st+48
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,16($sp)
-	lw	$3,64($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	la	$4,st+96
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,24($sp)
-	lw	$3,64($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	la	$4,st+144
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,32($sp)
-	lw	$3,64($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	la	$4,st+192
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,40($sp)
-	lw	$3,64($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	la	$4,st+240
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,48($sp)
-	la	$4,$LC18
-	dlw	$6,0($2)
-	jal	printf
-$L37:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,60($sp)
-	lw	$fp,56($sp)
-	addu	$sp,$sp,64
-	j	$31
-	.end	print_time
-	.loc	1 309
-	.ent	matgen
-matgen:
-	.frame	$fp,24,$31		# vars= 16, regs= 1/0, args= 0, extra= 0
-	.mask	0x40000000,-8
-	.fmask	0x00000000,0
-	subu	$sp,$sp,24
-	sw	$fp,16($sp)
-	move	$fp,$sp
-	sw	$4,24($fp)
-	sw	$5,28($fp)
-	sw	$6,32($fp)
-	sw	$7,36($fp)
-	li	$2,0x0000052d		# 1325
-	sw	$2,0($fp)
-	lw	$2,40($fp)
-	dsz	0($2)
-	sw	$0,8($fp)
-$L39:
-	lw	$2,8($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L42
-	j	$L40
-$L42:
-	sw	$0,4($fp)
-$L43:
-	lw	$2,4($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L46
-	j	$L44
-$L46:
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$2,$4,1
-	addu	$2,$2,$3
-	sll	$4,$2,6
-	addu	$2,$2,$4
-	sll	$4,$2,2
-	addu	$4,$4,$3
-	sll	$2,$4,2
-	addu	$2,$2,$3
-	move	$3,$2
-	bgez	$3,$L47
-	li	$4,0x0000ffff		# 65535
-	addu	$3,$3,$4
-$L47:
-	sra	$3,$3,16
-	move	$4,$3
-	sll	$3,$4,16
-	subu	$2,$2,$3
-	sw	$2,0($fp)
-	lw	$2,28($fp)
-	lw	$3,8($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,4($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,24($fp)
-	addu	$2,$2,$3
-	l.s	$f0,0($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	l.d	$f2,$LC19
-	sub.d	$f0,$f0,$f2
-	l.d	$f2,$LC20
-	div.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,40($fp)
-	lw	$3,28($fp)
-	lw	$4,8($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,4($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,24($fp)
-	addu	$3,$3,$4
-	lw	$4,40($fp)
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	c.lt.d	$f2,$f0
-	bc1f	$L48
-	lw	$3,28($fp)
-	lw	$4,8($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,4($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,24($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	j	$L49
-$L48:
-	lw	$3,40($fp)
-	l.d	$f0,0($3)
-$L49:
-	s.d	$f0,0($2)
-$L45:
-	lw	$3,4($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,4($fp)
-	j	$L43
-$L44:
-$L41:
-	lw	$3,8($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,8($fp)
-	j	$L39
-$L40:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,4($fp)
-$L50:
-	lw	$2,4($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L53
-	j	$L51
-$L53:
-	lw	$2,4($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,36($fp)
-	addu	$2,$2,$3
-	dsz	0($2)
-$L52:
-	lw	$3,4($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,4($fp)
-	j	$L50
-$L51:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,8($fp)
-$L54:
-	lw	$2,8($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L57
-	j	$L55
-$L57:
-	sw	$0,4($fp)
-$L58:
-	lw	$2,4($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L61
-	j	$L59
-$L61:
-	lw	$2,4($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,36($fp)
-	addu	$2,$2,$3
-	lw	$3,4($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,36($fp)
-	addu	$3,$3,$4
-	lw	$4,28($fp)
-	lw	$5,8($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,24($fp)
-	addu	$4,$4,$5
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L60:
-	lw	$3,4($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,4($fp)
-	j	$L58
-$L59:
-$L56:
-	lw	$3,8($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,8($fp)
-	j	$L54
-$L55:
-$L38:
-	move	$sp,$fp			# sp not trusted here
-	lw	$fp,16($sp)
-	addu	$sp,$sp,24
-	j	$31
-	.end	matgen
-	.loc	1 339
-	.ent	dgefa
-dgefa:
-	.frame	$fp,72,$31		# vars= 32, regs= 2/0, args= 32, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,72
-	sw	$31,68($sp)
-	sw	$fp,64($sp)
-	move	$fp,$sp
-	sw	$4,72($fp)
-	sw	$5,76($fp)
-	sw	$6,80($fp)
-	sw	$7,84($fp)
-	lw	$2,88($fp)
-	sw	$0,0($2)
-	lw	$2,80($fp)
-	subu	$3,$2,1
-	sw	$3,56($fp)
-	lw	$2,56($fp)
-	bltz	$2,$L63
-	sw	$0,44($fp)
-$L64:
-	lw	$2,44($fp)
-	lw	$3,56($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L67
-	j	$L65
-$L67:
-	lw	$2,44($fp)
-	addu	$3,$2,1
-	sw	$3,48($fp)
-	lw	$2,80($fp)
-	lw	$3,44($fp)
-	subu	$2,$2,$3
-	lw	$3,76($fp)
-	lw	$4,44($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,44($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,72($fp)
-	addu	$3,$3,$4
-	move	$4,$2
-	move	$5,$3
-	li	$6,0x00000001		# 1
-	jal	idamax
-	lw	$3,44($fp)
-	addu	$2,$2,$3
-	sw	$2,52($fp)
-	lw	$2,44($fp)
-	move	$3,$2
-	sll	$2,$3,2
-	lw	$3,84($fp)
-	addu	$2,$2,$3
-	lw	$3,52($fp)
-	sw	$3,0($2)
-	lw	$2,76($fp)
-	lw	$3,44($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,52($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.eq.d	$f0,$f2
-	bc1t	$L68
-	lw	$2,52($fp)
-	lw	$3,44($fp)
-	beq	$2,$3,$L69
-	lw	$2,76($fp)
-	lw	$3,44($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,52($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	s.d	$f0,32($fp)
-	lw	$2,76($fp)
-	lw	$3,44($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,52($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	lw	$3,76($fp)
-	lw	$4,44($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,44($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,72($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	lw	$2,76($fp)
-	lw	$3,44($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,44($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	l.d	$f0,32($fp)
-	s.d	$f0,0($2)
-$L69:
-	lw	$2,76($fp)
-	lw	$3,44($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,44($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	l.d	$f0,$LC21
-	l.d	$f2,0($2)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,32($fp)
-	lw	$3,80($fp)
-	subu	$2,$3,1
-	lw	$3,44($fp)
-	subu	$2,$2,$3
-	lw	$3,76($fp)
-	lw	$4,44($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,44($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$3,8
-	lw	$3,72($fp)
-	addu	$4,$3,$4
-	sw	$4,16($sp)
-	li	$3,0x00000001		# 1
-	sw	$3,20($sp)
-	move	$4,$2
-	dlw	$6,32($fp)
-	jal	dscal
-	lw	$2,48($fp)
-	sw	$2,40($fp)
-$L70:
-	lw	$2,40($fp)
-	lw	$3,80($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L73
-	j	$L71
-$L73:
-	lw	$2,76($fp)
-	lw	$3,40($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,52($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	s.d	$f0,32($fp)
-	lw	$2,52($fp)
-	lw	$3,44($fp)
-	beq	$2,$3,$L74
-	lw	$2,76($fp)
-	lw	$3,40($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,52($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	lw	$3,76($fp)
-	lw	$4,40($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,44($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,72($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	lw	$2,76($fp)
-	lw	$3,40($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,44($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	l.d	$f0,32($fp)
-	s.d	$f0,0($2)
-$L74:
-	lw	$3,80($fp)
-	subu	$2,$3,1
-	lw	$3,44($fp)
-	subu	$2,$2,$3
-	lw	$3,76($fp)
-	lw	$4,44($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,44($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$3,8
-	lw	$3,72($fp)
-	addu	$4,$3,$4
-	sw	$4,16($sp)
-	li	$3,0x00000001		# 1
-	sw	$3,20($sp)
-	lw	$3,76($fp)
-	lw	$4,40($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,44($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$3,8
-	lw	$3,72($fp)
-	addu	$4,$3,$4
-	sw	$4,24($sp)
-	li	$3,0x00000001		# 1
-	sw	$3,28($sp)
-	move	$4,$2
-	dlw	$6,32($fp)
-	jal	daxpy
-$L72:
-	lw	$3,40($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,40($fp)
-	j	$L70
-$L71:
-	j	$L75
-$L68:
-	lw	$2,88($fp)
-	lw	$3,44($fp)
-	sw	$3,0($2)
-$L75:
-$L66:
-	lw	$3,44($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,44($fp)
-	j	$L64
-$L65:
-$L63:
-	lw	$2,80($fp)
-	move	$3,$2
-	sll	$2,$3,2
-	lw	$4,84($fp)
-	addu	$3,$2,$4
-	subu	$2,$3,4
-	lw	$3,80($fp)
-	subu	$4,$3,1
-	sw	$4,0($2)
-	lw	$3,80($fp)
-	subu	$2,$3,1
-	lw	$3,76($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,72($fp)
-	addu	$2,$2,$3
-	subu	$3,$2,8
-	l.d	$f0,0($3)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.eq.d	$f0,$f2
-	bc1f	$L76
-	lw	$2,88($fp)
-	lw	$3,80($fp)
-	subu	$4,$3,1
-	sw	$4,0($2)
-$L76:
-$L62:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,68($sp)
-	lw	$fp,64($sp)
-	addu	$sp,$sp,72
-	j	$31
-	.end	dgefa
-	.loc	1 455
-	.ent	dgesl
-dgesl:
-	.frame	$fp,64,$31		# vars= 24, regs= 2/0, args= 32, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,64
-	sw	$31,60($sp)
-	sw	$fp,56($sp)
-	move	$fp,$sp
-	sw	$4,64($fp)
-	sw	$5,68($fp)
-	sw	$6,72($fp)
-	sw	$7,76($fp)
-	lw	$2,72($fp)
-	subu	$3,$2,1
-	sw	$3,52($fp)
-	lw	$2,84($fp)
-	bne	$2,$0,$L78
-	lw	$2,52($fp)
-	blez	$2,$L79
-	sw	$0,40($fp)
-$L80:
-	lw	$2,40($fp)
-	lw	$3,52($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L83
-	j	$L81
-$L83:
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,2
-	lw	$3,76($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,48($fp)
-	lw	$2,48($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	s.d	$f0,32($fp)
-	lw	$2,48($fp)
-	lw	$3,40($fp)
-	beq	$2,$3,$L84
-	lw	$2,48($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	lw	$3,40($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,80($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	l.d	$f0,32($fp)
-	s.d	$f0,0($2)
-$L84:
-	lw	$3,72($fp)
-	subu	$2,$3,1
-	lw	$3,40($fp)
-	subu	$2,$2,$3
-	lw	$3,68($fp)
-	lw	$4,40($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$3,8
-	lw	$3,64($fp)
-	addu	$4,$3,$4
-	sw	$4,16($sp)
-	li	$3,0x00000001		# 1
-	sw	$3,20($sp)
-	lw	$3,40($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$3,8
-	lw	$3,80($fp)
-	addu	$4,$3,$4
-	sw	$4,24($sp)
-	li	$3,0x00000001		# 1
-	sw	$3,28($sp)
-	move	$4,$2
-	dlw	$6,32($fp)
-	jal	daxpy
-$L82:
-	lw	$3,40($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,40($fp)
-	j	$L80
-$L81:
-$L79:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,44($fp)
-$L85:
-	lw	$2,44($fp)
-	lw	$3,72($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L88
-	j	$L86
-$L88:
-	lw	$3,72($fp)
-	subu	$2,$3,1
-	lw	$3,44($fp)
-	subu	$2,$2,$3
-	sw	$2,40($fp)
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	lw	$3,40($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,80($fp)
-	addu	$3,$3,$4
-	lw	$4,68($fp)
-	lw	$5,40($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,40($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,64($fp)
-	addu	$4,$4,$5
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	neg.d	$f2,$f0
-	s.d	$f2,32($fp)
-	lw	$2,68($fp)
-	lw	$3,40($fp)
-	mult	$2,$3
-	mflo	$2
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,64($fp)
-	addu	$2,$3,$2
-	sw	$2,16($sp)
-	li	$2,0x00000001		# 1
-	sw	$2,20($sp)
-	lw	$2,80($fp)
-	sw	$2,24($sp)
-	li	$2,0x00000001		# 1
-	sw	$2,28($sp)
-	lw	$4,40($fp)
-	dlw	$6,32($fp)
-	jal	daxpy
-$L87:
-	lw	$3,44($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,44($fp)
-	j	$L85
-$L86:
-	j	$L89
-$L78:
-	sw	$0,40($fp)
-$L90:
-	lw	$2,40($fp)
-	lw	$3,72($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L93
-	j	$L91
-$L93:
-	lw	$2,68($fp)
-	lw	$3,40($fp)
-	mult	$2,$3
-	mflo	$2
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,64($fp)
-	addu	$2,$2,$3
-	li	$3,0x00000001		# 1
-	sw	$3,16($sp)
-	lw	$4,40($fp)
-	move	$5,$2
-	li	$6,0x00000001		# 1
-	lw	$7,80($fp)
-	jal	ddot
-	s.d	$f0,32($fp)
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	lw	$3,40($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,80($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	l.d	$f2,32($fp)
-	sub.d	$f0,$f0,$f2
-	lw	$3,68($fp)
-	lw	$4,40($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,64($fp)
-	addu	$3,$3,$4
-	l.d	$f2,0($3)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L92:
-	lw	$3,40($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,40($fp)
-	j	$L90
-$L91:
-	lw	$2,52($fp)
-	blez	$2,$L94
-	li	$2,0x00000001		# 1
-	sw	$2,44($fp)
-$L95:
-	lw	$2,44($fp)
-	lw	$3,52($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L98
-	j	$L96
-$L98:
-	lw	$3,72($fp)
-	subu	$2,$3,1
-	lw	$3,44($fp)
-	subu	$2,$2,$3
-	sw	$2,40($fp)
-	lw	$3,72($fp)
-	subu	$2,$3,1
-	lw	$3,40($fp)
-	subu	$2,$2,$3
-	lw	$3,68($fp)
-	lw	$4,40($fp)
-	mult	$3,$4
-	mflo	$3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$3,8
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	lw	$4,40($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$4,8
-	lw	$4,80($fp)
-	addu	$7,$5,$4
-	li	$4,0x00000001		# 1
-	sw	$4,16($sp)
-	move	$4,$2
-	move	$5,$3
-	li	$6,0x00000001		# 1
-	jal	ddot
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	lw	$3,40($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,80($fp)
-	addu	$3,$3,$4
-	l.d	$f2,0($3)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,2
-	lw	$3,76($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,48($fp)
-	lw	$2,48($fp)
-	lw	$3,40($fp)
-	beq	$2,$3,$L99
-	lw	$2,48($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	s.d	$f0,32($fp)
-	lw	$2,48($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	lw	$3,40($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,80($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,80($fp)
-	addu	$2,$2,$3
-	l.d	$f0,32($fp)
-	s.d	$f0,0($2)
-$L99:
-$L97:
-	lw	$3,44($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,44($fp)
-	j	$L95
-$L96:
-$L94:
-$L89:
-$L77:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,60($sp)
-	lw	$fp,56($sp)
-	addu	$sp,$sp,64
-	j	$31
-	.end	dgesl
-	.loc	1 585
-	.ent	daxpy
-daxpy:
-	.frame	$fp,32,$31		# vars= 24, regs= 1/0, args= 0, extra= 0
-	.mask	0x40000000,-8
-	.fmask	0x00000000,0
-	subu	$sp,$sp,32
-	sw	$fp,24($sp)
-	move	$fp,$sp
-	sw	$4,32($fp)
-	dsw	$6,40($fp)
-	lw	$2,32($fp)
-	bgtz	$2,$L101
-	j	$L100
-$L101:
-	l.d	$f0,40($fp)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.eq.d	$f0,$f2
-	bc1f	$L102
-	j	$L100
-$L102:
-	lw	$2,52($fp)
-	li	$3,0x00000001		# 1
-	bne	$2,$3,$L104
-	lw	$2,60($fp)
-	li	$3,0x00000001		# 1
-	bne	$2,$3,$L104
-	j	$L103
-$L104:
-	li	$2,0x00000001		# 1
-	sw	$2,4($fp)
-	li	$2,0x00000001		# 1
-	sw	$2,8($fp)
-	lw	$2,52($fp)
-	bgez	$2,$L105
-	lw	$3,32($fp)
-	subu	$2,$0,$3
-	addu	$3,$2,1
-	lw	$4,52($fp)
-	mult	$3,$4
-	mflo	$2
-	addu	$3,$2,1
-	sw	$3,4($fp)
-$L105:
-	lw	$2,60($fp)
-	bgez	$2,$L106
-	lw	$3,32($fp)
-	subu	$2,$0,$3
-	addu	$3,$2,1
-	lw	$4,60($fp)
-	mult	$3,$4
-	mflo	$2
-	addu	$3,$2,1
-	sw	$3,8($fp)
-$L106:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,0($fp)
-$L107:
-	lw	$2,0($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L110
-	j	$L108
-$L110:
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,56($fp)
-	addu	$2,$2,$3
-	lw	$3,8($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,56($fp)
-	addu	$3,$3,$4
-	lw	$4,4($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,48($fp)
-	addu	$4,$4,$5
-	l.d	$f0,40($fp)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-	lw	$2,4($fp)
-	lw	$3,52($fp)
-	addu	$2,$2,$3
-	sw	$2,4($fp)
-	lw	$2,8($fp)
-	lw	$3,60($fp)
-	addu	$2,$2,$3
-	sw	$2,8($fp)
-$L109:
-	lw	$3,0($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,0($fp)
-	j	$L107
-$L108:
-	j	$L100
-$L103:
-	lw	$2,32($fp)
-	move	$3,$2
-	bgez	$3,$L111
-	addu	$3,$3,3
-$L111:
-	sra	$3,$3,2
-	move	$4,$3
-	sll	$3,$4,2
-	subu	$2,$2,$3
-	sw	$2,12($fp)
-	lw	$2,12($fp)
-	beq	$2,$0,$L112
-	sw	$0,0($fp)
-$L113:
-	lw	$2,0($fp)
-	lw	$3,12($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L116
-	j	$L114
-$L116:
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,56($fp)
-	addu	$2,$2,$3
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,56($fp)
-	addu	$3,$3,$4
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,48($fp)
-	addu	$4,$4,$5
-	l.d	$f0,40($fp)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-$L115:
-	lw	$3,0($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,0($fp)
-	j	$L113
-$L114:
-	lw	$2,32($fp)
-	slt	$3,$2,4
-	bne	$3,$0,$L100
-$L117:
-$L112:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,12($fp)
-	sw	$2,0($fp)
-$L118:
-	lw	$2,0($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L121
-	j	$L119
-$L121:
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,56($fp)
-	addu	$2,$2,$3
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,56($fp)
-	addu	$3,$3,$4
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,48($fp)
-	addu	$4,$4,$5
-	l.d	$f0,40($fp)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,56($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,8
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,56($fp)
-	addu	$4,$3,$5
-	addu	$3,$4,8
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,48($fp)
-	addu	$4,$4,$5
-	addu	$5,$4,8
-	l.d	$f0,40($fp)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,56($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,16
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,56($fp)
-	addu	$4,$3,$5
-	addu	$3,$4,16
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,48($fp)
-	addu	$4,$4,$5
-	addu	$5,$4,16
-	l.d	$f0,40($fp)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,56($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,24
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,56($fp)
-	addu	$4,$3,$5
-	addu	$3,$4,24
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,48($fp)
-	addu	$4,$4,$5
-	addu	$5,$4,24
-	l.d	$f0,40($fp)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-$L120:
-	lw	$2,0($fp)
-	addu	$3,$2,4
-	sw	$3,0($fp)
-	j	$L118
-$L119:
-$L100:
-	move	$sp,$fp			# sp not trusted here
-	lw	$fp,24($sp)
-	addu	$sp,$sp,32
-	j	$31
-	.end	daxpy
-	.loc	1 641
-	.ent	ddot
-ddot:
-	.frame	$fp,40,$31		# vars= 32, regs= 1/0, args= 0, extra= 0
-	.mask	0x40000000,-8
-	.fmask	0x00000000,0
-	subu	$sp,$sp,40
-	sw	$fp,32($sp)
-	move	$fp,$sp
-	sw	$4,40($fp)
-	sw	$5,44($fp)
-	sw	$6,48($fp)
-	sw	$7,52($fp)
-	dsz	0($fp)
-	lw	$2,40($fp)
-	bgtz	$2,$L123
-	mtc1	$0,$f0
-	mtc1	$0,$f1
-	j	$L122
-$L123:
-	lw	$2,48($fp)
-	li	$3,0x00000001		# 1
-	bne	$2,$3,$L125
-	lw	$2,56($fp)
-	li	$3,0x00000001		# 1
-	bne	$2,$3,$L125
-	j	$L124
-$L125:
-	sw	$0,12($fp)
-	sw	$0,16($fp)
-	lw	$2,48($fp)
-	bgez	$2,$L126
-	lw	$3,40($fp)
-	subu	$2,$0,$3
-	addu	$3,$2,1
-	lw	$2,48($fp)
-	mult	$3,$2
-	mflo	$3
-	sw	$3,12($fp)
-$L126:
-	lw	$2,56($fp)
-	bgez	$2,$L127
-	lw	$3,40($fp)
-	subu	$2,$0,$3
-	addu	$3,$2,1
-	lw	$2,56($fp)
-	mult	$3,$2
-	mflo	$3
-	sw	$3,16($fp)
-$L127:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,8($fp)
-$L128:
-	lw	$2,8($fp)
-	lw	$3,40($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L131
-	j	$L129
-$L131:
-	lw	$2,12($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,44($fp)
-	addu	$2,$2,$3
-	lw	$3,16($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,52($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($fp)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($fp)
-	lw	$2,12($fp)
-	lw	$3,48($fp)
-	addu	$2,$2,$3
-	sw	$2,12($fp)
-	lw	$2,16($fp)
-	lw	$3,56($fp)
-	addu	$2,$2,$3
-	sw	$2,16($fp)
-$L130:
-	lw	$3,8($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,8($fp)
-	j	$L128
-$L129:
-	l.d	$f0,0($fp)
-	j	$L122
-$L124:
-	lw	$2,40($fp)
-	li	$6,0x66666667		# 1717986919
-	mult	$2,$6
-	mfhi	$5
-	mflo	$4
-	srl	$6,$5,0
-	move	$7,$0
-	sra	$3,$6,1
-	sra	$4,$2,31
-	subu	$3,$3,$4
-	move	$5,$3
-	sll	$4,$5,2
-	addu	$4,$4,$3
-	subu	$2,$2,$4
-	sw	$2,20($fp)
-	lw	$2,20($fp)
-	beq	$2,$0,$L132
-	sw	$0,8($fp)
-$L133:
-	lw	$2,8($fp)
-	lw	$3,20($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L136
-	j	$L134
-$L136:
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,44($fp)
-	addu	$2,$2,$3
-	lw	$3,8($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,52($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($fp)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($fp)
-$L135:
-	lw	$3,8($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,8($fp)
-	j	$L133
-$L134:
-	lw	$2,40($fp)
-	slt	$3,$2,5
-	beq	$3,$0,$L137
-	l.d	$f0,0($fp)
-	j	$L122
-$L137:
-$L132:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,20($fp)
-	sw	$2,8($fp)
-$L138:
-	lw	$2,8($fp)
-	lw	$3,40($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L141
-	j	$L139
-$L141:
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,44($fp)
-	addu	$2,$2,$3
-	lw	$3,8($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,52($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($fp)
-	add.d	$f0,$f0,$f2
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,44($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,8
-	lw	$3,8($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,52($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,8
-	l.d	$f2,0($2)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,44($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,16
-	lw	$3,8($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,52($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,16
-	l.d	$f2,0($2)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,44($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,24
-	lw	$3,8($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,52($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,24
-	l.d	$f2,0($2)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,44($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,32
-	lw	$3,8($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,52($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,32
-	l.d	$f2,0($2)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	s.d	$f0,0($fp)
-$L140:
-	lw	$2,8($fp)
-	addu	$3,$2,5
-	sw	$3,8($fp)
-	j	$L138
-$L139:
-	l.d	$f0,0($fp)
-	j	$L122
-$L122:
-	move	$sp,$fp			# sp not trusted here
-	lw	$fp,32($sp)
-	addu	$sp,$sp,40
-	j	$31
-	.end	ddot
-	.loc	1 699
-	.ent	dscal
-dscal:
-	.frame	$fp,24,$31		# vars= 16, regs= 1/0, args= 0, extra= 0
-	.mask	0x40000000,-8
-	.fmask	0x00000000,0
-	subu	$sp,$sp,24
-	sw	$fp,16($sp)
-	move	$fp,$sp
-	sw	$4,24($fp)
-	dsw	$6,32($fp)
-	lw	$2,24($fp)
-	bgtz	$2,$L143
-	j	$L142
-$L143:
-	lw	$2,44($fp)
-	li	$3,0x00000001		# 1
-	beq	$2,$3,$L144
-	lw	$2,24($fp)
-	lw	$3,44($fp)
-	mult	$2,$3
-	mflo	$2
-	sw	$2,12($fp)
-	sw	$0,0($fp)
-$L145:
-	lw	$2,0($fp)
-	lw	$3,12($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L148
-	j	$L146
-$L148:
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,40($fp)
-	addu	$2,$2,$3
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	l.d	$f0,32($fp)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L147:
-	lw	$2,0($fp)
-	lw	$3,44($fp)
-	addu	$2,$2,$3
-	sw	$2,0($fp)
-	j	$L145
-$L146:
-	j	$L142
-$L144:
-	lw	$2,24($fp)
-	li	$6,0x66666667		# 1717986919
-	mult	$2,$6
-	mfhi	$5
-	mflo	$4
-	srl	$6,$5,0
-	move	$7,$0
-	sra	$3,$6,1
-	sra	$4,$2,31
-	subu	$3,$3,$4
-	move	$5,$3
-	sll	$4,$5,2
-	addu	$4,$4,$3
-	subu	$2,$2,$4
-	sw	$2,4($fp)
-	lw	$2,4($fp)
-	beq	$2,$0,$L149
-	sw	$0,0($fp)
-$L150:
-	lw	$2,0($fp)
-	lw	$3,4($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L153
-	j	$L151
-$L153:
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,40($fp)
-	addu	$2,$2,$3
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	l.d	$f0,32($fp)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L152:
-	lw	$3,0($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,0($fp)
-	j	$L150
-$L151:
-	lw	$2,24($fp)
-	slt	$3,$2,5
-	bne	$3,$0,$L142
-$L154:
-$L149:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,4($fp)
-	sw	$2,0($fp)
-$L155:
-	lw	$2,0($fp)
-	lw	$3,24($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L158
-	j	$L156
-$L158:
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,40($fp)
-	addu	$2,$2,$3
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	l.d	$f0,32($fp)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,40($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,8
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,8
-	l.d	$f0,32($fp)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,40($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,16
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,16
-	l.d	$f0,32($fp)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,40($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,24
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,24
-	l.d	$f0,32($fp)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,0($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,40($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,32
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,32
-	l.d	$f0,32($fp)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L157:
-	lw	$2,0($fp)
-	addu	$3,$2,5
-	sw	$3,0($fp)
-	j	$L155
-$L156:
-$L142:
-	move	$sp,$fp			# sp not trusted here
-	lw	$fp,16($sp)
-	addu	$sp,$sp,24
-	j	$31
-	.end	dscal
-	.loc	1 748
-	.ent	idamax
-idamax:
-	.frame	$fp,32,$31		# vars= 24, regs= 1/0, args= 0, extra= 0
-	.mask	0x40000000,-8
-	.fmask	0x00000000,0
-	subu	$sp,$sp,32
-	sw	$fp,24($sp)
-	move	$fp,$sp
-	sw	$4,32($fp)
-	sw	$5,36($fp)
-	sw	$6,40($fp)
-	lw	$2,32($fp)
-	bgtz	$2,$L160
-	li	$2,-1				# 0xffffffff
-	j	$L159
-$L160:
-	lw	$2,32($fp)
-	li	$3,0x00000001		# 1
-	bne	$2,$3,$L161
-	move	$2,$0
-	j	$L159
-$L161:
-	lw	$2,40($fp)
-	li	$3,0x00000001		# 1
-	beq	$2,$3,$L162
-	li	$2,0x00000001		# 1
-	sw	$2,12($fp)
-	lw	$2,36($fp)
-	l.d	$f0,0($2)
-	abs.d	$f2,$f0
-	s.d	$f2,0($fp)
-	lw	$2,12($fp)
-	lw	$3,40($fp)
-	addu	$2,$2,$3
-	sw	$2,12($fp)
-	li	$2,0x00000001		# 1
-	sw	$2,8($fp)
-$L163:
-	lw	$2,8($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L166
-	j	$L164
-$L166:
-	lw	$2,12($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,36($fp)
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-	l.d	$f2,0($fp)
-	c.lt.d	$f2,$f0
-	bc1f	$L167
-	lw	$2,8($fp)
-	sw	$2,16($fp)
-	lw	$2,12($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,36($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	abs.d	$f2,$f0
-	s.d	$f2,0($fp)
-$L167:
-	lw	$2,12($fp)
-	lw	$3,40($fp)
-	addu	$2,$2,$3
-	sw	$2,12($fp)
-$L165:
-	lw	$3,8($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,8($fp)
-	j	$L163
-$L164:
-	j	$L168
-$L162:
-	sw	$0,16($fp)
-	lw	$2,36($fp)
-	l.d	$f0,0($2)
-	abs.d	$f2,$f0
-	s.d	$f2,0($fp)
-	li	$2,0x00000001		# 1
-	sw	$2,8($fp)
-$L169:
-	lw	$2,8($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L172
-	j	$L170
-$L172:
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,36($fp)
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-	l.d	$f2,0($fp)
-	c.lt.d	$f2,$f0
-	bc1f	$L173
-	lw	$2,8($fp)
-	sw	$2,16($fp)
-	lw	$2,8($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,36($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	abs.d	$f2,$f0
-	s.d	$f2,0($fp)
-$L173:
-$L171:
-	lw	$3,8($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,8($fp)
-	j	$L169
-$L170:
-$L168:
-	lw	$2,16($fp)
-	j	$L159
-$L159:
-	move	$sp,$fp			# sp not trusted here
-	lw	$fp,24($sp)
-	addu	$sp,$sp,32
-	j	$31
-	.end	idamax
-	.loc	1 789
-	.ent	epslon
-epslon:
-	.frame	$fp,40,$31		# vars= 32, regs= 1/0, args= 0, extra= 0
-	.mask	0x40000000,-8
-	.fmask	0x00000000,0
-	subu	$sp,$sp,40
-	sw	$fp,32($sp)
-	move	$fp,$sp
-	s.d	$f12,40($fp)
-	l.d	$f0,$LC22
-	s.d	$f0,0($fp)
-	dsz	24($fp)
-$L175:
-	l.d	$f0,24($fp)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.eq.d	$f0,$f2
-	bc1t	$L177
-	j	$L176
-$L177:
-	l.d	$f0,0($fp)
-	l.d	$f2,$LC23
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,8($fp)
-	l.d	$f0,8($fp)
-	l.d	$f2,8($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,8($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,16($fp)
-	l.d	$f0,16($fp)
-	l.d	$f2,$LC23
-	sub.d	$f0,$f0,$f2
-	abs.d	$f2,$f0
-	s.d	$f2,24($fp)
-	j	$L175
-$L176:
-	l.d	$f2,40($fp)
-	abs.d	$f0,$f2
-	l.d	$f4,24($fp)
-	mul.d	$f2,$f0,$f4
-	mov.d	$f0,$f2
-	j	$L174
-$L174:
-	move	$sp,$fp			# sp not trusted here
-	lw	$fp,32($sp)
-	addu	$sp,$sp,40
-	j	$31
-	.end	epslon
-	.loc	1 836
-	.ent	dmxpy
-dmxpy:
-	.frame	$fp,24,$31		# vars= 16, regs= 1/0, args= 0, extra= 0
-	.mask	0x40000000,-8
-	.fmask	0x00000000,0
-	subu	$sp,$sp,24
-	sw	$fp,16($sp)
-	move	$fp,$sp
-	sw	$4,24($fp)
-	sw	$5,28($fp)
-	sw	$6,32($fp)
-	sw	$7,36($fp)
-	lw	$2,32($fp)
-	sra	$3,$2,31
-	srl	$4,$3,31
-	addu	$5,$2,$4
-	sra	$3,$5,1
-	move	$4,$3
-	sll	$3,$4,1
-	subu	$2,$2,$3
-	sw	$2,0($fp)
-	lw	$2,0($fp)
-	blez	$2,$L179
-	lw	$2,0($fp)
-	subu	$3,$2,1
-	sw	$3,0($fp)
-	sw	$0,4($fp)
-$L180:
-	lw	$2,4($fp)
-	lw	$3,24($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L183
-	j	$L181
-$L183:
-	lw	$2,4($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,28($fp)
-	addu	$2,$2,$3
-	lw	$3,4($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,28($fp)
-	addu	$3,$3,$4
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,40($fp)
-	addu	$4,$4,$5
-	lw	$5,36($fp)
-	lw	$6,0($fp)
-	mult	$5,$6
-	mflo	$5
-	lw	$6,4($fp)
-	addu	$5,$5,$6
-	move	$6,$5
-	sll	$5,$6,3
-	lw	$6,44($fp)
-	addu	$5,$5,$6
-	l.d	$f0,0($4)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-$L182:
-	lw	$3,4($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,4($fp)
-	j	$L180
-$L181:
-$L179:
-	lw	$2,32($fp)
-	move	$3,$2
-	bgez	$3,$L184
-	addu	$3,$3,3
-$L184:
-	sra	$3,$3,2
-	move	$4,$3
-	sll	$3,$4,2
-	subu	$2,$2,$3
-	sw	$2,0($fp)
-	lw	$2,0($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L185
-	lw	$2,0($fp)
-	subu	$3,$2,1
-	sw	$3,0($fp)
-	sw	$0,4($fp)
-$L186:
-	lw	$2,4($fp)
-	lw	$3,24($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L189
-	j	$L187
-$L189:
-	lw	$2,4($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,28($fp)
-	addu	$2,$2,$3
-	lw	$3,4($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,28($fp)
-	addu	$3,$3,$4
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$6,40($fp)
-	addu	$5,$4,$6
-	subu	$4,$5,8
-	lw	$6,0($fp)
-	subu	$5,$6,1
-	lw	$6,36($fp)
-	mult	$5,$6
-	mflo	$5
-	lw	$6,4($fp)
-	addu	$5,$5,$6
-	move	$6,$5
-	sll	$5,$6,3
-	lw	$6,44($fp)
-	addu	$5,$5,$6
-	l.d	$f0,0($4)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	lw	$4,36($fp)
-	lw	$5,0($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L188:
-	lw	$3,4($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,4($fp)
-	j	$L186
-$L187:
-$L185:
-	lw	$2,32($fp)
-	move	$3,$2
-	bgez	$3,$L190
-	addu	$3,$3,7
-$L190:
-	sra	$3,$3,3
-	move	$4,$3
-	sll	$3,$4,3
-	subu	$2,$2,$3
-	sw	$2,0($fp)
-	lw	$2,0($fp)
-	slt	$3,$2,4
-	bne	$3,$0,$L191
-	lw	$2,0($fp)
-	subu	$3,$2,1
-	sw	$3,0($fp)
-	sw	$0,4($fp)
-$L192:
-	lw	$2,4($fp)
-	lw	$3,24($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L195
-	j	$L193
-$L195:
-	lw	$2,4($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,28($fp)
-	addu	$2,$2,$3
-	lw	$3,4($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,28($fp)
-	addu	$3,$3,$4
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$6,40($fp)
-	addu	$5,$4,$6
-	subu	$4,$5,24
-	lw	$6,0($fp)
-	subu	$5,$6,3
-	lw	$6,36($fp)
-	mult	$5,$6
-	mflo	$5
-	lw	$6,4($fp)
-	addu	$5,$5,$6
-	move	$6,$5
-	sll	$5,$6,3
-	lw	$6,44($fp)
-	addu	$5,$5,$6
-	l.d	$f0,0($4)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,16
-	lw	$5,0($fp)
-	subu	$4,$5,2
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,8
-	lw	$5,0($fp)
-	subu	$4,$5,1
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	lw	$4,36($fp)
-	lw	$5,0($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L194:
-	lw	$3,4($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,4($fp)
-	j	$L192
-$L193:
-$L191:
-	lw	$2,32($fp)
-	move	$3,$2
-	bgez	$3,$L196
-	addu	$3,$3,15
-$L196:
-	sra	$3,$3,4
-	move	$4,$3
-	sll	$3,$4,4
-	subu	$2,$2,$3
-	sw	$2,0($fp)
-	lw	$2,0($fp)
-	slt	$3,$2,8
-	bne	$3,$0,$L197
-	lw	$2,0($fp)
-	subu	$3,$2,1
-	sw	$3,0($fp)
-	sw	$0,4($fp)
-$L198:
-	lw	$2,4($fp)
-	lw	$3,24($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L201
-	j	$L199
-$L201:
-	lw	$2,4($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,28($fp)
-	addu	$2,$2,$3
-	lw	$3,4($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,28($fp)
-	addu	$3,$3,$4
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$6,40($fp)
-	addu	$5,$4,$6
-	subu	$4,$5,56
-	lw	$6,0($fp)
-	subu	$5,$6,7
-	lw	$6,36($fp)
-	mult	$5,$6
-	mflo	$5
-	lw	$6,4($fp)
-	addu	$5,$5,$6
-	move	$6,$5
-	sll	$5,$6,3
-	lw	$6,44($fp)
-	addu	$5,$5,$6
-	l.d	$f0,0($4)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,48
-	lw	$5,0($fp)
-	subu	$4,$5,6
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,40
-	lw	$5,0($fp)
-	subu	$4,$5,5
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,32
-	lw	$5,0($fp)
-	subu	$4,$5,4
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,24
-	lw	$5,0($fp)
-	subu	$4,$5,3
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,16
-	lw	$5,0($fp)
-	subu	$4,$5,2
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,8
-	lw	$5,0($fp)
-	subu	$4,$5,1
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	lw	$4,36($fp)
-	lw	$5,0($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L200:
-	lw	$3,4($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,4($fp)
-	j	$L198
-$L199:
-$L197:
-	lw	$2,32($fp)
-	move	$3,$2
-	bgez	$3,$L202
-	addu	$3,$3,15
-$L202:
-	sra	$3,$3,4
-	move	$4,$3
-	sll	$3,$4,4
-	subu	$2,$2,$3
-	addu	$3,$2,16
-	sw	$3,8($fp)
-	lw	$2,8($fp)
-	subu	$3,$2,1
-	sw	$3,0($fp)
-$L203:
-	lw	$2,0($fp)
-	lw	$3,32($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L206
-	j	$L204
-$L206:
-	sw	$0,4($fp)
-$L207:
-	lw	$2,4($fp)
-	lw	$3,24($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L210
-	j	$L208
-$L210:
-	lw	$2,4($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,28($fp)
-	addu	$2,$2,$3
-	lw	$3,4($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,28($fp)
-	addu	$3,$3,$4
-	lw	$4,0($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$6,40($fp)
-	addu	$5,$4,$6
-	subu	$4,$5,120
-	lw	$6,0($fp)
-	subu	$5,$6,15
-	lw	$6,36($fp)
-	mult	$5,$6
-	mflo	$5
-	lw	$6,4($fp)
-	addu	$5,$5,$6
-	move	$6,$5
-	sll	$5,$6,3
-	lw	$6,44($fp)
-	addu	$5,$5,$6
-	l.d	$f0,0($4)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,112
-	lw	$5,0($fp)
-	subu	$4,$5,14
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,104
-	lw	$5,0($fp)
-	subu	$4,$5,13
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,96
-	lw	$5,0($fp)
-	subu	$4,$5,12
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,88
-	lw	$5,0($fp)
-	subu	$4,$5,11
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,80
-	lw	$5,0($fp)
-	subu	$4,$5,10
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,72
-	lw	$5,0($fp)
-	subu	$4,$5,9
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,64
-	lw	$5,0($fp)
-	subu	$4,$5,8
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,56
-	lw	$5,0($fp)
-	subu	$4,$5,7
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,48
-	lw	$5,0($fp)
-	subu	$4,$5,6
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,40
-	lw	$5,0($fp)
-	subu	$4,$5,5
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,32
-	lw	$5,0($fp)
-	subu	$4,$5,4
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,24
-	lw	$5,0($fp)
-	subu	$4,$5,3
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,16
-	lw	$5,0($fp)
-	subu	$4,$5,2
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$5,40($fp)
-	addu	$4,$3,$5
-	subu	$3,$4,8
-	lw	$5,0($fp)
-	subu	$4,$5,1
-	lw	$5,36($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,0($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,40($fp)
-	addu	$3,$3,$4
-	lw	$4,36($fp)
-	lw	$5,0($fp)
-	mult	$4,$5
-	mflo	$4
-	lw	$5,4($fp)
-	addu	$4,$4,$5
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,44($fp)
-	addu	$4,$4,$5
-	l.d	$f2,0($3)
-	l.d	$f4,0($4)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L209:
-	lw	$3,4($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,4($fp)
-	j	$L207
-$L208:
-$L205:
-	lw	$2,0($fp)
-	addu	$3,$2,16
-	sw	$3,0($fp)
-	j	$L203
-$L204:
-$L178:
-	move	$sp,$fp			# sp not trusted here
-	lw	$fp,16($sp)
-	addu	$sp,$sp,24
-	j	$31
-	.end	dmxpy
-	.loc	1 995
-	.ent	dtime
-dtime:
-	.frame	$fp,32,$31		# vars= 8, regs= 2/0, args= 16, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,32
-	sw	$31,28($sp)
-	sw	$fp,24($sp)
-	move	$fp,$sp
-	move	$4,$0
-	la	$5,rusage
-	jal	getrusage
-	l.s	$f0,rusage
-	#nop
-	cvt.d.w	$f0,$f0
-	s.d	$f0,16($fp)
-	l.s	$f0,rusage+4
-	#nop
-	cvt.d.w	$f0,$f0
-	l.d	$f2,$LC24
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,16($fp)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,16($fp)
-	l.d	$f0,16($fp)
-	j	$L211
-$L211:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,28($sp)
-	lw	$fp,24($sp)
-	addu	$sp,$sp,32
-	j	$31
-	.end	dtime

+ 0 - 4630
benchmarks/optimized/slalom.s

@@ -1,4630 +0,0 @@
-	.file	1 "slalom.c"
-# GNU C 2.7.2.3 [AL 1.1, MM 40, tma 0.1] SimpleScalar running sstrix compiled by GNU C
-# Cc1 defaults:
-# -mgas -mgpOPT
-# Cc1 arguments (-G value = 8, Cpu = default, ISA = 1):
-# -quiet -dumpbase -O0 -o
-gcc2_compiled.:
-__gnu_compiled_c:
-	.rdata
-	.align	2
-$LC0:
-	.ascii	"Enter the number of seconds that is the goal: \000"
-	.sdata
-	.align	2
-$LC1:
-	.ascii	"%lg\000"
-	.rdata
-	.align	2
-$LC2:
-	.ascii	"Enter a lower bound for n: \000"
-	.sdata
-	.align	2
-$LC3:
-	.ascii	"%d\000"
-	.rdata
-	.align	2
-$LC4:
-	.ascii	"Must take less than %g seconds.  Took %g.\n\000"
-	.align	2
-$LC5:
-	.ascii	"Enter an upper bound for n: \000"
-	.align	2
-$LC6:
-	.ascii	"Must take at least %g seconds.  Took %g.\n\000"
-	.align	2
-$LC7:
-	.ascii	"New interval: [%d,%d]\n\000"
-	.text
-	.align	2
-	.globl	main
-	.data
-	.align	2
-info.4:
-	.word	$LC8
-	.word	$LC9
-	.word	$LC10
-	.word	$LC11
-	.word	$LC12
-	.word	$LC13
-	.word	$LC14
-	.word	$LC15
-	.word	$LC16
-	.word	0
-	.rdata
-	.align	2
-$LC16:
-	.ascii	"Options:  -O                   Date:       23 May 1990\000"
-	.align	2
-$LC15:
-	.ascii	"Compiler: cc                   Run by:     M. Carter\000"
-	.align	2
-$LC14:
-	.ascii	"Language: C                    Alone:      yes\000"
-	.align	2
-$LC13:
-	.ascii	"OS:       SUNOS 4.0.3          Timer:      Wall, gettime"
-	.ascii	"ofday()\000"
-	.align	2
-$LC12:
-	.ascii	"Disk:     .3GB SCSI+.7GB SMD   Node name:  amssun2\000"
-	.align	2
-$LC11:
-	.ascii	"NMAX:     512                  Clock:      25 MHz\000"
-	.align	2
-$LC10:
-	.ascii	"Cache:    128 KB               # used:     1\000"
-	.align	2
-$LC9:
-	.ascii	"Memory:   32 MB                # of procs: 1\000"
-	.align	2
-$LC8:
-	.ascii	"Machine:  SUN 4/370GX          Processor:  SPARC\000"
-	.sdata
-	.align	2
-$LC17:
-	.ascii	"\n\000"
-	.rdata
-	.align	2
-$LC18:
-	.ascii	"M ops:    %-13lg        Time:       %-.3lf seconds\n\000"
-	.align	2
-$LC20:
-	.ascii	"n:        %-6d               MFLOPS:     %-.5lg\n\000"
-	.align	2
-$LC21:
-	.ascii	"Approximate data memory use: %d bytes.\n\000"
-	.sdata
-	.align	3
-$LC19:
-	.word	0xa0b5ed8d		# 9.9999999999999995475e-07
-	.word	0x3eb0c6f7
-	.text
-	.align	2
-	.globl	What
-	.lcomm	area.7,16384
-	.lcomm	box.8,56
-	.lcomm	coeff.9,33554432
-	.lcomm	diag.10,49152
-	.lcomm	emiss.11,144
-	.lcomm	place.12,49152
-	.lcomm	result.13,49152
-	.lcomm	rho.14,144
-	.lcomm	rhs.15,49152
-	.lcomm	size.16,32768
-	.lcomm	loop.17,48
-	.data
-	.align	2
-tasks.18:
-	.word	$LC22
-	.word	$LC23
-	.word	$LC24
-	.word	$LC25
-	.word	$LC26
-	.word	$LC27
-	.word	$LC28
-	.sdata
-	.align	2
-$LC28:
-	.ascii	"Storer\000"
-	.align	2
-$LC27:
-	.ascii	"Solver\000"
-	.align	2
-$LC26:
-	.ascii	"SetUp3\000"
-	.align	2
-$LC25:
-	.ascii	"SetUp2\000"
-	.align	2
-$LC24:
-	.ascii	"SetUp1\000"
-	.align	2
-$LC23:
-	.ascii	"Region\000"
-	.align	2
-$LC22:
-	.ascii	"Reader\000"
-	.rdata
-	.align	2
-$LC29:
-	.ascii	"%6.6s%8.3f%17.0f%14.6f%10.1f %%\n\000"
-	.sdata
-	.align	2
-format.19:
-	.word	$LC29
-	.rdata
-	.align	2
-$LC30:
-	.ascii	"Must be at least 6, the number of faces.\n\000"
-	.align	2
-$LC31:
-	.ascii	"Exceeds %d = maximum for this system.\n\000"
-	.sdata
-	.align	2
-$LC32:
-	.ascii	"answer\000"
-	.rdata
-	.align	2
-$LC50:
-	.ascii	"%d patches:\n\000"
-	.align	2
-$LC51:
-	.ascii	" Task  Seconds       Operations        MFLOPS    %% of T"
-	.ascii	"ime\n\000"
-	.sdata
-	.align	2
-$LC55:
-	.ascii	"TOTALS\000"
-	.align	3
-$LC33:
-	.word	0x00000000		# 0.5
-	.word	0x3fe00000
-	.align	3
-$LC34:
-	.word	0x00000000		# 258
-	.word	0x40702000
-	.align	3
-$LC35:
-	.word	0x00000000		# 8
-	.word	0x40200000
-	.align	3
-$LC36:
-	.word	0x00000000		# 154
-	.word	0x40634000
-	.align	3
-$LC37:
-	.word	0x00000000		# 532
-	.word	0x4080a000
-	.align	3
-$LC38:
-	.word	0x00000000		# 6
-	.word	0x40180000
-	.align	3
-$LC39:
-	.word	0x00000000		# 370
-	.word	0x40772000
-	.align	3
-$LC40:
-	.word	0x00000000		# 2
-	.word	0x40000000
-	.align	3
-$LC41:
-	.word	0x00000000		# 9
-	.word	0x40220000
-	.align	3
-$LC42:
-	.word	0x00000000		# 72
-	.word	0x40520000
-	.align	3
-$LC43:
-	.word	0x00000000		# 7.5
-	.word	0x401e0000
-	.align	3
-$LC44:
-	.word	0x00000000		# 2.5
-	.word	0x40040000
-	.align	3
-$LC45:
-	.word	0x00000000		# 21
-	.word	0x40350000
-	.align	3
-$LC46:
-	.word	0x00000000		# 1
-	.word	0x3ff00000
-	.align	3
-$LC47:
-	.word	0x00000000		# 16.5
-	.word	0x40308000
-	.align	3
-$LC48:
-	.word	0x00000000		# 35.5
-	.word	0x4041c000
-	.align	3
-$LC49:
-	.word	0x00000000		# 3
-	.word	0x40080000
-	.align	3
-$LC52:
-	.word	0xd2f1a9fc		# 0.0010000000000000000208
-	.word	0x3f50624d
-	.align	3
-$LC53:
-	.word	0xa0b5ed8d		# 9.9999999999999995475e-07
-	.word	0x3eb0c6f7
-	.align	3
-$LC54:
-	.word	0x00000000		# 100
-	.word	0x40590000
-	.text
-	.align	2
-	.globl	Meter
-	.sdata
-	.align	3
-$LC56:
-	.word	0xa0b5ed8d		# 9.9999999999999995475e-07
-	.word	0x3eb0c6f7
-	.text
-	.align	2
-	.globl	When
-	.sdata
-	.align	2
-$LC57:
-	.ascii	"geom\000"
-	.align	2
-$LC58:
-	.ascii	"r\000"
-	.rdata
-	.align	2
-$LC59:
-	.ascii	"slalom:  'geom' geometry file not found.\n\000"
-	.align	2
-$LC60:
-	.ascii	"Must specify exactly 3 box coordinates.\n\000"
-	.align	2
-$LC61:
-	.ascii	"Must specify exactly 18 box coordinates.\n\000"
-	.align	2
-$LC64:
-	.ascii	"Box dimensions must be between 1 and 100.\n\000"
-	.align	2
-$LC66:
-	.ascii	"Reflectivities must be between .000 and .999.\n\000"
-	.align	2
-$LC67:
-	.ascii	"Emissivity cannot be negative.\n\000"
-	.align	2
-$LC68:
-	.ascii	"Emissivities are zero.  Problem is trivial.\n\000"
-	.sdata
-	.align	3
-$LC62:
-	.word	0x00000000		# 1
-	.word	0x3ff00000
-	.align	3
-$LC63:
-	.word	0x00000000		# 100
-	.word	0x40590000
-	.align	3
-$LC65:
-	.word	0xd916872b		# 0.99899999999999999911
-	.word	0x3feff7ce
-	.text
-	.align	2
-	.globl	Reader
-	.rdata
-	.align	2
-$LC70:
-	.ascii	"Eccentric box requires more patches.\n\000"
-	.sdata
-	.align	3
-$LC69:
-	.word	0x00000000		# 0.5
-	.word	0x3fe00000
-	.align	3
-$LC71:
-	.word	0x54442d18		# 25.132741228718344928
-	.word	0x403921fb
-	.text
-	.align	2
-	.globl	Region
-	.sdata
-	.align	3
-$LC72:
-	.word	0x00000000		# 1
-	.word	0x3ff00000
-	.align	3
-$LC73:
-	.word	0x00000000		# -4
-	.word	0xc0100000
-	.text
-	.align	2
-	.globl	SetUp1
-	.sdata
-	.align	3
-$LC74:
-	.word	0xb7f87a0f		# 1.0000000000000000079e-35
-	.word	0x38aa95a5
-	.align	3
-$LC75:
-	.word	0x00000000		# 1
-	.word	0x3ff00000
-	.align	3
-$LC76:
-	.word	0x00000000		# 4
-	.word	0x40100000
-	.text
-	.align	2
-	.globl	SetUp2
-	.rdata
-	.align	2
-$LC79:
-	.ascii	"Total form factor is too far from unity.\n\000"
-	.sdata
-	.align	3
-$LC77:
-	.word	0x00000000		# 1
-	.word	0x3ff00000
-	.align	3
-$LC78:
-	.word	0xe826d695		# 5.0000000000000003114e-10
-	.word	0x3e012e0b
-	.text
-	.align	2
-	.globl	SetUp3
-	.sdata
-	.align	3
-$LC80:
-	.word	0x00000000		# 1
-	.word	0x3ff00000
-	.text
-	.align	2
-	.globl	Solver
-	.sdata
-	.align	2
-$LC81:
-	.ascii	"w\000"
-	.rdata
-	.align	2
-$LC82:
-	.ascii	"Unable to open 'answer' file.\n\000"
-	.align	2
-$LC83:
-	.ascii	" Patch  Face       Position in w, h, d              Widt"
-	.ascii	"h     Height\n\000"
-	.align	2
-$LC84:
-	.ascii	"%5d   %4d%11.5lf%11.5lf%11.5lf  %11.5lf%11.5lf\n\000"
-	.align	2
-$LC85:
-	.ascii	"\n"
-	.ascii	" Patch  Face  Radiosities\n\000"
-	.align	2
-$LC86:
-	.ascii	"%5d   %4d%12.8lf%12.8lf%12.8lf\n\000"
-	.text
-	.align	2
-	.globl	Storer
-	.rdata
-	.align	2
-$LC88:
-	.ascii	"Residual is too large: %lg\n\000"
-	.sdata
-	.align	3
-$LC87:
-	.word	0x29a4692c		# 1.5000000000000001968e-08
-	.word	0x3e501b2b
-	.text
-	.align	2
-	.globl	Verify
-	.align	2
-	.globl	Ddot
-	.comm	goal,8
-	.comm	timing,8
-	.comm	work,8
-	.comm	mean,4
-	.comm	n,4
-	.comm	nupper,4
-	.text
-	.loc	1 179
-	.ent	main
-main:
-	.frame	$fp,40,$31		# vars= 8, regs= 2/0, args= 24, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,40
-	sw	$31,36($sp)
-	sw	$fp,32($sp)
-	move	$fp,$sp
-	jal	__main
-	la	$4,$LC0
-	jal	printf
-	la	$4,$LC1
-	la	$5,goal
-	jal	scanf
-$L2:
-	la	$4,$LC2
-	jal	printf
-	la	$4,$LC3
-	la	$5,n
-	jal	scanf
-	lw	$2,n
-	bgtz	$2,$L5
-	move	$4,$0
-	jal	exit
-$L5:
-	lw	$4,n
-	la	$5,timing
-	la	$6,work
-	jal	Meter
-	sw	$2,24($fp)
-	l.d	$f0,timing
-	l.d	$f2,goal
-	c.le.d	$f2,$f0
-	bc1f	$L6
-	l.d	$f0,timing
-	s.d	$f0,16($sp)
-	la	$4,$LC4
-	dlw	$6,goal
-	jal	printf
-$L6:
-$L4:
-	lw	$2,24($fp)
-	beq	$2,$0,$L7
-	l.d	$f0,timing
-	l.d	$f2,goal
-	c.le.d	$f2,$f0
-	bc1t	$L7
-	j	$L3
-$L7:
-	j	$L2
-$L3:
-	.set	noreorder
-	nop
-	.set	reorder
-$L8:
-	la	$4,$LC5
-	jal	printf
-	la	$4,$LC3
-	la	$5,nupper
-	jal	scanf
-	lw	$2,nupper
-	bgtz	$2,$L11
-	move	$4,$0
-	jal	exit
-$L11:
-	lw	$4,nupper
-	la	$5,timing
-	la	$6,work
-	jal	Meter
-	sw	$2,24($fp)
-	l.d	$f0,timing
-	l.d	$f2,goal
-	c.lt.d	$f0,$f2
-	bc1f	$L12
-	l.d	$f0,timing
-	s.d	$f0,16($sp)
-	la	$4,$LC6
-	dlw	$6,goal
-	jal	printf
-	lw	$2,nupper
-	lw	$3,n
-	slt	$4,$2,$3
-	beq	$4,$0,$L13
-	lw	$2,n
-$L13:
-	sw	$2,n
-$L12:
-$L10:
-	lw	$2,24($fp)
-	beq	$2,$0,$L14
-	l.d	$f0,timing
-	l.d	$f2,goal
-	c.lt.d	$f0,$f2
-	bc1t	$L14
-	j	$L9
-$L14:
-	j	$L8
-$L9:
-	.set	noreorder
-	nop
-	.set	reorder
-$L15:
-	lw	$2,nupper
-	lw	$3,n
-	subu	$2,$2,$3
-	slt	$3,$2,2
-	bne	$3,$0,$L16
-$L17:
-	lw	$2,n
-	lw	$3,nupper
-	addu	$2,$2,$3
-	sra	$3,$2,31
-	srl	$4,$3,31
-	addu	$2,$2,$4
-	sra	$3,$2,1
-	sw	$3,mean
-	lw	$4,mean
-	la	$5,timing
-	la	$6,work
-	jal	Meter
-	sw	$2,24($fp)
-	l.d	$f0,timing
-	l.d	$f2,goal
-	c.lt.d	$f0,$f2
-	bc1f	$L18
-	lw	$2,mean
-	sw	$2,n
-	j	$L19
-$L18:
-	lw	$2,mean
-	sw	$2,nupper
-$L19:
-	la	$4,$LC7
-	lw	$5,n
-	lw	$6,nupper
-	jal	printf
-	j	$L15
-$L16:
-	lw	$4,n
-	la	$5,timing
-	la	$6,work
-	jal	Meter
-	sw	$2,24($fp)
-	l.d	$f0,work
-	s.d	$f0,16($sp)
-	lw	$4,n
-	dlw	$6,timing
-	jal	What
-$L1:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,36($sp)
-	lw	$fp,32($sp)
-	addu	$sp,$sp,40
-	j	$31
-	.end	main
-	.loc	1 236
-	.ent	What
-What:
-	.frame	$fp,40,$31		# vars= 8, regs= 2/0, args= 24, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,40
-	sw	$31,36($sp)
-	sw	$fp,32($sp)
-	move	$fp,$sp
-	sw	$4,40($fp)
-	dsw	$6,48($fp)
-	la	$4,$LC17
-	jal	printf
-	sw	$0,24($fp)
-$L21:
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,2
-	la	$3,info.4
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	bne	$3,$0,$L24
-	j	$L22
-$L24:
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,2
-	la	$3,info.4
-	addu	$2,$2,$3
-	lw	$4,0($2)
-	jal	puts
-$L23:
-	lw	$3,24($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,24($fp)
-	j	$L21
-$L22:
-	l.d	$f0,56($fp)
-	l.d	$f2,$LC19
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,48($fp)
-	s.d	$f2,16($sp)
-	la	$4,$LC18
-	dmfc1	$6,$f0
-	jal	printf
-	l.d	$f0,56($fp)
-	l.d	$f2,48($fp)
-	div.d	$f0,$f0,$f2
-	l.d	$f2,$LC19
-	mul.d	$f0,$f0,$f2
-	la	$4,$LC20
-	lw	$5,40($fp)
-	dmfc1	$6,$f0
-	jal	printf
-	lw	$2,40($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,40($fp)
-	mult	$2,$3
-	mflo	$2
-	lw	$3,40($fp)
-	move	$5,$3
-	sll	$4,$5,4
-	subu	$4,$4,$3
-	sll	$3,$4,3
-	addu	$2,$2,$3
-	addu	$3,$2,800
-	la	$4,$LC21
-	move	$5,$3
-	jal	printf
-$L20:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,36($sp)
-	lw	$fp,32($sp)
-	addu	$sp,$sp,40
-	j	$31
-	.end	What
-	.loc	1 282
-	.ent	Meter
-Meter:
-	.frame	$fp,280,$31		# vars= 208, regs= 2/3, args= 40, extra= 0
-	.mask	0xc0000000,-28
-	.fmask	0x03f00000,-4
-	subu	$sp,$sp,280
-	sw	$31,252($sp)
-	sw	$fp,248($sp)
-	s.d	$f24,272($sp)
-	s.d	$f22,264($sp)
-	s.d	$f20,256($sp)
-	move	$fp,$sp
-	sw	$4,280($fp)
-	sw	$5,284($fp)
-	sw	$6,288($fp)
-	lw	$2,280($fp)
-	slt	$3,$2,6
-	beq	$3,$0,$L26
-	la	$4,$LC30
-	jal	printf
-	move	$2,$0
-	j	$L25
-	j	$L27
-$L26:
-	lw	$2,280($fp)
-	slt	$3,$2,2049
-	bne	$3,$0,$L28
-	la	$4,$LC31
-	li	$5,0x00000800		# 2048
-	jal	printf
-	move	$2,$0
-	j	$L25
-$L28:
-$L27:
-	la	$4,$LC32
-	jal	unlink
-	jal	When
-	s.d	$f0,152($fp)
-	la	$4,box.8
-	la	$5,rho.14
-	la	$6,emiss.11
-	jal	Reader
-	bne	$2,$0,$L29
-	move	$2,$0
-	j	$L25
-$L29:
-	jal	When
-	s.d	$f0,160($fp)
-	la	$2,size.16
-	sw	$2,16($sp)
-	la	$2,area.7
-	sw	$2,20($sp)
-	lw	$4,280($fp)
-	la	$5,loop.17
-	la	$6,box.8
-	la	$7,place.12
-	jal	Region
-	bne	$2,$0,$L30
-	move	$2,$0
-	j	$L25
-$L30:
-	jal	When
-	s.d	$f0,168($fp)
-	la	$2,size.16
-	sw	$2,16($sp)
-	lw	$4,280($fp)
-	la	$5,loop.17
-	la	$6,coeff.9
-	la	$7,place.12
-	jal	SetUp1
-	jal	When
-	s.d	$f0,176($fp)
-	la	$2,size.16
-	sw	$2,16($sp)
-	lw	$4,280($fp)
-	la	$5,loop.17
-	la	$6,coeff.9
-	la	$7,place.12
-	jal	SetUp2
-	jal	When
-	s.d	$f0,184($fp)
-	la	$2,emiss.11
-	sw	$2,16($sp)
-	la	$2,coeff.9
-	sw	$2,20($sp)
-	la	$2,diag.10
-	sw	$2,24($sp)
-	la	$2,rhs.15
-	sw	$2,28($sp)
-	lw	$4,280($fp)
-	la	$5,loop.17
-	la	$6,area.7
-	la	$7,rho.14
-	jal	SetUp3
-	bne	$2,$0,$L31
-	move	$2,$0
-	j	$L25
-$L31:
-	jal	When
-	s.d	$f0,192($fp)
-	lw	$2,loop.17+8
-	sw	$2,240($fp)
-	la	$2,rhs.15
-	sw	$2,16($sp)
-	la	$2,result.13
-	sw	$2,20($sp)
-	lw	$4,280($fp)
-	lw	$5,240($fp)
-	la	$6,coeff.9
-	la	$7,diag.10
-	jal	Solver
-	jal	When
-	s.d	$f0,200($fp)
-	la	$2,result.13
-	sw	$2,16($sp)
-	lw	$4,280($fp)
-	la	$5,loop.17
-	la	$6,place.12
-	la	$7,size.16
-	jal	Storer
-	jal	When
-	s.d	$f0,208($fp)
-	lw	$2,284($fp)
-	l.d	$f0,208($fp)
-	l.d	$f2,152($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	sw	$0,232($fp)
-$L32:
-	lw	$2,232($fp)
-	slt	$3,$2,7
-	bne	$3,$0,$L35
-	j	$L33
-$L35:
-	lw	$2,232($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,40
-	addu	$3,$2,$4
-	addu	$2,$3,112
-	addu	$3,$fp,160
-	lw	$4,232($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$3,$3,$4
-	lw	$4,232($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,40
-	addu	$4,$4,$5
-	addu	$5,$4,112
-	l.d	$f0,0($3)
-	l.d	$f2,0($5)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L34:
-	lw	$3,232($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,232($fp)
-	j	$L32
-$L33:
-	sw	$0,236($fp)
-	dsz	216($fp)
-	sw	$0,232($fp)
-$L36:
-	lw	$2,232($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L39
-	j	$L37
-$L39:
-	lw	$2,232($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,40
-	addu	$3,$2,$4
-	addu	$2,$3,64
-	lw	$3,232($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,232($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$3,loop.17+4($3)
-	lw	$4,loop.17($4)
-	subu	$3,$3,$4
-	addu	$4,$3,1
-	mtc1	$4,$f0
-	#nop
-	cvt.d.w	$f0,$f0
-	s.d	$f0,0($2)
-	lw	$2,232($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,40
-	addu	$3,$2,$4
-	addu	$2,$3,64
-	lw	$3,232($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$fp,40
-	addu	$3,$3,$4
-	addu	$4,$3,64
-	l.d	$f0,0($2)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,216($fp)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,216($fp)
-	l.s	$f24,236($fp)
-	#nop
-	cvt.d.w	$f24,$f24
-	lw	$2,232($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,40
-	addu	$3,$2,$4
-	addu	$2,$3,64
-	lw	$3,232($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	la	$4,box.8
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	lw	$2,232($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	la	$3,box.8+8
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	sqrt
-	l.d	$f2,$LC33
-	add.d	$f0,$f0,$f2
-	add.d	$f2,$f24,$f0
-	trunc.w.d $f10,$f2,$8
-	s.s	$f10,236($fp)
-$L38:
-	lw	$3,232($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,232($fp)
-	j	$L36
-$L37:
-	l.d	$f0,104($fp)
-	l.d	$f2,128($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,112($fp)
-	l.d	$f4,136($fp)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	l.d	$f2,120($fp)
-	l.d	$f4,144($fp)
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	s.d	$f0,224($fp)
-	l.d	$f0,$LC34
-	s.d	$f0,40($fp)
-	l.s	$f0,236($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	l.d	$f2,$LC35
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,$LC36
-	add.d	$f0,$f0,$f2
-	l.s	$f2,280($fp)
-	#nop
-	cvt.d.w	$f2,$f2
-	add.d	$f0,$f0,$f2
-	s.d	$f0,48($fp)
-	l.d	$f0,224($fp)
-	l.d	$f2,$LC37
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,$LC38
-	add.d	$f0,$f0,$f2
-	s.d	$f0,56($fp)
-	lw	$2,280($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	mtc1	$2,$f0
-	#nop
-	cvt.d.w	$f0,$f0
-	l.s	$f2,280($fp)
-	#nop
-	cvt.d.w	$f2,$f2
-	l.s	$f4,280($fp)
-	#nop
-	cvt.d.w	$f4,$f4
-	mul.d	$f2,$f2,$f4
-	l.d	$f4,216($fp)
-	sub.d	$f2,$f2,$f4
-	l.d	$f20,224($fp)
-	add.d	$f4,$f20,$f20
-	sub.d	$f2,$f2,$f4
-	l.d	$f4,$LC39
-	mul.d	$f2,$f2,$f4
-	l.d	$f4,$LC40
-	div.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	l.s	$f0,280($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	l.d	$f2,$LC41
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,$LC42
-	add.d	$f0,$f0,$f2
-	l.s	$f2,280($fp)
-	#nop
-	cvt.d.w	$f2,$f2
-	l.s	$f4,280($fp)
-	#nop
-	cvt.d.w	$f4,$f4
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	l.d	$f2,216($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,72($fp)
-	l.s	$f0,280($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	l.s	$f2,280($fp)
-	#nop
-	cvt.d.w	$f2,$f2
-	l.s	$f4,280($fp)
-	#nop
-	cvt.d.w	$f4,$f4
-	l.d	$f6,$LC43
-	add.d	$f4,$f4,$f6
-	mul.d	$f2,$f2,$f4
-	l.d	$f4,$LC44
-	sub.d	$f2,$f2,$f4
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,$LC45
-	sub.d	$f0,$f0,$f2
-	lw	$3,240($fp)
-	addu	$2,$3,1
-	mtc1	$2,$f2
-	#nop
-	cvt.d.w	$f2,$f2
-	lw	$3,240($fp)
-	addu	$2,$3,1
-	mtc1	$2,$f4
-	#nop
-	cvt.d.w	$f4,$f4
-	l.s	$f22,240($fp)
-	#nop
-	cvt.d.w	$f22,$f22
-	l.d	$f6,$LC46
-	add.d	$f22,$f22,$f6
-	add.d	$f6,$f22,$f22
-	l.d	$f8,$LC47
-	sub.d	$f6,$f6,$f8
-	mul.d	$f4,$f4,$f6
-	l.d	$f6,$LC48
-	add.d	$f4,$f4,$f6
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	lw	$3,240($fp)
-	addu	$2,$3,1
-	lw	$3,280($fp)
-	mult	$2,$3
-	mflo	$2
-	mtc1	$2,$f2
-	#nop
-	cvt.d.w	$f2,$f2
-	l.s	$f4,240($fp)
-	#nop
-	cvt.d.w	$f4,$f4
-	l.d	$f6,$LC46
-	add.d	$f4,$f4,$f6
-	l.d	$f6,$LC49
-	mul.d	$f4,$f4,$f6
-	l.d	$f6,$LC41
-	sub.d	$f4,$f6,$f4
-	mul.d	$f2,$f2,$f4
-	add.d	$f0,$f0,$f2
-	s.d	$f0,80($fp)
-	lw	$2,280($fp)
-	move	$4,$2
-	sll	$3,$4,1
-	addu	$3,$3,$2
-	sll	$2,$3,4
-	mtc1	$2,$f0
-	#nop
-	cvt.d.w	$f0,$f0
-	s.d	$f0,88($fp)
-	lw	$2,288($fp)
-	l.d	$f0,40($fp)
-	l.d	$f2,48($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,56($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,64($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,72($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,80($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,88($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	la	$4,$LC50
-	lw	$5,280($fp)
-	jal	printf
-	la	$4,$LC51
-	jal	printf
-	sw	$0,232($fp)
-$L40:
-	lw	$2,232($fp)
-	slt	$3,$2,7
-	bne	$3,$0,$L43
-	j	$L41
-$L43:
-	lw	$2,232($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$3,$fp,40
-	addu	$2,$2,$3
-	addu	$3,$2,112
-	l.d	$f0,0($3)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.eq.d	$f0,$f2
-	bc1f	$L44
-	lw	$2,232($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$3,$fp,40
-	addu	$2,$2,$3
-	addu	$3,$2,112
-	l.d	$f0,$LC52
-	s.d	$f0,0($3)
-$L44:
-	lw	$2,232($fp)
-	move	$3,$2
-	sll	$2,$3,2
-	la	$3,tasks.18
-	addu	$2,$2,$3
-	lw	$3,232($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$5,$fp,40
-	addu	$4,$3,$5
-	addu	$3,$4,112
-	lw	$4,232($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,40
-	addu	$4,$4,$5
-	l.d	$f0,0($4)
-	s.d	$f0,16($sp)
-	lw	$4,232($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,40
-	addu	$4,$4,$5
-	lw	$5,232($fp)
-	move	$6,$5
-	sll	$5,$6,3
-	addu	$6,$fp,40
-	addu	$5,$5,$6
-	addu	$6,$5,112
-	l.d	$f0,0($4)
-	l.d	$f2,0($6)
-	div.d	$f0,$f0,$f2
-	l.d	$f2,$LC53
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,24($sp)
-	lw	$4,232($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,40
-	addu	$4,$4,$5
-	addu	$5,$4,112
-	l.d	$f0,0($5)
-	l.d	$f2,$LC54
-	mul.d	$f0,$f0,$f2
-	lw	$4,284($fp)
-	l.d	$f2,0($4)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,32($sp)
-	lw	$4,format.19
-	lw	$5,0($2)
-	dlw	$6,0($3)
-	jal	printf
-$L42:
-	lw	$3,232($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,232($fp)
-	j	$L40
-$L41:
-	lw	$2,284($fp)
-	lw	$3,288($fp)
-	l.d	$f0,0($3)
-	s.d	$f0,16($sp)
-	lw	$3,288($fp)
-	lw	$4,284($fp)
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	div.d	$f0,$f0,$f2
-	l.d	$f2,$LC53
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,24($sp)
-	l.d	$f0,$LC54
-	s.d	$f0,32($sp)
-	lw	$4,format.19
-	la	$5,$LC55
-	dlw	$6,0($2)
-	jal	printf
-	la	$2,result.13
-	sw	$2,16($sp)
-	lw	$4,280($fp)
-	la	$5,coeff.9
-	la	$6,diag.10
-	la	$7,rhs.15
-	jal	Verify
-	li	$2,0x00000001		# 1
-	j	$L25
-$L25:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,252($sp)
-	lw	$fp,248($sp)
-	l.d	$f24,272($sp)
-	l.d	$f22,264($sp)
-	l.d	$f20,256($sp)
-	addu	$sp,$sp,280
-	j	$31
-	.end	Meter
-	.loc	1 396
-	.ent	When
-When:
-	.frame	$fp,40,$31		# vars= 16, regs= 2/0, args= 16, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,40
-	sw	$31,36($sp)
-	sw	$fp,32($sp)
-	move	$fp,$sp
-	addu	$2,$fp,24
-	addu	$4,$fp,16
-	move	$5,$2
-	jal	gettimeofday
-	l.s	$f0,16($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	l.s	$f2,20($fp)
-	#nop
-	cvt.d.w	$f2,$f2
-	l.d	$f4,$LC56
-	mul.d	$f2,$f2,$f4
-	add.d	$f4,$f0,$f2
-	mov.d	$f0,$f4
-	j	$L45
-$L45:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,36($sp)
-	lw	$fp,32($sp)
-	addu	$sp,$sp,40
-	j	$31
-	.end	When
-	.loc	1 409
-	.ent	Reader
-Reader:
-	.frame	$fp,144,$31		# vars= 120, regs= 2/0, args= 16, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,144
-	sw	$31,140($sp)
-	sw	$fp,136($sp)
-	move	$fp,$sp
-	sw	$4,144($fp)
-	sw	$5,148($fp)
-	sw	$6,152($fp)
-	la	$4,$LC57
-	la	$5,$LC58
-	jal	fopen
-	sw	$2,40($fp)
-	lw	$2,40($fp)
-	bne	$2,$0,$L47
-	la	$4,$LC59
-	jal	printf
-	li	$4,0x00000001		# 1
-	jal	exit
-$L47:
-	sw	$0,24($fp)
-	sw	$0,16($fp)
-$L48:
-	lw	$2,16($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L51
-	j	$L49
-$L51:
-	lw	$2,16($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,144($fp)
-	addu	$2,$2,$3
-	lw	$4,40($fp)
-	la	$5,$LC1
-	move	$6,$2
-	jal	fscanf
-	lw	$3,24($fp)
-	addu	$2,$3,$2
-	sw	$2,24($fp)
-$L50:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L48
-$L49:
-	addu	$2,$fp,48
-	move	$4,$2
-	li	$5,0x00000050		# 80
-	lw	$6,40($fp)
-	jal	fgets
-	lw	$2,24($fp)
-	li	$3,0x00000003		# 3
-	beq	$2,$3,$L52
-	la	$4,$LC60
-	jal	printf
-	li	$4,0x00000001		# 1
-	jal	exit
-$L52:
-	sw	$0,24($fp)
-	sw	$0,20($fp)
-$L53:
-	lw	$2,20($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L56
-	j	$L54
-$L56:
-	sw	$0,16($fp)
-$L57:
-	lw	$2,16($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L60
-	j	$L58
-$L60:
-	lw	$2,16($fp)
-	move	$4,$2
-	sll	$3,$4,1
-	addu	$3,$3,$2
-	sll	$2,$3,3
-	lw	$3,148($fp)
-	addu	$2,$2,$3
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$2,$2,$3
-	lw	$4,40($fp)
-	la	$5,$LC1
-	move	$6,$2
-	jal	fscanf
-	lw	$3,24($fp)
-	addu	$2,$3,$2
-	sw	$2,24($fp)
-$L59:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L57
-$L58:
-$L55:
-	lw	$3,20($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,20($fp)
-	j	$L53
-$L54:
-	addu	$2,$fp,48
-	move	$4,$2
-	li	$5,0x00000050		# 80
-	lw	$6,40($fp)
-	jal	fgets
-	lw	$2,24($fp)
-	li	$3,0x00000012		# 18
-	beq	$2,$3,$L61
-	la	$4,$LC61
-	jal	printf
-	li	$4,0x00000001		# 1
-	jal	exit
-$L61:
-	sw	$0,24($fp)
-	sw	$0,20($fp)
-$L62:
-	lw	$2,20($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L65
-	j	$L63
-$L65:
-	sw	$0,16($fp)
-$L66:
-	lw	$2,16($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L69
-	j	$L67
-$L69:
-	lw	$2,16($fp)
-	move	$4,$2
-	sll	$3,$4,1
-	addu	$3,$3,$2
-	sll	$2,$3,3
-	lw	$3,152($fp)
-	addu	$2,$2,$3
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$2,$2,$3
-	lw	$4,40($fp)
-	la	$5,$LC1
-	move	$6,$2
-	jal	fscanf
-	lw	$3,24($fp)
-	addu	$2,$3,$2
-	sw	$2,24($fp)
-$L68:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L66
-$L67:
-$L64:
-	lw	$3,20($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,20($fp)
-	j	$L62
-$L63:
-	addu	$2,$fp,48
-	move	$4,$2
-	li	$5,0x00000050		# 80
-	lw	$6,40($fp)
-	jal	fgets
-	lw	$2,24($fp)
-	li	$3,0x00000012		# 18
-	beq	$2,$3,$L70
-	la	$4,$LC61
-	jal	printf
-	li	$4,0x00000001		# 1
-	jal	exit
-$L70:
-	lw	$4,40($fp)
-	jal	fclose
-	sw	$0,20($fp)
-$L71:
-	lw	$2,20($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L74
-	j	$L72
-$L74:
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,144($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	l.d	$f2,$LC62
-	c.lt.d	$f0,$f2
-	bc1t	$L76
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,144($fp)
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	l.d	$f2,$LC63
-	c.le.d	$f2,$f0
-	bc1t	$L76
-	j	$L75
-$L76:
-	la	$4,$LC64
-	jal	printf
-	move	$2,$0
-	j	$L46
-$L75:
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,144($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,24
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,144($fp)
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	dsz	32($fp)
-	sw	$0,16($fp)
-$L77:
-	lw	$2,16($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L80
-	j	$L78
-$L80:
-	lw	$3,16($fp)
-	lw	$2,20($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	move	$5,$3
-	sll	$4,$5,1
-	addu	$4,$4,$3
-	sll	$3,$4,3
-	lw	$4,148($fp)
-	addu	$3,$3,$4
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.lt.d	$f0,$f2
-	bc1t	$L82
-	lw	$3,16($fp)
-	lw	$2,20($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	move	$5,$3
-	sll	$4,$5,1
-	addu	$4,$4,$3
-	sll	$3,$4,3
-	lw	$4,148($fp)
-	addu	$3,$3,$4
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	l.d	$f2,$LC65
-	c.lt.d	$f2,$f0
-	bc1t	$L82
-	j	$L81
-$L82:
-	la	$4,$LC66
-	jal	printf
-	move	$2,$0
-	j	$L46
-$L81:
-	lw	$3,16($fp)
-	lw	$2,20($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	move	$5,$3
-	sll	$4,$5,1
-	addu	$4,$4,$3
-	sll	$3,$4,3
-	lw	$4,152($fp)
-	addu	$3,$3,$4
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.lt.d	$f0,$f2
-	bc1f	$L83
-	la	$4,$LC67
-	jal	printf
-	move	$2,$0
-	j	$L46
-$L83:
-	lw	$3,16($fp)
-	lw	$2,20($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	move	$5,$3
-	sll	$4,$5,1
-	addu	$4,$4,$3
-	sll	$3,$4,3
-	lw	$4,152($fp)
-	addu	$3,$3,$4
-	addu	$2,$2,$3
-	l.d	$f0,32($fp)
-	l.d	$f2,0($2)
-	c.lt.d	$f0,$f2
-	bc1f	$L84
-	lw	$3,16($fp)
-	lw	$2,20($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	move	$5,$3
-	sll	$4,$5,1
-	addu	$4,$4,$3
-	sll	$3,$4,3
-	lw	$4,152($fp)
-	addu	$3,$3,$4
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	s.d	$f0,32($fp)
-$L84:
-$L79:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L77
-$L78:
-	l.d	$f0,32($fp)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-	c.eq.d	$f0,$f2
-	bc1f	$L85
-	la	$4,$LC68
-	jal	printf
-	move	$2,$0
-	j	$L46
-$L85:
-$L73:
-	lw	$3,20($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,20($fp)
-	j	$L71
-$L72:
-	lw	$3,144($fp)
-	addu	$2,$3,48
-	lw	$4,144($fp)
-	addu	$3,$4,24
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	li	$2,0x00000001		# 1
-	j	$L46
-$L46:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,140($sp)
-	lw	$fp,136($sp)
-	addu	$sp,$sp,144
-	j	$31
-	.end	Reader
-	.loc	1 504
-	.ent	Region
-Region:
-	.frame	$fp,120,$31		# vars= 88, regs= 2/1, args= 16, extra= 0
-	.mask	0xc0000000,-12
-	.fmask	0x00300000,-4
-	subu	$sp,$sp,120
-	sw	$31,108($sp)
-	sw	$fp,104($sp)
-	s.d	$f20,112($sp)
-	move	$fp,$sp
-	sw	$4,120($fp)
-	sw	$5,124($fp)
-	sw	$6,128($fp)
-	sw	$7,132($fp)
-	lw	$2,128($fp)
-	lw	$4,128($fp)
-	addu	$3,$4,8
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f20,$f0,$f2
-	lw	$3,128($fp)
-	addu	$2,$3,8
-	lw	$4,128($fp)
-	addu	$3,$4,16
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	add.d	$f20,$f20,$f0
-	lw	$3,128($fp)
-	addu	$2,$3,16
-	lw	$3,128($fp)
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	add.d	$f20,$f20,$f0
-	add.d	$f0,$f20,$f20
-	s.d	$f0,64($fp)
-	dsz	72($fp)
-	l.s	$f0,120($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	s.d	$f0,80($fp)
-	lw	$2,124($fp)
-	sw	$0,0($2)
-	sw	$0,24($fp)
-$L87:
-	lw	$2,24($fp)
-	slt	$3,$2,5
-	bne	$3,$0,$L90
-	j	$L88
-$L90:
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,128($fp)
-	addu	$2,$2,$3
-	lw	$3,24($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,128($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,8
-	l.d	$f0,0($2)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,72($fp)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,72($fp)
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,124($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,4
-	l.d	$f0,80($fp)
-	l.d	$f2,72($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,64($fp)
-	div.d	$f0,$f0,$f2
-	l.d	$f2,$LC69
-	add.d	$f0,$f0,$f2
-	trunc.w.d $f4,$f0,$8
-	mfc1	$3,$f4
-	subu	$4,$3,1
-	sw	$4,0($2)
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,124($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,8
-	lw	$3,24($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,124($fp)
-	addu	$3,$3,$4
-	addu	$4,$3,4
-	lw	$3,0($4)
-	addu	$4,$3,1
-	sw	$4,0($2)
-$L89:
-	lw	$3,24($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,24($fp)
-	j	$L87
-$L88:
-	lw	$3,124($fp)
-	addu	$2,$3,44
-	lw	$3,120($fp)
-	subu	$4,$3,1
-	sw	$4,0($2)
-	sw	$0,24($fp)
-$L91:
-	lw	$2,24($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L94
-	j	$L92
-$L94:
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$4,124($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,4
-	lw	$3,24($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,124($fp)
-	addu	$3,$3,$4
-	lw	$2,0($2)
-	lw	$3,0($3)
-	subu	$2,$2,$3
-	addu	$3,$2,1
-	sw	$3,48($fp)
-	dsz	80($fp)
-	lw	$2,24($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L95
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,128($fp)
-	addu	$2,$2,$3
-	subu	$3,$2,8
-	l.d	$f0,0($3)
-	s.d	$f0,80($fp)
-$L95:
-	l.s	$f0,48($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,128($fp)
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	mul.d	$f0,$f0,$f2
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,128($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,8
-	l.d	$f2,0($3)
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	sqrt
-	l.d	$f2,$LC69
-	add.d	$f0,$f0,$f2
-	trunc.w.d $f4,$f0,$8
-	s.s	$f4,44($fp)
-	lw	$2,44($fp)
-	lw	$3,48($fp)
-	slt	$2,$3,$2
-	beq	$2,$0,$L96
-	lw	$2,48($fp)
-	sw	$2,44($fp)
-$L96:
-	lw	$2,44($fp)
-	bne	$2,$0,$L97
-	li	$2,0x00000001		# 1
-	sw	$2,44($fp)
-$L97:
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,128($fp)
-	addu	$2,$2,$3
-	l.s	$f0,44($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	l.d	$f2,0($2)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,96($fp)
-	lw	$2,44($fp)
-	subu	$3,$2,1
-	sw	$3,28($fp)
-	dsz	64($fp)
-	sw	$0,16($fp)
-$L98:
-	lw	$2,16($fp)
-	lw	$3,44($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L101
-	j	$L99
-$L101:
-	lw	$2,28($fp)
-	lw	$3,44($fp)
-	div	$2,$2,$3
-	sw	$2,32($fp)
-	lw	$2,28($fp)
-	lw	$3,48($fp)
-	addu	$2,$2,$3
-	lw	$3,44($fp)
-	div	$2,$2,$3
-	lw	$3,32($fp)
-	subu	$2,$2,$3
-	sw	$2,52($fp)
-	lw	$2,52($fp)
-	bne	$2,$0,$L102
-	la	$4,$LC70
-	jal	printf
-	move	$2,$0
-	j	$L86
-$L102:
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,128($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,8
-	l.s	$f0,52($fp)
-	#nop
-	cvt.d.w	$f0,$f0
-	l.d	$f2,0($3)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,56($fp)
-	dsz	72($fp)
-	l.d	$f0,96($fp)
-	l.d	$f2,56($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,$LC71
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,88($fp)
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,124($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	lw	$2,32($fp)
-	addu	$3,$3,$2
-	sw	$3,40($fp)
-	lw	$2,40($fp)
-	lw	$3,52($fp)
-	addu	$2,$2,$3
-	sw	$2,36($fp)
-	lw	$2,40($fp)
-	sw	$2,20($fp)
-$L103:
-	lw	$2,20($fp)
-	lw	$3,36($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L106
-	j	$L104
-$L106:
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,136($fp)
-	addu	$2,$2,$3
-	l.d	$f0,96($fp)
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,136($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,16384
-	l.d	$f0,56($fp)
-	s.d	$f0,0($3)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,132($fp)
-	addu	$2,$2,$3
-	l.d	$f0,64($fp)
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,132($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,16384
-	l.d	$f0,72($fp)
-	s.d	$f0,0($3)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,132($fp)
-	addu	$2,$2,$3
-	li	$3,0x00008000		# 32768
-	addu	$2,$2,$3
-	l.d	$f0,80($fp)
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,140($fp)
-	addu	$2,$2,$3
-	l.d	$f0,88($fp)
-	s.d	$f0,0($2)
-	l.d	$f0,72($fp)
-	l.d	$f2,56($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,72($fp)
-$L105:
-	lw	$3,20($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,20($fp)
-	j	$L103
-$L104:
-	l.d	$f0,64($fp)
-	l.d	$f2,96($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	lw	$2,28($fp)
-	lw	$3,48($fp)
-	addu	$2,$2,$3
-	sw	$2,28($fp)
-$L100:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L98
-$L99:
-$L93:
-	lw	$3,24($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,24($fp)
-	j	$L91
-$L92:
-	li	$2,0x00000001		# 1
-	j	$L86
-$L86:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,108($sp)
-	lw	$fp,104($sp)
-	l.d	$f20,112($sp)
-	addu	$sp,$sp,120
-	j	$31
-	.end	Region
-	.loc	1 590
-	.ent	SetUp1
-SetUp1:
-	.frame	$fp,256,$31		# vars= 232, regs= 2/0, args= 16, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,256
-	sw	$31,252($sp)
-	sw	$fp,248($sp)
-	move	$fp,$sp
-	sw	$4,256($fp)
-	sw	$5,260($fp)
-	sw	$6,264($fp)
-	sw	$7,268($fp)
-	sw	$0,36($fp)
-$L108:
-	lw	$2,36($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L111
-	j	$L109
-$L111:
-	lw	$2,36($fp)
-	addu	$3,$2,3
-	sw	$3,44($fp)
-	lw	$2,44($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,260($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	move	$2,$3
-	sll	$3,$2,3
-	lw	$4,268($fp)
-	addu	$2,$3,$4
-	li	$3,0x00008000		# 32768
-	addu	$2,$2,$3
-	lw	$3,44($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,260($fp)
-	addu	$3,$3,$4
-	lw	$4,0($3)
-	move	$3,$4
-	sll	$4,$3,3
-	lw	$5,268($fp)
-	addu	$3,$4,$5
-	li	$4,0x00008000		# 32768
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,184($fp)
-	l.d	$f0,184($fp)
-	l.d	$f2,184($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,224($fp)
-	lw	$2,36($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,260($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,40($fp)
-$L112:
-	lw	$2,36($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,260($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,40($fp)
-	lw	$3,0($3)
-	slt	$2,$3,$2
-	bne	$2,$0,$L113
-$L115:
-	lw	$2,44($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,260($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,48($fp)
-$L116:
-	lw	$2,44($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,260($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,48($fp)
-	lw	$3,0($3)
-	slt	$2,$3,$2
-	bne	$2,$0,$L117
-$L119:
-	sw	$0,20($fp)
-$L120:
-	lw	$2,20($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L123
-	j	$L121
-$L123:
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,40
-	lw	$4,20($fp)
-	lw	$3,48($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,268($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	lw	$5,20($fp)
-	lw	$4,40($fp)
-	move	$6,$4
-	sll	$4,$6,3
-	sll	$6,$5,14
-	lw	$7,268($fp)
-	addu	$5,$6,$7
-	addu	$4,$4,$5
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,72
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$5,$fp,16
-	addu	$4,$3,$5
-	addu	$3,$4,40
-	lw	$5,20($fp)
-	lw	$4,48($fp)
-	move	$6,$4
-	sll	$4,$6,3
-	sll	$6,$5,14
-	lw	$7,272($fp)
-	addu	$5,$6,$7
-	addu	$4,$4,$5
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,56
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$5,$fp,16
-	addu	$4,$3,$5
-	addu	$3,$4,40
-	lw	$5,20($fp)
-	lw	$4,40($fp)
-	move	$6,$4
-	sll	$4,$6,3
-	sll	$6,$5,14
-	lw	$7,272($fp)
-	addu	$5,$6,$7
-	addu	$4,$4,$5
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,88
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$5,$fp,16
-	addu	$4,$3,$5
-	addu	$3,$4,72
-	lw	$5,20($fp)
-	lw	$4,40($fp)
-	move	$6,$4
-	sll	$4,$6,3
-	sll	$6,$5,14
-	lw	$7,272($fp)
-	addu	$5,$6,$7
-	addu	$4,$4,$5
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,104
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$5,$fp,16
-	addu	$4,$3,$5
-	addu	$3,$4,40
-	lw	$4,20($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,16
-	addu	$4,$4,$5
-	addu	$5,$4,40
-	l.d	$f0,0($3)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,136
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$5,$fp,16
-	addu	$4,$3,$5
-	addu	$3,$4,72
-	lw	$4,20($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,16
-	addu	$4,$4,$5
-	addu	$5,$4,72
-	l.d	$f0,0($3)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,120
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$5,$fp,16
-	addu	$4,$3,$5
-	addu	$3,$4,56
-	lw	$4,20($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,16
-	addu	$4,$4,$5
-	addu	$5,$4,56
-	l.d	$f0,0($3)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,152
-	lw	$3,20($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$5,$fp,16
-	addu	$4,$3,$5
-	addu	$3,$4,88
-	lw	$4,20($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,16
-	addu	$4,$4,$5
-	addu	$5,$4,88
-	l.d	$f0,0($3)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L122:
-	lw	$3,20($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,20($fp)
-	j	$L120
-$L121:
-	dsz	192($fp)
-	sw	$0,28($fp)
-$L124:
-	lw	$2,28($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L127
-	j	$L125
-$L127:
-	sw	$0,16($fp)
-$L128:
-	lw	$2,16($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L131
-	j	$L129
-$L131:
-	lw	$2,16($fp)
-	move	$3,$2
-	sll	$2,$3,4
-	lw	$3,28($fp)
-	move	$4,$3
-	sll	$3,$4,5
-	addu	$2,$2,$3
-	addu	$3,$fp,120
-	addu	$2,$3,$2
-	l.d	$f0,8($2)
-	l.d	$f2,184($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,200($fp)
-	l.d	$f12,200($fp)
-	jal	sqrt
-	s.d	$f0,208($fp)
-	l.d	$f0,$LC72
-	l.d	$f2,208($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,216($fp)
-	dsz	240($fp)
-	sw	$0,24($fp)
-$L132:
-	lw	$2,24($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L135
-	j	$L133
-$L135:
-	sw	$0,32($fp)
-$L136:
-	lw	$2,32($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L139
-	j	$L137
-$L139:
-	lw	$2,32($fp)
-	move	$3,$2
-	sll	$2,$3,4
-	lw	$3,24($fp)
-	move	$4,$3
-	sll	$3,$4,5
-	addu	$2,$2,$3
-	addu	$3,$fp,56
-	addu	$2,$3,$2
-	l.d	$f0,0($2)
-	s.d	$f0,232($fp)
-	l.d	$f0,232($fp)
-	l.d	$f2,216($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	l.d	$f4,232($fp)
-	neg.d	$f2,$f4
-	mul.d	$f0,$f2,$f0
-	l.d	$f2,240($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,240($fp)
-$L138:
-	lw	$3,32($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L136
-$L137:
-	l.d	$f0,240($fp)
-	neg.d	$f2,$f0
-	s.d	$f2,240($fp)
-$L134:
-	lw	$3,24($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,24($fp)
-	j	$L132
-$L133:
-	l.d	$f0,152($fp)
-	l.d	$f2,200($fp)
-	add.d	$f0,$f0,$f2
-	l.d	$f2,136($fp)
-	l.d	$f4,200($fp)
-	add.d	$f2,$f2,$f4
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,120($fp)
-	l.d	$f4,200($fp)
-	add.d	$f2,$f2,$f4
-	l.d	$f4,168($fp)
-	l.d	$f6,200($fp)
-	add.d	$f4,$f4,$f6
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	l.d	$f2,208($fp)
-	l.d	$f4,$LC73
-	mul.d	$f2,$f2,$f4
-	l.d	$f4,240($fp)
-	mul.d	$f2,$f2,$f4
-	l.d	$f4,192($fp)
-	sub.d	$f2,$f2,$f4
-	l.d	$f4,224($fp)
-	mul.d	$f0,$f0,$f4
-	sub.d	$f2,$f2,$f0
-	s.d	$f2,192($fp)
-$L130:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L128
-$L129:
-	l.d	$f0,192($fp)
-	neg.d	$f2,$f0
-	s.d	$f2,192($fp)
-$L126:
-	lw	$3,28($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,28($fp)
-	j	$L124
-$L125:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,28($fp)
-$L140:
-	lw	$2,28($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L143
-	j	$L141
-$L143:
-	sw	$0,16($fp)
-$L144:
-	lw	$2,16($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L147
-	j	$L145
-$L147:
-	lw	$2,16($fp)
-	move	$3,$2
-	sll	$2,$3,4
-	lw	$3,28($fp)
-	move	$4,$3
-	sll	$3,$4,5
-	addu	$2,$2,$3
-	addu	$3,$fp,120
-	addu	$2,$3,$2
-	l.d	$f0,0($2)
-	l.d	$f2,184($fp)
-	add.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	sqrt
-	s.d	$f0,208($fp)
-	l.d	$f0,$LC72
-	l.d	$f2,208($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,216($fp)
-	dsz	240($fp)
-	sw	$0,24($fp)
-$L148:
-	lw	$2,24($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L151
-	j	$L149
-$L151:
-	sw	$0,32($fp)
-$L152:
-	lw	$2,32($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L155
-	j	$L153
-$L155:
-	lw	$2,32($fp)
-	move	$3,$2
-	sll	$2,$3,4
-	lw	$3,24($fp)
-	move	$4,$3
-	sll	$3,$4,5
-	addu	$2,$2,$3
-	addu	$3,$fp,56
-	addu	$2,$3,$2
-	l.d	$f0,8($2)
-	s.d	$f0,232($fp)
-	l.d	$f0,232($fp)
-	l.d	$f2,216($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	l.d	$f4,232($fp)
-	neg.d	$f2,$f4
-	mul.d	$f0,$f2,$f0
-	l.d	$f2,240($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,240($fp)
-$L154:
-	lw	$3,32($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L152
-$L153:
-	l.d	$f0,240($fp)
-	neg.d	$f2,$f0
-	s.d	$f2,240($fp)
-$L150:
-	lw	$3,24($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,24($fp)
-	j	$L148
-$L149:
-	l.d	$f0,208($fp)
-	l.d	$f2,$LC73
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,240($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,192($fp)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,192($fp)
-$L146:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L144
-$L145:
-	l.d	$f0,192($fp)
-	neg.d	$f2,$f0
-	s.d	$f2,192($fp)
-$L142:
-	lw	$3,28($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,28($fp)
-	j	$L140
-$L141:
-	lw	$3,40($fp)
-	lw	$2,48($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,264($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,192($fp)
-	s.d	$f0,0($2)
-	lw	$3,48($fp)
-	lw	$2,40($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,264($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,192($fp)
-	s.d	$f0,0($2)
-$L118:
-	lw	$3,48($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,48($fp)
-	j	$L116
-$L117:
-$L114:
-	lw	$3,40($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,40($fp)
-	j	$L112
-$L113:
-$L110:
-	lw	$3,36($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,36($fp)
-	j	$L108
-$L109:
-$L107:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,252($sp)
-	lw	$fp,248($sp)
-	addu	$sp,$sp,256
-	j	$31
-	.end	SetUp1
-	.loc	1 673
-	.ent	SetUp2
-SetUp2:
-	.frame	$fp,512,$31		# vars= 440, regs= 2/6, args= 16, extra= 0
-	.mask	0xc0000000,-52
-	.fmask	0xfff00000,-4
-	subu	$sp,$sp,512
-	sw	$31,460($sp)
-	sw	$fp,456($sp)
-	s.d	$f30,504($sp)
-	s.d	$f28,496($sp)
-	s.d	$f26,488($sp)
-	s.d	$f24,480($sp)
-	s.d	$f22,472($sp)
-	s.d	$f20,464($sp)
-	move	$fp,$sp
-	sw	$4,512($fp)
-	sw	$5,516($fp)
-	sw	$6,520($fp)
-	sw	$7,524($fp)
-	sw	$0,20($fp)
-$L157:
-	lw	$2,20($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L160
-	j	$L158
-$L160:
-	sw	$0,16($fp)
-$L161:
-	lw	$2,16($fp)
-	slt	$3,$2,2
-	bne	$3,$0,$L164
-	j	$L162
-$L164:
-	lw	$2,20($fp)
-	lw	$4,16($fp)
-	addu	$3,$2,$4
-	addu	$2,$3,1
-	li	$6,0x2aaaaaab		# 715827883
-	mult	$2,$6
-	mfhi	$5
-	mflo	$4
-	srl	$6,$5,0
-	move	$7,$0
-	sra	$4,$2,31
-	subu	$3,$6,$4
-	move	$5,$3
-	sll	$4,$5,1
-	addu	$4,$4,$3
-	sll	$3,$4,1
-	subu	$2,$2,$3
-	sw	$2,28($fp)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,516($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,24($fp)
-$L165:
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,516($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,24($fp)
-	lw	$3,0($3)
-	slt	$2,$3,$2
-	bne	$2,$0,$L166
-$L168:
-	lw	$3,16($fp)
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,524($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$3,28($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,516($fp)
-	addu	$3,$3,$4
-	lw	$4,0($3)
-	move	$3,$4
-	sll	$4,$3,3
-	lw	$5,524($fp)
-	addu	$3,$4,$5
-	li	$4,0x00008000		# 32768
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,216($fp)
-	lw	$3,16($fp)
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,528($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,216($fp)
-	l.d	$f2,0($2)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,224($fp)
-	l.d	$f0,216($fp)
-	l.d	$f2,216($fp)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,216($fp)
-	l.d	$f0,224($fp)
-	l.d	$f2,224($fp)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,224($fp)
-	lw	$2,28($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,516($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,32($fp)
-$L169:
-	lw	$2,28($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,516($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,32($fp)
-	lw	$3,0($3)
-	slt	$2,$3,$2
-	bne	$2,$0,$L170
-$L172:
-	lw	$3,16($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,524($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	li	$3,0x00000001		# 1
-	lw	$5,16($fp)
-	subu	$4,$3,$5
-	lw	$3,24($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,524($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,56($fp)
-	lw	$3,16($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,528($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,56($fp)
-	l.d	$f2,0($2)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,64($fp)
-	li	$2,0x00000001		# 1
-	lw	$4,16($fp)
-	subu	$3,$2,$4
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,528($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,56($fp)
-	l.d	$f2,0($2)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,72($fp)
-	li	$2,0x00000001		# 1
-	lw	$4,16($fp)
-	subu	$3,$2,$4
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,528($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,64($fp)
-	l.d	$f2,0($2)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,80($fp)
-	l.d	$f0,56($fp)
-	l.d	$f2,56($fp)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,88($fp)
-	l.d	$f0,64($fp)
-	l.d	$f2,64($fp)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,96($fp)
-	l.d	$f0,72($fp)
-	l.d	$f2,72($fp)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,104($fp)
-	l.d	$f0,80($fp)
-	l.d	$f2,80($fp)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,112($fp)
-	li	$2,0x00000001		# 1
-	lw	$4,16($fp)
-	subu	$3,$2,$4
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,524($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$3,24($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	lw	$4,524($fp)
-	addu	$3,$3,$4
-	li	$4,0x00008000		# 32768
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	sub.d	$f0,$f0,$f2
-	s.d	$f0,232($fp)
-	li	$2,0x00000001		# 1
-	lw	$4,16($fp)
-	subu	$3,$2,$4
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,528($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,232($fp)
-	l.d	$f2,0($2)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,240($fp)
-	l.d	$f0,232($fp)
-	l.d	$f2,232($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,$LC74
-	add.d	$f0,$f0,$f2
-	s.d	$f0,232($fp)
-	l.d	$f0,240($fp)
-	l.d	$f2,240($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,$LC74
-	add.d	$f0,$f0,$f2
-	s.d	$f0,240($fp)
-	l.d	$f0,216($fp)
-	l.d	$f2,232($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,152($fp)
-	l.d	$f0,216($fp)
-	l.d	$f2,240($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,160($fp)
-	l.d	$f0,224($fp)
-	l.d	$f2,232($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,168($fp)
-	l.d	$f0,224($fp)
-	l.d	$f2,240($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,176($fp)
-	l.d	$f12,152($fp)
-	jal	sqrt
-	s.d	$f0,120($fp)
-	l.d	$f12,160($fp)
-	jal	sqrt
-	s.d	$f0,128($fp)
-	l.d	$f12,168($fp)
-	jal	sqrt
-	s.d	$f0,136($fp)
-	l.d	$f12,176($fp)
-	jal	sqrt
-	s.d	$f0,144($fp)
-	l.d	$f0,$LC75
-	l.d	$f2,120($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,184($fp)
-	l.d	$f0,$LC75
-	l.d	$f2,128($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,192($fp)
-	l.d	$f0,$LC75
-	l.d	$f2,136($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,200($fp)
-	l.d	$f0,$LC75
-	l.d	$f2,144($fp)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,208($fp)
-	l.d	$f0,56($fp)
-	l.d	$f2,184($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	mov.d	$f20,$f0
-	l.d	$f0,64($fp)
-	l.d	$f2,184($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	mov.d	$f22,$f0
-	l.d	$f0,72($fp)
-	l.d	$f2,184($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	mov.d	$f24,$f0
-	l.d	$f0,80($fp)
-	l.d	$f2,184($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	mov.d	$f26,$f0
-	l.d	$f0,56($fp)
-	l.d	$f2,192($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	mov.d	$f28,$f0
-	l.d	$f0,64($fp)
-	l.d	$f2,192($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	mov.d	$f30,$f0
-	l.d	$f0,72($fp)
-	l.d	$f2,192($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,376($fp)
-	l.d	$f0,80($fp)
-	l.d	$f2,192($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,384($fp)
-	l.d	$f0,56($fp)
-	l.d	$f2,200($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,392($fp)
-	l.d	$f0,64($fp)
-	l.d	$f2,200($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,400($fp)
-	l.d	$f0,72($fp)
-	l.d	$f2,200($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,408($fp)
-	l.d	$f0,80($fp)
-	l.d	$f2,200($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,416($fp)
-	l.d	$f0,56($fp)
-	l.d	$f2,208($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,424($fp)
-	l.d	$f0,64($fp)
-	l.d	$f2,208($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,432($fp)
-	l.d	$f0,72($fp)
-	l.d	$f2,208($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	s.d	$f0,440($fp)
-	l.d	$f0,80($fp)
-	l.d	$f2,208($fp)
-	mul.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	atan
-	l.d	$f4,56($fp)
-	mul.d	$f2,$f20,$f4
-	l.d	$f6,64($fp)
-	mul.d	$f4,$f22,$f6
-	sub.d	$f2,$f2,$f4
-	l.d	$f6,72($fp)
-	mul.d	$f4,$f24,$f6
-	sub.d	$f2,$f2,$f4
-	l.d	$f6,80($fp)
-	mul.d	$f4,$f26,$f6
-	add.d	$f2,$f2,$f4
-	l.d	$f4,120($fp)
-	mul.d	$f2,$f2,$f4
-	l.d	$f4,56($fp)
-	neg.d	$f6,$f4
-	mul.d	$f4,$f6,$f28
-	l.d	$f8,64($fp)
-	mul.d	$f6,$f30,$f8
-	add.d	$f4,$f4,$f6
-	l.d	$f8,72($fp)
-	l.d	$f10,376($fp)
-	mul.d	$f6,$f10,$f8
-	add.d	$f4,$f4,$f6
-	l.d	$f8,80($fp)
-	l.d	$f10,384($fp)
-	mul.d	$f6,$f10,$f8
-	sub.d	$f4,$f4,$f6
-	l.d	$f6,128($fp)
-	mul.d	$f4,$f4,$f6
-	add.d	$f2,$f2,$f4
-	l.d	$f4,56($fp)
-	neg.d	$f6,$f4
-	l.d	$f10,392($fp)
-	mul.d	$f4,$f6,$f10
-	l.d	$f8,64($fp)
-	l.d	$f10,400($fp)
-	mul.d	$f6,$f10,$f8
-	add.d	$f4,$f4,$f6
-	l.d	$f8,72($fp)
-	l.d	$f10,408($fp)
-	mul.d	$f6,$f10,$f8
-	add.d	$f4,$f4,$f6
-	l.d	$f8,80($fp)
-	l.d	$f10,416($fp)
-	mul.d	$f6,$f10,$f8
-	sub.d	$f4,$f4,$f6
-	l.d	$f6,136($fp)
-	mul.d	$f4,$f4,$f6
-	add.d	$f2,$f2,$f4
-	l.d	$f6,56($fp)
-	l.d	$f10,424($fp)
-	mul.d	$f4,$f10,$f6
-	l.d	$f8,64($fp)
-	l.d	$f10,432($fp)
-	mul.d	$f6,$f10,$f8
-	sub.d	$f4,$f4,$f6
-	l.d	$f8,72($fp)
-	l.d	$f10,440($fp)
-	mul.d	$f6,$f10,$f8
-	sub.d	$f4,$f4,$f6
-	l.d	$f6,80($fp)
-	mul.d	$f0,$f0,$f6
-	add.d	$f4,$f4,$f0
-	l.d	$f6,144($fp)
-	mul.d	$f0,$f4,$f6
-	add.d	$f2,$f2,$f0
-	s.d	$f2,48($fp)
-	l.d	$f0,88($fp)
-	l.d	$f2,152($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,248($fp)
-	l.d	$f0,96($fp)
-	l.d	$f2,152($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,256($fp)
-	l.d	$f0,104($fp)
-	l.d	$f2,152($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,264($fp)
-	l.d	$f0,112($fp)
-	l.d	$f2,152($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,272($fp)
-	l.d	$f0,88($fp)
-	l.d	$f2,160($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,280($fp)
-	l.d	$f0,96($fp)
-	l.d	$f2,160($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,288($fp)
-	l.d	$f0,104($fp)
-	l.d	$f2,160($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,296($fp)
-	l.d	$f0,112($fp)
-	l.d	$f2,160($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,304($fp)
-	l.d	$f0,88($fp)
-	l.d	$f2,168($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,312($fp)
-	l.d	$f0,96($fp)
-	l.d	$f2,168($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,320($fp)
-	l.d	$f0,104($fp)
-	l.d	$f2,168($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,328($fp)
-	l.d	$f0,112($fp)
-	l.d	$f2,168($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,336($fp)
-	l.d	$f0,88($fp)
-	l.d	$f2,176($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,344($fp)
-	l.d	$f0,96($fp)
-	l.d	$f2,176($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,352($fp)
-	l.d	$f0,104($fp)
-	l.d	$f2,176($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,360($fp)
-	l.d	$f0,112($fp)
-	l.d	$f2,176($fp)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,368($fp)
-	l.d	$f0,248($fp)
-	l.d	$f2,344($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,280($fp)
-	l.d	$f4,312($fp)
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	mov.d	$f20,$f0
-	l.d	$f0,256($fp)
-	l.d	$f2,352($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,288($fp)
-	l.d	$f4,320($fp)
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	mov.d	$f22,$f0
-	l.d	$f0,264($fp)
-	l.d	$f2,360($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,296($fp)
-	l.d	$f4,328($fp)
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	mov.d	$f24,$f0
-	l.d	$f0,272($fp)
-	l.d	$f2,368($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,304($fp)
-	l.d	$f4,336($fp)
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	mov.d	$f26,$f0
-	l.d	$f0,248($fp)
-	l.d	$f2,272($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,256($fp)
-	l.d	$f4,264($fp)
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	mov.d	$f28,$f0
-	l.d	$f0,280($fp)
-	l.d	$f2,304($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,288($fp)
-	l.d	$f4,296($fp)
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	mov.d	$f30,$f0
-	l.d	$f0,312($fp)
-	l.d	$f2,336($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,320($fp)
-	l.d	$f4,328($fp)
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	s.d	$f0,448($fp)
-	l.d	$f0,344($fp)
-	l.d	$f2,368($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,352($fp)
-	l.d	$f4,360($fp)
-	mul.d	$f2,$f2,$f4
-	div.d	$f0,$f0,$f2
-	mov.d	$f12,$f0
-	jal	log
-	l.d	$f4,88($fp)
-	mul.d	$f2,$f20,$f4
-	l.d	$f6,96($fp)
-	mul.d	$f4,$f22,$f6
-	sub.d	$f2,$f2,$f4
-	l.d	$f6,104($fp)
-	mul.d	$f4,$f24,$f6
-	sub.d	$f2,$f2,$f4
-	l.d	$f6,112($fp)
-	mul.d	$f4,$f26,$f6
-	add.d	$f2,$f2,$f4
-	l.d	$f6,152($fp)
-	mul.d	$f4,$f28,$f6
-	sub.d	$f2,$f2,$f4
-	l.d	$f6,160($fp)
-	mul.d	$f4,$f30,$f6
-	add.d	$f2,$f2,$f4
-	l.d	$f6,168($fp)
-	l.d	$f10,448($fp)
-	mul.d	$f4,$f10,$f6
-	add.d	$f2,$f2,$f4
-	l.d	$f4,176($fp)
-	mul.d	$f0,$f0,$f4
-	sub.d	$f2,$f2,$f0
-	s.d	$f2,40($fp)
-	lw	$3,24($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,520($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,48($fp)
-	l.d	$f2,$LC76
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,40($fp)
-	add.d	$f0,$f0,$f2
-	abs.d	$f2,$f0
-	s.d	$f2,0($2)
-	lw	$3,32($fp)
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,520($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,24($fp)
-	lw	$3,32($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,520($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-$L171:
-	lw	$3,32($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L169
-$L170:
-$L167:
-	lw	$3,24($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,24($fp)
-	j	$L165
-$L166:
-$L163:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L161
-$L162:
-$L159:
-	lw	$3,20($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,20($fp)
-	j	$L157
-$L158:
-$L156:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,460($sp)
-	lw	$fp,456($sp)
-	l.d	$f30,504($sp)
-	l.d	$f28,496($sp)
-	l.d	$f26,488($sp)
-	l.d	$f24,480($sp)
-	l.d	$f22,472($sp)
-	l.d	$f20,464($sp)
-	addu	$sp,$sp,512
-	j	$31
-	.end	SetUp2
-	.loc	1 787
-	.ent	SetUp3
-SetUp3:
-	.frame	$fp,96,$31		# vars= 72, regs= 2/0, args= 16, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,96
-	sw	$31,92($sp)
-	sw	$fp,88($sp)
-	move	$fp,$sp
-	sw	$4,96($fp)
-	sw	$5,100($fp)
-	sw	$6,104($fp)
-	sw	$7,108($fp)
-	sw	$0,20($fp)
-$L174:
-	lw	$2,20($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L177
-	j	$L175
-$L177:
-	sw	$0,16($fp)
-$L178:
-	lw	$2,16($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L181
-	j	$L179
-$L181:
-	lw	$2,16($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,24
-	lw	$4,20($fp)
-	lw	$3,16($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	move	$6,$4
-	sll	$5,$6,1
-	addu	$5,$5,$4
-	sll	$4,$5,3
-	lw	$5,108($fp)
-	addu	$4,$4,$5
-	addu	$3,$3,$4
-	l.d	$f0,$LC77
-	l.d	$f2,0($3)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$2,16($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	addu	$4,$fp,16
-	addu	$3,$2,$4
-	addu	$2,$3,48
-	lw	$4,20($fp)
-	lw	$3,16($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	move	$6,$4
-	sll	$5,$6,1
-	addu	$5,$5,$4
-	sll	$4,$5,3
-	lw	$5,112($fp)
-	addu	$4,$4,$5
-	addu	$3,$3,$4
-	lw	$4,16($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$fp,16
-	addu	$4,$4,$5
-	addu	$5,$4,24
-	l.d	$f0,0($3)
-	l.d	$f2,0($5)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L180:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L178
-$L179:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,100($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,24($fp)
-$L182:
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,100($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,24($fp)
-	lw	$3,0($3)
-	slt	$2,$3,$2
-	bne	$2,$0,$L183
-$L185:
-	dsz	32($fp)
-	sw	$0,28($fp)
-$L186:
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,100($fp)
-	addu	$2,$2,$3
-	lw	$3,28($fp)
-	lw	$2,0($2)
-	slt	$3,$3,$2
-	bne	$3,$0,$L189
-	j	$L187
-$L189:
-	lw	$3,24($fp)
-	lw	$2,28($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,116($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,32($fp)
-	l.d	$f2,0($2)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,32($fp)
-$L188:
-	lw	$3,28($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,28($fp)
-	j	$L186
-$L187:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,100($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,0($3)
-	addu	$3,$2,1
-	sw	$3,28($fp)
-$L190:
-	lw	$2,28($fp)
-	lw	$3,96($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L193
-	j	$L191
-$L193:
-	lw	$3,24($fp)
-	lw	$2,28($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,116($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,32($fp)
-	l.d	$f2,0($2)
-	add.d	$f0,$f0,$f2
-	s.d	$f0,32($fp)
-$L192:
-	lw	$3,28($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,28($fp)
-	j	$L190
-$L191:
-	lw	$2,24($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,104($fp)
-	addu	$2,$2,$3
-	l.d	$f0,32($fp)
-	l.d	$f4,0($2)
-	sub.d	$f2,$f0,$f4
-	abs.d	$f0,$f2
-	l.d	$f2,32($fp)
-	l.d	$f4,$LC78
-	mul.d	$f2,$f2,$f4
-	c.lt.d	$f2,$f0
-	bc1f	$L194
-	la	$4,$LC79
-	jal	printf
-	move	$2,$0
-	j	$L173
-$L194:
-	l.d	$f0,32($fp)
-	neg.d	$f2,$f0
-	s.d	$f2,32($fp)
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,100($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,28($fp)
-$L195:
-	lw	$2,20($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,100($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,28($fp)
-	lw	$3,0($3)
-	slt	$2,$3,$2
-	bne	$2,$0,$L196
-$L198:
-	lw	$3,24($fp)
-	lw	$2,28($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,116($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	dsz	0($2)
-$L197:
-	lw	$3,28($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,28($fp)
-	j	$L195
-$L196:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,16($fp)
-$L199:
-	lw	$2,16($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L202
-	j	$L200
-$L202:
-	lw	$3,16($fp)
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,120($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$3,16($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$fp,16
-	addu	$3,$3,$4
-	addu	$4,$3,24
-	l.d	$f0,0($4)
-	l.d	$f2,32($fp)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$3,16($fp)
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,124($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$3,16($fp)
-	move	$4,$3
-	sll	$3,$4,3
-	addu	$4,$fp,16
-	addu	$3,$3,$4
-	addu	$4,$3,48
-	l.d	$f0,0($4)
-	l.d	$f2,32($fp)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L201:
-	lw	$3,16($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,16($fp)
-	j	$L199
-$L200:
-$L184:
-	lw	$3,24($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,24($fp)
-	j	$L182
-$L183:
-$L176:
-	lw	$3,20($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,20($fp)
-	j	$L174
-$L175:
-	li	$2,0x00000001		# 1
-	j	$L173
-$L173:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,92($sp)
-	lw	$fp,88($sp)
-	addu	$sp,$sp,96
-	j	$31
-	.end	SetUp3
-	.loc	1 855
-	.ent	Solver
-Solver:
-	.frame	$fp,56,$31		# vars= 24, regs= 2/0, args= 24, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,56
-	sw	$31,52($sp)
-	sw	$fp,48($sp)
-	move	$fp,$sp
-	sw	$4,56($fp)
-	sw	$5,60($fp)
-	sw	$6,64($fp)
-	sw	$7,68($fp)
-	sw	$0,36($fp)
-$L204:
-	lw	$2,36($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L207
-	j	$L205
-$L207:
-	lw	$2,60($fp)
-	sw	$2,24($fp)
-$L208:
-	lw	$2,24($fp)
-	lw	$3,56($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L211
-	j	$L209
-$L211:
-	lw	$3,24($fp)
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,36($fp)
-	lw	$3,24($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,68($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	lw	$3,36($fp)
-	lw	$2,24($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,36($fp)
-	lw	$3,24($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,72($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	sw	$0,28($fp)
-$L212:
-	lw	$2,28($fp)
-	lw	$3,24($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L215
-	j	$L213
-$L215:
-	lw	$3,24($fp)
-	lw	$2,28($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,28($fp)
-	lw	$3,24($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,64($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-$L214:
-	lw	$3,28($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,28($fp)
-	j	$L212
-$L213:
-$L210:
-	lw	$3,24($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,24($fp)
-	j	$L208
-$L209:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,28($fp)
-$L216:
-	lw	$2,28($fp)
-	lw	$3,60($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L219
-	j	$L217
-$L219:
-	lw	$3,28($fp)
-	lw	$2,28($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,36($fp)
-	lw	$3,28($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,68($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,$LC80
-	l.d	$f2,0($3)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$3,36($fp)
-	lw	$2,28($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,36($fp)
-	lw	$3,28($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,72($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-$L218:
-	lw	$3,28($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,28($fp)
-	j	$L216
-$L217:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,60($fp)
-	sw	$2,28($fp)
-$L220:
-	lw	$2,28($fp)
-	lw	$3,56($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L223
-	j	$L221
-$L223:
-	lw	$2,60($fp)
-	sw	$2,32($fp)
-$L224:
-	lw	$2,32($fp)
-	lw	$3,28($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L227
-	j	$L225
-$L227:
-	lw	$2,32($fp)
-	move	$3,$2
-	sll	$2,$3,14
-	lw	$3,64($fp)
-	addu	$2,$2,$3
-	lw	$3,28($fp)
-	move	$4,$3
-	sll	$3,$4,14
-	lw	$4,64($fp)
-	addu	$3,$3,$4
-	li	$4,0x00000001		# 1
-	sw	$4,16($sp)
-	lw	$4,32($fp)
-	move	$5,$2
-	li	$6,0x00000001		# 1
-	move	$7,$3
-	jal	Ddot
-	lw	$3,28($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,28($fp)
-	lw	$3,32($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,64($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f2,0($3)
-	sub.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-$L226:
-	lw	$3,32($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L224
-$L225:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,32($fp)
-$L228:
-	lw	$2,32($fp)
-	lw	$3,28($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L231
-	j	$L229
-$L231:
-	lw	$3,28($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	s.d	$f0,40($fp)
-	lw	$3,28($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,32($fp)
-	lw	$3,32($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,64($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,40($fp)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-	lw	$3,28($fp)
-	lw	$2,28($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,28($fp)
-	lw	$3,28($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,64($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	lw	$5,28($fp)
-	lw	$4,32($fp)
-	move	$6,$4
-	sll	$4,$6,3
-	sll	$6,$5,14
-	lw	$7,64($fp)
-	addu	$5,$6,$7
-	addu	$4,$4,$5
-	l.d	$f0,40($fp)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,0($3)
-	sub.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-$L230:
-	lw	$3,32($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L228
-$L229:
-	lw	$3,28($fp)
-	lw	$2,28($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,64($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,28($fp)
-	lw	$3,28($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,64($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,$LC80
-	l.d	$f2,0($3)
-	div.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L222:
-	lw	$3,28($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,28($fp)
-	j	$L220
-$L221:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,60($fp)
-	sw	$2,32($fp)
-$L232:
-	lw	$2,32($fp)
-	lw	$3,56($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L235
-	j	$L233
-$L235:
-	lw	$2,36($fp)
-	move	$3,$2
-	sll	$2,$3,14
-	lw	$3,76($fp)
-	addu	$2,$2,$3
-	lw	$3,32($fp)
-	move	$4,$3
-	sll	$3,$4,14
-	lw	$4,64($fp)
-	addu	$3,$3,$4
-	li	$4,0x00000001		# 1
-	sw	$4,16($sp)
-	lw	$4,32($fp)
-	move	$5,$2
-	li	$6,0x00000001		# 1
-	move	$7,$3
-	jal	Ddot
-	lw	$3,36($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,36($fp)
-	lw	$3,32($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,76($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f2,0($3)
-	sub.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-$L234:
-	lw	$3,32($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L232
-$L233:
-	.set	noreorder
-	nop
-	.set	reorder
-	sw	$0,32($fp)
-$L236:
-	lw	$2,32($fp)
-	lw	$3,56($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L239
-	j	$L237
-$L239:
-	lw	$3,36($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,36($fp)
-	lw	$3,32($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,76($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	lw	$5,32($fp)
-	lw	$4,32($fp)
-	move	$6,$4
-	sll	$4,$6,3
-	sll	$6,$5,14
-	lw	$7,64($fp)
-	addu	$5,$6,$7
-	addu	$4,$4,$5
-	l.d	$f0,0($3)
-	l.d	$f2,0($4)
-	mul.d	$f0,$f0,$f2
-	s.d	$f0,0($2)
-$L238:
-	lw	$3,32($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L236
-$L237:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,56($fp)
-	subu	$3,$2,2
-	sw	$3,32($fp)
-$L240:
-	lw	$2,32($fp)
-	lw	$3,60($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L241
-$L243:
-	lw	$3,56($fp)
-	subu	$2,$3,1
-	lw	$3,32($fp)
-	subu	$2,$2,$3
-	lw	$3,36($fp)
-	move	$4,$3
-	sll	$3,$4,14
-	lw	$4,76($fp)
-	addu	$3,$3,$4
-	lw	$4,32($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$5,$4,8
-	addu	$3,$3,$5
-	lw	$4,32($fp)
-	move	$5,$4
-	sll	$4,$5,14
-	addu	$5,$4,16384
-	lw	$6,64($fp)
-	addu	$4,$5,$6
-	lw	$5,32($fp)
-	move	$6,$5
-	sll	$5,$6,3
-	addu	$7,$4,$5
-	li	$4,0x00000800		# 2048
-	sw	$4,16($sp)
-	move	$4,$2
-	move	$5,$3
-	li	$6,0x00000001		# 1
-	jal	Ddot
-	lw	$3,36($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,36($fp)
-	lw	$3,32($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,76($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f2,0($3)
-	sub.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-$L242:
-	lw	$3,32($fp)
-	subu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L240
-$L241:
-	.set	noreorder
-	nop
-	.set	reorder
-	lw	$2,60($fp)
-	subu	$3,$2,1
-	sw	$3,32($fp)
-$L244:
-	lw	$2,32($fp)
-	bgez	$2,$L247
-	j	$L245
-$L247:
-	lw	$2,56($fp)
-	lw	$3,60($fp)
-	subu	$2,$2,$3
-	lw	$3,36($fp)
-	move	$4,$3
-	sll	$3,$4,14
-	lw	$4,76($fp)
-	addu	$3,$3,$4
-	lw	$4,60($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	addu	$3,$3,$4
-	lw	$4,60($fp)
-	move	$5,$4
-	sll	$4,$5,14
-	lw	$5,64($fp)
-	addu	$4,$4,$5
-	lw	$5,32($fp)
-	move	$6,$5
-	sll	$5,$6,3
-	addu	$7,$4,$5
-	li	$4,0x00000800		# 2048
-	sw	$4,16($sp)
-	move	$4,$2
-	move	$5,$3
-	li	$6,0x00000001		# 1
-	jal	Ddot
-	lw	$3,36($fp)
-	lw	$2,32($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,36($fp)
-	lw	$3,32($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,76($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f2,0($3)
-	sub.d	$f0,$f2,$f0
-	s.d	$f0,0($2)
-$L246:
-	lw	$3,32($fp)
-	subu	$2,$3,1
-	move	$3,$2
-	sw	$3,32($fp)
-	j	$L244
-$L245:
-$L206:
-	lw	$3,36($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,36($fp)
-	j	$L204
-$L205:
-$L203:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,52($sp)
-	lw	$fp,48($sp)
-	addu	$sp,$sp,56
-	j	$31
-	.end	Solver
-	.loc	1 919
-	.ent	Storer
-Storer:
-	.frame	$fp,80,$31		# vars= 16, regs= 2/0, args= 56, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,80
-	sw	$31,76($sp)
-	sw	$fp,72($sp)
-	move	$fp,$sp
-	sw	$4,80($fp)
-	sw	$5,84($fp)
-	sw	$6,88($fp)
-	sw	$7,92($fp)
-	la	$4,$LC32
-	la	$5,$LC81
-	jal	fopen
-	sw	$2,68($fp)
-	lw	$2,68($fp)
-	bne	$2,$0,$L249
-	la	$4,$LC82
-	jal	printf
-	li	$4,0x00000001		# 1
-	jal	exit
-$L249:
-	lw	$4,68($fp)
-	la	$5,$LC50
-	lw	$6,80($fp)
-	jal	fprintf
-	lw	$4,68($fp)
-	la	$5,$LC83
-	jal	fprintf
-	sw	$0,60($fp)
-$L250:
-	lw	$2,60($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L253
-	j	$L251
-$L253:
-	lw	$2,60($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,84($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,64($fp)
-$L254:
-	lw	$2,60($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,84($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,64($fp)
-	lw	$3,0($3)
-	slt	$2,$3,$2
-	bne	$2,$0,$L255
-$L257:
-	lw	$3,64($fp)
-	addu	$2,$3,1
-	lw	$4,60($fp)
-	addu	$3,$4,1
-	lw	$4,64($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,88($fp)
-	addu	$4,$4,$5
-	l.d	$f0,0($4)
-	s.d	$f0,16($sp)
-	lw	$4,64($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,88($fp)
-	addu	$4,$4,$5
-	addu	$5,$4,16384
-	l.d	$f0,0($5)
-	s.d	$f0,24($sp)
-	lw	$4,64($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,88($fp)
-	addu	$4,$4,$5
-	li	$5,0x00008000		# 32768
-	addu	$4,$4,$5
-	l.d	$f0,0($4)
-	s.d	$f0,32($sp)
-	lw	$4,64($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,92($fp)
-	addu	$4,$4,$5
-	l.d	$f0,0($4)
-	s.d	$f0,40($sp)
-	lw	$4,64($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,92($fp)
-	addu	$4,$4,$5
-	addu	$5,$4,16384
-	l.d	$f0,0($5)
-	s.d	$f0,48($sp)
-	lw	$4,68($fp)
-	la	$5,$LC84
-	move	$6,$2
-	move	$7,$3
-	jal	fprintf
-$L256:
-	lw	$3,64($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,64($fp)
-	j	$L254
-$L255:
-$L252:
-	lw	$3,60($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,60($fp)
-	j	$L250
-$L251:
-	lw	$4,68($fp)
-	la	$5,$LC85
-	jal	fprintf
-	sw	$0,60($fp)
-$L258:
-	lw	$2,60($fp)
-	slt	$3,$2,6
-	bne	$3,$0,$L261
-	j	$L259
-$L261:
-	lw	$2,60($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,84($fp)
-	addu	$2,$2,$3
-	lw	$3,0($2)
-	sw	$3,64($fp)
-$L262:
-	lw	$2,60($fp)
-	move	$3,$2
-	sll	$2,$3,3
-	lw	$3,84($fp)
-	addu	$2,$2,$3
-	addu	$3,$2,4
-	lw	$2,64($fp)
-	lw	$3,0($3)
-	slt	$2,$3,$2
-	bne	$2,$0,$L263
-$L265:
-	lw	$3,64($fp)
-	addu	$2,$3,1
-	lw	$4,60($fp)
-	addu	$3,$4,1
-	lw	$4,64($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,96($fp)
-	addu	$4,$4,$5
-	l.d	$f0,0($4)
-	s.d	$f0,16($sp)
-	lw	$4,64($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,96($fp)
-	addu	$4,$4,$5
-	addu	$5,$4,16384
-	l.d	$f0,0($5)
-	s.d	$f0,24($sp)
-	lw	$4,64($fp)
-	move	$5,$4
-	sll	$4,$5,3
-	lw	$5,96($fp)
-	addu	$4,$4,$5
-	li	$5,0x00008000		# 32768
-	addu	$4,$4,$5
-	l.d	$f0,0($4)
-	s.d	$f0,32($sp)
-	lw	$4,68($fp)
-	la	$5,$LC86
-	move	$6,$2
-	move	$7,$3
-	jal	fprintf
-$L264:
-	lw	$3,64($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,64($fp)
-	j	$L262
-$L263:
-$L260:
-	lw	$3,60($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,60($fp)
-	j	$L258
-$L259:
-	lw	$4,68($fp)
-	jal	fclose
-$L248:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,76($sp)
-	lw	$fp,72($sp)
-	addu	$sp,$sp,80
-	j	$31
-	.end	Storer
-	.loc	1 972
-	.ent	Verify
-Verify:
-	.frame	$fp,72,$31		# vars= 48, regs= 2/0, args= 16, extra= 0
-	.mask	0xc0000000,-4
-	.fmask	0x00000000,0
-	subu	$sp,$sp,72
-	sw	$31,68($sp)
-	sw	$fp,64($sp)
-	move	$fp,$sp
-	sw	$4,72($fp)
-	sw	$5,76($fp)
-	sw	$6,80($fp)
-	sw	$7,84($fp)
-	dsz	16($fp)
-	sw	$0,56($fp)
-$L267:
-	lw	$2,56($fp)
-	slt	$3,$2,3
-	bne	$3,$0,$L270
-	j	$L268
-$L270:
-	sw	$0,48($fp)
-$L271:
-	lw	$2,48($fp)
-	lw	$3,72($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L274
-	j	$L272
-$L274:
-	lw	$3,48($fp)
-	lw	$2,48($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,56($fp)
-	lw	$3,48($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,80($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-	sw	$0,52($fp)
-$L275:
-	lw	$2,52($fp)
-	lw	$3,48($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L278
-	j	$L276
-$L278:
-	lw	$3,48($fp)
-	lw	$2,52($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,52($fp)
-	lw	$3,48($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,76($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($3)
-	s.d	$f0,0($2)
-$L277:
-	lw	$3,52($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,52($fp)
-	j	$L275
-$L276:
-$L273:
-	lw	$3,48($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,48($fp)
-	j	$L271
-$L272:
-	mtc1	$0,$f0
-	mtc1	$0,$f1
-	s.d	$f0,40($fp)
-	s.d	$f0,32($fp)
-	sw	$0,52($fp)
-$L279:
-	lw	$2,52($fp)
-	lw	$3,72($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L282
-	j	$L280
-$L282:
-	lw	$3,56($fp)
-	lw	$2,52($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,84($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f0,0($2)
-	s.d	$f0,24($fp)
-	sw	$0,48($fp)
-$L283:
-	lw	$2,48($fp)
-	lw	$3,72($fp)
-	slt	$2,$2,$3
-	bne	$2,$0,$L286
-	j	$L284
-$L286:
-	lw	$3,52($fp)
-	lw	$2,48($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	lw	$4,56($fp)
-	lw	$3,48($fp)
-	move	$5,$3
-	sll	$3,$5,3
-	sll	$5,$4,14
-	lw	$6,88($fp)
-	addu	$4,$5,$6
-	addu	$3,$3,$4
-	l.d	$f0,0($2)
-	l.d	$f2,0($3)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,24($fp)
-	sub.d	$f0,$f2,$f0
-	s.d	$f0,24($fp)
-	lw	$3,52($fp)
-	lw	$2,48($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-	l.d	$f2,32($fp)
-	c.lt.d	$f0,$f2
-	bc1f	$L287
-	l.d	$f0,32($fp)
-	j	$L288
-$L287:
-	lw	$3,52($fp)
-	lw	$2,48($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,76($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-$L288:
-	s.d	$f0,32($fp)
-$L285:
-	lw	$3,48($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,48($fp)
-	j	$L283
-$L284:
-	lw	$3,56($fp)
-	lw	$2,52($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,88($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-	l.d	$f2,40($fp)
-	c.lt.d	$f0,$f2
-	bc1f	$L289
-	l.d	$f0,40($fp)
-	j	$L290
-$L289:
-	lw	$3,56($fp)
-	lw	$2,52($fp)
-	move	$4,$2
-	sll	$2,$4,3
-	sll	$4,$3,14
-	lw	$5,88($fp)
-	addu	$3,$4,$5
-	addu	$2,$2,$3
-	l.d	$f2,0($2)
-	abs.d	$f0,$f2
-$L290:
-	s.d	$f0,40($fp)
-	l.d	$f2,24($fp)
-	abs.d	$f0,$f2
-	l.d	$f2,16($fp)
-	add.d	$f0,$f2,$f0
-	s.d	$f0,16($fp)
-$L281:
-	lw	$3,52($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,52($fp)
-	j	$L279
-$L280:
-$L269:
-	lw	$3,56($fp)
-	addu	$2,$3,1
-	move	$3,$2
-	sw	$3,56($fp)
-	j	$L267
-$L268:
-	l.d	$f0,32($fp)
-	l.d	$f2,40($fp)
-	mul.d	$f0,$f0,$f2
-	l.d	$f2,16($fp)
-	div.d	$f0,$f2,$f0
-	s.d	$f0,16($fp)
-	l.d	$f0,16($fp)
-	l.d	$f2,$LC87
-	c.lt.d	$f2,$f0
-	bc1f	$L291
-	la	$4,$LC88
-	dlw	$6,16($fp)
-	jal	printf
-	move	$2,$0
-	j	$L266
-$L291:
-	li	$2,0x00000001		# 1
-	j	$L266
-$L266:
-	move	$sp,$fp			# sp not trusted here
-	lw	$31,68($sp)
-	lw	$fp,64($sp)
-	addu	$sp,$sp,72
-	j	$31
-	.end	Verify
-	.loc	1 1120
-	.ent	Ddot
-Ddot:
-	.frame	$fp,8,$31		# vars= 0, regs= 1/0, args= 0, extra= 0
-	.mask	0x40000000,-8
-	.fmask	0x00000000,0
-	subu	$sp,$sp,8
-	sw	$fp,0($sp)
-	move	$fp,$sp
-	move	$2,$6
-	move	$6,$7
-	lw	$3,24($fp)
-	mtc1	$0,$f2
-	mtc1	$0,$f3
-$L293:
-	subu	$4,$4,1
-	li	$7,-1				# 0xffffffff
-	bne	$4,$7,$L295
-	j	$L294
-$L295:
-	l.d	$f0,0($5)
-	l.d	$f4,0($6)
-	mul.d	$f0,$f0,$f4
-	add.d	$f2,$f2,$f0
-	move	$7,$2
-	sll	$8,$7,3
-	addu	$5,$5,$8
-	move	$7,$3
-	sll	$8,$7,3
-	addu	$6,$6,$8
-	j	$L293
-$L294:
-	mov.d	$f0,$f2
-	j	$L292
-$L292:
-	move	$sp,$fp			# sp not trusted here
-	lw	$fp,0($sp)
-	addu	$sp,$sp,8
-	j	$31
-	.end	Ddot

+ 34 - 10
report/report.tex

@@ -120,13 +120,27 @@ We now add the instruction above the first use, and write the result in a new
 variable. Then all occurrences of this expression can be replaced by a move of
 from new variable into the original destination variable of the instruction.
 
-This is a less efficient method then the dag, but because the basic blocks are
+This is a less efficient method then the DAG, but because the basic blocks are
 in general not very large and the execution time of the optimizer is not a
 primary concern, this is not a big problem.
 
-\subsubsection*{Fold constants}
+\subsubsection*{Constant folding}
 
+Another optimization is to do constant folding. Constant folding is replacing
+a expensive step like addition with a more simple step like loading a constant.
+Of course, this is not always possible. It is possible in cases where you apply
+an operation on two constants, or a constant and a variable of which you know
+for sure that it always has a certain value at that point. For example:
+\begin{verbatim}
+li   $regA, 1               li $regA, 1
+addu $regB, $regA, 2    ->  li $regB, 3
+\end{verbatim}
+Of course, if \texttt{\$regA} is not used after this, it can be removed, which
+will be done by the dead code elimination.
 
+One problem we encountered with this is that the use of a \texttt{li} is that
+the program often also stores this in the memory, so we had to check whether
+this was necessary here as well.
 
 \subsubsection*{Copy propagation}
 
@@ -153,12 +167,11 @@ of the move operation.
 
 An example would be the following:
 \begin{verbatim}
-move $regA, $regB           move $regA, $regB
-...                         ...
-Code not writing $regA, ->  ...
-$regB                       ...
-...                         ...
-addu $regC, $regA, ...      addu $regC, $regB, ...
+move $regA, $regB                   move $regA, $regB
+...                                 ...
+Code not writing $regA, $regB   ->  ...
+...                                 ...
+addu $regC, $regA, ...              addu $regC, $regB, ...
 \end{verbatim}
 This code shows that \texttt{\$regA} is replaced with \texttt{\$regB}. This
 way, the move instruction might have become useless, and it will then be
@@ -166,7 +179,18 @@ removed by the dead code elimination.
 
 \subsubsection*{Algebraic transformations}
 
+Some expression can easily be replaced with more simple once if you look at
+what they are saying algebraically. An example is the statement $x = y + 0$, or
+in Assembly \texttt{addu \$1, \$2, 0}. This can easily be changed into $x = y$
+or \texttt{move \$1, \$2}.
+
+Another case is the multiplication with a power of two. This can be done way
+more efficiently by shifting left a number of times. An example:
+\texttt{mult \$regA, \$regB, 4    ->  sll  \$regA, \$regB, 2}. We perform this
+optimization for any multiplication with a power of two.
 
+There are a number of such cases, all of which are once again stated in
+appendix \ref{opt}. 
 
 \section{Implementation}
 
@@ -203,7 +227,7 @@ The optimizations are done in two different steps. First the global
 optimizations are performed, which are only the optimizations on branch-jump
 constructions. This is done repeatedly until there are no more changes.
 
-After all possible global optimizations are done, the program is seperated into
+After all possible global optimizations are done, the program is separated into
 basic blocks. The algorithm to do this is described earlier, and means all
 jump and branch instructions are called leaders, as are their targets. A basic
 block then goes from leader to leader.
@@ -215,7 +239,7 @@ steps can be done to optimize something.
 \subsection{Writing}
 
 Once all the optimizations have been done, the IR needs to be rewritten into
-Assembly code, so the xgcc crosscompiler can make binary code out of it.
+Assembly code, so the xgcc cross compiler can make binary code out of it.
 
 The writer expects a list of statements, so first the blocks have to be
 concatenated again into a list. After this is done, the list is passed on to

+ 80 - 35
src/dataflow.py

@@ -1,4 +1,4 @@
-#from copy import copy
+from copy import copy
 
 from statement import Block
 
@@ -25,40 +25,85 @@ class BasicBlock(Block):
         if block not in self.dominates:
             self.dominates.append(block)
             block.dominated_by.append(self)
-            
-    
-#    def get_gen(self):
-#        for s in self.statements:       
-#            if s.is_arith():
-#                self.gen_set.add(s[0])
-#                print 'added: ', s[0]
-#        
-#        return self.gen_set
-#        
-#    def get_kill(self):
-##        if self.edges_from != []:
-#    
-#        for backw in self.edges_from:
-#            self.kill_set = self.gen_set & backw.kill_set
-#            
-#        self.kill_set = self.kill_set - self.get_gen()
-#        print 'get_kill_set', self.kill_set
-#        return self.kill_set
-
-#    def get_in(self):
-#        for backw in self.edges_from:
-#            self.in_set = self.in_set | backw.out_set
-#        print 'in_set', self.in_set
-#        return self.in_set
-
-#    def get_out(self):
-#        print 'gen_set', self.gen_set
-#        print 'get_in', self.get_in()
-#        print 'get_kill', self.get_kill()
-#        self.out_set = self.gen_set | (self.get_in() - self.get_kill())
-        
-
-    
+
+    def create_gen_kill(self, defs):
+        used = set()
+        self_defs = {}
+
+        # Get the last of each definition series and put in in the `def' set
+        self.gen_set = set()
+
+        for s in reversed(self):
+            for reg in s.get_def():
+                if reg not in self_defs:
+                    print 'Found def:', s
+                    self_defs[reg] = s.sid
+                    self.gen_set.add(s.sid)
+
+        # Generate kill set
+        self.kill_set = set()
+
+        for reg, statement_ids in defs.iteritems():
+            if reg in self_defs:
+                add = statement_ids - set([self_defs[reg]])
+            else:
+                add = statement_ids
+
+            self.kill_set |= add
+
+
+def defs(blocks):
+    # Collect definitions of all registers
+    defs = {}
+
+    for b in blocks:
+        for s in b:
+            for reg in s.get_def():
+                if reg not in defs:
+                    defs[reg] = set([s.sid])
+                else:
+                    defs[reg].add(s.sid)
+
+    return defs
+
+
+def reaching_definitions(blocks):
+    """Generate the `in' and `out' sets of the given blocks using the iterative
+    algorithm from the slides."""
+    defs = defs(blocks)
+
+    for b in blocks:
+        b.create_gen_kill(defs)
+        b.out_set = b.gen_set
+
+    change = True
+
+    while change:
+        change = False
+
+        for b in blocks:
+            b.in_set = set()
+
+            for pred in b.edges_from:
+                b.in_set |= pred.out_set
+
+            oldout = copy(p.out_set)
+            p.out_set = b.gen_set | (b.in_set - b.kill_set)
+
+            if b.out_set != oldout:
+                change = True
+
+
+def pred(n, known=[]):
+    """Recursively find all predecessors of a node."""
+    direct = filter(lambda b: b not in known, n.edges_from)
+    p = copy(direct)
+
+    for ancestor in direct:
+        p += pred(ancestor, direct)
+
+    return p
+
 
 def find_leaders(statements):
     """Determine the leaders, which are:

+ 4 - 3
src/optimize/__init__.py

@@ -3,7 +3,7 @@ from src.dataflow import find_basic_blocks
 from redundancies import remove_redundant_jumps, move_1, move_2, move_3, \
         move_4, load, shift, add
 from advanced import eliminate_common_subexpressions, fold_constants, \
-        copy_propagation, algebraic_transformations
+        copy_propagation, algebraic_transformations, eliminate_dead_code
 
 
 def remove_redundancies(block):
@@ -32,7 +32,8 @@ def optimize_block(block):
             | eliminate_common_subexpressions(block) \
             | fold_constants(block) \
             | copy_propagation(block)\
-            | algebraic_transformations(block):
+            | algebraic_transformations(block) \
+            | eliminate_dead_code(block):
         pass
 
 
@@ -63,6 +64,6 @@ def optimize(statements, verbose=0):
         print 'After global optimization:       %d' % g
         print 'After basic blocks optimization: %d' % b
         print 'Optimization:                    %d (%d%%)' \
-                % (b - o, int((b - o) / float(o) * 100))
+                % (o - b, int((o - b) / float(b) * 100))
 
     return opt_blocks

+ 118 - 57
src/optimize/advanced.py

@@ -2,22 +2,31 @@ from src.statement import Statement as S
 from math import log
 
 
-def reg_dead_in(var, context):
-    """Check if a register is `dead' in a given list of statements."""
-    # TODO: Finish
-    for s in context:
-        if s.defines(var) or s.uses(var):
+def reg_can_be_used_in(reg, block, start, end):
+    """Check if a register addres safely be used in a block section using local
+    dataflow analysis."""
+    # Check if the register used or defined in the block section
+    for s in block[start:end]:
+        if s.uses(reg) or s.defines(reg):
+            return False
+
+    # Check if the register is used inside the block after the specified
+    # section, without having been re-assigned first
+    for s in block[end:]:
+        if s.uses(reg):
             return False
+        elif s.defines(reg):
+            return True
 
     return True
 
 
-def find_free_reg(context):
+def find_free_reg(block, start, end):
     """Find a temporary register that is free in a given list of statements."""
-    for i in xrange(8):
-        tmp = '$t%d' % i
+    for i in xrange(8, 16):
+        tmp = '$%d' % i
 
-        if reg_dead_in(tmp, context):
+        if reg_can_be_used_in(tmp, block, start, end):
             return tmp
 
     raise Exception('No temporary register is available.')
@@ -31,57 +40,60 @@ def eliminate_common_subexpressions(block):
                             y = u
 
     The algorithm used is as follows:
-    - Traverse through the statements in reverse order.
+    - Traverse through the statements.
     - If the statement can be possibly be eliminated, walk further collecting
       all other occurrences of the expression until one of the arguments is
       assigned in a statement, or the start of the block has been reached.
-    - If one or more occurrences were found, insert the expression with a new
-      destination address before the last found occurrence and change all
+    - If one or more occurrences were changed, insert the expression with a new
+      destination address before the last changed occurrence and change all
       occurrences to a move instruction from that address.
     """
-    found = False
-    block.reverse_statements()
+    changed = False
 
     while not block.end():
         s = block.read()
 
         if s.is_arith():
             pointer = block.pointer
-            last = False
-            new_reg = False
+            occurrences = [pointer - 1]
             args = s[1:]
 
             # Collect similar statements
             while not block.end():
                 s2 = block.read()
 
+                if not s2.is_command():
+                    continue
+
                 # Stop if one of the arguments is assigned
                 if len(s2) and s2[0] in args:
                     break
 
                 # Replace a similar expression by a move instruction
                 if s2.name == s.name and s2[1:] == args:
-                    if not new_reg:
-                        new_reg = find_free_reg(block[:pointer])
+                    occurrences.append(block.pointer - 1)
 
-                    block.replace(1, [S('command', 'move', s2[0], new_reg)])
-                    last = block.pointer
+            if len(occurrences) > 1:
+                new_reg = find_free_reg(block, occurrences[0], occurrences[-1])
 
-            # Reset pointer to and continue from the original statement
-            block.pointer = pointer
+                # Replace all occurrences with a move statement
+                for occurrence in occurrences:
+                    rd = block[occurrence][0]
+                    block.replace(1, [S('command', 'move', rd, new_reg)], \
+                            start=occurrence)
+
+                # Insert the calculation before the original with the new
+                # destination address
+                block.insert(S('command', s.name, *([new_reg] + args)), \
+                             index=occurrences[0])
 
-            if last:
-                # Insert an additional expression with a new destination address
-                block.insert(S('command', s.name, *([new_reg] + args)), last)
+                changed = True
 
-                # Replace the original expression with a move statement
-                block.replace(1, [S('command', 'move', s[0], new_reg)])
-                found = True
+            # Reset pointer to continue from the original statement
+            block.pointer = pointer
 
-    block.reverse_statements()
+    return changed
 
-    return found
-    
 
 def to_hex(value):
     """Create the hexadecimal string of an integer."""
@@ -103,7 +115,7 @@ def fold_constants(block):
     - When a variable is used, the following happens:
         lw $reg, VAR    ->  register[$reg] = constants[VAR]
     """
-    found = False
+    changed = False
 
     # Variable values
     constants = {}
@@ -125,7 +137,7 @@ def fold_constants(block):
 
             if reg_from in register:
                 # Other value is also known, copy its value
-                register[reg_to] = register[reg_to]
+                register[reg_to] = register[reg_from]
             else:
                 # Other value is unknown, delete the value
                 del register[reg_to]
@@ -136,8 +148,9 @@ def fold_constants(block):
             # Usage of variable with constant value
             register[s[0]] = constants[s[1]]
         elif s.name in ['addu', 'subu', 'mult', 'div']:
+            # TODO: implement 'mult' optimization
             # Calculation with constants
-            rd, rs, rt = s
+            rd, rs, rt = s[0], s[1], s[2]
             rs_known = rs in register
             rt_known = rt in register
 
@@ -162,23 +175,23 @@ def fold_constants(block):
 
                 block.replace(1, [S('command', 'li', rd, result)])
                 register[rd] = result
-                found = True
+                changed = True
             elif rt_known:
                 # c = 10        ->  b = a + 10
                 # b = c + a
                 s[2] = register[rt]
-                found = True
-            elif rs_known and s.name in ['addu', 'mult']:
+                changed = True
+            elif rs_known and s.name == 'addu':
                 # a = 10        ->  b = c + 10
                 # b = c + a
                 s[1] = rt
                 s[2] = register[rs]
-                found = True
+                changed = True
         elif len(s) and s[0] in register:
             # Known register is overwritten, remove its value
             del register[s[0]]
 
-    return found
+    return changed
 
 
 def copy_propagation(block):
@@ -210,12 +223,15 @@ def copy_propagation(block):
             for i in xrange(len(moves_to)):
                 if moves_to[i] == s[0]:
                     moves_from[i] = s[1]
-                    break
-        elif len(s) == 3 and s[0] in moves_to:
-            # The result gets overwritten, so remove the data from the list.
+                    continue
+        elif (len(s) == 3 or s.is_command('mlfo') or s.is_load()) \
+                and (s[0] in moves_to or s[0] in moves_from):
+            # One of the registers gets overwritten, so remove the data from
+            # the list.
             i = 0
+
             while i  < len(moves_to):
-                if moves_to[i] == s[0]:
+                if moves_to[i] == s[0] or moves_to[i] == s[1]:
                     del moves_to[i]
                     del moves_from[i]
                 else:
@@ -226,11 +242,11 @@ def copy_propagation(block):
             for i in xrange(len(moves_to)):
                 if s[1] == moves_to[i]:
                     s[1] = moves_from[i]
-                    break
+                    continue
 
                 if s[2] == moves_to[i]:
                     s[2] = moves_from[i]
-                    break
+                    continue
 
             changed = True
 
@@ -239,7 +255,7 @@ def copy_propagation(block):
 
 def algebraic_transformations(block):
     """
-    Change ineffective or useless algebraic transformations. Handled are:
+    Change ineffective or useless algebraic expressions. Handled are:
     - x = y + 0 -> x = y
     - x = y - 0 -> x = y
     - x = y * 1 -> x = y
@@ -254,17 +270,62 @@ def algebraic_transformations(block):
         if (s.is_command('addu') or s.is_command('subu')) and s[2] == 0:
             block.replace(1, [S('command', 'move', s[0], s[1])])
             changed = True
-        elif s.is_command('mult') and s[2] == 1:
-            block.replace(1, [S('command', 'move', s[0], s[1])])
-            changed = True
-        elif s.is_command('mult') and s[2] == 0:
-            block.replace(1, [S('command', 'li', '$1', to_hex(0))])
-            changed = True
         elif s.is_command('mult'):
-            shift_amount = log(s[2], 2)
-            if shift_amount.is_integer():
-                new_command = S('command', 'sll', s[0], s[1], shift_amount)
-                block.replace(1, [new_command])
-                changed = True
+            mflo = block.peek()
+
+            if mflo.is_command('mflo'):
+                if s[1] == 1:
+                    block.replace(2, [S('command', 'move', mflo[0], s[0])])
+                    changed = True
+                    continue
+                elif s[1] == 0:
+                    block.replace(2, [S('command', 'li', '$1', to_hex(0))])
+                    changed = True
+                    continue
+
+                shift_amount = log(s[1], 2)
+                if shift_amount.is_integer():
+                    new_command = S('command', 'sll', \
+                                    mflo[0], s[0], \
+                                    int(shift_amount))
+                    block.replace(2, [new_command])
+                    changed = True
+
+    return changed
+
+
+def eliminate_dead_code(block):
+    """
+    Dead code elimination:
+    TODO: example...
+
+    The algorithm used is as follows:
+    - Traverse through the statements in reverse order.
+    - If the statement definition is dead, remove it. A variable is dead if it
+      is not used in the rest of the block, and is not in the `out' set of the
+      block.
+    """
+    # TODO: Finish
+    changed = False
+
+    block.reverse_statements()
+    unused = set()
+
+    while not block.end():
+        s = block.read()
+
+        for reg in s.get_def():
+            if reg in unused:
+                # Statement is redefined later, so this statement is useless
+                s.remove = True
+                #print 'reg %s is in %s, remove:' % (reg, unused), \
+                #        block.pointer - 1, s
+            else:
+                unused.add(reg)
+
+        unused -= set(s.get_use())
+
+    block.apply_filter(lambda s: not hasattr(s, 'remove'))
+    block.reverse_statements()
 
     return changed

+ 91 - 11
src/statement.py

@@ -2,12 +2,18 @@ import re
 
 
 class Statement:
+    sid = 1
+
     def __init__(self, stype, name, *args, **kwargs):
         self.stype = stype
         self.name = name
         self.args = list(args)
         self.options = kwargs
 
+        # Assign a unique ID to each satement
+        self.sid = Statement.sid
+        Statement.sid += 1
+
     def __getitem__(self, n):
         """Get an argument."""
         return self.args[n]
@@ -26,8 +32,8 @@ class Statement:
         return len(self.args)
 
     def __str__(self):  # pragma: nocover
-        return '<Statement type=%s name=%s args=%s>' \
-                % (self.stype, self.name, self.args)
+        return '<Statement sid=%d type=%s name=%s args=%s>' \
+                % (self.sid, self.stype, self.name, self.args)
 
     def __repr__(self):  # pragma: nocover
         return str(self)
@@ -62,16 +68,21 @@ class Statement:
 
     def is_shift(self):
         """Check if the statement is a shift operation."""
-        return self.is_command() and re.match('^s(ll|la|rl|ra)$', self.name)
+        return self.is_command() and re.match('^s(ll|rl|ra)$', self.name)
 
     def is_load(self):
         """Check if the statement is a load instruction."""
-        return self.is_command() and self.name in ['lw', 'dlw', 'l.s', 'l.d']
-
+        return self.is_command() and self.name in ['lw', 'li', 'dlw', 'l.s', \
+                                                   'l.d']
+                                                   
     def is_arith(self):
         """Check if the statement is an arithmetic operation."""
         return self.is_command() \
-               and re.match('^(add|sub|mult|div|abs|neg)(u|\.d)?$', self.name)
+               and re.match('^s(ll|rl|ra)'
+                            + '|(mfhi|mflo|abs|neg|and|[xn]?or)'
+                            + '|(add|sub|slt)u?'
+                            + '|(add|sub|mult|div|abs|neg|sqrt|c)\.[sd]$', \
+                            self.name)
 
     def is_monop(self):
         """Check if the statement is an unary operation."""
@@ -80,23 +91,92 @@ class Statement:
     def is_binop(self):
         """Check if the statement is an binary operation."""
         return self.is_command() and len(self) == 3 and not self.is_jump()
-
+        
+    def is_load_non_immediate(self):
+        """Check if the statement is a load statement."""
+        return self.is_command() \
+               and re.match('^l(w|a|b|bu|\.d|\.s)|dlw$', \
+                            self.name)
+    def is_logical(self):
+        """Check if the statement is a logical operator."""
+        return self.is_command() and re.match('^(xor|or|and)i?$', self.name)
+    
+    def is_double_aritmethic(self):
+        """Check if the statement is a arithmetic .d operator."""
+        return self.is_command() and \
+                re.match('^(add|sub|div|mul)\.d$', self.name)
+                
+    def is_double_unary(self):
+        """Check if the statement is a unary .d operator."""
+        return self.is_command() and \
+                re.match('^(abs|neg|mov)\.d$', self.name)
+                
+    def is_move_from_spec(self):
+        """Check if the statement is a move from the result register."""
+        return self.is_command() and self.name in ['mflo', 'mthi']
+        
+    def is_set_if_less(self):
+        """Check if the statement is a shift if less then."""
+        return self.is_command() and self.name in ['slt', 'sltu']
+        
+    def is_convert(self):
+        """Check if the statement is a convert operator."""
+        return self.is_command() and re.match('^cvt\.[a-z\.]*$', self.name)
+        
+    def is_truncate(self):
+        """Check if the statement is a convert operator."""
+        return self.is_command() and re.match('^trunc\.[a-z\.]*$', self.name)
+        
     def jump_target(self):
         """Get the jump target of this statement."""
         if not self.is_jump():
             raise Exception('Command "%s" has no jump target' % self.name)
 
         return self[-1]
+    
+    def get_def(self):
+        """Get the variable that this statement defines, if any."""
+        instr = ['move', 'addu', 'subu', 'li', 'mtc1', 'dmfc1']
+        
+        if self.is_load_non_immediate() or self.is_arith() \
+                or self.is_logical() or self.is_double_arithmetic() \
+                or self.is_move_from_spec() or self.is_double_unary() \
+                or self.is_set_if_less() or self.is_convert() \
+                or self.is_truncate() or self.is_load() \
+                or (self.is_command and self.name in instr):
+            return self[0]
+
+        return []
+
+    def get_use(self):
+        # TODO: Finish with ALL the available commands!
+        use = []
+
+        if self.is_binop():
+            use += self[1:]
+        elif self.is_command('move'):
+            use.append(self[1])
+        elif self.is_command('lw', 'sb', 'sw', 'dsw', 's.s', 's.d'):
+            m = re.match('^\d+\(([^)]+)\)$', self[1])
+
+            if m:
+                use.append(m.group(1))
+
+            # 'sw' also uses its first argument
+            if self.name in ['sw', 'dsw']:
+                use.append(self[0])
+        elif len(self) == 2:  # FIXME: temporary fix, manually add all commands
+            use.append(self[1])
+
+        return use
 
     def defines(self, reg):
         """Check if this statement defines the given register."""
-        # TODO: Finish
-        return (self.is_load() or self.is_arith()) and self[0] == reg
+        return reg in self.get_def()
 
     def uses(self, reg):
         """Check if this statement uses the given register."""
-        # TODO: Finish
-        return (self.is_load() or self.is_arith()) and reg in self[1:]
+        return reg in self.get_use()
 
 
 class Block:

+ 49 - 9
tests/test_dataflow.py

@@ -2,7 +2,7 @@ import unittest
 
 from src.statement import Statement as S
 from src.dataflow import BasicBlock as B, find_leaders, find_basic_blocks, \
-        generate_flow_graph, Dag, DagNode, DagLeaf
+        generate_flow_graph, Dag, DagNode, DagLeaf, defs, reaching_definitions
 
 
 class TestDataflow(unittest.TestCase):
@@ -23,12 +23,12 @@ class TestDataflow(unittest.TestCase):
         self.assertEqual(map(lambda b: b.statements, find_basic_blocks(s)), \
                 [B(s[:2]).statements, B(s[2:4]).statements, \
                  B(s[4:]).statements])
-                 
+
 #    def test_get_gen(self):
 #        b1 = B([S('command', 'add', '$1', '$2', '$3'), \
 #                S('command', 'add', '$2', '$3', '$4'), \
 #                S('command', 'add', '$1', '$4', '$5')])
-#        
+#
 #        self.assertEqual(b1.get_gen(), ['$1', '$2'])
 
 #    def test_get_out(self):
@@ -36,18 +36,18 @@ class TestDataflow(unittest.TestCase):
 #                S('command', 'add', '$2', '$3', '$4'), \
 #                S('command', 'add', '$1', '$4', '$5'), \
 #                S('command', 'j', 'b2')])
-#        
+#
 #        b2 = B([S('command', 'add', '$3', '$5', '$6'), \
 #                S('command', 'add', '$1', '$2', '$3'), \
-#                S('command', 'add', '$6', '$4', '$5')])      
-#                
+#                S('command', 'add', '$6', '$4', '$5')])
+#
 #        blocks = [b1, b2]
-#        
-#        # initialize  out[B] = gen[B] for every block        
+#
+#        # initialize  out[B] = gen[B] for every block
 #        for block in blocks:
 #            block.out_set = block.get_gen()
 #            print 'block.out_set', block.out_set
-#            
+#
 #        generate_flow_graph(blocks)
 
 #        change = True
@@ -112,6 +112,46 @@ class TestDataflow(unittest.TestCase):
 #
 #        self.assertEqualDag(dag, expect)
 
+    def test_defs(self):
+        s1 = S('command', 'addu', '$3', '$1', '$2')
+        s2 = S('command', 'addu', '$1', '$3', 10)
+        s3 = S('command', 'subu', '$3', '$1', 5)
+        s4 = S('command', 'li', '$4', '0x00000001')
+        block = B([s1, s2, s3, s4])
+        self.assertEqual(defs([block]), {
+            '$3': set([s1.sid, s3.sid]),
+            '$1': set([s2.sid]),
+            '$4': set([s4.sid])
+        })
+
+    #def test_defs(self):
+    #    s1 = S('command', 'add', '$3', '$1', '$2')
+    #    s2 = S('command', 'move', '$1', '$3')
+    #    s3 = S('command', 'move', '$3', '$2')
+    #    s4 = S('command', 'li', '$4', '0x00000001')
+    #    block = B([s1, s2, s3, s4])
+    #    self.assertEqual(defs([block]), {
+    #        '$3': set([s1.sid, s3.sid]),
+    #        '$1': set([s2.sid]),
+    #        '$4': set([s4.sid])
+    #    })
+
+    def test_create_gen_kill_gen(self):
+        s1 = S('command', 'addu', '$3', '$1', '$2')
+        s2 = S('command', 'addu', '$1', '$3', 10)
+        s3 = S('command', 'subu', '$3', '$1', 5)
+        s4 = S('command', 'li', '$4', '0x00000001')
+        block = B([s1, s2, s3, s4])
+        block.create_gen_kill(defs([block]))
+        self.assertEqual(block.gen_set, set([s2.sid, s3.sid, s4.sid]))
+
+    #def test_get_kill_used(self):
+    #    block = B([S('command', 'move', '$1', '$3'),
+    #               S('command', 'add', '$3', '$1', '$2'),
+    #               S('command', 'move', '$1', '$3'),
+    #               S('command', 'move', '$2', '$3')])
+    #    self.assertEqual(block.get_kill(), set())
+
     def assertEqualDag(self, dag1, dag2):
         self.assertEqual(len(dag1.nodes), len(dag2.nodes))
 

+ 27 - 8
tests/test_optimize_advanced.py

@@ -19,9 +19,9 @@ class TestOptimizeAdvanced(unittest.TestCase):
     def test_eliminate_common_subexpressions_simple(self):
         b = B([S('command', 'addu', '$regC', '$regA', '$regB'),
                S('command', 'addu', '$regD', '$regA', '$regB')])
-        e = [S('command', 'addu', '$t0', '$regA', '$regB'), \
-             S('command', 'move', '$regC', '$t0'), \
-             S('command', 'move', '$regD', '$t0')]
+        e = [S('command', 'addu', '$8', '$regA', '$regB'), \
+             S('command', 'move', '$regC', '$8'), \
+             S('command', 'move', '$regD', '$8')]
         eliminate_common_subexpressions(b)
         self.assertEqual(b.statements, e)
 
@@ -49,6 +49,20 @@ class TestOptimizeAdvanced(unittest.TestCase):
                    self.foo,
                    S('command', 'addu', '$3', '$2', '$4'),
                    self.bar])
+                   
+    def test_copy_propagation_other_arg(self):
+        block = B([self.foo,
+                   S('command', 'move', '$1', '$2'),
+                   self.foo,
+                   S('command', 'addu', '$3', '$4', '$1'),
+                   self.bar])
+
+        self.assertTrue(copy_propagation(block))
+        self.assertEqual(block.statements, [self.foo,
+                   S('command', 'move', '$1', '$2'),
+                   self.foo,
+                   S('command', 'addu', '$3', '$4', '$2'),
+                   self.bar])
 
     def test_copy_propagation_overwrite(self):
         block = B([self.foo, \
@@ -125,7 +139,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
 
     def test_algebraic_transforms_mult0(self):
         block = B([self.foo,
-                   S('command', 'mult', '$1', '$2', 0),
+                   S('command', 'mult', '$2', 0),
+                   S('command', 'mflo', '$1'),
                    self.bar])
 
         self.assertTrue(algebraic_transformations(block))
@@ -135,7 +150,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
 
     def test_algebraic_transforms_mult1(self):
         block = B([self.foo,
-                   S('command', 'mult', '$1', '$2', 1),
+                   S('command', 'mult', '$2', 1),
+                   S('command', 'mflo', '$1'),
                    self.bar])
 
         self.assertTrue(algebraic_transformations(block))
@@ -145,7 +161,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
 
     def test_algebraic_transforms_mult2(self):
         block = B([self.foo,
-                   S('command', 'mult', '$1', '$2', 2),
+                   S('command', 'mult', '$2', 2),
+                   S('command', 'mflo', '$1'),
                    self.bar])
 
         self.assertTrue(algebraic_transformations(block))
@@ -155,7 +172,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
 
     def test_algebraic_transforms_mult16(self):
         block = B([self.foo,
-                   S('command', 'mult', '$1', '$2', 16),
+                   S('command', 'mult', '$2', 16),
+                   S('command', 'mflo', '$1'),
                    self.bar])
 
         self.assertTrue(algebraic_transformations(block))
@@ -165,7 +183,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
 
     def test_algebraic_transforms_mult3(self):
         arguments = [self.foo,
-                     S('command', 'mult', '$1', '$2', 3),
+                     S('command', 'mult', '$2', 3),
+                     S('command', 'mflo', '$1'),
                      self.bar]
         block = B(arguments)
 

+ 2 - 2
tests/test_statement.py

@@ -90,6 +90,6 @@ class TestStatement(unittest.TestCase):
         self.assertFalse(S('label', 'lw').is_load())
 
     def test_is_arith(self):
-        self.assertTrue(S('command', 'add', '$1', '$2', '$3').is_arith())
+        self.assertTrue(S('command', 'addu', '$1', '$2', '$3').is_arith())
         self.assertFalse(S('command', 'foo').is_arith())
-        self.assertFalse(S('label', 'add').is_arith())
+        self.assertFalse(S('label', 'addu').is_arith())