         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
				LVL9 = .
				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   %integer %function ackermann(%integer m,n)
				.set	nomips16
				.set	nomicromips
				.ent	ACKERMANN.5999
		ACKERMANN.5999:
				.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)
				lw	$25,%call16(_imp_initialise)($28)
				.reloc	1f,R_MIPS_JALR,_imp_initialise
			1:	jalr	$25
				nop
				LVL10 = .
				lw	$28,256($sp)
				LVL11 = .
    3     %result = n+1 %if m = 0
				beq	$4,$0,$L8
				nop
				L2 = .
    4     %result = ackermann(m-1,1) %if n = 0
				beq	$5,$0,$L9
				move	$16,$4
				L4 = .
    5     %result = ackermann(m-1,ackermann(m,n-1))
				addiu	$5,$5,-1
				LVL1 = .
				.option	pic0
				jal	ACKERMANN.5999
				nop
				.option	pic2
				LVL2 = .
				move	$5,$2
				addiu	$4,$16,-1
				.option	pic0
				jal	ACKERMANN.5999
				nop
				.option	pic2
				LVL3 = .
				li	$5,1			# 0x1
				LVL6 = .
				addiu	$4,$4,-1
				LVL7 = .
				.option	pic0
				jal	ACKERMANN.5999
				nop
				.option	pic2
				LVL8 = .
				.option	pic0
				b	$L10
				.option	pic2
				lw	$31,28($sp)
				.set	macro
				.set	reorder
				.end	ACKERMANN.5999
		$LFE186:
				.rdata
				.align	2
		$LC0:
				.byte	15
				.ascii	"Wrong result!  \000"
				.space	239
				.align	2
		$LC1:
				.byte	5
				.ascii	"Done.\000"
				.space	249
				.align	2
				.globl	main
				LFB185 = .
    6   %end
				lw	$31,28($sp)
		$L10:
				lw	$16,24($sp)
				LVL4 = .
				jr	$31
				addiu	$sp,$sp,32
				LVL5 = .
		$L8:
				jr	$31
				addiu	$2,$5,1
		$L9:
    7
    8   %owninteger i,j,k,k1,t1,t2
    9
   10   k = 16;  k1 = 1
				lui	$2,%hi(K.6005)
				li	$3,16			# 0x10
				sw	$3,%lo(K.6005)($2)
   11   %for i = 1,1,6 %cycle
				lui	$2,%hi(K1.6006)
				li	$3,1			# 0x1
				sw	$3,%lo(K1.6006)($2)
   12     t1 = cputime            ;! cputime is in clocks_per_tick which is 1000000
				lui	$20,%hi(T1.6007)
				sw	$2,%lo(T1.6007)($20)
   13     j = ackermann(3,i)
				lui	$21,%hi(J.6004)
				lw	$5,%lo(I.6003)($17)
				li	$4,3			# 0x3
				.option	pic0
				jal	ACKERMANN.5999
				nop
				.option	pic2
				LVL24 = .
				lw	$28,256($sp)
				sw	$2,%lo(J.6004)($21)
				LBB33 = .
				LBB34 = .
				lw	$25,%call16(_imp_cputime)($28)
				.reloc	1f,R_MIPS_JALR,_imp_cputime
			1:	jalr	$25
				nop
				LVL25 = .
				lw	$28,256($sp)
				LBE34 = .
				LBE33 = .
   14     t2 = cputime
				move	$2,$0
				lui	$19,%hi(T2.6008)
				lui	$16,%hi(K.6005)
				LBB24 = .
				lw	$2,%lo(I.6003)($17)
				li	$3,6			# 0x6
				beq	$2,$3,$L34
				addiu	$3,$sp,1036
		$L17:
				sw	$2,%lo(T2.6008)($19)
   15     %if j # k-3 %then printstring("Wrong result!  ") %and newline
				lui	$17,%hi(I.6003)
				addiu	$2,$2,1
				sw	$2,%lo(I.6003)($17)
				LBB31 = .
				LBB32 = .
				lw	$25,%call16(_imp_cputime)($28)
				.reloc	1f,R_MIPS_JALR,_imp_cputime
			1:	jalr	$25
				nop
				LVL23 = .
				lw	$28,256($sp)
				LBE32 = .
				LBE31 = .
				lw	$2,%lo(K.6005)($16)
				addiu	$2,$2,-3
				lw	$3,%lo(J.6004)($21)
				beq	$2,$3,$L12
				lw	$2,%lo(T2.6008)($19)
				LBB35 = .
   16     print((t2-t1){/1000},7,3)
				lui	$22,%hi($LC0)
				addiu	$23,$sp,1292
				LBE24 = .
				lw	$3,%lo(T1.6007)($20)
				subu	$2,$2,$3
				LBB25 = .
				LBB26 = .
				li	$7,3			# 0x3
				li	$6,7			# 0x7
				mtc1	$2,$f0
				cvt.d.w	$f12,$f0
				LVL13 = .
				lw	$25,%call16(_imp_print)($28)
				.reloc	1f,R_MIPS_JALR,_imp_print
			1:	jalr	$25
				nop
				LVL14 = .
				lw	$28,256($sp)
				LVL15 = .
				LVL16 = .
				LBE26 = .
				LBE25 = .
				lw	$2,%lo(T2.6008)($19)
				lw	$3,%lo(T1.6007)($20)
				subu	$2,$2,$3
				li	$3,3000			# 0xbb8
				mul	$3,$2,$3
				lw	$2,%lo(K1.6006)($18)
				sll	$2,$2,9
				LVL17 = .
				lw	$4,%lo(K.6005)($16)
				sll	$5,$4,4
				subu	$4,$4,$5
				addu	$2,$2,$4
				LVL18 = .
				lw	$5,%lo(I.6003)($17)
				sll	$4,$5,3
				addu	$4,$4,$5
				addu	$2,$2,$4
				addiu	$2,$2,37
				teq	$2,$0,7
				div	$0,$3,$2
				mflo	$3
				LBB27 = .
				LBB28 = .
				li	$7,3			# 0x3
				li	$6,7			# 0x7
				mtc1	$3,$f0
				cvt.d.w	$f12,$f0
				lw	$25,%call16(_imp_print)($28)
				.reloc	1f,R_MIPS_JALR,_imp_print
			1:	jalr	$25
				nop
				LVL19 = .
				lw	$28,256($sp)
				LVL20 = .
				LVL21 = .
				LBE28 = .
				LBE27 = .
				LBB29 = .
				LBB30 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL22 = .
				lw	$28,256($sp)
				LBE30 = .
				LBE29 = .
				addiu	$2,$22,%lo($LC0)
				addiu	$3,$sp,1036
				addiu	$4,$2,256
		$L13:
				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,$L13
				addiu	$3,$3,16
				addiu	$2,$sp,1036
				addiu	$3,$sp,268
		$L14:
				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,$23,$L14
				addiu	$3,$3,16
				addiu	$2,$sp,268
				addiu	$3,$sp,780
				addiu	$4,$sp,524
		$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
				LBE35 = .
				LBB36 = .
				LBB37 = .
				addiu	$2,$sp,796
				addiu	$3,$sp,16
				addiu	$4,$sp,1036
		$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
				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
				LVL26 = .
				lw	$28,256($sp)
				LBE37 = .
				LBE36 = .
				LBB38 = .
				LBB39 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL27 = .
				lw	$28,256($sp)
				LBE39 = .
				LBE38 = .
				.option	pic0
				b	$L35
				.option	pic2
				lw	$2,%lo(T2.6008)($19)
		$L34:
				L18 = .
				LBB40 = .
   17     print(3000*(t2-t1)/(512*k1-15*k+9*i+37),7,3)
				.option	pic0
				b	$L17
				.option	pic2
				lui	$18,%hi(K1.6006)
		$L12:
				LVL12 = .
		$L35:
   18     newline
   19     k1 = 4*k1;  k = 2*k
				lw	$2,%lo(K1.6006)($18)
				sll	$2,$2,2
				sw	$2,%lo(K1.6006)($18)
   20   %repeat
				lw	$2,%lo(K.6005)($16)
				sll	$2,$2,1
				sw	$2,%lo(K.6005)($16)
				LDL1 = .
   21   printstring("Done."); newline
				lui	$2,%hi($LC1)
				addiu	$2,$2,%lo($LC1)
				addiu	$4,$2,256
		$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
				addiu	$2,$sp,1036
				addiu	$3,$sp,524
				addiu	$4,$sp,1292
		$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,524
				addiu	$3,$sp,1036
				addiu	$4,$sp,780
		$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
				LBE40 = .
				LBB41 = .
				LBB42 = .
				addiu	$2,$sp,1052
				addiu	$3,$sp,16
				addiu	$4,$sp,1292
		$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
				lw	$4,1036($sp)
				lw	$5,1040($sp)
				lw	$6,1044($sp)
				lw	$7,1048($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL28 = .
				lw	$28,256($sp)
				LBE42 = .
				LBE41 = .
				LBB43 = .
				LBB44 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL29 = .
				lw	$28,256($sp)
				LVL30 = .
				LBE44 = .
				LBE43 = .
				LBB45 = .
				LBB46 = .
				move	$4,$0
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL31 = .
				LBE46 = .
				LBE45 = .
				.set	macro
				.set	reorder
				.end	main
		$LFE185:
				.comm	T2.6008,4,4
				.comm	J.6004,4,4
				.comm	T1.6007,4,4
				.comm	I.6003,4,4
				.comm	K1.6006,4,4
				.comm	K.6005,4,4
		$Letext0:
   22 %endofprogram
   23 Statements compiled
