         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
		.Ltext0:
				.align	1
				.thumb
				.thumb_func
		TEST.10062:
		.LFB186:
				@ args = 0, pretend = 0, frame = 2328
				@ frame_needed = 0, uses_anonymous_args = 0
		.LVL22:
				push	{r4, r5, r6, r7, lr}
				subw	sp, sp, #2572
				ldr	r3, .L22
		.LPIC6:
				add	r3, pc
				ldr	r2, .L22+4
				ldr	r3, [r3, r2]
				ldr	r3, [r3]
				str	r3, [sp, #2564]
				add	r4, sp, #240
				add	r3, sp, #2592
				str	r3, [sp, #244]
    2 %owninteger swopped =0
				bl	_imp_initialise(PLT)
		.LVL23:
				mov	r2, #768
				movs	r1, #0
				addw	r5, sp, #1796
				mov	r0, r5
				bl	memset(PLT)
		.LVL24:
				movs	r3, #9
				strb	r3, [r5, #512]
				ldr	r3, .L22+8
		.LPIC7:
				add	r3, pc
				add	r3, r3, #512
				ldmia	r3!, {r0, r1}
				str	r0, [sp, #2309]	@ unaligned
				str	r1, [sp, #2313]	@ unaligned
				ldrh	r3, [r3]	@ unaligned
				strh	r3, [sp, #2317]	@ unaligned
				movs	r2, #0
				strb	r2, [r5, #523]
    3 %recordformat f1(%integer i %or %byte b0,b1,b2,b3 %or %string(3)s)
    4 %recordformat f2(%integer i,%record(f1)f)
    5 %recordformat f3(%integer k,%record(f2)f)
    6 %integer i,fail,j,k
    7 %routine test(%integer exp,swexp,act)
				@ Nested: function declared inside another function.
				@ args = 0, pretend = 0, frame = 1032
				@ frame_needed = 0, uses_anonymous_args = 0
		.LVL0:
				push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
				subw	sp, sp, #1276
				mov	fp, r0
				mov	r8, r2
				mov	r9, ip
				ldr	r6, .L15
		.LPIC0:
				add	r6, pc
				ldr	r3, .L15+4
				ldr	r3, [r6, r3]
				ldr	r3, [r3]
				str	r3, [sp, #1268]
    8 %if swopped=0 %start
				ldr	r3, .L15+8
		.LPIC1:
				add	r3, pc
				ldr	r3, [r3]
				cmp	r3, #0
				bne	.L5
    9       %if exp=act %then swopped=-1
				cmp	r0, r2
				beq	.L13
   10       %if swexp=act %then swopped=1
				cmp	r2, r1
				beq	.L10
		.L9:
		.LBB17:
				ldr	r3, .L15+16
		.LPIC2:
				add	r3, pc
				mov	r2, #-1
		.LVL18:
				str	r2, [r3]
				cmp	r8, r1
				bne	.L1
		.L10:
   11 %finish
				ldr	r3, .L15+20
		.LPIC3:
				add	r3, pc
				movs	r2, #1
				str	r2, [r3]
				b	.L1
		.L2:
		.LVL19:
		.L5:
   12 %if swopped=-1 %and exp=act %then %return
   13 %if swopped=1 %and swexp=act %then %return
				cmp	r0, r2
				bne	.L7
				cmp	r3, #-1
				beq	.L1
		.L7:
   14       printstring("expected="); write(exp,5)
				ldr	r7, .L15+12
		.LPIC4:
				add	r7, pc
				mov	r5, #256
				mov	r2, r5
		.LVL1:
				mov	r1, r7
		.LVL2:
				add	r4, sp, #1012
				mov	r0, r4
		.LVL3:
				bl	memcpy(PLT)
		.LVL4:
				mov	r2, r5
				mov	r1, r4
				add	r10, sp, #244
				mov	r0, r10
				bl	memcpy(PLT)
		.LVL5:
				mov	r2, r5
				mov	r1, r10
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL6:
		.LBE17:
		.LBB18:
		.LBB19:
				mov	r10, #240
				mov	r2, r10
				addw	r1, sp, #1028
				mov	r0, sp
				bl	memcpy(PLT)
		.LVL7:
				ldm	r4, {r0, r1, r2, r3}
				bl	_imp_printstring(PLT)
		.LVL8:
		.LBE19:
		.LBE18:
				cmp	r8, r1
				bne	.L9
				cmp	r3, #1
				bne	.L9
				b	.L1
		.LVL20:
		.L14:
				bl	__stack_chk_fail(PLT)
		.LVL21:
		.L16:
				.align	2
		.L15:
				.word	_GLOBAL_OFFSET_TABLE_-(.LPIC0+4)
				.word	__stack_chk_guard(GOT)
				.word	.LANCHOR0-(.LPIC1+4)
				.word	.LANCHOR1-(.LPIC4+4)
				.word	.LANCHOR0-(.LPIC2+4)
				.word	.LANCHOR0-(.LPIC3+4)
		.LFE186:
				.align	1
				.global	main
				.thumb
				.thumb_func
		main:
		.LFB185:
   15       printstring(" actual="); write(act,5); newline
				movs	r1, #5
				mov	r0, fp
				bl	_imp_writeint(PLT)
		.LVL9:
		.LBB20:
				mov	r2, r5
				adds	r1, r7, r5
				add	r4, sp, #756
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL10:
				mov	r2, r5
				mov	r1, r4
				add	r7, sp, #500
				mov	r0, r7
				bl	memcpy(PLT)
		.LVL11:
				mov	r2, r5
				mov	r1, r7
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL12:
		.LBE20:
		.LBB21:
		.LBB22:
				mov	r2, r10
				add	r1, sp, #772
				mov	r0, sp
				bl	memcpy(PLT)
		.LVL13:
				ldm	r4, {r0, r1, r2, r3}
				bl	_imp_printstring(PLT)
		.LVL14:
		.LBE22:
		.LBE21:
   16       fail=fail+1
				movs	r1, #5
				mov	r0, r8
				bl	_imp_writeint(PLT)
		.LVL15:
		.LBB23:
		.LBB24:
				bl	_imp_newline(PLT)
		.LVL16:
		.LBE24:
		.LBE23:
				ldr	r3, [r9]
				adds	r3, r3, #1
				str	r3, [r9]
		.L1:
   17       %monitor
   18 %end
   19 %conststring(11) %array tx(-1:1)="","","(swopped)";
				ldr	r3, .L15+4
				ldr	r3, [r6, r3]
				ldr	r2, [sp, #1268]
				ldr	r3, [r3]
				cmp	r2, r3
				bne	.L14
				addw	sp, sp, #1276
				@ sp needed
				pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
		.LVL17:
		.L13:
   20 %record(f1) r1
   21 %record(f2) r2
   22 %record(f3) r3
   23 fail=0
				str	r2, [r4]
		.LVL25:
		.LDL1:
   24       j=0
   25 l1:
   26 r1_i=0
				str	r2, [sp, #248]
		.LVL26:
   27 k=r1_I+j
   28 r1_b3=5
				movs	r5, #5
				strb	r5, [sp, #251]
   29 test(5,X'05000000',r1_i)
				ldr	r6, [sp, #248]
				mov	ip, r4
				mov	r2, r6
				mov	r1, #83886080
				mov	r0, r5
				bl	TEST.10062(PLT)
		.LVL27:
   30 test(5,x'05000000',r1_i+j)
				mov	ip, r4
				mov	r2, r6
				mov	r1, #83886080
				mov	r0, r5
				bl	TEST.10062(PLT)
		.LVL28:
   31 r2_f_i=1
				movs	r7, #1
				str	r7, [sp, #1276]
   32 r2_f_b3=6
				movs	r5, #6
				strb	r5, [sp, #1279]
   33 test(6,x'06000001',r2_f_i)
				mov	r6, r7
				movt	r6, 1536
				mov	ip, r4
				ldr	r2, [sp, #1276]
				mov	r1, r6
				mov	r0, r5
				bl	TEST.10062(PLT)
		.LVL29:
   34 r3_f_f_i=1
				str	r7, [sp, #1540]
   35 r3_f_f_b3=6
				strb	r5, [sp, #1543]
   36 test(6,x'06000001',r3_f_f_i)
				mov	ip, r4
				ldr	r2, [sp, #1540]
				mov	r1, r6
				mov	r0, r5
				bl	TEST.10062(PLT)
		.LVL30:
   37 %if fail=0 %then printstring("Test ok ".tx(swopped))
				ldr	r3, [r4]
				cbz	r3, .L21
		.L18:
		.LVL31:
		.LBB25:
		.LBB26:
				movs	r0, #0
				bl	exit(PLT)
		.LVL32:
		.L21:
		.LBE26:
		.LBE25:
		.LBB27:
		.LBB28:
   38 %endofprogram
?L1 unused
?I unused
   40 Statements compiled
				ldr	r3, .L22+12
		.LPIC8:
				add	r3, pc
				ldr	r2, [r3]
				addw	r3, sp, #2568
				add	r2, r3, r2, lsl #8
				sub	r2, r2, #516
				add	r1, sp, #760
				add	r4, sp, #1016
				mov	r0, r4
				bl	_imp_join(PLT)
		.LVL33:
				mov	r2, #256
				add	r1, sp, #504
				mov	r0, r4
				bl	memcpy(PLT)
		.LVL34:
		.LBE28:
		.LBE27:
		.LBB29:
		.LBB30:
				movs	r2, #240
				add	r1, sp, #1032
				mov	r0, sp
				bl	memcpy(PLT)
		.LVL35:
				ldm	r4, {r0, r1, r2, r3}
				bl	_imp_printstring(PLT)
		.LVL36:
				b	.L18
		.L23:
				.align	2
		.L22:
				.word	_GLOBAL_OFFSET_TABLE_-(.LPIC6+4)
				.word	__stack_chk_guard(GOT)
				.word	.LANCHOR1-(.LPIC7+4)
				.word	.LANCHOR0-(.LPIC8+4)
		.LBE30:
		.LBE29:
		.LFE185:
				.section	.rodata
				.align	2
				.set	.LANCHOR1,. + 0
		.LC1:
				.byte	9
				.ascii	"expected=\000"
				.space	245
		.LC2:
				.byte	8
				.ascii	" actual=\000"
				.space	246
		.LC3:
				.ascii	"(swopped)\000"
				.space	1
				.bss
				.align	2
				.set	.LANCHOR0,. + 0
		SWOPPED.10025:
				.space	4
		.Letext0:
