         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
		.Ltext0:
				.align	2
		LABEL.7700:
		.LFB186:
		.LVL34:
				sub	sp, sp, #3952
				stp	x29, x30, [sp]
				add	x29, sp, 0
				stp	x19, x20, [sp, 16]
				stp	x21, x22, [sp, 32]
				stp	x23, x24, [sp, 48]
				stp	x25, x26, [sp, 64]
				str	x27, [sp, 80]
				adrp	x2, :got:__stack_chk_guard
				ldr	x2, [x2, #:got_lo12:__stack_chk_guard]
				ldr	x3, [x2]
				str	x3, [x29, 3944]
				mov	x3,0
    2 %OWNINTEGER LABELNO=0
				bl	_imp_initialise
		.LVL35:
		.LBB61:
    3 %CONSTINTEGER MAXLABELS=10
    4 %RECORDFORMAT F(%BYTE B,%STRING(255)LAB)
    5 %OWNSTRING(15)%ARRAY LBLNAME(0:MAXLABELS)
    6 %OWNRECORD(F)%ARRAY LBL(0:MAXLABELS)
    7
    8 %RECORD(F)%MAP LABEL(%STRING(15) L)
    9 %INTEGER I
				sub	sp, sp, #2656
				stp	x29, x30, [sp]
				add	x29, sp, 0
				stp	x19, x20, [sp, 16]
				stp	x21, x22, [sp, 32]
				mov	x22, x0
				adrp	x0, :got:__stack_chk_guard
				ldr	x0, [x0, #:got_lo12:__stack_chk_guard]
				ldr	x1, [x0]
				str	x1, [x29, 2648]
				mov	x1,0
   10  %IF LABELNO>0 %THENSTART
				adrp	x0, .LANCHOR0
				ldr	w21, [x0, #:lo12:.LANCHOR0]
				cmp	w21, 0
				ble	.L10
		.LVL0:
		.LBB46:
   11   %FOR I=1,1,LABELNO %CYCLE
   12    %RESULT==LBL(I) %IF LBLNAME(I)=L
   13   %REPEAT
				cmp	w21, #1
				bmi	.L18
		.L3:
		.LVL1:
				adrp	x19, .LANCHOR0
				add	x19, x19, :lo12:.LANCHOR0
				add	x19, x19, 264
				mov	w20, 0
		.LVL2:
		.L7:
				adrp	x0, :got:_imp_current_file
				ldr	x0, [x0, #:got_lo12:_imp_current_file]
				ldr	x0, [x0]
				cbz	x0, .L4
				add	x8, x29, 1624
				bl	_imp_c2istr
		.LVL19:
		.L5:
				adrp	x0, :got:_imp_current_line
				ldr	x0, [x0, #:got_lo12:_imp_current_line]
				ldr	w20, [x0]
				cmp	w20, 0
				mov	w0, 13
				csel	w20, w20, w0, ne
				add	x24, x29, 1880
				mov	x8, x24
				adrp	x0, .LC5
				add	x0, x0, :lo12:.LC5
				bl	_imp_c2istr
		.LVL20:
				add	x19, x29, 336
				mov	x25, 256
				mov	x2, x25
				add	x1, x29, 1624
				mov	x0, x19
				bl	memcpy
		.LVL21:
				add	x23, x29, 80
				mov	x2, x25
				mov	x1, x24
				mov	x0, x23
				bl	memcpy
		.LVL22:
				mov	w5, 0
				mov	w4, 1
				mov	w3, 5
				mov	x2, x23
				mov	w1, w20
				mov	x0, x19
				bl	_signal_event
		.LVL23:
				ldp	x23, x24, [x29, 48]
				ldr	x25, [x29, 64]
				b	.L3
		.L4:
		.LBB47:
				add	x20, x29, 2392
				mov	x23, 256
				mov	x2, x23
				adrp	x1, .LANCHOR1
				add	x1, x1, :lo12:.LANCHOR1
				mov	x0, x20
				bl	memcpy
		.LVL24:
				add	x19, x29, 600
				mov	x2, x23
				mov	x1, x20
				mov	x0, x19
				bl	memcpy
		.LVL25:
		.LBE47:
				mov	x2, x23
				mov	x1, x19
				add	x0, x29, 1624
				bl	memcpy
		.LVL26:
				b	.L5
		.LVL27:
		.L19:
   14  %FINISH
				mov	x1, x22
				mov	x0, x19
				bl	_imp_strcmp
		.LVL4:
				cbz	w0, .L19
				add	x19, x19, 256
   15 !  INSERT NEW LABEL-NAME.
   16  LABELNO=LABELNO+1
				cmp	w21, w20
				bne	.L7
		.L2:
		.LVL5:
		.L10:
		.LBE46:
				adrp	x0, .LANCHOR0
				ldr	w1, [x0, #:lo12:.LANCHOR0]
				add	w1, w1, 1
				str	w1, [x0, #:lo12:.LANCHOR0]
				cmp	w1, 10
				ble	.L11
				stp	x23, x24, [x29, 48]
				str	x25, [x29, 64]
		.LBB48:
		.LBB49:
   17  %IF LABELNO>MAXLABELS %THENSTART
				add	w20, w20, 1
		.LVL3:
				adrp	x0, .LANCHOR0
				add	x0, x0, :lo12:.LANCHOR0
				add	x0, x0, 2824
				sxtw	x20, w20
				add	x20, x20, x20, lsl 8
		.LVL28:
				add	x0, x0, x20
				b	.L1
		.LVL29:
		.L11:
		.LBE60:
   18   PRINT STRING(L." MAKES TOO MANY LABELS."); NEWLINE
   19   %FOR I=1,1,MAXLABELS %CYCLE
   20    PRINT STRING(LBLNAME(I))
				add	x8, x29, 2392
				add	x1, x29, 1112
				mov	x0, x22
				bl	_imp_join
		.LVL6:
				add	x20, x29, 2136
				mov	x21, 256
				mov	x2, x21
				add	x1, x29, 856
				mov	x0, x20
				bl	memcpy
		.LVL7:
		.LBE49:
		.LBE48:
		.LBB50:
		.LBB51:
				add	x19, x29, 80
				mov	x2, x21
				mov	x1, x20
				mov	x0, x19
				bl	memcpy
		.LVL8:
				mov	x0, x19
				bl	_imp_printstring
		.LVL9:
		.LBE51:
		.LBE50:
		.LBB52:
		.LBB53:
				bl	_imp_newline
		.LVL10:
				mov	w19, 10
				add	x22, x29, 2392
				add	x23, x29, 1368
		.LBE53:
		.LBE52:
		.LBB54:
		.LBB55:
				add	x20, x29, 80
		.LVL11:
		.L12:
				mov	x2, x21
				mov	x1, x23
				mov	x0, x22
				bl	memcpy
		.LVL12:
				mov	x2, x21
				mov	x1, x22
				mov	x0, x20
				bl	memcpy
		.LVL13:
				mov	x0, x20
				bl	_imp_printstring
		.LVL14:
		.LBE55:
		.LBE54:
		.LBB56:
		.LBB57:
				bl	_imp_newline
		.LVL15:
		.LDL1:
		.LBE57:
		.LBE56:
   21    NEWLINE
   22   %REPEAT
				subs	w19, w19, #1
		.LVL16:
				bne	.L12
		.L13:
		.LVL17:
		.LBB58:
		.LBB59:
				mov	w0, 0
				bl	exit
		.LVL18:
		.L18:
				stp	x23, x24, [x29, 48]
				str	x25, [x29, 64]
		.LBE59:
		.LBE58:
		.LBB60:
   23   %MONITOR
   24   %STOP
   25  %FINISH    ;!  DEALING WITH TOO MANY LABELS.
   26  LBLNAME(LABELNO)=L
   27  LBL(LABELNO)_LAB=""
   28  %RESULT==LBL(LABELNO)
				adrp	x19, .LANCHOR0
				add	x20, x19, :lo12:.LANCHOR0
				add	x3, x20, 8
				sbfiz	x0, x1, 8, 32
				mov	x2, 15
				add	x1, x29, 2136
				add	x0, x3, x0
				bl	_imp_strncpy
		.LVL30:
				ldrsw	x0, [x19, #:lo12:.LANCHOR0]
				add	x0, x0, x0, lsl 8
				add	x0, x20, x0
		.L1:
				adrp	x1, :got:__stack_chk_guard
				ldr	x1, [x1, #:got_lo12:__stack_chk_guard]
				ldr	x2, [x29, 2648]
				ldr	x1, [x1]
				eor	x1, x2, x1
				cbnz	x1, .L20
				ldp	x19, x20, [sp, 16]
				ldp	x21, x22, [sp, 32]
				ldp	x29, x30, [sp]
				add	sp, sp, 2656
				ret
		.L20:
				stp	x23, x24, [x29, 48]
				str	x25, [x29, 64]
				bl	__stack_chk_fail
		.LVL33:
		.LFE186:
				.align	2
				.global	main
		main:
		.LFB185:
   29 %END
				add	x20, x20, 2824
				ldrsw	x0, [x19, #:lo12:.LANCHOR0]
				add	x0, x0, x0, lsl 8
				add	x0, x0, 1
		.LVL31:
				mov	x2, 255
				add	x1, x29, 2392
				add	x0, x20, x0
				bl	_imp_strncpy
		.LVL32:
   30
   31
   32
   33   LABEL("T")_LAB="TESTING USE OF LABEL"
   34   PRINT STRING(LABEL("T")_LAB); NEWLINE
   35   LABEL("T")_LAB="THIS SHOULD MODIFY ".LABEL("T")_LAB." AS I TRIED TO DO YESTERDAY"
				add	x24, x29, 3704
				mov	x25, 240
				mov	x2, x25
				mov	w1, 0
				mov	x0, x24
				bl	memset
		.LVL36:
				adrp	x0, .LANCHOR1+256
				ldrh	w23, [x0, #:lo12:.LANCHOR1+256]
				add	x0, x29, 3584
				strh	w23, [x0, 105]
				str	xzr, [x0, 107]
				str	wzr, [x0, 115]
				strb	wzr, [x29, 3703]
				mov	w22, 1
				strb	w22, [x29, 3688]
				add	x26, x29, 360
				add	x21, x29, 3688
				mov	x20, 256
				mov	x2, x20
				mov	x1, x21
				mov	x0, x26
				bl	memcpy
		.LVL37:
		.LBE61:
				add	x19, x29, 96
				mov	x2, x20
				mov	x1, x26
				mov	x0, x19
				bl	memcpy
		.LVL38:
				mov	x0, x19
				bl	LABEL.7700
		.LVL39:
				mov	x2, 255
				add	x1, x29, 616
				add	x0, x0, 1
				bl	_imp_strncpy
		.LVL40:
		.LBB62:
		.LBB63:
   36   PRINT STRING(LABEL("T")_LAB); NEWLINE
				mov	x2, x25
				mov	w1, 0
				mov	x0, x24
				bl	memset
		.LVL41:
				add	x0, x29, 3584
				strh	w23, [x0, 105]
				str	xzr, [x0, 107]
				str	wzr, [x0, 115]
				strb	wzr, [x29, 3703]
				strb	w22, [x29, 3688]
				add	x24, x29, 1128
				mov	x2, x20
				mov	x1, x21
				mov	x0, x24
				bl	memcpy
		.LVL42:
		.LBE63:
				mov	x2, x20
				mov	x1, x24
				mov	x0, x19
				bl	memcpy
		.LVL43:
				mov	x0, x19
				bl	LABEL.7700
		.LVL44:
				mov	x2, x20
				add	x1, x29, 872
				mov	x0, x21
				bl	memcpy
		.LVL45:
		.LBE62:
		.LBB64:
		.LBB65:
				mov	x2, x20
				mov	x1, x21
				mov	x0, x19
				bl	memcpy
		.LVL46:
				mov	x0, x19
				bl	_imp_printstring
		.LVL47:
		.LBE65:
		.LBE64:
		.LBB66:
		.LBB67:
				bl	_imp_newline
		.LVL48:
		.LBE67:
		.LBE66:
		.LBB68:
   37 %ENDOFPROGRAM
				add	x24, x29, 3448
				mov	x2, x25
				mov	w1, 0
				mov	x0, x24
				bl	memset
		.LVL49:
				add	x0, x29, 3584
				strh	w23, [x0, -151]
				str	xzr, [x0, -149]
				str	wzr, [x0, -141]
				strb	wzr, [x29, 3447]
				strb	w22, [x29, 3432]
				add	x26, x29, 1384
				add	x21, x29, 3432
				mov	x2, x20
				mov	x1, x21
				mov	x0, x26
				bl	memcpy
		.LVL50:
		.LBE68:
				mov	x2, x20
				mov	x1, x26
				mov	x0, x19
				bl	memcpy
		.LVL51:
				mov	x0, x19
				bl	LABEL.7700
		.LVL52:
				mov	x27, x0
		.LBB69:
		.LBB70:
		.LBB71:
		.LBB72:
				mov	x2, x25
				mov	w1, 0
				mov	x0, x24
				bl	memset
		.LVL53:
				add	x0, x29, 3584
				strh	w23, [x0, -151]
				str	xzr, [x0, -149]
				str	wzr, [x0, -141]
				strb	wzr, [x29, 3447]
				strb	w22, [x29, 3432]
				add	x26, x29, 2408
				mov	x2, x20
				mov	x1, x21
				mov	x0, x26
				bl	memcpy
		.LVL54:
		.LBE72:
				mov	x2, x20
				mov	x1, x26
				mov	x0, x19
				bl	memcpy
		.LVL55:
				mov	x0, x19
				bl	LABEL.7700
		.LVL56:
				add	x26, x29, 1896
				mov	x8, x26
				add	x1, x0, 1
				add	x0, x29, 2152
				bl	_imp_join
		.LVL57:
		.LBE71:
				mov	x8, x21
				add	x1, x29, 2664
				mov	x0, x26
				bl	_imp_join
		.LVL58:
		.LBE70:
		.LBE69:
				mov	x2, 255
				add	x1, x29, 1640
				add	x0, x27, 1
				bl	_imp_strncpy
		.LVL59:
		.LBB73:
		.LBB74:
   35 Statements compiled
				mov	x2, x25
				mov	w1, 0
				mov	x0, x24
				bl	memset
		.LVL60:
				add	x0, x29, 3584
				strh	w23, [x0, -151]
				str	xzr, [x0, -149]
				str	wzr, [x0, -141]
				strb	wzr, [x29, 3447]
				strb	w22, [x29, 3432]
				add	x22, x29, 3176
				mov	x2, x20
				mov	x1, x21
				mov	x0, x22
				bl	memcpy
		.LVL61:
		.LBE74:
				mov	x2, x20
				mov	x1, x22
				mov	x0, x19
				bl	memcpy
		.LVL62:
				mov	x0, x19
				bl	LABEL.7700
		.LVL63:
				mov	x2, x20
				add	x1, x29, 2920
				mov	x0, x21
				bl	memcpy
		.LVL64:
		.LBE73:
		.LBB75:
		.LBB76:
				mov	x2, x20
				mov	x1, x21
				mov	x0, x19
				bl	memcpy
		.LVL65:
				mov	x0, x19
				bl	_imp_printstring
		.LVL66:
		.LBE76:
		.LBE75:
		.LBB77:
		.LBB78:
				bl	_imp_newline
		.LVL67:
		.LBE78:
		.LBE77:
		.LBB79:
		.LBB80:
				mov	w0, 0
				bl	exit
		.LVL68:
		.LBE80:
		.LBE79:
		.LFE185:
				.section	.rodata
				.align	3
				.set	.LANCHOR1,. + 0
		.LC3:
				.byte	17
				.string	"test-new/rt35.imp"
				.zero	237
		.LC6:
				.string	"T"
				.zero	13
				.bss
				.align	3
				.set	.LANCHOR0,. + 0
		LABELNO.7689:
				.zero	4
				.zero	4
		LBLNAME.7697:
				.zero	2816
		LBL.7698:
				.zero	2827
				.section	.rodata.str1.8,"aMS",@progbits,1
				.align	3
		.LC5:
				.string	"Illegal cycle I = 1, 1, LABELNO"
		.Letext0:
