         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
		.Ltext0:
				.globl	main
		main:
		.LFB185:
		.LVL0:
				subq	$1304, %rsp
				movq	%fs:40, %rax
				movq	%rax, 1288(%rsp)
				xorl	%eax, %eax
    2   %routine do something(%string(255)%name fred)
				call	_imp_initialise@PLT
		.LVL1:
    3     fred = "Oh boy, this is fun!"
				movabsq	$2318361427483584591, %rax
				movabsq	$2338328219631577204, %rdx
				movq	%rax, 769(%rsp)
				movq	%rdx, 777(%rsp)
				movq	$560887142, 785(%rsp)
				movq	$0, 793(%rsp)
				movb	$0, 801(%rsp)
				movw	$0, 802(%rsp)
				movl	$0, 804(%rsp)
				leaq	808(%rsp), %rdi
				movl	$27, %ecx
				movl	$0, %eax
				rep stosq
		.LVL3:
				movb	$20, 768(%rsp)
				movq	768(%rsp), %rax
				movq	776(%rsp), %rdx
				movq	%rax, 1024(%rsp)
				movq	%rdx, 1032(%rsp)
		.LVL4:
		.LBE24:
				movb	$20, 1024(%rsp)
				movq	1024(%rsp), %rax
				movq	1032(%rsp), %rdx
				movq	%rax, (%rsp)
				movq	%rdx, 8(%rsp)
				movq	784(%rsp), %rax
				movq	792(%rsp), %rdx
				movq	%rax, 16(%rsp)
				movq	%rdx, 24(%rsp)
				movq	800(%rsp), %rax
				movq	808(%rsp), %rdx
				movq	%rax, 32(%rsp)
				movq	%rdx, 40(%rsp)
				movq	816(%rsp), %rax
				movq	824(%rsp), %rdx
				movq	%rax, 48(%rsp)
				movq	%rdx, 56(%rsp)
				movq	832(%rsp), %rax
				movq	840(%rsp), %rdx
				movq	%rax, 64(%rsp)
				movq	%rdx, 72(%rsp)
				movq	848(%rsp), %rax
				movq	856(%rsp), %rdx
				movq	%rax, 80(%rsp)
				movq	%rdx, 88(%rsp)
				movq	864(%rsp), %rax
				movq	872(%rsp), %rdx
				movq	%rax, 96(%rsp)
				movq	%rdx, 104(%rsp)
				movq	880(%rsp), %rax
				movq	888(%rsp), %rdx
				movq	%rax, 112(%rsp)
				movq	%rdx, 120(%rsp)
				movq	896(%rsp), %rax
				movq	904(%rsp), %rdx
				movq	%rax, 128(%rsp)
				movq	%rdx, 136(%rsp)
				movq	912(%rsp), %rax
				movq	920(%rsp), %rdx
				movq	%rax, 144(%rsp)
				movq	%rdx, 152(%rsp)
				movq	928(%rsp), %rax
				movq	936(%rsp), %rdx
				movq	%rax, 160(%rsp)
				movq	%rdx, 168(%rsp)
				movq	944(%rsp), %rax
				movq	952(%rsp), %rdx
				movq	%rax, 176(%rsp)
				movq	%rdx, 184(%rsp)
				movq	960(%rsp), %rax
				movq	968(%rsp), %rdx
				movq	%rax, 192(%rsp)
				movq	%rdx, 200(%rsp)
				movq	976(%rsp), %rax
				movq	984(%rsp), %rdx
				movq	%rax, 208(%rsp)
				movq	%rdx, 216(%rsp)
				movq	992(%rsp), %rax
				movq	1000(%rsp), %rdx
				movq	%rax, 224(%rsp)
				movq	%rdx, 232(%rsp)
				movq	1008(%rsp), %rax
				movq	1016(%rsp), %rdx
				movq	%rax, 240(%rsp)
				movq	%rdx, 248(%rsp)
		.LVL5:
		.LBE23:
		.LBE22:
		.LBB25:
		.LBB26:
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				pushq	760(%rsp)
				call	_imp_printstring@PLT
		.LVL6:
		.LBE26:
		.LBE25:
		.LBB27:
		.LBB28:
				addq	$256, %rsp
				call	_imp_newline@PLT
		.LVL7:
		.LBE28:
		.LBE27:
		.LBB29:
		.LBB30:
				movl	$0, %edi
				call	exit@PLT
		.LVL8:
		.LBE30:
		.LBE29:
		.LFE185:
		.Letext0:
    4   %end
    5
    6   %string(255) jim = "Well, that was unexpected"
    7
    8   do something(jim)
    9
				leaq	256(%rsp), %rsi
				movq	%rsp, %rdi
				movl	$255, %edx
				call	_imp_strncpy@PLT
		.LVL2:
		.LBB22:
		.LBB23:
		.LBB24:
   10   printstring(jim); newline
   11
   12 %endofprogram
    9 Statements compiled
