Sophie

Sophie

distrib > Mageia > 6 > armv5tl > media > core-release > by-pkgid > 30819c093f498f9dfa6444d2407d0521 > files > 5384

iraf-2.16-23.mga6.armv5tl.rpm

# f77 source programs and corresponding assembler code generated with 
# "f77 -S -O -f68881" that cause run-time failure, where the corresponding
# unoptimized code does not.
#===============================================================================
# fprfmt.f:
      integer function fprfmt (ival)
      integer ival
      logical ivalad
      integer ctoi
      integer stridx
      integer*2 ch
      integer*2 chrlwr
      integer fd
      integer ip
      integer width
      integer decpl
      integer col
      integer leftjy
      integer radix
      integer fmtste
      integer ofilee
      integer formar
      integer*2 fillcr
      integer*2 format(161 +1)
      integer*2 obuf(1024+1)
      integer sw0001
      common /fmtcom/ fd,ip,width,decpl,col,leftjy,radix,fmtste, ofilee,
     *formar,fillcr,format,obuf
      integer*2 st0001(17)
      integer*2 st0002(35)
      integer*2 st0003(1)
      save
      integer iyy
      data (st0001(iyy),iyy= 1, 8) / 98, 99,100,101,102,103,104,109/
      data (st0001(iyy),iyy= 9,16) /111,114,115,116,117,119,120,122/
      data (st0001(iyy),iyy=17,17) / 0/
      data (st0002(iyy),iyy= 1, 8) / 87, 97,114,110,105,110,103, 58/
      data (st0002(iyy),iyy= 9,16) / 32, 85,110,107,110,111,119,110/
      data (st0002(iyy),iyy=17,24) / 32,102,111,114,109, 97,116, 32/
      data (st0002(iyy),iyy=25,32) /116,121,112,101, 32, 99,104, 97/
      data (st0002(iyy),iyy=33,35) /114, 10, 0/
      data st0003 / 0/
         sw0001=(fmtste)
         goto 110
120      continue
            ivalad = .false.
         goto 111
130      continue
            goto 2
140      continue
            goto 3
150      continue
            goto 4
160      continue
            goto 5
170      continue
            goto 6
180      continue
            goto 7
110      continue
            if (sw0001.lt.1.or.sw0001.gt.7) goto 111
            goto (120,130,140,150,160,170,180),sw0001
111      continue
         if (.not.(format(ip) .eq. 0 .or. format(ip) .ne. 37 )) goto 190
            width = (-999)
            decpl = (-999)
            formar = (-999)
            fillcr = 32
            leftjy = 0
            fmtste = 1
            fprfmt = (1)
            goto 100
190      continue
            ip = ip + 1
191      continue
         if (.not.(format(ip) .eq. 42 )) goto 200
            ip = ip + 1
            if (.not.(ivalad)) goto 210
               fmtste = 2
               fprfmt = (0 )
               goto 100
210         continue
2           ivalad = .true.
            if (.not.(ival .lt. 0)) goto 220
               leftjy = 1
               goto 221
220         continue
               leftjy = 0
221         continue
            fillcr = 32
            width = abs (ival)
            goto 201
200      continue
            if (.not.(format(ip) .eq. 45)) goto 230
               leftjy = 1
               ip = ip + 1
               goto 231
230         continue
               leftjy = 0
231         continue
            fillcr = 32
            if (.not.(format(ip) .eq. 48)) goto 240
               if (.not.((format(ip+1).ge.48.and.format(ip+1).le.57) .or
     *         . format(ip+1) .eq. 42 )) goto 250
                  fillcr = 48
                  ip = ip + 1
                  goto 251
250            continue
                  fillcr = 32
251            continue
240         continue
            if (.not.(format(ip) .eq. 42 )) goto 260
               ip = ip + 1
               if (.not.(ivalad)) goto 270
                  fmtste = 3
                  fprfmt = (0 )
                  goto 100
270            continue
3              ivalad = .true.
               if (.not.(ival .lt. 0)) goto 280
                  leftjy = 1
                  goto 281
280            continue
                  leftjy = 0
281            continue
               width = abs (ival)
               goto 261
260         continue
            if (.not.(ctoi (format, ip, width) .le. 0)) goto 290
               width = (-999)
290         continue
261         continue
201      continue
         if (.not.(width .eq. 0)) goto 300
            width = (-999)
300      continue
         if (.not.(format(ip) .eq. 46)) goto 310
            ip = ip + 1
            if (.not.(format(ip) .eq. 42 )) goto 320
               ip = ip + 1
               if (.not.(ivalad)) goto 330
                  fmtste = 4
                  fprfmt = (0 )
                  goto 100
330            continue
4              ivalad = .true.
               decpl = ival
               goto 321
320         continue
            if (.not.(ctoi (format, ip, decpl) .le. 0)) goto 340
               decpl = (-999)
340         continue
321         continue
            goto 311
310      continue
            decpl = (-999)
311      continue
         if (.not.(format(ip) .eq. 42 )) goto 350
            ip = ip + 1
            if (.not.(ivalad)) goto 360
               fmtste = 5
               fprfmt = (0 )
               goto 100
360         continue
5           ivalad = .true.
            formar = ival
            goto 351
350      continue
            formar = format(ip)
            ip = ip + 1
351      continue
         if (.not.((formar.ge.65.and.formar.le.90))) goto 370
            formar = (formar+97-65)
370      continue
         ch = formar
         if (.not.(stridx (ch, st0001) .le. 0)) goto 380
            call putlie (5, st0002)
            call fmterr (st0003, format, ip-1)
            formar = (-999)
            goto 381
380      continue
         if (.not.(formar .eq. 114 )) goto 390
            ch = chrlwr (format(ip))
            ip = ip + 1
            if (.not.(ch .eq. 42 )) goto 400
               if (.not.(ivalad)) goto 410
                  fmtste = 6
                  fprfmt = (0 )
                  goto 100
410            continue
6              ivalad = .true.
               radix = ival
               goto 401
400         continue
            if (.not.((ch.ge.48.and.ch.le.57))) goto 420
               radix = (ch-48)
               goto 421
420         continue
            if (.not.((ch.ge.97.and.ch.le.122))) goto 430
               radix = ch - 97 + 10
               goto 431
430         continue
               radix = 10
               ip = ip - 1
431         continue
421         continue
401         continue
            goto 391
390      continue
         if (.not.(formar .eq. 119 .or. formar .eq. 116 )) goto 440
            ivalad = .false.
440      continue
391      continue
381      continue
         if (.not.(ivalad)) goto 450
            fmtste = 7
            fprfmt = (0 )
            goto 100
450      continue
7        ivalad = .true.
         fmtste = 1
         fprfmt = (1)
         goto 100
100      return
      end
c     leftjy  left_justify
c     fmterr  fmt_err
c     fmtste  fmt_state
c     ivalad  ival_already_used
c     fillcr  fill_char
c     putlie  putline
c     ofilee  ofile_type
c     formar  format_char
#-------------------------------------------------------------------------------
# fprfmt.s:
	.data
	.data1
	.bss
	.data
	.globl	_fprfmt_
	.comm	_fmtcom_,2416
	.globl	_ctoi_
	.globl	_stridx_
	.globl	_putlie_
	.globl	_fmterr_
	.globl	_chrlwr_
	.align 4
	.text
|#PROC# 07

	.bss
	.align	4
VAR_SEG1:
	.skip	10
	.data1
	.align	2
L1D186:
	.long	5
	LF1	=	228
	LS1	=	8432
	LFF1	=	208
	LSS1	=	0
	LP1	=	20
	.text
	.globl	_fprfmt_
_fprfmt_:
	link	a6,#-228
	moveml	#8432,sp@
	movl	a6@(8),a5
	movl	_fmtcom_+4,d4
	movl	VAR_SEG1+4,d5
	cmpl	#1,_fmtcom_+28
	jge	L77020
	jra	L77005
L77007:
	moveq	#1,d5
	movl	a5@,d7
	jge	L77043
	movl	d5,_fmtcom_+20
	jra	L77044
L77009:
	moveq	#1,d5
	movl	a5@,d7
	jge	L77078
	movl	d5,_fmtcom_+20
	jra	L77079
L77011:
	moveq	#1,d5
	movl	a5@,_fmtcom_+12
	jra	L77109
L77013:
	moveq	#1,d5
	movl	a5@,d7
	jra	L77118
L77015:
	moveq	#1,d5
	movl	a5@,_fmtcom_+24
	jra	LY00019
L77017:
	moveq	#1,d5
	jra	LY00006
L77018:
	movl	_fmtcom_+28,d0
	moveq	#8,d7
	cmpl	d7,d0
	bcc	L77005
	addw	d0,d0
	movw	pc@(6,d0:w),d0
	jmp	pc@(2,d0:w)
L1I1:
	.word	L77023-L1I1
	.word	L77004-L1I1
	.word	L77007-L1I1
	.word	L77009-L1I1
	.word	L77011-L1I1
	.word	L77013-L1I1
	.word	L77015-L1I1
	.word	L77017-L1I1
	jra	L77005
L77020:
	cmpl	#7,_fmtcom_+28
	jle	L77018
	jra	L77005
L77023:
	jra	L77005
L77030:
	addql	#1,d4
	movl	d4,d7
	lea	_fmtcom_+40,a0
	movw	a0@(0,d7:l:2),d0
	extl	d0
	moveq	#42,d6
	cmpl	d6,d0
	jne	L77035
	addql	#1,d7
	movl	d7,d4
	tstl	d5
	jeq	L77007
	moveq	#2,d6
	jra	LY00016
L77024:
	movl	#-999,_fmtcom_+8
	movl	#-999,_fmtcom_+12
	movl	#-999,_fmtcom_+36
	movw	#32,_fmtcom_+40
	clrl	_fmtcom_+20
LY00006:
	moveq	#1,d6
	moveq	#1,d7
	jra	LY00010
L77129:
	movl	d4,_fmtcom_+4
	asll	#1,d4
	addl	#_fmtcom_+40,d4
	movl	d4,sp@-
	jbsr	_chrlwr_
	addqw	#4,sp
	movl	_fmtcom_+4,d4
	addql	#1,d4
	extl	d0
	movl	d0,d7
	moveq	#42,d6
	cmpl	d6,d7
	jne	L77136
	tstl	d5
	jeq	L77015
	moveq	#6,d6
	jra	LY00016
L77136:
	moveq	#48,d6
	cmpl	d6,d7
	jlt	L77146
	moveq	#57,d6
	cmpl	d6,d7
	jgt	L77146
	moveq	#-48,d6
	addl	d6,d7
	movl	d7,_fmtcom_+24
	jra	LY00019
L77146:
	moveq	#97,d6
	cmpl	d6,d7
	jlt	L77152
	moveq	#122,d6
	cmpl	d6,d7
	jgt	L77152
	moveq	#-87,d6
	addl	d6,d7
	movl	d7,_fmtcom_+24
	jra	LY00019
L77152:
	moveq	#10,d7
	movl	d7,_fmtcom_+24
	moveq	#-1,d7
	addl	d7,d4
	jra	LY00019
LY00020:
	movl	d4,_fmtcom_+4
	pea	v.17
	pea	L1D186
	jbsr	_putlie_
	addqw	#8,sp
	movl	_fmtcom_+4,d0
	moveq	#-1,d7
	addl	d7,d0
	movl	d0,a6@(-20)
	pea	a6@(-20)
	pea	_fmtcom_+42
	pea	v.18
	jbsr	_fmterr_
	lea	sp@(12),sp
	movl	_fmtcom_+4,d4
	movl	#-999,_fmtcom_+36
LY00019:
	tstl	d5
	jeq	L77017
	moveq	#7,d6
	jra	LY00016
L77110:
	addql	#1,d4
	tstl	d5
	jeq	L77013
	moveq	#5,d6
	jra	LY00016
L77096:
	addql	#1,d7
	movl	d7,d4
	tstl	d5
	jeq	L77011
	moveq	#4,d6
LY00016:
	moveq	#0,d7
LY00010:
	movl	d7,d0
	movl	d6,_fmtcom_+28
	movl	d4,_fmtcom_+4
	movl	d5,VAR_SEG1+4
	moveml	a6@(-228),#8432
	unlk	a6
	rts
L77004:
	moveq	#0,d5
L77005:
	lea	_fmtcom_+40,a0
	movw	a0@(0,d4:l:2),d0
	extl	d0
	movl	d0,d7
	jeq	L77024
	moveq	#37,d6
	cmpl	d6,d7
	jeq	L77030
	jra	L77024
L77035:
	moveq	#45,d4
	cmpl	d4,d6
	jne	L77052
	moveq	#1,d6
	movl	d6,_fmtcom_+20
	addql	#1,d7
	jra	L77053
L77043:
	clrl	_fmtcom_+20
L77044:
	movw	#32,_fmtcom_+40
	tstl	d7
	jlt	L77046
	jra	LY00023
L77088:
	movl	#-999,_fmtcom_+8
	jra	L77091
L77052:
	clrl	_fmtcom_+20
L77053:
	movw	#32,_fmtcom_+40
	movl	d7,d6
	asll	#1,d6
	lea	_fmtcom_+40,a0
	movw	a0@(0,d6:l),d0
	extl	d0
	moveq	#48,d4
	cmpl	d4,d0
	jne	L77057
	lea	_fmtcom_+42,a0
	movw	a0@(0,d6:l),d0
	extl	d0
	movl	d0,d4
	moveq	#48,d6
	cmpl	d6,d4
	jlt	L77061
	moveq	#57,d6
	cmpl	d6,d4
	jgt	L77061
	jra	L77058
L77057:
	lea	_fmtcom_+40,a0
	movw	a0@(0,d7:l:2),d0
	extl	d0
	moveq	#42,d6
	cmpl	d6,d0
	jne	L77070
	addql	#1,d7
	movl	d7,d4
	tstl	d5
	jeq	L77009
	moveq	#3,d6
	jra	LY00016
L77065:
	movw	#32,_fmtcom_+40
	jra	L77057
L77058:
	movw	#48,_fmtcom_+40
	addql	#1,d7
	jra	L77057
L77061:
	moveq	#42,d6
	cmpl	d6,d4
	jne	L77065
	jra	L77058
L77070:
	movl	d7,_fmtcom_+4
	movl	d7,_fmtcom_+4
	pea	_fmtcom_+8
	pea	_fmtcom_+4
	pea	_fmtcom_+42
	jbsr	_ctoi_
	lea	sp@(12),sp
	moveq	#0,d1
	tstl	d0
	sle	d1
	negb	d1
	movl	d1,a6@(-52)
	movl	_fmtcom_+4,d4
	tstl	d1
	jeq	LY00002
	movl	#-999,_fmtcom_+8
	jra	LY00002
L77078:
	clrl	_fmtcom_+20
L77079:
	tstl	d7
	jge	LY00023
L77046:
	negl	d7
LY00023:
	movl	d7,_fmtcom_+8
LY00002:
	tstl	_fmtcom_+8
	jeq	L77088
L77091:
	lea	_fmtcom_+40,a0
	movw	a0@(0,d4:l:2),d0
	extl	d0
	moveq	#46,d7
	cmpl	d7,d0
	jne	L77105
	addql	#1,d4
	movl	d4,d7
	lea	_fmtcom_+40,a0
	movw	a0@(0,d7:l:2),d0
	extl	d0
	moveq	#42,d6
	cmpl	d6,d0
	jeq	L77096
	movl	d7,_fmtcom_+4
	movl	d7,_fmtcom_+4
	pea	_fmtcom_+12
	pea	_fmtcom_+4
	pea	_fmtcom_+42
	jbsr	_ctoi_
	lea	sp@(12),sp
	moveq	#0,d1
	tstl	d0
	sle	d1
	negb	d1
	movl	d1,a6@(-48)
	movl	_fmtcom_+4,d4
	tstl	d1
	jeq	L77109
L77105:
	movl	#-999,_fmtcom_+12
L77109:
	lea	_fmtcom_+40,a0
	movw	a0@(0,d4:l:2),d0
	extl	d0
	movl	d0,d6
	moveq	#42,d7
	cmpl	d7,d6
	jeq	L77110
	movl	d6,d7
	addql	#1,d4
L77118:
	moveq	#65,d6
	cmpl	d6,d7
	jlt	L77123
	moveq	#90,d6
	cmpl	d6,d7
	jgt	L77123
	moveq	#32,d6
	addl	d6,d7
L77123:
	movw	d7,VAR_SEG1+8
	movl	d7,_fmtcom_+36
	movl	d4,_fmtcom_+4
	pea	v.16
	pea	VAR_SEG1+8
	jbsr	_stridx_
	addqw	#8,sp
	moveq	#0,d1
	tstl	d0
	sle	d1
	negb	d1
	movl	d1,a6@(-44)
	movl	_fmtcom_+4,d4
	tstl	d1
	jne	LY00020
	cmpl	#114,_fmtcom_+36
	jeq	L77129
	cmpl	#119,_fmtcom_+36
	jeq	L77017
	cmpl	#116,_fmtcom_+36
	jne	LY00019
	jra	L77017
	.globl	f68881_used
	.data1
	.align 4
v.16:
	.long	0x620063,0x640065
	.long	0x660067,0x68006d
	.long	0x6f0072,0x730074
	.long	0x750077,0x78007a
	.word	0x0
	.align 4
v.17:
	.long	0x570061,0x72006e
	.long	0x69006e,0x67003a
	.long	0x200055,0x6e006b
	.long	0x6e006f,0x77006e
	.long	0x200066,0x6f0072
	.long	0x6d0061,0x740020
	.long	0x740079,0x700065
	.long	0x200063,0x680061
	.long	0x72000a
	.word	0x0
	.align 4
v.18:
	.skip	2
#===============================================================================
#     ==========================
#     FORTRAN for get_next_image
#     ==========================
      integer function getnee (infile, recors, nrecs, image, szname)
      integer infile
      integer nrecs
      integer szname
      integer recors(3,100)
      integer*2 image(szname+1)
      integer nextnm
      integer stat
      logical flag1
      logical flag2
      logical flag3
      integer*2 image0(63 +1)
      integer clgfil
      integer getney
      integer xstrln
      common /gnicom/ flag1, flag2
      integer*2 st0001(6)
      save
      data st0001 / 46, 37, 48, 52,100, 0/
      data flag3/.true./
         if (.not.(flag1 .or. flag3)) goto 110
            nextnm = -1
            call rstgey ()
110      continue
         if (.not.(nrecs .eq. 2147483647)) goto 120
            stat = clgfil (infile, image, szname)	#<--- Never executed
            goto 121
120      continue
            if (.not.(flag1)) goto 130
               stat = clgfil (infile, image0, szname)
               if (.not.(stat .eq. -2)) goto 140
                  getnee = (stat)
                  goto 100
140            continue
130         continue
            stat = getney (recors, nextnm)
            if (.not.(stat .ne. -2)) goto 150
               call xstrcy(image0, image, szname)
               call sprinf (image(xstrln(image)+1), szname, st0001)
               call pargi (nextnm)
150         continue
121      continue
         flag1 = .false.
         flag3 = .false.
         getnee = (stat)
         goto 100
100      return
      end

#====================================================================
#Optimized assembly
#====================================================================

_getnee_+4:		moveml	d4/d5/d6/d7,sp@
			tstl	_gnicom_
			beqs	_getnee_+0x30
			bras	_getnee_+0x20
_getnee_+0x12:		movl	d7,d0
			moveml	a6@(-0x50),d4/d5/d6/d7
			unlk	a6
			rts
			bras	_getnee_+0x38
			moveq	#-1,d6
			movl	d6,ARR_SEG5+0x294
			jsr	_rstgey_
			bras	_getnee_+0x38
			tstl	v.150+0x90
			bnes	_getnee_+0x20
			movl	a6@(8),d4
			movl	a6@(0x18),d5
			movl	a6@(0x14),d6
			movl	a6@(0x10),a0
			cmpl	#0x7fffffff,a0@		<--------
			beq	_getnee_+0xd4		<-------- Causes return
			tstl	_gnicom_
			beqs	_getnee_+0x76
			movl	d5,sp@-
			pea	ARR_SEG5+0x298
			movl	d4,sp@-
			bsrl	_clgfil_
			lea	sp@(0xc),a7
			movl	d0,d7
			moveq	#-2,d4
			cmpl	d4,d7
			beqs	_getnee_+0x12
			pea	ARR_SEG5+0x294
			movl	a6@(0xc),sp@-
			jsr	_getney_
			addqw	#8,sp
			movl	d0,d7
			moveq	#-2,d4
			cmpl	d4,d7
			beqs	_getnee_+0xd4
			movl	d5,sp@-
			movl	d6,sp@-
			pea	ARR_SEG5+0x298
			bsrl	_xstrcy_
			lea	sp@(0xc),a7
			pea	v.150+0x84
			movl	d5,sp@-
			movl	d6,sp@-
			bsrl	_xstrln_
			addqw	#4,sp
			asll	#1,d0
			addl	d6,d0
			movl	d0,sp@-
			bsrl	_sprinf_
			lea	sp@(0xc),a7
			pea	ARR_SEG5+0x294
			bsrl	_pargi_
			addqw	#4,sp
_getnee_+0xd4:		clrl	_gnicom_
			clrl	v.150+0x90
			bra	_getnee_+0x12

_resete_:		linkw	a6,#0
			movl	#1,_gnicom_
			unlk	a6
			rts

_addspc_:		linkw	a6,#-0xec
			moveml	d3/d4/d5/d6/d7/a3/a4/a5,sp@
			fmovex	fp7,a6@(-0xcc)
			moveq	#0,d6
			movl	a6@(0x14),a0
			movl	a0@,a5
			tstl	a5
			bnes	_addspc_+0x8e
			moveq	#-1,d6
			bras	_addspc_+0x8e
			moveq	#1,d4
			movl	a4@,d7
			subl	d4,d7
			tstl	d7
			blt	_addspc_+0xb4


#===============================================================================
# grcwcs.f:
      subroutine grcscs (stream, sx, sy, wx, wy, wcs)
      integer stream
      real sx
      real sy
      real wx
      real wy
      integer wcs
      logical Memb(1)
      integer*2 Memc(1)
      integer*2 Mems(1)
      integer Memi(1)
      integer*4 Meml(1)
      real Memr(1)
      double precision Memd(1)
      complex Memx(1)
      equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
      common /Mem/ Memd
      integer w
      integer tr
      real mx
      real my
      real ct(2,4)
      integer grcses
      integer gtrint
      save
         tr = gtrint (stream)
         call grcscc (sx, sy, mx, my)
         if (.not.(memi(tr+16) .eq. 0)) goto 110
            wcs = grcses (tr, mx, my)
            goto 111
110      continue
            wcs = memi(tr+16)
111      continue
         w = ((tr)+154+(wcs)*11)
         call grcsen (w, ct)
         call grcnds (ct, mx, my, wx, wy)
100      return
      end
      subroutine grcsen (w, ct)
      logical Memb(1)
      integer*2 Memc(1)
      integer*2 Mems(1)
      integer Memi(1)
      integer*4 Meml(1)
      real Memr(1)
      double precision Memd(1)
      complex Memx(1)
      equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
      common /Mem/ Memd
      integer w
      real ct(2,4)
      real worign
      real scale
      real m1
      real m2
      real w1
      real w2
      integer transn
      integer ax
      real elogr
      save
         do 110 ax = 1, 2 
            if (.not.(ax .eq. 1)) goto 120
               transn = memi(w+8)
               w1 = memr(w)
               w2 = memr(w+1)
               m1 = memr(w+4)
               m2 = memr(w+5)
               goto 121
120         continue
               transn = memi(w+9)
               w1 = memr(w+2)
               w2 = memr(w+3)
               m1 = memr(w+6)
               m2 = memr(w+7)
121         continue
            if (.not.(transn .eq. 0 )) goto 130
               worign = w1
               scale = (m2 - m1) / (w2 - w1)
               goto 131
130         continue
            if (.not.(transn .eq. 1 .and. w1 .gt. 0 .and. w2 .gt. 0)) 
     *      goto 140
               worign = log10 (w1)
               scale = (m2 - m1) / (log10(w2) - worign)
               goto 141
140         continue
               worign = elogr (w1)
               scale = (m2 - m1) / (elogr(w2) - worign)
141         continue
131         continue
            ct(ax,1) = transn
            ct(ax,2) = scale
            ct(ax,3) = worign
            ct(ax,4) = m1
110      continue
111      continue
100      return
      end
      subroutine grcwcc (ct, wx, wy, mx, my)
      real wx
      real wy
      real mx
      real my
      real ct(2,4)
      real v
      integer transn
      integer ax
      real elogr
      save
         do 110 ax = 1, 2 
            transn = nint (ct(ax,1))
            if (.not.(ax .eq. 1)) goto 120
               v = wx
               goto 121
120         continue
               v = wy
121         continue
            if (.not.(transn .eq. 0 )) goto 130
               goto 131
130         continue
            if (.not.(transn .eq. 1)) goto 140
               v = log10 (v)
               goto 141
140         continue
               v = elogr (v)
141         continue
131         continue
            v = ((v - ct(ax,3)) * ct(ax,2)) + ct(ax,4)
            if (.not.(ax .eq. 1)) goto 150
               mx = v
               goto 151
150         continue
               my = v
151         continue
110      continue
111      continue
100      return
      end
      subroutine grcnds (ct, mx, my, wx, wy)
      real mx
      real my
      real wx
      real wy
      real ct(2,4)
      real v
      integer transn
      integer ax
      real aelogr
      save
         do 110 ax = 1, 2 
            transn = nint (ct(ax,1))
            if (.not.(ax .eq. 1)) goto 120
               v = mx
               goto 121
120         continue
               v = my
121         continue
            v = ((v - ct(ax,4)) / ct(ax,2)) + ct(ax,3)
            if (.not.(transn .eq. 0 )) goto 130
               goto 131
130         continue
            if (.not.(transn .eq. 1)) goto 140
               v = 10.0 ** v
               goto 141
140         continue
               v = aelogr (v)
141         continue
131         continue
            if (.not.(ax .eq. 1)) goto 150
               wx = v
               goto 151
150         continue
               wy = v
151         continue
110      continue
111      continue
100      return
      end
      integer function grcses (tr, mx, my)
      logical Memb(1)
      integer*2 Memc(1)
      integer*2 Mems(1)
      integer Memi(1)
      integer*4 Meml(1)
      real Memr(1)
      double precision Memd(1)
      complex Memx(1)
      equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
      common /Mem/ Memd
      integer tr
      real mx
      real my
      integer w
      integer wcs
      integer closes
      real tol
      real sx1
      real sx2
      real sy1
      real sy2
      real distae
      real olddie
      real xcen
      real ycen
      integer nin
      integer in(16 )
      save
         nin = 0
         closes = 1
         olddie = 1.0
         tol = (1.192e-7) * 10.0
         do 110 wcs = 1, 16 
            w = ((tr)+154+(wcs)*11)
            sx1 = memr(w+4)
            sx2 = memr(w+5)
            sy1 = memr(w+6)
            sy2 = memr(w+7)
            xcen = (sx1 + sx2) / 2.0
            ycen = (sy1 + sy2) / 2.0
            if (.not.(abs ((sx2-sx1) - 1.0) .lt. tol .and. abs ((sy2-sy1
     *      ) - 1.0) .lt. tol)) goto 120
               goto 110
120         continue
            distae = ((mx - xcen) ** 2) + ((my - ycen) ** 2)
            if (.not.(distae .le. olddie)) goto 130
               closes = wcs
               olddie = distae
130         continue
            if (.not.(mx .ge. sx1 .and. mx .le. sx2 .and. my .ge. sy1 .
     *      and. my .le. sy2)) goto 140
               nin = nin + 1
               in(nin) = wcs
140         continue
110      continue
111      continue
         if (.not.(nin .eq. 1)) goto 150
            grcses = (in(1))
            goto 100
150      continue
         grcses = (closes)
         goto 100
100      return
      end
c     gtrint  gtr_init
c     grcses  grc_selectwcs
c     grcscs  grc_scrtowcs
c     olddie  old_distance
c     grcsen  grc_settran
c     transn  transformation
c     distae  distance
c     grcscc  grc_scrtondc
c     closes  closest_wcs
c     grcnds  grc_ndctowcs
c     grcwcc  grc_wcstondc
c     worign  worigin
#-------------------------------------------------------------------------------
# grcwcs.s:
	.data
	.data1
	.bss
	.data
	.data1
	.bss
	.data
	.data1
	.bss
	.data
	.data1
	.bss
	.data
	.data1
	.bss
	.data
	.globl	_grcscs_
	.comm	_mem_,8
	.globl	_gtrint_
	.globl	_grcscc_
	.globl	_grcses_
	.globl	_grcsen_
	.globl	_grcnds_
	.globl	_elogr_
	.globl	_grcwcc_
	.globl	_i_nint
	.globl	_aelogr_
	.align 4
	.text
|#PROC# 07

	.bss
	.align	4
VAR_SEG1:
	.skip	16
	.bss
	.align	4
ARR_SEG1:
	.skip	32
	LF1	=	20
	LS1	=	128
	LFF1	=	16
	LSS1	=	0
	LP1	=	28
	.text
	.globl	_grcscs_
_grcscs_:
	link	a6,#-20
	movl	d7,sp@
	movl	a6@(8),sp@-
	jbsr	_gtrint_
	addqw	#4,sp
	movl	d0,VAR_SEG1+4
	pea	VAR_SEG1+12
	pea	VAR_SEG1+8
	movl	a6@(16),sp@-
	movl	a6@(12),sp@-
	jbsr	_grcscc_
	lea	sp@(16),sp
	movl	VAR_SEG1+4,d0
	lea	_mem_+60,a0
	movl	a0@(0,d0:l:4),d7
	jne	L77006
	pea	VAR_SEG1+12
	pea	VAR_SEG1+8
	pea	VAR_SEG1+4
	jbsr	_grcses_
	lea	sp@(12),sp
	movl	a6@(28),a0
	movl	d0,a0@
	jra	L77007
L77006:
	movl	a6@(28),a0
	movl	d7,a0@
L77007:
	movl	a6@(28),a0
	movl	a0@,d0
	movl	d0,d1
	addl	d1,d1
	addl	d1,d0
	asll	#2,d1
	addl	d1,d0
	movl	VAR_SEG1+4,d1
	addl	#154,d1
	addl	d1,d0
	movl	d0,VAR_SEG1
	pea	ARR_SEG1
	pea	VAR_SEG1
	jbsr	_grcsen_
	addqw	#8,sp
	movl	a6@(24),sp@-
	movl	a6@(20),sp@-
	pea	VAR_SEG1+12
	pea	VAR_SEG1+8
	pea	ARR_SEG1
	jbsr	_grcnds_
	lea	sp@(20),sp
	movl	a6@(-20),d7
	unlk	a6
	rts
|#PROC# 07

	.bss
	.align	4
VAR_SEG2:
	.skip	32
	.data1
	.align	2
L2D24:
	.long	0
	.data1
	.align	2
L2D22:
	.long	0
	LF2	=	432
	LS2	=	15612
	LFF2	=	392
	LSS2	=	63
	LP2	=	12
	.text
	.globl	_grcsen_
_grcsen_:
	link	a6,#-432
	moveml	#15612,sp@
	fmovem	#63,a6@(-392)
	moveq	#1,d7
	movl	d7,VAR_SEG2+20
	movl	a6@(12),d0
	moveq	#20,d7
	addl	d7,d0
	movl	d0,a6@(-4)
	movl	a6@(12),d0
	moveq	#12,d7
	addl	d7,d0
	movl	d0,a6@(-8)
	movl	a6@(12),d0
	addql	#4,d0
	movl	d0,a6@(-12)
	movl	a6@(12),d0
	moveq	#-4,d7
	addl	d7,d0
	movl	d0,a6@(-16)
	movl	a6@(8),a0
	movl	a0@,d7
	asll	#2,d7
	movl	#_mem_+16,d0
	addl	d7,d0
	movl	d0,a6@(-20)
	movl	#_mem_+12,d0
	addl	d7,d0
	movl	d0,a6@(-24)
	movl	#_mem_,d0
	addl	d7,d0
	movl	d0,a6@(-28)
	movl	#_mem_+-4,d0
	addl	d7,d0
	movl	d0,a6@(-32)
	movl	#_mem_+28,d0
	addl	d7,d0
	movl	d0,a6@(-36)
	movl	#_mem_+24,d0
	addl	d7,d0
	movl	d0,a6@(-40)
	movl	#_mem_+20,d2
	addl	d7,d2
	movl	#_mem_+8,d3
	addl	d7,d3
	movl	#_mem_+4,d4
	addl	d7,d4
	movl	#_mem_+32,d5
	addl	d7,d5
	movl	VAR_SEG2+20,d6
	asll	#2,d6
	movl	d6,a2
	addl	a6@(-4),a2
	movl	d6,a3
	addl	a6@(-16),a3
	movl	d6,a4
	addl	a6@(-12),a4
	movl	d6,d0
	addl	a6@(-8),d0
	movl	d0,a5
L77011:
	moveq	#4,d7
	cmpl	d7,d6
	jne	L77015
	movl	a6@(-36),a0
	movl	a0@,d7
	movl	a6@(-32),a0
	fmoves	a0@,fp3
	movl	a6@(-28),a0
	fmoves	a0@,fp2
	movl	a6@(-24),a0
	fmoves	a0@,fp7
	movl	a6@(-20),a0
	jra	LY00000
L77015:
	movl	d5,a0
	movl	a0@,d7
	movl	d4,a0
	fmoves	a0@,fp3
	movl	d3,a0
	fmoves	a0@,fp2
	movl	d2,a0
	fmoves	a0@,fp7
	movl	a6@(-40),a0
LY00000:
	fmoves	a0@,fp5
	tstl	d7
	jne	L77020
	fmovex	fp3,fp6
	fmovex	fp5,fp0
	fsubx	fp7,fp0
	fmovex	fp2,fp1
	fsubx	fp3,fp1
	jra	LY00001
L77020:
	cmpl	#1,d7
	jne	L77027
	fcmps	L2D24,fp3
	fjngt	L77027
	fcmps	L2D22,fp2
	fjngt	L77027
	flog10x	fp3,fp0
	fmovex	fp0,fp6
	fmovex	fp5,fp0
	fsubx	fp7,fp0
	flog10x	fp2,fp1
	fsubx	fp6,fp1
LY00001:
	fdivx	fp1,fp0
	fmovex	fp0,fp4
L77021:
	fmovel	d7,fp0
	fmoves	fp0,a3@+
	fmoves	fp4,a4@+
	fmoves	fp6,a5@+
	fmoves	fp7,a2@+
	addql	#4,d6
	moveq	#8,d7
	cmpl	d7,d6
	jle	L77011
	fmovem	a6@(-392),#63
	moveml	a6@(-432),#15612
	unlk	a6
	rts
L77027:
	fmoves	fp3,VAR_SEG2+12
	pea	VAR_SEG2+12
	jbsr	_elogr_
	addqw	#4,sp
	fmoves	d0,fp6
	fmoves	fp2,VAR_SEG2+16
	pea	VAR_SEG2+16
	jbsr	_elogr_
	addqw	#4,sp
	fmoves	d0,fp0
	fsubx	fp6,fp0
	fsubx	fp7,fp5
	fdivx	fp0,fp5
	fmovex	fp5,fp4
	jra	L77021
|#PROC# 07

	.bss
	.align	4
VAR_SEG3:
	.skip	12
	LF3	=	264
	LS3	=	15608
	LFF3	=	228
	LSS3	=	7
	LP3	=	12
	.text
	.globl	_grcwcc_
_grcwcc_:
	link	a6,#-264
	moveml	#15608,sp@
	fmovem	#7,a6@(-228)
	moveq	#1,d7
	movl	a6@(20),a2
	movl	a6@(24),d3
	movl	a6@(8),d6
	movl	d6,d0
	moveq	#20,d5
	addl	d5,d0
	movl	d0,a6@(-4)
	movl	d6,d0
	addql	#4,d0
	movl	d0,a6@(-8)
	movl	d6,d0
	moveq	#12,d5
	addl	d5,d0
	movl	d0,a6@(-12)
	movl	a6@(12),a0
	fmoves	a0@,fp5
	movl	a6@(16),a0
	fmoves	a0@,fp6
	moveq	#-4,d5
	addl	d5,d6
	movl	d6,a6@(-24)
	asll	#2,d7
	movl	d7,a3
	addl	a6@(-4),a3
	movl	d7,d4
	addl	d6,d4
	movl	d7,a4
	addl	d0,a4
	movl	d7,a5
	addl	a6@(-8),a5
L77034:
	movl	d4,sp@-
	jbsr	_i_nint
	addqw	#4,sp
	movl	d0,d6
	moveq	#0,d0
	moveq	#4,d5
	cmpl	d5,d7
	seq	d0
	negb	d0
	movl	d0,d5
	jeq	L77038
	fmovex	fp5,fp7
	jra	L77039
L77038:
	fmovex	fp6,fp7
L77039:
	tstl	d6
	jeq	LY00002
	cmpl	#1,d6
	jne	L77048
	flog10x	fp7,fp0
	fmovex	fp0,fp7
	jra	LY00002
L77050:
	fmoves	fp7,a2@
	jra	L85
L77048:
	fmoves	fp7,VAR_SEG3
	pea	VAR_SEG3
	jbsr	_elogr_
	addqw	#4,sp
	fmoves	d0,fp7
LY00002:
	fsubs	a4@,fp7
	fmuls	a5@,fp7
	fadds	a3@,fp7
	tstl	d5
	jne	L77050
	movl	d3,a0
	fmoves	fp7,a0@
L85:
	addql	#4,d7
	addqw	#4,a5
	addqw	#4,a4
	addql	#4,d4
	addqw	#4,a3
	moveq	#8,d6
	cmpl	d6,d7
	jle	L77034
	fmovem	a6@(-228),#7
	moveml	a6@(-264),#15608
	unlk	a6
	rts
|#PROC# 07

	.bss
	.align	4
VAR_SEG4:
	.skip	12
	LF4	=	264
	LS4	=	15608
	LFF4	=	228
	LSS4	=	7
	LP4	=	12
	.text
	.globl	_grcnds_
_grcnds_:
	link	a6,#-264
	moveml	#15608,sp@
	fmovem	#7,a6@(-228)
	moveq	#1,d7
	movl	a6@(20),a2
	movl	a6@(24),d3
	movl	a6@(8),d6
	movl	d6,d0
	moveq	#12,d5
	addl	d5,d0
	movl	d0,a6@(-4)
	movl	d6,d0
	addql	#4,d0
	movl	d0,a6@(-8)
	movl	d6,d0
	moveq	#20,d5
	addl	d5,d0
	movl	d0,a6@(-12)
	movl	a6@(12),a0
	fmoves	a0@,fp5
	movl	a6@(16),a0
	fmoves	a0@,fp6
	moveq	#-4,d5
	addl	d5,d6
	movl	d6,a6@(-24)
	asll	#2,d7
	movl	d7,a3
	addl	a6@(-4),a3
	movl	d7,d4
	addl	d6,d4
	movl	d7,a4
	addl	d0,a4
	movl	d7,a5
	addl	a6@(-8),a5
L77060:
	movl	d4,sp@-
	jbsr	_i_nint
	addqw	#4,sp
	movl	d0,d6
	moveq	#0,d0
	moveq	#4,d5
	cmpl	d5,d7
	seq	d0
	negb	d0
	movl	d0,d5
	jeq	L77064
	fmovex	fp5,fp7
	jra	L77065
L77064:
	fmovex	fp6,fp7
L77065:
	fsubs	a4@,fp7
	fdivs	a5@,fp7
	fadds	a3@,fp7
	tstl	d6
	jeq	LY00004
	cmpl	#1,d6
	jne	L77074
	ftentoxx	fp7,fp0
	fmovex	fp0,fp7
	jra	LY00004
L77076:
	fmoves	fp7,a2@
	jra	L121
L77074:
	fmoves	fp7,VAR_SEG4
	pea	VAR_SEG4
	jbsr	_aelogr_
	addqw	#4,sp
	fmoves	d0,fp7
LY00004:
	tstl	d5
	jne	L77076
	movl	d3,a0
	fmoves	fp7,a0@
L121:
	addql	#4,d7
	addqw	#4,a5
	addqw	#4,a4
	addql	#4,d4
	addqw	#4,a3
	moveq	#8,d6
	cmpl	d6,d7
	jle	L77060
	fmovem	a6@(-228),#7
	moveml	a6@(-264),#15608
	unlk	a6
	rts
|#PROC# 07

	.bss
	.align	4
VAR_SEG5:
	.skip	52
	.bss
	.align	4
ARR_SEG5:
	.skip	64
	.data1
	.align	2
L5D70:
	.single	0r1.00000000000000000e+00
	.data1
	.align	2
L5D68:
	.single	0r1.00000000000000000e+01
	.data1
	.align	2
L5D67:
	.single	0r1.19200000000000000e-07
	.data1
	.align	2
L5D49:
	.single	0r2.00000000000000000e+00
	.data1
	.align	2
L5D41:
	.single	0r-1.00000000000000000e+00
	LF5	=	356
	LS5	=	8444
	LFF5	=	328
	LSS5	=	63
	LP5	=	8
	.text
	.globl	_grcses_
_grcses_:
	link	a6,#-356
	moveml	#8444,sp@
	fmovem	#63,a6@(-328)
	moveq	#0,d3
	moveq	#1,d2
	movl	L5D70,VAR_SEG5+4
	fmoves	L5D68,fp0
	fmuls	L5D67,fp0
	fmoves	fp0,VAR_SEG5+40
	moveq	#1,d6
	movl	a6@(16),a0
	movl	a0@,a6@(-60)
	movl	a6@(12),a0
	fmoves	a0@,fp2
	movl	a6@(8),a0
	movl	a0@,d0
	addl	#154,d0
	movl	d0,a6@(-36)
	movl	d3,d0
	asll	#2,d0
	movl	d6,d5
	movl	d5,d1
	addl	d1,d1
	addl	d1,d5
	asll	#2,d1
	addl	d1,d5
	addl	#ARR_SEG5+-4,d0
	movl	d0,a5
	movl	d5,d4
	addl	a6@(-36),d4
	jra	L77087
LY00009:
	moveq	#1,d7
	cmpl	d7,d3
	jne	L77108
	movl	ARR_SEG5,d7
LY00008:
	movl	d7,d0
	fmovem	a6@(-328),#63
	moveml	a6@(-356),#8444
	unlk	a6
	rts
LY00006:
	addql	#1,d6
	moveq	#11,d7
	addl	d7,d5
	addl	d7,d4
	cmpl	#176,d5
	jgt	LY00009
L77087:
	movl	d4,d7
	asll	#2,d7
	lea	_mem_+12,a0
	fmoves	a0@(0,d7:l),fp6
	lea	_mem_+16,a0
	fmoves	a0@(0,d7:l),fp4
	lea	_mem_+20,a0
	fmoves	a0@(0,d7:l),fp5
	lea	_mem_+24,a0
	fmoves	a0@(0,d7:l),fp3
	fmovex	fp6,fp0
	faddx	fp4,fp0
	fdivs	L5D49,fp0
	fmoves	fp0,VAR_SEG5+28
	fmovex	fp5,fp0
	faddx	fp3,fp0
	fdivs	L5D49,fp0
	fmoves	fp0,VAR_SEG5+32
	fmovex	fp4,fp7
	fsubx	fp6,fp7
	fadds	L5D41,fp7
	fabsx	fp7,fp0
	fcmps	VAR_SEG5+40,fp0
	fjnlt	L77092
	fmovex	fp3,fp7
	fsubx	fp5,fp7
	fadds	L5D41,fp7
	fabsx	fp7,fp0
	fcmps	VAR_SEG5+40,fp0
	fjlt	LY00006
L77092:
	fmovex	fp2,fp7
	fsubs	VAR_SEG5+28,fp7
	fmoves	fp7,a6@(-20)
	fmoves	a6@(-60),fp7
	fsubs	VAR_SEG5+32,fp7
	fmoves	fp7,a6@(-24)
	fmoves	a6@(-20),fp7
	fmulx	fp7,fp7
	fmoves	a6@(-24),fp1
	fmulx	fp1,fp1
	faddx	fp1,fp7
	fcmps	VAR_SEG5+4,fp7
	fjnle	L77096
	movl	d6,d2
	fmoves	fp7,VAR_SEG5+4
L77096:
	fcmpx	fp6,fp2
	fjnge	LY00006
	fcmpx	fp4,fp2
	fjnle	LY00006
	fcmps	a6@(-60),fp5
	fjnle	LY00006
	fcmps	a6@(-60),fp3
	fjnge	LY00006
	addql	#1,d3
	addqw	#4,a5
	movl	d6,a5@
	jra	LY00006
L77108:
	movl	d2,d7
	jra	LY00008
	.globl	f68881_used
	.data1
#===============================================================================