         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
				.globl main
		main:
		.LFB185:
		.LVL0:
				stwu 1,-800(1)
				mflr 0
				stw 0,804(1)
				lwz 9,-28680(2)
				stw 9,796(1)
				li 9,0
    2 %externalroutinespec phex %alias "s_phex" (%integer x)
				bl _imp_initialise
		.LVL1:
				li 9,41
				mtctr 9
		.LVL2:
		.L2:
		.LDL1:
		.LDL2:
		.LDL3:
		.LDL4:
		.LDL5:
		.LDL6:
    3 %integer i,j,k,corr,fail
    4 %integerfn div(%integer x,y)
    5 %result=x//y
    6 %end
    7 fail=0
    8 %for k=20,-1,-20%cycle
    9       %if k//2#div(k,2) %then fail=1
   10       %if k//4#div(k,4) %then fail=1
   11       %if k//8#div(k,8) %then fail=1
				bdnz .L2
		.L3:
		.LBB32:
   12       %if k//16#div(k,16) %then fail=1
   13       %if k//1#div(k,1) %then fail=1
   14 %repeat
   15 %if fail=0 %then printstring("TEST OK") %else printstring("Divide in error")
   16 newline
				li 5,256
				lis 4,.LANCHOR0@ha
				la 4,.LANCHOR0@l(4)
				addi 3,1,540
				bl memcpy
		.LVL3:
				li 5,256
				addi 4,1,540
				addi 3,1,284
				bl memcpy
		.LVL4:
				li 5,256
				addi 4,1,284
				addi 3,1,540
				bl memcpy
		.LVL5:
		.LBE32:
		.LBB33:
		.LBB34:
				li 5,256
				addi 4,1,540
				addi 3,1,16
				bl memcpy
		.LVL6:
				addi 3,1,16
				bl _imp_printstring
		.LVL7:
		.LDL7:
		.LBE34:
		.LBE33:
		.LBB35:
		.LBB36:
				bl _imp_newline
		.LVL8:
		.LBE36:
		.LBE35:
		.LBB37:
		.LBB38:
				li 3,0
				bl exit
		.LVL9:
		.LBE38:
		.LBE37:
		.LFE185:
				.section	.rodata
				.set	.LANCHOR0,. + 0
		.LC0:
				.byte	7
				.string	"TEST OK"
				.zero	247
				.section	".text"
		.Letext0:
   17 %endofprogram
?CORR unused
?J unused
?I unused
?PHEX unused
   17 Statements compiled
