         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.option nopic
		.Ltext0:
				.align	1
				.globl	main
		main:
		.LFB185:
		.LVL0:
				add	sp,sp,-1312
				sd	ra,1304(sp)
				sd	s0,1296(sp)
				sd	s1,1288(sp)
				sd	s2,1280(sp)
				sd	s3,1272(sp)
				lui	a5,%hi(__stack_chk_guard)
				ld	a5,%lo(__stack_chk_guard)(a5)
				sd	a5,1256(sp)
    2 %INTEGER I,J,K
				call	_imp_initialise
		.LVL1:
				li	t5,0
				li	t2,0
    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
				li	s3,1090519040
				li	t6,0
				li	s0,65536
				li	ra,240
				j	.L4
		.LVL2:
		.L19:
		.LDL1:
		.LDL2:
				addw	t2,s0,t2
				add	t5,t5,60
				beq	t5,ra,.L18
		.L4:
		.LVL3:
				sext.w	t3,t2
				or	t4,t3,s3
				sext.w	t4,t4
				sext.w	a1,a7
				or	a0,t4,a1
				mv	a5,t6
		.LVL5:
		.L5:
				add	a3,sp,264
				add	a3,a3,a4
				or	a2,a0,a5
				sw	a2,0(a3)
   10                B(I,J,K)=M'B'<<24!I<<16!J<<8!K
				li	s2,1107296256
				li	s1,512
				li	t0,1280
				or	t3,t3,s2
				sext.w	t3,t3
				mv	t1,t5
				mv	a7,s1
		.LVL4:
		.L2:
				or	a1,a1,t3
				mv	a4,t1
				add	a3,sp,504
		.LVL7:
				add	a3,a3,a4
		.LVL8:
				or	a2,a1,a5
				sw	a2,0(a3)
		.LDL3:
				add	a4,a4,4
				bne	a7,t0,.L2
				j	.L19
		.L18:
   11             %REPEAT
				li	a6,5
				bne	a5,a6,.L5
		.LDL4:
		.LDL5:
				addw	a7,a7,256
				add	t1,t1,20
   12          %REPEAT
				addw	a5,a5,1
		.LVL6:
   13       %REPEAT
   14       %FOR I=0,1,3 %CYCLE
   15          %FOR J=2,1,4 %CYCLE
   16             %FOR K=1,1,5 %CYCLE
				li	a6,0
				li	a0,0
		.LVL11:
		.L8:
   17                %IF A(I,J,K)&X'FFFFFF'#B(I,J,K)&X'FFFFFF' %START
				li	a1,16777216
				add	a1,a1,-1
				li	t5,240
		.L3:
		.LVL9:
				add	a5,sp,264
				add	t1,a5,a6
				add	a5,sp,504
		.LVL10:
				add	a7,a5,a6
				lw	a4,0(a7)
				sub	a4,a4,a1
				lw	a5,0(t1)
				seqz	a4,a4
				and	a4,a4,a5
				beqz	a4,.L11
				add	a3,a0,a6
		.LVL12:
		.L14:
		.LDL6:
		.LDL7:
				add	a5,sp,504
		.LVL14:
				add	a5,a5,a3
		.LVL15:
				lw	a5,4(a5)
				sub	a5,a5,a1
				add	a2,sp,264
				add	a2,a2,a3
				lw	a2,4(a2)
				seqz	a5,a5
				and	a5,a5,a2
				beqz	a5,.L11
				add	a3,a3,4
				bne	a6,t5,.L3
		.L9:
		.LBB12:
   18                   PRINTSTRING("ERROR")
				li	t4,60
				bne	a0,t4,.L8
		.LDL10:
		.LDL11:
		.LDL12:
				add	a6,a6,60
				li	a2,256
				lui	a1,%hi(.LANCHOR0)
				addi	a1,a1,%lo(.LANCHOR0)
				add	a0,sp,1000
				call	memcpy
		.LVL22:
				li	a2,256
				add	a1,sp,1000
				add	a0,sp,744
				call	memcpy
		.LVL23:
				li	a2,256
				add	a1,sp,744
				add	a0,sp,1000
				call	memcpy
		.LVL24:
		.LBE17:
		.LBB18:
		.LBB19:
				li	a2,256
				add	a1,sp,1000
				mv	a0,sp
				call	memcpy
		.LVL25:
				mv	a0,sp
				call	_imp_printstring
		.LVL26:
		.LBE19:
		.LBE18:
		.LBB20:
		.LBB21:
				li	a0,0
				call	exit
		.LVL27:
		.LBE21:
		.LBE20:
		.LFE185:
				.section	.rodata
				.align	3
				.set	.LANCHOR0,. + 0
		.LC0:
				.byte	5
				.string	"ERROR"
				.zero	249
		.LC1:
				.byte	7
				.string	"TEST OK"
				.zero	247
		.Letext0:
   19                   %MONITOR
				li	t3,5
				bne	a4,t3,.L14
		.LDL8:
		.LDL9:
				add	t1,t1,20
				add	a7,a7,20
				add	a0,a0,20
   20                   %STOP
				addw	a4,a4,1
		.LVL13:
   21                %FINISH
   22             %REPEAT
   23          %REPEAT
   24       %REPEAT
   25       PRINTSTRING("TEST OK")
				li	a2,256
				lui	a1,%hi(.LANCHOR0+256)
				addi	a1,a1,%lo(.LANCHOR0+256)
				add	a0,sp,1000
				call	memcpy
		.LVL16:
				li	a2,256
				add	a1,sp,1000
				add	a0,sp,744
				call	memcpy
		.LVL17:
				li	a2,256
				add	a1,sp,744
				add	a0,sp,1000
				call	memcpy
		.LVL18:
		.LBE12:
		.LBB13:
		.LBB14:
				li	a2,256
				add	a1,sp,1000
				mv	a0,sp
				call	memcpy
		.LVL19:
				mv	a0,sp
				call	_imp_printstring
		.LVL20:
		.LBE14:
		.LBE13:
		.LBB15:
		.LBB16:
				li	a0,0
				call	exit
		.LVL21:
		.L11:
		.LBE16:
		.LBE15:
		.LBB17:
   26 %ENDOFPROGRAM
   28 Statements compiled
