         Edinburgh IMP77 Compiler - Version 8.4
    1
		.Ltext0:
				.section	.rodata.str1.1,"aMS",@progbits,1
		.LC0:
				.string	""
				.globl	GETYNX
		GETYNX:
		.LFB185:
    2
    3 %externalintegerfn get YNX
				pushq	%r15
				pushq	%r14
				pushq	%r13
				pushq	%r12
				pushq	%rbp
				pushq	%rbx
				subq	$1064, %rsp
				movq	%fs:40, %rax
				movq	%rax, 1048(%rsp)
				xorl	%eax, %eax
    4   %on %event 9 %start
				movl	$1, %esi
				leaq	536+_imp_event(%rip), %rdi
				call	__sigsetjmp@PLT
		.LVL0:
				testl	%eax, %eax
				jne	.L1
		.LVL1:
				movl	$512, %esi
				leaq	_imp_event(%rip), %rdi
				call	_imp_on_event_enter@PLT
		.LVL2:
				testq	%rax, %rax
				je	.L16
    5     %result = 'X'
				movl	$88, %ebp
				movl	$88, %ebp
		.L4:
		.LVL15:
		.L1:
    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 = '?'
				cmpl	$63, %ebp
				jne	.L8
   12     c = c - 'a' + 'A' %if 'a' <= c <= 'z'
				leaq	528(%rsp), %r15
		.LBB44:
				movabsq	$8603403804667503988, %r13
				movabsq	$3688783946015142959, %r14
		.LBE44:
				leaq	784(%rsp), %rax
				movq	%rax, 8(%rsp)
				jmp	.L5
		.LVL3:
		.L10:
		.LBB45:
				movq	%r13, 17(%rsp)
				movq	%r14, 25(%rsp)
				movabsq	$482871946850, %rax
				movl	$0, %edx
				movq	%rax, 33(%rsp)
				movq	%rdx, 41(%rsp)
				movb	$0, 49(%rsp)
				movw	$0, 50(%rsp)
				movl	$0, 52(%rsp)
				leaq	56(%rsp), %rdi
				movl	$27, %ecx
				movl	$0, %eax
				rep stosq
				movb	$21, 16(%rsp)
				movq	16(%rsp), %rax
				movq	24(%rsp), %rdx
				movq	%rax, 272(%rsp)
				movq	%rdx, 280(%rsp)
				movdqa	32(%rsp), %xmm7
				movaps	%xmm7, 288(%rsp)
				movdqa	48(%rsp), %xmm5
				movaps	%xmm5, 304(%rsp)
				movdqa	64(%rsp), %xmm3
				movaps	%xmm3, 320(%rsp)
				movdqa	80(%rsp), %xmm9
				movaps	%xmm9, 336(%rsp)
				movdqa	96(%rsp), %xmm11
				movaps	%xmm11, 352(%rsp)
				movdqa	112(%rsp), %xmm13
				movaps	%xmm13, 368(%rsp)
				movdqa	128(%rsp), %xmm15
				movaps	%xmm15, 384(%rsp)
				movdqa	144(%rsp), %xmm0
				movaps	%xmm0, 400(%rsp)
				movdqa	160(%rsp), %xmm2
				movaps	%xmm2, 416(%rsp)
				movdqa	176(%rsp), %xmm4
				movaps	%xmm4, 432(%rsp)
				movdqa	192(%rsp), %xmm1
				movaps	%xmm1, 448(%rsp)
				movq	208(%rsp), %r11
				movq	216(%rsp), %r12
				movq	%r11, 464(%rsp)
				movq	%r12, 472(%rsp)
				movq	224(%rsp), %r9
				movq	232(%rsp), %r10
				movq	%r9, 480(%rsp)
				movq	%r10, 488(%rsp)
				movq	240(%rsp), %rsi
				movq	248(%rsp), %rdi
				movq	%rsi, 496(%rsp)
				movq	%rdi, 504(%rsp)
				movq	256(%rsp), %rax
				movq	264(%rsp), %rdx
				movq	%rax, 512(%rsp)
				movq	%rdx, 520(%rsp)
		.LVL4:
		.LBE45:
				movb	$21, 272(%rsp)
				movdqa	272(%rsp), %xmm6
				movaps	%xmm6, 784(%rsp)
				movaps	%xmm7, 800(%rsp)
				movaps	%xmm5, 816(%rsp)
				movaps	%xmm3, 832(%rsp)
				movaps	%xmm9, 848(%rsp)
				movaps	%xmm11, 864(%rsp)
				movaps	%xmm13, 880(%rsp)
				movaps	%xmm15, 896(%rsp)
				movaps	%xmm0, 912(%rsp)
				movaps	%xmm2, 928(%rsp)
				movaps	%xmm4, 944(%rsp)
				movaps	%xmm1, 960(%rsp)
				movq	%r11, 976(%rsp)
				movq	%r12, 984(%rsp)
				movq	%r9, 992(%rsp)
				movq	%r10, 1000(%rsp)
				movq	%rsi, 1008(%rsp)
				movq	%rdi, 1016(%rsp)
				movq	%rax, 1024(%rsp)
				movq	%rdx, 1032(%rsp)
		.L11:
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	776(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				pushq	1288(%rsp)
				movl	$0, %ecx
				movl	$1, %edx
				movl	$7, %esi
				movl	%ebx, %edi
				call	_signal_event@PLT
		.LVL5:
				addq	$512, %rsp
		.L8:
		.LVL6:
		.LBB46:
				leaq	.LC0(%rip), %rsi
				movq	%r15, %rdi
				call	_imp_c2istr@PLT
		.LVL12:
				movl	_imp_current_line(%rip), %ebx
				testl	%ebx, %ebx
				movl	$12, %eax
				cmove	%eax, %ebx
				movq	_imp_current_file(%rip), %rsi
				testq	%rsi, %rsi
				je	.L10
				movq	8(%rsp), %rdi
				call	_imp_c2istr@PLT
		.LVL13:
				jmp	.L11
		.LVL14:
		.L16:
   13     %result = c %if c = 'Y' %or c = 'N'
   14   %repeat
				cmpl	$78, %ebp
				je	.L1
				cmpl	$89, %ebp
				je	.L1
		.LVL8:
		.L5:
		.L6:
		.L7:
		.LBB47:
		.LBB48:
				call	_imp_nextsymbol@PLT
		.LVL9:
				movl	%eax, %ebp
		.LVL10:
		.LBE48:
		.LBE47:
		.LBB49:
		.LBB50:
				call	_imp_skipsymbol@PLT
		.LVL11:
		.LBE50:
		.LBE49:
   15 %end
				movl	%ebp, %eax
				movq	1048(%rsp), %rcx
				xorq	%fs:40, %rcx
				jne	.L21
				addq	$1064, %rsp
				popq	%rbx
				popq	%rbp
				popq	%r12
				popq	%r13
				popq	%r14
				popq	%r15
				ret
		.L21:
				call	__stack_chk_fail@PLT
		.LVL16:
		.LFE185:
				.section	.rodata
		.LC1:
				.string	"Y or N: "
				.zero	6
				.align 8
		.LC2:
				.string	"\nExiting on trapped END OF FILE event!."
				.zero	215
				.globl	main
		main:
		.LFB186:
   16
   17 ! A complete program.  Should run.
				leal	-97(%rbp), %edx
		.LBE46:
   18 %begin
		.LVL17:
				pushq	%rbx
				subq	$3344, %rsp
				movq	%fs:40, %rax
				movq	%rax, 3336(%rsp)
				xorl	%eax, %eax
				call	_imp_initialise@PLT
		.LVL18:
   19   %integer Answer
				leal	-32(%rbp), %eax
				cmpl	$26, %edx
				cmovb	%eax, %ebp
		.LVL7:
		.L12:
   20   %on %event 7 %start
				movl	$1, %esi
				leaq	536+_imp_event(%rip), %rdi
				call	__sigsetjmp@PLT
		.LVL19:
				testl	%eax, %eax
				jne	.L24
		.LVL20:
				movl	$128, %esi
				leaq	_imp_event(%rip), %rdi
				call	_imp_on_event_enter@PLT
		.LVL21:
				testq	%rax, %rax
				je	.L24
		.LVL22:
		.L25:
		.LBB51:
   21     print string("What indeed?"); newline
				movabsq	$7236837239343376471, %rax
				movl	$1063544165, %edx
				movq	%rax, 1281(%rsp)
				movq	%rdx, 1289(%rsp)
				leaq	1297(%rsp), %rdi
				movl	$239, %ecx
				movl	$0, %eax
				rep stosb
				movb	$12, 1280(%rsp)
				movq	%rsp, %rdi
				leaq	1280(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL38:
				movb	$12, (%rsp)
				leaq	1792(%rsp), %rdi
				movq	%rsp, %rsi
				movl	$32, %ecx
				rep movsq
		.LBE64:
		.LBB65:
		.LBB66:
				subq	$256, %rsp
				leaq	2048(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL39:
				addq	$256, %rsp
		.LBE66:
		.LBE65:
		.LBB67:
		.LBB68:
				call	_imp_newline@PLT
		.LVL40:
				jmp	.L25
		.LVL41:
		.L33:
		.LBE68:
		.LBE67:
		.LBB69:
   22     ! drop through and restart...
   23   %finish
   24
   25   prompt("Y or N: ");
				leaq	1296(%rsp), %rdi
				movl	$60, %ecx
				movl	$0, %eax
				rep stosl
		.LVL23:
				movq	.LC1(%rip), %rax
				movq	%rax, 1281(%rsp)
				movzbl	8+.LC1(%rip), %eax
				movb	%al, 1289(%rsp)
				leaq	1290(%rsp), %rdi
				movl	$6, %ecx
				movl	$0, %ebx
				movl	%ebx, %eax
				rep stosb
				movb	$8, 1280(%rsp)
				leaq	256(%rsp), %rdi
				leaq	1280(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL24:
				movb	$8, 256(%rsp)
				leaq	2048(%rsp), %rdi
				leaq	256(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL25:
		.LBE51:
		.LBB52:
		.LBB53:
				leaq	__PRETTY_FUNCTION__.5902(%rip), %rdi
				call	check_instream@PLT
		.LVL26:
				movb	$8, 2048(%rsp)
				leaq	_imp_promptstr(%rip), %rax
				leaq	2048(%rsp), %rsi
				movq	2048(%rsp), %rdx
				movq	%rdx, _imp_promptstr(%rip)
				movq	2296(%rsp), %rdx
				movq	%rdx, 248+_imp_promptstr(%rip)
				leaq	8(%rax), %rdi
				andq	$-8, %rdi
				subq	%rdi, %rax
				subq	%rax, %rsi
				leal	256(%rax), %ecx
				movl	%ecx, %eax
				shrl	$3, %eax
				movl	%eax, %ecx
				rep movsq
		.LVL27:
		.LBE53:
		.LBE52:
		.LBB54:
   26   print string("Starting"); newline
				movabsq	$7453010382200861779, %rax
				movl	$0, %edx
				movq	%rax, 1281(%rsp)
				movq	%rdx, 1289(%rsp)
				leaq	1297(%rsp), %rdi
				movl	$239, %ecx
				movl	%ebx, %eax
				rep stosb
				movb	$8, 1280(%rsp)
				leaq	512(%rsp), %rdi
				leaq	1280(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL28:
				movb	$8, 512(%rsp)
				leaq	2304(%rsp), %rdi
				leaq	512(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LBE54:
		.LBB55:
		.LBB56:
				subq	$256, %rsp
				leaq	2560(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL29:
				addq	$256, %rsp
		.LBE56:
		.LBE55:
		.LBB57:
		.LBB58:
				call	_imp_newline@PLT
		.LVL30:
		.L26:
		.LBE58:
		.LBE57:
   27   %cycle
   28     Answer = get YNX
				call	GETYNX
		.LVL31:
   29     %if Answer = 'Y' %start
				cmpl	$89, %eax
				je	.L33
		.L27:
   30       print string("Yes!"); newline
				movq	$561210713, 1281(%rsp)
				movq	$0, 1289(%rsp)
				leaq	1297(%rsp), %rdi
				movl	$239, %ecx
				movl	%ebx, %eax
		.LVL42:
				rep stosb
				movb	$4, 1280(%rsp)
				leaq	768(%rsp), %rdi
				leaq	1280(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL43:
				movb	$4, 768(%rsp)
				leaq	2560(%rsp), %rdi
				leaq	768(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LBE69:
		.LBB70:
		.LBB71:
				subq	$256, %rsp
				leaq	2816(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL44:
				addq	$256, %rsp
		.LBE71:
		.LBE70:
		.LBB72:
		.LBB73:
				call	_imp_newline@PLT
		.LVL45:
				jmp	.L26
		.LVL46:
		.L29:
		.LBE73:
		.LBE72:
   31     %finish %else %if Answer = 'N' %start
   32       print string("No?"); newline
				movq	$4157262, 1281(%rsp)
				movq	$0, 1289(%rsp)
				leaq	1297(%rsp), %rdi
				movl	$239, %ecx
				movl	%ebx, %eax
		.LVL33:
				rep stosb
				movb	$3, 1280(%rsp)
				leaq	1024(%rsp), %rdi
				leaq	1280(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL34:
				movb	$3, 1024(%rsp)
				leaq	2816(%rsp), %rdi
				leaq	1024(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LBE59:
		.LBB60:
		.LBB61:
				subq	$256, %rsp
				leaq	3072(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL35:
				addq	$256, %rsp
		.LBE61:
		.LBE60:
		.LBB62:
		.LBB63:
				call	_imp_newline@PLT
		.LVL36:
				jmp	.L26
		.LVL37:
		.L24:
		.LBE63:
		.LBE62:
		.LBB64:
   33     %finish %else %if Answer = 'X' %start
				cmpl	$78, %eax
				jne	.L29
		.LVL32:
		.LBB59:
   34       print string("
				leaq	1281(%rsp), %rdi
				leaq	.LC2(%rip), %rsi
				movl	$10, %ecx
				rep movsl
				leaq	1321(%rsp), %rdi
				movl	$215, %ecx
				movl	$0, %eax
		.LVL49:
				rep stosb
				movb	$39, 1280(%rsp)
				leaq	1536(%rsp), %rdi
				leaq	1280(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL50:
				movb	$39, 1536(%rsp)
				leaq	3072(%rsp), %rdi
				leaq	1536(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LBE76:
		.LBB77:
		.LBB78:
				subq	$256, %rsp
				leaq	3328(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL51:
				addq	$256, %rsp
		.LVL52:
		.LBE78:
		.LBE77:
		.LBB79:
		.LBB80:
				movl	$2, %edi
				call	_imp_newlines@PLT
		.LVL53:
		.LBE80:
		.LBE79:
		.LBB81:
		.LBB82:
				movl	$0, %edi
				call	exit@PLT
		.LVL54:
		.LBE82:
		.LBE81:
		.LFE186:
				.section	.rodata
				.align 8
		__PRETTY_FUNCTION__.5902:
				.string	"_imp_PROMPT"
		.Letext0:
   35 Exiting on trapped END OF FILE event!."); newlines(2)
				cmpl	$88, %eax
				je	.L34
		.L30:
		.LVL47:
		.LBB74:
		.LBB75:
				movl	$0, %edi
				call	exit@PLT
		.LVL48:
		.L34:
		.LBE75:
		.LBE74:
		.LBB76:
   36       %stop
   37     %finish %else %start
   38       %monitor %and %stop
   39     %finish
   40   %repeat
   41 %endofprogram
   39 Statements compiled
