         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
		CHECK.6991:
		.LFB186:
		.LVL12:
				stwu 1,-7968(1)
				mflr 0
				stw 0,7972(1)
				lwz 9,-28680(2)
				stw 9,7964(1)
				li 9,0
				addi 9,1,7968
				stw 9,7960(1)
    2 %owninteger Fail=0
				bl _imp_initialise
		.LVL13:
    3 %STRING(30)S,T,U
    4 %ROUTINESPEC CHECK(%STRING(30) P,Q,R)
    5       S=""; T=S
    6       PRINTSTRING("BUG0") %UNLESS T=""
    7       CHECK(S,T,"")
				li 5,30
				addi 4,1,1304
				addi 3,1,7704
				bl _imp_strncpy
		.LVL14:
				li 5,256
				addi 4,1,2328
				addi 3,1,528
				bl memcpy
		.LVL18:
				li 5,256
				addi 4,1,2584
				addi 3,1,272
				bl memcpy
		.LVL19:
				li 5,256
				addi 4,1,2840
				addi 3,1,16
				bl memcpy
		.LVL20:
				addi 11,1,7704
				addi 5,1,16
				addi 4,1,272
				addi 3,1,528
				bl CHECK.6991
		.LVL21:
    8       S="ABCD"; T=S
				addi 4,1,1816
				addi 3,1,792
				bl _imp_strcmp
		.LVL16:
				cmpwi 7,3,0
				bne 7,.L17
		.L9:
		.LBB48:
    9       CHECK(S,T,"ABCD")
				li 5,256
				addi 4,1,3608
				addi 3,1,16
				bl memcpy
		.LVL26:
				li 5,256
				addi 4,1,3864
				addi 3,1,272
				bl memcpy
		.LVL27:
				li 5,256
				addi 4,1,4120
				addi 3,1,528
				bl memcpy
		.LVL28:
				addi 11,1,7704
				addi 5,1,528
				addi 4,1,272
				addi 3,1,16
				bl CHECK.6991
		.LVL29:
		.LBB50:
   10       %UNLESS "MAST"<="MEST"<="MOST" %THEN Fail=1 %and PRINTSTRING("BUG1")
				li 5,30
				addi 4,1,3096
				addi 3,1,7704
				bl _imp_strncpy
		.LVL22:
   11       S="MAST"; T="MEST"; U="MOST"
				li 5,256
				lis 4,.LANCHOR1@ha
				la 4,.LANCHOR1@l(4)
				addi 4,4,256
				addi 3,1,7448
				bl memcpy
		.LVL49:
				li 5,256
				addi 4,1,7448
				addi 3,1,2072
				bl memcpy
		.LVL50:
				li 5,256
				addi 4,1,2072
				addi 3,1,6680
				bl memcpy
		.LVL51:
		.LBE60:
		.LBB61:
		.LBB62:
				li 5,256
				addi 4,1,6680
				addi 3,1,528
				bl memcpy
		.LVL52:
				addi 3,1,528
				bl _imp_printstring
		.LVL53:
				b .L9
		.LVL54:
		.L18:
		.LBE62:
		.LBE61:
		.LBB63:
				addi 4,1,4888
				addi 3,1,4632
		.LVL55:
				bl _imp_strcmp
		.LVL56:
				cmpwi 7,3,0
				bgt 7,.L10
		.LBE63:
				b .L11
		.LVL57:
		.L19:
		.LBB64:
				addi 4,1,1048
				addi 3,1,792
		.LVL58:
				bl _imp_strcmp
		.LVL59:
				cmpwi 7,3,0
				bgt 7,.L12
		.LBE64:
				b .L13
		.L20:
		.LBB65:
   12       %UNLESS S<=T<=U %THEN Fail=1 %and PRINTSTRING("BUG2")
				li 5,30
				addi 4,1,1560
				addi 3,1,792
				bl _imp_strncpy
		.LVL15:
   13       %if Fail=0 %then printstring("TEST OK")
				li 5,30
				addi 4,1,5400
				addi 3,1,7704
				bl _imp_strncpy
		.LVL37:
				lis 9,.LANCHOR0@ha
				lwz 9,.LANCHOR0@l(9)
				cmpwi 7,9,0
				beq 7,.L20
		.L14:
		.LVL47:
		.LBB58:
		.LBB59:
				li 3,0
				bl exit
		.LVL48:
		.L17:
		.LBE59:
		.LBE58:
		.LBB60:
   14       %ROUTINE CHECK(%STRING(30) P,Q,R)
				stwu 1,-816(1)
				mflr 0
				stw 0,820(1)
				stw 29,804(1)
				stw 30,808(1)
				stw 31,812(1)
				mr 29,3
				mr 31,4
				mr 30,5
				lwz 9,-28680(2)
				stw 9,796(1)
				li 9,0
				li 5,256
				lis 4,.LANCHOR1@ha
				la 4,.LANCHOR1@l(4)
				addi 4,4,1054
				addi 3,1,7448
				bl memcpy
		.LVL60:
				li 5,256
				addi 4,1,7448
				addi 3,1,6424
				bl memcpy
		.LVL61:
				li 5,256
				addi 4,1,6424
				addi 3,1,7448
				bl memcpy
		.LVL62:
		.LBE65:
		.LBB66:
		.LBB67:
				li 5,256
				addi 4,1,7448
				addi 3,1,16
				bl memcpy
		.LVL63:
				addi 3,1,16
				bl _imp_printstring
		.LVL64:
				b .L14
		.LBE67:
		.LBE66:
		.LFE185:
				.section	.rodata
				.align 2
				.set	.LANCHOR1,. + 0
		.LC8:
				.byte	11
				.string	"CHECK FAILS"
				.zero	243
		.LC0:
				.byte	4
				.string	"BUG0"
				.zero	250
		.LC9:
				.string	"ABCD"
				.zero	25
		.LC5:
				.byte	4
				.string	"BUG1"
				.zero	250
		.LC6:
				.byte	4
				.string	"BUG2"
				.zero	250
		.LC7:
				.byte	7
				.string	"TEST OK"
				.zero	247
				.section	".bss"
				.align 2
				.set	.LANCHOR0,. + 0
		FAIL.6984:
				.zero	4
				.section	".text"
		.Letext0:
   15       Fail=1 %and PRINTSTRING("CHECK FAILS") %UNLESS %C
				li 5,256
				li 4,0
				addi 3,1,2840
				bl memset
		.LVL17:
		.LBE48:
				li 5,30
				addi 4,1,3352
				addi 3,1,792
				bl _imp_strncpy
		.LVL23:
		.LBB49:
				addi 4,1,4632
		.LVL30:
				addi 3,1,4376
				bl _imp_strcmp
		.LVL31:
				cmpwi 7,3,0
				ble 7,.L18
		.L10:
		.LBE50:
				lis 9,.LANCHOR0@ha
				li 10,1
				stw 10,.LANCHOR0@l(9)
		.LBB51:
				li 5,256
				lis 4,.LANCHOR1@ha
				la 4,.LANCHOR1@l(4)
				addi 4,4,542
				addi 3,1,7448
				bl memcpy
		.LVL32:
				li 5,256
				addi 4,1,7448
				addi 3,1,5144
				bl memcpy
		.LVL33:
				li 5,256
				addi 4,1,5144
				addi 3,1,6936
				bl memcpy
		.LVL34:
		.LBE51:
		.LBB52:
		.LBB53:
				li 5,256
				addi 4,1,6936
				addi 3,1,16
				bl memcpy
		.LVL35:
				addi 3,1,16
				bl _imp_printstring
		.LVL36:
		.L11:
		.LBE53:
		.LBE52:
   16          P=S %AND Q=R %AND P=Q=R
   17       %END
				mr 4,11
				bl _imp_strcmp
		.LVL0:
				cmpwi 7,3,0
				bne 7,.L2
				li 5,226
				li 4,0
				addi 3,1,7478
				bl memset
		.LVL24:
				lis 9,.LANCHOR1@ha
				la 9,.LANCHOR1@l(9)
				lwz 10,512(9)
				lbz 9,516(9)
				stw 10,7449(1)
				stb 9,7453(1)
				li 9,0
				stw 9,7454(1)
				stw 9,7458(1)
				stw 9,7462(1)
				stw 9,7466(1)
				stw 9,7470(1)
				stw 9,7474(1)
				stb 9,7478(1)
				li 9,4
				stb 9,7448(1)
				li 5,256
				addi 4,1,7448
				addi 3,1,4120
				bl memcpy
		.LVL25:
		.LBE49:
				addi 4,1,792
		.LVL40:
				addi 3,1,7704
				bl _imp_strcmp
		.LVL41:
				cmpwi 7,3,0
				ble 7,.L19
		.L12:
		.LBE54:
				lis 9,.LANCHOR0@ha
				li 10,1
				stw 10,.LANCHOR0@l(9)
		.LBB55:
				li 5,256
				lis 4,.LANCHOR1@ha
				la 4,.LANCHOR1@l(4)
				addi 4,4,798
				addi 3,1,7448
				bl memcpy
		.LVL42:
				li 5,256
				addi 4,1,7448
				addi 3,1,6168
				bl memcpy
		.LVL43:
				li 5,256
				addi 4,1,6168
				addi 3,1,7192
				bl memcpy
		.LVL44:
		.LBE55:
		.LBB56:
		.LBB57:
				li 5,256
				addi 4,1,7192
				addi 3,1,16
				bl memcpy
		.LVL45:
				addi 3,1,16
				bl _imp_printstring
		.LVL46:
		.L13:
		.LBE57:
		.LBE56:
   18 %ENDOFPROGRAM
				lwz 9,796(1)
				lwz 10,-28680(2)
				xor. 9,9,10
				li 10,0
				bne 0,.L7
				lwz 0,820(1)
				mtlr 0
				lwz 29,804(1)
				lwz 30,808(1)
				lwz 31,812(1)
				addi 1,1,816
				blr
		.L6:
		.LVL7:
		.LBB47:
				mr 4,31
				mr 3,29
				bl _imp_strcmp
		.LVL8:
				cmpwi 7,3,0
				bne 7,.L2
				mr 4,30
				mr 3,31
				bl _imp_strcmp
		.LVL9:
				cmpwi 7,3,0
				bne 7,.L2
		.LBE47:
				b .L1
		.LVL10:
		.L7:
				bl __stack_chk_fail
		.LVL11:
		.LFE186:
				.align 2
				.globl main
		main:
		.LFB185:
				li 5,30
				addi 4,1,5656
				addi 3,1,792
				bl _imp_strncpy
		.LVL38:
				li 5,30
				addi 4,1,5912
				addi 3,1,1048
				bl _imp_strncpy
		.LVL39:
		.LBB54:
   21 Statements compiled
				mr 4,30
				mr 3,31
				bl _imp_strcmp
		.LVL1:
				cmpwi 7,3,0
				beq 7,.L6
		.L2:
				lis 9,.LANCHOR0@ha
				li 10,1
				stw 10,.LANCHOR0@l(9)
		.LBB44:
				li 5,256
				lis 4,.LANCHOR1@ha
				la 4,.LANCHOR1@l(4)
				addi 3,1,540
				bl memcpy
		.LVL2:
				li 5,256
				addi 4,1,540
				addi 3,1,284
				bl memcpy
		.LVL3:
				li 5,256
				addi 4,1,284
				addi 3,1,540
				bl memcpy
		.LVL4:
		.LBE44:
		.LBB45:
		.LBB46:
				li 5,256
				addi 4,1,540
				addi 3,1,16
				bl memcpy
		.LVL5:
				addi 3,1,16
				bl _imp_printstring
		.LVL6:
		.L3:
		.L1:
		.LBE46:
		.LBE45:
