         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.section .mdebug.abi32
				.previous
				.nan	legacy
				.module	fp=xx
				.module	nooddspreg
				.abicalls
		$Ltext0:
				.align	2
				LFB186 = .
				.set	nomips16
				.set	nomicromips
				.ent	main
		main:
				.frame	$sp,1328,$31		# vars= 1032, regs= 8/0, args= 256, gp= 8
				.mask	0x807f0000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL4 = .
				addiu	$sp,$sp,-1328
				sw	$31,1324($sp)
				sw	$22,1320($sp)
				sw	$21,1316($sp)
				sw	$20,1312($sp)
				sw	$19,1308($sp)
				sw	$18,1304($sp)
				sw	$17,1300($sp)
				sw	$16,1296($sp)
				lui	$28,%hi(__gnu_local_gp)
				addiu	$28,$28,%lo(__gnu_local_gp)
				.cprestore	256
				lw	$2,%got(__stack_chk_guard)($28)
				lw	$2,0($2)
				sw	$2,1292($sp)
    2 %owninteger fail=0
				lw	$25,%call16(_imp_initialise)($28)
				.reloc	1f,R_MIPS_JALR,_imp_initialise
			1:	jalr	$25
				nop
				LVL5 = .
				lw	$28,256($sp)
				LVL6 = .
				LVL7 = .
    3 %INTEGER I
    4 %INTEGERFN FACT(%INTEGER N)
				.set	nomips16
				.set	nomicromips
				.ent	FACT.6000
		FACT.6000:
				.frame	$sp,32,$31		# vars= 0, regs= 2/0, args= 16, gp= 8
				.mask	0x80010000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL0 = .
				addiu	$sp,$sp,-32
				sw	$31,28($sp)
				sw	$16,24($sp)
				move	$16,$4
				L3 = .
    5       %IF N<=1 %THENRESULT=1
				slt	$2,$4,2
				beq	$2,$0,$L9
				li	$2,1			# 0x1
    6       %RESULT=N*FACT(N-1)
				addiu	$4,$4,-1
				LVL1 = .
				.option	pic0
				jal	FACT.6000
				nop
				.option	pic2
				LVL2 = .
				mul	$2,$2,$16
				lw	$31,28($sp)
				lw	$16,24($sp)
				LVL3 = .
				jr	$31
				addiu	$sp,$sp,32
				.set	macro
				.set	reorder
				.end	FACT.6000
		$LFE186:
				.rdata
				.align	2
		$LC1:
				.byte	5
				.ascii	"ERROR\000"
				.space	249
				.align	2
		$LC0:
				.byte	7
				.ascii	"TEST OK\000"
				.space	247
				.align	2
				.globl	main
				LFB185 = .
    7 %END
				jr	$31
				nop
		$L9:
    8 %ROUTINE COMPARE(%INTEGER I,J)
    9       %UNLESS I=J %START
				beq	$18,$16,$L15
				addiu	$2,$19,%lo($LC1)
				LBB27 = .
   10          PRINTSTRING("ERROR")
				lui	$19,%hi($LC1)
				addiu	$20,$sp,1036
				LBE26 = .
				addiu	$3,$sp,780
				addiu	$4,$2,256
		$L16:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L16
				addiu	$3,$3,16
				addiu	$2,$sp,780
				addiu	$3,$sp,1036
		$L17:
				lw	$7,0($2)
				lw	$6,4($2)
				lw	$5,8($2)
				lw	$4,12($2)
				sw	$7,0($3)
				sw	$6,4($3)
				sw	$5,8($3)
				sw	$4,12($3)
				addiu	$2,$2,16
				bne	$2,$20,$L17
				addiu	$3,$3,16
				addiu	$2,$sp,1036
				addiu	$3,$sp,524
				addiu	$4,$sp,1292
		$L18:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L18
				addiu	$3,$3,16
				LBE27 = .
				LBB28 = .
				LBB29 = .
				addiu	$2,$sp,540
				addiu	$3,$sp,16
				addiu	$4,$sp,780
		$L19:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L19
				addiu	$3,$3,16
				lw	$4,524($sp)
				lw	$5,528($sp)
				lw	$6,532($sp)
				lw	$7,536($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL14 = .
				lw	$28,256($sp)
				LBE29 = .
				LBE28 = .
   11          WRITE(I,5); WRITE(J,5)
				li	$5,5			# 0x5
				move	$4,$18
				lw	$25,%call16(_imp_writeint)($28)
				.reloc	1f,R_MIPS_JALR,_imp_writeint
			1:	jalr	$25
				nop
				LVL15 = .
				lw	$28,256($sp)
   12          Fail=1; NEWLINE
				lui	$22,%hi(FAIL.5997)
				LBE25 = .
				LBE24 = .
				.option	pic0
				b	$L13
				.option	pic2
				li	$21,1			# 0x1
				LVL8 = .
		$L15:
				li	$5,5			# 0x5
				move	$4,$16
				lw	$25,%call16(_imp_writeint)($28)
				.reloc	1f,R_MIPS_JALR,_imp_writeint
			1:	jalr	$25
				nop
				LVL16 = .
				lw	$28,256($sp)
				sw	$21,%lo(FAIL.5997)($22)
				LBB30 = .
				LBB31 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL17 = .
				lw	$28,256($sp)
				LBE31 = .
				LBE30 = .
				LBE32 = .
				LBE33 = .
				.option	pic0
				b	$L36
				.option	pic2
				li	$2,10			# 0xa
				LVL18 = .
		$L14:
   13       %FINISH
   14 %END
   15       COMPARE(FACT(I),I*FACT(I-1)) %FOR I=2,1,10
   16       %if fail=0 %then printstring("TEST OK")
				li	$16,1			# 0x1
				LBB24 = .
				LBB25 = .
				LBB26 = .
				lui	$2,%hi(FAIL.5997)
				lw	$2,%lo(FAIL.5997)($2)
				beq	$2,$0,$L35
				move	$4,$0
				L20 = .
				LVL19 = .
		$L37:
				LBB34 = .
				LBB35 = .
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL20 = .
		$L35:
				LBE35 = .
				LBE34 = .
				LBB36 = .
   17 %ENDOFPROGRAM
				lui	$2,%hi($LC0)
				addiu	$2,$2,%lo($LC0)
				addiu	$3,$sp,780
				addiu	$4,$2,256
		$L21:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L21
				addiu	$3,$3,16
				addiu	$2,$sp,780
				addiu	$3,$sp,268
				addiu	$4,$sp,1036
		$L22:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L22
				addiu	$3,$3,16
				addiu	$2,$sp,268
				addiu	$3,$sp,780
				addiu	$4,$sp,524
		$L23:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L23
				addiu	$3,$3,16
				LBE36 = .
				LBB37 = .
				LBB38 = .
				addiu	$2,$sp,796
				addiu	$3,$sp,16
				addiu	$4,$sp,1036
		$L24:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L24
				addiu	$3,$3,16
				lw	$4,780($sp)
				lw	$5,784($sp)
				lw	$6,788($sp)
				lw	$7,792($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL21 = .
				lw	$28,256($sp)
				LBE38 = .
				LBE37 = .
				.option	pic0
				b	$L37
				.option	pic2
				move	$4,$0
				.set	macro
				.set	reorder
				.end	main
		$LFE185:
				.comm	FAIL.5997,4,4
		$Letext0:
   19 Statements compiled
				li	$2,10			# 0xa
		$L36:
				beq	$17,$2,$L14
				move	$16,$17
				LVL9 = .
		$L13:
				addiu	$17,$16,1
				LVL10 = .
				move	$4,$17
				.option	pic0
				jal	FACT.6000
				nop
				.option	pic2
				LVL11 = .
				lw	$28,256($sp)
				move	$18,$2
				move	$4,$16
				.option	pic0
				jal	FACT.6000
				nop
				.option	pic2
				LVL12 = .
				lw	$28,256($sp)
				mul	$16,$2,$17
				LVL13 = .
				LBB33 = .
				LBB32 = .
