         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
		.Ltext0:
				.globl	main
		main:
		.LFB185:
		.LVL0:
				pushq	%r12
				pushq	%rbp
				pushq	%rbx
				subq	$1008, %rsp
				movq	%fs:40, %rax
				movq	%rax, 1000(%rsp)
				xorl	%eax, %eax
    2 %INTEGER I,J,K
				call	_imp_initialise@PLT
		.LVL1:
				movq	%rsp, %r12
				leaq	240(%rsp), %rbp
		.LVL2:
				movl	$0, %r10d
				jmp	.L4
		.LVL3:
		.L19:
		.LDL1:
		.LDL2:
				addl	$65536, %r10d
				addq	$60, %r12
				addq	$60, %rbp
    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
				cmpl	$262144, %r10d
				je	.L18
		.L4:
		.LVL4:
				movl	%r10d, %ebx
				orl	$1090519040, %ebx
				movl	%ebx, %r8d
				orl	%r9d, %r8d
				movl	%r9d, %edi
				orl	%r11d, %edi
				movl	$1, %eax
		.LVL6:
		.L5:
				movl	%r8d, %edx
				orl	%eax, %edx
				movl	%edx, -4(%rcx,%rax,4)
				movl	%edi, %edx
				orl	%eax, %edx
				movl	%edx, -4(%rsi,%rax,4)
		.LDL3:
				addq	$1, %rax
		.LVL7:
   10                B(I,J,K)=M'B'<<24!I<<16!J<<8!K
				movl	%r10d, %r11d
				orl	$1107296256, %r11d
				movq	%rbp, %rsi
				movq	%r12, %rcx
				movl	$512, %r9d
		.LVL5:
		.L2:
				cmpl	$1280, %r9d
				jne	.L2
				jmp	.L19
		.L18:
   11             %REPEAT
				cmpq	$6, %rax
				jne	.L5
		.LDL4:
		.LDL5:
				addl	$256, %r9d
				addq	$20, %rcx
				addq	$20, %rsi
   12          %REPEAT
   13       %REPEAT
   14       %FOR I=0,1,3 %CYCLE
   15          %FOR J=2,1,4 %CYCLE
   16             %FOR K=1,1,5 %CYCLE
				movl	$0, %r11d
				movl	$0, %r9d
   17                %IF A(I,J,K)&X'FFFFFF'#B(I,J,K)&X'FFFFFF' %START
				leaq	240(%rsp), %rdi
		.LVL8:
				movq	%rsp, %rsi
		.L3:
		.LVL9:
				leaq	20(%r9), %rdx
				leaq	80(%r9), %rbx
				leaq	(%r9,%r11), %rax
				leaq	(%rdi,%rax), %r10
				leaq	(%rsi,%rax), %r8
		.LVL10:
		.L8:
				cmpl	$16777215, -20(%r10,%rdx)
				sete	%al
				movzbl	%al, %eax
				testl	%eax, -20(%r8,%rdx)
				je	.L11
				leaq	-16(%rdx), %rax
		.LVL11:
		.L14:
		.LDL6:
		.LDL7:
				cmpl	$16777215, (%rax,%rdi)
				sete	%cl
				movzbl	%cl, %ecx
				testl	%ecx, (%rsi,%rax)
				je	.L11
				addq	$4, %rax
				cmpq	$240, %r9
				jne	.L3
		.L9:
		.LVL12:
		.LBB12:
   18                   PRINTSTRING("ERROR")
				cmpq	%rbx, %rdx
				jne	.L8
		.LDL10:
		.LDL11:
		.LDL12:
				addq	$60, %r9
				subq	$60, %r11
				movabsq	$353518113349, %rax
				movl	$0, %edx
				movq	%rax, 737(%rsp)
				movq	%rdx, 745(%rsp)
				leaq	753(%rsp), %rdi
		.LVL17:
				movl	$239, %ecx
				movl	$0, %eax
				rep stosb
				movb	$5, 736(%rsp)
				leaq	480(%rsp), %rdi
				leaq	736(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL18:
				movb	$5, 480(%rsp)
				leaq	736(%rsp), %rdi
				leaq	480(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LBE17:
		.LBB18:
		.LBB19:
				subq	$256, %rsp
				leaq	992(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL19:
		.LBE19:
		.LBE18:
		.LBB20:
		.LBB21:
				addq	$256, %rsp
				movl	$0, %edi
				call	exit@PLT
		.LVL20:
		.LBE21:
		.LBE20:
		.LFE185:
		.Letext0:
   19                   %MONITOR
				cmpq	%rax, %rdx
				jne	.L14
		.LDL8:
		.LDL9:
				addq	$20, %rdx
   20                   %STOP
   21                %FINISH
   22             %REPEAT
   23          %REPEAT
   24       %REPEAT
   25       PRINTSTRING("TEST OK")
				movabsq	$21197623525590356, %rax
				movl	$0, %edx
				movq	%rax, 737(%rsp)
				movq	%rdx, 745(%rsp)
				leaq	753(%rsp), %rdi
		.LVL13:
				movl	$239, %ecx
				movl	$0, %eax
				rep stosb
				movb	$7, 736(%rsp)
				leaq	480(%rsp), %rdi
				leaq	736(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL14:
				movb	$7, 480(%rsp)
				leaq	736(%rsp), %rdi
				leaq	480(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LBE12:
		.LBB13:
		.LBB14:
				subq	$256, %rsp
				leaq	992(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL15:
		.LBE14:
		.LBE13:
		.LBB15:
		.LBB16:
				addq	$256, %rsp
				movl	$0, %edi
				call	exit@PLT
		.LVL16:
		.L11:
		.LBE16:
		.LBE15:
		.LBB17:
   26 %ENDOFPROGRAM
   28 Statements compiled
