         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
		.Ltext0:
		FRED.6389:
		.LFB186:
		.LVL13:
				subq	$8, %rsp
    2 %externalinteger fredfred
				call	_imp_initialise@PLT
		.LVL14:
    3 %routine fred(%integer opcode)
		.LVL0:
				pushq	%rbx
				subq	$1040, %rsp
				movl	%edi, %ebx
				movq	%fs:40, %rax
				movq	%rax, 1032(%rsp)
				xorl	%eax, %eax
		.LVL1:
    4 %externalintegerspec fredfred
    5 %integer i,j,k,l
    6 %string(11) ts
    7       ts="abcdef"
    8 i=1; j=2; k=3
    9 write(fredfred,5)
				leaq	256(%rsp), %rsi
				movq	%rsp, %rdi
		.LVL2:
				movl	$11, %edx
				call	_imp_strncpy@PLT
		.LVL3:
				movl	$5, %esi
				movl	FREDFRED(%rip), %edi
				call	_imp_writeint@PLT
		.LVL4:
   10 %if opcode=x'9a' %or X'e8'<=opcode<=x'e9' %or x'81'<=opcode<=x'89' %then printstring("Test ok")
				cmpl	$154, %ebx
				je	.L2
		.LVL5:
		.LBB13:
   11 newline
   12 %end
?L unused
   13 fredfred=5
				movq	1032(%rsp), %rax
				xorq	%fs:40, %rax
				jne	.L7
				addq	$1040, %rsp
				popq	%rbx
				ret
		.L7:
				call	__stack_chk_fail@PLT
		.LVL12:
		.LFE186:
				.globl	main
		main:
		.LFB185:
   14 fred(x'e8')
				movl	$232, %edi
				call	FRED.6389
		.LVL15:
		.LBB20:
		.LBB21:
				movl	$0, %edi
				call	exit@PLT
		.LVL16:
		.LBE21:
		.LBE20:
		.LFE185:
		.Letext0:
   15 %endofprogram
   17 Statements compiled
				leal	-232(%rbx), %eax
				cmpl	$1, %eax
				jbe	.L2
		.L3:
		.LVL6:
		.LBE13:
		.LBB14:
				subl	$129, %ebx
		.LVL7:
				cmpl	$8, %ebx
				ja	.L4
		.LVL8:
		.L2:
		.LBE14:
		.LBB15:
				movabsq	$30240007691396436, %rax
				movl	$0, %edx
				movq	%rax, 769(%rsp)
				movq	%rdx, 777(%rsp)
				leaq	785(%rsp), %rdi
				movl	$239, %ecx
				movl	$0, %eax
				rep stosb
				movb	$7, 768(%rsp)
				leaq	512(%rsp), %rdi
				leaq	768(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL9:
				movb	$7, 512(%rsp)
				leaq	768(%rsp), %rdi
				leaq	512(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LBE15:
		.LBB16:
		.LBB17:
				subq	$256, %rsp
				leaq	1024(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				call	_imp_printstring@PLT
		.LVL10:
				addq	$256, %rsp
		.L4:
		.LBE17:
		.LBE16:
		.LBB18:
		.LBB19:
				call	_imp_newline@PLT
		.LVL11:
		.LBE19:
		.LBE18:
