         Edinburgh IMP77 Compiler - Version 8.4
    1 %external %real %function S To R (%string (255) Input)
				NO_APP
		.Ltext0:
				.align	2
		NEXT.5991:
		.LFB186:
		 		link.w %fp,#-1296
		 		fmovem #12,-(%sp)
		 		movem.l #15408,-(%sp)
		 		move.l %fp,%d0
		 		addq.l #8,%d0
		 		move.l %d0,-4(%fp)
		 		move.l %d0,-12(%fp)
		.LVL0:
    2   %integer Sign = 0,
    3            Sym,
		 		clr.l %d2
		.LVL1:
		.L6:
    4            Pos = 1
    5   %long %real Value,
    6               Exp
		 		moveq #1,%d0
		 		move.l %d0,-8(%fp)
    7
    8    %routine Next
		 		link.w %fp,#0
    9       Pos = Pos + 1
		 		move.l 8(%a0),%d0
		 		addq.l #1,%d0
		 		move.l %d0,8(%a0)
   10       %if Pos > Length (Input) %start
		 		move.l 4(%a0),%a1
		 		clr.l %d1
		 		move.b (%a1),%d1
		 		cmp.l %d1,%d0
		 		jgt .L4
		.L2:
   11          Sym = 0
		 		clr.l (%a0)
   12       %else
		 		jra .L1
		.LFE186:
				.section	.rodata.str1.1,"aMS",@progbits,1
		.LC1:
		 		.string	""
				.section	.rodata
		.LC0:
		 		.byte	20
		 		.string	"test-new/test153.imp"
		 		.zero	234
				.align	2
				.globl	STOR
		STOR:
		.LFB185:
   13          Sym = Char No (Input, Pos)
		 		move.b (%a1,%d0.l),%d0
		 		and.l #255,%d0
		 		move.l %d0,(%a0)
		.L3:
		.L1:
   14       %finish
   15    %end
   16
		 		unlk %fp
		 		rts
		.L4:
   17    Sym = Char No (Input, Pos)
		 		clr.l %d0
		 		move.b 9(%fp),%d0
		 		move.l %d0,-16(%fp)
   18    %if Sym = '-' %start
		 		moveq #45,%d1
		 		cmp.l %d0,%d1
		 		jeq .L29
   19       Sign = 1
		 		moveq #1,%d2
		 		jra .L6
		.LVL16:
		.L30:
		.L9:
   20       Next
		 		lea (-16,%fp),%a0
		 		jsr NEXT.5991
		.LVL15:
   21    %finish
   22    Value = 0
		 		fmovecr #0xf,%fp2
		.LVL25:
		.L7:
   23    %if Sym # '.' %start
		 		move.l -16(%fp),%a0
		 		moveq #46,%d0
		 		cmp.l %a0,%d0
		 		jeq .L25
		.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')
		 		fmovecr #0x33,%fp0
		 		fmul.x %fp0,%fp2
		.LVL6:
		 		moveq #-48,%d0
		 		add.l -16(%fp),%d0
		 		fadd.l %d0,%fp2
		.LVL7:
   27          Next
		 		lea (-48,%a0),%a0
		.LVL3:
		 		moveq #9,%d1
		 		cmp.l %a0,%d1
		 		jcs .L30
		.LVL4:
		.L8:
		.LBE21:
		 		lea NEXT.5991,%a2
		.LVL5:
		.L13:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL8:
		.LBB22:
   28       %repeat %until %not '0' <= Sym <= '9'
   29    %finish
   30    %if Sym = '.' %start
		 		moveq #46,%d1
		 		cmp.l %a0,%d1
		 		jeq .L7
		.L16:
		.L19:
		.LVL10:
		.L20:
   31       Exp = 10.0
		 		move.l -16(%fp),%a0
		.LVL9:
		 		lea (-48,%a0),%a1
		 		moveq #9,%d0
		 		cmp.l %a1,%d0
		 		jcc .L13
		.L14:
		.L15:
		.LBE22:
   32       %cycle
		 		fmovecr #0xf,%fp2
		 		pea .LC1
		 		lea (-784,%fp),%a1
		 		jsr _imp_c2istr
		.LVL17:
		 		move.l _imp_current_line,%a2
		 		addq.l #4,%sp
		 		tst.l %a2
		 		jne .L10
		 		move.w #32,%a2
		.L10:
		 		move.l _imp_current_file,%d0
		 		jeq .L11
		 		move.l %d0,-(%sp)
		 		lea (-528,%fp),%a1
		 		jsr _imp_c2istr
		.LVL18:
		 		addq.l #4,%sp
		.L12:
		 		move.l -8(%fp),-(%sp)
		 		pea 5.w
		 		pea 6.w
		 		lea (-256,%sp),%sp
		 		move.l %sp,%d0
		 		move.l #256,%d3
		 		move.l %d3,-(%sp)
		 		pea -784(%fp)
		 		move.l %d0,-(%sp)
		 		lea memcpy,%a3
		 		jsr (%a3)
		.LVL19:
		 		lea (12,%sp),%sp
		 		move.l %a2,-(%sp)
		 		lea (-256,%sp),%sp
		 		move.l %sp,%d0
		 		move.l %d3,-(%sp)
		 		pea -528(%fp)
		 		move.l %d0,-(%sp)
		 		jsr (%a3)
		.LVL20:
		 		lea (12,%sp),%sp
		 		jsr _signal_event
		.LVL21:
		 		lea (528,%sp),%sp
		 		jra .L8
		.L11:
		.LBB23:
		 		move.l %fp,%d5
		 		add.l #-272,%d5
		 		move.l #256,%d3
		 		move.l %d3,-(%sp)
		 		pea .LC0
		 		move.l %d5,-(%sp)
		 		lea memcpy,%a3
		 		jsr (%a3)
		.LVL22:
		 		move.l %fp,%d4
		 		add.l #-1296,%d4
		 		move.l %d3,-(%sp)
		 		move.l %d5,-(%sp)
		 		move.l %d4,-(%sp)
		 		jsr (%a3)
		.LVL23:
		.LBE23:
		 		move.l %d3,-(%sp)
		 		move.l %d4,-(%sp)
		 		pea -528(%fp)
		 		jsr (%a3)
		.LVL24:
		 		lea (36,%sp),%sp
		 		jra .L12
		.L25:
		 		fmovecr #0x33,%fp3
   33          Next
		 		lea NEXT.5991,%a2
		.L18:
		.LVL26:
		 		lea (-16,%fp),%a0
		 		jsr (%a2)
		.LVL27:
		.LBB24:
   34          %exit %unless '0' <= Sym <= '9'
   35          Value = Value + (Sym - '0')/Exp
		 		move.l %a1,%d1
		 		fmove.l %d1,%fp0
		 		fdiv.x %fp3,%fp0
		 		fadd.x %fp0,%fp2
		.LVL29:
   36          Exp = Exp * 10.0
		 		fmovecr #0x33,%fp0
		 		fmul.x %fp0,%fp3
		.LVL30:
   37       %repeat
		 		move.l -16(%fp),%a0
		.LVL28:
		 		lea (-48,%a0),%a1
		 		moveq #9,%d0
		 		cmp.l %a1,%d0
		 		jcs .L20
		.L17:
		.LBE24:
		 		jra .L18
		.LVL31:
		.L31:
		.LBB25:
   38    %finish
   39    %if Sym = '@' %start
		 		moveq #64,%d0
		 		cmp.l -16(%fp),%d0
		 		jeq .L31
		.L21:
   40       Sym = S To I (Sub String (Input, Pos + 1, Length (Input)))
		 		move.l %d0,-16(%fp)
   41       Value = Value * 10.0\Sym
		 		fmove.l %d0,%fp0
		.LVL38:
		.LBB30:
		.LBB31:
		 		lea (280,%sp),%sp
		 		fcmp.d #0x4000000000000000,%fp0
		 		fjne .L32
		 		fmovecr #0x34,%fp0
		.LVL39:
		.L22:
		.LBE31:
		.LBE30:
		 		fmul.x %fp0,%fp2
		.LVL40:
		 		jra .L21
		.LVL41:
		.L32:
		.LBB33:
		.LBB32:
		 		fmove.d %fp0,-(%sp)
		 		clr.l -(%sp)
		 		move.l #1076101120,-(%sp)
		 		jsr pow
		.LVL42:
		 		lea (16,%sp),%sp
		 		jra .L22
		.LBE32:
		.LBE33:
		.LFE185:
		.Letext0:
   42    %finish
		 		clr.l %d0
		 		move.b 8(%fp),%d0
		.LBB26:
		.LBB27:
		 		move.l %d0,-(%sp)
		 		move.l -8(%fp),%d1
		 		addq.l #1,%d1
		.LVL32:
		 		move.l %d1,-(%sp)
		 		pea 8(%fp)
		.LVL33:
		 		lea (-1040,%fp),%a2
		 		move.l %a2,%a1
		 		jsr _imp_substring
		.LVL34:
		 		move.l %fp,%d3
		 		add.l #-272,%d3
		 		move.w #256,%a3
		 		move.l %a3,-(%sp)
		 		move.l %a2,-(%sp)
		 		move.l %d3,-(%sp)
		 		lea memcpy,%a2
		 		jsr (%a2)
		.LVL35:
		.LBE27:
		.LBE26:
		.LBE25:
		.LBB28:
		.LBB29:
		 		lea (-256,%sp),%sp
		 		move.l %sp,%d0
		 		move.l %a3,-(%sp)
		 		move.l %d3,-(%sp)
		 		move.l %d0,-(%sp)
		 		jsr (%a2)
		.LVL36:
		 		lea (12,%sp),%sp
		 		jsr _imp_stoi
		.LVL37:
		.LBE29:
		.LBE28:
   43    Value = -Value %if Sign # 0
		 		tst.l %d2
		 		jeq .L23
   44    %result = Value
		 		fneg.x %fp2,%fp2
		.LVL11:
		.L23:
   45 %end {S To R}
		 		fmove.s %fp2,%d0
		 		fmove.s %d0,%fp0
		 		movem.l -1344(%fp),#3132
		.LVL12:
		 		fmovem -1320(%fp),#48
		.LVL13:
		 		unlk %fp
		 		rts
		.LVL14:
		.L29:
   46
   47 %endoffile
   41 Statements compiled
