         Edinburgh IMP77 Compiler - Version 8.4
    1
		.Ltext0:
		B.6398:
		.LFB188:
    2 %BEGIN
		.LVL11:
				subq	$72, %rsp
				movq	%fs:40, %rax
				movq	%rax, 56(%rsp)
				xorl	%eax, %eax
    3 %ROUTINE TEST(%ROUTINE PARAM(%INTEGER I))
				call	_imp_initialise@PLT
		.LVL12:
		.LBB22:
		.LBB23:
    4       PARAM(10)
				movl	$10, %edi
				call	*%rax
		.LVL14:
		.LBE25:
		.LBE24:
		.LBE23:
		.LBE22:
		.LBB26:
		.LBB27:
				movl	$0, %edi
				call	exit@PLT
		.LVL15:
		.LBE27:
		.LBE26:
		.LFE185:
		.Letext0:
    5 %END
    6 %ROUTINE A
				leaq	80(%rsp), %rax
				movq	%rax, 40(%rsp)
				movq	%rsp, %rdx
				leaq	12(%rdx), %rax
				movw	$-17591, 12(%rsp)
				leaq	B.6398(%rip), %rcx
				movq	%rcx, 14(%rdx)
				movw	$-17847, 22(%rdx)
				movq	%rdx, 24(%rdx)
				movl	$-1864106167, 32(%rdx)
    7 %INTEGER P,Q,R
    8       P='P'; Q='Q'; R='R'
				movl	$80, 8(%rsp)
    9 %ROUTINE B(%INTEGER A)
		.LVL0:
				pushq	%r14
				pushq	%r13
				pushq	%r12
				pushq	%rbx
				subq	$1048, %rsp
				movq	%fs:40, %rax
				movq	%rax, 1032(%rsp)
				xorl	%eax, %eax
				movl	$81, 4(%rsp)
   10       %UNLESS P='P' %AND Q='Q' %AND R='R' %and a=10 %THEN %c
				cmpl	$80, 8(%r10)
				jne	.L2
				movl	$82, (%rsp)
		.LVL13:
		.LBB24:
		.LBB25:
   11         PRINTSTRING("FAILED") %else printstring("TEST OK")
				cmpl	$81, 4(%r10)
				je	.L8
		.L2:
		.LVL1:
		.LBB10:
   12 %END
				jmp	.L1
		.L9:
   13 TEST(B)
				movq	1032(%rsp), %rax
				xorq	%fs:40, %rax
				jne	.L9
				addq	$1048, %rsp
				popq	%rbx
				popq	%r12
				popq	%r13
				popq	%r14
				ret
		.LVL5:
		.L8:
				cmpl	$82, (%r10)
				jne	.L2
				cmpl	$10, %edi
				jne	.L2
		.L3:
		.LVL6:
		.LBB13:
				call	__stack_chk_fail@PLT
		.LVL10:
		.LFE188:
				.globl	main
		main:
		.LFB185:
   14 %END
   15 A
				movabsq	$75064423301446, %rax
				movl	$0, %edx
				movq	%rax, 769(%rsp)
				movq	%rdx, 777(%rsp)
				movb	$0, 785(%rsp)
				movw	$0, 786(%rsp)
				movl	$0, 788(%rsp)
				leaq	792(%rsp), %rdi
		.LVL2:
				movl	$29, %ecx
				movl	$0, %eax
				rep stosq
				movb	$6, 768(%rsp)
				movq	768(%rsp), %rax
				movq	776(%rsp), %rdx
				movq	%rax, (%rsp)
				movq	%rdx, 8(%rsp)
				movdqa	784(%rsp), %xmm0
				movaps	%xmm0, 16(%rsp)
				movdqa	800(%rsp), %xmm1
				movaps	%xmm1, 32(%rsp)
				movdqa	816(%rsp), %xmm2
				movaps	%xmm2, 48(%rsp)
				movdqa	832(%rsp), %xmm3
				movaps	%xmm3, 64(%rsp)
				movdqa	848(%rsp), %xmm4
				movaps	%xmm4, 80(%rsp)
				movdqa	864(%rsp), %xmm5
				movaps	%xmm5, 96(%rsp)
				movdqa	880(%rsp), %xmm6
				movaps	%xmm6, 112(%rsp)
				movdqa	896(%rsp), %xmm7
				movaps	%xmm7, 128(%rsp)
				movdqa	912(%rsp), %xmm0
				movaps	%xmm0, 144(%rsp)
				movq	928(%rsp), %r13
				movq	936(%rsp), %r14
				movq	%r13, 160(%rsp)
				movq	%r14, 168(%rsp)
				movq	944(%rsp), %rax
				movq	952(%rsp), %rdx
				movq	%rax, 176(%rsp)
				movq	%rdx, 184(%rsp)
				movq	960(%rsp), %rsi
				movq	968(%rsp), %rdi
				movq	%rsi, 192(%rsp)
				movq	%rdi, 200(%rsp)
				movq	976(%rsp), %r9
				movq	984(%rsp), %r10
				movq	%r9, 208(%rsp)
				movq	%r10, 216(%rsp)
				movq	992(%rsp), %rcx
				movq	1000(%rsp), %rbx
				movq	%rcx, 224(%rsp)
				movq	%rbx, 232(%rsp)
				movq	1008(%rsp), %r11
				movq	1016(%rsp), %r12
				movq	%r11, 240(%rsp)
				movq	%r12, 248(%rsp)
		.LVL3:
				movb	$6, (%rsp)
				movdqa	(%rsp), %xmm1
				movaps	%xmm1, 512(%rsp)
				movdqa	784(%rsp), %xmm2
				movaps	%xmm2, 528(%rsp)
				movdqa	800(%rsp), %xmm3
				movaps	%xmm3, 544(%rsp)
				movdqa	816(%rsp), %xmm4
				movaps	%xmm4, 560(%rsp)
				movdqa	832(%rsp), %xmm5
				movaps	%xmm5, 576(%rsp)
				movdqa	848(%rsp), %xmm6
				movaps	%xmm6, 592(%rsp)
				movdqa	864(%rsp), %xmm7
				movaps	%xmm7, 608(%rsp)
				movdqa	880(%rsp), %xmm0
				movaps	%xmm0, 624(%rsp)
				movdqa	896(%rsp), %xmm1
				movaps	%xmm1, 640(%rsp)
				movdqa	912(%rsp), %xmm2
				movaps	%xmm2, 656(%rsp)
				movq	%r13, 672(%rsp)
				movq	%r14, 680(%rsp)
				movq	%rax, 688(%rsp)
				movq	%rdx, 696(%rsp)
				movq	%rsi, 704(%rsp)
				movq	%rdi, 712(%rsp)
				movq	%r9, 720(%rsp)
				movq	%r10, 728(%rsp)
				movq	%rcx, 736(%rsp)
				movq	%rbx, 744(%rsp)
				movq	%r11, 752(%rsp)
				movq	%r12, 760(%rsp)
		.LBE10:
		.LBB11:
		.LBB12:
				pushq	%r12
				pushq	%r11
				pushq	%rbx
				pushq	%rcx
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%rdx
				pushq	%rax
				pushq	%r14
				pushq	%r13
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	248(%rsp)
				pushq	248(%rsp)
				call	_imp_printstring@PLT
		.LVL4:
				addq	$256, %rsp
		.L5:
		.L1:
		.LBE12:
		.LBE11:
   16 %ENDOFPROGRAM
   16 Statements compiled
				movabsq	$21197623525590356, %rax
				movl	$0, %edx
				movq	%rax, 769(%rsp)
				movq	%rdx, 777(%rsp)
				movb	$0, 785(%rsp)
				movw	$0, 786(%rsp)
				movl	$0, 788(%rsp)
				leaq	792(%rsp), %rdi
		.LVL7:
				movl	$29, %ecx
				movl	$0, %eax
				rep stosq
				movb	$7, 768(%rsp)
				movq	768(%rsp), %rax
				movq	776(%rsp), %rdx
				movq	%rax, 256(%rsp)
				movq	%rdx, 264(%rsp)
				movdqa	784(%rsp), %xmm3
				movaps	%xmm3, 272(%rsp)
				movdqa	800(%rsp), %xmm4
				movaps	%xmm4, 288(%rsp)
				movdqa	816(%rsp), %xmm5
				movaps	%xmm5, 304(%rsp)
				movdqa	832(%rsp), %xmm6
				movaps	%xmm6, 320(%rsp)
				movdqa	848(%rsp), %xmm7
				movaps	%xmm7, 336(%rsp)
				movdqa	864(%rsp), %xmm3
				movaps	%xmm3, 352(%rsp)
				movdqa	880(%rsp), %xmm4
				movaps	%xmm4, 368(%rsp)
				movdqa	896(%rsp), %xmm5
				movaps	%xmm5, 384(%rsp)
				movdqa	912(%rsp), %xmm6
				movaps	%xmm6, 400(%rsp)
				movdqa	928(%rsp), %xmm7
				movaps	%xmm7, 416(%rsp)
				movq	944(%rsp), %rax
				movq	952(%rsp), %rdx
				movq	%rax, 432(%rsp)
				movq	%rdx, 440(%rsp)
				movq	960(%rsp), %rcx
				movq	968(%rsp), %rbx
				movq	%rcx, 448(%rsp)
				movq	%rbx, 456(%rsp)
				movq	976(%rsp), %rsi
				movq	984(%rsp), %rdi
				movq	%rsi, 464(%rsp)
				movq	%rdi, 472(%rsp)
				movq	992(%rsp), %r9
				movq	1000(%rsp), %r10
				movq	%r9, 480(%rsp)
				movq	%r10, 488(%rsp)
				movq	1008(%rsp), %r11
				movq	1016(%rsp), %r12
				movq	%r11, 496(%rsp)
				movq	%r12, 504(%rsp)
		.LVL8:
				movb	$7, 256(%rsp)
				movq	256(%rsp), %r13
				movq	264(%rsp), %r14
				movq	%r13, 768(%rsp)
				movq	%r14, 776(%rsp)
		.LBE13:
		.LBB14:
		.LBB15:
				pushq	%r12
				pushq	%r11
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%rbx
				pushq	%rcx
				pushq	%rdx
				pushq	%rax
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	1016(%rsp)
				pushq	%r14
				pushq	%r13
				call	_imp_printstring@PLT
		.LVL9:
				addq	$256, %rsp
		.LBE15:
		.LBE14:
