         Edinburgh IMP77 Compiler - Version 8.4
    1 %external %real %function S To R (%string (255) Input)
		.Ltext0:
		_imp_REXP:
		.LFB61:
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%ebx
				subl	$20, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	8(%ebp), %edx
				movl	%edx, -16(%ebp)
				movl	12(%ebp), %edx
				movl	%edx, -12(%ebp)
				movl	16(%ebp), %edx
				movl	%edx, -24(%ebp)
				movl	20(%ebp), %edx
				movl	%edx, -20(%ebp)
				fldl	-24(%ebp)
				fldl	.LC1@GOTOFF(%eax)
				fucomip	%st(1), %st
				fstp	%st(0)
				jp	.L2
				fldl	-24(%ebp)
				fldl	.LC1@GOTOFF(%eax)
				fucomip	%st(1), %st
				fstp	%st(0)
				jne	.L2
				fldl	-16(%ebp)
				fmull	-16(%ebp)
				jmp	.L5
		.L2:
				pushl	-20(%ebp)
				pushl	-24(%ebp)
				pushl	-12(%ebp)
				pushl	-16(%ebp)
				movl	%eax, %ebx
				call	pow@PLT
				addl	$16, %esp
		.L5:
				movl	-4(%ebp), %ebx
				leave
				ret
		.LFE61:
		NEXT.6026:
		.LFB190:
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				subl	$1132, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%gs:20, %eax
				movl	%eax, -28(%ebp)
				xorl	%eax, %eax
				leal	8(%ebp), %edx
				leal	8(%ebp), %eax
				movl	%edx, -1056(%ebp)
				movl	%eax, -1064(%ebp)
    2   %integer Sign = 0,
				movl	$0, -1128(%ebp)
				movl	$1, %eax
				movl	%eax, -1060(%ebp)
    3            Sym,
    4            Pos = 1
    5   %long %real Value,
    6               Exp
    7
    8    %routine Next
				pushl	%ebp
				movl	%esp, %ebp
				subl	$40, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, %eax
				movl	%ecx, -28(%ebp)
				movl	%gs:20, %ecx
				movl	%ecx, -12(%ebp)
				xorl	%ecx, %ecx
    9       Pos = Pos + 1
				movl	8(%eax), %edx
				addl	$1, %edx
				movl	%edx, 8(%eax)
   10       %if Pos > Length (Input) %start
				movl	4(%eax), %edx
				movl	%edx, -24(%ebp)
		.LBB19:
		.LBB20:
				movl	-24(%ebp), %edx
		.LBE20:
		.LBE19:
				movzbl	(%edx), %edx
				movzbl	%dl, %edx
				movl	8(%eax), %ecx
				cmpl	%edx, %ecx
				jle	.L16
				nop
		.L10:
   11          Sym = 0
				movl	$0, %edx
				movl	%edx, (%eax)
   12       %else
				jmp	.L11
		.L16:
   13          Sym = Char No (Input, Pos)
				movl	4(%eax), %edx
				movl	%edx, %ecx
				movl	8(%eax), %edx
				movl	%ecx, -20(%ebp)
				movl	%edx, -16(%ebp)
		.LBB21:
		.LBB22:
				movl	-20(%ebp), %ecx
				movl	-16(%ebp), %edx
				addl	%ecx, %edx
		.LBE22:
		.LBE21:
				movzbl	(%edx), %edx
				movzbl	%dl, %edx
				movl	%edx, (%eax)
		.L11:
   14       %finish
   15    %end
				nop
				movl	-12(%ebp), %eax
				xorl	%gs:20, %eax
				je	.L14
				call	__stack_chk_fail_local
		.L14:
				leave
				ret
		.LFE190:
				.section	.rodata
		.LC3:
				.string	""
				.align 32
		.LC0:
				.byte	19
				.string	"test-in/test153.imp"
				.zero	235
				.globl	STOR
		STOR:
		.LFB189:
   16
   17    Sym = Char No (Input, Pos)
				movl	-1060(%ebp), %eax
				leal	8(%ebp), %esi
				movl	%esi, -1112(%ebp)
				movl	%eax, -1108(%ebp)
		.LBB23:
		.LBB24:
				movl	-1112(%ebp), %edx
				movl	-1108(%ebp), %eax
				addl	%edx, %eax
		.LBE24:
		.LBE23:
				movzbl	(%eax), %eax
				movzbl	%al, %eax
				movl	%eax, -1068(%ebp)
   18    %if Sym = '-' %start
				movl	-1068(%ebp), %eax
				cmpl	$45, %eax
				jne	.L52
				nop
		.L20:
   19       Sign = 1
				movl	$1, -1128(%ebp)
   20       Next
				leal	-1068(%ebp), %eax
				movl	%eax, %ecx
				call	NEXT.6026
				jmp	.L20
		.L52:
   21    %finish
   22    Value = 0
				fldz
				fstpl	-1088(%ebp)
   23    %if Sym # '.' %start
				movl	-1068(%ebp), %eax
				cmpl	$46, %eax
				je	.L53
		.LBB25:
				nop
				jmp	.L34
		.L56:
		.LBB30:
				nop
				jmp	.L34
		.L57:
				nop
		.L34:
		.LBE30:
   24       %signal 6, 5, Pos %unless '0' <= Sym <= '9'           {Char No out of range}
				movl	-1068(%ebp), %eax
				movl	%eax, -1124(%ebp)
				cmpl	$47, -1124(%ebp)
				jle	.L54
				cmpl	$57, -1124(%ebp)
				jle	.L55
		.LBE25:
				jmp	.L24
		.L54:
		.LBB26:
				nop
		.L24:
		.LBE26:
				leal	-796(%ebp), %eax
				subl	$8, %esp
				leal	.LC3@GOTOFF(%ebx), %edx
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L26
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				movl	%eax, -1136(%ebp)
				jmp	.L27
		.L26:
				movl	$24, -1136(%ebp)
		.L27:
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L28
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %edx
				leal	-540(%ebp), %eax
				subl	$8, %esp
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				jmp	.L29
		.L28:
		.LBB27:
				leal	-284(%ebp), %eax
				leal	.LC0@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1052(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE27:
				leal	-540(%ebp), %eax
				leal	-1052(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.L29:
				movl	-1060(%ebp), %eax
				pushl	%eax
				pushl	$5
				pushl	$6
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-796(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				pushl	-1136(%ebp)
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-540(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_signal_event@PLT
				addl	$528, %esp
				jmp	.L33
		.L25:
		.L55:
		.LBB28:
				nop
		.L30:
		.L33:
		.LBE28:
   25       %cycle
   26          Value = Value*10.0 + (Sym - '0')
				fldl	-1088(%ebp)
				fldl	.LC4@GOTOFF(%ebx)
				fmulp	%st, %st(1)
				movl	-1068(%ebp), %eax
				subl	$48, %eax
				movl	%eax, -1136(%ebp)
				fildl	-1136(%ebp)
				faddp	%st, %st(1)
				fstpl	-1088(%ebp)
   27          Next
				leal	-1068(%ebp), %eax
				movl	%eax, %ecx
				call	NEXT.6026
		.LBB29:
   28       %repeat %until %not '0' <= Sym <= '9'
				movl	-1068(%ebp), %eax
				movl	%eax, -1120(%ebp)
				cmpl	$47, -1120(%ebp)
				jle	.L56
				cmpl	$57, -1120(%ebp)
				jg	.L57
		.LBE29:
				jmp	.L33
		.L22:
		.L53:
   29    %finish
   30    %if Sym = '.' %start
				movl	-1068(%ebp), %eax
				cmpl	$46, %eax
				jne	.L58
				nop
		.L41:
   31       Exp = 10.0
				fldl	.LC4@GOTOFF(%ebx)
				fstpl	-1080(%ebp)
		.L37:
   32       %cycle
   33          Next
				leal	-1068(%ebp), %eax
				movl	%eax, %ecx
				call	NEXT.6026
		.LBB31:
   34          %exit %unless '0' <= Sym <= '9'
				movl	-1068(%ebp), %eax
				movl	%eax, -1116(%ebp)
				cmpl	$47, -1116(%ebp)
				jle	.L59
				cmpl	$57, -1116(%ebp)
				jle	.L60
		.LBE31:
				jmp	.L39
		.L59:
		.LBB32:
				nop
		.L39:
		.LBE32:
				jmp	.L41
		.L60:
		.LBB33:
				nop
		.L40:
		.LBE33:
   35          Value = Value + (Sym - '0')/Exp
				movl	-1068(%ebp), %eax
				subl	$48, %eax
				movl	%eax, -1136(%ebp)
				fildl	-1136(%ebp)
				fdivl	-1080(%ebp)
				fldl	-1088(%ebp)
				faddp	%st, %st(1)
				fstpl	-1088(%ebp)
   36          Exp = Exp * 10.0
				fldl	-1080(%ebp)
				fldl	.LC4@GOTOFF(%ebx)
				fmulp	%st, %st(1)
				fstpl	-1080(%ebp)
   37       %repeat
				jmp	.L37
		.L36:
		.L58:
   38    %finish
   39    %if Sym = '@' %start
				movl	-1068(%ebp), %eax
				cmpl	$64, %eax
				jne	.L61
				leal	8(%ebp), %eax
				movl	%eax, -1092(%ebp)
		.LBB34:
		.LBB35:
		.LBB36:
				movl	-1092(%ebp), %eax
		.LBE36:
		.LBE35:
				nop
		.L43:
   40       Sym = S To I (Sub String (Input, Pos + 1, Length (Input)))
				movzbl	(%eax), %eax
				movzbl	%al, %eax
				movl	-1060(%ebp), %edx
				addl	$1, %edx
				leal	8(%ebp), %edi
				movl	%edi, -1104(%ebp)
				movl	%edx, -1100(%ebp)
				movl	%eax, -1096(%ebp)
		.LBB37:
		.LBB38:
				leal	-284(%ebp), %eax
				pushl	-1096(%ebp)
				pushl	-1100(%ebp)
				pushl	-1104(%ebp)
				pushl	%eax
				call	_imp_substring@PLT
				addl	$12, %esp
		.LBE38:
		.LBE37:
				leal	-284(%ebp), %edx
				leal	-284(%ebp), %eax
				movl	%edx, %esi
				movl	$64, %edx
				movl	%eax, %edi
				movl	%edx, %ecx
				rep movsl
		.LBE34:
		.LBB39:
		.LBB40:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-284(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_stoi@PLT
				addl	$256, %esp
		.LBE40:
		.LBE39:
				movl	%eax, -1068(%ebp)
   41       Value = Value * 10.0\Sym
				movl	-1068(%ebp), %eax
				movl	%eax, -1136(%ebp)
				fildl	-1136(%ebp)
				leal	-8(%esp), %esp
				fstpl	(%esp)
				fldl	.LC4@GOTOFF(%ebx)
				leal	-8(%esp), %esp
				fstpl	(%esp)
				call	_imp_REXP
				addl	$16, %esp
				fldl	-1088(%ebp)
				fmulp	%st, %st(1)
				fstpl	-1088(%ebp)
				jmp	.L43
		.L61:
   42    %finish
   43    Value = -Value %if Sign # 0
				cmpl	$0, -1128(%ebp)
				je	.L62
				fldl	-1088(%ebp)
				fchs
				fstpl	-1088(%ebp)
				jmp	.L48
		.L62:
				nop
		.L48:
   44    %result = Value
				fldl	-1088(%ebp)
				fstps	-1132(%ebp)
				flds	-1132(%ebp)
   45 %end {S To R}
				movl	-28(%ebp), %eax
				xorl	%gs:20, %eax
				je	.L50
				fstp	%st(0)
				call	__stack_chk_fail_local
		.L50:
				leal	-12(%ebp), %esp
				popl	%ebx
				popl	%esi
				popl	%edi
				popl	%ebp
				ret
		.LFE189:
				.section	.rodata
				.align 8
		.LC1:
				.long	0
				.long	1073741824
				.align 8
		.LC4:
				.long	0
				.long	1076101120
				.section	.text.__x86.get_pc_thunk.ax,"axG",@progbits,__x86.get_pc_thunk.ax,comdat
				.globl	__x86.get_pc_thunk.ax
				.hidden	__x86.get_pc_thunk.ax
		__x86.get_pc_thunk.ax:
		.LFB191:
				movl	(%esp), %eax
				ret
		.LFE191:
				.section	.text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
				.globl	__x86.get_pc_thunk.bx
				.hidden	__x86.get_pc_thunk.bx
		__x86.get_pc_thunk.bx:
		.LFB192:
				movl	(%esp), %ebx
				ret
		.LFE192:
		.Letext0:
   46
   47 %endoffile
   41 Statements compiled
