         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.section	".text"
		.Ltext0:
				.section	".rodata"
		.LC2:
				.byte	15
				.asciz	"\nWRONG ANSWERS\n"
				.skip	239
		.LC0:
				.byte	35
				.asciz	"\nTEST OK    (BYTE ADDRESS ANSWERS)\n"
				.skip	219
				.section	".text"
				.align 4
				.global main
				.proc	04
		main:
		.LFB185:
				.register	%g2, #scratch
				.register	%g3, #scratch
				.register	%g7, #ignore
		.LVL0:
				save	%sp, -1248, %sp
		.LVL1:
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
    2 %RECORDFORMAT F1(%INTEGER I,J,K,L)
				mov	%i1, %o1
				call	_imp_initialise, 0
				 mov	%i0, %o0
		.LVL2:
		.LBB39:
		.LBB40:
				add	%fp, 1235, %g1
		.LVL3:
		.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	%g1, 8, %g3
		.LBB41:
		.LBB42:
				add	%fp, 1243, %g2
		.LBE42:
		.LBE41:
				cmp	%g3, %g2
				bne,pn	%icc, .L2
				 sra	%g1, 0, %g1
   16       %AND ADDR(RR)+4=K=ADDR(RN) %THEN PRINTSTRING("
				add	%fp, 1235, %g2
				cmp	%g2, %g1
				be,pn	%xcc, .L4
				 add	%fp, 1383, %g1
		.LVL4:
		.L2:
		.LDL1:
		.LBB43:
   17 TEST OK    (BYTE ADDRESS ANSWERS)
				add	%g1, 8, %g3
		.LVL11:
		.LBB48:
		.LBB49:
				add	%fp, 1391, %g2
		.LVL12:
		.LBE49:
		.LBE48:
				cmp	%g3, %g2
				bne,pt	%icc, .L5
				 mov	256, %o2
		.LVL13:
		.LBB50:
   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)
				sra	%g1, 0, %g2
				xor	%g1, %g2, %g4
				mov	0, %g3
				movrne	%g4, 1, %g3
				orcc	%g3, %g3, %g0
				bne,pt	%icc, .L6
				 sethi	%hi(.LC2), %o1
		.LBE50:
		.LBB51:
   22 ")  %AND %STOP
   23 PRINTSTRING("
				mov	256, %o2
		.L5:
				sethi	%hi(.LC2), %o1
		.L6:
				or	%o1, %lo(.LC2), %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL5:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL6:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL7:
		.LBE43:
		.LBB44:
		.LBB45:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 975, %o0
		.LVL8:
				call	_imp_printstring, 0
				 add	%fp, 975, %o0
		.LVL9:
		.LBE45:
		.LBE44:
		.LBB46:
		.LBB47:
				call	exit, 0
				 mov	0, %o0
		.LVL10:
		.L4:
		.LBE47:
		.LBE46:
   24 WRONG ANSWERS
   25 ")
				mov	256, %o2
				sethi	%hi(.LC0), %o1
				or	%o1, %lo(.LC0), %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL14:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL15:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL16:
		.LBE51:
		.LBB52:
		.LBB53:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 975, %o0
		.LVL17:
				call	_imp_printstring, 0
				 add	%fp, 975, %o0
		.LVL18:
		.LBE53:
		.LBE52:
		.LBB54:
		.LBB55:
				call	exit, 0
				 mov	0, %o0
		.LVL19:
		.LBE55:
		.LBE54:
				nop
		.LFE185:
		.Letext0:
   26 %ENDOFPROGRAM
   18 Statements compiled
