         Edinburgh IMP77 Compiler - Version 8.4
    1 %externalroutine printword(%string (64) word)
		.Ltext0:
				.globl	PRINTWORD
		PRINTWORD:
		.LFB185:
				subq	$2328, %rsp
				movq	%fs:40, %rax
				movq	%rax, 2312(%rsp)
				xorl	%eax, %eax
    2    !%string(3)word = "???"  *duplicate*
    3    %if word = "+" %or word = "-" %or word = "*" %or word = "/" %C
    4      %or word = "<" %or word = "<=" %or word = ">" %or word = ">=" %C
    5        %or word = "=" %then %start
				movq	%rsp, %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL0:
				testl	%eax, %eax
				jne	.L6
		.L2:
		.L3:
		.L1:
    6       %return
    7    %finish
    8 %end
    9
				movq	2312(%rsp), %rax
				xorq	%fs:40, %rax
				jne	.L7
				addq	$2328, %rsp
				ret
		.L6:
				call	__stack_chk_fail@PLT
		.LVL9:
		.LFE185:
		.Letext0:
   10 %endoffile
				leaq	256(%rsp), %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL1:
				testl	%eax, %eax
				je	.L1
    6 Statements compiled
				leaq	512(%rsp), %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL2:
				testl	%eax, %eax
				je	.L1
				leaq	768(%rsp), %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL3:
				testl	%eax, %eax
				je	.L1
				leaq	1024(%rsp), %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL4:
				testl	%eax, %eax
				je	.L1
				leaq	1280(%rsp), %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL5:
				testl	%eax, %eax
				je	.L1
				leaq	1536(%rsp), %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL6:
				testl	%eax, %eax
				je	.L1
				leaq	1792(%rsp), %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL7:
				testl	%eax, %eax
				je	.L1
				leaq	2048(%rsp), %rsi
				leaq	2336(%rsp), %rdi
				call	_imp_strcmp@PLT
		.LVL8:
				jmp	.L1
		.L7:
