         Edinburgh IMP77 Compiler - Version 8.4
    1 %external %real %function S To R (%string (255) Input)
		.Ltext0:
		NEXT.6392:
		.LFB186:
				pushq	%r14
				pushq	%r13
				pushq	%r12
				pushq	%rbp
				pushq	%rbx
				subq	$1344, %rsp
				movq	%fs:40, %rax
				movq	%rax, 1336(%rsp)
				xorl	%eax, %eax
				leaq	1392(%rsp), %rax
				movq	%rax, 32(%rsp)
				movq	%rax, 16(%rsp)
		.LVL0:
    2   %integer Sign = 0,
    3            Sym,
				movl	$0, %ebp
    4            Pos = 1
    5   %long %real Value,
    6               Exp
				movl	$1, 28(%rsp)
    7
    8    %routine Next
    9       Pos = Pos + 1
				movl	12(%r10), %eax
				addl	$1, %eax
				movl	%eax, 12(%r10)
   10       %if Pos > Length (Input) %start
				movq	(%r10), %rdx
				movzbl	(%rdx), %ecx
				cmpl	%eax, %ecx
				jl	.L4
		.L2:
   11          Sym = 0
				movl	$0, 8(%r10)
   12       %else
				ret
		.LFE186:
				.section	.rodata.str1.1,"aMS",@progbits,1
		.LC3:
				.string	""
				.globl	STOR
		STOR:
		.LFB185:
   13          Sym = Char No (Input, Pos)
				cltq
				movzbl	(%rdx,%rax), %eax
				movl	%eax, 8(%r10)
		.L3:
   14       %finish
   15    %end
   16
				ret
		.L4:
   17    Sym = Char No (Input, Pos)
				movzbl	1393(%rsp), %eax
				movl	%eax, 24(%rsp)
   18    %if Sym = '-' %start
				cmpl	$45, %eax
				je	.L34
		.LVL1:
		.L6:
   19       Sign = 1
				movl	$1, %ebp
				jmp	.L6
		.LVL17:
		.L11:
		.LBB23:
   20       Next
				leaq	16(%rsp), %r10
				call	NEXT.6392
		.LVL16:
   21    %finish
   22    Value = 0
				pxor	%xmm7, %xmm7
				movsd	%xmm7, (%rsp)
		.LVL19:
		.L7:
   23    %if Sym # '.' %start
				movl	24(%rsp), %eax
				cmpl	$46, %eax
				je	.L27
		.LVL2:
		.LBB21:
   24       %signal 6, 5, Pos %unless '0' <= Sym <= '9'           {Char No out of range}
   25       %cycle
   26          Value = Value*10.0 + (Sym - '0')
				movsd	.LC1(%rip), %xmm1
				mulsd	(%rsp), %xmm1
				movl	24(%rsp), %eax
				subl	$48, %eax
				pxor	%xmm0, %xmm0
				cvtsi2sd	%eax, %xmm0
				addsd	%xmm1, %xmm0
				movsd	%xmm0, (%rsp)
		.LVL8:
   27          Next
				leaq	16(%rsp), %rbx
		.LVL7:
		.L13:
				movq	%rbx, %r10
				call	NEXT.6392
		.LVL9:
		.LBB22:
   28       %repeat %until %not '0' <= Sym <= '9'
   29    %finish
				subl	$48, %eax
		.LVL3:
				cmpl	$9, %eax
				jbe	.L8
		.L9:
		.LBE21:
   30    %if Sym = '.' %start
				cmpl	$46, %eax
				je	.L7
		.L16:
		.L19:
		.LVL11:
		.L20:
   31       Exp = 10.0
				movl	24(%rsp), %eax
		.LVL10:
   32       %cycle
				leaq	560(%rsp), %rdi
				leaq	.LC3(%rip), %rsi
				call	_imp_c2istr@PLT
		.LVL4:
				movl	_imp_current_line(%rip), %ebx
				testl	%ebx, %ebx
				movl	$32, %eax
				cmove	%eax, %ebx
				movq	_imp_current_file(%rip), %rsi
				testq	%rsi, %rsi
				je	.L11
				leaq	816(%rsp), %rdi
				call	_imp_c2istr@PLT
		.LVL5:
		.L12:
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	808(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				pushq	1320(%rsp)
				movl	540(%rsp), %ecx
				movl	$5, %edx
				movl	$6, %esi
				movl	%ebx, %edi
				call	_signal_event@PLT
		.LVL6:
				addq	$512, %rsp
		.L8:
				pxor	%xmm7, %xmm7
				movsd	%xmm7, (%rsp)
				movabsq	$8603403804667503988, %rax
				movabsq	$3689909845921985583, %rdx
				movq	%rax, 1073(%rsp)
				movq	%rdx, 1081(%rsp)
				movq	$1886218542, 1089(%rsp)
				movq	$0, 1097(%rsp)
				movb	$0, 1105(%rsp)
				movw	$0, 1106(%rsp)
				movl	$0, 1108(%rsp)
				leaq	1112(%rsp), %rdi
				movl	$27, %ecx
				movl	$0, %eax
				rep stosq
				movb	$20, 1072(%rsp)
				movq	1072(%rsp), %rax
				movq	1080(%rsp), %rdx
				movq	%rax, 48(%rsp)
				movq	%rdx, 56(%rsp)
				movdqa	1088(%rsp), %xmm7
				movaps	%xmm7, 64(%rsp)
				movdqa	1104(%rsp), %xmm5
				movaps	%xmm5, 80(%rsp)
				movdqa	1120(%rsp), %xmm3
				movaps	%xmm3, 96(%rsp)
				movdqa	1136(%rsp), %xmm1
				movaps	%xmm1, 112(%rsp)
				movdqa	1152(%rsp), %xmm9
				movaps	%xmm9, 128(%rsp)
				movdqa	1168(%rsp), %xmm11
				movaps	%xmm11, 144(%rsp)
				movdqa	1184(%rsp), %xmm13
				movaps	%xmm13, 160(%rsp)
				movdqa	1200(%rsp), %xmm15
				movaps	%xmm15, 176(%rsp)
				movdqa	1216(%rsp), %xmm0
				movaps	%xmm0, 192(%rsp)
				movdqa	1232(%rsp), %xmm2
				movaps	%xmm2, 208(%rsp)
				movq	1248(%rsp), %r13
				movq	1256(%rsp), %r14
				movq	%r13, 224(%rsp)
				movq	%r14, 232(%rsp)
				movq	1264(%rsp), %r11
				movq	1272(%rsp), %r12
				movq	%r11, 240(%rsp)
				movq	%r12, 248(%rsp)
				movq	1280(%rsp), %r9
				movq	1288(%rsp), %r10
				movq	%r9, 256(%rsp)
				movq	%r10, 264(%rsp)
				movq	1296(%rsp), %rsi
				movq	1304(%rsp), %rdi
				movq	%rsi, 272(%rsp)
				movq	%rdi, 280(%rsp)
				movq	1312(%rsp), %rax
				movq	1320(%rsp), %rdx
				movq	%rax, 288(%rsp)
				movq	%rdx, 296(%rsp)
		.LVL18:
		.LBE23:
				movb	$20, 48(%rsp)
				movdqa	48(%rsp), %xmm4
				movaps	%xmm4, 816(%rsp)
				movaps	%xmm7, 832(%rsp)
				movaps	%xmm5, 848(%rsp)
				movaps	%xmm3, 864(%rsp)
				movaps	%xmm1, 880(%rsp)
				movaps	%xmm9, 896(%rsp)
				movaps	%xmm11, 912(%rsp)
				movaps	%xmm13, 928(%rsp)
				movaps	%xmm15, 944(%rsp)
				movaps	%xmm0, 960(%rsp)
				movaps	%xmm2, 976(%rsp)
				movq	%r13, 992(%rsp)
				movq	%r14, 1000(%rsp)
				movq	%r11, 1008(%rsp)
				movq	%r12, 1016(%rsp)
				movq	%r9, 1024(%rsp)
				movq	%r10, 1032(%rsp)
				movq	%rsi, 1040(%rsp)
				movq	%rdi, 1048(%rsp)
				movq	%rax, 1056(%rsp)
				movq	%rdx, 1064(%rsp)
				jmp	.L12
		.L27:
				movsd	.LC1(%rip), %xmm5
				movsd	%xmm5, 8(%rsp)
   33          Next
				leal	-48(%rax), %edx
				cmpl	$9, %edx
				jbe	.L13
		.L14:
		.L15:
		.LBE22:
				leaq	16(%rsp), %rbx
		.L18:
		.LVL20:
				movq	%rbx, %r10
				call	NEXT.6392
		.LVL21:
		.LBB24:
   34          %exit %unless '0' <= Sym <= '9'
   35          Value = Value + (Sym - '0')/Exp
				pxor	%xmm0, %xmm0
				cvtsi2sd	%edx, %xmm0
				movsd	8(%rsp), %xmm6
				divsd	%xmm6, %xmm0
				addsd	(%rsp), %xmm0
				movsd	%xmm0, (%rsp)
		.LVL23:
   36          Exp = Exp * 10.0
				mulsd	.LC1(%rip), %xmm6
				movsd	%xmm6, 8(%rsp)
		.LVL24:
   37       %repeat
				movl	24(%rsp), %eax
		.LVL22:
				jmp	.L18
		.LVL25:
		.L35:
		.LBB25:
		.LBB26:
		.LBB27:
				leaq	304(%rsp), %rdi
		.LBE27:
		.LBE26:
   38    %finish
   39    %if Sym = '@' %start
				cmpl	$64, 24(%rsp)
				je	.L35
		.L21:
				leal	-48(%rax), %edx
				cmpl	$9, %edx
				ja	.L20
		.L17:
		.LBE24:
   40       Sym = S To I (Sub String (Input, Pos + 1, Length (Input)))
				movl	%eax, 280(%rsp)
   41       Value = Value * 10.0\Sym
				pxor	%xmm1, %xmm1
				cvtsi2sd	%eax, %xmm1
		.LVL32:
		.LBB32:
		.LBB33:
				addq	$256, %rsp
		.LVL33:
				ucomisd	.LC4(%rip), %xmm1
				jp	.L30
				movsd	.LC2(%rip), %xmm0
				jne	.L30
		.LVL34:
		.L22:
		.LBE33:
		.LBE32:
				mulsd	(%rsp), %xmm0
				movsd	%xmm0, (%rsp)
		.LVL35:
				jmp	.L21
		.LVL36:
		.L30:
		.LBB35:
		.LBB34:
				movsd	.LC1(%rip), %xmm0
				call	pow@PLT
		.LVL37:
				jmp	.L22
		.LVL38:
		.L36:
		.LBE34:
		.LBE35:
				call	__stack_chk_fail@PLT
		.LVL39:
		.LFE185:
				.section	.rodata.cst8,"aM",@progbits,8
				.align 8
		.LC1:
				.long	0
				.long	1076101120
				.align 8
		.LC2:
				.long	0
				.long	1079574528
				.align 8
		.LC4:
				.long	0
				.long	1073741824
				.section	.rodata.cst16,"aM",@progbits,16
				.align 16
		.LC5:
				.long	0
				.long	-2147483648
				.long	0
				.long	0
		.Letext0:
   42    %finish
				movzbl	1392(%rsp), %ecx
		.LVL26:
				movl	28(%rsp), %eax
				leal	1(%rax), %edx
		.LVL27:
		.LBB29:
		.LBB28:
				leaq	1392(%rsp), %rsi
		.LVL28:
				call	_imp_substring@PLT
		.LVL29:
				movdqa	304(%rsp), %xmm3
				movaps	%xmm3, 1072(%rsp)
				movdqa	320(%rsp), %xmm7
				movaps	%xmm7, 1088(%rsp)
				movdqa	336(%rsp), %xmm5
				movaps	%xmm5, 1104(%rsp)
				movdqa	352(%rsp), %xmm3
				movaps	%xmm3, 1120(%rsp)
				movdqa	368(%rsp), %xmm7
				movaps	%xmm7, 1136(%rsp)
				movdqa	384(%rsp), %xmm5
				movaps	%xmm5, 1152(%rsp)
				movdqa	400(%rsp), %xmm3
				movaps	%xmm3, 1168(%rsp)
				movdqa	416(%rsp), %xmm7
				movaps	%xmm7, 1184(%rsp)
				movdqa	432(%rsp), %xmm5
				movaps	%xmm5, 1200(%rsp)
				movdqa	448(%rsp), %xmm3
				movaps	%xmm3, 1216(%rsp)
				movq	464(%rsp), %r13
				movq	472(%rsp), %r14
				movq	%r13, 1232(%rsp)
				movq	%r14, 1240(%rsp)
				movq	480(%rsp), %rax
				movq	488(%rsp), %rdx
				movq	%rax, 1248(%rsp)
				movq	%rdx, 1256(%rsp)
				movq	496(%rsp), %rsi
				movq	504(%rsp), %rdi
				movq	%rsi, 1264(%rsp)
				movq	%rdi, 1272(%rsp)
				movq	512(%rsp), %r9
				movq	520(%rsp), %r10
				movq	%r9, 1280(%rsp)
				movq	%r10, 1288(%rsp)
				movq	528(%rsp), %rcx
				movq	536(%rsp), %rbx
				movq	%rcx, 1296(%rsp)
				movq	%rbx, 1304(%rsp)
				movq	544(%rsp), %r11
				movq	552(%rsp), %r12
				movq	%r11, 1312(%rsp)
				movq	%r12, 1320(%rsp)
		.LBE28:
		.LBE29:
		.LBE25:
		.LBB30:
		.LBB31:
				pushq	%r12
		.LVL30:
				pushq	%r11
				pushq	%rbx
				pushq	%rcx
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%rdx
				pushq	%rax
				pushq	%r14
				pushq	%r13
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				pushq	552(%rsp)
				call	_imp_stoi@PLT
		.LVL31:
		.LBE31:
		.LBE30:
   43    Value = -Value %if Sign # 0
				testl	%ebp, %ebp
				je	.L24
   44    %result = Value
				movsd	(%rsp), %xmm5
				xorpd	.LC5(%rip), %xmm5
				movsd	%xmm5, (%rsp)
		.LVL12:
		.L24:
				pxor	%xmm0, %xmm0
				cvtsd2ss	(%rsp), %xmm0
   45 %end {S To R}
				movq	1336(%rsp), %rax
				xorq	%fs:40, %rax
				jne	.L36
				addq	$1344, %rsp
		.LVL13:
				popq	%rbx
				popq	%rbp
		.LVL14:
				popq	%r12
				popq	%r13
				popq	%r14
				ret
		.LVL15:
		.L34:
   46
   47 %endoffile
   41 Statements compiled
