         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
				.globl main
		main:
		.LFB185:
		.LVL0:
				stwu 1,-816(1)
				mflr 0
				stw 0,820(1)
				lwz 9,-28680(2)
				stw 9,812(1)
				li 9,0
    2
				bl _imp_initialise
		.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
				li 9,0
				stw 9,276(1)
				stw 9,280(1)
				stw 9,284(1)
				stw 9,292(1)
				stw 9,296(1)
   13       R_VOL(1)='A'
				li 9,65
				stb 9,288(1)
   14       R_VOL(2)='B'
				li 9,66
				stb 9,289(1)
   15       R_VOL(3)='C'
				li 9,67
				stb 9,290(1)
   16       R_VOL(4)='D'
				li 9,68
				stb 9,291(1)
   17       R_VOL(5)='E'
				li 9,69
				stb 9,292(1)
		.LVL2:
				addi 9,1,277
				li 10,5
				mtctr 10
		.LVL3:
		.L2:
   18       %FOR I=1,1,5 %CYCLE
   19          BYTEINTEGER(ADDR(R_I)+1+I)=R_VOL(I)
				lbz 10,11(9)
				stbu 10,1(9)
		.LVL4:
		.LDL1:
   20       %REPEAT
   21       I=ADDR(R_VOL(5))
				bdnz .L2
		.L3:
		.LVL5:
   22       J=ADDR(R_LAB(1))
   23       %IF R_I=M'AB' %AND R_J=M'CDE'<<8 %AND J-I=2 %THEN %c
				lwz 3,276(1)
				cmpwi 7,3,16706
				beq 7,.L9
		.L4:
   24          PRINTSTRING("TEST OK (Unswopped)") %AND %STOP
				lis 10,0x4344
				ori 10,10,0x4500
				lwz 9,280(1)
				cmpw 7,9,10
				bne 7,.L5
		.LBB24:
   25       %if R_I=M'BA'<<16 %and R_j=M'EDC' %and J-I=2 %then %C
				lis 9,0x4241
				cmpw 7,3,9
				bne 7,.L5
   26          PRINTSTRING("TEST OK (Swopped)") %and %stop
				lis 10,0x45
				ori 10,10,0x4443
				lwz 9,280(1)
				cmpw 7,9,10
				beq 7,.L10
		.L5:
				li 5,256
				lis 4,.LANCHOR0@ha
				la 4,.LANCHOR0@l(4)
				addi 3,1,556
				bl memcpy
		.LVL9:
				li 5,256
				addi 4,1,556
				addi 3,1,300
				bl memcpy
		.LVL10:
				li 5,256
				addi 4,1,300
				addi 3,1,556
				bl memcpy
		.LVL11:
		.LBE24:
		.LBB25:
		.LBB26:
				li 5,256
				addi 4,1,556
				addi 3,1,16
				bl memcpy
		.LVL12:
				addi 3,1,16
				bl _imp_printstring
		.LVL13:
		.LBE26:
		.LBE25:
		.LBB27:
		.LBB28:
				li 3,0
				bl exit
		.LVL14:
		.L10:
		.LBE28:
		.LBE27:
		.LBB29:
				li 5,256
				lis 4,.LANCHOR0@ha
				la 4,.LANCHOR0@l(4)
				addi 4,4,256
				addi 3,1,556
				bl memcpy
		.LVL15:
				li 5,256
				addi 4,1,556
				addi 3,1,300
				bl memcpy
		.LVL16:
				li 5,256
				addi 4,1,300
				addi 3,1,556
				bl memcpy
		.LVL17:
		.LBE29:
		.LBB30:
		.LBB31:
				li 5,256
				addi 4,1,556
				addi 3,1,16
				bl memcpy
		.LVL18:
				addi 3,1,16
				bl _imp_printstring
		.LVL19:
		.LBE31:
		.LBE30:
		.LBB32:
		.LBB33:
				li 3,0
				bl exit
		.LVL20:
		.LBE33:
		.LBE32:
		.LFE185:
				.section	.rodata
				.set	.LANCHOR0,. + 0
		.LC0:
				.byte	19
				.string	"TEST OK (Unswopped)"
				.zero	235
		.LC1:
				.byte	17
				.string	"TEST OK (Swopped)"
				.zero	237
				.section	".text"
		.Letext0:
   27       WRITE(R_I,5)
				li 4,5
				bl _imp_writeint
		.LVL6:
   28       WRITE(R_J,5)
				li 4,5
				lwz 3,280(1)
				bl _imp_writeint
		.LVL7:
		.LBB22:
		.LBB23:
				li 3,0
				bl exit
		.LVL8:
		.L9:
		.LBE23:
		.LBE22:
   29 %ENDOFPROGRAM
   22 Statements compiled
