         Edinburgh IMP77 Compiler - Version 8.4
    1
				NO_APP
		.Ltext0:
				.align	2
		A.5990:
		.LFB186:
    2 %BEGIN
		.LVL4:
		 		link.w %fp,#-1040
		 		movem.l #8248,-(%sp)
		 		lea (8,%fp),%a0
		.LVL5:
		 		move.l %a0,-4(%fp)
    3 !***********************************************************************
		 		move.l 12(%fp),-(%sp)
		 		move.l 8(%fp),-(%sp)
		 		jsr _imp_initialise
		.LVL6:
    4 !*    TESTS SOME VERY NOTTED CONDITIONS FOR CONSISTENCY. NO OPUT IF OK *
    5 !***********************************************************************
    6 %INTEGER I,J,K
    7 %ROUTINESPEC A
    8 %ROUTINESPEC B
    9 %ROUTINESPEC C
   10       K=0
		 		clr.l -8(%fp)
		 		addq.l #8,%sp
   11       %CYCLE I=-1,1,1
   12          %CYCLE J=0,1,3
   13             %IFNOTNOTNOTNOT I=1 %THEN A %ELSE B
		 		moveq #1,%d0
		 		cmp.l -12(%fp),%d0
		 		jeq .L61
		.L12:
   14             %IFNOT (%NOT I=1) %THEN A %ELSE B
		 		moveq #-2,%d0
		 		move.l -12(%fp),%d0
		 		moveq #1,%d1
		 		cmp.l %d0,%d1
		 		jeq .L11
		.LVL8:
		.L8:
		 		lea A.5990,%a4
		 		jra .L36
		.L61:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL9:
		 		moveq #1,%d1
		 		cmp.l -12(%fp),%d1
		 		jeq .L62
		.L14:
   15             %IF I=1 %THEN A %ELSE B
		 		addq.l #1,%d0
		 		move.l %d0,-12(%fp)
		 		moveq #-1,%d0
		 		jra .L13
		.L62:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL10:
		 		move.l -16(%fp),%d0
		 		moveq #3,%d1
		 		cmp.l %d0,%d1
		 		jeq .L60
		.LVL25:
		.L36:
		 		moveq #1,%d0
		 		cmp.l -12(%fp),%d0
		 		jeq .L63
		.L16:
   16             C
		 		lea C.5994,%a3
		 		jra .L8
		.L9:
		.LVL7:
		.L60:
		.L10:
		 		jra .L15
		.L63:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL11:
		 		addq.l #1,%d0
		 		move.l %d0,-16(%fp)
		 		lea (-16,%fp),%a0
		 		jsr (%a3)
		.LVL29:
   17             %IFNOT I=1 %THEN A %ELSE B
		 		lea B.5992,%a2
		 		jra .L17
		.L18:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL26:
		.L13:
		 		moveq #1,%d1
		 		cmp.l -12(%fp),%d1
		 		jeq .L18
   18             %UNLESS I=1 %THEN A %ELSE B
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL27:
		.L15:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL30:
		.L19:
		 		moveq #1,%d0
		 		cmp.l -12(%fp),%d0
		 		jeq .L20
   19             C
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL28:
		.L17:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL31:
		.L21:
		 		lea (-16,%fp),%a0
		 		jsr (%a3)
		.LVL32:
   20             %IF I=1 %AND J#2 %THEN A %ELSE B
		 		moveq #1,%d1
		 		cmp.l -12(%fp),%d1
		 		jne .L22
   21             %IF I=1 %ANDNOT J=2 %THEN A %ELSE B
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL12:
		 		jra .L19
		.L20:
		 		moveq #2,%d0
		 		cmp.l -16(%fp),%d0
		 		jne .L64
		.L22:
		 		moveq #1,%d1
		 		cmp.l -12(%fp),%d1
		 		jne .L24
   22             C
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL13:
		 		jra .L21
		.L64:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL14:
		 		lea (-16,%fp),%a0
		 		jsr (%a3)
		.LVL16:
		 		moveq #2,%d0
		 		cmp.l -16(%fp),%d0
		 		jeq .L24
   23             %IF I=1 %OR 1<=J<=2 %THEN A %ELSE B
		 		jra .L23
		.L24:
		 		moveq #1,%d1
		 		cmp.l -12(%fp),%d1
		 		jeq .L26
		.LVL17:
		.LBB17:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL34:
   24             %IF I=1 %OR (1<=J %AND J<=2) %THEN A %ELSE B
		 		moveq #1,%d0
		 		cmp.l -12(%fp),%d0
		 		jeq .L29
		 		jra .L25
		.LVL35:
		.L27:
   25             C
		 		move.l -16(%fp),%d0
		 		subq.l #1,%d0
		 		moveq #1,%d1
		 		cmp.l %d0,%d1
		 		jcs .L30
		.L29:
		 		lea (-16,%fp),%a0
		 		jsr (%a3)
		.LVL21:
		.LBB18:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL33:
		.L23:
   26             %IF I=0=J %THEN A %ELSE B
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL15:
		.L25:
   27             %IF I=0 %AND J=0 %THEN A %ELSE B
		 		move.l -16(%fp),%d0
		 		subq.l #1,%d0
		 		cmp.l %d0,%d1
		 		jcs .L27
		.LVL18:
		.L26:
		.LBE17:
		 		tst.l -12(%fp)
		 		jne .L34
   28             C
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL20:
		.L31:
		 		tst.l -16(%fp)
		 		jeq .L59
		.L34:
		 		lea (-16,%fp),%a0
		 		jsr (%a3)
		.LVL24:
		.LDL1:
   29          %REPEAT
		 		tst.l -12(%fp)
		 		jne .L32
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL41:
   30       %REPEAT
		 		jra .L35
		.L11:
		.LBB19:
   31       PRINTSTRING("PART 1 OK ")
		 		tst.l -16(%fp)
		 		jeq .L58
		.L32:
		.LBE18:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL38:
		 		jra .L31
		.LVL39:
		.L58:
		 		move.l %fp,%d2
		.LVL42:
		 		add.l #-272,%d2
		.LVL43:
		 		move.w #256,%a3
		 		move.l %a3,-(%sp)
		 		pea .LC0
		 		move.l %d2,-(%sp)
		 		lea memcpy,%a2
		 		jsr (%a2)
		.LVL44:
		 		lea (-1040,%fp),%a4
		 		move.l %a3,-(%sp)
		 		move.l %d2,-(%sp)
		 		move.l %a4,-(%sp)
		 		jsr (%a2)
		.LVL45:
		 		add.l #-256,%d2
		.LVL46:
		 		move.l %a3,-(%sp)
		 		move.l %a4,-(%sp)
		 		move.l %d2,-(%sp)
		 		jsr (%a2)
		.LVL47:
		.LBE19:
		.LBB20:
		.LBB21:
		 		lea (-220,%sp),%sp
		 		move.l %sp,%d0
		 		move.l %a3,-(%sp)
		 		move.l %d2,-(%sp)
		 		move.l %d0,-(%sp)
		 		jsr (%a2)
		.LVL48:
		 		lea (12,%sp),%sp
		 		jsr _imp_printstring
		.LVL49:
		 		add.l %a3,%sp
		.LBE21:
		.LBE20:
   32       %CYCLE I=-1,1,1
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL19:
		.L28:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL23:
		.L35:
   33          %CYCLE J=0,1,3
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL40:
   34             %IF I=1 %ANDNOT J#1 %THEN A %ELSE B
		 		jra .L33
		.L59:
		 		moveq #1,%d1
		 		cmp.l -12(%fp),%d1
		 		jne .L41
   35             %IF I=1 %ANDNOT (J#1) %THEN A %ELSE B
		 		lea (-16,%fp),%a0
		.LVL36:
		 		jsr (%a2)
		.LVL37:
		 		jra .L28
		.L30:
		 		moveq #-2,%d0
		 		move.l -12(%fp),%d0
		 		moveq #1,%d1
		 		cmp.l %d0,%d1
		 		jeq .L40
		.L37:
		 		cmp.l %d0,%d1
		 		jeq .L68
		.L41:
		 		moveq #1,%d0
		 		cmp.l -12(%fp),%d0
		 		jne .L43
   36             C
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL22:
		.L33:
		 		lea C.5994,%a3
		 		jra .L37
		.L38:
		.L67:
		.L39:
		 		addq.l #1,%d0
		 		move.l %d0,-12(%fp)
		 		moveq #-1,%d0
		 		lea A.5990,%a4
		 		jra .L55
		.L68:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL50:
		 		move.l -16(%fp),%d0
		 		moveq #3,%d1
		 		cmp.l %d0,%d1
		 		jeq .L67
		.L55:
		 		cmp.l -16(%fp),%d0
		 		jeq .L69
		.L43:
		 		lea (-16,%fp),%a0
		 		jsr (%a3)
		.LVL61:
   37             %IF I=1 %ORNOT 1<=J<=2 %THEN A %ELSE B
		 		jra .L42
		.L69:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL51:
		 		addq.l #1,%d0
		 		move.l %d0,-16(%fp)
		 		moveq #1,%d1
		 		cmp.l -12(%fp),%d1
		 		jeq .L45
		.LVL62:
		.LBB22:
   38             %IF I=1 %ORNOT (1<=J %AND J<=2) %THEN A %ELSE B
		 		jra .L44
		.L45:
		 		moveq #1,%d0
		 		cmp.l -12(%fp),%d0
		 		jeq .L48
   39             C
		 		lea B.5992,%a2
		 		move.l -16(%fp),%d0
		 		subq.l #1,%d0
		 		moveq #1,%d1
		 		cmp.l %d0,%d1
		 		jcs .L48
		.L49:
		 		lea (-16,%fp),%a0
		 		jsr (%a3)
		.LVL55:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL59:
		.L42:
   40             %IF I=1 %AND J=2 %THEN A %ELSE B
		 		moveq #1,%d0
		 		cmp.l -12(%fp),%d0
		 		jne .L51
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL60:
		.L44:
   41             %IFNOT (%NOT (I=1 %AND J=2)) %THEN A %ELSE B
		 		moveq #2,%d1
		 		cmp.l -16(%fp),%d1
		 		jeq .L65
		.L51:
		 		moveq #1,%d0
		 		cmp.l -12(%fp),%d0
		 		jne .L53
		 		move.l -16(%fp),%d0
		 		subq.l #1,%d0
		 		cmp.l %d0,%d1
		 		jcs .L45
		.L46:
		.LBE22:
   42             C
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL54:
		.L50:
		 		moveq #2,%d1
		 		cmp.l -16(%fp),%d1
		 		jeq .L66
		.L53:
		 		lea (-16,%fp),%a0
		 		jsr (%a3)
		.LVL58:
		.LDL2:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL65:
   43          %REPEAT
		 		jra .L52
		.L66:
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL66:
   44       %REPEAT
		 		jra .L54
		.L40:
		.LBB23:
   45       PRINTSTRING("TEST OK")
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL53:
		 		jra .L50
		.L48:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL56:
		.L52:
		 		lea (-272,%fp),%a3
		.LVL67:
		 		move.w #256,%a4
		 		move.l %a4,-(%sp)
		 		pea .LC1
		 		move.l %a3,-(%sp)
		 		lea memcpy,%a2
		 		jsr (%a2)
		.LVL68:
		 		move.l %fp,%d2
		.LVL69:
		 		add.l #-784,%d2
		.LVL70:
		 		move.l %a4,-(%sp)
		 		move.l %a3,-(%sp)
		 		move.l %d2,-(%sp)
		 		jsr (%a2)
		.LVL71:
		 		move.l %a4,-(%sp)
		 		move.l %d2,-(%sp)
		 		move.l %a3,-(%sp)
		 		jsr (%a2)
		.LVL72:
		.LBE23:
		.LBB24:
		.LBB25:
		 		lea (-220,%sp),%sp
		 		move.l %sp,%d0
		 		move.l %a4,-(%sp)
		 		move.l %a3,-(%sp)
		 		move.l %d0,-(%sp)
		 		jsr (%a2)
		.LVL73:
		 		lea (12,%sp),%sp
		 		jsr _imp_printstring
		.LVL74:
		.LBE25:
		.LBE24:
		.LBB26:
		.LBB27:
		 		add.l %a4,%sp
		 		clr.l -(%sp)
		 		jsr exit
		.LVL75:
		.LBE27:
		.LBE26:
		.LFE185:
		.Letext0:
   46 %ROUTINE A; K=K<<8!'A'; %END
		 		link.w %fp,#0
		 		lea (-16,%fp),%a0
		 		jsr (%a4)
		.LVL52:
		.L47:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL57:
		.L54:
   47 %ROUTINE B; K=K<<8!'B'; %END
		 		link.w %fp,#0
   48 %ROUTINE C
		 		move.l 8(%a0),%d0
		 		lsl.l #8,%d0
		 		moveq #65,%d1
		 		or.l %d0,%d1
		 		move.l %d1,8(%a0)
		 		link.w %fp,#0
		 		move.l %a3,-(%sp)
		 		move.l %a2,-(%sp)
		 		move.l %a0,%a2
   49       %IF K=M'AA' %OR K=M'BB' %OR K=M'AAA' %OR K=M'BBB' %THEN K=0 %ANDRETURN
		 		move.l 8(%a0),%d0
		 		lsl.l #8,%d0
		 		moveq #66,%d1
		 		or.l %d0,%d1
		 		move.l %d1,8(%a0)
		 		move.l 8(%a0),%d0
		 		cmp.l #16705,%d0
		 		jeq .L4
		 		lea (-16,%fp),%a0
		.LVL63:
		 		jsr (%a2)
		.LVL64:
		 		jra .L47
		.L65:
   50       WRITE(I,1); WRITE(J,1); WRITE(K,1)
		 		unlk %fp
		 		rts
		.LFE186:
				.align	2
		B.5992:
		.LFB187:
		 		cmp.l #16962,%d0
		 		jeq .L4
		 		cmp.l #4276545,%d0
		 		jeq .L4
		 		pea 1.w
		 		move.l 4(%a0),-(%sp)
		 		lea _imp_writeint,%a3
		 		jsr (%a3)
		.LVL0:
   51       %MONITOR
		 		unlk %fp
		 		rts
		.LFE187:
				.align	2
		C.5994:
		.LFB188:
		 		pea 1.w
		 		move.l (%a2),-(%sp)
		 		jsr (%a3)
		.LVL1:
   52       %STOP
		 		cmp.l #4342338,%d0
		 		jne .L5
		.L4:
		 		pea 1.w
		 		move.l 8(%a2),-(%sp)
		 		jsr (%a3)
		.LVL2:
		.LBB15:
		.LBB16:
		 		clr.l -(%sp)
		 		jsr exit
		.LVL3:
		.LBE16:
		.LBE15:
		.LFE188:
				.section	.rodata
		.LC0:
		 		.byte	10
		 		.string	"PART 1 OK "
		 		.zero	244
		.LC1:
		 		.byte	7
		 		.string	"TEST OK"
		 		.zero	247
				.align	2
				.globl	main
		main:
		.LFB185:
   53 %END
		 		move.l -8(%fp),%a2
		 		move.l -4(%fp),%a3
		 		unlk %fp
		 		rts
		.L5:
   54 %ENDOFPROGRAM
		 		clr.l 8(%a2)
   56 Statements compiled
