         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.machinemode zarch
				.machine "zEC12"
		.text
		.Ltext0:
				.section	.rodata
				.align	2
		.LC0:
				.byte	3
				.string	"d2("
				.zero	251
				.align	2
		.LC1:
				.byte	2
				.string	", "
				.zero	252
				.align	2
		.LC2:
				.byte	4
				.string	") = "
				.zero	250
				.align	2
		.LC3:
				.byte	3
				.string	",  "
				.zero	251
		.text
				.align	8
		.globl main
		main:
		.LFB185:
		.LVL0:
				stmg	%r6,%r15,48(%r15)
				lgr	%r14,%r15
				lay	%r15,-4816(%r15)
				aghi	%r14,-16
				std	%f8,0(%r14)
				std	%f10,8(%r14)
				ear	%r1,%a0
				sllg	%r1,%r1,32
				ear	%r1,%a1
				lay	%r4,4792(%r15)
				mvc	0(8,%r4),40(%r1)
    2   ! It would appear that Imp and C do not store their arrays in the same x-major order.
				brasl	%r14,_imp_initialise@PLT
		.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
				lrl	%r1,D1.6690
				st	%r1,416(%r15)
		.LVL2:
		.LBB76:
		.LBB77:
				aghik	%r8,%r15,416
		.LVL3:
		.LBE77:
		.LBE76:
		.LBB78:
		.LBB79:
				larl	%r2,D1.6690
		.LVL4:
		.LBE79:
		.LBE78:
   10   d == INTEGER(addr(d)+4); e == INTEGER(ADDR(e)+4); d = e
				l	%r1,4(%r2)
				st	%r1,4(%r8)
   11   d == INTEGER(addr(d)+4); e == INTEGER(ADDR(e)+4); d = e
				l	%r1,8(%r2)
				st	%r1,8(%r8)
   12   d == INTEGER(addr(d)+4); e == INTEGER(ADDR(e)+4); d = e
				l	%r1,12(%r2)
				st	%r1,12(%r8)
   13   %for i = 0, 1, 1 %cycle
				l	%r1,16(%r2)
				st	%r1,16(%r8)
   14     %for j = 0, 1, 2 %cycle
				l	%r1,20(%r2)
				st	%r1,20(%r8)
		.LVL5:
				ldgr	%f8,%r8
				lhi	%r7,-1
		.LBB80:
   15       printstring("d2(");write(i,0);printstring(", ");write(j,0);printstring(") = "); write(d2(i,j),0);printstring(",  ");
				larl	%r13,.LC0
		.LBE80:
		.LBB81:
		.LBB82:
				aghik	%r10,%r15,160
		.LBE82:
		.LBE81:
		.LBB84:
				lhi	%r11,-1
				lay	%r1,4536(%r15)
				mvc	0(256,%r1),0(%r13)
				mvc	440(256,%r15),0(%r1)
				mvc	3512(256,%r15),440(%r15)
		.LBE85:
		.LBB86:
		.LBB83:
				mvc	160(256,%r15),3512(%r15)
				lgr	%r2,%r10
				brasl	%r14,_imp_printstring@PLT
		.LVL10:
		.LBE83:
		.LBE86:
   16     %repeat
				lgfr	%r1,%r7
				ldgr	%f10,%r1
		.LVL8:
		.L2:
				lghi	%r3,0
				lgdr	%r2,%f10
				brasl	%r14,_imp_writeint@PLT
		.LVL11:
		.LBB87:
				cijlh	%r7,1,.L4
		.L5:
		.LBB98:
		.LBB99:
				brasl	%r14,_imp_newline@PLT
		.LVL18:
		.LBE99:
		.LBE98:
				lhi	%r8,-1
		.LBB100:
   17     newline
				larl	%r6,.LC1
		.LVL6:
		.L4:
		.LBE84:
				ahi	%r7,1
		.LVL7:
				lgr	%r9,%r8
				lay	%r1,4536(%r15)
				mvc	0(256,%r1),0(%r6)
				mvc	696(256,%r15),0(%r1)
				mvc	3256(256,%r15),696(%r15)
		.LBE87:
		.LBB88:
		.LBB89:
				mvc	160(256,%r15),3256(%r15)
				lgr	%r2,%r10
				brasl	%r14,_imp_printstring@PLT
		.LVL12:
		.LBE89:
		.LBE88:
				lghi	%r3,0
				lgfr	%r2,%r11
				brasl	%r14,_imp_writeint@PLT
		.LVL13:
		.LBB90:
				cijlh	%r11,2,.L2
		.L3:
		.LBB96:
		.LBB97:
				brasl	%r14,_imp_newline@PLT
		.LVL17:
		.LDL2:
				aghi	%r8,12
		.LBE97:
		.LBE96:
   18   %repeat
				ahi	%r11,1
		.LVL9:
		.LBB85:
   19   newline
				larl	%r1,.LC2
				lay	%r2,4536(%r15)
				mvc	0(256,%r2),0(%r1)
				mvc	952(256,%r15),0(%r2)
				mvc	3000(256,%r15),952(%r15)
		.LBE90:
		.LBB91:
		.LBB92:
				mvc	160(256,%r15),3000(%r15)
				lgr	%r2,%r10
				brasl	%r14,_imp_printstring@PLT
		.LVL14:
		.LBE92:
		.LBE91:
   20   %for i = 0, 1, 2 %cycle
				lghi	%r3,0
				lgf	%r2,0(%r9)
				brasl	%r14,_imp_writeint@PLT
		.LVL15:
		.LBB93:
   21     %for j = 0, 1, 1 %cycle
				larl	%r1,.LC3
				lay	%r2,4536(%r15)
				mvc	0(256,%r2),0(%r1)
				mvc	1208(256,%r15),0(%r2)
				mvc	2744(256,%r15),1208(%r15)
		.LBE93:
		.LBB94:
		.LBB95:
				mvc	160(256,%r15),2744(%r15)
				lgr	%r2,%r10
				brasl	%r14,_imp_printstring@PLT
		.LVL16:
		.LDL1:
				aghi	%r9,4
		.LBE95:
		.LBE94:
   22       printstring("d2(");write(j,0);printstring(", ");write(i,0);printstring(") = "); write(d2(j,i),0);printstring(",  ");
				larl	%r6,.LC0
		.LBE100:
		.LBB101:
		.LBB102:
				aghik	%r10,%r15,160
		.LBE102:
		.LBE101:
		.LBB104:
				lhi	%r11,-1
				mvc	2232(256,%r15),0(%r6)
				mvc	1464(256,%r15),2232(%r15)
				lay	%r1,4536(%r15)
				mvc	0(256,%r1),1464(%r15)
		.LBE107:
		.LBB108:
		.LBB103:
				mvc	160(256,%r15),0(%r1)
				lgr	%r2,%r10
				brasl	%r14,_imp_printstring@PLT
		.LVL25:
		.LBE103:
		.LBE108:
   23     %repeat
				cije	%r8,2,.L16
		.LVL21:
		.L8:
				ahi	%r8,1
		.LVL22:
				lgdr	%r9,%f8
				lghi	%r3,0
				lgfr	%r2,%r11
				brasl	%r14,_imp_writeint@PLT
		.LVL26:
		.LBB109:
   24     newline
				larl	%r7,.LC1
				j	.L8
		.LVL19:
		.L17:
		.L7:
		.LBE104:
		.LBB105:
		.LBB106:
				brasl	%r14,_imp_newline@PLT
		.LVL20:
		.LDL3:
				lgdr	%r1,%f8
				aghi	%r1,4
				ldgr	%f8,%r1
		.LBE106:
		.LBE105:
				mvc	2232(256,%r15),0(%r7)
				mvc	1720(256,%r15),2232(%r15)
				lay	%r1,4280(%r15)
				mvc	0(256,%r1),1720(%r15)
		.LBE109:
		.LBB110:
		.LBB111:
				mvc	160(256,%r15),0(%r1)
				lgr	%r2,%r10
				brasl	%r14,_imp_printstring@PLT
		.LVL27:
		.LBE111:
		.LBE110:
				lghi	%r3,0
				lgdr	%r2,%f10
				brasl	%r14,_imp_writeint@PLT
		.LVL28:
		.LBB112:
				cijlh	%r11,1,.L6
   25   %repeat
				lgfr	%r1,%r8
				ldgr	%f10,%r1
		.LVL23:
		.L6:
				ahi	%r11,1
		.LVL24:
		.LBB107:
   26   newline
				larl	%r1,.LC2
				mvc	2232(256,%r15),0(%r1)
				mvc	1976(256,%r15),2232(%r15)
				mvc	4024(256,%r15),1976(%r15)
		.LBE112:
		.LBB113:
		.LBB114:
				mvc	160(256,%r15),4024(%r15)
				lgr	%r2,%r10
				brasl	%r14,_imp_printstring@PLT
		.LVL29:
		.LBE114:
		.LBE113:
				j	.L17
		.L16:
		.L9:
		.LBB118:
		.LBB119:
				brasl	%r14,_imp_newline@PLT
		.LVL32:
		.LBE119:
		.LBE118:
		.LBB120:
		.LBB121:
				lghi	%r2,0
				brasl	%r14,exit@PLT
		.LVL33:
		.LBE121:
		.LBE120:
		.LFE185:
		.data
				.align	4
		D1.6690:
				.long	0
				.long	1
				.long	2
				.long	3
				.long	4
				.long	5
		.text
		.Letext0:
   27 %endofprogram
				lghi	%r3,0
				lgf	%r2,0(%r9)
				brasl	%r14,_imp_writeint@PLT
		.LVL30:
		.LBB115:
   50 Statements compiled
				larl	%r1,.LC3
				mvc	2232(256,%r15),0(%r1)
				mvc	2488(256,%r15),2232(%r15)
				mvc	3768(256,%r15),2488(%r15)
		.LBE115:
		.LBB116:
		.LBB117:
				mvc	160(256,%r15),3768(%r15)
				lgr	%r2,%r10
				brasl	%r14,_imp_printstring@PLT
		.LVL31:
		.LDL4:
				aghi	%r9,12
		.LBE117:
		.LBE116:
