         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
				.globl main
		main:
		.LFB185:
		.LVL0:
				stwu 1,-4688(1)
				mflr 0
				stw 0,4692(1)
				stw 24,4656(1)
				stw 25,4660(1)
				stw 26,4664(1)
				stw 27,4668(1)
				stw 28,4672(1)
				stw 29,4676(1)
				stw 30,4680(1)
				stw 31,4684(1)
				lwz 9,-28680(2)
				stw 9,4652(1)
				li 9,0
    2   ! It would appear that Imp and C do not store their arrays in the same x-major order.
				bl _imp_initialise
		.LVL1:
    3   %integerarray d2(0:1, 0:2)
    4   %ownintegerarray d1(0:5) = 0,1,2,3,4,5
    5   %integername d, e
    6   %integer i,j
    7   d == d2(0,0);            e == d1(0);              d = e;
    8   d == INTEGER(addr(d)+4); e == INTEGER(ADDR(e)+4); d = e
    9   d == INTEGER(addr(d)+4); e == INTEGER(ADDR(e)+4); d = e
				lis 9,.LANCHOR0@ha
				la 10,.LANCHOR0@l(9)
				lwz 8,.LANCHOR0@l(9)
				addi 9,1,4656
				stwu 8,-4380(9)
		.LVL2:
   10   d == INTEGER(addr(d)+4); e == INTEGER(ADDR(e)+4); d = e
				lwz 8,4(10)
				stw 8,4(9)
   11   d == INTEGER(addr(d)+4); e == INTEGER(ADDR(e)+4); d = e
				lwz 8,8(10)
				stw 8,8(9)
   12   d == INTEGER(addr(d)+4); e == INTEGER(ADDR(e)+4); d = e
				lwz 8,12(10)
				stw 8,12(9)
   13   %for i = 0, 1, 1 %cycle
				lwz 8,16(10)
				stw 8,16(9)
   14     %for j = 0, 1, 2 %cycle
				lwz 10,20(10)
				stw 10,20(9)
		.LVL3:
				addi 24,1,272
				li 29,-1
		.LBB76:
   15       printstring("d2(");write(i,0);printstring(", ");write(j,0);printstring(") = "); write(d2(i,j),0);printstring(",  ");
				lis 28,.LANCHOR1@ha
				la 28,.LANCHOR1@l(28)
		.LBE76:
		.LBB77:
				li 31,-1
		.LVL6:
		.L2:
				li 5,256
				mr 4,28
				addi 3,1,4396
				bl memcpy
		.LVL8:
				li 5,256
				addi 4,1,4396
				addi 3,1,300
				bl memcpy
		.LVL9:
				li 5,256
				addi 4,1,300
				addi 3,1,3372
				bl memcpy
		.LVL10:
		.LBE80:
		.LBB81:
		.LBB82:
				li 5,256
				addi 4,1,3372
				addi 3,1,16
				bl memcpy
		.LVL11:
				addi 3,1,16
				bl _imp_printstring
		.LVL12:
		.LBE82:
		.LBE81:
   16     %repeat
				li 4,0
				mr 3,29
				bl _imp_writeint
		.LVL13:
		.LBB83:
				cmpwi 7,29,1
				bne 7,.L4
		.L5:
		.LBB94:
		.LBB95:
				bl _imp_newline
		.LVL32:
		.LBE95:
		.LBE94:
				li 29,-1
		.LBB96:
   17     newline
				addi 25,28,256
		.LBE77:
		.LBB78:
				addi 29,29,1
		.LVL5:
				mr 30,24
				li 5,256
				mr 4,25
				addi 3,1,4396
				bl memcpy
		.LVL14:
				li 5,256
				addi 4,1,4396
				addi 3,1,556
				bl memcpy
		.LVL15:
				li 5,256
				addi 4,1,556
				addi 3,1,3116
				bl memcpy
		.LVL16:
		.LBE83:
		.LBB84:
		.LBB85:
				li 5,256
				addi 4,1,3116
				addi 3,1,16
				bl memcpy
		.LVL17:
				addi 3,1,16
				bl _imp_printstring
		.LVL18:
		.LBE85:
		.LBE84:
				cmpwi 7,31,2
				bne 7,.L2
		.L3:
		.LBB92:
		.LBB93:
				bl _imp_newline
		.LVL31:
		.LDL2:
				addi 24,24,12
		.LBE93:
		.LBE92:
   18   %repeat
				addi 31,31,1
		.LVL7:
		.LBB80:
				li 4,0
				mr 3,31
				bl _imp_writeint
		.LVL19:
		.LBB86:
   19   newline
				addi 26,28,512
		.LBE78:
		.LBB79:
				li 5,256
				mr 4,26
				addi 3,1,4396
				bl memcpy
		.LVL20:
				li 5,256
				addi 4,1,4396
				addi 3,1,812
				bl memcpy
		.LVL21:
				li 5,256
				addi 4,1,812
				addi 3,1,2860
				bl memcpy
		.LVL22:
		.LBE86:
		.LBB87:
		.LBB88:
				li 5,256
				addi 4,1,2860
				addi 3,1,16
				bl memcpy
		.LVL23:
				addi 3,1,16
				bl _imp_printstring
		.LVL24:
		.LBE88:
		.LBE87:
   20   %for i = 0, 1, 2 %cycle
				li 4,0
				lwzu 3,4(30)
				bl _imp_writeint
		.LVL25:
		.LBB89:
				li 5,256
				mr 4,27
				addi 3,1,4396
				bl memcpy
		.LVL26:
				li 5,256
				addi 4,1,4396
				addi 3,1,1068
				bl memcpy
		.LVL27:
				li 5,256
				addi 4,1,1068
				addi 3,1,2604
				bl memcpy
		.LVL28:
		.LBE89:
		.LBB90:
		.LBB91:
				li 5,256
				addi 4,1,2604
				addi 3,1,16
				bl memcpy
		.LVL29:
				addi 3,1,16
				bl _imp_printstring
		.LVL30:
		.LDL1:
		.LBE91:
		.LBE90:
   21     %for j = 0, 1, 1 %cycle
				addi 27,28,768
		.LVL4:
		.L4:
		.LBE79:
   22       printstring("d2(");write(j,0);printstring(", ");write(i,0);printstring(") = "); write(d2(j,i),0);printstring(",  ");
				lis 28,.LANCHOR1@ha
				la 28,.LANCHOR1@l(28)
		.LBE96:
		.LBB97:
				li 31,-1
		.LVL37:
		.L6:
				li 5,256
				mr 4,28
				addi 3,1,2092
				bl memcpy
		.LVL39:
				li 5,256
				addi 4,1,2092
				addi 3,1,1324
				bl memcpy
		.LVL40:
				li 5,256
				addi 4,1,1324
				addi 3,1,4396
				bl memcpy
		.LVL41:
		.LBE102:
		.LBB103:
		.LBB104:
				li 5,256
				addi 4,1,4396
				addi 3,1,16
				bl memcpy
		.LVL42:
				addi 3,1,16
				bl _imp_printstring
		.LVL43:
		.LBE104:
		.LBE103:
   23     %repeat
				cmpwi 7,29,2
				beq 7,.L16
		.LVL35:
		.L8:
				li 4,0
				mr 3,31
				bl _imp_writeint
		.LVL44:
		.LBB105:
   24     newline
				addi 25,28,256
		.LBE97:
		.LBB98:
				addi 29,29,1
		.LVL36:
				slwi 30,29,2
				addi 9,1,276
				add 30,30,9
				li 5,256
				mr 4,25
				addi 3,1,2092
				bl memcpy
		.LVL45:
				li 5,256
				addi 4,1,2092
				addi 3,1,1580
				bl memcpy
		.LVL46:
				li 5,256
				addi 4,1,1580
				addi 3,1,4140
				bl memcpy
		.LVL47:
		.LBE105:
		.LBB106:
		.LBB107:
				li 5,256
				addi 4,1,4140
				addi 3,1,16
				bl memcpy
		.LVL48:
				addi 3,1,16
				bl _imp_printstring
		.LVL49:
		.LBE107:
		.LBE106:
				cmpwi 7,31,1
				bne 7,.L6
   25   %repeat
				addi 31,31,1
		.LVL38:
		.LBB102:
				li 4,0
				mr 3,29
				bl _imp_writeint
		.LVL50:
		.LBB108:
   26   newline
				addi 26,28,512
		.LBE98:
		.LBB99:
				li 5,256
				mr 4,26
				addi 3,1,2092
				bl memcpy
		.LVL51:
				li 5,256
				addi 4,1,2092
				addi 3,1,1836
				bl memcpy
		.LVL52:
				li 5,256
				addi 4,1,1836
				addi 3,1,3884
				bl memcpy
		.LVL53:
		.LBE108:
		.LBB109:
		.LBB110:
				li 5,256
				addi 4,1,3884
				addi 3,1,16
				bl memcpy
		.LVL54:
				addi 3,1,16
				bl _imp_printstring
		.LVL55:
		.LBE110:
		.LBE109:
				b .L17
		.L16:
		.L9:
		.LBB114:
		.LBB115:
				bl _imp_newline
		.LVL62:
		.LBE115:
		.LBE114:
		.LBB116:
		.LBB117:
				li 3,0
				bl exit
		.LVL63:
		.LBE117:
		.LBE116:
		.LFE185:
				.section	.rodata
				.set	.LANCHOR1,. + 0
		.LC0:
				.byte	3
				.string	"d2("
				.zero	251
		.LC1:
				.byte	2
				.string	", "
				.zero	252
		.LC2:
				.byte	4
				.string	") = "
				.zero	250
		.LC3:
				.byte	3
				.string	",  "
				.zero	251
				.section	".data"
				.align 2
				.set	.LANCHOR0,. + 0
		D1.6985:
				.long	0
				.long	1
				.long	2
				.long	3
				.long	4
				.long	5
				.section	".text"
		.Letext0:
   27 %endofprogram
				li 4,0
				lwz 3,0(30)
				bl _imp_writeint
		.LVL56:
		.LBB111:
				li 5,256
				mr 4,27
				addi 3,1,2092
				bl memcpy
		.LVL57:
				li 5,256
				addi 4,1,2092
				addi 3,1,2348
				bl memcpy
		.LVL58:
				li 5,256
				addi 4,1,2348
				addi 3,1,3628
				bl memcpy
		.LVL59:
		.LBE111:
		.LBB112:
		.LBB113:
				li 5,256
				addi 4,1,3628
				addi 3,1,16
				bl memcpy
		.LVL60:
				addi 3,1,16
				bl _imp_printstring
		.LVL61:
		.LDL4:
				addi 30,30,12
		.LBE113:
		.LBE112:
   50 Statements compiled
				addi 27,28,768
				b .L8
		.LVL33:
		.L17:
		.L7:
		.LBE99:
		.LBB100:
		.LBB101:
				bl _imp_newline
		.LVL34:
		.LDL3:
		.LBE101:
		.LBE100:
