         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.section	".text"
		.Ltext0:
				.section	.rodata.str1.8,"aMS",@progbits,1
				.align 8
		.LC5:
				.asciz	"Illegal cycle I = 1, 1, LABELNO"
				.section	".rodata"
		.LC3:
				.byte	17
				.asciz	"test-new/rt35.imp"
				.skip	237
				.section	".text"
				.align 4
				.proc	0110
		LABEL.6067:
		.LFB186:
		.LVL33:
				save	%sp, -4032, %sp
		.LVL34:
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
    2 %OWNINTEGER LABELNO=0
				mov	%i1, %o1
				call	_imp_initialise, 0
				 mov	%i0, %o0
		.LVL35:
		.LBB62:
    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
				.register	%g2, #scratch
				.register	%g7, #ignore
				save	%sp, -2752, %sp
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
   10  %IF LABELNO>0 %THENSTART
				sethi	%hi(LABELNO.6056), %g1
				lduw	[%g1+%lo(LABELNO.6056)], %i3
				cmp	%i3, 0
				ble,pn	%icc, .L23
				 addcc	%i3, -1, %g0
		.LVL0:
		.LBB46:
   11   %FOR I=1,1,LABELNO %CYCLE
   12    %RESULT==LBL(I) %IF LBLNAME(I)=L
   13   %REPEAT
				bneg,pn	%icc, .L17
				 sethi	%hi(LBLNAME.6064+256), %i4
		.LVL1:
		.L20:
				or	%i4, %lo(LBLNAME.6064+256), %i4
				mov	0, %i5
		.LVL2:
		.L7:
				sethi	%hi(_imp_current_file), %g1
				ldx	[%g1+%lo(_imp_current_file)], %o1
				brz,pn	%o1, .L4
				 mov	256, %o2
				call	_imp_c2istr, 0
				 add	%fp, 1015, %o0
		.LVL18:
				sethi	%hi(_imp_current_line), %g1
		.L21:
				lduw	[%g1+%lo(_imp_current_line)], %i5
				cmp	%i5, 0
				be,a,pt	%icc, .L6
				 mov	13, %i5
		.L6:
				sethi	%hi(.LC5), %o1
				or	%o1, %lo(.LC5), %o1
				call	_imp_c2istr, 0
				 add	%fp, 1271, %o0
		.LVL19:
				mov	256, %o2
				add	%fp, 1015, %o1
				call	memcpy, 0
				 add	%fp, -273, %o0
		.LVL20:
				mov	256, %o2
				add	%fp, 1271, %o1
				call	memcpy, 0
				 add	%fp, -529, %o0
		.LVL21:
				mov	0, %o5
				mov	1, %o4
				mov	5, %o3
				add	%fp, -529, %o2
				sra	%i5, 0, %o1
				call	_signal_event, 0
				 add	%fp, -273, %o0
		.LVL22:
				ba,pt	%xcc, .L20
				 sethi	%hi(LBLNAME.6064+256), %i4
		.L4:
		.LBB47:
				sethi	%hi(.LC3), %o1
				or	%o1, %lo(.LC3), %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL23:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, -9, %o0
		.LVL24:
		.LBE47:
				mov	256, %o2
				add	%fp, -9, %o1
				call	memcpy, 0
				 add	%fp, 1015, %o0
		.LVL25:
		.LBE60:
				ba,pt	%xcc, .L21
				 sethi	%hi(_imp_current_line), %g1
		.LVL26:
		.L18:
		.LBB61:
   14  %FINISH
				mov	%i0, %o1
				call	_imp_strcmp, 0
				 mov	%i4, %o0
		.LVL4:
				cmp	%o0, 0
				be,pn	%icc, .L18
				 cmp	%i3, %i5
   15 !  INSERT NEW LABEL-NAME.
   16  LABELNO=LABELNO+1
				bne,pt	%icc, .L7
				 add	%i4, 256, %i4
		.L2:
		.LVL5:
		.L10:
		.LBE46:
				sethi	%hi(LABELNO.6056), %g1
		.L23:
				lduw	[%g1+%lo(LABELNO.6056)], %o0
				add	%o0, 1, %o0
				cmp	%o0, 10
				ble,pt	%icc, .L11
				 st	%o0, [%g1+%lo(LABELNO.6056)]
		.LBB48:
		.LBB49:
   17  %IF LABELNO>MAXLABELS %THENSTART
				add	%i5, 1, %i5
		.LVL3:
				sra	%i5, 0, %i5
				sllx	%i5, 8, %i0
				add	%i0, %i5, %i5
		.LVL27:
				sethi	%hi(LBL.6065), %i0
				or	%i0, %lo(LBL.6065), %i0
				ba,pt	%xcc, .L1
				 add	%i5, %i0, %i0
		.LVL28:
		.L11:
		.LBE61:
   18   PRINT STRING(L." MAKES TOO MANY LABELS."); NEWLINE
   19   %FOR I=1,1,MAXLABELS %CYCLE
   20    PRINT STRING(LBLNAME(I))
				add	%fp, 503, %o2
				mov	%i0, %o1
				call	_imp_join, 0
				 add	%fp, 1783, %o0
		.LVL6:
				mov	256, %o2
				add	%fp, 247, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL7:
		.LBE49:
		.LBE48:
		.LBB50:
		.LBB51:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, -529, %o0
		.LVL8:
				call	_imp_printstring, 0
				 add	%fp, -529, %o0
		.LVL9:
		.LBE51:
		.LBE50:
		.LBB52:
		.LBB53:
				call	_imp_newline, 0
				 mov	10, %i5
		.LVL10:
				mov	256, %o2
		.L22:
				add	%fp, 759, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL11:
		.LBE53:
		.LBE52:
		.LBB54:
		.LBB55:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, -529, %o0
		.LVL12:
				call	_imp_printstring, 0
				 add	%fp, -529, %o0
		.LVL13:
		.LBE55:
		.LBE54:
		.LBB56:
		.LBB57:
				call	_imp_newline, 0
				 nop
		.LVL14:
		.LDL1:
		.LBE57:
		.LBE56:
   21    NEWLINE
   22   %REPEAT
				addcc	%i5, -1, %i5
		.LVL15:
				bne,pt	%icc, .L22
				 mov	256, %o2
		.L13:
		.LVL16:
		.LBB58:
		.LBB59:
				call	exit, 0
				 mov	0, %o0
		.LVL17:
		.L17:
		.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)
				sra	%o0, 0, %o0
				sllx	%o0, 8, %o0
				mov	15, %o2
				add	%fp, 1527, %o1
				sethi	%hi(LBLNAME.6064), %g1
				or	%g1, %lo(LBLNAME.6064), %g1
				call	_imp_strncpy, 0
				 add	%g1, %o0, %o0
		.LVL29:
				ldsw	[%i4+%lo(LABELNO.6056)], %g1
				sllx	%g1, 8, %i0
				add	%i0, %g1, %i0
				add	%i0, %i5, %i0
		.L1:
				ldx	[%fp+2039], %g1
				ldx	[%g7+40], %g2
				xor	%g1, %g2, %g1
				mov	0, %g2
				brnz,pn	%g1, .L19
				 nop
				return	%i7+8
				 nop
		.L19:
				call	__stack_chk_fail, 0
				 nop
		.LVL32:
				nop
		.LFE186:
				.section	".rodata"
				.align 8
		.LC6:
				.asciz	"T"
				.skip	13
				.section	".text"
				.align 4
				.global main
				.proc	04
		main:
		.LFB185:
   29 %END
				sethi	%hi(LABELNO.6056), %i4
				ldsw	[%i4+%lo(LABELNO.6056)], %g1
				sllx	%g1, 8, %o0
				add	%o0, %g1, %o0
				add	%o0, 1, %o0
				sethi	%hi(LBL.6065), %i0
				or	%i0, %lo(LBL.6065), %i5
		.LVL30:
				mov	255, %o2
				add	%fp, 1783, %o1
				call	_imp_strncpy, 0
				 add	%i5, %o0, %o0
		.LVL31:
   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"
				mov	240, %o2
				mov	0, %o1
				call	memset, 0
				 add	%fp, 1799, %o0
		.LVL36:
				sethi	%hi(.LC6), %g1
				ldub	[%g1+%lo(.LC6)], %i3
				stb	%i3, [%fp+1784]
				ldub	[%g1+%lo(.LC6)+1], %i4
				stb	%i4, [%fp+1785]
				stb	%g0, [%fp+1786]
				stb	%g0, [%fp+1787]
				stb	%g0, [%fp+1788]
				stb	%g0, [%fp+1789]
				stb	%g0, [%fp+1790]
				stb	%g0, [%fp+1791]
				stb	%g0, [%fp+1792]
				stb	%g0, [%fp+1793]
				stb	%g0, [%fp+1794]
				stb	%g0, [%fp+1795]
				stb	%g0, [%fp+1796]
				stb	%g0, [%fp+1797]
				stb	%g0, [%fp+1798]
				mov	1, %i5
				stb	%i5, [%fp+1783]
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, -1545, %o0
		.LVL37:
		.LBE62:
				mov	256, %o2
				add	%fp, -1545, %o1
				call	memcpy, 0
				 add	%fp, -1809, %o0
		.LVL38:
				call	LABEL.6067, 0
				 add	%fp, -1809, %o0
		.LVL39:
				mov	255, %o2
				add	%fp, -1289, %o1
				call	_imp_strncpy, 0
				 add	%o0, 1, %o0
		.LVL40:
		.LBB63:
		.LBB64:
   36   PRINT STRING(LABEL("T")_LAB); NEWLINE
				mov	240, %o2
				mov	0, %o1
				call	memset, 0
				 add	%fp, 1799, %o0
		.LVL41:
				stb	%i3, [%fp+1784]
				stb	%i4, [%fp+1785]
				stb	%g0, [%fp+1786]
				stb	%g0, [%fp+1787]
				stb	%g0, [%fp+1788]
				stb	%g0, [%fp+1789]
				stb	%g0, [%fp+1790]
				stb	%g0, [%fp+1791]
				stb	%g0, [%fp+1792]
				stb	%g0, [%fp+1793]
				stb	%g0, [%fp+1794]
				stb	%g0, [%fp+1795]
				stb	%g0, [%fp+1796]
				stb	%g0, [%fp+1797]
				stb	%g0, [%fp+1798]
				stb	%i5, [%fp+1783]
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, -777, %o0
		.LVL42:
		.LBE64:
				mov	256, %o2
				add	%fp, -777, %o1
				call	memcpy, 0
				 add	%fp, -1809, %o0
		.LVL43:
				call	LABEL.6067, 0
				 add	%fp, -1809, %o0
		.LVL44:
				mov	256, %o2
				add	%fp, -1033, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL45:
		.LBE63:
		.LBB65:
		.LBB66:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, -1809, %o0
		.LVL46:
				call	_imp_printstring, 0
				 add	%fp, -1809, %o0
		.LVL47:
		.LBE66:
		.LBE65:
		.LBB67:
		.LBB68:
				call	_imp_newline, 0
				 nop
		.LVL48:
		.LBE68:
		.LBE67:
		.LBB69:
   37 %ENDOFPROGRAM
				mov	240, %o2
				mov	0, %o1
				call	memset, 0
				 add	%fp, 1543, %o0
		.LVL49:
				stb	%i3, [%fp+1528]
				stb	%i4, [%fp+1529]
				stb	%g0, [%fp+1530]
				stb	%g0, [%fp+1531]
				stb	%g0, [%fp+1532]
				stb	%g0, [%fp+1533]
				stb	%g0, [%fp+1534]
				stb	%g0, [%fp+1535]
				stb	%g0, [%fp+1536]
				stb	%g0, [%fp+1537]
				stb	%g0, [%fp+1538]
				stb	%g0, [%fp+1539]
				stb	%g0, [%fp+1540]
				stb	%g0, [%fp+1541]
				stb	%g0, [%fp+1542]
				stb	%i5, [%fp+1527]
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, -521, %o0
		.LVL50:
		.LBE69:
				mov	256, %o2
				add	%fp, -521, %o1
				call	memcpy, 0
				 add	%fp, -1809, %o0
		.LVL51:
				call	LABEL.6067, 0
				 add	%fp, -1809, %o0
		.LVL52:
				mov	%o0, %i2
		.LBB70:
		.LBB71:
		.LBB72:
		.LBB73:
				mov	240, %o2
				mov	0, %o1
				call	memset, 0
				 add	%fp, 1543, %o0
		.LVL53:
				stb	%i3, [%fp+1528]
				stb	%i4, [%fp+1529]
				stb	%g0, [%fp+1530]
				stb	%g0, [%fp+1531]
				stb	%g0, [%fp+1532]
				stb	%g0, [%fp+1533]
				stb	%g0, [%fp+1534]
				stb	%g0, [%fp+1535]
				stb	%g0, [%fp+1536]
				stb	%g0, [%fp+1537]
				stb	%g0, [%fp+1538]
				stb	%g0, [%fp+1539]
				stb	%g0, [%fp+1540]
				stb	%g0, [%fp+1541]
				stb	%g0, [%fp+1542]
				stb	%i5, [%fp+1527]
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 503, %o0
		.LVL54:
		.LBE73:
				mov	256, %o2
				add	%fp, 503, %o1
				call	memcpy, 0
				 add	%fp, -1809, %o0
		.LVL55:
				call	LABEL.6067, 0
				 add	%fp, -1809, %o0
		.LVL56:
				add	%o0, 1, %o2
				add	%fp, 247, %o1
				call	_imp_join, 0
				 add	%fp, -9, %o0
		.LVL57:
		.LBE72:
				add	%fp, 759, %o2
				add	%fp, -9, %o1
				call	_imp_join, 0
				 add	%fp, 1527, %o0
		.LVL58:
		.LBE71:
		.LBE70:
				mov	255, %o2
				add	%fp, -265, %o1
				call	_imp_strncpy, 0
				 add	%i2, 1, %o0
		.LVL59:
		.LBB74:
		.LBB75:
   35 Statements compiled
				mov	240, %o2
				mov	0, %o1
				call	memset, 0
				 add	%fp, 1543, %o0
		.LVL60:
				stb	%i3, [%fp+1528]
				stb	%i4, [%fp+1529]
				stb	%g0, [%fp+1530]
				stb	%g0, [%fp+1531]
				stb	%g0, [%fp+1532]
				stb	%g0, [%fp+1533]
				stb	%g0, [%fp+1534]
				stb	%g0, [%fp+1535]
				stb	%g0, [%fp+1536]
				stb	%g0, [%fp+1537]
				stb	%g0, [%fp+1538]
				stb	%g0, [%fp+1539]
				stb	%g0, [%fp+1540]
				stb	%g0, [%fp+1541]
				stb	%g0, [%fp+1542]
				stb	%i5, [%fp+1527]
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 1271, %o0
		.LVL61:
		.LBE75:
				mov	256, %o2
				add	%fp, 1271, %o1
				call	memcpy, 0
				 add	%fp, -1809, %o0
		.LVL62:
				call	LABEL.6067, 0
				 add	%fp, -1809, %o0
		.LVL63:
				mov	256, %o2
				add	%fp, 1015, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL64:
		.LBE74:
		.LBB76:
		.LBB77:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, -1809, %o0
		.LVL65:
				call	_imp_printstring, 0
				 add	%fp, -1809, %o0
		.LVL66:
		.LBE77:
		.LBE76:
		.LBB78:
		.LBB79:
				call	_imp_newline, 0
				 nop
		.LVL67:
		.LBE79:
		.LBE78:
		.LBB80:
		.LBB81:
				call	exit, 0
				 mov	0, %o0
		.LVL68:
		.LBE81:
		.LBE80:
				nop
		.LFE185:
				.common	LABELNO.6056,4,4
				.common	LBLNAME.6064,2816,1
				.common	LBL.6065,2827,1
		.Letext0:
