         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
		.Ltext0:
				.align	2
				.global	main
		main:
		.LFB185:
		.LVL0:
				sub	sp, sp, #1136
				stp	x29, x30, [sp]
				add	x29, sp, 0
				adrp	x2, :got:__stack_chk_guard
				ldr	x2, [x2, #:got_lo12:__stack_chk_guard]
				ldr	x3, [x2]
				str	x3, [x29, 1128]
				mov	x3,0
    2 %RECORDFORMAT F1(%INTEGER I,J,K,L)
				bl	_imp_initialise
		.LVL1:
		.LBB39:
		.LBB40:
				add	x1, x29, 316
		.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
				add	w2, w1, 8
		.LBB41:
		.LBB42:
				add	x0, x29, 324
		.LBE42:
		.LBE41:
				cmp	w2, w0
				bne	.L2
   16       %AND ADDR(RR)+4=K=ADDR(RN) %THEN PRINTSTRING("
				add	x0, x29, 316
				cmp	x0, x1, sxtw
				beq	.L5
		.LVL3:
		.L2:
				stp	x19, x20, [x29, 16]
				str	x21, [x29, 32]
		.LDL1:
		.LBB43:
   17 TEST OK    (BYTE ADDRESS ANSWERS)
				add	w2, w1, 8
		.LVL11:
		.LBB50:
		.LBB51:
				add	x0, x29, 476
		.LVL12:
		.LBE51:
		.LBE50:
				cmp	w2, w0
				bne	.L2
		.LVL13:
		.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)
				sxtw	x0, w1
		.LVL14:
				add	x2, x29, 468
				cmp	x2, x0
				ccmp	x0, x1, 0, eq
				bne	.L2
				stp	x19, x20, [x29, 16]
				str	x21, [x29, 32]
		.LBE52:
		.LBB53:
   22 ")  %AND %STOP
   23 PRINTSTRING("
				add	x19, x29, 872
				mov	x20, 256
				mov	x2, x20
				adrp	x1, .LANCHOR0
				add	x1, x1, :lo12:.LANCHOR0
				add	x1, x1, x20
				mov	x0, x19
				bl	memcpy
		.LVL4:
				add	x21, x29, 616
				mov	x2, x20
				mov	x1, x19
				mov	x0, x21
				bl	memcpy
		.LVL5:
				mov	x2, x20
				mov	x1, x21
				mov	x0, x19
				bl	memcpy
		.LVL6:
		.LBE43:
		.LBB44:
		.LBB45:
				add	x0, x29, 48
				mov	x2, x20
				mov	x1, x19
				mov	x19, x0
				bl	memcpy
		.LVL7:
				mov	x0, x19
				bl	_imp_printstring
		.LVL8:
		.LBE45:
		.LBE44:
		.LBB46:
		.LBB47:
				mov	w0, 0
				bl	exit
		.LVL9:
		.L5:
		.LBE47:
		.LBE46:
		.LBB48:
		.LBB49:
				add	x1, x29, 468
		.LVL10:
		.LBE49:
		.LBE48:
   24 WRONG ANSWERS
   25 ")
				add	x19, x29, 872
				mov	x20, 256
				mov	x2, x20
				adrp	x1, .LANCHOR0
		.LVL15:
				add	x1, x1, :lo12:.LANCHOR0
				mov	x0, x19
				bl	memcpy
		.LVL16:
				add	x21, x29, 616
				mov	x2, x20
				mov	x1, x19
				mov	x0, x21
				bl	memcpy
		.LVL17:
				mov	x2, x20
				mov	x1, x21
				mov	x0, x19
				bl	memcpy
		.LVL18:
		.LBE53:
		.LBB54:
		.LBB55:
				add	x0, x29, 48
				mov	x2, x20
				mov	x1, x19
				mov	x19, x0
				bl	memcpy
		.LVL19:
				mov	x0, x19
				bl	_imp_printstring
		.LVL20:
		.LBE55:
		.LBE54:
		.LBB56:
		.LBB57:
				mov	w0, 0
				bl	exit
		.LVL21:
		.LBE57:
		.LBE56:
		.LFE185:
				.section	.rodata
				.align	3
				.set	.LANCHOR0,. + 0
		.LC0:
				.byte	35
				.string	"\nTEST OK    (BYTE ADDRESS ANSWERS)\n"
				.zero	219
		.LC2:
				.byte	15
				.string	"\nWRONG ANSWERS\n"
				.zero	239
		.Letext0:
   26 %ENDOFPROGRAM
   18 Statements compiled
