         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
		.Ltext0:
				.globl	next_free_bound_index
				.bss
				.align 4
		next_free_bound_index:
				.zero	4
				.comm	_lb,384,32
				.comm	_ub,384,32
				.section	.rodata
		.LC8:
				.string	"string resolution fails"
				.align 32
		.LC0:
				.byte	5
				.string	"ABCDE"
				.zero	249
				.align 32
		.LC1:
				.byte	7
				.string	"\"  Sym="
				.zero	247
				.align 32
		.LC2:
				.byte	11
				.string	"Before: S=\""
				.zero	243
				.align 32
		.LC3:
				.byte	5
				.string	"\"->(\""
				.zero	249
				.align 32
		.LC4:
				.byte	1
				.string	"\""
				.zero	253
				.align 32
		.LC5:
				.byte	4
				.string	"\").S"
				.zero	250
				.align 32
		.LC6:
				.byte	15
				.string	"test-in/rt3.imp"
				.zero	239
				.align 32
		.LC7:
				.byte	10
				.string	"After: S=\""
				.zero	244
				.globl	main
		main:
		.LFB189:
				leal	4(%esp), %ecx
				andl	$-16, %esp
				pushl	-4(%ecx)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				pushl	%ecx
				subl	$3144, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -3148(%ebp)
				movl	%gs:20, %esi
				movl	%esi, -28(%ebp)
				xorl	%esi, %esi
				subl	$8, %esp
				pushl	-3148(%ebp)
				pushl	(%eax)
				call	_imp_initialise@PLT
				addl	$16, %esp
		.LBB58:
		.LBB59:
    2   %INTEGER SYM
    3   %STRING(255)S
    4   S="ABCDE"
				leal	-284(%ebp), %eax
				leal	.LC0@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2844(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE59:
				leal	-284(%ebp), %eax
				leal	-2844(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-284(%ebp), %eax
		.LBE58:
				subl	$4, %esp
				pushl	$255
				pushl	%eax
				leal	-3100(%ebp), %eax
				pushl	%eax
				call	_imp_strncpy@PLT
				addl	$16, %esp
		.L2:
		.LBB60:
    5   %WHILE S#"" %CYCLE
				movb	$0, -1308(%ebp)
				movl	$0, -1307(%ebp)
				leal	-1303(%ebp), %edx
				movl	$0, %eax
				movb	%al, (%edx)
				addl	$1, %edx
				movw	%ax, (%edx)
				addl	$2, %edx
				movl	$62, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-1308(%ebp), %eax
		.LBE60:
				subl	$8, %esp
				pushl	%eax
				leal	-3100(%ebp), %eax
				pushl	%eax
				call	_imp_strcmp@PLT
				addl	$16, %esp
				testl	%eax, %eax
				je	.L16
				leal	-3100(%ebp), %eax
				movl	%eax, -3112(%ebp)
				movl	$1, -3108(%ebp)
		.LBB61:
		.LBB62:
				movl	-3112(%ebp), %edx
				movl	-3108(%ebp), %eax
				addl	%edx, %eax
		.LBE62:
		.LBE61:
				nop
		.L4:
		.LBB106:
		.LBB107:
				call	_imp_newline@PLT
				movl	$0, -3104(%ebp)
		.LBE107:
		.LBE106:
		.LBB108:
		.LBB109:
				subl	$12, %esp
				pushl	-3104(%ebp)
				call	exit@PLT
		.LBE109:
		.LBE108:
		.LFE189:
				.section	.text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
				.globl	__x86.get_pc_thunk.bx
				.hidden	__x86.get_pc_thunk.bx
		__x86.get_pc_thunk.bx:
		.LFB190:
				movl	(%esp), %ebx
				ret
		.LFE190:
		.Letext0:
    6     SYM=CHARNO(S,1)
				movzbl	(%eax), %eax
				movzbl	%al, %eax
				movl	%eax, -3132(%ebp)
		.LBB63:
		.LBB64:
		.LBB65:
    7     printstring("Before: S=""".S."""  Sym="); printsymbol(sym); newline
				leal	-1308(%ebp), %eax
				leal	.LC1@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %eax
				movl	%eax, -3152(%ebp)
		.LBE65:
		.LBB66:
		.LBB67:
				leal	-1308(%ebp), %eax
				leal	.LC2@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %edx
		.LBE67:
				leal	-1308(%ebp), %eax
				subl	$4, %esp
				leal	-3100(%ebp), %ecx
				pushl	%ecx
				pushl	%edx
				pushl	%eax
				call	_imp_join@PLT
				addl	$12, %esp
				leal	-1308(%ebp), %edx
		.LBE66:
				leal	-1308(%ebp), %eax
				subl	$4, %esp
				pushl	-3152(%ebp)
				pushl	%edx
				pushl	%eax
				call	_imp_join@PLT
				addl	$12, %esp
				leal	-1308(%ebp), %edx
		.LBE64:
				leal	-1308(%ebp), %eax
				movl	%edx, %esi
				movl	$64, %edx
				movl	%eax, %edi
				movl	%edx, %ecx
				rep movsl
				leal	-1308(%ebp), %edx
				leal	-540(%ebp), %eax
				movl	%edx, %esi
				movl	$64, %edx
				movl	%eax, %edi
				movl	%edx, %ecx
				rep movsl
		.LBE63:
		.LBB68:
		.LBB69:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-540(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE69:
		.LBE68:
				movl	-3132(%ebp), %eax
				movsbl	%al, %eax
				movb	%al, -3133(%ebp)
		.LBB70:
		.LBB71:
				movsbl	-3133(%ebp), %eax
				subl	$12, %esp
				pushl	%eax
				call	_imp_printsymbol@PLT
				addl	$16, %esp
		.LBE71:
		.LBE70:
		.LBB72:
		.LBB73:
				call	_imp_newline@PLT
		.LBE73:
		.LBE72:
		.LBB74:
		.LBB75:
		.LBB76:
    8     printstring("""".S."""->(""")
				leal	-1308(%ebp), %eax
				leal	.LC3@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %eax
				movl	%eax, -3152(%ebp)
		.LBE76:
		.LBB77:
		.LBB78:
				leal	-1308(%ebp), %eax
				leal	.LC4@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %edx
		.LBE78:
				leal	-1308(%ebp), %eax
				subl	$4, %esp
				leal	-3100(%ebp), %ecx
				pushl	%ecx
				pushl	%edx
				pushl	%eax
				call	_imp_join@PLT
				addl	$12, %esp
				leal	-1308(%ebp), %edx
		.LBE77:
				leal	-1308(%ebp), %eax
				subl	$4, %esp
				pushl	-3152(%ebp)
				pushl	%edx
				pushl	%eax
				call	_imp_join@PLT
				addl	$12, %esp
				leal	-1308(%ebp), %edx
		.LBE75:
				leal	-1308(%ebp), %eax
				movl	%edx, %esi
				movl	$64, %edx
				movl	%eax, %edi
				movl	%edx, %ecx
				rep movsl
				leal	-1308(%ebp), %edx
				leal	-796(%ebp), %eax
				movl	%edx, %esi
				movl	$64, %edx
				movl	%eax, %edi
				movl	%edx, %ecx
				rep movsl
		.LBE74:
		.LBB79:
		.LBB80:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-796(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE80:
		.LBE79:
    9     printsymbol(SYM)
				movl	-3132(%ebp), %eax
				movsbl	%al, %eax
				movb	%al, -3134(%ebp)
		.LBB81:
		.LBB82:
				movsbl	-3134(%ebp), %eax
				subl	$12, %esp
				pushl	%eax
				call	_imp_printsymbol@PLT
				addl	$16, %esp
		.LBE82:
		.LBE81:
		.LBB83:
   10     printstring(""").S"); newline
				leal	-1308(%ebp), %eax
				leal	.LC5@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2588(%ebp), %eax
				leal	-1308(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1052(%ebp), %eax
				leal	-2588(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE83:
		.LBB84:
		.LBB85:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1052(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE85:
		.LBE84:
		.LBB86:
		.LBB87:
				call	_imp_newline@PLT
				movl	-3132(%ebp), %eax
				movl	%eax, -3128(%ebp)
				leal	-1308(%ebp), %eax
				movl	%eax, -3124(%ebp)
		.LBE87:
		.LBE86:
		.LBB88:
		.LBB89:
		.LBB90:
		.LBB91:
		.LBB92:
				movl	-3124(%ebp), %eax
		.LBE92:
		.LBE91:
				movb	$1, (%eax)
				leal	-1308(%ebp), %eax
				movl	%eax, -3120(%ebp)
				movl	$1, -3116(%ebp)
		.LBB93:
		.LBB94:
				movl	-3120(%ebp), %edx
				movl	-3116(%ebp), %eax
				addl	%edx, %eax
		.LBE94:
		.LBE93:
				movl	-3128(%ebp), %edx
				movb	%dl, (%eax)
				leal	-2332(%ebp), %eax
				leal	-1308(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE90:
		.LBE89:
   11     S->(TOSTRING(SYM)).S
				leal	-2332(%ebp), %eax
				movl	%eax, -3152(%ebp)
		.LBE88:
		.LBB95:
				leal	-1308(%ebp), %eax
				leal	-3100(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %edi
				movl	%edi, -3156(%ebp)
		.LBE95:
				subl	$8, %esp
				leal	-3100(%ebp), %eax
				pushl	%eax
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edx
				movl	-3152(%ebp), %esi
				movl	$64, %eax
				movl	%edx, %edi
				movl	%eax, %ecx
				rep movsl
				pushl	$0
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edx
				movl	-3156(%ebp), %esi
				movl	$64, %eax
				movl	%edx, %edi
				movl	%eax, %ecx
				rep movsl
				call	_imp_resolve@PLT
				addl	$528, %esp
				testl	%eax, %eax
				jne	.L9
				leal	-1820(%ebp), %eax
				subl	$8, %esp
				leal	.LC8@GOTOFF(%ebx), %edx
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L10
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				movl	%eax, -3152(%ebp)
				jmp	.L11
		.L10:
				movl	$11, -3152(%ebp)
		.L11:
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L12
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %edx
				leal	-1564(%ebp), %eax
				subl	$8, %esp
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				jmp	.L13
		.L12:
		.LBB96:
				leal	-1308(%ebp), %eax
				leal	.LC6@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2076(%ebp), %eax
				leal	-1308(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE96:
				leal	-1564(%ebp), %eax
				leal	-2076(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.L13:
				pushl	$0
				pushl	$1
				pushl	$7
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1820(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				pushl	-3152(%ebp)
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1564(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_signal_event@PLT
				addl	$528, %esp
		.L9:
		.LBB97:
		.LBB98:
		.LBB99:
   12     printstring("After: S=""".S.""""); newline
				leal	-1308(%ebp), %eax
				leal	.LC4@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %eax
				movl	%eax, -3152(%ebp)
		.LBE99:
		.LBB100:
		.LBB101:
				leal	-1308(%ebp), %eax
				leal	.LC7@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %edx
		.LBE101:
				leal	-1308(%ebp), %eax
				subl	$4, %esp
				leal	-3100(%ebp), %ecx
				pushl	%ecx
				pushl	%edx
				pushl	%eax
				call	_imp_join@PLT
				addl	$12, %esp
				leal	-1308(%ebp), %edx
		.LBE100:
				leal	-1308(%ebp), %eax
				subl	$4, %esp
				pushl	-3152(%ebp)
				pushl	%edx
				pushl	%eax
				call	_imp_join@PLT
				addl	$12, %esp
				leal	-1308(%ebp), %edx
		.LBE98:
				leal	-1308(%ebp), %eax
				movl	%edx, %esi
				movl	$64, %edx
				movl	%eax, %edi
				movl	%edx, %ecx
				rep movsl
				leal	-1308(%ebp), %edx
				leal	-284(%ebp), %eax
				movl	%edx, %esi
				movl	$64, %edx
				movl	%eax, %edi
				movl	%edx, %ecx
				rep movsl
		.LBE97:
		.LBB102:
		.LBB103:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-284(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE103:
		.LBE102:
		.LBB104:
		.LBB105:
				call	_imp_newline@PLT
		.LBE105:
		.LBE104:
   13   %REPEAT
				jmp	.L2
		.L16:
   14   NEWLINE
   15 %ENDOFPROGRAM
   19 Statements compiled
