         Edinburgh IMP77 Compiler - Version 8.4
    1 %external %integer fred
		.Ltext0:
				.align	1
				.global	BERT
				.thumb
				.thumb_func
		BERT:
		.LFB185:
    2 %external %routine bert(%integer i)
				@ args = 0, pretend = 0, frame = 0
				@ frame_needed = 0, uses_anonymous_args = 0
				@ link register save eliminated.
		.LVL0:
				ldr	r3, .L2
		.LPIC0:
				add	r3, pc
    3   fred = i
				ldr	r2, .L2+4
				ldr	r3, [r3, r2]
				str	r0, [r3]
				ldr	r3, .L9+4
				ldr	r3, [r4, r3]
				movs	r0, #22
				str	r0, [r3]
		.LVL5:
		.LBE9:
		.LBE8:
    4 %end
    5
				bx	lr
		.L3:
				.align	2
		.L2:
				.word	_GLOBAL_OFFSET_TABLE_-(.LPIC0+4)
				.word	FRED(GOT)
		.LFE185:
				.align	1
				.global	SHIELA
				.thumb
				.thumb_func
		SHIELA:
		.LFB186:
    6
    7 %external %routine shiela(%integer k)
				@ args = 0, pretend = 0, frame = 0
				@ frame_needed = 0, uses_anonymous_args = 0
				@ link register save eliminated.
		.LVL1:
    8 %own %integer local = 42
    9   k = local
   10   local = local + 1
				ldr	r2, .L5
		.LPIC1:
				add	r2, pc
				ldr	r3, [r2]
				adds	r3, r3, #1
				str	r3, [r2]
		.LVL2:
   11 %end
   12
				bx	lr
		.L6:
				.align	2
		.L5:
				.word	.LANCHOR0-(.LPIC1+4)
		.LFE186:
				.align	1
				.global	main
				.thumb
				.thumb_func
		main:
		.LFB187:
   13 %begin
				@ Volatile: function does not return.
				@ args = 0, pretend = 0, frame = 0
				@ frame_needed = 0, uses_anonymous_args = 0
		.LVL3:
				push	{r3, lr}
				ldr	r4, .L9
		.LPIC3:
				add	r4, pc
   14   bert(22)
				bl	_imp_initialise(PLT)
		.LVL4:
		.LBB8:
		.LBB9:
   15   shiela(fred)
				bl	SHIELA(PLT)
		.LVL6:
		.LBB10:
		.LBB11:
				movs	r0, #0
				bl	exit(PLT)
		.LVL7:
		.L10:
				.align	2
		.L9:
				.word	_GLOBAL_OFFSET_TABLE_-(.LPIC3+4)
				.word	FRED(GOT)
		.LBE11:
		.LBE10:
		.LFE187:
				.comm	FRED,4,4
				.data
				.align	2
				.set	.LANCHOR0,. + 0
		LOCAL.10028:
				.word	42
		.Letext0:
   16 %end %of %programm
   13 Statements compiled
