         Edinburgh IMP77 Compiler - Version 8.4
    1
				.section	".text"
		.Ltext0:
				.section	.rodata.str1.8,"aMS",@progbits,1
				.align 8
		.LC6:
				.asciz	""
				.section	".rodata"
		.LC0:
				.byte	21
				.asciz	"test-new/test113b.imp"
				.skip	233
				.section	".text"
				.align 4
				.global GETYNX
				.proc	04
		GETYNX:
		.LFB185:
    2
    3 %externalintegerfn get YNX
				.register	%g2, #scratch
				.register	%g7, #ignore
				save	%sp, -1728, %sp
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
    4   %on %event 9 %start
				mov	1, %o1
				sethi	%hi(_imp_event+544), %o0
				call	__sigsetjmp, 0
				 or	%o0, %lo(_imp_event+544), %o0
		.LVL0:
				cmp	%o0, 0
				bne,pn	%icc, .L4
				 mov	88, %i0
		.LVL1:
				mov	512, %o1
				sethi	%hi(_imp_event), %o0
				call	_imp_on_event_enter, 0
				 or	%o0, %lo(_imp_event), %o0
		.LVL2:
				brz,pn	%o0, .L4
				 mov	88, %i0
    5     %result = 'X'
    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
   11     %signal 7,1,0 %if c = '?'
				cmp	%i5, 63
				bne,pt	%icc, .L23
				 add	%i5, -97, %g1
   12     c = c - 'a' + 'A' %if 'a' <= c <= 'z'
				sethi	%hi(.LC6), %i3
				or	%i3, %lo(.LC6), %i3
		.LBB44:
				sethi	%hi(.LC0), %i2
		.LBE44:
				ba,pt	%xcc, .L5
				 or	%i2, %lo(.LC0), %i2
		.LVL3:
		.L19:
				call	_imp_c2istr, 0
				 add	%fp, 1527, %o0
		.LVL4:
				sethi	%hi(_imp_current_line), %g1
		.L21:
				lduw	[%g1+%lo(_imp_current_line)], %i4
				cmp	%i4, 0
				move	%icc, 12, %i4
				mov	%i3, %o1
				call	_imp_c2istr, 0
				 add	%fp, 1783, %o0
		.LVL5:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 751, %o0
		.LVL6:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 495, %o0
		.LVL7:
				mov	0, %o5
				mov	1, %o4
				mov	7, %o3
				add	%fp, 495, %o2
				sra	%i4, 0, %o1
				call	_signal_event, 0
				 add	%fp, 751, %o0
		.LVL8:
		.L8:
		.LBB45:
				sethi	%hi(_imp_current_file), %g1
				ldx	[%g1+%lo(_imp_current_file)], %o1
				brnz,pt	%o1, .L19
				 mov	256, %o2
		.LBB50:
				mov	%i2, %o1
				call	memcpy, 0
				 add	%fp, 1015, %o0
		.LVL15:
				mov	256, %o2
				add	%fp, 1015, %o1
				call	memcpy, 0
				 add	%fp, 1271, %o0
		.LVL16:
		.LBE50:
				mov	256, %o2
				add	%fp, 1271, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL17:
				ba,pt	%xcc, .L21
				 sethi	%hi(_imp_current_line), %g1
		.LVL18:
		.L4:
   13     %result = c %if c = 'Y' %or c = 'N'
				xor	%i0, 89, %g1
				cmp	%g0, %g1
				addx	%g0, 0, %g1
   14   %repeat
				xor	%i0, 78, %g1
				cmp	%g0, %g1
				addx	%g0, 0, %g2
				andcc	%g2, %g1, %g0
				be,a,pn	%icc, .L22
				 sra	%i0, 0, %i0
		.LVL11:
		.L5:
		.L6:
		.L7:
		.LBB46:
		.LBB47:
				call	_imp_nextsymbol, 0
				 nop
		.LVL12:
				mov	%o0, %i5
		.LVL13:
		.LBE47:
		.LBE46:
		.LBB48:
		.LBB49:
				call	_imp_skipsymbol, 0
				 mov	%o0, %i0
		.LVL14:
		.LBE49:
		.LBE48:
   15 %end
				sra	%i0, 0, %i0
		.L22:
				ldx	[%fp+2039], %g1
				ldx	[%g7+40], %g2
				xor	%g1, %g2, %g1
				mov	0, %g2
				brnz,pn	%g1, .L20
				 nop
				return	%i7+8
				 nop
		.L20:
				call	__stack_chk_fail, 0
				 nop
		.LVL19:
				nop
		.LFE185:
				.section	".rodata"
				.align 8
		.LC7:
				.asciz	"Y or N: "
				.skip	6
		.LC2:
				.byte	8
				.asciz	"Starting"
				.skip	246
		.LC4:
				.byte	3
				.asciz	"No?"
				.skip	251
		.LC3:
				.byte	4
				.asciz	"Yes!"
				.skip	250
		.LC1:
				.byte	12
				.asciz	"What indeed?"
				.skip	242
		.LC5:
				.byte	39
				.asciz	"\nExiting on trapped END OF FILE event!."
				.skip	215
				.section	".text"
				.align 4
				.global main
				.proc	04
		main:
		.LFB186:
   16
   17 ! A complete program.  Should run.
				add	%i5, -97, %g1
		.L23:
		.LBE45:
   18 %begin
		.LVL20:
				save	%sp, -3776, %sp
		.LVL21:
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
				mov	%i1, %o1
				call	_imp_initialise, 0
				 mov	%i0, %o0
		.LVL22:
   19   %integer Answer
				add	%i5, -32, %i5
		.LVL9:
				cmp	%g1, 26
				movlu	%icc, %i5, %i0
		.L12:
		.LVL10:
   20   %on %event 7 %start
				mov	1, %o1
				sethi	%hi(_imp_event+544), %o0
				call	__sigsetjmp, 0
				 or	%o0, %lo(_imp_event+544), %o0
		.LVL23:
				cmp	%o0, 0
				bne,pn	%icc, .L26
				 mov	128, %o1
		.LVL24:
				sethi	%hi(_imp_event), %o0
				call	_imp_on_event_enter, 0
				 or	%o0, %lo(_imp_event), %o0
		.LVL25:
				brz,pn	%o0, .L37
				 mov	256, %o2
		.LVL26:
		.L27:
		.LBB51:
   21     print string("What indeed?"); newline
				mov	256, %o2
		.L37:
				sethi	%hi(.LC1), %o1
				or	%o1, %lo(.LC1), %o1
				call	memcpy, 0
				 add	%fp, -9, %o0
		.LVL49:
				mov	256, %o2
				add	%fp, -9, %o1
				call	memcpy, 0
				 add	%fp, -1289, %o0
		.LVL50:
				mov	256, %o2
				add	%fp, -1289, %o1
				call	memcpy, 0
				 add	%fp, 503, %o0
		.LVL51:
		.LBE66:
		.LBB67:
		.LBB68:
				mov	256, %o2
				add	%fp, 503, %o1
				call	memcpy, 0
				 add	%fp, -1553, %o0
		.LVL52:
				call	_imp_printstring, 0
				 add	%fp, -1553, %o0
		.LVL53:
		.LBE68:
		.LBE67:
		.LBB69:
		.LBB70:
				call	_imp_newline, 0
				 nop
		.LVL54:
		.LBE70:
		.LBE69:
   22     ! drop through and restart...
   23   %finish
   24
   25   prompt("Y or N: ");
				mov	240, %o2
		.L36:
				mov	0, %o1
				call	memset, 0
				 add	%fp, 7, %o0
		.LVL27:
				mov	9, %o2
				sethi	%hi(.LC7), %o1
				or	%o1, %lo(.LC7), %o1
				call	memcpy, 0
				 add	%fp, -8, %o0
		.LVL28:
				mov	6, %o2
				mov	0, %o1
				call	memset, 0
				 add	%fp, 1, %o0
		.LVL29:
				mov	8, %i5
				stb	%i5, [%fp-9]
				mov	256, %o2
				add	%fp, -9, %o1
				call	memcpy, 0
				 add	%fp, -1033, %o0
		.LVL30:
				stb	%i5, [%fp-1033]
				mov	256, %o2
				add	%fp, -1033, %o1
				call	memcpy, 0
				 add	%fp, 759, %o0
		.LVL31:
		.LBE51:
		.LBB52:
		.LBB53:
				sethi	%hi(__PRETTY_FUNCTION__.5571), %o0
				call	check_instream, 0
				 or	%o0, %lo(__PRETTY_FUNCTION__.5571), %o0
		.LVL32:
				stb	%i5, [%fp+759]
				mov	256, %o2
				add	%fp, 759, %o1
				sethi	%hi(_imp_promptstr), %o0
				call	memcpy, 0
				 or	%o0, %lo(_imp_promptstr), %o0
		.LVL33:
		.LBE53:
		.LBE52:
		.LBB54:
				ba,pt	%xcc, .L36
				 mov	240, %o2
		.LVL55:
		.L34:
		.LBB71:
   26   print string("Starting"); newline
				mov	256, %o2
				sethi	%hi(.LC2), %o1
				or	%o1, %lo(.LC2), %o1
				call	memcpy, 0
				 add	%fp, -9, %o0
		.LVL34:
				mov	256, %o2
				add	%fp, -9, %o1
				call	memcpy, 0
				 add	%fp, -777, %o0
		.LVL35:
				mov	256, %o2
				add	%fp, -777, %o1
				call	memcpy, 0
				 add	%fp, 1015, %o0
		.LVL36:
		.LBE54:
		.LBB55:
		.LBB56:
				mov	256, %o2
				add	%fp, 1015, %o1
				call	memcpy, 0
				 add	%fp, -1553, %o0
		.LVL37:
				call	_imp_printstring, 0
				 add	%fp, -1553, %o0
		.LVL38:
		.LBE56:
		.LBE55:
		.LBB57:
		.LBB58:
				call	_imp_newline, 0
				 nop
		.LVL39:
		.LBE58:
		.LBE57:
		.LBB59:
   27   %cycle
   28     Answer = get YNX
				call	GETYNX, 0
				 nop
		.LVL40:
   29     %if Answer = 'Y' %start
				cmp	%o0, 89
				be,pn	%icc, .L34
				 cmp	%o0, 78
		.L29:
   30       print string("Yes!"); newline
				sethi	%hi(.LC3), %g1
				or	%g1, %lo(.LC3), %i4
		.L28:
		.LBE60:
				mov	256, %o2
				mov	%i4, %o1
		.LVL56:
				call	memcpy, 0
				 add	%fp, -9, %o0
		.LVL57:
				mov	256, %o2
				add	%fp, -9, %o1
				call	memcpy, 0
				 add	%fp, -521, %o0
		.LVL58:
				mov	256, %o2
				add	%fp, -521, %o1
				call	memcpy, 0
				 add	%fp, 1271, %o0
		.LVL59:
		.LBE71:
		.LBB72:
		.LBB73:
				mov	256, %o2
				add	%fp, 1271, %o1
				call	memcpy, 0
				 add	%fp, -1553, %o0
		.LVL60:
				call	_imp_printstring, 0
				 add	%fp, -1553, %o0
		.LVL61:
		.LBE73:
		.LBE72:
		.LBB74:
		.LBB75:
				call	_imp_newline, 0
				 nop
		.LVL62:
				ba,pt	%xcc, .L28
				 nop
		.LVL63:
		.L31:
		.LBE75:
		.LBE74:
   31     %finish %else %if Answer = 'N' %start
   32       print string("No?"); newline
				sethi	%hi(.LC4), %g1
				or	%g1, %lo(.LC4), %i5
		.LBE59:
		.LBB60:
				mov	%i5, %o1
		.LVL41:
				call	memcpy, 0
				 add	%fp, -9, %o0
		.LVL42:
				mov	256, %o2
				add	%fp, -9, %o1
				call	memcpy, 0
				 add	%fp, -265, %o0
		.LVL43:
				mov	256, %o2
				add	%fp, -265, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL44:
		.LBE61:
		.LBB62:
		.LBB63:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, -1553, %o0
		.LVL45:
				call	_imp_printstring, 0
				 add	%fp, -1553, %o0
		.LVL46:
		.LBE63:
		.LBE62:
		.LBB64:
		.LBB65:
				call	_imp_newline, 0
				 nop
		.LVL47:
				ba,pt	%xcc, .L28
				 nop
		.LVL48:
		.L26:
		.LBE65:
		.LBE64:
		.LBB66:
   33     %finish %else %if Answer = 'X' %start
				bne,pn	%icc, .L31
				 mov	256, %o2
		.LBB61:
   34       print string("
				or	%o1, %lo(.LC5), %o1
		.LVL66:
				call	memcpy, 0
				 add	%fp, -9, %o0
		.LVL67:
				mov	256, %o2
				add	%fp, -9, %o1
				call	memcpy, 0
				 add	%fp, 247, %o0
		.LVL68:
				mov	256, %o2
				add	%fp, 247, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL69:
		.LBE78:
		.LBB79:
		.LBB80:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, -1553, %o0
		.LVL70:
				call	_imp_printstring, 0
				 add	%fp, -1553, %o0
		.LVL71:
		.LBE80:
		.LBE79:
		.LBB81:
		.LBB82:
				call	_imp_newlines, 0
				 mov	2, %o0
		.LVL72:
		.LBE82:
		.LBE81:
		.LBB83:
		.LBB84:
				call	exit, 0
				 mov	0, %o0
		.LVL73:
		.LBE84:
		.LBE83:
				nop
		.LFE186:
				.section	".rodata"
				.align 8
		__PRETTY_FUNCTION__.5571:
				.asciz	"_imp_PROMPT"
				.section	".text"
		.Letext0:
   35 Exiting on trapped END OF FILE event!."); newlines(2)
				cmp	%o0, 88
				be,pn	%icc, .L35
				 sethi	%hi(.LC5), %o1
		.L32:
		.LVL64:
		.LBB76:
		.LBB77:
				call	exit, 0
				 mov	0, %o0
		.LVL65:
		.L35:
		.LBE77:
		.LBE76:
		.LBB78:
   36       %stop
   37     %finish %else %start
   38       %monitor %and %stop
   39     %finish
   40   %repeat
   41 %endofprogram
   39 Statements compiled
