         Edinburgh IMP77 Compiler - Version 8.4
    1
				.option nopic
		.Ltext0:
				.align	1
				.globl	GETYNX
		GETYNX:
		.LFB185:
    2
    3 %externalintegerfn get YNX
				add	sp,sp,-1616
				sd	ra,1608(sp)
				sd	s0,1600(sp)
				sd	s1,1592(sp)
				sd	s2,1584(sp)
				sd	s3,1576(sp)
				sd	s4,1568(sp)
				sd	s5,1560(sp)
				lui	a5,%hi(__stack_chk_guard)
				ld	a5,%lo(__stack_chk_guard)(a5)
				sd	a5,1544(sp)
    4   %on %event 9 %start
				li	a1,1
				lui	a0,%hi(_imp_event+536)
				addi	a0,a0,%lo(_imp_event+536)
				call	__sigsetjmp
		.LVL0:
				bnez	a0,.L4
		.LVL1:
				li	a1,512
				lui	a0,%hi(_imp_event)
				addi	a0,a0,%lo(_imp_event)
				call	_imp_on_event_enter
		.LVL2:
				beqz	a0,.L15
    5     %result = 'X'
				li	s0,88
				li	s0,88
		.LVL19:
		.L4:
    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 = '?'
				li	a5,63
				beq	s0,a5,.L20
		.L8:
		.LVL17:
		.LBB50:
   12     c = c - 'a' + 'A' %if 'a' <= c <= 'z'
				lui	s4,%hi(_imp_current_file)
				lui	s3,%hi(_imp_current_line)
				lui	s2,%hi(.LC6)
		.LBB44:
				lui	s5,%hi(.LANCHOR0)
				j	.L5
		.LVL3:
		.L20:
		.LBE44:
				ld	a1,%lo(_imp_current_file)(s4)
				beqz	a1,.L9
				add	a0,sp,1032
				call	_imp_c2istr
		.LVL4:
		.L10:
				lw	s1,%lo(_imp_current_line)(s3)
				bnez	s1,.L11
				li	s1,12
		.L11:
				addi	a1,s2,%lo(.LC6)
				add	a0,sp,1288
				call	_imp_c2istr
		.LVL5:
				li	a2,256
				add	a1,sp,1032
				add	a0,sp,256
				call	memcpy
		.LVL6:
				li	a2,256
				add	a1,sp,1288
				mv	a0,sp
				call	memcpy
		.LVL7:
				li	a5,0
				li	a4,1
				li	a3,7
				mv	a2,sp
				mv	a1,s1
				add	a0,sp,256
				call	_signal_event
		.LVL8:
				j	.L8
		.L9:
		.LBB45:
				li	a2,256
				addi	a1,s5,%lo(.LANCHOR0)
				add	a0,sp,520
				call	memcpy
		.LVL9:
				li	a2,256
				add	a1,sp,520
				add	a0,sp,776
				call	memcpy
		.LVL10:
		.LBE45:
				li	a2,256
				add	a1,sp,776
				add	a0,sp,1032
				call	memcpy
		.LVL11:
				j	.L10
		.LVL12:
		.L12:
   13     %result = c %if c = 'Y' %or c = 'N'
				li	a5,89
				beq	s0,a5,.L4
   14   %repeat
				li	a5,78
				beq	s0,a5,.L4
		.LVL13:
		.L5:
		.L6:
		.L7:
		.LBB46:
		.LBB47:
				call	_imp_nextsymbol
		.LVL14:
				mv	s0,a0
		.LVL15:
		.LBE47:
		.LBE46:
		.LBB48:
		.LBB49:
				call	_imp_skipsymbol
		.LVL16:
		.LBE49:
		.LBE48:
   15 %end
				addw	a5,s0,-97
				li	a4,25
				bgtu	a5,a4,.L12
		.LBE50:
				mv	a0,s0
				ld	a4,1544(sp)
				lui	a5,%hi(__stack_chk_guard)
				ld	a5,%lo(__stack_chk_guard)(a5)
				bne	a4,a5,.L21
				ld	ra,1608(sp)
				ld	s0,1600(sp)
				ld	s1,1592(sp)
				ld	s2,1584(sp)
				ld	s3,1576(sp)
				ld	s4,1568(sp)
				ld	s5,1560(sp)
				add	sp,sp,1616
				jr	ra
		.L21:
				call	__stack_chk_fail
		.LVL20:
		.LFE185:
				.align	1
				.globl	main
		main:
		.LFB186:
   16
   17 ! A complete program.  Should run.
   18 %begin
		.LVL21:
				add	sp,sp,-2032
				sd	ra,2024(sp)
				sd	s0,2016(sp)
				sd	s1,2008(sp)
				sd	s2,2000(sp)
				sd	s3,1992(sp)
				sd	s4,1984(sp)
				sd	s5,1976(sp)
				add	sp,sp,-1632
				lui	a5,%hi(__stack_chk_guard)
				ld	a5,%lo(__stack_chk_guard)(a5)
				li	a4,4096
				add	a4,a4,-504
				add	a4,a4,sp
				sd	a5,0(a4)
				call	_imp_initialise
		.LVL22:
   19   %integer Answer
				addw	s0,s0,-32
		.LVL18:
				j	.L12
		.L15:
   20   %on %event 7 %start
				li	a1,1
				lui	a0,%hi(_imp_event+536)
				addi	a0,a0,%lo(_imp_event+536)
				call	__sigsetjmp
		.LVL23:
				bnez	a0,.L24
		.LVL24:
				li	a1,128
				lui	a0,%hi(_imp_event)
				addi	a0,a0,%lo(_imp_event)
				call	_imp_on_event_enter
		.LVL25:
				beqz	a0,.L24
		.LVL26:
		.L25:
		.LBB51:
   21     print string("What indeed?"); newline
				li	s0,-4096
				add	s2,sp,1544
				li	a2,256
				lui	a1,%hi(.LANCHOR0+256)
				addi	a1,a1,%lo(.LANCHOR0+256)
				mv	a0,s2
				call	memcpy
		.LVL49:
				add	s1,sp,264
				li	a2,256
				mv	a1,s2
				mv	a0,s1
				call	memcpy
		.LVL50:
				li	a2,256
				mv	a1,s1
				li	s1,4096
				add	a0,s1,-2040
				add	a0,a0,sp
				call	memcpy
		.LVL51:
		.LBE67:
		.LBB68:
		.LBB69:
				li	a2,256
				add	a1,s1,-2040
				add	a1,a1,sp
				mv	a0,sp
				call	memcpy
		.LVL52:
				add	a0,s0,496
				add	a5,s1,-496
				add	a5,a5,sp
				add	a0,a5,a0
				call	_imp_printstring
		.LVL53:
		.LBE69:
		.LBE68:
		.LBB70:
		.LBB71:
				call	_imp_newline
		.LVL54:
				j	.L25
		.LVL55:
		.L33:
		.LBE71:
		.LBE70:
		.LBB72:
   22     ! drop through and restart...
   23   %finish
   24
   25   prompt("Y or N: ");
				li	s1,-4096
				li	a2,240
				li	a1,0
				add	a0,sp,1560
				call	memset
		.LVL27:
				lui	s0,%hi(.LANCHOR0)
				addi	s0,s0,%lo(.LANCHOR0)
				li	a2,9
				add	a1,s0,512
				add	a0,sp,1545
				call	memcpy
		.LVL28:
				li	a2,6
				li	a1,0
				add	a0,sp,1554
				call	memset
		.LVL29:
				li	s3,8
				sb	s3,1544(sp)
				add	a5,sp,-496
				add	s4,sp,520
				add	s2,a5,2040
				li	a2,256
				mv	a1,s2
				mv	a0,s4
				call	memcpy
		.LVL30:
				sb	s3,520(sp)
				li	a2,256
				mv	a1,s4
				li	s4,4096
				add	a0,s4,-1784
				add	a0,a0,sp
				call	memcpy
		.LVL31:
		.LBE51:
		.LBB52:
		.LBB53:
				add	a0,s0,528
				call	check_instream
		.LVL32:
				add	a4,s4,-1784
				add	a4,a4,sp
				sb	s3,0(a4)
				li	a2,256
				mv	a1,a4
				lui	a0,%hi(_imp_promptstr)
				addi	a0,a0,%lo(_imp_promptstr)
				call	memcpy
		.LVL33:
		.LBE53:
		.LBE52:
		.LBB54:
   26   print string("Starting"); newline
				li	a2,256
				add	a1,s0,544
				mv	a0,s2
				call	memcpy
		.LVL34:
				add	s0,sp,776
				li	a2,256
				mv	a1,s2
				mv	a0,s0
				call	memcpy
		.LVL35:
				li	a2,256
				mv	a1,s0
				add	a0,s4,-1528
				add	a0,a0,sp
				call	memcpy
		.LVL36:
		.LBE54:
		.LBB55:
		.LBB56:
				li	a2,256
				add	a1,s4,-1528
				add	a1,a1,sp
				mv	a0,sp
				call	memcpy
		.LVL37:
				add	a0,s1,496
				add	a5,s4,-496
				add	a5,a5,sp
				add	a0,a5,a0
				call	_imp_printstring
		.LVL38:
		.LBE56:
		.LBE55:
		.LBB57:
		.LBB58:
				call	_imp_newline
		.LVL39:
		.LBE58:
		.LBE57:
		.LBB59:
   27   %cycle
   28     Answer = get YNX
				call	GETYNX
		.LVL40:
   29     %if Answer = 'Y' %start
				li	a5,89
				beq	a0,a5,.L33
		.L27:
   30       print string("Yes!"); newline
				li	a2,256
				add	a1,s1,800
				mv	a0,s4
		.LVL56:
				call	memcpy
		.LVL57:
				add	s2,s3,1528
				li	a2,256
				mv	a1,s4
				mv	a0,s2
				call	memcpy
		.LVL58:
				li	a2,256
				mv	a1,s2
				li	s2,4096
				add	a0,s2,-1272
				add	a0,a0,sp
				call	memcpy
		.LVL59:
		.LBE72:
		.LBB73:
		.LBB74:
				li	a2,256
				add	a1,s2,-1272
				add	a1,a1,sp
				add	a0,s3,496
				call	memcpy
		.LVL60:
				mv	a0,s0
				call	_imp_printstring
		.LVL61:
		.LBE74:
		.LBE73:
		.LBB75:
		.LBB76:
				call	_imp_newline
		.LVL62:
				j	.L26
		.LVL63:
		.L29:
		.LBE76:
		.LBE75:
   31     %finish %else %if Answer = 'N' %start
   32       print string("No?"); newline
				li	a5,-4096
				add	a3,s4,-496
				add	a3,a3,sp
				add	s3,a3,a5
				lui	s1,%hi(.LANCHOR0)
				addi	s1,s1,%lo(.LANCHOR0)
				add	s4,s3,2040
				add	s5,s1,1056
		.LBE59:
		.LBB60:
		.LBB61:
				add	a5,a5,496
				add	s0,a3,a5
		.L26:
		.LBE61:
		.LBE60:
				li	a2,256
				mv	a1,s5
				mv	a0,s4
		.LVL41:
				call	memcpy
		.LVL42:
				add	s2,s3,1784
				li	a2,256
				mv	a1,s4
				mv	a0,s2
				call	memcpy
		.LVL43:
				li	a2,256
				mv	a1,s2
				li	s2,4096
				add	a0,s2,-1016
				add	a0,a0,sp
				call	memcpy
		.LVL44:
		.LBE63:
		.LBB64:
		.LBB62:
				li	a2,256
				add	a1,s2,-1016
				add	a1,a1,sp
				add	a0,s3,496
				call	memcpy
		.LVL45:
				mv	a0,s0
				call	_imp_printstring
		.LVL46:
		.LBE62:
		.LBE64:
		.LBB65:
		.LBB66:
				call	_imp_newline
		.LVL47:
				j	.L26
		.LVL48:
		.L24:
		.LBE66:
		.LBE65:
		.LBB67:
   33     %finish %else %if Answer = 'X' %start
				li	a5,78
				bne	a0,a5,.L29
		.LBB63:
   34       print string("
				li	s0,-4096
				add	s1,sp,1544
				li	a2,256
				lui	a1,%hi(.LANCHOR0+1312)
				addi	a1,a1,%lo(.LANCHOR0+1312)
				mv	a0,s1
		.LVL67:
				call	memcpy
		.LVL68:
				li	a2,256
				mv	a1,s1
				add	a0,sp,1800
				call	memcpy
		.LVL69:
				li	a2,256
				add	a1,sp,1800
				li	s1,4096
				add	a0,s1,-760
				add	a0,a0,sp
				call	memcpy
		.LVL70:
		.LBE79:
		.LBB80:
		.LBB81:
				li	a2,256
				add	a1,s1,-760
				add	a1,a1,sp
				mv	a0,sp
				call	memcpy
		.LVL71:
				add	a0,s0,496
				add	a5,s1,-496
				add	a5,a5,sp
				add	a0,a5,a0
				call	_imp_printstring
		.LVL72:
		.LBE81:
		.LBE80:
		.LBB82:
		.LBB83:
				li	a0,2
				call	_imp_newlines
		.LVL73:
		.LBE83:
		.LBE82:
		.LBB84:
		.LBB85:
				li	a0,0
				call	exit
		.LVL74:
		.LBE85:
		.LBE84:
		.LFE186:
				.section	.rodata
				.align	3
				.set	.LANCHOR0,. + 0
		.LC0:
				.byte	21
				.string	"test-new/test113b.imp"
				.zero	233
		.LC1:
				.byte	12
				.string	"What indeed?"
				.zero	242
		.LC7:
				.string	"Y or N: "
				.zero	6
				.zero	1
		__PRETTY_FUNCTION__.5516:
				.string	"_imp_PROMPT"
				.zero	4
		.LC2:
				.byte	8
				.string	"Starting"
				.zero	246
		.LC3:
				.byte	4
				.string	"Yes!"
				.zero	250
		.LC4:
				.byte	3
				.string	"No?"
				.zero	251
		.LC5:
				.byte	39
				.string	"\nExiting on trapped END OF FILE event!."
				.zero	215
				.section	.rodata.str1.8,"aMS",@progbits,1
				.align	3
		.LC6:
				.string	""
		.Letext0:
   35 Exiting on trapped END OF FILE event!."); newlines(2)
				li	a5,88
				beq	a0,a5,.L34
		.L30:
		.LVL64:
		.LBB77:
		.LBB78:
				li	a0,0
		.LVL65:
				call	exit
		.LVL66:
		.L34:
		.LBE78:
		.LBE77:
		.LBB79:
   36       %stop
   37     %finish %else %start
   38       %monitor %and %stop
   39     %finish
   40   %repeat
   41 %endofprogram
   39 Statements compiled
