         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,1304,$31		# vars= 1032, regs= 2/0, args= 256, gp= 8
				.mask	0x80010000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL24 = .
				addiu	$sp,$sp,-1304
				sw	$31,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   %routine do hanoi(%integer n, f, t, u)
				.set	nomips16
				.set	nomicromips
				.ent	DOHANOI.6001
		DOHANOI.6001:
				.frame	$sp,3368,$31		# vars= 3080, regs= 6/0, args= 256, gp= 8
				.mask	0x801f0000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL0 = .
				addiu	$sp,$sp,-3368
				sw	$31,3364($sp)
				sw	$20,3360($sp)
				sw	$19,3356($sp)
				sw	$18,3352($sp)
				sw	$17,3348($sp)
				sw	$16,3344($sp)
				lui	$28,%hi(__gnu_local_gp)
				addiu	$28,$28,%lo(__gnu_local_gp)
				.cprestore	256
				move	$17,$4
				move	$19,$5
				move	$18,$6
				move	$20,$7
				lw	$2,%got(__stack_chk_guard)($28)
				lw	$2,0($2)
				sw	$2,3340($sp)
				lw	$25,%call16(_imp_initialise)($28)
				.reloc	1f,R_MIPS_JALR,_imp_initialise
			1:	jalr	$25
				nop
				LVL25 = .
				lw	$28,256($sp)
				LVL26 = .
				li	$7,3			# 0x3
				li	$6,2			# 0x2
				li	$5,1			# 0x1
				li	$4,4			# 0x4
				.option	pic0
				jal	DOHANOI.6001
				nop
				.option	pic2
				LVL27 = .
				lw	$28,256($sp)
				LVL28 = .
				LBB47 = .
				LBB48 = .
    3     do hanoi(n - 1, f, u, t) %if n >= 2
				slt	$2,$4,2
				beq	$2,$0,$L10
				move	$7,$6
				LVL1 = .
				L2 = .
				LBB34 = .
				LBB35 = .
				LBB36 = .
				LBB37 = .
				LBB38 = .
				LBB39 = .
				LBB40 = .
				LBB41 = .
				move	$6,$0
		$L12:
				move	$5,$19
				addiu	$4,$sp,3084
				lw	$25,%call16(_imp_itos)($28)
				.reloc	1f,R_MIPS_JALR,_imp_itos
			1:	jalr	$25
				nop
				LVL2 = .
				lw	$28,256($sp)
				LVL3 = .
				LBE41 = .
				LBE40 = .
				LBE39 = .
    4     print string("Move disk from ".itos(f,0)." to ".itos(t,0).to string(nl))
				move	$6,$20
				LVL19 = .
				addiu	$4,$4,-1
				LVL20 = .
				.option	pic0
				jal	DOHANOI.6001
				nop
				.option	pic2
				LVL21 = .
				lw	$28,256($sp)
				LVL22 = .
				.option	pic0
				b	$L12
				.option	pic2
				move	$6,$0
		$L11:
				lw	$25,%call16(__stack_chk_fail)($28)
				.reloc	1f,R_MIPS_JALR,__stack_chk_fail
			1:	jalr	$25
				nop
				LVL23 = .
				.set	macro
				.set	reorder
				.end	DOHANOI.6001
		$LFE186:
				.align	2
				.globl	main
				LFB185 = .
    5     do hanoi(n - 1, u, t, f) %if n >= 2
				slt	$2,$17,2
				bne	$2,$0,$L1
				move	$7,$19
				move	$6,$18
				move	$5,$20
				addiu	$4,$17,-1
				.option	pic0
				jal	DOHANOI.6001
				nop
				.option	pic2
				LVL13 = .
				lw	$28,256($sp)
				L5 = .
		$L1:
    6   %end
				addiu	$6,$sp,1548
				addiu	$5,$sp,1292
				addiu	$16,$sp,1036
				move	$4,$16
				lw	$25,%call16(_imp_join)($28)
				.reloc	1f,R_MIPS_JALR,_imp_join
			1:	jalr	$25
				nop
				LVL4 = .
				lw	$28,256($sp)
				LBE38 = .
				addiu	$6,$sp,1804
				move	$5,$16
				addiu	$16,$sp,780
				move	$4,$16
				lw	$25,%call16(_imp_join)($28)
				.reloc	1f,R_MIPS_JALR,_imp_join
			1:	jalr	$25
				nop
				LVL5 = .
				lw	$28,256($sp)
				LVL6 = .
				LBE37 = .
				LBB42 = .
				LBB43 = .
				LBB44 = .
				move	$6,$0
				move	$5,$18
				addiu	$4,$sp,2828
				lw	$25,%call16(_imp_itos)($28)
				.reloc	1f,R_MIPS_JALR,_imp_itos
			1:	jalr	$25
				nop
				LVL7 = .
				lw	$28,256($sp)
				LVL8 = .
				LBE44 = .
				LBE43 = .
				LBE42 = .
				addiu	$6,$sp,2060
				move	$5,$16
				addiu	$16,$sp,524
				move	$4,$16
				lw	$25,%call16(_imp_join)($28)
				.reloc	1f,R_MIPS_JALR,_imp_join
			1:	jalr	$25
				nop
				LVL9 = .
				lw	$28,256($sp)
				LVL10 = .
				LBE36 = .
				addiu	$6,$sp,2316
				move	$5,$16
				addiu	$16,$sp,2572
				move	$4,$16
				lw	$25,%call16(_imp_join)($28)
				.reloc	1f,R_MIPS_JALR,_imp_join
			1:	jalr	$25
				nop
				LVL11 = .
				lw	$28,256($sp)
				addiu	$2,$sp,268
				move	$4,$16
				addiu	$3,$sp,524
		$L3:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($4)
				sw	$7,4($4)
				sw	$6,8($4)
				sw	$5,12($4)
				addiu	$2,$2,16
				bne	$2,$3,$L3
				addiu	$4,$4,16
				LBE35 = .
				LBE34 = .
				LBB45 = .
				LBB46 = .
				addiu	$2,$sp,2588
				addiu	$3,$sp,16
				addiu	$4,$sp,2828
		$L4:
				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,$L4
				addiu	$3,$3,16
				lw	$4,2572($sp)
				lw	$5,2576($sp)
				lw	$6,2580($sp)
				lw	$7,2584($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL12 = .
				lw	$28,256($sp)
				LBE46 = .
				LBE45 = .
    7   do hanoi(4, 1, 2, 3)
				lw	$3,3340($sp)
				lw	$2,%got(__stack_chk_guard)($28)
				lw	$2,0($2)
				bne	$3,$2,$L11
				lw	$31,3364($sp)
				lw	$20,3360($sp)
				LVL14 = .
				lw	$19,3356($sp)
				LVL15 = .
				lw	$18,3352($sp)
				LVL16 = .
				lw	$17,3348($sp)
				LVL17 = .
				lw	$16,3344($sp)
				jr	$31
				addiu	$sp,$sp,3368
				LVL18 = .
		$L10:
    8   print string("Towers of Hanoi puzzle completed!".to string(nl))
    9 %end %of %program
    9 Statements compiled
				addiu	$6,$sp,780
				addiu	$5,$sp,524
				addiu	$16,$sp,1036
				move	$4,$16
				lw	$25,%call16(_imp_join)($28)
				.reloc	1f,R_MIPS_JALR,_imp_join
			1:	jalr	$25
				nop
				LVL29 = .
				lw	$28,256($sp)
				addiu	$2,$sp,268
				move	$4,$16
				addiu	$3,$sp,524
		$L14:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($4)
				sw	$7,4($4)
				sw	$6,8($4)
				sw	$5,12($4)
				addiu	$2,$2,16
				bne	$2,$3,$L14
				addiu	$4,$4,16
				LBE48 = .
				LBE47 = .
				LBB49 = .
				LBB50 = .
				addiu	$2,$sp,1052
				addiu	$3,$sp,16
				addiu	$4,$sp,1292
		$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
				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
				LVL30 = .
				lw	$28,256($sp)
				LVL31 = .
				LBE50 = .
				LBE49 = .
				LBB51 = .
				LBB52 = .
				move	$4,$0
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL32 = .
				LBE52 = .
				LBE51 = .
				.set	macro
				.set	reorder
				.end	main
		$LFE185:
		$Letext0:
