         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,1336,$31		# vars= 1032, regs= 9/0, args= 256, gp= 8
				.mask	0x80ff0000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL4 = .
				addiu	$sp,$sp,-1336
				sw	$31,1332($sp)
				sw	$23,1328($sp)
				sw	$22,1324($sp)
				sw	$21,1320($sp)
				sw	$20,1316($sp)
				sw	$19,1312($sp)
				sw	$18,1308($sp)
				sw	$17,1304($sp)
				sw	$16,1300($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,mult)
				.set	nomips16
				.set	nomicromips
				.ent	FACT.6001
		FACT.6001:
				.frame	$sp,32,$31		# vars= 0, regs= 1/0, args= 16, gp= 8
				.mask	0x80000000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL0 = .
				addiu	$sp,$sp,-32
				sw	$31,28($sp)
				L3 = .
    5       %IF N<=1 %THENRESULT=mult
				slt	$3,$4,2
				beq	$3,$0,$L8
				move	$2,$5
    6       %RESULT=FACT(N-1,mult*N)
				mul	$5,$4,$5
				LVL1 = .
				addiu	$4,$4,-1
				LVL2 = .
				.option	pic0
				jal	FACT.6001
				nop
				.option	pic2
				LVL3 = .
				lw	$31,28($sp)
				jr	$31
				addiu	$sp,$sp,32
				.set	macro
				.set	reorder
				.end	FACT.6001
		$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
		$L8:
    8 %ROUTINE COMPARE(%INTEGER I,J)
    9       %UNLESS I=J %START
				beq	$18,$16,$L14
				addiu	$2,$19,%lo($LC1)
				LBB30 = .
   10          PRINTSTRING("ERROR")
				lui	$19,%hi($LC1)
				addiu	$20,$sp,1036
				addiu	$21,$sp,1292
				LBE26 = .
				LBB27 = .
				LBB28 = .
				addiu	$22,$sp,780
				LBE28 = .
				LBE27 = .
				LBE25 = .
				LBE24 = .
				addiu	$3,$sp,780
				addiu	$4,$2,256
		$L15:
				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,$L15
				addiu	$3,$3,16
				addiu	$2,$sp,780
				addiu	$3,$sp,1036
		$L16:
				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,$L16
				addiu	$3,$3,16
				addiu	$2,$sp,1036
				addiu	$3,$sp,524
		$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,$21,$L17
				addiu	$3,$3,16
				LBE30 = .
				LBB31 = .
				LBB29 = .
				addiu	$2,$sp,540
				addiu	$3,$sp,16
		$L18:
				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,$22,$L18
				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 = .
				LBE31 = .
   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
				.option	pic0
				b	$L12
				.option	pic2
				lui	$23,%hi(FAIL.5997)
				LVL8 = .
		$L14:
				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)
				li	$2,1			# 0x1
				sw	$2,%lo(FAIL.5997)($23)
				LBB32 = .
				LBB33 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL17 = .
				lw	$28,256($sp)
				LBE33 = .
				LBE32 = .
				LBE34 = .
				LBE35 = .
				.option	pic0
				b	$L35
				.option	pic2
				li	$2,100			# 0x64
				LVL18 = .
		$L13:
   13       %FINISH
   14 %END
   15       COMPARE(FACT(I,1),I*FACT(I-1,1)) %FOR I=2,1,100
   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,$L34
				move	$4,$0
				L19 = .
				LVL19 = .
		$L36:
				LBB36 = .
				LBB37 = .
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL20 = .
		$L34:
				LBE37 = .
				LBE36 = .
				LBB38 = .
   17 %ENDOFPROGRAM
				lui	$2,%hi($LC0)
				addiu	$2,$2,%lo($LC0)
				addiu	$3,$sp,780
				addiu	$4,$2,256
		$L20:
				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,$L20
				addiu	$3,$3,16
				addiu	$2,$sp,780
				addiu	$3,$sp,268
				addiu	$4,$sp,1036
		$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,268
				addiu	$3,$sp,780
				addiu	$4,$sp,524
		$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
				LBE38 = .
				LBB39 = .
				LBB40 = .
				addiu	$2,$sp,796
				addiu	$3,$sp,16
				addiu	$4,$sp,1036
		$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
				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)
				LBE40 = .
				LBE39 = .
				.option	pic0
				b	$L36
				.option	pic2
				move	$4,$0
				.set	macro
				.set	reorder
				.end	main
		$LFE185:
				.comm	FAIL.5997,4,4
		$Letext0:
   19 Statements compiled
				li	$2,100			# 0x64
		$L35:
				beq	$17,$2,$L13
				move	$16,$17
				LVL9 = .
		$L12:
				addiu	$17,$16,1
				LVL10 = .
				li	$5,1			# 0x1
				move	$4,$17
				.option	pic0
				jal	FACT.6001
				nop
				.option	pic2
				LVL11 = .
				lw	$28,256($sp)
				move	$18,$2
				li	$5,1			# 0x1
				move	$4,$16
				.option	pic0
				jal	FACT.6001
				nop
				.option	pic2
				LVL12 = .
				lw	$28,256($sp)
				mul	$16,$2,$17
				LVL13 = .
				LBB35 = .
				LBB34 = .
