         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.machinemode zarch
				.machine "zEC12"
		.text
		.Ltext0:
				.section	.rodata
				.align	2
		.LC0:
				.byte	19
				.string	"TEST OK (Unswopped)"
				.zero	235
				.align	2
		.LC1:
				.byte	17
				.string	"TEST OK (Swopped)"
				.zero	237
		.text
				.align	8
		.globl main
		main:
		.LFB185:
		.LVL0:
				stmg	%r14,%r15,112(%r15)
				lay	%r15,-960(%r15)
				ear	%r1,%a0
				sllg	%r1,%r1,32
				ear	%r1,%a1
				mvc	952(8,%r15),40(%r1)
    2
				brasl	%r14,_imp_initialise@PLT
		.LVL1:
    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
				xc	416(24,%r15),416(%r15)
   13       R_VOL(1)='A'
				mvi	428(%r15),65
   14       R_VOL(2)='B'
				mvi	429(%r15),66
   15       R_VOL(3)='C'
				mvi	430(%r15),67
   16       R_VOL(4)='D'
				mvi	431(%r15),68
   17       R_VOL(5)='E'
				mvi	432(%r15),69
		.LVL2:
				aghik	%r1,%r15,416
		.LVL3:
				lghi	%r2,5
		.LVL4:
		.L2:
   18       %FOR I=1,1,5 %CYCLE
   19          BYTEINTEGER(ADDR(R_I)+1+I)=R_VOL(I)
				mvc	2(1,%r1),12(%r1)
		.LDL1:
				aghi	%r1,1
		.LVL5:
   20       %REPEAT
   21       I=ADDR(R_VOL(5))
				brctg	%r2,.L2
		.L3:
		.LBB22:
		.LBB23:
				aghik	%r3,%r15,432
		.LVL6:
		.LBE23:
		.LBE22:
		.LBB24:
		.LBB25:
				aghik	%r1,%r15,434
		.LVL7:
		.LBE25:
		.LBE24:
   22       J=ADDR(R_LAB(1))
   23       %IF R_I=M'AB' %AND R_J=M'CDE'<<8 %AND J-I=2 %THEN %c
				l	%r2,416(%r15)
				lhi	%r4,16706
				crje	%r2,%r4,.L9
		.L4:
   24          PRINTSTRING("TEST OK (Unswopped)") %AND %STOP
				l	%r4,420(%r15)
				cfi	%r4,1128547584
				jne	.L5
   25       %if R_I=M'BA'<<16 %and R_j=M'EDC' %and J-I=2 %then %C
				llilh	%r4,16961
				crjlh	%r2,%r4,.L5
				sr	%r1,%r3
		.LVL13:
				cijlh	%r1,2,.L5
		.LBB28:
   26          PRINTSTRING("TEST OK (Swopped)") %and %stop
				l	%r4,420(%r15)
				cfi	%r4,4539459
				je	.L10
		.LVL8:
		.L5:
				larl	%r1,.LC0
				mvc	696(256,%r15),0(%r1)
				mvc	440(256,%r15),696(%r15)
				mvc	696(256,%r15),440(%r15)
		.LBE28:
		.LBB29:
		.LBB30:
				mvc	160(256,%r15),696(%r15)
				aghik	%r2,%r15,160
				brasl	%r14,_imp_printstring@PLT
		.LVL14:
		.LBE30:
		.LBE29:
		.LBB31:
		.LBB32:
				lghi	%r2,0
				brasl	%r14,exit@PLT
		.LVL15:
		.L10:
		.LBE32:
		.LBE31:
   27       WRITE(R_I,5)
				lghi	%r3,5
		.LVL9:
				lgfr	%r2,%r2
				brasl	%r14,_imp_writeint@PLT
		.LVL10:
				sr	%r1,%r3
		.LVL16:
				cijlh	%r1,2,.L5
		.LBB33:
				larl	%r1,.LC1
				mvc	696(256,%r15),0(%r1)
				mvc	440(256,%r15),696(%r15)
				mvc	696(256,%r15),440(%r15)
		.LBE33:
		.LBB34:
		.LBB35:
				mvc	160(256,%r15),696(%r15)
				aghik	%r2,%r15,160
				brasl	%r14,_imp_printstring@PLT
		.LVL17:
		.LBE35:
		.LBE34:
		.LBB36:
		.LBB37:
				lghi	%r2,0
				brasl	%r14,exit@PLT
		.LVL18:
		.LBE37:
		.LBE36:
		.LFE185:
		.Letext0:
   28       WRITE(R_J,5)
				lghi	%r3,5
				lgf	%r2,420(%r15)
				brasl	%r14,_imp_writeint@PLT
		.LVL11:
		.LBB26:
		.LBB27:
				lghi	%r2,0
				brasl	%r14,exit@PLT
		.LVL12:
		.L9:
		.LBE27:
		.LBE26:
   29 %ENDOFPROGRAM
   22 Statements compiled
