         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.section	".text"
		.Ltext0:
				.section	".rodata"
		.LC0:
				.byte	19
				.asciz	"TEST OK (Unswopped)"
				.skip	235
		.LC1:
				.byte	17
				.asciz	"TEST OK (Swopped)"
				.skip	237
				.section	".text"
				.align 4
				.global main
				.proc	04
		main:
		.LFB185:
				.register	%g2, #scratch
				.register	%g3, #scratch
				.register	%g7, #ignore
		.LVL0:
				save	%sp, -976, %sp
		.LVL1:
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
    2
				mov	%i1, %o1
				call	_imp_initialise, 0
				 mov	%i0, %o0
		.LVL2:
    3 !
    4 ! TEST A MAP USE THAT IS DIFFICULT TO OPTIMISE
    5 !
    6 %RECORDFORMAT F(%INTEGER I,J,K,%BYTEARRAY VOL(1:5),
    7       %BYTE B,%BYTEARRAY LAB(1:3))
    8 %INTEGER I,J
    9 %RECORD(F) SP
   10 %RECORD(F)%NAME R
   11       R==SP
   12       R=0
				stx	%g0, [%fp+1503]
				stx	%g0, [%fp+1511]
				stx	%g0, [%fp+1519]
   13       R_VOL(1)='A'
				mov	65, %g1
				stb	%g1, [%fp+1515]
   14       R_VOL(2)='B'
				mov	66, %g1
				stb	%g1, [%fp+1516]
   15       R_VOL(3)='C'
				mov	67, %g1
				stb	%g1, [%fp+1517]
   16       R_VOL(4)='D'
				mov	68, %g1
				stb	%g1, [%fp+1518]
   17       R_VOL(5)='E'
				mov	69, %g1
				stb	%g1, [%fp+1519]
		.LVL3:
				add	%fp, 1505, %g1
				add	%fp, 1510, %g3
		.LVL4:
   18       %FOR I=1,1,5 %CYCLE
   19          BYTEINTEGER(ADDR(R_I)+1+I)=R_VOL(I)
				ldub	[%g1+10], %g2
		.L10:
				stb	%g2, [%g1]
		.LDL1:
				add	%g1, 1, %g1
		.LVL5:
   20       %REPEAT
   21       I=ADDR(R_VOL(5))
				cmp	%g1, %g3
				bne,a,pt %xcc, .L10
				 ldub	[%g1+10], %g2
		.L3:
		.LBB22:
		.LBB23:
				add	%fp, 1519, %g3
		.LVL6:
		.LBE23:
		.LBE22:
   22       J=ADDR(R_LAB(1))
   23       %IF R_I=M'AB' %AND R_J=M'CDE'<<8 %AND J-I=2 %THEN %c
				lduw	[%fp+1503], %o0
				sethi	%hi(16384), %g1
				or	%g1, 322, %g1
				cmp	%o0, %g1
				be,pn	%icc, .L8
				 add	%fp, 1521, %g2
		.L4:
   24          PRINTSTRING("TEST OK (Unswopped)") %AND %STOP
				lduw	[%fp+1507], %g4
				sethi	%hi(1128547328), %g1
				or	%g1, 256, %g1
				cmp	%g4, %g1
				bne,pt	%icc, .L11
				 mov	5, %o1
   25       %if R_I=M'BA'<<16 %and R_j=M'EDC' %and J-I=2 %then %C
				sethi	%hi(1111556096), %g1
				cmp	%o0, %g1
				bne,pn	%icc, .L5
				 lduw	[%fp+1507], %g4
				sub	%g2, %g3, %g2
		.LVL11:
				cmp	%g2, 2
				bne,pt	%icc, .L11
				 mov	256, %o2
		.LBB26:
   26          PRINTSTRING("TEST OK (Swopped)") %and %stop
				sethi	%hi(4539392), %g1
				or	%g1, 67, %g1
				cmp	%g4, %g1
				be,pn	%icc, .L9
				 sub	%g2, %g3, %g2
		.LVL7:
		.L5:
				sethi	%hi(.LC0), %o1
				or	%o1, %lo(.LC0), %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL12:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL13:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL14:
		.LBE26:
		.LBB27:
		.LBB28:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1247, %o0
		.LVL15:
				call	_imp_printstring, 0
				 add	%fp, 1247, %o0
		.LVL16:
		.LBE28:
		.LBE27:
		.LBB29:
		.LBB30:
				call	exit, 0
				 mov	0, %o0
		.LVL17:
		.L9:
		.LBE30:
		.LBE29:
   27       WRITE(R_I,5)
				mov	5, %o1
		.L11:
				call	_imp_writeint, 0
				 sra	%o0, 0, %o0
		.LVL8:
				cmp	%g2, 2
				bne,pt	%icc, .L11
				 mov	5, %o1
		.LBB31:
				mov	256, %o2
				sethi	%hi(.LC1), %o1
				or	%o1, %lo(.LC1), %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL18:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL19:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL20:
		.LBE31:
		.LBB32:
		.LBB33:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1247, %o0
		.LVL21:
				call	_imp_printstring, 0
				 add	%fp, 1247, %o0
		.LVL22:
		.LBE33:
		.LBE32:
		.LBB34:
		.LBB35:
				call	exit, 0
				 mov	0, %o0
		.LVL23:
		.LBE35:
		.LBE34:
				nop
		.LFE185:
		.Letext0:
   28       WRITE(R_J,5)
				mov	5, %o1
				call	_imp_writeint, 0
				 ldsw	[%fp+1507], %o0
		.LVL9:
		.LBB24:
		.LBB25:
				call	exit, 0
				 mov	0, %o0
		.LVL10:
		.L8:
		.LBE25:
		.LBE24:
   29 %ENDOFPROGRAM
   22 Statements compiled
