         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
				.globl main
		main:
		.LFB185:
		.LVL0:
				stwu 1,-1328(1)
				mflr 0
				stw 0,1332(1)
				stw 31,1324(1)
				lwz 9,-28680(2)
				stw 9,1308(1)
				li 9,0
    2 !***********************************************************************
				bl _imp_initialise
		.LVL1:
		.LDL1:
		.LDL2:
		.LDL3:
		.LDL4:
		.LDL5:
		.LDL6:
		.LDL7:
		.LDL8:
		.LDL9:
		.LDL10:
		.LDL11:
		.LDL12:
		.LDL13:
		.LDL14:
		.LDL15:
		.LDL16:
		.LDL17:
		.LDL18:
		.LDL19:
		.LDL20:
				lis 8,.LANCHOR0@ha
				la 8,.LANCHOR0@l(8)
				addi 8,8,-1
				li 31,4003
				li 9,17
				mtctr 9
				b .L2
		.LVL2:
		.L13:
		.L5:
		.LBB12:
    3 !*    SHOULD RUN WITHOUT OPUT. LOOPS ON SOME COMPILERS DUE TO          *
    4 !*    MISSING LABELS GIVING JUMPS WITH ZERO OFFSET                     *
    5 !***********************************************************************
    6 %OWNBYTEINTEGERARRAY CH(0:16)='0','1','2','3','4','5','6','7','8',
    7       '9','A','B','C','D','E','F','G'
    8 %INTEGER I,K,L
    9 %CONSTINTEGER J=0
   10       I=4000; L=10
   11       %IF I>4095 %AND J#0 %THEN I=I+1
   12       %IF I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
   13       %IF I>4095 %AND J#0 %THEN %START; %FINISH
   14       %IF I>4095 %AND J#0 %THEN %START
   15          I=I+1
   16       %FINISH %ELSE I=I-1
   17       %IF (I>4095 %AND J#0 ) %AND L=1 %THEN I=I+1
   18       %IF (I>4095 %AND J#0) %OR L=1 %THEN I=I+1
   19       %UNLESS I>4095 %AND J#0 %THEN I=I+1
   20       %UNLESS I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
   21       %UNLESS I>4095 %AND J#0 %THEN %START; %FINISH
   22       %UNLESS I>4095 %AND J#0 %THEN %START
   23          I=I+1
   24       %FINISH %ELSE I=I-1
   25       %UNLESS (I>4095 %AND J#0 ) %AND L=1 %THEN I=I+1
   26       %UNLESS (I>4095 %AND J#0) %OR L=1 %THEN I=I+1
   27        %FOR K=0,1,16 %CYCLE
   28          %UNLESS '0'<=CH(K)<='9' %OR 'A'<=CH(K)<='F' %THEN I=I+1
   29       %REPEAT
   30       %IF I=4004 %THEN PRINTSTRING("TEST OK") %ELSE %C
				bdz .L11
		.LVL6:
		.L2:
		.LBB13:
				cmpwi 7,31,4004
				beq 7,.L14
		.L7:
		.LBB14:
				li 5,256
				lis 4,.LANCHOR0@ha
				la 4,.LANCHOR0@l(4)
				addi 4,4,273
				addi 3,1,1052
				bl memcpy
		.LVL9:
				li 5,256
				addi 4,1,1052
				addi 3,1,540
				bl memcpy
		.LVL10:
				li 5,256
				addi 4,1,540
				addi 3,1,1052
				bl memcpy
		.LVL11:
		.LBE14:
		.LBB15:
		.LBB16:
				li 5,256
				addi 4,1,1052
				addi 3,1,16
				bl memcpy
		.LVL12:
				addi 3,1,16
				bl _imp_printstring
		.LVL13:
		.LBE16:
		.LBE15:
				li 4,5
				mr 3,31
				bl _imp_writeint
		.LVL14:
		.L8:
		.LBB17:
		.LBB18:
				li 3,0
				bl exit
		.LVL15:
		.L14:
		.LBE18:
		.LBE17:
		.LBB19:
   31          PRINTSTRING("WRONG ANSWERS") %AND WRITE(I,5)
				lbzu 9,1(8)
		.LVL7:
				addi 10,9,-48
				rlwinm 10,10,0,0xff
				cmplwi 7,10,9
				ble 7,.L4
		.LBE13:
				b .L13
		.L6:
		.LVL8:
		.L11:
		.L3:
				li 5,256
				lis 4,.LANCHOR0@ha
				la 4,.LANCHOR0@l(4)
				addi 4,4,17
				addi 3,1,1052
				bl memcpy
		.LVL16:
				li 5,256
				addi 4,1,1052
				addi 3,1,284
				bl memcpy
		.LVL17:
				li 5,256
				addi 4,1,284
				addi 3,1,796
				bl memcpy
		.LVL18:
		.LBE19:
		.LBB20:
		.LBB21:
				li 5,256
				addi 4,1,796
				addi 3,1,16
				bl memcpy
		.LVL19:
				addi 3,1,16
				bl _imp_printstring
		.LVL20:
				b .L8
		.LBE21:
		.LBE20:
		.LFE185:
				.section	.rodata
				.align 2
				.set	.LANCHOR0,. + 0
		CH.6984:
				.byte	48
				.byte	49
				.byte	50
				.byte	51
				.byte	52
				.byte	53
				.byte	54
				.byte	55
				.byte	56
				.byte	57
				.byte	65
				.byte	66
				.byte	67
				.byte	68
				.byte	69
				.byte	70
				.byte	71
		.LC0:
				.byte	7
				.string	"TEST OK"
				.zero	247
		.LC1:
				.byte	13
				.string	"WRONG ANSWERS"
				.zero	241
				.section	".text"
		.Letext0:
   32 %ENDOFPROGRAM
   29 Statements compiled
				addi 9,9,-65
		.LVL3:
				rlwinm 9,9,0,0xff
		.LVL4:
		.LBE12:
				subfic 9,9,5
				subfe 9,9,9
				subf 31,9,31
		.LVL5:
		.L4:
