         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
		.Ltext0:
				.section	.rodata
				.align 8
		.LC0:
				.string	"\nTEST OK    (BYTE ADDRESS ANSWERS)\n"
				.zero	219
				.globl	main
		main:
		.LFB185:
		.LVL0:
				subq	$856, %rsp
				movq	%fs:40, %rax
				movq	%rax, 840(%rsp)
				xorl	%eax, %eax
    2 %RECORDFORMAT F1(%INTEGER I,J,K,L)
				call	_imp_initialise@PLT
		.LVL1:
		.LBB39:
		.LBB40:
				movq	%rsp, %rax
				leaq	4(%rax), %rdx
		.LVL2:
		.LBE40:
		.LBE39:
    3 %RECORDFORMAT F2(%INTEGER P,%RECORD(F1)%ARRAY A(0:8))
    4 %RECORD(F2) R,RP
    5 %RECORD(F2)%NAME RR
    6 %RECORD(F1)%NAME RN
    7 %INTEGER I,J,K,L
    8 RR==RP
    9 I=ADDR(R_A(0))
   10 RN==R_A(0)
   11 J=ADDR(R_A(0)_K)
   12 K=ADDR(RR_A(0))
   13 L=ADDR(RR_A(0)_K)
   14 RN==RR_A(0)
   15 %IF I+8=J %AND ADDR(R)+4=I %AND K+8=L %C
				leal	8(%rdx), %ecx
		.LBB41:
		.LBB42:
				addq	$12, %rax
		.LBE42:
		.LBE41:
				cmpl	%eax, %ecx
				jne	.L2
   16       %AND ADDR(RR)+4=K=ADDR(RN) %THEN PRINTSTRING("
				movq	%rdx, %rax
				movslq	%edx, %rdx
				cmpq	%rdx, %rax
				je	.L5
		.LVL3:
		.L2:
		.LDL1:
		.LBB43:
   17 TEST OK    (BYTE ADDRESS ANSWERS)
				leal	8(%rdx), %ecx
		.LVL10:
		.LBB50:
		.LBB51:
				leaq	172(%rsp), %rax
		.LVL11:
		.LBE51:
		.LBE50:
				cmpl	%eax, %ecx
				jne	.L2
		.LVL12:
		.LBB52:
   18 ") %AND %STOP
   19 %IF I+4=J %AND ADDR(R)+2=I %AND K+4=L %C
   20       %AND ADDR(RR)+2=K=ADDR(RN) %THEN PRINTSTRING("
   21 TEST OK (WORD ADDRESS ANSWERS)
				movslq	%edx, %rax
		.LVL13:
				leaq	164(%rsp), %rcx
				cmpq	%rax, %rcx
				jne	.L2
				cmpq	%rax, %rdx
				jne	.L2
		.LVL14:
		.LBE52:
		.LBB53:
   22 ")  %AND %STOP
   23 PRINTSTRING("
				movabsq	$4692829213383874314, %rax
				movabsq	$2906362582881102, %rdx
				movq	%rax, 577(%rsp)
				movq	%rdx, 585(%rsp)
				movb	$0, 593(%rsp)
				movw	$0, 594(%rsp)
				movl	$0, 596(%rsp)
				leaq	600(%rsp), %rdi
				movl	$29, %ecx
				movl	$0, %eax
				rep stosq
				movb	$15, 576(%rsp)
				movq	576(%rsp), %rax
				movq	584(%rsp), %rdx
				movq	%rax, 320(%rsp)
				movq	%rdx, 328(%rsp)
		.LVL4:
				movb	$15, 320(%rsp)
		.LBE43:
		.LBB44:
		.LBB45:
				pushq	824(%rsp)
		.LVL5:
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	824(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				call	_imp_printstring@PLT
		.LVL6:
		.LBE45:
		.LBE44:
		.LBB46:
		.LBB47:
				addq	$256, %rsp
		.LVL7:
				movl	$0, %edi
				call	exit@PLT
		.LVL8:
		.L5:
		.LBE47:
		.LBE46:
		.LBB48:
		.LBB49:
				leaq	164(%rsp), %rdx
		.LVL9:
		.LBE49:
		.LBE48:
   24 WRONG ANSWERS
   25 ")
				leaq	577(%rsp), %rdi
				leaq	.LC0(%rip), %rsi
				movl	$9, %ecx
				rep movsl
				leaq	613(%rsp), %rdi
				movl	$219, %ecx
				movl	$0, %eax
				rep stosb
				movb	$35, 576(%rsp)
				leaq	320(%rsp), %rdi
				leaq	576(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL15:
				movb	$35, 320(%rsp)
				leaq	576(%rsp), %rdi
				leaq	320(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LBE53:
		.LBB54:
		.LBB55:
				subq	$256, %rsp
		.LVL16:
				leaq	832(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL17:
		.LBE55:
		.LBE54:
		.LBB56:
		.LBB57:
				addq	$256, %rsp
		.LVL18:
				movl	$0, %edi
				call	exit@PLT
		.LVL19:
		.LBE57:
		.LBE56:
		.LFE185:
		.Letext0:
   26 %ENDOFPROGRAM
   18 Statements compiled
