         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.section	".text"
		.Ltext0:
				.section	".rodata"
		.LC1:
				.byte	7
				.asciz	"TEST OK"
				.skip	247
		.LC0:
				.byte	5
				.asciz	"ERROR"
				.skip	249
				.section	".text"
				.align 4
				.global main
				.proc	04
		main:
		.LFB185:
				.register	%g2, #scratch
				.register	%g3, #scratch
				.register	%g7, #ignore
		.LVL0:
				save	%sp, -1440, %sp
		.LVL1:
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
    2 %INTEGER I,J,K
				mov	%i1, %o1
				call	_imp_initialise, 0
				 mov	%i0, %o0
		.LVL2:
				mov	0, %i0
				mov	0, %i1
		.LVL3:
    3       I=3; J=4; K=5
    4 %INTEGERARRAY A(0:3,2:4,1:5)
    5 %INTEGERARRAY B(0:I,2:J,1:K)
    6       %FOR I=0,1,3 %CYCLE
    7          %FOR J=2,1,4 %CYCLE
    8             %FOR K=1,1,5 %CYCLE
    9                A(I,J,K)=M'A'<<24!I<<16!J<<8!K
				sethi	%hi(1090519040), %o2
				add	%fp, 1287, %i3
				add	%fp, 1047, %i4
		.LVL4:
				ba,pt	%xcc, .L4
				 sethi	%hi(65536), %o4
		.LVL5:
		.L18:
		.LDL1:
		.LDL2:
				cmp	%i0, 240
				be,pn	%xcc, .L17
				 add	%i1, %o4, %i1
		.LVL6:
		.L4:
				or	%i1, %o2, %o5
				or	%i1, %o3, %o7
				mov	%i0, %i2
				mov	512, %i5
		.LVL7:
		.L2:
				or	%o5, %i5, %g5
				or	%i5, %o7, %g4
				mov	%i2, %g2
				mov	0, %g1
		.LVL8:
		.L5:
				or	%g5, %g1, %g3
				st	%g3, [%g2+%i3]
   10                B(I,J,K)=M'B'<<24!I<<16!J<<8!K
				sethi	%hi(1107296256), %o3
				or	%g4, %g1, %g3
				st	%g3, [%g2+%i4]
		.LDL3:
				cmp	%i5, 1280
				bne,pt	%icc, .L2
				 add	%i2, 20, %i2
				ba,pt	%xcc, .L18
				 add	%i0, 60, %i0
		.L17:
   11             %REPEAT
				cmp	%g1, 5
				bne,pt	%icc, .L5
				 add	%g2, 4, %g2
		.LDL4:
		.LDL5:
				add	%i5, 256, %i5
   12          %REPEAT
				add	%g1, 1, %g1
		.LVL9:
   13       %REPEAT
   14       %FOR I=0,1,3 %CYCLE
   15          %FOR J=2,1,4 %CYCLE
   16             %FOR K=1,1,5 %CYCLE
				mov	0, %i1
				mov	0, %i0
				mov	%i1, %g5
				mov	3, %i2
		.LVL11:
		.L8:
				lduw	[%g5+%i3], %g1
				xor	%g1, %i5, %g1
				cmp	%g0, %g1
				subx	%g0, -1, %g2
				lduw	[%g5+%i4], %g1
				andcc	%g1, %g2, %g1
				be,pn	%icc, .L11
				 add	%g5, 4, %g2
		.LVL12:
		.L14:
		.LDL6:
		.LDL7:
				lduw	[%g2+%i3], %g3
				xor	%g3, %i5, %g3
				cmp	%g0, %g3
				subx	%g0, -1, %g3
				lduw	[%g2+%i4], %g4
				andcc	%g4, %g3, %g0
				be,pn	%icc, .L11
				 add	%g1, 1, %g1
   17                %IF A(I,J,K)&X'FFFFFF'#B(I,J,K)&X'FFFFFF' %START
				add	%fp, 1047, %i3
				sethi	%hi(16776192), %i5
				or	%i5, 1023, %i5
				add	%fp, 1287, %i4
		.LVL10:
		.L3:
				cmp	%i0, 4
				bne,pt	%xcc, .L3
				 add	%i1, 60, %i1
		.L9:
		.LBB12:
   18                   PRINTSTRING("ERROR")
				addcc	%i2, -1, %i2
		.LVL13:
				bne,pt	%icc, .L8
				 add	%g5, 20, %g5
		.LDL10:
		.LDL11:
		.LDL12:
				add	%i0, 1, %i0
		.LVL14:
				mov	256, %o2
				sethi	%hi(.LC0), %o1
				or	%o1, %lo(.LC0), %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL21:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL22:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL23:
		.LBE17:
		.LBB18:
		.LBB19:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 783, %o0
		.LVL24:
				call	_imp_printstring, 0
				 add	%fp, 783, %o0
		.LVL25:
		.LBE19:
		.LBE18:
		.LBB20:
		.LBB21:
				call	exit, 0
				 mov	0, %o0
		.LVL26:
		.LBE21:
		.LBE20:
				nop
		.LFE185:
		.Letext0:
   19                   %MONITOR
				cmp	%g1, 5
				bne,pt	%icc, .L14
				 add	%g2, 4, %g2
		.LDL8:
		.LDL9:
   20                   %STOP
   21                %FINISH
   22             %REPEAT
   23          %REPEAT
   24       %REPEAT
   25       PRINTSTRING("TEST OK")
				mov	256, %o2
				sethi	%hi(.LC1), %o1
				or	%o1, %lo(.LC1), %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL15:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL16:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL17:
		.LBE12:
		.LBB13:
		.LBB14:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 783, %o0
		.LVL18:
				call	_imp_printstring, 0
				 add	%fp, 783, %o0
		.LVL19:
		.LBE14:
		.LBE13:
		.LBB15:
		.LBB16:
				call	exit, 0
				 mov	0, %o0
		.LVL20:
		.L11:
		.LBE16:
		.LBE15:
		.LBB17:
   26 %ENDOFPROGRAM
   28 Statements compiled
