         Edinburgh IMP77 Compiler - Version 8.4
    1
		.Ltext0:
		_imp_PROMPT:
		.LFB69:
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				subl	$12, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				subl	$12, %esp
				leal	__PRETTY_FUNCTION__.5536@GOTOFF(%ebx), %eax
				pushl	%eax
				call	check_instream@PLT
				addl	$16, %esp
				leal	8(%ebp), %edx
				movl	_imp_promptstr@GOT(%ebx), %eax
				movl	%edx, %ebx
				movl	$256, %edx
				movl	(%ebx), %ecx
				movl	%ecx, (%eax)
				movl	-4(%ebx,%edx), %ecx
				movl	%ecx, -4(%eax,%edx)
				leal	4(%eax), %edi
				andl	$-4, %edi
				subl	%edi, %eax
				subl	%eax, %ebx
				addl	%eax, %edx
				andl	$-4, %edx
				movl	%edx, %eax
				shrl	$2, %eax
				movl	%ebx, %esi
				movl	%eax, %ecx
				rep movsl
				nop
				leal	-12(%ebp), %esp
				popl	%ebx
				popl	%esi
				popl	%edi
				popl	%ebp
				ret
		.LFE69:
				.section	.rodata
		.LC6:
				.string	""
				.align 32
		.LC0:
				.byte	20
				.string	"test-in/test113b.imp"
				.zero	234
				.globl	GETYNX
		GETYNX:
		.LFB189:
    2
    3 %externalintegerfn get YNX
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				subl	$1084, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ebx, -1084(%ebp)
				movl	%gs:20, %eax
				movl	%eax, -28(%ebp)
				xorl	%eax, %eax
    4   %on %event 9 %start
				subl	$8, %esp
				pushl	$1
				movl	_imp_event@GOT(%ebx), %eax
				leal	532(%eax), %eax
				pushl	%eax
				call	__sigsetjmp@PLT
				addl	$16, %esp
				testl	%eax, %eax
				jne	.L4
		.LBB42:
				movl	$9, -1052(%ebp)
				movl	$0, -1068(%ebp)
		.LBB43:
				movl	$0, -1064(%ebp)
				jmp	.L5
		.L6:
				movl	-1064(%ebp), %eax
				movl	-1052(%ebp,%eax,4), %eax
				movl	$1, %edx
				movl	%eax, %ecx
				sall	%cl, %edx
				movl	%edx, %eax
				orl	%eax, -1068(%ebp)
				addl	$1, -1064(%ebp)
		.L5:
				cmpl	$0, -1064(%ebp)
				je	.L6
		.LBE43:
				movl	-1068(%ebp), %eax
		.LBE42:
				subl	$8, %esp
				pushl	%eax
				movl	-1084(%ebp), %ebx
				movl	_imp_event@GOT(%ebx), %eax
				pushl	%eax
				call	_imp_on_event_enter@PLT
				addl	$16, %esp
				testl	%eax, %eax
				je	.L4
				jmp	.L7
		.L4:
    5     %result = 'X'
				movl	$88, %eax
				jmp	.L8
		.L7:
		.L9:
		.LBB44:
		.LBB45:
				movl	-1084(%ebp), %edi
				movl	%edi, %ebx
				call	_imp_nextsymbol@PLT
		.LBE45:
		.LBE44:
    6   %finish
    7   %integer c
    8   %cycle
    9     !read symbol(c)  ;! read symbol currently not working due to %name parameters not being handled yet.
   10     c = next symbol; skip symbol
				movl	%eax, -1060(%ebp)
		.LBB46:
		.LBB47:
				movl	%edi, %ebx
				call	_imp_skipsymbol@PLT
		.LBE47:
		.LBE46:
   11     %signal 7,1,0 %if c = '?'
				cmpl	$63, -1060(%ebp)
				jne	.L25
				leal	-540(%ebp), %eax
				subl	$8, %esp
				movl	-1084(%ebp), %esi
				leal	.LC6@GOTOFF(%esi), %edx
				pushl	%edx
				pushl	%eax
				movl	%esi, %ebx
				call	_imp_c2istr@PLT
				addl	$12, %esp
				movl	_imp_current_line@GOT(%esi), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L13
				movl	-1084(%ebp), %eax
				movl	_imp_current_line@GOT(%eax), %eax
				movl	(%eax), %eax
				movl	%eax, -1088(%ebp)
				jmp	.L14
		.L13:
				movl	$11, -1088(%ebp)
		.L14:
				movl	-1084(%ebp), %eax
				movl	_imp_current_file@GOT(%eax), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L15
				movl	-1084(%ebp), %ebx
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %edx
				leal	-284(%ebp), %eax
				subl	$8, %esp
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				jmp	.L16
		.L15:
		.LBB48:
				leal	-1052(%ebp), %eax
				movl	-1084(%ebp), %ecx
				leal	.LC0@GOTOFF(%ecx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-796(%ebp), %eax
				leal	-1052(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE48:
				leal	-284(%ebp), %eax
				leal	-796(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.L16:
				pushl	$0
				pushl	$1
				pushl	$7
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-540(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				pushl	-1088(%ebp)
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-284(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	-1084(%ebp), %ebx
				call	_signal_event@PLT
				addl	$528, %esp
				jmp	.L12
		.L25:
				nop
		.L12:
		.LBB49:
   12     c = c - 'a' + 'A' %if 'a' <= c <= 'z'
				movl	-1060(%ebp), %eax
				movl	%eax, -1056(%ebp)
				cmpl	$96, -1056(%ebp)
				jle	.L26
				cmpl	$122, -1056(%ebp)
				jg	.L27
		.LBE49:
				subl	$32, -1060(%ebp)
				jmp	.L18
		.L26:
		.LBB50:
				nop
				jmp	.L18
		.L27:
				nop
		.L18:
		.LBE50:
   13     %result = c %if c = 'Y' %or c = 'N'
				cmpl	$89, -1060(%ebp)
				je	.L28
				cmpl	$78, -1060(%ebp)
				jne	.L29
				jmp	.L21
		.L28:
				nop
		.L21:
				movl	-1060(%ebp), %eax
				jmp	.L8
		.L29:
				nop
		.L22:
   14   %repeat
				jmp	.L7
		.L8:
   15 %end
				movl	-28(%ebp), %ebx
				xorl	%gs:20, %ebx
				je	.L23
				call	__stack_chk_fail_local
		.L23:
				leal	-12(%ebp), %esp
				popl	%ebx
				popl	%esi
				popl	%edi
				popl	%ebp
				ret
		.LFE189:
				.section	.rodata
				.align 32
		.LC1:
				.byte	12
				.string	"What indeed?"
				.zero	242
				.align 32
		.LC2:
				.byte	8
				.string	"Starting"
				.zero	246
				.align 32
		.LC3:
				.byte	4
				.string	"Yes!"
				.zero	250
				.align 32
		.LC4:
				.byte	3
				.string	"No?"
				.zero	251
				.align 32
		.LC5:
				.byte	39
				.string	"\nExiting on trapped END OF FILE event!."
				.zero	215
				.globl	main
		main:
		.LFB190:
   16
   17 ! A complete program.  Should run.
   18 %begin
				leal	4(%esp), %ecx
				andl	$-16, %esp
				pushl	-4(%ecx)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				pushl	%ecx
				subl	$3128, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ebx, %esi
				movl	%esi, -3136(%ebp)
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -3132(%ebp)
				movl	%gs:20, %ebx
				movl	%ebx, -28(%ebp)
				xorl	%ebx, %ebx
				subl	$8, %esp
				pushl	-3132(%ebp)
				pushl	(%eax)
				movl	%esi, %ebx
				call	_imp_initialise@PLT
				addl	$16, %esp
   19   %integer Answer
   20   %on %event 7 %start
				subl	$8, %esp
				pushl	$1
				movl	%esi, %ebx
				movl	_imp_event@GOT(%ebx), %eax
				leal	532(%eax), %eax
				pushl	%eax
				movl	%esi, %ebx
				call	__sigsetjmp@PLT
				addl	$16, %esp
				testl	%eax, %eax
				jne	.L32
		.LBB51:
				movl	$7, -1820(%ebp)
				movl	$0, -3124(%ebp)
		.LBB52:
				movl	$0, -3120(%ebp)
				jmp	.L33
		.L34:
				movl	-3120(%ebp), %eax
				movl	-1820(%ebp,%eax,4), %eax
				movl	$1, %edx
				movl	%eax, %ecx
				sall	%cl, %edx
				movl	%edx, %eax
				orl	%eax, -3124(%ebp)
				addl	$1, -3120(%ebp)
		.L33:
				cmpl	$0, -3120(%ebp)
				je	.L34
		.LBE52:
				movl	-3124(%ebp), %eax
		.LBE51:
				subl	$8, %esp
				pushl	%eax
				movl	-3136(%ebp), %ebx
				movl	_imp_event@GOT(%ebx), %eax
				pushl	%eax
				call	_imp_on_event_enter@PLT
				addl	$16, %esp
				testl	%eax, %eax
				jne	.L48
		.L32:
		.LBB53:
				nop
		.L35:
		.LBB58:
   21     print string("What indeed?"); newline
				leal	-1820(%ebp), %eax
				movl	-3136(%ebp), %ebx
				leal	.LC1@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-3100(%ebp), %eax
				leal	-1820(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %eax
				leal	-3100(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE53:
		.LBB54:
		.LBB55:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1308(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %edi
				movl	%edi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE55:
		.LBE54:
		.LBB56:
		.LBB57:
				movl	%edi, %ebx
				call	_imp_newline@PLT
				jmp	.L35
		.L48:
		.LBE57:
		.LBE56:
   22     ! drop through and restart...
   23   %finish
   24
   25   prompt("Y or N: ");
				leal	-1820(%ebp), %edx
				movl	$0, %eax
				movl	$64, %ecx
				movl	%edx, %edi
				rep stosl
				movb	$8, -1820(%ebp)
				movl	$1919885401, -1819(%ebp)
				movl	$540692000, -1815(%ebp)
				movl	$0, -1811(%ebp)
				movw	$0, -1807(%ebp)
				movb	$0, -1805(%ebp)
				leal	-2844(%ebp), %eax
				leal	-1820(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE58:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2844(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_PROMPT
				addl	$256, %esp
		.LBB59:
   26   print string("Starting"); newline
				leal	-1820(%ebp), %eax
				movl	-3136(%ebp), %ebx
				leal	.LC2@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2588(%ebp), %eax
				leal	-1820(%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
		.LBE59:
		.LBB60:
		.LBB61:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1052(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %esi
				movl	%esi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE61:
		.LBE60:
		.LBB62:
		.LBB63:
				movl	%esi, %ebx
				call	_imp_newline@PLT
		.L36:
		.LBE63:
		.LBE62:
   27   %cycle
   28     Answer = get YNX
				call	GETYNX
				movl	%eax, -3116(%ebp)
   29     %if Answer = 'Y' %start
				cmpl	$89, -3116(%ebp)
				jne	.L49
		.LBB64:
				nop
		.L38:
				cmpl	$78, -3116(%ebp)
				jne	.L50
		.LBB69:
   30       print string("Yes!"); newline
				leal	-1820(%ebp), %eax
				movl	-3136(%ebp), %ebx
				leal	.LC3@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2332(%ebp), %eax
				leal	-1820(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-796(%ebp), %eax
				leal	-2332(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE64:
		.LBB65:
		.LBB66:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-796(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %edi
				movl	%edi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE66:
		.LBE65:
		.LBB67:
		.LBB68:
				movl	%edi, %ebx
				call	_imp_newline@PLT
		.LBE68:
		.LBE67:
   31     %finish %else %if Answer = 'N' %start
				jmp	.L39
		.L49:
				nop
		.L41:
				cmpl	$88, -3116(%ebp)
				jne	.L51
		.LBB74:
   32       print string("No?"); newline
				leal	-1820(%ebp), %eax
				movl	-3136(%ebp), %ebx
				leal	.LC4@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2076(%ebp), %eax
				leal	-1820(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-540(%ebp), %eax
				leal	-2076(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE69:
		.LBB70:
		.LBB71:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-540(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %esi
				movl	%esi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE71:
		.LBE70:
		.LBB72:
		.LBB73:
				movl	%esi, %ebx
				call	_imp_newline@PLT
		.LBE73:
		.LBE72:
   33     %finish %else %if Answer = 'X' %start
				jmp	.L39
		.L50:
				nop
		.L43:
				movl	$0, -3104(%ebp)
		.LBB81:
		.LBB82:
				subl	$12, %esp
				pushl	-3104(%ebp)
				movl	-3136(%ebp), %ebx
				call	exit@PLT
		.L39:
		.LBE82:
		.LBE81:
   34       print string("
				leal	-1820(%ebp), %eax
				movl	-3136(%ebp), %ebx
				leal	.LC5@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1564(%ebp), %eax
				leal	-1820(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-284(%ebp), %eax
				leal	-1564(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE74:
		.LBB75:
		.LBB76:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-284(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				movl	%ebx, %edi
				movl	%edi, %ebx
				call	_imp_printstring@PLT
				addl	$256, %esp
				movl	$2, -3112(%ebp)
		.LBE76:
		.LBE75:
		.LBB77:
		.LBB78:
				subl	$12, %esp
				pushl	-3112(%ebp)
				movl	%edi, %ebx
				call	_imp_newlines@PLT
				addl	$16, %esp
				movl	$0, -3108(%ebp)
		.LBE78:
		.LBE77:
		.LBB79:
		.LBB80:
				subl	$12, %esp
				pushl	-3108(%ebp)
				movl	%edi, %ebx
				call	exit@PLT
		.L51:
		.LBE80:
		.LBE79:
   35 Exiting on trapped END OF FILE event!."); newlines(2)
   36       %stop
   37     %finish %else %start
   38       %monitor %and %stop
   39     %finish
   40   %repeat
				jmp	.L36
		.LFE190:
				.section	.rodata
				.align 4
		__PRETTY_FUNCTION__.5536:
				.string	"_imp_PROMPT"
				.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:
		.LFB191:
				movl	(%esp), %ebx
				ret
		.LFE191:
		.Letext0:
   41 %endofprogram
   39 Statements compiled
