         Edinburgh IMP77 Compiler - Version 8.4
    1
		.Ltext0:
		_imp_SQRT:
		.LFB61:
		.LVL0:
				subq	$24, %rsp
				sqrtsd	%xmm0, %xmm2
				movsd	%xmm2, 8(%rsp)
				pxor	%xmm1, %xmm1
				ucomisd	%xmm0, %xmm1
				ja	.L4
		.LVL1:
		.L1:
				movsd	8(%rsp), %xmm0
				addq	$24, %rsp
				ret
		.LVL2:
		.L4:
				call	sqrt@PLT
		.LVL3:
				jmp	.L1
		.LFE61:
		_imp_SIN:
		.LFB42:
		.LVL4:
				subq	$8, %rsp
				call	sin@PLT
		.LVL5:
				addq	$8, %rsp
				ret
		.LFE42:
				.section	.rodata.str1.1,"aMS",@progbits,1
		.LC1:
				.string	"Illegal cycle I = 0, 1, STEPS"
		TABULATE.6392:
		.LFB186:
    2 %begin
		.LVL31:
				pushq	%rbx
				subq	$1040, %rsp
				movq	%fs:40, %rax
				movq	%rax, 1032(%rsp)
				xorl	%eax, %eax
    3 %routine Tabulate (%longrealfn func(%longreal x),%longreal from,to,
		.LVL6:
				pushq	%r12
				pushq	%rbp
				pushq	%rbx
				subq	$800, %rsp
				movq	%rdi, %r12
				movl	%esi, %ebp
				movq	%fs:40, %rax
				movq	%rax, 792(%rsp)
				xorl	%eax, %eax
				call	_imp_initialise@PLT
		.LVL32:
		.LBB30:
    4    %integer steps)
    5 ! func(x) is the dummy formal function
    6 %real value,inc
    7 %integer i
    8 !
    9 inc=(to-from)/steps
				subsd	%xmm0, %xmm1
		.LVL7:
				pxor	%xmm2, %xmm2
				cvtsi2sd	%esi, %xmm2
				divsd	%xmm2, %xmm1
				pxor	%xmm6, %xmm6
				cvtsd2ss	%xmm1, %xmm6
				movss	%xmm6, 12(%rsp)
		.LVL8:
   10 !
   11 value=from
				pxor	%xmm7, %xmm7
				cvtsd2ss	%xmm0, %xmm7
				movss	%xmm7, 8(%rsp)
		.LVL9:
		.LBB21:
   12 %for i=0,1,steps %cycle
   13    print(value,4,2) ; print(func(value),10,4) ; newline
				pxor	%xmm4, %xmm4
				cvtss2sd	8(%rsp), %xmm4
		.LVL13:
		.LBB22:
		.LBB23:
				movl	$2, %esi
				movl	$4, %edi
				movsd	%xmm4, (%rsp)
				movapd	%xmm4, %xmm0
				call	_imp_print@PLT
		.LVL14:
		.LBE23:
		.LBE22:
   14    value=value+inc
				testl	%esi, %esi
				js	.L18
		.LVL10:
		.L8:
				movsd	(%rsp), %xmm0
				call	*%r12
		.LVL15:
		.LBB24:
		.LBB25:
				movl	$4, %esi
				movl	$10, %edi
				call	_imp_print@PLT
		.LVL16:
		.LBE25:
		.LBE24:
		.LBB26:
		.LBB27:
				call	_imp_newline@PLT
		.LVL17:
		.LBE27:
		.LBE26:
				movss	8(%rsp), %xmm3
				addss	12(%rsp), %xmm3
				movss	%xmm3, 8(%rsp)
		.LVL18:
				leaq	272(%rsp), %rdi
		.LVL23:
				leaq	.LC1(%rip), %rsi
		.LVL24:
				call	_imp_c2istr@PLT
		.LVL25:
				movl	_imp_current_line(%rip), %ebx
				testl	%ebx, %ebx
				jne	.L9
				movl	$14, %ebx
		.L9:
				movq	_imp_current_file(%rip), %rsi
				testq	%rsi, %rsi
				je	.L10
				leaq	528(%rsp), %rdi
				call	_imp_c2istr@PLT
		.LVL26:
		.L11:
				subq	$256, %rsp
				leaq	528(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				subq	$256, %rsp
				leaq	1040(%rsp), %rsi
				movl	$32, %ecx
				movq	%rsp, %rdi
				rep movsq
				movl	$1, %edx
				movl	$5, %esi
				movl	%ebx, %edi
				call	_signal_event@PLT
		.LVL27:
				addq	$512, %rsp
				jmp	.L8
		.L10:
		.LVL28:
		.LBB28:
				movabsq	$8603403804667503988, %rax
				movabsq	$7883883441588302383, %rdx
				movq	%rax, 529(%rsp)
				movq	%rdx, 537(%rsp)
				movq	$112, 545(%rsp)
				movq	$0, 553(%rsp)
				leaq	561(%rsp), %rdi
				movl	$223, %ecx
				movl	$0, %eax
				rep stosb
				movb	$17, 528(%rsp)
				leaq	16(%rsp), %rdi
				leaq	528(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
		.LVL29:
		.LBE28:
				movb	$17, 16(%rsp)
				leaq	528(%rsp), %rdi
				leaq	16(%rsp), %rsi
				movl	$32, %ecx
				rep movsq
				jmp	.L11
		.L19:
		.LBE29:
   15 %repeat
   16 %end ;!  of routine tabulate
   17 !
				cmpl	$-1, %ebp
				je	.L7
				movl	$-1, %ebx
		.LVL11:
		.L13:
				cmpl	%ebx, %ebp
				jne	.L13
		.L12:
		.LVL19:
		.L7:
		.LBE21:
				movq	792(%rsp), %rax
				xorq	%fs:40, %rax
				jne	.L19
				addq	$800, %rsp
				popq	%rbx
				popq	%rbp
		.LVL20:
				popq	%r12
		.LVL21:
				ret
		.LVL22:
		.L18:
		.LBB29:
				call	__stack_chk_fail@PLT
		.LVL30:
		.LFE186:
				.globl	main
		main:
		.LFB185:
   18 ! now call with some functions....
				addl	$1, %ebx
		.LVL12:
   19 printstring("
				movabsq	$2314982287841697802, %rax
				movabsq	$2314885530818453536, %rdx
				movq	%rax, 769(%rsp)
				movq	%rdx, 777(%rsp)
				movabsq	$7956016798541815840, %rax
				movabsq	$43645413477, %rdx
				movq	%rax, 785(%rsp)
				movq	%rdx, 793(%rsp)
				movl	$0, %ebx
				movb	$0, 801(%rsp)
				movw	$0, 802(%rsp)
				movl	$0, 804(%rsp)
				leaq	808(%rsp), %rdi
				movl	$27, %ecx
				movq	%rbx, %rax
				rep stosq
				movb	$29, 768(%rsp)
				movq	768(%rsp), %rax
				movq	776(%rsp), %rdx
				movq	%rax, (%rsp)
				movq	%rdx, 8(%rsp)
		.LVL33:
				movb	$29, (%rsp)
		.LBE30:
		.LBB31:
		.LBB32:
				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	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
		.LVL34:
		.LBE32:
		.LBE31:
   20     x               sine(x)
   21 ")
   22 tabulate ( sin, 0.0,pi/2,10)
				addq	$256, %rsp
				movl	$10, %esi
				movsd	.LC2(%rip), %xmm1
				pxor	%xmm0, %xmm0
				leaq	_imp_SIN(%rip), %rdi
				call	TABULATE.6392
		.LVL35:
		.LBB33:
   23 ! note that the function name appears WITHOUT parameters in the call
   24 !
   25 printstring("
				movabsq	$2314982287841697802, %rax
				movabsq	$8295665835966472224, %rdx
				movq	%rax, 513(%rsp)
				movq	%rdx, 521(%rsp)
				movabsq	$8029762440661136753, %rax
				movabsq	$43645413492, %rdx
				movq	%rax, 529(%rsp)
				movq	%rdx, 537(%rsp)
				movb	$0, 545(%rsp)
				movw	$0, 546(%rsp)
				movl	$0, 548(%rsp)
				leaq	552(%rsp), %rdi
				movl	$27, %ecx
				movq	%rbx, %rax
				rep stosq
				movb	$29, 512(%rsp)
				movq	512(%rsp), %rax
				movq	520(%rsp), %rdx
				movq	%rax, 256(%rsp)
				movq	%rdx, 264(%rsp)
		.LVL36:
				movb	$29, 256(%rsp)
		.LBE33:
		.LBB34:
		.LBB35:
				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	504(%rsp)
				pushq	504(%rsp)
				call	_imp_printstring@PLT
		.LVL37:
		.LBE35:
		.LBE34:
   26     x         squareroot(x)
   27 ")
   28 tabulate( sqrt, 0.0,10.0,5)
				addq	$256, %rsp
				movl	$5, %esi
				movsd	.LC3(%rip), %xmm1
				pxor	%xmm0, %xmm0
				leaq	_imp_SQRT(%rip), %rdi
				call	TABULATE.6392
		.LVL38:
		.LBB36:
		.LBB37:
				movl	$0, %edi
				call	exit@PLT
		.LVL39:
		.LBE37:
		.LBE36:
		.LFE185:
				.section	.rodata.cst8,"aM",@progbits,8
				.align 8
		.LC2:
				.long	1413754136
				.long	1073291771
				.align 8
		.LC3:
				.long	0
				.long	1076101120
		.Letext0:
   29 !
   30 %endofprogram
   18 Statements compiled
