         Edinburgh IMP77 Compiler - Version 8.4
    1
		.Ltext0:
				.align	1
				.thumb
				.thumb_func
		A.10029:
		.LFB186:
    2 %BEGIN
				@ args = 0, pretend = 0, frame = 1048
				@ frame_needed = 0, uses_anonymous_args = 0
		.LVL4:
				push	{r4, r5, r6, lr}
				sub	sp, sp, #1288
				ldr	r3, .L74
		.LPIC0:
				add	r3, pc
				ldr	r2, .L74+4
				ldr	r3, [r3, r2]
				ldr	r3, [r3]
				str	r3, [sp, #1284]
				add	r4, sp, #244
				add	r3, sp, #1304
				str	r3, [sp, #256]
    3 !***********************************************************************
				bl	_imp_initialise(PLT)
		.LVL5:
    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
				movs	r3, #0
				str	r3, [r4, #8]
   11       %CYCLE I=-1,1,1
   12          %CYCLE J=0,1,3
   13             %IFNOTNOTNOTNOT I=1 %THEN A %ELSE B
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L65
		.L14:
   14             %IFNOT (%NOT I=1) %THEN A %ELSE B
				mvn	r3, #1
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L13
		.LVL7:
		.L10:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL8:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L66
		.L16:
   15             %IF I=1 %THEN A %ELSE B
				add	r4, sp, #244
				mov	r6, #-1
				adds	r3, r3, #1
				str	r3, [r4, #4]
				mov	r3, r6
				b	.L38
		.L65:
				b	.L15
		.L66:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL9:
				ldr	r3, [r4]
				cmp	r3, #3
				beq	.L64
		.LVL22:
		.L38:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L67
		.L18:
   16             C
				b	.L17
		.L67:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL10:
				adds	r3, r3, #1
				str	r3, [r4]
				mov	ip, r5
				bl	C.10033(PLT)
		.LVL26:
   17             %IFNOT I=1 %THEN A %ELSE B
				mov	r5, r4
				b	.L10
		.L11:
		.LVL6:
		.L64:
		.L12:
				b	.L19
		.L20:
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL23:
		.L15:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L20
   18             %UNLESS I=1 %THEN A %ELSE B
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL24:
		.L17:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL27:
		.L21:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L22
   19             C
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL25:
		.L19:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL28:
		.L23:
				mov	ip, r5
				bl	C.10033(PLT)
		.LVL29:
   20             %IF I=1 %AND J#2 %THEN A %ELSE B
				ldr	r3, [r4, #4]
				cmp	r3, #1
				bne	.L24
   21             %IF I=1 %ANDNOT J=2 %THEN A %ELSE B
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL11:
				b	.L21
		.L22:
				ldr	r3, [r4]
				cmp	r3, #2
				bne	.L68
		.L24:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				bne	.L26
   22             C
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL12:
				b	.L23
		.L68:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL13:
				ldr	r3, [r4]
				cmp	r3, #2
				bne	.L69
		.L26:
				mov	ip, r5
				bl	C.10033(PLT)
		.LVL32:
   23             %IF I=1 %OR 1<=J<=2 %THEN A %ELSE B
				b	.L25
		.L69:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL14:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L28
		.LVL33:
		.LBB18:
   24             %IF I=1 %OR (1<=J %AND J<=2) %THEN A %ELSE B
				b	.L27
		.L28:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L31
   25             C
				mov	ip, r5
				bl	C.10033(PLT)
		.LVL18:
		.LBB17:
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL30:
		.L25:
   26             %IF I=0=J %THEN A %ELSE B
				ldr	r3, [r4]
				subs	r3, r3, #1
				cmp	r3, #1
				bls	.L31
		.L32:
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL31:
		.L27:
   27             %IF I=0 %AND J=0 %THEN A %ELSE B
				ldr	r3, [r4, #4]
				cbnz	r3, .L36
   28             C
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL17:
		.L33:
				ldr	r3, [r4]
				cmp	r3, #0
				beq	.L63
		.L36:
				mov	ip, r5
				bl	C.10033(PLT)
		.LVL21:
		.LDL1:
   29          %REPEAT
				ldr	r3, [r4, #4]
				cbnz	r3, .L34
				ldr	r3, [r4]
				subs	r3, r3, #1
				cmp	r3, #1
				bls	.L28
		.L29:
		.LBE18:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL37:
   30       %REPEAT
				b	.L37
		.L13:
		.LBB19:
   31       PRINTSTRING("PART 1 OK ")
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL16:
				b	.L33
		.L31:
				ldr	r3, [r4]
				cmp	r3, #0
				beq	.L62
		.L34:
		.LBE17:
				mov	r5, #256
				mov	r2, r5
				ldr	r1, .L74+8
		.LPIC1:
				add	r1, pc
				addw	r4, sp, #1028
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL38:
				mov	r2, r5
				mov	r1, r4
				add	r4, sp, #260
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL39:
				mov	r2, r5
				mov	r1, r4
				add	r4, sp, #772
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL40:
		.LBE19:
		.LBB20:
		.LBB21:
				movs	r2, #240
				add	r1, sp, #788
				mov	r0, sp
				bl	memcpy(PLT)
		.LVL41:
				ldm	r4, {r0, r1, r2, r3}
				bl	_imp_printstring(PLT)
		.LVL42:
		.LBE21:
		.LBE20:
   32       %CYCLE I=-1,1,1
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL15:
		.L30:
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL20:
		.L37:
   33          %CYCLE J=0,1,3
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL36:
   34             %IF I=1 %ANDNOT J#1 %THEN A %ELSE B
				b	.L35
		.L63:
				ldr	r2, [r4, #4]
   35             %IF I=1 %ANDNOT (J#1) %THEN A %ELSE B
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL34:
				b	.L30
		.LVL35:
		.L62:
				mvn	r3, #1
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L42
		.L39:
				cmp	r3, #1
				it	eq
				cmpeq	r2, #1
				beq	.L71
		.L43:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				bne	.L45
   36             C
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL19:
		.L35:
				add	r4, sp, #244
				mov	r6, #-1
				adds	r3, r3, #1
				str	r3, [r4, #4]
				mov	r3, r6
				b	.L57
		.L71:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL43:
				ldr	r3, [r4]
				cmp	r3, #3
				beq	.L70
		.L57:
				ldr	r3, [r4]
				cmp	r3, #1
				beq	.L72
		.L45:
				mov	ip, r5
				bl	C.10033(PLT)
		.LVL53:
   37             %IF I=1 %ORNOT 1<=J<=2 %THEN A %ELSE B
				b	.L44
		.L72:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL44:
				adds	r3, r3, #1
				str	r3, [r4]
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L47
		.LVL54:
		.LBB22:
   38             %IF I=1 %ORNOT (1<=J %AND J<=2) %THEN A %ELSE B
				b	.L46
		.LVL45:
		.L48:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				beq	.L50
   39             C
				mov	r5, r4
				b	.L39
		.L40:
		.L70:
		.L41:
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL51:
		.L44:
				mov	ip, r5
				bl	C.10033(PLT)
		.LVL58:
   40             %IF I=1 %AND J=2 %THEN A %ELSE B
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL52:
		.L46:
				ldr	r3, [r4]
				subs	r3, r3, #1
				cmp	r3, #1
				bls	.L51
		.L50:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				bne	.L53
   41             %IFNOT (%NOT (I=1 %AND J=2)) %THEN A %ELSE B
				ldr	r3, [r4]
				cmp	r3, #2
				beq	.L73
		.L53:
				ldr	r3, [r4, #4]
				cmp	r3, #1
				bne	.L55
   42             C
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL48:
				mov	ip, r5
				bl	C.10033(PLT)
		.LVL50:
		.LDL2:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL57:
		.L52:
				ldr	r3, [r4]
				cmp	r3, #2
				bne	.L55
   43          %REPEAT
				b	.L54
		.L55:
				ldr	r3, [r4]
				subs	r3, r3, #1
				cmp	r3, #1
				bls	.L48
		.LVL55:
		.L47:
		.LBE22:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL60:
   44       %REPEAT
				b	.L56
		.L42:
		.LBB23:
   45       PRINTSTRING("TEST OK")
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL47:
				b	.L52
		.L73:
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL59:
		.L54:
				mov	r6, #256
				mov	r2, r6
				ldr	r1, .L74+12
		.LPIC2:
				add	r1, pc
				add	r1, r1, r6
				addw	r4, sp, #1028
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL61:
				mov	r2, r6
				mov	r1, r4
				add	r5, sp, #516
				mov	r0, r5
				bl	memcpy(PLT)
		.LVL62:
				mov	r2, r6
				mov	r1, r5
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL63:
		.LBE23:
		.LBB24:
		.LBB25:
				movs	r2, #240
				addw	r1, sp, #1044
				mov	r0, sp
				bl	memcpy(PLT)
		.LVL64:
				ldm	r4, {r0, r1, r2, r3}
				bl	_imp_printstring(PLT)
		.LVL65:
		.LBE25:
		.LBE24:
		.LBB26:
		.LBB27:
				movs	r0, #0
				bl	exit(PLT)
		.LVL66:
		.L75:
				.align	2
		.L74:
				.word	_GLOBAL_OFFSET_TABLE_-(.LPIC0+4)
				.word	__stack_chk_guard(GOT)
				.word	.LANCHOR0-(.LPIC1+4)
				.word	.LANCHOR0-(.LPIC2+4)
		.LBE27:
		.LBE26:
		.LFE185:
				.section	.rodata
				.align	2
				.set	.LANCHOR0,. + 0
		.LC0:
				.byte	10
				.ascii	"PART 1 OK \000"
				.space	244
		.LC1:
				.byte	7
				.ascii	"TEST OK\000"
				.space	247
		.Letext0:
   46 %ROUTINE A; K=K<<8!'A'; %END
				@ Nested: function declared inside another function.
				@ args = 0, pretend = 0, frame = 0
				@ frame_needed = 0, uses_anonymous_args = 0
				@ link register save eliminated.
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL49:
		.L56:
				mov	ip, r5
				bl	A.10029(PLT)
		.LVL56:
		.L49:
   47 %ROUTINE B; K=K<<8!'B'; %END
				@ Nested: function declared inside another function.
				@ args = 0, pretend = 0, frame = 0
				@ frame_needed = 0, uses_anonymous_args = 0
				@ link register save eliminated.
   48 %ROUTINE C
				ldr	r3, [ip, #8]
				lsls	r3, r3, #8
				orr	r3, r3, #65
				str	r3, [ip, #8]
				@ Nested: function declared inside another function.
				@ args = 0, pretend = 0, frame = 0
				@ frame_needed = 0, uses_anonymous_args = 0
				push	{r4, lr}
				mov	r4, ip
   49       %IF K=M'AA' %OR K=M'BB' %OR K=M'AAA' %OR K=M'BBB' %THEN K=0 %ANDRETURN
				ldr	r3, [ip, #8]
				lsls	r3, r3, #8
				orr	r3, r3, #66
				str	r3, [ip, #8]
				ldr	r2, [ip, #8]
				movw	r3, #16962
				movw	r1, #16705
				cmp	r2, r1
				it	ne
				cmpne	r2, r3
				ite	eq
				moveq	r3, #1
				movne	r3, #0
				movt	r1, 65
				cmp	r2, r1
				it	eq
				orreq	r3, r3, #1
				eor	r3, r3, #1
				mov	ip, r5
				bl	B.10031(PLT)
		.LVL46:
				b	.L49
		.L51:
   50       WRITE(I,1); WRITE(J,1); WRITE(K,1)
				bx	lr
		.LFE186:
				.align	1
				.thumb
				.thumb_func
		B.10031:
		.LFB187:
				movs	r1, #1
				ldr	r0, [ip, #4]
				bl	_imp_writeint(PLT)
		.LVL0:
   51       %MONITOR
				bx	lr
		.LFE187:
				.align	1
				.thumb
				.thumb_func
		C.10033:
		.LFB188:
				movs	r1, #1
				ldr	r0, [r4]
				bl	_imp_writeint(PLT)
		.LVL1:
   52       %STOP
				movw	r1, #16962
				movt	r1, 66
				cmp	r2, r1
				ite	eq
				moveq	r3, #0
				andne	r3, r3, #1
				cbnz	r3, .L4
		.L5:
				movs	r1, #1
				ldr	r0, [r4, #8]
				bl	_imp_writeint(PLT)
		.LVL2:
		.LBB15:
		.LBB16:
				movs	r0, #0
				bl	exit(PLT)
		.LVL3:
		.LBE16:
		.LBE15:
		.LFE188:
				.align	1
				.global	main
				.thumb
				.thumb_func
		main:
		.LFB185:
   53 %END
   54 %ENDOFPROGRAM
				str	r3, [ip, #8]
				bx	lr
		.L4:
   56 Statements compiled
